utils.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. import {getLabelIndex,getEMRParams,storageLocal} from './tools';
  2. import { json } from "./ajax";
  3. /**
  4. * 各类标签统一的处理函数
  5. *
  6. * */
  7. const api = {
  8. push:'/push/pushInner'
  9. };
  10. //数字键盘选中事件
  11. export function setNumberValue(state,action){
  12. let res = Object.assign({},state);
  13. const param = action.params;
  14. const ikey = param.ikey;
  15. let labelInx = getLabelIndex(ikey);
  16. const subInx = ikey.split("-")[2];
  17. let item = res.data[labelInx];
  18. if(+item.tagType===1){ //独立数字键盘组件
  19. item.value = param.text;
  20. res.saveText[labelInx] = param.text?item.labelPrefix+param.text+item.labelSuffix:'';
  21. }else{ //内嵌血压类型组件的数字键盘组件
  22. item.questionMapping[subInx].value = param.text;
  23. let hasValue = false;
  24. const sub = item.questionMapping.map((it)=>{
  25. if(it.value){ //至少有一个子值才黑显
  26. hasValue = true;
  27. }
  28. if(it.tagType===8){ //维护时的连接词无value
  29. return it.name;
  30. }else{
  31. //组合中未填值的子标签预览中不显示
  32. if(!it.value){
  33. return '';
  34. }
  35. return (it.labelPrefix||'')+(it.value||'')+(it.labelSuffix||'');
  36. }
  37. });
  38. res.saveText[labelInx] = hasValue?sub.join(''):'';
  39. }
  40. res.update = Math.random();
  41. return res;
  42. }
  43. //单选下拉选中
  44. export function setRadioValue(state,action){
  45. let res = Object.assign({},state);
  46. const {ikey,id,text} = action;
  47. let labelInx = getLabelIndex(ikey);
  48. const subInx = ikey.split("-")[2];
  49. let item = res.data[labelInx];
  50. if(+item.tagType===1){
  51. item.value = text;
  52. res.saveText[labelInx] = item.labelPrefix+text+item.labelSuffix;
  53. item.questionDetailList.map((its)=>{
  54. if(its.id === id){
  55. its.selected = true;
  56. }else{
  57. its.selected = false;
  58. }
  59. });
  60. }else{
  61. item.questionMapping[subInx].value = text;
  62. let hasValue = false;
  63. const sub = item.questionMapping.map((it)=>{
  64. //添加选中状态
  65. it.questionDetailList.map((its)=>{
  66. if(its.id === id){
  67. its.selected = true;
  68. }else{
  69. its.selected = false;
  70. }
  71. });
  72. if(it.value){ //至少有一个子值才黑显
  73. hasValue = true;
  74. }
  75. if(it.tagType===8){ //维护时的连接词无value
  76. return it.name;
  77. }else{
  78. //组合中未填值的子标签预览中不显示
  79. if(!it.value){
  80. return '';
  81. }
  82. return (it.labelPrefix||'')+(it.value||'')+(it.labelSuffix||'');
  83. }
  84. });
  85. res.saveText[labelInx] = hasValue?sub.join(''):'';
  86. item.value = sub.join('');
  87. }
  88. res.update = Math.random();
  89. return res;
  90. }
  91. //单选带输入值保存,该类型不可加入血压类型中
  92. export const setRadioInputValue = (state,action)=>{
  93. const res = Object.assign({},state);
  94. const {ikey,values,id} = action.data;
  95. let index = getLabelIndex(ikey);
  96. let item = res.data[index];
  97. let str='',temp='',obj=item.questionDetailList;
  98. if(!values){ //清空
  99. let sld=obj.find((item)=>{
  100. return item.selected==true;
  101. });
  102. sld?sld.selected=false:'';
  103. item.vals = null;
  104. item.value = '';
  105. res.saveText[index] = '';
  106. res.update = Math.random();
  107. return res;
  108. }
  109. //存值
  110. for(let i in values){
  111. temp = values[i];
  112. if(typeof temp=='object'){
  113. str+=temp.value;
  114. }else{
  115. str+=temp;
  116. }
  117. }
  118. //选中状态
  119. if(id){
  120. obj.map((its)=>{
  121. if(its.id === id){
  122. its.selected = true;
  123. }else{
  124. its.selected = false;
  125. }
  126. });
  127. }
  128. item.vals = values;
  129. item.value = str;
  130. res.saveText[index] = str;
  131. res.update = Math.random();
  132. return res;
  133. }
  134. //获取大数据推送结果:
  135. // type需推送的类型,symData症状相关的内容(symptom入参),save参数是否要保存到本地做变化对比
  136. export async function getBigPush(type,symData,save){
  137. const emrData = getEMRParams();
  138. const params = {
  139. "age": emrData.age,
  140. "hosCode": emrData.hosCode,
  141. "featureType": type, //类型1:症状,4:查体,5:化验,6:辅检,7:诊断
  142. "diag": emrData.dis,
  143. "lis": emrData.lis,
  144. "other": emrData.other,
  145. "pacs": emrData.pacs,
  146. "sex": emrData.sex,
  147. "vital":emrData.vital,
  148. "symptom": symData||emrData.current + emrData.main
  149. };
  150. if(save){
  151. let savePm = Object.assign({},params);
  152. delete savePm.featureType;
  153. storageLocal.set('emrParam',savePm); //推送数据存储,用作推送前对比是否有变,有变才推送
  154. }
  155. return json(api.push,params);
  156. }