|
@@ -37,23 +37,27 @@
|
|
|
<ReadCard :pat-no="patNo" @success="afterReadCard"/>
|
|
|
<el-dropdown trigger="click" @command="register">
|
|
|
<el-button type="primary">
|
|
|
- 登记 <el-icon>
|
|
|
- <ArrowDown/>
|
|
|
- </el-icon>
|
|
|
+ 登记
|
|
|
+ <el-icon>
|
|
|
+ <ArrowDown/>
|
|
|
+ </el-icon>
|
|
|
</el-button>
|
|
|
<template #dropdown>
|
|
|
<el-dropdown-menu>
|
|
|
<el-dropdown-item icon="CreditCard" command="execute">医保登记</el-dropdown-item>
|
|
|
<el-dropdown-item icon="RefreshLeft" command="revoke">取消登记</el-dropdown-item>
|
|
|
+ <el-dropdown-item divided icon="Help" command="emergencyRescue">急诊抢救</el-dropdown-item>
|
|
|
+ <el-dropdown-item icon="Refresh" command="rvkEmergencyRescue">急诊抢救撤销</el-dropdown-item>
|
|
|
<el-dropdown-item divided icon="Edit" command="diags">医保诊断补录</el-dropdown-item>
|
|
|
</el-dropdown-menu>
|
|
|
</template>
|
|
|
</el-dropdown>
|
|
|
<el-dropdown trigger="click" @command="receiptsOpts" style="margin-left: 8px">
|
|
|
<el-button type="primary">
|
|
|
- 处方 <el-icon>
|
|
|
- <ArrowDown/>
|
|
|
- </el-icon>
|
|
|
+ 处方
|
|
|
+ <el-icon>
|
|
|
+ <ArrowDown/>
|
|
|
+ </el-icon>
|
|
|
</el-button>
|
|
|
<template #dropdown>
|
|
|
<el-dropdown-menu>
|
|
@@ -112,7 +116,6 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
-
|
|
|
<el-dialog title="个人信息" v-model="showInsuinfo" width="65%">
|
|
|
<el-tag>{{ injuryMode ? '工伤信息' : '参保信息' }}</el-tag>
|
|
|
<div v-if="injuryMode">
|
|
@@ -170,6 +173,8 @@
|
|
|
:times="currentRow.times"
|
|
|
@closed="showMzBlRecord = false"
|
|
|
></mz-bl-record>
|
|
|
+
|
|
|
+ <EmergencyRescue ref="emergencyRef" :param="emergencyParams" />
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
@@ -197,7 +202,7 @@ import {
|
|
|
queryMzMatnDises
|
|
|
} from '@/api/medical-insurance/si-query'
|
|
|
import {onMounted, ref} from 'vue'
|
|
|
-import {ElMessage, ElMessageBox, ElSelect} from 'element-plus'
|
|
|
+import {ElMessageBox, ElSelect} from 'element-plus'
|
|
|
import {getMedTypesByFlag} from '@/api/medical-insurance/si-dict'
|
|
|
import {shortcuts} from '@/data/shortcuts'
|
|
|
import {getDateRangeFormatDate} from '@/utils/date'
|
|
@@ -209,6 +214,9 @@ import MzBlRecord from "@/components/outpatient/MzBlRecord.vue";
|
|
|
import MzReceipt from "@/components/outpatient/MzReceipt.vue";
|
|
|
import {useUserStore} from "@/pinia/user-store";
|
|
|
import {CyMessageBox} from "@/components/cy/message-box";
|
|
|
+import EmergencyRescue from "@/views/medical-insurance/outpatient/component/EmergencyRescue.vue";
|
|
|
+import {xcMessage} from "@/utils/xiaochan-element-plus";
|
|
|
+import {checkGeneratedFees} from "@/api/medical-insurance/emergency-rescue";
|
|
|
|
|
|
const patNo = ref('')
|
|
|
const medType = ref('')
|
|
@@ -247,24 +255,14 @@ const nullPatNo = () => {
|
|
|
if (patNo.value) {
|
|
|
return false
|
|
|
}
|
|
|
- ElMessage({
|
|
|
- message: '请输入门诊ID!',
|
|
|
- type: 'warning',
|
|
|
- duration: 2500,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
+ xcMessage.warning('请输入门诊ID!')
|
|
|
return true
|
|
|
}
|
|
|
const nullMedtype = () => {
|
|
|
if (medType.value) {
|
|
|
return false
|
|
|
}
|
|
|
- ElMessage({
|
|
|
- message: '请选择医疗类别!',
|
|
|
- type: 'warning',
|
|
|
- duration: 2500,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
+ xcMessage.warning('请选择医疗类别!')
|
|
|
return true
|
|
|
}
|
|
|
|
|
@@ -276,12 +274,7 @@ const fetchHistoryReceipts = () => {
|
|
|
return
|
|
|
}
|
|
|
if (!dateRange.value) {
|
|
|
- ElMessage({
|
|
|
- message: '请选择日期范围!',
|
|
|
- type: 'warning',
|
|
|
- duration: 2500,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
+ xcMessage.warning('请选择日期范围!')
|
|
|
return
|
|
|
}
|
|
|
clearReadCardData()
|
|
@@ -317,23 +310,13 @@ const handleClickInjuryinfo = (row) => {
|
|
|
injuryOutpatientRegister(row).then(() => {
|
|
|
showInsuinfo.value = false
|
|
|
clearReadCardData()
|
|
|
- ElMessage({
|
|
|
- message: '登记成功',
|
|
|
- type: 'success',
|
|
|
- duration: 2000,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
+ xcMessage.success('登记成功')
|
|
|
})
|
|
|
}
|
|
|
|
|
|
const register = (command) => {
|
|
|
if (!currentRow.value.times) {
|
|
|
- ElMessage({
|
|
|
- message: '请先选择历史处方。',
|
|
|
- type: 'warning',
|
|
|
- duration: 2000,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
+ xcMessage.warning('请先选择历史处方。')
|
|
|
return
|
|
|
}
|
|
|
const param = {
|
|
@@ -345,42 +328,61 @@ const register = (command) => {
|
|
|
needSaving: 1,
|
|
|
}
|
|
|
if (command === 'execute') {
|
|
|
- if (injuryMode.value) {
|
|
|
- employeeInfoInquiry2(param).then((res) => {
|
|
|
- injuryinfo.value = res
|
|
|
- showInsuinfo.value = true
|
|
|
- })
|
|
|
- } else {
|
|
|
- obtainBasicPersonInfo(param).then((res) => {
|
|
|
- insuinfo.value = res.insuinfo
|
|
|
- showInsuinfo.value = true
|
|
|
- });
|
|
|
- }
|
|
|
+ beforeRegister(param)
|
|
|
} else if (command === 'revoke') {
|
|
|
- if (injuryMode.value) {
|
|
|
- revokeInjuryOutpatientRegistration(param).then(res => {
|
|
|
- ElMessage({
|
|
|
- message: res,
|
|
|
- type: 'success',
|
|
|
- duration: 2000,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
- })
|
|
|
- } else {
|
|
|
- revokeOutpatientRegistration(param).then((res) => {
|
|
|
- ElMessage({
|
|
|
- message: res,
|
|
|
- type: 'success',
|
|
|
- duration: 2000,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
- })
|
|
|
- }
|
|
|
+ revokeRegister(param)
|
|
|
+ } else if (command === 'emergencyRescue') {
|
|
|
+ beforeEmergencyRescue(param)
|
|
|
+ } else if (command === 'rvkEmergencyRescue') {
|
|
|
+ revokeEmergencyRescue(param)
|
|
|
} else {
|
|
|
showInputDiags.value = true
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+function beforeRegister(param) {
|
|
|
+ if (param.medType === '1301') {
|
|
|
+ xcMessage.error('医疗类别为【急诊抢救】的患者,请选择急诊抢救专用通道。')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (injuryMode.value) {
|
|
|
+ employeeInfoInquiry2(param).then((res) => {
|
|
|
+ injuryinfo.value = res
|
|
|
+ showInsuinfo.value = true
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ obtainBasicPersonInfo(param).then((res) => {
|
|
|
+ insuinfo.value = res.insuinfo
|
|
|
+ showInsuinfo.value = true
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function revokeRegister(param) {
|
|
|
+ if (injuryMode.value) {
|
|
|
+ revokeInjuryOutpatientRegistration(param).then(res => {
|
|
|
+ xcMessage.success(res)
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ revokeOutpatientRegistration(param).then((res) => {
|
|
|
+ xcMessage.success(res)
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function beforeEmergencyRescue(param) {
|
|
|
+ if (param.medType !== '1301') {
|
|
|
+ xcMessage.error('医疗类别请选择【急诊抢救】。')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ checkGeneratedFees(param).then(() => {
|
|
|
+ obtainBasicPersonInfo(param).then(res => {
|
|
|
+ insuinfo.value = res.insuinfo
|
|
|
+ showInsuinfo.value = true
|
|
|
+ })
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
const readCardData = reactive({
|
|
|
mdtrtCertType: null,
|
|
|
readCardResult: null,
|
|
@@ -399,6 +401,8 @@ const afterReadCard = (result) => {
|
|
|
readCardData.readCardBizType = result.readCardBizType
|
|
|
}
|
|
|
|
|
|
+const emergencyRef = ref(null)
|
|
|
+const emergencyParams = ref({})
|
|
|
const handleClickInsuinfo = (row) => {
|
|
|
const param = {
|
|
|
patNo: patNo.value,
|
|
@@ -413,16 +417,38 @@ const handleClickInsuinfo = (row) => {
|
|
|
readCardResult: readCardData.readCardResult,
|
|
|
readCardBizType: readCardData.readCardBizType,
|
|
|
}
|
|
|
+ if (param.medType === '1301') {
|
|
|
+ emergencyRescueProcess(param)
|
|
|
+ } else {
|
|
|
+ normalOutpatientRegister(param)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function emergencyRescueProcess(param) {
|
|
|
+ showInsuinfo.value = false
|
|
|
+ emergencyParams.value = param
|
|
|
+ nextTick().then(() => {
|
|
|
+ emergencyRef.value.start()
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function revokeEmergencyRescue(param) {
|
|
|
+ if (param.medType !== '1301') {
|
|
|
+ xcMessage.error('医疗类别请选择【急诊抢救】。')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ emergencyParams.value = param
|
|
|
+ nextTick().then(() => {
|
|
|
+ emergencyRef.value.revoke()
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function normalOutpatientRegister(param) {
|
|
|
outpatientRegistration(param).then((res) => {
|
|
|
clearReadCardData()
|
|
|
showInsuinfo.value = false
|
|
|
- ElMessage({
|
|
|
- message: res,
|
|
|
- type: 'success',
|
|
|
- duration: 2000,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
- })
|
|
|
+ xcMessage.success(res)
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
const receiptsOpts = (command) => {
|
|
@@ -444,12 +470,7 @@ const receiptsOpts = (command) => {
|
|
|
|
|
|
const markMzFees = () => {
|
|
|
if (currentReceipts.value.length === 0) {
|
|
|
- ElMessage({
|
|
|
- message: '请先选择要保存的处方!',
|
|
|
- type: 'warning',
|
|
|
- duration: 2500,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
+ xcMessage.warning('请先选择要保存的处方!')
|
|
|
return
|
|
|
}
|
|
|
ElMessageBox.confirm('是否将选中处方生成医保处方?', '提示', {
|
|
@@ -459,12 +480,7 @@ const markMzFees = () => {
|
|
|
}).then(() => {
|
|
|
insertSiMzFeesForSupplement(currentReceipts.value).then(() => {
|
|
|
currentRow.value.status = '1'
|
|
|
- ElMessage({
|
|
|
- message: '已成功生成医保处方。',
|
|
|
- type: 'success',
|
|
|
- duration: 2500,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
+ xcMessage.success('已成功生成医保处方。');
|
|
|
})
|
|
|
}).catch(() => {
|
|
|
})
|
|
@@ -476,12 +492,7 @@ const spcChrDiseAccts = ref([])
|
|
|
const showSpcChrAccts = ref(false)
|
|
|
const qrySpcChrDiseAcct = () => {
|
|
|
if (!currentRow.value.times) {
|
|
|
- ElMessage({
|
|
|
- message: '请先选择历史处方。',
|
|
|
- type: 'warning',
|
|
|
- duration: 2000,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
+ xcMessage.warning('请先选择历史处方!')
|
|
|
return
|
|
|
}
|
|
|
const param = {
|
|
@@ -542,12 +553,7 @@ const uploadFees = (row) => {
|
|
|
const userStore = useUserStore()
|
|
|
const mzPreSetl = () => {
|
|
|
if (!currentRow.value.times) {
|
|
|
- ElMessage({
|
|
|
- message: '请先选择历史处方。',
|
|
|
- type: 'warning',
|
|
|
- duration: 2000,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
+ xcMessage.warning('请先选择历史处方!')
|
|
|
return
|
|
|
}
|
|
|
const param = {
|
|
@@ -584,12 +590,7 @@ const mzPreSetl = () => {
|
|
|
|
|
|
const revokeFees = () => {
|
|
|
if (!currentRow.value.times) {
|
|
|
- ElMessage({
|
|
|
- message: '请先选择历史处方。',
|
|
|
- type: 'warning',
|
|
|
- duration: 2000,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
+ xcMessage.warning('请先选择历史处方!')
|
|
|
return
|
|
|
}
|
|
|
const param = {
|
|
@@ -599,33 +600,18 @@ const revokeFees = () => {
|
|
|
}
|
|
|
if (injuryMode.value) {
|
|
|
revokeInjuryOutpatientFee(param).then(res => {
|
|
|
- ElMessage({
|
|
|
- message: res,
|
|
|
- type: 'success',
|
|
|
- duration: 2000,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
+ xcMessage.success(res)
|
|
|
})
|
|
|
} else {
|
|
|
revokeOutpatientFeeDetails(param).then((res) => {
|
|
|
- ElMessage({
|
|
|
- message: res,
|
|
|
- type: 'success',
|
|
|
- duration: 2000,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
+ xcMessage.success(res)
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
|
|
|
const deleteMtFees = () => {
|
|
|
if (!currentRow.value.times) {
|
|
|
- ElMessage({
|
|
|
- message: '请先选择历史处方。',
|
|
|
- type: 'warning',
|
|
|
- duration: 2000,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
+ xcMessage.warning('请先选择历史处方!')
|
|
|
return
|
|
|
}
|
|
|
const param = {
|
|
@@ -633,12 +619,7 @@ const deleteMtFees = () => {
|
|
|
times: currentRow.value.times,
|
|
|
}
|
|
|
deleteAllMzReceipts(param).then((res) => {
|
|
|
- ElMessage({
|
|
|
- message: res,
|
|
|
- type: 'success',
|
|
|
- duration: 2000,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
+ xcMessage.success(res)
|
|
|
currentReceipts.value = []
|
|
|
fetchHistoryReceipts()
|
|
|
})
|
|
@@ -648,12 +629,7 @@ const acctUsedFlag = ref('1')
|
|
|
|
|
|
const mzSettle = () => {
|
|
|
if (!currentRow.value.times) {
|
|
|
- ElMessage({
|
|
|
- message: '请先选择历史处方。',
|
|
|
- type: 'warning',
|
|
|
- duration: 2000,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
+ xcMessage.warning('请先选择历史处方!')
|
|
|
return
|
|
|
}
|
|
|
const param = {
|
|
@@ -691,12 +667,7 @@ const mzSettle = () => {
|
|
|
|
|
|
const revokeMzSettle = () => {
|
|
|
if (!currentRow.value.times) {
|
|
|
- ElMessage({
|
|
|
- message: '请先选择历史处方。',
|
|
|
- type: 'warning',
|
|
|
- duration: 2000,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
+ xcMessage.warning('请先选择历史处方!')
|
|
|
return
|
|
|
}
|
|
|
const param = {
|
|
@@ -743,12 +714,7 @@ const showMzBlRecord = ref(false)
|
|
|
|
|
|
function seeMzBlRecord() {
|
|
|
if (!currentRow.value.times) {
|
|
|
- ElMessage({
|
|
|
- message: '请先选择历史处方。',
|
|
|
- type: 'warning',
|
|
|
- duration: 2000,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
+ xcMessage.warning('请先选择历史处方!')
|
|
|
return
|
|
|
}
|
|
|
showMzBlRecord.value = true
|