123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695 |
- <template>
- <span style="color:red;">患者数据来源病案首页</span>
- <el-button @click="newlyAddedClick" type="success" icon="Plus">新增</el-button>
- <div style="display: flex">
- <div style="width: 400px">
- <vxe-table :data="infectiousDiseasesList"
- @cell-click="rowClick"
- :height="getWindowSize.h / 1.2">
- <vxe-column title="名称" field="contagion">
- <template #default="{row}">
- {{ getClassName(row)?.name }}
- </template>
- </vxe-column>
- <vxe-column title="日期"
- field="reportDate"
- width="120"
- formatter="formatDate"/>
- <vxe-column>
- <template #default="{row}">
- <el-button v-el-btn="{func: deleteClick, value: row}" type="danger">删除</el-button>
- </template>
- </vxe-column>
- </vxe-table>
- </div>
- <div style="flex: 1;min-width: 800px">
- <el-scrollbar :height="getWindowSize.h / 1.2">
- <el-form ref="formRef"
- :model="sheetData"
- :rules="rules"
- label-width="100px" inline>
- <el-row>
- <el-col :span="12">
- <el-form-item label="报卡类别:" prop="cardNo">
- {{ sheetData.cardNo }}
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="报卡类别:" prop="illType">
- <el-select v-model="sheetData.illType">
- <el-option v-for="item in cardReportingType"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="姓名:">
- {{ sheetData.name }}
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="家长姓名:">
- <el-input v-model="sheetData.genearch"/>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="孕妇:">
- <el-input v-model="sheetData.yunDays">
- <template #prepend>孕</template>
- <template #append>
- 周
- </template>
- </el-input>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="身份证号:">
- <el-input v-model="sheetData.socialNo"/>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="性别:" prop="sex">
- <el-select v-model="sheetData.sex">
- <el-option v-for="item in sexes"
- :label="item.name"
- :value="item.code.toString()"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="出生日期:">
- <el-date-picker
- v-model="sheetData.birthDate"
- format="YYYY-MM-DD"
- value-format="YYYY-MM-DD"/>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="年龄:">
- {{ sheetData.age }}
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="工作单位:">
- <el-input v-model="sheetData.corporation"/>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="联系电话:" prop="relationTel">
- <el-input v-model="sheetData.relationTel"/>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="病人属于:" prop="scopeFlag">
- <el-select v-model="sheetData.scopeFlag">
- <el-option v-for="item in thePatientBelongsTo"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="职业:" prop="occupationCode">
- <el-select v-model="sheetData.occupationCode">
- <el-option v-for="item in occupation"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="现住址:">
- <el-input v-model="sheetData.currentDistrict"/>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="现街道:" prop="currentStreet">
- <el-input v-model="sheetData.currentStreet"/>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-alert title="病历分类(乙型肝类、血吸虫病填写)"
- show-icon
- type="warning"
- :closable="false"/>
- </el-col>
- <el-col :span="12">
- <el-form-item label="分类(1):" prop="vaccinate">
- <el-select v-model="sheetData.vaccinate">
- <el-option v-for="item in medicalRecordClassification1"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="分类(2):" prop="vaccinate2">
- <el-select v-model="sheetData.vaccinate2">
- <el-option v-for="item in medicalRecordClassification2"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="发病日期:" prop="illStartDate">
- <el-date-picker
- type="datetime"
- v-model="sheetData.illStartDate"
- format="YYYY-MM-DD HH:mm:ss"
- value-format="YYYY-MM-DD HH:mm:ss"/>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="诊断日期:" prop="illFirstDate">
- <el-date-picker
- type="datetime"
- v-model="sheetData.illFirstDate"
- format="YYYY-MM-DD HH:mm:ss"
- value-format="YYYY-MM-DD HH:mm:ss"/>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-form-item label="死亡日期:">
- <el-date-picker
- type="datetime"
- v-model="sheetData.deathDate"
- format="YYYY-MM-DD HH:mm:ss"
- value-format="YYYY-MM-DD HH:mm:ss"/>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-alert title="传染病"
- show-icon
- type="warning"
- :closable="false"/>
- </el-col>
- <el-col :span="8">
- <el-form-item label="甲类:" prop="contagion">
- <el-select v-model="sheetData.contagion"
- @change="changesInInfectiousDiseases('contagion')">
- <el-option v-for="item in classA"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="乙类:" prop="contagion2">
- <el-select v-model="sheetData.contagion2"
- @change="changesInInfectiousDiseases('contagion2')">
- <el-option v-for="item in classB"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="丙类:" prop="contagion3">
- <el-select v-model="sheetData.contagion3"
- @change="changesInInfectiousDiseases('contagion3')">
- <el-option v-for="item in classC"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-alert title="其他法定管理以及重点临测传染病"
- show-icon
- type="warning"
- :closable="false"/>
- </el-col>
- <el-col :span="24">
- <el-form-item label="其他" prop="contagionQt">
- <el-select v-model="sheetData.contagionQt"
- @change="changesInInfectiousDiseases('contagionQt')">
- <el-option v-for="item in otherInfections"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-alert title="梅毒检测结果"
- show-icon
- type="warning"
- :closable="false"/>
- </el-col>
- <el-col :span="24">
- <el-alert title="成人/患儿生母填写"
- show-icon
- type="info"
- :closable="false"/>
- </el-col>
- <el-col :span="12">
- <el-form-item label="TRUST/RPR:">
- <el-select v-model="sheetData.mtrust">
- <el-option v-for="item in testing"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="滴度::">
- <el-select v-model="sheetData.mrpr">
- <el-option v-for="item in other"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="TPPA/TPHA:">
- <el-select v-model="sheetData.mtppa">
- <el-option v-for="item in testing"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="其他:">
- <el-select v-model="sheetData.mother">
- <el-option v-for="item in testOther"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-alert title="患儿填写"
- show-icon
- type="info"
- :closable="false"/>
- </el-col>
- <el-col :span="12">
- <el-form-item label="TRUST/RPR:">
- <el-select v-model="sheetData.ctrust">
- <el-option v-for="item in testing"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="滴度::">
- <el-select v-model="sheetData.crpr">
- <el-option v-for="item in other"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="TPPA/TPHA:">
- <el-select v-model="sheetData.ctppa">
- <el-option v-for="item in testing"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="19S-IgM-TPHA:">
- <el-select v-model="sheetData.ctpha">
- <el-option v-for="item in testing"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="订正病名:" prop="contagionText">
- <el-input v-model="sheetData.contagionText"/>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="诊断依据:" prop="disDiagType">
- <el-select v-model="sheetData.disDiagType">
- <el-option v-for="item in diagnosticBasis"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="报告单位:">
- 长沙泰和医院
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="退卡原因:" prop="cardRet">
- <el-input v-model="sheetData.cardRet"/>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="报告医生:">
- {{ userData.name }}
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="联系电话:" prop="reportTel">
- <el-input v-model="sheetData.reportTel"/>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="报告日期:" prop="reportDate">
- {{ sheetData.reportDate }}
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="填卡日期:" prop="inputDt">
- {{ sheetData.inputDt }}
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-form-item label="备注:" prop="remark" style="width: 80%">
- <el-input v-model="sheetData.remark"/>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="既往史:" prop="anamnesis">
- <el-select v-model="sheetData.anamnesis">
- <el-option v-for="item in pastHistory"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-form-item label="本次就诊:" prop="visitType">
- <el-select v-model="sheetData.visitType">
- <el-option v-for="item in visitType"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-alert title="病毒性肝炎专报"
- show-icon
- type="warning"
- :closable="false"/>
- </el-col>
- <el-col :span="12">
- <el-form-item label="临床分型:" prop="gyLcfx">
- <el-select v-model="sheetData.gyLcfx">
- <el-option v-for="item in gyLcfx"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="病原分型:" prop="gyByfx">
- <el-select v-model="sheetData.gyByfx">
- <el-option v-for="item in gyByfx"
- :label="item.name"
- :value="item.code"/>
- </el-select>
- </el-form-item>
- </el-col>
- <!-- 第一行 -->
- <el-col :span="6">
- <el-form-item label="ALT:" prop="valt">
- <el-input v-model="sheetData.valt"/>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="总胆红质:" prop="vzdhz">
- <el-input v-model="sheetData.vzdhz"/>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="抗-HAVIgM:" prop="vkhavigm">
- <el-input v-model="sheetData.vkhavigm"/>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="HAV-RNA:" prop="vhavRna">
- <el-input v-model="sheetData.vhavRna"/>
- </el-form-item>
- </el-col>
- <!-- 第2行 -->
- <el-col :span="6">
- <el-form-item label="HbsAg:" prop="vhbsag">
- <el-input v-model="sheetData.vhbsag"/>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="抗-HBs:" prop="vkhbs">
- <el-input v-model="sheetData.vkhbs"/>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="HBeAg:" prop="vhbeag">
- <el-input v-model="sheetData.vhbeag"/>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="抗-HBe:" prop="vkhbe">
- <el-input v-model="sheetData.vkhbe"/>
- </el-form-item>
- </el-col>
- <!-- 第3行 -->
- <el-col :span="6">
- <el-form-item label="抗-HBc:" prop="vkhbc">
- <el-input v-model="sheetData.vkhbc"/>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="抗-HBcIgM:" prop="vkhbcigm">
- <el-input v-model="sheetData.vkhbcigm"/>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="HBV-DNA:" prop="vhbvDna">
- <el-input v-model="sheetData.vhbvDna"/>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="抗-HCV:" prop="vkhcv">
- <el-input v-model="sheetData.vkhcv"/>
- </el-form-item>
- </el-col>
- <!-- 第4行 -->
- <el-col :span="6">
- <el-form-item label="HCV-RNA:" prop="vhcvrna">
- <el-input v-model="sheetData.vhcvrna"/>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="抗-HDVIgM:" prop="vkhdvigm">
- <el-input v-model="sheetData.vkhdvigm"/>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="抗HDV:" prop="vkhdv">
- <el-input v-model="sheetData.vkhdv"/>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="HDV-RNA:" prop="vhdvRna">
- <el-input v-model="sheetData.vhdvRna"/>
- </el-form-item>
- </el-col>
- <!-- 第5行 -->
- <el-col :span="6">
- <el-form-item label="抗-HEVIgM:" prop="vkhevigm">
- <el-input v-model="sheetData.vkhevigm"/>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="抗HEV:" prop="vkhev">
- <el-input v-model="sheetData.vkhev"/>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="HEV-RNA:" prop="vhevrna">
- <el-input v-model="sheetData.vhevrna"/>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="订正病名:" prop="gyDzbm">
- <el-input v-model="sheetData.gyDzbm"/>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- </el-scrollbar>
- </div>
- </div>
- </template>
- <script setup name='DialogDiseases'>
- import {getSheetInfo} from "@/api/case-front-sheet";
- import {sexes} from "@/data";
- import {
- cardReportingType, classA, classB, classC, diagnosticBasis, getClassName, gyByfx, gyLcfx,
- medicalRecordClassification1, medicalRecordClassification2,
- occupation, other, otherInfections, pastHistory, testing, testOther,
- thePatientBelongsTo, visitType
- } from "@/data/infectious-diseases-data";
- import {getWindowSize} from "@/utils/window-size";
- import store from "@/store";
- import {getServerDateApi} from "@/api/public-api";
- import {stringIsBlank} from "@/utils/blank-utils";
- import {
- confirmCrb, delCrb,
- getContagiousDiseaseByPatNo,
- updateCrb
- } from "@/api/zhu-yuan-yi-sheng/infectious-diseasest";
- import {xcMessage} from "@/utils/xiaochan-element-plus";
- import {ElMessageBox} from "element-plus";
- const props = defineProps({
- patNo: {
- type: String,
- default: '0406942'
- },
- times: {
- type: Number,
- default: 1
- }
- })
- const emits = defineEmits(['confirm'])
- let userData = store.state.user.info
- const sheetData = ref({})
- let patInfo = {}
- const infectiousDiseasesList = ref([])
- const setDefault = async () => {
- let date = await getServerDateApi()
- sheetData.value.name = patInfo.name
- sheetData.value.socialNo = patInfo.socialNo
- sheetData.value.sex = patInfo.sex
- sheetData.value.birthDate = patInfo.birthDate
- sheetData.value.age = patInfo.age
- sheetData.value.corporation = patInfo.unitName
- sheetData.value.relationTel = patInfo.phone
- sheetData.value.occupationCode = patInfo.occupation
- sheetData.value.currentDistrict = patInfo.livePlaceCombo
- sheetData.value.reportDate = date
- sheetData.value.inputDt = date
- sheetData.value.patientId = props.patNo
- sheetData.value.times = props.times
- sheetData.value.ageUnit = '岁'
- sheetData.value.reportDept = patInfo.admissWardCode
- sheetData.value.reportHospital = '长沙泰和医院'
- }
- const changesInInfectiousDiseases = (val) => {
- let temp = ['contagion', 'contagion2', 'contagion3', 'contagionQt']
- temp.forEach(item => {
- if (item !== val) {
- sheetData.value[item] = null
- }
- })
- }
- const contagionFunc = (rule, value, callback) => {
- if (stringIsBlank(sheetData.value.contagion)
- && stringIsBlank(sheetData.value.contagion2)
- && stringIsBlank(sheetData.value.contagion3)
- && stringIsBlank(sheetData.value.contagionQt)) {
- callback(new Error('至少选择一项'));
- } else {
- callback()
- }
- }
- const vaccinateFunc = (rule, value, callback) => {
- if (stringIsBlank(sheetData.value.vaccinate) && stringIsBlank(sheetData.value.vaccinate2)) {
- callback(new Error('至少选择一项'));
- } else {
- callback()
- }
- }
- const contagionMessage = '丙类,乙类,丙类,其他,任选其一'
- const rules = reactive({
- name: [{required: true, message: '该项不能为空', trigger: 'blur'}],
- illType: [{required: true, message: '该项不能为空', trigger: 'blur'}],
- sex: [{required: true, message: '该项不能为空', trigger: 'blur'}],
- birthDate: [{required: true, message: '该项不能为空', trigger: 'blur'}],
- relationTel: [{required: true, message: '该项不能为空', trigger: 'blur'}],
- scopeFlag: [{required: true, message: '该项不能为空', trigger: 'blur'}],
- occupationCode: [{required: true, message: '该项不能为空', trigger: 'blur'}],
- currentStreet: [{required: true, message: '该项不能为空', trigger: 'blur'}],
- vaccinate: [{validator: vaccinateFunc, message: '该项不能为空', trigger: 'blur'}],
- vaccinate2: [{validator: vaccinateFunc, message: '该项不能为空', trigger: 'blur'}],
- illStartDate: [{required: true, message: '该项不能为空', trigger: 'blur'}],
- illFirstDate: [{required: true, message: '该项不能为空', trigger: 'blur'}],
- contagion: [{message: contagionMessage, validator: contagionFunc, trigger: 'blur'}],
- contagion2: [{message: contagionMessage, validator: contagionFunc, trigger: 'blur'}],
- contagion3: [{message: contagionMessage, validator: contagionFunc, trigger: 'blur'}],
- contagionQt: [{message: contagionMessage, validator: contagionFunc, trigger: 'blur'}],
- })
- const rowClick = ({row}) => {
- sheetData.value = row
- }
- const newlyAddedClick = async () => {
- sheetData.value = {}
- await setDefault()
- }
- const query = async () => {
- infectiousDiseasesList.value = await getContagiousDiseaseByPatNo(props.patNo)
- }
- onMounted(async () => {
- await query()
- patInfo = await getSheetInfo({
- bah: props.patNo,
- times: props.times,
- inOutFlag: 1
- })
- await setDefault()
- })
- const formRef = ref(null)
- const confirm = async () => {
- try {
- await formRef.value.validate();
- if (stringIsBlank(sheetData.value.cardNo)) {
- await confirmCrb(sheetData.value)
- } else {
- await updateCrb(sheetData.value)
- }
- await query()
- await newlyAddedClick()
- } catch {
- xcMessage.error('有必填项不能为空。')
- }
- }
- const deleteClick = async (row) => {
- await ElMessageBox.confirm('是否要删除', '提示', {
- type: 'error',
- });
- let {patientId, times, cardNo} = row;
- await delCrb(patientId, times, cardNo);
- await query();
- await newlyAddedClick();
- }
- defineExpose({
- confirm
- })
- </script>
- <style scoped lang="scss">
- </style>
|