瀏覽代碼

优化代码以及终末质控和环节质控可以跳转到病历了

xiaochan 2 年之前
父節點
當前提交
e4db2664d9

+ 41 - 59
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/Home.vue

@@ -34,16 +34,6 @@
         :max-height="maxHeight"/>
   </div>
   <emr-patient-list @rowClick="listRowClick" v-model="patientListDrawer"/>
-
-  <!--    <xc-dialog-v2 v-model="dialog" title="病历限制" manual-shutdown>-->
-  <!--        <div style="color: red;font-size: 24px">-->
-  <!--            请各位医生先阅读操作指南 8.15.病历限制,点击下载和在线阅读即可关闭当前弹窗。-->
-  <!--        </div>-->
-  <!--        <template #footer>-->
-  <!--            <el-button @click="操作指南(1)">下载</el-button>-->
-  <!--            <el-button @click="操作指南(2)">在线阅读</el-button>-->
-  <!--        </template>-->
-  <!--    </xc-dialog-v2>-->
 </template>
 
 <script setup name='Home'>
@@ -119,58 +109,50 @@ const disPatients = async () => {
 const routerFunc = async () => {
   emrMainRef.value?.closeWebSocket()
   show = false
-  if (router.currentRoute.value.params.pat) {
-    resolveRoute(router.currentRoute.value.params.pat)
-    let sid = 'emr_' + query.value.patNo.trim() + "_" + query.value.times
-    let res = await repeatedlyOpenTheSamePatient(sid)
-    console.log('重复打开病历 %o 连接 %s', res, sid);
-    if (res) {
-      show = false
-      ElMessageBox.confirm('病历重复打开,请检查确认没有重复打开的病历,点击解锁后原患者病历会被关闭。', '提示', {
-        type: 'warning',
-        confirmButtonText: '解锁',
-      }).then(() => {
-        emrSocketUnlock()
-      }).catch(() => {
-
-      })
-      return
-    }
-    console.log(query.value)
-    let reqUnlock = await getMyUnlockByPatNo(query.value.patNo, query.value.times)
-    console.log('申请数据 %o', reqUnlock)
-    if (reqUnlock != null) {
-      reqUnlock.unlockJson = JSON.parse(reqUnlock.unlockJson)
-      applicationData.value = reqUnlock
-    } else {
-      applicationData.value = null
-    }
-    if (query.value.state !== 2) {
-      patientInfo = await getPatientInfo(query.value.patNo);
-      patientInfo.$inOutFlag = 1;
-    }
-    if (query.value.state === 1) {
-      await queryActPatient()
-    } else if (query.value.state === 2) {
-      await queryDisPatient()
-    } else if (query.value.state === 3) {
-      await queryAllPatients(true)
-    } else if (query.value.state === 4) {
-      await queryAllPatients(false)
-    } else if (query.value.state === 5) {
-      await queryDisPatient()
-      emrConfig.value.editor = false
-    }
-    await nextTick();
-  } else {
+  if (!router.currentRoute.value.params.pat) {
+    return
+  }
+  resolveRoute(router.currentRoute.value.params.pat)
+  let sid = 'emr_' + query.value.patNo.trim() + "_" + query.value.times
+  let res = await repeatedlyOpenTheSamePatient(sid)
+  console.log('重复打开病历 %o 连接 %s', res, sid);
+  if (res) {
     show = false
+    await ElMessageBox.confirm('病历重复打开,请检查确认没有重复打开的病历,点击解锁后原患者病历会被关闭。', '提示', {
+      type: 'warning',
+      confirmButtonText: '解锁',
+    })
+    await emrSocketUnlock()
+  }
+  console.log('查询数据 %o', query.value)
+  let reqUnlock = await getMyUnlockByPatNo(query.value.patNo, query.value.times)
+  console.log('申请数据 %o', reqUnlock)
+  if (reqUnlock != null) {
+    reqUnlock.unlockJson = JSON.parse(reqUnlock.unlockJson)
+    applicationData.value = reqUnlock
+  } else {
+    applicationData.value = null
+  }
+  // 在院编辑病历
+  if (query.value.state === 1) {
+    patientInfo = await getPatientInfo(query.value.patNo);
+    patientInfo.$inOutFlag = 1;
+    show = true
+  } else if (query.value.state === 2) {
+    // 出院编辑病历,
+    await queryDisPatient()
+  } else if (query.value.state === 4) {
+    // 在院只读病历
+    patientInfo = await getPatientInfo(query.value.patNo);
+    patientInfo.$inOutFlag = 1;
+    await queryAllPatients(false)
+  } else if (query.value.state === 5) {
+    // 出院只读病历
+    await queryDisPatient()
+    emrConfig.value.editor = false
   }
 }
 
-// 查询在院患者数据
-const queryActPatient = async () => {
-  show = true
-}
 
 // 查询出院患者信息
 const queryDisPatient = async () => {
@@ -193,7 +175,7 @@ const allPatientsInTheHospital = async () => {
   if (!query.value.patNo) {
     BizException(ExceptionEnum.MESSAGE_ERROR, '请输入住院号。 ')
   }
-  query.value.state = 3
+  query.value.state = 1
   let te = JSON.stringify(query.value)
   await router.push('/myEmrEditor/' + window.btoa(te))
   location.reload()

+ 1 - 1
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init.js

@@ -98,8 +98,8 @@ export const query = ref({
 
 export const emrStateEnum = {
     "在院编辑": 1,
-    "在院只读": 4,
     "出院编辑": 2,
+    "在院只读": 4,
     "出院只读": 5,
 }
 

+ 15 - 0
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr_control_rule/RuleSift.vue

@@ -27,6 +27,11 @@
     <el-table-column prop="consultPhysicianName" label="主治医生"/>
     <el-table-column prop="tubeBedDoctorName" label="管床医生" width="220"/>
     <el-table-column prop="opinion" label="质控意见" show-overflow-tooltip/>
+    <el-table-column label="病历" fixed="right">
+      <template #default="{row}">
+        <el-button type="primary" @click="toEmrClick(row)">病历</el-button>
+      </template>
+    </el-table-column>
     <el-table-column prop="mapMessage" label="详情" show-overflow-tooltip>
       <template #header>
         <el-button @click="exportExcel">导出Excel</el-button>
@@ -42,6 +47,11 @@
 import XcTable from "@/components/xiao-chan/xc-table/XcTable.vue";
 import {getWindowSize} from "@/utils/window-size";
 import {Export} from "@/utils/ExportExcel";
+import XEUtils from "xe-utils";
+import {
+  emrStateEnum,
+  getEmrUrl
+} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init";
 
 const props = defineProps({
   data: Array,
@@ -73,6 +83,11 @@ const exportExcel = () => {
   Export(props.data, title, "质控数据")
 }
 
+const toEmrClick = (row) => {
+  let {inTheHospital, inpatientNo, admissTimes} = row
+  window.open(getEmrUrl(inpatientNo, admissTimes, inTheHospital === 0 ? emrStateEnum.出院只读 : emrStateEnum.在院只读))
+}
+
 const mapToStr = (row) => {
   return JSON.stringify(row.mapMessage)
 }

+ 14 - 0
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/final-quality-control/FinalQualityControl.vue

@@ -7,6 +7,10 @@ import {setCallback} from "@/utils/websocket";
 import {Export} from "@/utils/ExportExcel";
 import {makePercentage} from "@/components/progress/progUtils";
 import {openSocket, sid} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-func/emr-socket";
+import {
+  emrStateEnum,
+  getEmrUrl
+} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init";
 
 const dateRange = ref([])
 const data = ref([])
@@ -76,6 +80,11 @@ const exportExcelClick = () => {
   Export(data.value, title, `${dateRange.value[0]} - ${dateRange.value[1]} 终末质控`)
 }
 
+const toEmrClick = (row) => {
+  let {inTheHospital, inpatientNo, admissTimes} = row
+  window.open(getEmrUrl(inpatientNo, admissTimes, inTheHospital === 0 ? emrStateEnum.出院只读 : emrStateEnum.在院只读))
+}
+
 onMounted(async () => {
   dateRange.value = await currentAndAFewDaysAgo()
   openSocket()
@@ -150,6 +159,11 @@ onMounted(async () => {
             <el-table-column prop="allergicMedicine" label="药物过敏"/>
             <el-table-column prop="kssName" label="抗生素使用"/>
             <el-table-column prop="xjpyName" label="细菌培养送检"/>
+            <el-table-column label="病历" fixed="right">
+              <template #default="{row}">
+                <el-button type="primary" @click="toEmrClick(row)">病历</el-button>
+              </template>
+            </el-table-column>
           </xc-table>
         </template>
       </el-auto-resizer>