index.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <template>
  2. <el-container>
  3. <el-header>
  4. <el-button type="primary" @click="clickSaveData">testSave</el-button>
  5. <el-button type="primary" @click="testPrint">testPrint</el-button>
  6. <el-button type="primary" @click="testDelete">testDelete</el-button>
  7. </el-header>
  8. <el-container>
  9. <el-aside>
  10. <emr-sidebar></emr-sidebar>
  11. </el-aside>
  12. <el-main>
  13. <div class="emr-iframe" name="emr">
  14. <iframe id="emrIframe"
  15. :src="caseHistoryUrl"/>
  16. </div>
  17. </el-main>
  18. </el-container>
  19. </el-container>
  20. </template>
  21. <script>
  22. import {huanZheXinXi} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
  23. import store from "@/store";
  24. import {uuid} from "@/utils/getUuid";
  25. import {getEmrInpatientData} from "@/api/dictionary/emr-data-maintenance-api";
  26. import EmrSidebar from "@/components/zhu-yuan-yi-sheng/emr/EmrSidebar.vue";
  27. import {ElMessage} from "element-plus";
  28. import {getPatientsEmr} from "@/api/zhu-yuan-yi-sheng/emr-api";
  29. export default {
  30. components: {EmrSidebar},
  31. setup() {
  32. const currentEmr = ref(null)
  33. const caseHistoryUrl = ref('')
  34. let categoryCode = $ref('7e25f0c0070511edbc820dada413ba28')
  35. let documentId = $ref('')
  36. const clickSaveData = () => {
  37. currentEmr.value.saveDocument(categoryCode);
  38. }
  39. const testPrint = () => {
  40. currentEmr.value.printDocument(true, null);
  41. }
  42. const testDelete = () => {
  43. currentEmr.value.deleteDocument(documentId);
  44. }
  45. const getCaseHistoryUrl = (documentId, categoryCode, categroyId, patientId) => {
  46. caseHistoryUrl.value = `/emr/runtime/?documentId=${documentId}&categoryCode=${categoryCode}&categroyId=${categroyId}&patientId=${patientId}#/`;
  47. }
  48. onMounted(() => {
  49. nextTick(async () => {
  50. getCaseHistoryUrl(documentId, categoryCode, '', huanZheXinXi.value.inpatientNo)
  51. let data = await getEmrInpatientData({
  52. patNo: huanZheXinXi.value.inpatientNo,
  53. times: huanZheXinXi.value.admissTimes
  54. })
  55. data['_id'] = uuid(31, 62)
  56. currentEmr.value = new EMRInteractive(data);
  57. const iframe = document.getElementById('emrIframe')
  58. iframe.parentElement.emr = currentEmr.value
  59. // 获取患者已经存在的
  60. getPatientsEmr(huanZheXinXi.value.inpatientNo).then((res) => {
  61. console.log(res)
  62. })
  63. })
  64. })
  65. return {
  66. clickSaveData,
  67. testPrint,
  68. testDelete,
  69. caseHistoryUrl,
  70. }
  71. }
  72. }
  73. function EMRInteractive(data) {
  74. this.setEditor = (editor, runtime) => {
  75. this.editor = editor;
  76. this.runtime = runtime;
  77. };
  78. this.getAppContext = () => {
  79. return {
  80. endpoints: {
  81. app: "/bdp/dataservice/api",
  82. },
  83. input: {
  84. user: store.state.user.info.code,
  85. name: store.state.user.info.name
  86. },
  87. login: {
  88. token: store.state.user.info.token
  89. },
  90. data
  91. };
  92. };
  93. this.saveDocument = (categoryCode) => {
  94. let data = this.editor.getDocument();
  95. data.properties.categoryCode = categoryCode
  96. data.properties.patientId = huanZheXinXi.value.inpatientNo;
  97. data.properties.creator = store.state.user.info.code;
  98. data.properties.createTime = new Date()
  99. data.properties.modifier = store.state.user.info.code;
  100. data.properties.modifyTime = new Date()
  101. this.runtime.saveDocument(
  102. data,
  103. (res) => {
  104. // let validator = this.editor.getValidator();
  105. console.log(this.editor)
  106. // let valid = validator.valid();
  107. // console.log(valid)
  108. ElMessage.success("保存成功。")
  109. },
  110. (err) => {
  111. ElMessage.success("emr保存失败," + err)
  112. }
  113. );
  114. };
  115. this.deleteDocument = (documentId) => {
  116. this.runtime.delDocument(documentId,
  117. (res) => {
  118. ElMessage.success("删除成功")
  119. },
  120. (err) => {
  121. ElMessage.success("删除失败" + err)
  122. }
  123. );
  124. };
  125. this.printDocument = (showPreview, docs = null) => {
  126. this.editor && this.editor.execute("print", {
  127. value: {
  128. showPreview
  129. }
  130. })
  131. };
  132. }
  133. </script>
  134. <style scoped>
  135. .emr-iframe, iframe {
  136. width: 100%;
  137. height: 700px;
  138. }
  139. </style>