|
@@ -1,11 +1,10 @@
|
|
|
<template>
|
|
|
-
|
|
|
<div class="layout_container">
|
|
|
- <header>
|
|
|
- <el-select v-model="type" style="width: 100px">
|
|
|
+ <header class="round-header">
|
|
|
+ <el-select v-model="patType" style="width: 100px">
|
|
|
<el-option v-for="item in types" :key="item.code" :value="item.code" :label="item.name"></el-option>
|
|
|
</el-select>
|
|
|
- <el-input v-model="content" style="width: 170px" clearable :placeholder="placeHolder"></el-input>
|
|
|
+ <el-input v-model="patNo" style="width: 170px" clearable :placeholder="placeHolder"></el-input>
|
|
|
<el-date-picker
|
|
|
v-model="datePeriod"
|
|
|
type="daterange"
|
|
@@ -18,186 +17,182 @@
|
|
|
<el-button type="primary" icon="Search" style="margin-left: 20px" @click="queryIndex">查询</el-button>
|
|
|
<el-button type="primary" icon="Printer" @click="doPrint">打印</el-button>
|
|
|
</header>
|
|
|
- <div class="layout_container layout-horizontal">
|
|
|
+ <div class="layout_main layout_container layout-horizontal">
|
|
|
<aside class="layout_el-table">
|
|
|
<el-table
|
|
|
:data="inspectionIndex"
|
|
|
stripe highlight-current-row
|
|
|
@row-click="queryDetail"
|
|
|
>
|
|
|
- <el-table-column prop="ordr_CREATE_DATE" label="报告时间" width="130"></el-table-column>
|
|
|
- <el-table-column prop="aply_CTNT" label="检验名称" width="170"></el-table-column>
|
|
|
+ <el-table-column prop="trscDate" label="报告时间" width="130"></el-table-column>
|
|
|
+ <el-table-column prop="examPurpose" label="检验名称" width="170"></el-table-column>
|
|
|
+ <el-table-column prop="reportType" label="报告类别" width="70"></el-table-column>
|
|
|
</el-table>
|
|
|
</aside>
|
|
|
- <div class="layout_main">
|
|
|
- <div id="reportDetail"
|
|
|
- style="position: relative; width: 90%; height: max-content; min-height: 96%; padding: 0 30px; background-color: white">
|
|
|
- <h3 style="width: 100%; text-align: center; font-weight: bold; height: 30px; line-height: 30px">
|
|
|
- 长沙泰和医院检查报告单</h3>
|
|
|
- <div style="display: flex">
|
|
|
- <div style="width: 25%">姓名:{{ inspectionDetail.inspectionHeader.ptnt_NAME }}</div>
|
|
|
- <div style="width: 25%">性别:{{ filterSex(inspectionDetail.inspectionHeader.ptnt_SEX) }}</div>
|
|
|
- <div style="width: 25%">
|
|
|
- 年龄:{{ inspectionDetail.inspectionHeader.ptnt_AGE }}
|
|
|
- {{ filterAgeUnit(inspectionDetail.inspectionHeader.ptnt_AGE_UNIT) }}
|
|
|
+ <div id="reportDetail" class="layout_main"
|
|
|
+ style="position: relative; width: 90%; height: max-content; min-height: 96%; padding: 0 30px; background-color: white">
|
|
|
+ <h3 style="width: 100%; text-align: center; font-weight: bold; height: 30px; line-height: 30px">
|
|
|
+ 长沙泰和医院检查报告单</h3>
|
|
|
+ <div style="display: flex">
|
|
|
+ <div style="width: 25%">姓名:{{ inspectionDetail.order.ptntName }}</div>
|
|
|
+ <div style="width: 25%">性别:{{ filterSex(inspectionDetail.order.ptntSex) }}</div>
|
|
|
+ <div style="width: 25%">
|
|
|
+ 年龄:{{ inspectionDetail.order.ptntAge }}
|
|
|
+ {{ filterAgeUnit(inspectionDetail.order.ptntAgeUnit) }}
|
|
|
+ </div>
|
|
|
+ <div style="width: 25%">
|
|
|
+ {{ ptntType }}:
|
|
|
+ {{ inspectionDetail.order.ptntNo }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div style="display: flex">
|
|
|
+ <div style="width: 25%">科室:{{ inspectionDetail.order.deptName }}</div>
|
|
|
+ <div style="width: 25%">床号:{{ inspectionDetail.order.ptntBedNo }}</div>
|
|
|
+ <div style="width: 25%">标本类型:{{ inspectionDetail.order.smplName }}</div>
|
|
|
+ <div style="width: 25%">
|
|
|
+ <div>申请项目:{{ inspectionDetail.order.aplyCntn.substring(0, 13) }}</div>
|
|
|
+ <div>{{ inspectionDetail.order.aplyCntn.substring(13) }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div style="margin: 5px 0; border-top: 1px solid gray"></div>
|
|
|
+ <div v-if="reportType === '普通' || reportType === '外送'" >
|
|
|
+ <div style="display: inline-block; width: 49.7%; vertical-align: top">
|
|
|
+ <div style="display: flex">
|
|
|
+ <div style="width: 25%">检验项目</div>
|
|
|
+ <div style="width: 16.66%">结果</div>
|
|
|
+ <div style="width: 16.66%">单位</div>
|
|
|
+ <div style="width: 16.66%">说明</div>
|
|
|
+ <div style="width: 25%">参考值</div>
|
|
|
+ </div>
|
|
|
+ <div style="margin: 5px 0; border-top: 1px solid gray"></div>
|
|
|
+ <div v-for="(item, index) in inspectionDetail.items.slice(0, halfSize)"
|
|
|
+ :key="index"
|
|
|
+ style="display: flex">
|
|
|
+ <div style="width: 25%">
|
|
|
+ <div>{{ item.itmName.substring(0, 6) }}</div>
|
|
|
+ <div>{{ item.itmName.substring(6) }}</div>
|
|
|
+ </div>
|
|
|
+ <div style="width: 16.66%">
|
|
|
+ <div>{{ item.itmValue.substring(0, 6) }}</div>
|
|
|
+ <div>{{ item.itmValue.substring(6) }}</div>
|
|
|
+ <div>{{ item.itmStrValue.substring(0, 6) }}</div>
|
|
|
+ <div>{{ item.itmStrValue.substring(6) }}</div>
|
|
|
+ </div>
|
|
|
+ <div style="width: 16.66%">{{ item.itmUnit }}</div>
|
|
|
+ <div style="width: 16.66%">
|
|
|
+ <span v-html="getItemAlert(item.itmAlert, item.itmStrValue, item.itmValue)"></span>
|
|
|
+ </div>
|
|
|
+ <div style="width: 25%">{{ item.range }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div style="display: inline-block; width: 49.7%; vertical-align: top">
|
|
|
+ <div style="display: flex">
|
|
|
+ <div style="width: 25%">检验项目</div>
|
|
|
+ <div style="width: 16.66%">结果</div>
|
|
|
+ <div style="width: 16.66%">单位</div>
|
|
|
+ <div style="width: 16.66%">说明</div>
|
|
|
+ <div style="width: 25%">参考值</div>
|
|
|
</div>
|
|
|
- <div style="width: 25%">
|
|
|
- {{ ptntType }}:
|
|
|
- {{ inspectionDetail.inspectionHeader.ptnt_NO }}
|
|
|
+ <div style="margin: 5px 0; border-top: 1px solid gray"></div>
|
|
|
+ <div v-for="(item, index) in inspectionDetail.items.slice(halfSize)" :key="index"
|
|
|
+ style="display: flex">
|
|
|
+ <div style="width: 25%">
|
|
|
+ <div>{{ item.itmName.substring(0, 6) }}</div>
|
|
|
+ <div>{{ item.itmName.substring(6) }}</div>
|
|
|
+ </div>
|
|
|
+ <div style="width: 16.66%">
|
|
|
+ <div>{{ item.itmValue.substring(0, 6) }}</div>
|
|
|
+ <div>{{ item.itmValue.substring(6) }}</div>
|
|
|
+ <div>{{ item.itmStrValue.substring(0, 6) }}</div>
|
|
|
+ <div>{{ item.itmStrValue.substring(6) }}</div>
|
|
|
+ </div>
|
|
|
+ <div style="width: 16.66%">{{ item.itmUnit }}</div>
|
|
|
+ <div style="width: 16.66%">
|
|
|
+ <span v-html="getItemAlert(item.itmAlert, item.itmStrValue, item.itmValue)"></span>
|
|
|
+ </div>
|
|
|
+ <div style="width: 25%">{{ item.range }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ </div>
|
|
|
+ <div v-if="reportType === '细菌'">
|
|
|
<div style="display: flex">
|
|
|
- <div style="width: 25%">科室:{{ inspectionDetail.inspectionHeader.dept_NAME }}</div>
|
|
|
- <div style="width: 25%">床号:{{ inspectionDetail.inspectionHeader.ptnt_BED_NO }}</div>
|
|
|
- <div style="width: 25%">标本类型:{{ inspectionDetail.inspectionHeader.smpl_NAME }}</div>
|
|
|
- <div style="width: 25%">
|
|
|
- <div>申请项目:{{ inspectionDetail.inspectionHeader.aply_CNTN.substring(0, 13) }}</div>
|
|
|
- <div>{{ inspectionDetail.inspectionHeader.aply_CNTN.substring(13) }}</div>
|
|
|
- </div>
|
|
|
+ <div style="width: 25%">检验项目</div>
|
|
|
+ <div style="width: 75%">结果</div>
|
|
|
</div>
|
|
|
<div style="margin: 5px 0; border-top: 1px solid gray"></div>
|
|
|
- <div>
|
|
|
- <div v-if="inspectionDetail.inspectionHeader.info_TYPE === '1'">
|
|
|
- <div style="display: inline-block; width: 49.7%; vertical-align: top">
|
|
|
- <div style="display: flex">
|
|
|
- <div style="width: 25%">检验项目</div>
|
|
|
- <div style="width: 16.66%">结果</div>
|
|
|
- <div style="width: 16.66%">单位</div>
|
|
|
- <div style="width: 16.66%">说明</div>
|
|
|
- <div style="width: 25%">参考值</div>
|
|
|
- </div>
|
|
|
- <div style="margin: 5px 0; border-top: 1px solid gray"></div>
|
|
|
- <div v-for="(item, index) in inspectionDetail.inspectionItems.slice(0, halfSize)"
|
|
|
- :key="index"
|
|
|
- style="display: flex">
|
|
|
- <div style="width: 25%">
|
|
|
- <div>{{ item.itm_NAME.substring(0, 6) }}</div>
|
|
|
- <div>{{ item.itm_NAME.substring(6) }}</div>
|
|
|
- </div>
|
|
|
- <div style="width: 16.66%">
|
|
|
- <div>{{ item.itm_VALUE.substring(0, 6) }}</div>
|
|
|
- <div>{{ item.itm_VALUE.substring(6) }}</div>
|
|
|
- <div>{{ item.itm_STR_VALUE.substring(0, 6) }}</div>
|
|
|
- <div>{{ item.itm_STR_VALUE.substring(6) }}</div>
|
|
|
- </div>
|
|
|
- <div style="width: 16.66%">{{ item.itm_UNIT }}</div>
|
|
|
- <div style="width: 16.66%">
|
|
|
- <span v-html="getItemAlert(item.itm_ALERT, item.itm_STR_VALUE, item.itm_VALUE)"></span>
|
|
|
- </div>
|
|
|
- <div style="width: 25%">{{ item.range }}</div>
|
|
|
- </div>
|
|
|
+ <div style="margin: 0 30px; padding-bottom: 5px;" v-if="bacterias.length > 0"
|
|
|
+ v-for="(antibioticItem,index) in bacterias"
|
|
|
+ :style="index > 0 ? {borderTop: '1px dashed gray'} : {}">
|
|
|
+ <div style="display: flex;width: 49.7%;margin: 8px 0 4px 0">
|
|
|
+ <div style="width: 33.33%">{{ antibioticItem.type }}</div>
|
|
|
+ <div style="width: 60%">{{ antibioticItem.germName }}</div>
|
|
|
+ </div>
|
|
|
+ <div style="display: inline-block; width: 49.7%; vertical-align: top">
|
|
|
+ <div style="display: flex">
|
|
|
+ <div style="width: 33.33%">抗菌药物</div>
|
|
|
+ <div style="width: 33.33%">抗菌药物编码</div>
|
|
|
+ <div style="width: 16.66%">MIC值</div>
|
|
|
+ <div style="width: 16.66%">敏感性</div>
|
|
|
</div>
|
|
|
- <div style="display: inline-block; width: 49.7%; vertical-align: top">
|
|
|
- <div style="display: flex">
|
|
|
- <div style="width: 25%">检验项目</div>
|
|
|
- <div style="width: 16.66%">结果</div>
|
|
|
- <div style="width: 16.66%">单位</div>
|
|
|
- <div style="width: 16.66%">说明</div>
|
|
|
- <div style="width: 25%">参考值</div>
|
|
|
- </div>
|
|
|
- <div style="margin: 5px 0; border-top: 1px solid gray"></div>
|
|
|
- <div v-for="(item, index) in inspectionDetail.inspectionItems.slice(halfSize)" :key="index"
|
|
|
- style="display: flex">
|
|
|
- <div style="width: 25%">
|
|
|
- <div>{{ item.itm_NAME.substring(0, 6) }}</div>
|
|
|
- <div>{{ item.itm_NAME.substring(6) }}</div>
|
|
|
- </div>
|
|
|
- <div style="width: 16.66%">
|
|
|
- <div>{{ item.itm_VALUE.substring(0, 6) }}</div>
|
|
|
- <div>{{ item.itm_VALUE.substring(6) }}</div>
|
|
|
- <div>{{ item.itm_STR_VALUE.substring(0, 6) }}</div>
|
|
|
- <div>{{ item.itm_STR_VALUE.substring(6) }}</div>
|
|
|
- </div>
|
|
|
- <div style="width: 16.66%">{{ item.itm_UNIT }}</div>
|
|
|
- <div style="width: 16.66%">
|
|
|
- <span v-html="getItemAlert(item.itm_ALERT, item.itm_STR_VALUE, item.itm_VALUE)"></span>
|
|
|
- </div>
|
|
|
- <div style="width: 25%">{{ item.range }}</div>
|
|
|
+ <div style="margin: 5px 0; border-top: 1px solid gray"></div>
|
|
|
+ <div style="display: flex"
|
|
|
+ v-for="(bac, index) in antibioticItem.antiList.slice(0, antibioticItem.halfBacSize)"
|
|
|
+ :key="index">
|
|
|
+ <div style="width: 33.33%">
|
|
|
+ <div>{{ bac.antiNameCn.substring(0, 6) }}</div>
|
|
|
+ <div>{{ bac.antiNameCn.substring(6) }}</div>
|
|
|
</div>
|
|
|
+ <div style="width: 33.33%">{{ bac.antiAbb }}</div>
|
|
|
+ <div style="width: 16.66%">{{ bac.antiMic }}</div>
|
|
|
+ <div style="width: 16.66%">{{ bac.antiValue }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div v-if="inspectionDetail.inspectionHeader.info_TYPE === '2'">
|
|
|
+ <div style="display: inline-block; width: 47%; vertical-align: top">
|
|
|
<div style="display: flex">
|
|
|
- <div style="width: 25%">检验项目</div>
|
|
|
- <div style="width: 75%">结果</div>
|
|
|
+ <div style="width: 33.33%">抗菌药物</div>
|
|
|
+ <div style="width: 33.33%">抗菌药物编码</div>
|
|
|
+ <div style="width: 16.66%">MIC值</div>
|
|
|
+ <div style="width: 16.66%">敏感性</div>
|
|
|
</div>
|
|
|
<div style="margin: 5px 0; border-top: 1px solid gray"></div>
|
|
|
- <div style="margin: 0 30px; padding-bottom: 5px;" v-if="antibioticResults.length > 0"
|
|
|
- v-for="(antibioticItem,index) in antibioticResults"
|
|
|
- :style="index > 0 ? {borderTop: '1px dashed gray'} : {}">
|
|
|
- <div style="display: flex;width: 49.7%;margin: 8px 0 4px 0">
|
|
|
- <div style="width: 33.33%">{{ antibioticItem.type }}</div>
|
|
|
- <div style="width: 60%">{{ antibioticItem.germName }}</div>
|
|
|
- </div>
|
|
|
- <div style="display: inline-block; width: 49.7%; vertical-align: top">
|
|
|
- <div style="display: flex">
|
|
|
- <div style="width: 33.33%">抗菌药物</div>
|
|
|
- <div style="width: 33.33%">抗菌药物编码</div>
|
|
|
- <div style="width: 16.66%">MIC值</div>
|
|
|
- <div style="width: 16.66%">敏感性</div>
|
|
|
- </div>
|
|
|
- <div style="margin: 5px 0; border-top: 1px solid gray"></div>
|
|
|
- <div style="display: flex"
|
|
|
- v-for="(bac, index) in antibioticItem.values.slice(0, antibioticItem.halfBacSize)"
|
|
|
- :key="index">
|
|
|
- <div style="width: 33.33%">
|
|
|
- <div>{{ bac.anti_NAME_CN.substring(0, 6) }}</div>
|
|
|
- <div>{{ bac.anti_NAME_CN.substring(6) }}</div>
|
|
|
- </div>
|
|
|
- <div style="width: 33.33%">{{ bac.anti_ABB }}</div>
|
|
|
- <div style="width: 16.66%">{{ bac.anti_MIC }}</div>
|
|
|
- <div style="width: 16.66%">{{ bac.anti_VALUE }}</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div style="display: inline-block; width: 47%; vertical-align: top">
|
|
|
- <div style="display: flex">
|
|
|
- <div style="width: 33.33%">抗菌药物</div>
|
|
|
- <div style="width: 33.33%">抗菌药物编码</div>
|
|
|
- <div style="width: 16.66%">MIC值</div>
|
|
|
- <div style="width: 16.66%">敏感性</div>
|
|
|
- </div>
|
|
|
- <div style="margin: 5px 0; border-top: 1px solid gray"></div>
|
|
|
- <div style="display: flex"
|
|
|
- v-for="(bac, index) in antibioticItem.values.slice(antibioticItem.halfBacSize)"
|
|
|
- :key="index">
|
|
|
- <div style="width: 33.33%">
|
|
|
- <div>{{ bac.anti_NAME_CN.substring(0, 6) }}</div>
|
|
|
- <div>{{ bac.anti_NAME_CN.substring(6) }}</div>
|
|
|
- </div>
|
|
|
- <div style="width: 33.33%">{{ bac.anti_ABB }}</div>
|
|
|
- <div style="width: 16.66%">{{ bac.anti_MIC }}</div>
|
|
|
- <div style="width: 16.66%">{{ bac.anti_VALUE }}</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div v-else>
|
|
|
- <div v-for="item in inspectionDetail.inspectionItems" style="display: flex">
|
|
|
- <div style="width: 25%">{{ item.itm_NAME }}</div>
|
|
|
- <div style="width: 75%">{{ item.itm_STR_VALUE }}</div>
|
|
|
+ <div style="display: flex"
|
|
|
+ v-for="(bac, index) in antibioticItem.antiList.slice(antibioticItem.halfBacSize)"
|
|
|
+ :key="index">
|
|
|
+ <div style="width: 33.33%">
|
|
|
+ <div>{{ bac.antiNameCn.substring(0, 6) }}</div>
|
|
|
+ <div>{{ bac.antiNameCn.substring(6) }}</div>
|
|
|
</div>
|
|
|
+ <div style="width: 33.33%">{{ bac.antiAbb }}</div>
|
|
|
+ <div style="width: 16.66%">{{ bac.antiMic }}</div>
|
|
|
+ <div style="width: 16.66%">{{ bac.antiValue }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div>
|
|
|
- <div style="margin: 5px 0; border-top: 1px solid gray"></div>
|
|
|
- <div style="display: flex">
|
|
|
- <div style="width: 33.33%">接收时间:{{ inspectionDetail.inspectionHeader.aply_DATE }}</div>
|
|
|
- <div style="width: 33.33%">检验时间:{{
|
|
|
- inspectionDetail.inspectionHeader.ordr_CREATE_DATE
|
|
|
- }}
|
|
|
- </div>
|
|
|
- <div style="width: 33.33%">报告时间:{{ inspectionDetail.inspectionHeader.audt_TIME }}</div>
|
|
|
+ <div v-else>
|
|
|
+ <div v-for="item in inspectionDetail.items" style="display: flex">
|
|
|
+ <div style="width: 25%">{{ item.itmName }}</div>
|
|
|
+ <div style="width: 75%">{{ item.itmStrValue }}</div>
|
|
|
</div>
|
|
|
- <div style="display: flex">
|
|
|
- <div style="width: 33.33%">送检医生:{{ inspectionDetail.inspectionHeader.test_USR_NAME }}</div>
|
|
|
- <div style="width: 33.33%">检验人:{{ inspectionDetail.inspectionHeader.ordr_USR_NAME }}</div>
|
|
|
- <div style="width: 33.33%">审核人:{{ inspectionDetail.inspectionHeader.audt_USR_NAME }}</div>
|
|
|
- </div>
|
|
|
- <div style="margin: 5px 0; border-top: 1px solid gray"></div>
|
|
|
- <div style="width: 100%; text-align: center; font-weight: bold; height: 30px; font-size: 12px">
|
|
|
- ***此结果仅对所检测的标本负责***
|
|
|
- <span style="margin-left: 10px; font-size: 12px">备注:升高(↑),降低(↓),阳性(+),阴性(-)</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div style="position: absolute; bottom: 0; left: 0; right: 0">
|
|
|
+ <div style="margin: 5px 0; border-top: 1px solid gray"></div>
|
|
|
+ <div style="display: flex">
|
|
|
+ <div style="width: 33.33%">接收时间:{{ inspectionDetail.order.aplyDate }}</div>
|
|
|
+ <div style="width: 33.33%">
|
|
|
+ 检验时间:{{inspectionDetail.order.ordrCreateDate }}
|
|
|
</div>
|
|
|
+ <div style="width: 33.33%">报告时间:{{ inspectionDetail.order.audtTime }}</div>
|
|
|
+ </div>
|
|
|
+ <div style="display: flex">
|
|
|
+ <div style="width: 33.33%">送检医生:{{ inspectionDetail.order.testUsrName }}</div>
|
|
|
+ <div style="width: 33.33%">检验人:{{ inspectionDetail.order.ordrUsrName }}</div>
|
|
|
+ <div style="width: 33.33%">审核人:{{ inspectionDetail.order.audtUsrName }}</div>
|
|
|
+ </div>
|
|
|
+ <div style="margin: 5px 0; border-top: 1px solid gray"></div>
|
|
|
+ <div style="width: 100%; text-align: center; font-weight: bold; height: 30px; font-size: 12px">
|
|
|
+ ***此结果仅对所检测的标本负责***
|
|
|
+ <span style="margin-left: 10px; font-size: 12px">备注:升高(↑),降低(↓),阳性(+),阴性(-)</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -209,7 +204,7 @@
|
|
|
<script setup lang="ts">
|
|
|
import {computed, onActivated, reactive, ref, onMounted} from 'vue'
|
|
|
import {shortcuts} from '@/data/shortcuts'
|
|
|
-import {queryInspectionDetail, queryInspectionsIndex} from '@/api/inspections'
|
|
|
+import {checkExamDetail, checkExamIndex} from '@/api/inspections'
|
|
|
import router from '@/router'
|
|
|
import {ElMessage} from 'element-plus'
|
|
|
import {initLodop, getLodop} from '@/utils/c-lodop'
|
|
@@ -228,38 +223,35 @@ const props = defineProps({
|
|
|
}
|
|
|
})
|
|
|
|
|
|
-const type = ref(1)
|
|
|
+const patType = ref('InPatient')
|
|
|
const types = initTypes()
|
|
|
-const content = ref(null)
|
|
|
+const patNo = ref(null)
|
|
|
const datePeriod = ref([])
|
|
|
const placeHolder = computed(() => {
|
|
|
return '请输入' + ptntType.value
|
|
|
})
|
|
|
const ptntType = computed(() => {
|
|
|
- if (type.value === 1) {
|
|
|
+ if (patType.value === 'InPatient') {
|
|
|
return '住院号'
|
|
|
- } else if (type.value === 0) {
|
|
|
+ } else if (patType.value === 'OutPatient') {
|
|
|
return '门诊号'
|
|
|
- } else if (type.value === 3) {
|
|
|
- return '体检号'
|
|
|
}
|
|
|
return ''
|
|
|
})
|
|
|
-const tableHeight = window.innerHeight - 45
|
|
|
const inspectionIndex = ref([])
|
|
|
-const antibioticResults = ref([])
|
|
|
+const bacterias = ref([])
|
|
|
const inspectionDetail = reactive({
|
|
|
- inspectionHeader: {
|
|
|
- aply_CNTN: '',
|
|
|
+ order: {
|
|
|
+ aplyCntn: '',
|
|
|
},
|
|
|
- inspectionItems: [],
|
|
|
+ items: [],
|
|
|
})
|
|
|
const halfSize = ref(0)
|
|
|
|
|
|
onMounted(() => {
|
|
|
if (props.patNo && props.start && props.end) {
|
|
|
- type.value = 1
|
|
|
- content.value = props.patNo
|
|
|
+ patType.value = 'InPatient'
|
|
|
+ patNo.value = props.patNo
|
|
|
datePeriod.value[0] = props.start
|
|
|
datePeriod.value[1] = props.end
|
|
|
queryIndex()
|
|
@@ -269,8 +261,8 @@ onMounted(() => {
|
|
|
onActivated(() => {
|
|
|
const params = router.currentRoute.value.params
|
|
|
if (params.patNo && params.start && params.end) {
|
|
|
- type.value = 1
|
|
|
- content.value = params.patNo
|
|
|
+ patType.value = 'InPatient'
|
|
|
+ patNo.value = params.patNo
|
|
|
datePeriod.value[0] = params.start
|
|
|
datePeriod.value[1] = params.end
|
|
|
queryIndex()
|
|
@@ -278,7 +270,7 @@ onActivated(() => {
|
|
|
})
|
|
|
|
|
|
const queryIndex = () => {
|
|
|
- if (!content.value) {
|
|
|
+ if (!patNo.value) {
|
|
|
ElMessage({
|
|
|
message: '请输入患者' + ptntType.value + '。',
|
|
|
type: 'warning',
|
|
@@ -287,7 +279,7 @@ const queryIndex = () => {
|
|
|
})
|
|
|
return
|
|
|
}
|
|
|
- if (!datePeriod.value) {
|
|
|
+ if (!datePeriod.value || datePeriod.value.length < 2) {
|
|
|
ElMessage({
|
|
|
message: '请选择日期范围。',
|
|
|
type: 'warning',
|
|
@@ -297,37 +289,39 @@ const queryIndex = () => {
|
|
|
return
|
|
|
}
|
|
|
let {startTime, endTime} = getDateRangeFormatDate(datePeriod.value)
|
|
|
- const param = {
|
|
|
- type: type.value,
|
|
|
- content: content.value,
|
|
|
- start: startTime,
|
|
|
- end: endTime,
|
|
|
+ const params = {
|
|
|
+ patType: patType.value,
|
|
|
+ patNo: patNo.value,
|
|
|
+ reqStartTime: startTime,
|
|
|
+ reqEndTime: endTime,
|
|
|
}
|
|
|
- queryInspectionsIndex(param).then((res) => {
|
|
|
+ checkExamIndex(params).then((res) => {
|
|
|
inspectionIndex.value = res
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+const reportType = ref('普通')
|
|
|
const queryDetail = (row) => {
|
|
|
- antibioticResults.value = []
|
|
|
- queryInspectionDetail(row.ordr_ID).then((res) => {
|
|
|
- halfSize.value = Math.ceil(res.inspectionItems.length / 2)
|
|
|
- inspectionDetail.inspectionHeader = res.inspectionHeader
|
|
|
- inspectionDetail.inspectionItems = res.inspectionItems
|
|
|
- res.inspectionItems.forEach((item) => {
|
|
|
- if (item.bacteriaResults && item.bacteriaResults.length > 0) {
|
|
|
- if (item.bacteriaResults[0].antibioticResults != null) {
|
|
|
- const bacSize = Math.ceil(item.bacteriaResults[0].antibioticResults.length / 2)
|
|
|
- const resultItem = {
|
|
|
- halfBacSize: bacSize,
|
|
|
- germName: item.bacteriaResults[0].bac_NAME_CN,
|
|
|
- values: item.bacteriaResults[0].antibioticResults,
|
|
|
- type: item.itm_NAME
|
|
|
- }
|
|
|
- antibioticResults.value.push(resultItem)
|
|
|
+ bacterias.value = []
|
|
|
+ checkExamDetail({
|
|
|
+ reportId: row.reportId
|
|
|
+ }).then((res) => {
|
|
|
+ halfSize.value = Math.ceil(res.items.length / 2)
|
|
|
+ inspectionDetail.order = res.order
|
|
|
+ inspectionDetail.items = res.items
|
|
|
+ reportType.value = row.reportType
|
|
|
+ if (res.bacterias && res.bacterias.length > 0) {
|
|
|
+ res.bacterias.forEach(bac => {
|
|
|
+ const bacSize = Math.ceil(bac.antiList.length / 2)
|
|
|
+ const tempBacResult = {
|
|
|
+ halfBacSize: bacSize,
|
|
|
+ germName: bac.bacNameCn,
|
|
|
+ antiList: bac.antiList,
|
|
|
+ type: bac.itmName
|
|
|
}
|
|
|
- }
|
|
|
- })
|
|
|
+ bacterias.value.push(tempBacResult)
|
|
|
+ })
|
|
|
+ }
|
|
|
})
|
|
|
}
|
|
|
|
|
@@ -344,21 +338,20 @@ const doPrint = () => {
|
|
|
|
|
|
function initTypes() {
|
|
|
return [
|
|
|
- {code: 1, name: '住院号'},
|
|
|
- {code: 0, name: '门诊号'},
|
|
|
- {code: 3, name: '体检号'},
|
|
|
+ {code: 'InPatient', name: '住院号'},
|
|
|
+ {code: 'OutPatient', name: '门诊号'},
|
|
|
]
|
|
|
}
|
|
|
|
|
|
function filterSex(val) {
|
|
|
switch (val) {
|
|
|
- case '0':
|
|
|
+ case 0:
|
|
|
return '未填'
|
|
|
- case '1':
|
|
|
+ case 1:
|
|
|
return '男'
|
|
|
- case '2':
|
|
|
+ case 2:
|
|
|
return '女'
|
|
|
- case '3':
|
|
|
+ case 3:
|
|
|
return '未知'
|
|
|
}
|
|
|
return ''
|
|
@@ -366,13 +359,13 @@ function filterSex(val) {
|
|
|
|
|
|
function filterAgeUnit(val) {
|
|
|
switch (val) {
|
|
|
- case '0':
|
|
|
+ case 0:
|
|
|
return '岁'
|
|
|
- case '1':
|
|
|
+ case 1:
|
|
|
return '月'
|
|
|
- case '2':
|
|
|
+ case 2:
|
|
|
return '天'
|
|
|
- case '3':
|
|
|
+ case 3:
|
|
|
return '时'
|
|
|
}
|
|
|
return ''
|