fetchModules.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406
  1. import {json,expJson} from '@utils/ajax';
  2. import {SET,PRESET} from '@types/checkBody';
  3. import {SETDATA} from '@store/types/otherHistory';
  4. import store from '@store';
  5. import {getEMRParams,didPushParamChange,inspectAndAssist,fullfillText,checkFullfillText,deepClone,filterDataArr} from '@utils/tools';
  6. import Notify from '@commonComp/Notify';
  7. import {billing} from '@store/async-actions/pushMessage';
  8. import {SETOTHERHISTORY,ISREAD} from "../types/homePage";
  9. import config from "@config/index";
  10. import {CURRENT_CHRONIC} from '@store/types/currentIll';
  11. import {MODI_LOADING} from '@store/types/homePage';
  12. import {GET_ALL_HIS,FILTER_ALL_HIS} from '@store/types/emergencyHis';
  13. import {SET_IMPORT_CHECKBODY_LABEL} from "../types/checkBody";
  14. const api={
  15. // getSpreadModule:'/questionInfo/getByIds',
  16. getSpreadModule:'/questionInfo/getByIds2',//优化
  17. getModule:'/questionInfo/getById',
  18. searchURL: '/retrieval/getTagInfos',
  19. getOtherHisRecord: '/inquiryInfo/getLastOther',
  20. getBigPush:'/push/pushInner',
  21. saveMode:'/doctorPageMode/saveDoctorPageModes',
  22. getSymptomFeature:'/feature/getSymptomFeature',
  23. getAssess:'/evaluationModuleMapping/getEvaluationModules', //获取管理评估-慢病
  24. getIndexData:'/indexData/getIndexDatas', //获取指标数据-图表-慢病
  25. // getFormulaResult:'/push/calculate', // 计算接口
  26. getFormulaResult:'/calc/calculate', // 计算接口
  27. getAssessHis:'/inquiryInfo/getEvaluations', //历史评估记录
  28. getAllHisURL:'/inquiryInfo/hisInquirysForJz', //全科历史病历
  29. downloadURL:'/inquiryInfo/exportInquirys', //全科历史病历--导出
  30. addSecondDia:'/inquiryInfo/addDiagnoseSecond', //全科历史病历--添加二次诊断
  31. };
  32. export const getFeature = (item)=>{
  33. const datas = json(api.getSymptomFeature+'?text='+encodeURIComponent(item),{});
  34. return datas;
  35. }
  36. //获取模板,多个
  37. export const getModules = (ids)=>{
  38. const {patInfo} = store.getState();
  39. const param = {
  40. "age": patInfo.message.patientAge,
  41. "ids": ids,
  42. "sexType": patInfo.message.sex
  43. };
  44. const modules = json(api.getSpreadModule,param);
  45. return modules;
  46. };
  47. //获取单个模板
  48. export const getModule = (id)=>{
  49. const {patInfo} = store.getState();
  50. const param = {
  51. "age": patInfo.message.patientAge,
  52. "id": id,
  53. "sexType": patInfo.message.sex
  54. };
  55. return json(api.getModule,param);
  56. };
  57. //搜索接口
  58. export const getSearch = (param)=>{
  59. const {patInfo} = store.getState();
  60. const {inpStr,boxMark,mainIds,itemType} = param;
  61. let params = {};
  62. if(itemType==0){//主诉,仅限症状
  63. params = {
  64. "age": patInfo.message.patientAge,
  65. "inputIds":mainIds&&mainIds.length>0?mainIds:[],//主诉去重
  66. "inputStr": inpStr.trim(),
  67. "sexType": patInfo.message.sex,
  68. "type": boxMark, //1为主诉现病史
  69. "itemType":itemType
  70. };
  71. }else{
  72. params = {
  73. "age": patInfo.message.patientAge,
  74. "inputIds":mainIds&&mainIds.length>0?mainIds:[],//主诉去重
  75. "inputStr": inpStr.trim(),
  76. // "inputStr": inpStr,
  77. "sexType": patInfo.message.sex,
  78. "type": boxMark //1为搜症状
  79. };
  80. }
  81. return json(api.searchURL,params);
  82. };
  83. //其他史最近记录获取
  84. export const getOtherHisRecord = ()=>{
  85. return (dispatch,getStore)=>{
  86. const state = getStore();
  87. const {message} =state.patInfo;
  88. const param = {
  89. hospitalCode:message.hospitalCode,
  90. patientCode:message.patientCode,
  91. };
  92. json(api.getOtherHisRecord,param).then((res)=>{
  93. if(res.data.code=='0'){
  94. const data = res.data.data;
  95. const obj = JSON.parse(data.dataJson||'{}');
  96. const objStr = JSON.parse(data.otherStr||'[]');
  97. let arr = [];//console.log(obj)
  98. if((!obj||!obj.other||obj.other.length==0)&&!objStr[0]){ //无其他史历史记录用默认模板
  99. /*if(mode=='1'){ //文本模式
  100. dispatch({
  101. type:SETOTHERHISTORY,
  102. data:[],
  103. selecteds:[],
  104. save:[]
  105. });
  106. }*/
  107. }else{
  108. const text = filterDataArr(objStr);
  109. dispatch({
  110. type:SETOTHERHISTORY,
  111. data:[{tagType:8,name:'',controlType:0,value:text}],
  112. /*period:{
  113. yjs_1: obj.yjs_1,
  114. yjs_2: obj.yjs_2,
  115. yjs_3: obj.yjs_3,
  116. yjs_4: obj.yjs_4,
  117. },
  118. selecteds:obj.otherHistorySelecteds,*/
  119. save:[text]
  120. });
  121. }
  122. }
  123. });
  124. }
  125. };
  126. //预取查体模板数据-现病史触发推送时获取
  127. export function pregetCheckbodyData(flag){ //flag=true获取到数据后立即显示
  128. return (dispatch)=>{
  129. if(flag){
  130. dispatch({type:MODI_LOADING,flag:true});
  131. }
  132. const emrData = getEMRParams();
  133. const param = {
  134. age: emrData.age,
  135. featureType: "1,42,41,7",
  136. diag: emrData.dis,
  137. lis: emrData.lis,
  138. other: emrData.other,
  139. pacs: emrData.pacs,
  140. sex: emrData.sex,
  141. vital:emrData.vital,
  142. symptom: emrData.current+emrData.main
  143. };
  144. json(api.getBigPush,param).then((res)=>{
  145. if(+res.data.code === 0){
  146. const obj = res.data.data;
  147. const data = obj&&obj.moduleVital;
  148. const vitalIds = obj&&obj.vitalIds;
  149. //查体高亮标签
  150. dispatch({
  151. type:SET_IMPORT_CHECKBODY_LABEL,
  152. labels:vitalIds
  153. });
  154. dispatch({
  155. type:PRESET,
  156. data:data
  157. });
  158. if(flag){
  159. const arr = checkFullfillText(data).newArr;
  160. const block = Object.assign(JSON.parse(config.textLabel),{full:true});//空白时保留一个自由文本标签
  161. dispatch({
  162. type:SET,
  163. data:arr.length?arr:[block],
  164. isEmpty:false
  165. });
  166. dispatch({type:MODI_LOADING,flag:false});
  167. }
  168. }else{
  169. dispatch({type:MODI_LOADING,flag:false});
  170. Notify.error(res.data.msg);
  171. }
  172. });
  173. }
  174. }
  175. //查体模板数据获取
  176. export function getInitData(){
  177. return (dispatch,getStore)=>{
  178. const state = getStore();
  179. const preData = [...state.checkBody.preData||[]];
  180. if(!preData||preData.length==0){
  181. dispatch(pregetCheckbodyData(true));
  182. }
  183. const arr = checkFullfillText(preData).newArr;
  184. dispatch({
  185. type:SET,
  186. data:arr,
  187. isEmpty:false
  188. });
  189. }
  190. }
  191. //其他史模板填充-先取最近记录,无则用模板
  192. export function setOtherHisModule(){
  193. return (dispatch, getStore) => {
  194. const state = getStore();
  195. const initData = state.homePage.initData;
  196. const otherModel = initData.otherHisModel;
  197. const block = Object.assign(JSON.parse(config.textLabel),{full:true});
  198. const mode = state.typeConfig.typeConfig;
  199. const model = otherModel&&otherModel.length>0?deepClone(otherModel):[block]; //其他史模板,没有模板数据则显示一个空文本标签
  200. const arr = deepClone(initData.otherHis); //最近其他史数据
  201. const arrSave = deepClone(initData.otherHisSave); //最近其他史saveText
  202. const selects = initData.otherSelecteds?[...initData.otherSelecteds]:[]; //其他史杂音类选中项
  203. const isHis = initData.otherIsHis; //是否是历史数据
  204. const onlyOneText = arr && arr.length == 1 && arr[0].tagType == 8 && !arr[0].value; //是否只有一个空的自由文本标签
  205. //是历史数据且不为空则显示历史数据,否则显示模板
  206. const listObj = isHis && (mode == 1 || (!onlyOneText && mode == 0)) ? {
  207. newArr: arr,
  208. saveText: arrSave || []
  209. } : fullfillText(model);
  210. dispatch({
  211. type: SETDATA,
  212. data: listObj.newArr,
  213. selecteds: selects,
  214. period: initData.period,
  215. save: listObj.saveText,
  216. isEmpty: false
  217. });
  218. dispatch({
  219. type: ISREAD
  220. });
  221. //右侧推送
  222. setTimeout(function () { //延迟待确定后的数据更新后推送,避免获取的参数还是旧的
  223. if (didPushParamChange()) { //操作后内容有变化才推送
  224. dispatch(billing());
  225. }
  226. }, 500);
  227. }
  228. }
  229. //保存切换模式
  230. export function saveMode(mode){
  231. return (dispatch,getStore)=>{
  232. const {patInfo} = getStore();
  233. const param = {
  234. doctorId:patInfo.message.doctorId,
  235. modeClassify:0,
  236. modeValue:mode
  237. };
  238. return json(api.saveMode,param);
  239. }
  240. }
  241. //慢病-获取管理评估
  242. export function getAssessData(disId,disName){
  243. //return ()=>{
  244. const emrData = getEMRParams();
  245. const param = {
  246. diseaseId:disId,
  247. disType:1,
  248. diag:disName,
  249. diseaseName:disName,
  250. featureType:11,
  251. lis:emrData.lis,
  252. sex:emrData.sex,
  253. age:emrData.age,
  254. symptom:emrData.current + emrData.main
  255. };
  256. return json(api.getAssess,param);
  257. //}
  258. }
  259. //慢病-获取管理评估历史单条记录
  260. export function getAssessHis(id){
  261. return (dispatch,getStore)=>{
  262. const param = {
  263. inquiryId:id,
  264. };
  265. return json(api.getAssessHis,param);
  266. }
  267. }
  268. //获取评估中图表数据
  269. export function getIndexData(range,disName){
  270. return (dispatch,getStore)=>{
  271. const {patInfo} = getStore();
  272. const param = {
  273. diseaseName:disName,
  274. startTime:range[0],
  275. endTime:range[1]+" 23:23:59",
  276. patientId:patInfo.message.patientId,
  277. };
  278. return json(api.getIndexData,param);
  279. }
  280. }
  281. export const getFormulaResult = (item)=>{
  282. // type:1-量表 2-计算公式
  283. const type = item.type;
  284. let param = {
  285. type:type,
  286. data:item.data
  287. }
  288. return json(api.getFormulaResult,param);
  289. }
  290. // 自动分发模板
  291. export function autoFillModules (){
  292. return (dispatch,getStore)=>{
  293. const state = getStore();
  294. const initData = state.homePage.initData;
  295. const block = Object.assign(JSON.parse(config.textLabel),{full:true});
  296. const cbody = initData.checkbody?[...initData.checkbody]:[block];
  297. dispatch({type: CURRENT_CHRONIC})//现病史
  298. //其他史模板填充-先去历史,无历史用模板
  299. inspectAndAssist()//化验辅检
  300. dispatch(setOtherHisModule());
  301. //查体模板填充
  302. dispatch({
  303. type: SET,
  304. data: cbody,
  305. isEmpty:false
  306. });
  307. }
  308. }
  309. // 获取全科历史病历
  310. export function getAllHis(item){
  311. return (dispatch,getStore)=>{
  312. const state = getStore();
  313. const {message} = state.patInfo;
  314. const {params} = state.emergencyHis;
  315. let param = {};
  316. if(JSON.stringify(params) == '{}'){
  317. /*param = {
  318. "current": item.current,
  319. "hospitalDeptId": message.hospitalDeptId,
  320. "hospitalId": message.hospitalId,
  321. "size": 6,
  322. }*/
  323. param = Object.assign({},item,{hospitalDeptId:message.hospitalDeptId,hospitalId:message.hospitalId,size:6})
  324. }else{
  325. param = Object.assign({},params,{current:item.current})
  326. }
  327. json(api.getAllHisURL,param).then((res)=>{
  328. const result = res.data;
  329. if(result.code == 0){
  330. dispatch({
  331. type:GET_ALL_HIS,
  332. data:result.data.inquiryList,
  333. total:result.data.total,
  334. params:param,
  335. })
  336. }
  337. })
  338. }
  339. }
  340. // 筛选全科历史病历
  341. export function getFilterHis(obj){
  342. return (dispatch,getStore)=>{
  343. const state = getStore();
  344. const {message} = state.patInfo;
  345. const {params} = state.emergencyHis;
  346. let newParam = {};
  347. if(obj.flag == 999){//时间筛选
  348. newParam = Object.assign(params,{startDate:obj.startDate,endDate:obj.endDate,current:1})
  349. }else{
  350. /*if(obj.flag==-1){
  351. newParam = Object.assign(params,{current:1})
  352. }else{
  353. newParam = Object.assign({},params,{isHasSecond:obj.flag,current:1})
  354. }*/
  355. newParam = Object.assign({},params,{isHasSecond:obj.flag,current:1})
  356. }
  357. json(api.getAllHisURL,newParam).then((res)=>{
  358. const result = res.data;
  359. if(result.code == 0){
  360. dispatch({
  361. type:FILTER_ALL_HIS,
  362. data:result.data.inquiryList,
  363. total:result.data.total,
  364. // params:Object.assign(params,{current:1}),
  365. params:Object.assign(newParam,{current:1}),
  366. })
  367. }
  368. })
  369. }
  370. }
  371. // 全科病历导出
  372. export function downloadData (ids){
  373. const param = {
  374. "inquiryIds":ids
  375. }
  376. return expJson(api.downloadURL,param);
  377. }
  378. // 添加二次诊断
  379. export function addSecondDiag(item){
  380. const state = store.getState();
  381. const {message} = state.patInfo;
  382. const param = {
  383. "diagnoseSecond": item.name,
  384. "doctorId": message.doctorId,
  385. "inquiryId": item.id
  386. }
  387. return json(api.addSecondDia,param)
  388. }