|
@@ -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>
|