pushMessage.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. import { get, post, json } from "@utils/ajax";
  2. import { BILLING_ADVICE, SET_TIPS, SET_TIPS_DETAILS ,SET_CHRONIC_TABLELIST,SET_SCALE_INFO,SET_CHRONIC_PUSHS,SHOW_TABLE_LIST, SHOW_TIPS_DETAILS,TOGGLE_CHRONIC_INFO} from '@store/types/pushMessage';
  3. import { SET_DRUG_INFO, SHOW_DRUG_INFO } from '@store/types/treat';
  4. import { SET_CLICK_DIAG } from '../types/diagnosticList';
  5. import {storageLocal,getEMRParams} from '@utils/tools';
  6. import {SET_IMPORT_CHECKBODY_LABEL,PRESET} from "../types/checkBody";
  7. import dataLis from '@components/EmergencyProcedure/emergency';
  8. import Notify from '@commonComp/Notify';
  9. import {pregetCheckbodyData} from '@store/async-actions/fetchModules';
  10. import {tabChange} from '@store/actions/tabTemplate';
  11. const api={
  12. push:'/push/pushInner',
  13. getTableList:'/scale/getList', //获取量表列表
  14. getTableInfo:'/scale/getContent', //获取量表明细
  15. getConceptDetail:'/conceptDetail/getConceptDetail', //获取静态提示信息
  16. }
  17. //获取右侧推送信息
  18. export const billing = (mdata,boxMark) => {
  19. return (dispatch, getState) =>{
  20. const state = getState();
  21. let url = api.push;
  22. const checkBody = state.checkBody.data;
  23. let diagMain = state.diagnosticList.diagnosticList.length>0&&state.diagnosticList.diagnosticList[0]
  24. let getCheck = boxMark==2&&!(checkBody&&checkBody.length>0&&!checkBody[0].full);
  25. const emrData = getEMRParams();
  26. const params = {
  27. age: emrData.age,
  28. featureType: getCheck?"42,41,5,6,7":"42,5,6,7", //41只返回查体模板,4只返回查体高亮
  29. // featureType: "22",
  30. diag: emrData.dis,
  31. lis: emrData.lis,
  32. other: emrData.other,
  33. pacs: emrData.pacs,
  34. sex: emrData.sex,
  35. vital:emrData.vital,
  36. symptom: mdata?(emrData.current + mdata):(emrData.current + emrData.main),
  37. hosCode: emrData.hosCode
  38. };
  39. let savePm = Object.assign({},params);
  40. delete savePm.featureType;
  41. storageLocal.set('emrParam',savePm); //推送数据存储,用作推送前对比是否有变,有变才推送
  42. json(url, params).then((data) => {
  43. let {dis, lab, pacs,vitalIds,moduleVital} = data.data.data||{};
  44. lab = lab||[];
  45. pacs = pacs||[];
  46. // console.log('推送数据', data.data.data);
  47. let vigilant=[], //警惕
  48. doubt=[], //疑似诊断
  49. possible = [], //可能诊断
  50. determine=[], //确诊
  51. setPushEmergency={}, //急诊
  52. setPushEmergencyIdx='',//急诊对应本地数据
  53. likely=[];//鉴别诊断
  54. doubt = dis&&dis['疑似诊断'],
  55. possible = dis&&dis['可能诊断'];
  56. vigilant = dis&&dis['警惕'];
  57. determine = dis&&dis['确诊']; //确诊
  58. likely = dis&&dis['鉴别诊断'];
  59. //急诊显示规则,主诊断有急诊优先显示,没有则显示推送的,推送也没有就不显示
  60. if(dis&&dis['页面急诊']&&(dis['页面急诊'].length>0)&&(diagMain&&dis['页面急诊'][0].conceptId == diagMain.conceptId)){
  61. setPushEmergency=dis['页面急诊'][0]
  62. let name = dis['页面急诊'][0].name || ''
  63. for(let i = 0;i < dataLis.length;i++){
  64. if(name == dataLis[i].emergencyillname){
  65. setPushEmergencyIdx=i
  66. }
  67. }
  68. }else if(dis&&dis['急诊']&&dis['急诊'].length>0){
  69. setPushEmergency=dis['急诊'][0]
  70. let name = dis['急诊'][0].name || ''
  71. for(let i = 0;i < dataLis.length;i++){
  72. if(name == dataLis[i].emergencyillname){
  73. setPushEmergencyIdx=i
  74. }
  75. }
  76. }
  77. if(lab) {
  78. for(let i = 0; i < lab.length; i++) {
  79. lab[i].checked = false
  80. }
  81. }
  82. if(pacs) {
  83. for(let i = 0; i < pacs.length; i++) {
  84. pacs[i].checked = false
  85. }
  86. }
  87. dispatch({
  88. type:TOGGLE_CHRONIC_INFO,
  89. flag:false
  90. });
  91. dispatch({
  92. type: BILLING_ADVICE,
  93. determine: determine || [],
  94. doubt: doubt||[],
  95. possible: possible||[],
  96. vigilant: vigilant||[],
  97. likely:likely||[],
  98. lab: lab||[],
  99. pacs: pacs||[],
  100. setPushEmergency: setPushEmergency||[],
  101. setPushEmergencyIdx:setPushEmergencyIdx
  102. });
  103. dispatch({
  104. type:PRESET,
  105. data:moduleVital
  106. });
  107. //查体高亮标签
  108. dispatch({
  109. type:SET_IMPORT_CHECKBODY_LABEL,
  110. labels:vitalIds
  111. })
  112. }).catch((e) =>{
  113. console.log(e)
  114. });
  115. //单独调指标
  116. const ps = Object.assign({},params,{featureType:'22'});
  117. json(url, ps).then((data) => {
  118. let {medicalIndications} = data.data.data||{};
  119. //慢病推送模块数据
  120. dispatch({
  121. type:SET_CHRONIC_PUSHS,
  122. data:medicalIndications
  123. });
  124. }).catch((e) =>{
  125. console.log(e)
  126. });
  127. //调查体,现病史触发推送且查体无数据时获取查体模板
  128. /*const checkBody = state.checkBody.data;
  129. if(boxMark==2&&!(checkBody&&checkBody.length>0&&!checkBody[0].full)){
  130. dispatch(pregetCheckbodyData());
  131. }*/
  132. }
  133. };
  134. //获取提示信息(静态信息)
  135. export const getConceptDetail = (item,noTips,noDetails,noNotify) => {
  136. return(dispatch, getState) => {
  137. const params ={
  138. name: item.name,
  139. position: item.position,
  140. type: item.type
  141. }
  142. if(item.position == '1') { //点击i要展示详情和提示信息
  143. params.position = 0
  144. }
  145. json(api.getConceptDetail, params).then((res) => {
  146. if(res.data.code == '0'&& res.data.data.details && res.data.data.details.length > 0) {
  147. dispatch(tabChange(0)); //tab跳回推送
  148. if(item.position == '1') { //右侧提示信息
  149. dispatch({
  150. type: SET_CLICK_DIAG,
  151. clickDiag: item
  152. })
  153. if(item.type == '5' || item.type == '6' || item.type == '12') {
  154. dispatch({
  155. type: SET_TIPS,
  156. tips: res.data.data,
  157. tmpFlg:'midPart'
  158. })
  159. } else {
  160. dispatch({
  161. type: SET_TIPS,
  162. tips: res.data.data,
  163. });
  164. dispatch({
  165. type:TOGGLE_CHRONIC_INFO,
  166. flag:true
  167. });
  168. }
  169. document.getElementById("tipsMsg").scrollIntoView(true)
  170. //点击i同时打开详情弹窗 点击诊断名称不打开弹窗
  171. if(!noDetails) {
  172. dispatch({
  173. type: SET_TIPS_DETAILS,
  174. tipsDetails: res.data.data
  175. })
  176. dispatch({
  177. type: SHOW_TIPS_DETAILS
  178. })
  179. }
  180. } else if(item.position == '5' || item.position == '6'){ //药品或不良反应说明
  181. dispatch({
  182. type: SET_DRUG_INFO,
  183. instroduce: res.data.data.details,
  184. name: item.name,
  185. tagType: item.type
  186. })
  187. dispatch({
  188. type: SHOW_DRUG_INFO
  189. })
  190. }
  191. } else {
  192. if(!noNotify) {
  193. Notify.info('提示信息未维护')
  194. }
  195. }
  196. })
  197. }
  198. }
  199. export const getAllConceptDetail = (item) => {
  200. return(dispatch, getState) => {
  201. const state = getState();
  202. let params = {
  203. type: item.type,
  204. name: item.name,
  205. position:item.position
  206. };
  207. if (item.type == 5 || item.type == 51) {
  208. params.type = 12;
  209. params.position = 0;
  210. params.name = item.uname;
  211. }
  212. json(api.getConceptDetail, params)
  213. .then((res)=>{
  214. if(res.data.code == '0') {
  215. //医学知识中打开弹窗,无详细内容显示未维护
  216. if(res.data.data&&res.data.data.details.length>0){
  217. dispatch({
  218. type: SHOW_TIPS_DETAILS
  219. })
  220. }else{
  221. Notify.info('提示信息未维护');
  222. }
  223. dispatch({
  224. type: SET_TIPS_DETAILS,
  225. tipsDetails: res.data.data
  226. })
  227. } else {
  228. Notify.info('提示信息未维护');
  229. }
  230. }).catch((e) => {
  231. console.log(e)
  232. })
  233. }
  234. }
  235. // 量表列表
  236. export const getTableList = (name)=>{
  237. return (dispatch,getState)=>{
  238. json(api.getTableList, {disName:name})
  239. .then((res)=>{
  240. if(res.data.code==0 && res.data.data && res.data.data.length>0){
  241. dispatch({
  242. type: SET_CHRONIC_TABLELIST,
  243. data: res.data.data
  244. })
  245. dispatch({
  246. type:SHOW_TABLE_LIST,
  247. name:'showList',
  248. value:true
  249. })
  250. }else{
  251. Notify.info(res.data.msg||'无关联量表')
  252. }
  253. }).catch((e) => {
  254. console.log(e)
  255. })
  256. }
  257. }
  258. // 量表明细
  259. export const getScaleInfo = (it)=>{
  260. return (dispatch,getState)=>{
  261. const emrData = getEMRParams();
  262. const params = {
  263. age: emrData.age,
  264. sex: emrData.sex,
  265. featureType: "21",
  266. diag: emrData.dis,
  267. lis: emrData.lis,
  268. scaleId:it.conceptId,
  269. scaleName:it.name,
  270. other: emrData.other,
  271. pacs: emrData.pacs,
  272. vital:emrData.vital,
  273. symptom: emrData.current + emrData.main,
  274. // indications:'' //指标结果
  275. };
  276. // json(api.push, params)
  277. json(api.getTableInfo, params)
  278. .then((res)=>{
  279. const result = res.data;
  280. // if(result.code==0 && result.data.scale && result.data.scale.length>0){
  281. if(result.code==0 && result.data.length>0){
  282. dispatch({
  283. type: SET_SCALE_INFO,
  284. name: it.name,
  285. data: result.data,
  286. id:it.conceptId
  287. })
  288. dispatch({
  289. type:SHOW_TABLE_LIST,
  290. name:'showTable',
  291. value:true,
  292. item:Object.assign({},it)
  293. })
  294. }else{
  295. Notify.info(result.msg||'暂无量表信息')
  296. }
  297. }).catch((e) => {
  298. console.log(e)
  299. })
  300. }
  301. }