Explorar el Código

保存先病案首页质控

lihong hace 2 años
padre
commit
9aa3698515

+ 133 - 79
src/components/si-sheet-upload/jie-suan-dan-xiu-gai/JieSuanDanXiangQing.vue

@@ -83,7 +83,7 @@
           </el-select>
         </el-descriptions-item>
         <el-descriptions-item v-if="auditQuanXian()" label="审核">
-          <el-button :disabled="shenHeTongGuoFlag" type="success" @click="shenHeTongGuoClick">审核通过</el-button>
+          <el-button :disabled="shenHeTongGuoFlag" type="success" @click="qualityTest">审核通过</el-button>
 <!--          <el-button :disabled="keFouShenHe" type="success" @click="shenHeTongGuoShangChuanClick">审核通过并上传-->
 <!--          </el-button>-->
           <el-button :disabled="keFouShenHe" type="danger" @click="shenHeBoHuiClick">审核驳回</el-button>
@@ -343,11 +343,29 @@
         </el-table-column>
         <el-table-column label="质控结果" prop="result_msg"></el-table-column>
       </el-table>
+        <el-row>
+            <el-button v-show="!shenHeTongGuoFlag" type="primary" @click="queRenShenHeTongGuo">确认审核通过</el-button>
+        </el-row>
     </el-dialog>
       <el-dialog v-model="jianYanJianChaDialogFlag" width="60% " title="检验检查">
           <jian-yan-jian-cha :huanZheXinXi="huanZheXinXi" ></jian-yan-jian-cha>
       </el-dialog>
       <charge-list v-if="showChargeList" :pat-no="setlinfo.inpatientNo" :times="setlinfo.admissTimes" @close="showChargeList = false"></charge-list>
+      <span class="m-drawer">
+            <el-drawer v-model="showMessageDrawer" title="病案首页质控" size="260px" modal-class="modal-class" >
+              <div class="page-inner">
+                <div v-if="forceVerifies.length === 0 && adviceVerifies.length === 0" class="no-verify-message">暂无校验内容</div>
+                <div v-show="forceVerifies.length > 0" style="padding: 8px 0 4px 0; font-weight: bold">以下条目为强制要求,请完善。</div>
+                <div v-for="(item, index) in forceVerifies" :key="index" class="message-item" :style="messageColor(index)">
+                  {{ index + 1 }}、{{ item.name }}
+                </div>
+                <div v-show="adviceVerifies.length > 0" style="padding: 8px 0 4px 0; font-weight: bold">以下条目为建议执行,不做强制要求。</div>
+                <div v-for="(item, index) in adviceVerifies" :key="index" style="padding: 6px; margin-bottom: 6px; border-radius: 4px; background: #eea7a752; color: #ff2b2b">
+                  {{ index + 1 }}、{{ item.name }}
+                </div>
+              </div>
+            </el-drawer>
+          </span>
   </el-container>
 </template>
 
@@ -625,17 +643,28 @@ const baoCunHouGuanBi = () => {
   // ctx.emit('shua-xin')
   emit('queryCurrentPage')
 }
+//病案首页质控抽屉
+const showMessageDrawer = ref(false)
+//强制要求数据
+const forceVerifies = ref([])
+//建议要求数据
+const adviceVerifies = ref([])
+const currentMessageIndex = ref(null)
+
+
+const messageColor = (id) => {
+    return currentMessageIndex.value === id
+        ? {
+            background: '#ff2b2b',
+            color: 'white',
+        }
+        : {
+            background: '#eea7a752',
+            color: '#ff2b2b',
+        }
+}
 
 const baoCunXiuGai = () => {
-  let newData = {
-    decType: setlinfo.value.decType,
-    operation: setlinfo.value.operation,
-    diseinfo: diseinfo.value,
-    oprninfo: oprninfo.value,
-  }
-  // if (JSON.stringify(newData) === JSON.stringify(oldData)) {
-  //   return ElMessage.error('数据没有变化请勿点击。')
-  // }
   if (setlinfo.value.operation === '1' || setlinfo.value.operation === '2' || setlinfo.value.operation === '3') {
     if (listIsBlank(oprninfo.value)) {
       return ElMessage.error('选择治疗类型为手术的,至少要有一个手术。')
@@ -644,50 +673,10 @@ const baoCunXiuGai = () => {
   if (listIsBlank(diseinfo.value)) {
     return ElMessage.error('诊断不能为空。')
   }
-  let changeData = ''
-  let data = setlinfo.value
-  data['opIdCode'] = code
-  data['opIdName'] = name
-  if (newData.decType !== oldData.decType) {
-    changeData = `申报类型变动:原:【${getDeclarationType(oldData.decType)}】新:【${getDeclarationType(newData.decType)}】。`
-  }
-  if (newData.operation !== oldData.operation) {
-    changeData += `治疗方式变动:原:【${getTreatmentName(oldData.operation)}】新:【${getTreatmentName(newData.operation)}】。`
-  }
-  // 住院诊断信息
-  if (!ArrayIsEqual(oldData.diseinfo, newData.diseinfo)) {
-    changeData += '【诊断有变动】'
-  }
-  // 手术有变动
-  if (!ArrayIsEqual(oldData.oprninfo, newData.oprninfo)) {
-    changeData += '【手术有变动】'
-  }
-  data['dataChanges'] = changeData
-  data.batjBa4 = oprninfo.value
-  data.ybZyDisDiag = diseinfo.value
-  baoCunXiuGaiData.value = data
-  beiZhuRef.value = true
+    bingAnShouYeXiaoYan()
 }
 
-//保存并审核通过
-const baoCunXiuGaiShenHeTongGuo= () =>{
-    let newData = {
-        decType: setlinfo.value.decType,
-        operation: setlinfo.value.operation,
-        diseinfo: diseinfo.value,
-        oprninfo: oprninfo.value,
-    }
-    // if (JSON.stringify(newData) === JSON.stringify(oldData)) {
-    //   return ElMessage.error('数据没有变化请勿点击。')
-    // }
-    if (setlinfo.value.operation === '1' || setlinfo.value.operation === '2' || setlinfo.value.operation === '3') {
-        if (listIsBlank(oprninfo.value)) {
-            return ElMessage.error('选择治疗类型为手术的,至少要有一个手术。')
-        }
-    }
-    if (listIsBlank(diseinfo.value)) {
-        return ElMessage.error('诊断不能为空。')
-    }
+function createSaveData(newData,flag) {
     let changeData = ''
     let data = setlinfo.value
     data['opIdCode'] = code
@@ -707,13 +696,49 @@ const baoCunXiuGaiShenHeTongGuo= () =>{
         changeData += '【手术有变动】'
     }
     data['dataChanges'] = changeData
-
-    data['saveAuditPassFlag'] = '1'
-
+    data['saveAuditPassFlag'] = flag? flag : ''
     data.batjBa4 = oprninfo.value
     data.ybZyDisDiag = diseinfo.value
-    baoCunXiuGaiData.value = data
-    beiZhuRef.value = true
+   return {data}
+}
+//病案首页效验
+function bingAnShouYeXiaoYan(flag) {
+    let sheetVerificationParam = {
+        inpatientNo:props.data.inpatientNo,
+        admissTimes:props.data.admissTimes
+    }
+    forceVerifies.value = []
+    adviceVerifies.value = []
+    let newData = {
+        decType: setlinfo.value.decType,
+        operation: setlinfo.value.operation,
+        diseinfo: diseinfo.value,
+        oprninfo: oprninfo.value,
+    }
+    sheetVerification(sheetVerificationParam).then((res) => {
+        if( !listIsBlank(res.force) ){
+            forceVerifies.value = res.force
+            adviceVerifies.value = res.advice
+            showMessageDrawer.value  = true
+        }else {
+            let data =  createSaveData(newData,flag)
+            baoCunXiuGaiData.value = data
+            beiZhuRef.value = true
+        }
+    })
+}
+
+//保存并审核通过
+const baoCunXiuGaiShenHeTongGuo= () =>{
+    if (setlinfo.value.operation === '1' || setlinfo.value.operation === '2' || setlinfo.value.operation === '3') {
+        if (listIsBlank(oprninfo.value)) {
+            return ElMessage.error('选择治疗类型为手术的,至少要有一个手术。')
+        }
+    }
+    if (listIsBlank(diseinfo.value)) {
+        return ElMessage.error('诊断不能为空。')
+    }
+    bingAnShouYeXiaoYan('1')
 }
 
 /**
@@ -746,10 +771,11 @@ function getDeclarationType(val) {
 
 /* 查看审核信息 */
 const shenHeRef = ref(false)
-const keFouShenHe = ref(false)
-
+//审核驳回
+const keFouShenHe = ref(true)
+//审核通过
 const shenHeTongGuoFlag = ref(true)
-
+//保存申请按钮
 const shenHeSendFlag = ref(true)
 
 const shenHeClick = () => {
@@ -761,26 +787,21 @@ const shenHeClick = () => {
 
 /* 查看审核信息 */
 
-/* 审核操作 */
-
-const shenHeTongGuoClick = () => {
-  ElMessageBox.confirm('是否通过该审核', '提示', {
-    type: 'warning',
-  }).then(() => {
+/* 审核操作 确认审核通过 */
+const queRenShenHeTongGuo=() =>{
     const data = {
-      id: props.data.shenHeXinXi.id,
-      auditFlag: 1,
-      auditRemark: '审核通过 ❥(^_-)',
-      auditStaff: code,
-      auditName: name,
+        id: props.data.shenHeXinXi.id,
+        auditFlag: 1,
+        auditRemark: '审核通过 ❥(^_-)',
+        auditStaff: code,
+        auditName: name,
     }
     setlUploadAudit(data)
         .then((res) => {
-          guanBi()
+            guanBi()
         })
         .catch((e) => {
         })
-  })
 }
 
 const shenHeTongGuoShangChuanClick = () => {
@@ -872,6 +893,7 @@ const qualityTest = () => {
   newData.newBatjBa4 =  oprninfo.value
   newData.decType=setlinfo.value.decType
   newData.operation=setlinfo.value.operation
+  qualityData.value = []
   drgQualityTest(newData).then((res) => {
     if(res.length > 0){
       qualityDialogFlag.value = true
@@ -1174,12 +1196,14 @@ onMounted(() => {
 })
 //初始化权限
 function initQuanXian() {
-        keFouShenHe.value = !(stringNotBlank(props.data.shenHeXinXi.id) && props.data.shenHeXinXi.auditFlag === 0)
-        if(auditBmzzQuanXian() && props.data.shenHeXinXi.auditFlag == 2 && !keFouShenHe.value){
-            //审核驳回才有审核通过按钮
+
+        if (stringNotBlank(props.data.shenHeXinXi.id) && props.data.shenHeXinXi.auditFlag === 0){
+            keFouShenHe.value = false
+        }
+        if(auditBmzzQuanXian() && props.data.shenHeXinXi.auditFlag == 2 ){
+            shenHeTongGuoFlag.value = false
+        }else if (auditQuanXian() && (props.data.shenHeXinXi.auditFlag === 0 || props.data.shenHeXinXi.auditFlag == 2)){
             shenHeTongGuoFlag.value = false
-        }else {
-            shenHeTongGuoFlag.value = keFouShenHe.value
         }
         if(!stringNotBlank(props.data.shenHeXinXi.id) || props.data.shenHeXinXi.auditFlag == 2){
             shenHeSendFlag.value = false
@@ -1206,10 +1230,40 @@ const siDiagTypes = [
 ]
 </script>
 
-<style>
+<style scoped>
   .maxhight{
     height: 700px;
     overflow: auto;
   }
 
+  :deep(.m-drawer .el-overlay) {
+      right: 0;
+      left: calc(100vw - 260px);
+      background: transparent !important;
+  }
+
+
+
+  .page-inner {
+      padding: 0 20px 10px 26px;
+      border-radius: 12px;
+      text-align: justify;
+  }
+
+
+
+  .no-verify-message {
+      width: 100%;
+      text-align: center;
+      margin-top: 50px;
+      font-size: 18px;
+      color: gray;
+  }
+
+  .message-item {
+      padding: 6px;
+      margin-bottom: 6px;
+      border-radius: 4px;
+  }
+
 </style>

+ 6 - 1
src/views/medical-insurance/allpatient/SetSheetUpload.vue

@@ -35,6 +35,11 @@
             <span style="color: red">{{scope.row.qualityReminder}}</span>
           </template>
         </el-table-column>
+        <el-table-column fixed label="已上传能修改提醒" prop="uploadUpdateReminder"  width="110">
+          <template #default="scope">
+            <span style="color: red">{{scope.row.uploadUpdateReminder}}</span>
+          </template>
+        </el-table-column>
         <el-table-column fixed label="上传截止日期" prop="uploadCutoffDate"  width="100">
           <template #default="scope">
             <span style="color: red">{{scope.row.uploadCutoffDate}}</span>
@@ -54,7 +59,7 @@
             <span v-else>{{ scope.row.outDeptName }}</span>
           </template>
         </el-table-column>
-        <el-table-column label="住院号/门诊号" prop="patNo"></el-table-column>
+        <el-table-column label="住院号/门诊号" prop="patNo" width="100"></el-table-column>
         <el-table-column label="性别" prop="gendName" width="40"></el-table-column>
         <el-table-column label="住院天数" prop="actIptDays"></el-table-column>
         <el-table-column label="管床医生" prop="referPhysicianName"></el-table-column>