|
@@ -11,7 +11,7 @@
|
|
|
collapse-tags-tooltip
|
|
|
filterable
|
|
|
clearable
|
|
|
- style="width: 200px"
|
|
|
+ style="width: 160px"
|
|
|
@change="handleStateChanged"
|
|
|
>
|
|
|
<el-option
|
|
@@ -24,7 +24,7 @@
|
|
|
<el-select
|
|
|
v-model="auditInquiryRequest.state"
|
|
|
@change="handleStateChanged"
|
|
|
- style="width: 90px">
|
|
|
+ style="width: 80px">
|
|
|
<el-option label="未质控" value="INITIAL"></el-option>
|
|
|
<el-option label="已通过" value="APPROVED"></el-option>
|
|
|
<el-option label="已驳回" value="REJECTED"></el-option>
|
|
@@ -33,19 +33,22 @@
|
|
|
v-model="auditInquiryRequest.patNo"
|
|
|
clearable
|
|
|
placeholder="住院号"
|
|
|
- style="width: 110px"
|
|
|
+ style="width: 100px"
|
|
|
@keyup.enter="querySearch" />
|
|
|
<el-divider direction="vertical"></el-divider>
|
|
|
<el-button icon="Search" type="primary" @click="querySearch">检索</el-button>
|
|
|
- <el-button icon="Document" type="primary" @click="openEmr">电子病历</el-button>
|
|
|
+ <el-button icon="" type="primary" @click="showChargeList">费用清单</el-button>
|
|
|
+ <el-button type="primary" @click="openEmr">电子病历</el-button>
|
|
|
+ <el-button type="warning" @click="openSearch">诊断搜索</el-button>
|
|
|
<span v-if="auditInquiryRequest.state === 'INITIAL'" style="margin: 0 12px">
|
|
|
- <el-button icon="DataLine" type="primary" @click="basicControl">基础质控</el-button>
|
|
|
- <el-button icon="Check" type="success" @click="approveAudit">审核通过</el-button>
|
|
|
- <el-button icon="Close" type="danger" @click="rejectAudit">审核不通过</el-button>
|
|
|
+ <el-button type="primary" @click="basicControl">基础质控</el-button>
|
|
|
+ <el-button type="success" @click="approveAudit">审核通过</el-button>
|
|
|
+ <el-button type="danger" @click="rejectAudit">审核不通过</el-button>
|
|
|
</span>
|
|
|
<span v-if="auditInquiryRequest.state === 'APPROVED'" style="margin: 0 12px">
|
|
|
<el-button icon="Refresh" type="danger" @click="beforeRevokeApprove">撤销审核</el-button>
|
|
|
</span>
|
|
|
+ <el-button type="info" @click="exportExcel">导出审核记录</el-button>
|
|
|
</div>
|
|
|
</template>
|
|
|
<CyFlex tab-position="vertical">
|
|
@@ -115,13 +118,65 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-drawer>
|
|
|
+
|
|
|
+ <el-dialog v-model="showSearch" title="诊断搜索" width="730px" draggable>
|
|
|
+ 检索依据:
|
|
|
+ <el-select v-model="searchMethod" style="width: 100px">
|
|
|
+ <el-option v-for="item in searchMethods" :key="item.code" :label="item.name" :value="item.code"></el-option>
|
|
|
+ </el-select>
|
|
|
+ 搜索内容:
|
|
|
+ <el-input
|
|
|
+ v-model="searchContent"
|
|
|
+ prefix-icon="Search"
|
|
|
+ placeholder="请输入搜索内容"
|
|
|
+ style="width: 160px"
|
|
|
+ clearable
|
|
|
+ @input="executeSearch"
|
|
|
+ ></el-input>
|
|
|
+ <div v-if="showSurgeryCommand"
|
|
|
+ style="padding: 12px 0 4px 4px; color: gray">
|
|
|
+ 根据患者主诊断
|
|
|
+ <el-tag
|
|
|
+ >{{ sheet.disdiagList[0].code }} <span style="color: blue">{{ sheet.disdiagList[0].name }}</span>
|
|
|
+ </el-tag>
|
|
|
+ ,推荐以下手术操作:
|
|
|
+ </div>
|
|
|
+ <el-table
|
|
|
+ :data="searchResults"
|
|
|
+ height="400"
|
|
|
+ stripe
|
|
|
+ highlight-current-row
|
|
|
+ >
|
|
|
+ <el-table-column prop="code" label="编码" width="130"></el-table-column>
|
|
|
+ <el-table-column prop="name" label="名称"></el-table-column>
|
|
|
+ <el-table-column v-if="showSurgeryCommand" prop="ssfz" label="手术分值" width="60"></el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <div style="margin-top: 15px; width: 100%; text-align: right">
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ icon="ArrowLeft"
|
|
|
+ @click="lastPage"
|
|
|
+ :disabled="showSurgeryCommand || currentSRPage === 1"
|
|
|
+ >
|
|
|
+ 上一页
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ icon="ArrowRight"
|
|
|
+ @click="nextPage"
|
|
|
+ :disabled="showSurgeryCommand || (currentSRPage > 1 && searchResults.length < 10)"
|
|
|
+ >
|
|
|
+ 下一页
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
<div class="btn_right-side" @click="showMessageDrawer = !showMessageDrawer">首页基础质控结果</div>
|
|
|
</CyFlex>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
-import {autopsies, haveOrNot, yesOrNo} from './common'
|
|
|
+import {autopsies, haveOrNot, searchMethods, yesOrNo} from './common'
|
|
|
import {onMounted, reactive} from 'vue'
|
|
|
import {operations} from '@/data'
|
|
|
import {
|
|
@@ -130,7 +185,7 @@ import {
|
|
|
fetchQualityVerifications,
|
|
|
getAllDictionary,
|
|
|
getSheetInfo,
|
|
|
- getAllSmallDept, revokeApprovedAudit
|
|
|
+ getAllSmallDept, revokeApprovedAudit, getSsfzSurgeriesByIcd, sheetSearch, fetchExportData
|
|
|
} from '@/api/case-front-sheet'
|
|
|
import maleIcon from '@/assets/male-icon.png'
|
|
|
import femaleIcon from '@/assets/female-icon.png'
|
|
@@ -142,6 +197,7 @@ import {xcMessage} from "@/utils/xiaochan-element-plus";
|
|
|
import {CyMessageBox} from "@/components/cy/message-box";
|
|
|
import RejectAudit from "@/components/inpatient/frontsheet-printpage/RejectAudit.vue";
|
|
|
import AuditHistory from "@/components/inpatient/frontsheet-printpage/AuditHistory.vue";
|
|
|
+import ChargeList from '@/components/medical-insurance/charge-list/Index.vue'
|
|
|
import useDialogToJs from "@/components/js-dialog-comp/useDialogToJs";
|
|
|
import {
|
|
|
emrStateEnum,
|
|
@@ -149,6 +205,7 @@ import {
|
|
|
} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init";
|
|
|
import {magicApi} from "@/utils/database/magic-api-request";
|
|
|
import {useUserStore} from "@/pinia/user-store";
|
|
|
+import {Export} from "@/utils/ExportExcel";
|
|
|
|
|
|
const userName = useUserStore().userInfo.name
|
|
|
const tableHeight = window.innerHeight
|
|
@@ -221,6 +278,14 @@ const nullPatient = () => {
|
|
|
return false
|
|
|
}
|
|
|
|
|
|
+function showChargeList() {
|
|
|
+ if (nullPatient()) return
|
|
|
+ useDialogToJs(ChargeList, {
|
|
|
+ patNo: sheet.value.bah,
|
|
|
+ times: sheet.value.admissTimes
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
function openEmr() {
|
|
|
if (nullPatient()) return
|
|
|
magicApi({
|
|
@@ -233,6 +298,51 @@ function openEmr() {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+const currentSRPage = ref(1)
|
|
|
+const showSearch = ref(false)
|
|
|
+const searchMethod = ref('alpha')
|
|
|
+const searchResults = ref([])
|
|
|
+const searchContent = ref('')
|
|
|
+const showSurgeryCommand = ref(false)
|
|
|
+function openSearch() {
|
|
|
+ showSearch.value = true
|
|
|
+}
|
|
|
+const lastPage = () => {
|
|
|
+ currentSRPage.value--
|
|
|
+ fetchSearchData()
|
|
|
+}
|
|
|
+const nextPage = () => {
|
|
|
+ currentSRPage.value++
|
|
|
+ fetchSearchData()
|
|
|
+}
|
|
|
+const fetchSearchData = () => {
|
|
|
+ const param = {
|
|
|
+ patNo: sheet.value.bah,
|
|
|
+ times: sheet.value.admissTimes,
|
|
|
+ method: searchMethod.value,
|
|
|
+ target: 'diag',
|
|
|
+ content: searchContent.value,
|
|
|
+ medType: sheet.value.medType,
|
|
|
+ page: currentSRPage.value,
|
|
|
+ }
|
|
|
+ sheetSearch(param).then((res) => {
|
|
|
+ searchResults.value = res
|
|
|
+ })
|
|
|
+}
|
|
|
+const executeSearch = () => {
|
|
|
+ showSurgeryCommand.value = false
|
|
|
+ if (searchContent.value === '' && sheet.value.disdiagList[0].code) {
|
|
|
+ getSsfzSurgeriesByIcd(sheet.value.bah, sheet.value.admissTimes, sheet.value.disdiagList[0].code).then((res) => {
|
|
|
+ searchResults.value = res
|
|
|
+ showSurgeryCommand.value = true
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (searchContent.value.length < 2) return
|
|
|
+ currentSRPage.value = 1
|
|
|
+ fetchSearchData()
|
|
|
+}
|
|
|
+
|
|
|
const showMessageDrawer = ref(false)
|
|
|
const basicControl = () => {
|
|
|
if (nullPatient()) return
|
|
@@ -316,6 +426,30 @@ function viewAuditHistory(row) {
|
|
|
useDialogToJs(AuditHistory, { patinfo: row })
|
|
|
}
|
|
|
|
|
|
+function exportExcel() {
|
|
|
+ fetchExportData(dateRange.value).then(res => {
|
|
|
+ if (!res || res.length === 0) {
|
|
|
+ xcMessage.warning('没有找到可以导出的数据。')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ const field = {
|
|
|
+ patNo: '住院号',
|
|
|
+ times: '住院次数',
|
|
|
+ patName: '患者姓名',
|
|
|
+ genderName: '患者性别',
|
|
|
+ doctorName: '医生姓名',
|
|
|
+ disDeptName: '出院科室',
|
|
|
+ applicationTime: '申请时间',
|
|
|
+ auditStaffName: '审核人',
|
|
|
+ auditTime: '审核时间',
|
|
|
+ stateName: '审核状态',
|
|
|
+ auditRemark: '审核备注',
|
|
|
+ coderNote: '编码员备注'
|
|
|
+ }
|
|
|
+ Export(res, field, '审核记录')
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
getAllSmallDept().then(res=> {
|
|
|
allSmallDept.value = res
|