From f4d0fe00092cc3b665c050cf4d9e12bba896ac77 Mon Sep 17 00:00:00 2001 From: pengjun <158915633@qq.com> Date: Tue, 24 Sep 2024 15:17:14 +0800 Subject: [PATCH] pacs --- src/components/doctorCheck/PacsDcmList.vue | 209 ++++++++++++++++----- src/store/index.js | 79 ++++++-- 2 files changed, 225 insertions(+), 63 deletions(-) diff --git a/src/components/doctorCheck/PacsDcmList.vue b/src/components/doctorCheck/PacsDcmList.vue index 32de7b7..7f8bea1 100644 --- a/src/components/doctorCheck/PacsDcmList.vue +++ b/src/components/doctorCheck/PacsDcmList.vue @@ -5,10 +5,43 @@
- +
-
-
+
+
+ + + + + + + + + + +
+ + + + + + + + + + + + + +
人员信息:
检查条码 @@ -33,13 +66,12 @@
检查结果: + placeholder="请输入描述" size="small" :autosize="{ minRows: 10, maxRows: 10 }" />
检查结论: + placeholder="请输入结论" size="small" :autosize="{ minRows: 6, maxRows: 6 }" />
@@ -47,10 +79,10 @@ - 选择描述 - 保存结果 + 选择描述 + 保存结果
@@ -84,7 +116,17 @@ export default { routeUrlorPageName: 'doctorCheck', //当前页面归属路由或归属页面权限名称 privs: [] // 页面权限 }, - + query: { + patientName: "", + checkRequestNo: "", + dateType: "1", + startDate: "", + endDate: "", + maxResultCount: 1000, + skipCount: 0 + }, + doctorCheckEdit: {}, + pacsList: [], checkRequestNo: '', dialogDcm: false, iframeSrc: '', @@ -96,29 +138,6 @@ export default { result: '', summary: '' }, - - - checkPictures: [ - // { - // id: "1", - // registerCheckId: "registerCheckId", - // isPrint: "Y", - // isPrintTrans: true, - // pictureFilename: - // "https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg", - // }, - // { - // id: "2", - // registerCheckId: "registerCheckId", - // isPrint: "Y", - // isPrintTrans: true, - // pictureFilename: - // "https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg", - // }, - ], - //图片上传 - dialogCheckPictureUpload: false, - uploadSeq: 0, //第几次点图片上传,每点一次清空前次所选图片 }; }, @@ -132,11 +151,14 @@ export default { //挂载完成 mounted() { - this.getCheckPictures(this.dataTransOpts.tableS.register_check.id); + let today = moment(new Date()).format("yyyy-MM-DD") + this.query.startDate = today + this.query.endDate = today }, computed: { ...mapState([ + "pickerOptions", "window", "dict", "dialogWin", @@ -148,14 +170,35 @@ export default { lmoment(date, forMat) { return moment(new Date(date)).format(forMat); }, + tableHeight() { + return this.window.pageHeight - 105 - 400 - 76 + }, }, methods: { - checkPagePriv, + checkPagePriv, moment, + + btnQuery() { + let body = Object.assign({}, this.query) + if (!body.checkRequestNo) delete body.checkRequestNo + if (!body.patientName) delete body.patientName + if (!body.startDate || !body.endDate) { + this.$message.warning({ showClose: true, message: '请选择日期' }) + return + } + postapi('/api/app/PacsBusiness/GetPatientRegisterPacsCheck', body) + .then(res => { + if (res.code > -1) this.pacsList = res.data.items + }) + }, + rowClick(row) { + this.onQueryByPacsNo(row.checkRequestNo) + }, // 浏览Dcm文件 btnBrowseDcm() { - this.checkRequestNo = this.doctorCheck.checkRequestNo + // console.log('this.doctorCheck', this.doctorCheck.RegisterCheckEdit) + this.checkRequestNo = this.doctorCheck.RegisterCheckEdit.checkRequestNo this.pacsParams.result = this.doctorCheck.checkItemList[0].result let summary = '' this.doctorCheck.checkSummaryList.forEach(e => { @@ -168,7 +211,7 @@ export default { // console.log('pacsParams', this.pacsParams) let token = window.sessionStorage.getItem('token') - this.iframeSrc = `${this.sysConfig.dcmViewers}/?mrn=${this.doctorCheck.checkRequestNo}&token=${token}&pacsapi=${this.sysConfig.pacsApi}` + this.iframeSrc = `${this.sysConfig.dcmViewers}/?mrn=${this.doctorCheck.RegisterCheckEdit.checkRequestNo}&token=${token}&pacsapi=${this.sysConfig.pacsApi}` // this.iframeSrc = `${this.sysConfig.dcmViewers}/viewer?StudyInstanceUIDs=1.3.12.2.1107.5.1.4.79623.30000024091203062645300000022` this.dialogDcm = true @@ -183,7 +226,7 @@ export default { // 确定描述与结论 btnOkBigtext() { - console.log('this.pacsParams', this.pacsParams) + // console.log('this.pacsParams', this.pacsParams) this.doctorCheck.checkItemList[0].result = this.pacsParams.result this.doctorCheck.checkSummaryList = [{ id: Math.random(), @@ -191,8 +234,75 @@ export default { summary: this.pacsParams.summary, summaryFlag: 'N', }] + + this.save() + + }, + + //保存数据 + save() { + + let checkDate = this.doctorCheck.RegisterCheckEdit.checkDate || new Date(); + checkDate = moment(new Date(checkDate)).format('yyyy-MM-DD HH:mm:ss'); //yyyy-MM-DD HH:mm:ss + let checkDoctorId = this.doctorCheck.RegisterCheckEdit.checkDoctorId || null; + let registerCheckId = this.doctorCheck.RegisterCheckEdit.id + // 明细 + let registerCheckItems = [] + this.doctorCheck.checkItemList.forEach(e => { + registerCheckItems.push({ + itemId: e.itemId, + result: e.result, + checkDoctorName: checkDoctorId, + checkDate, + }) + }); + // 小结 + let summarys = [] + this.doctorCheck.checkSummaryList.forEach(item => { + summarys.push({ + summary: item.summary, + summaryFlag: item.summaryFlag, + }) + }); + // 建议 + let suggestions = [] + this.doctorCheck.checkSuggestionList.forEach(item => { + suggestions.push({ + suggestion: item.suggestion + }) + }); + + let body = { + registerCheckId, + checkDoctorId, + checkDate, + registerCheckItems, + summarys, + suggestions + } + + + if (summarys.length == 0) { + this.$message.warning({ showClose: true, message: '请生成小结!' }) + return + } + + postapi('/api/app/registercheck/UpdateCheckResult', body) + .then(res => { + if (res.code > -1) { + this.doctorCheck.RegisterCheckEdit.completeFlag = '1'; + //更新组合项目列表记录状态 + let lfind = arrayExistObj(this.doctorCheck.RegisterCheckList, 'id', body.registerCheckId) + if (lfind > -1) this.doctorCheck.RegisterCheckList[lfind].completeFlag = '1' + + console.log('操作成功') + } else { + this.$message.error({ showClose: true, message: res.message }) + } + }) }, + // 处理 pacs 结果录入的情况 handlePacsResult(row, index, pacsResult) { Object.assign(this.pacsParams, pacsResult) @@ -202,13 +312,15 @@ export default { // 通过检查条码查询相关数据 onQueryByPacsNo(checkRequestNo) { this.checkRequestNo = checkRequestNo - this.$refs['checkRequestNo'].select() postapi('/api/app/PacsBusiness/GetPatientRegisterWithCheckResultByCheckRequestNo', { checkRequestNo }) .then(res => { if (res.code > -1) { // 人员信息 this.dataTransOpts.tableS.patient_register = res.data.patientRegisterDetail + // 检查信息 + this.doctorCheck.RegisterCheckEdit = res.data.registerCheckDetail + // 组合项目 this.doctorCheck.RegisterCheckList = [res.data.registerCheckDetail] @@ -238,21 +350,18 @@ export default { }, - onFocus(event) { - this.$refs['checkRequestNo'].select() - } }, //监听事件 watch: { //检查项目未切换换时 也可以强制刷新数据 - "dataTransOpts.refresh.register_check_item.M": { - // immediate: true, - handler(newVal, oldVal) { - console.log(`watch 检查图片 newVal:${newVal} oldVal:${oldVal} registerCheckId: ${this.dataTransOpts.tableS.register_check.id}`); - if (newVal != oldVal) this.getCheckPictures(this.dataTransOpts.tableS.register_check.id); - } - }, + // "dataTransOpts.refresh.register_check_item.M": { + // // immediate: true, + // handler(newVal, oldVal) { + // console.log(`watch 检查图片 newVal:${newVal} oldVal:${oldVal} registerCheckId: ${this.dataTransOpts.tableS.register_check.id}`); + // if (newVal != oldVal) this.getCheckPictures(this.dataTransOpts.tableS.register_check.id); + // } + // }, }, }; diff --git a/src/store/index.js b/src/store/index.js index 8c21a2b..3075286 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -8,6 +8,59 @@ Vue.use(Vuex); export default new Vuex.Store({ state: { sysConfig: { apiurl: '' }, // + pickerOptions: { + disabledDate(time) { + return time.getTime() > Date.now(); + }, + shortcuts: [{ + text: '今天', + onClick(picker) { + picker.$emit('pick', new Date()); + } + }, { + text: '昨天', + onClick(picker) { + const date = new Date(); + date.setTime(date.getTime() - 3600 * 1000 * 24); + picker.$emit('pick', date); + } + }, { + text: '一周前', + onClick(picker) { + const date = new Date(); + date.setTime(date.getTime() - 3600 * 1000 * 24 * 7); + picker.$emit('pick', date); + } + }, { + text: '半月前', + onClick(picker) { + const date = new Date(); + date.setTime(date.getTime() - 3600 * 1000 * 24 * 15); + picker.$emit('pick', date); + } + }, { + text: '一月前', + onClick(picker) { + const date = new Date(); + date.setTime(date.getTime() - 3600 * 1000 * 24 * 30); + picker.$emit('pick', date); + } + }, { + text: '半年前', + onClick(picker) { + const date = new Date(); + date.setTime(date.getTime() - 3600 * 1000 * 24 * 183); + picker.$emit('pick', date); + } + }, { + text: '一年前', + onClick(picker) { + const date = new Date(); + date.setTime(date.getTime() - 3600 * 1000 * 24 * 365); + picker.$emit('pick', date); + } + }] + }, changepassword: '', //用户密码 set: "qqqq", importexcel: { @@ -67,7 +120,7 @@ export default new Vuex.Store({ //体检人员登记 add by pengjun patientRegister: { - customerOrgs:[], // 体检单位列表(含个人)列表 + customerOrgs: [], // 体检单位列表(含个人)列表 customerOrgTreeAll: [], //体检单位列表(含个人)树 patientRegisterId: "", //当前人员ID(可根据此值是否为空,判断是新增还是编辑) patientRegisterTimes: 0, //体检人员登记窗口显示次数(弃用) @@ -136,7 +189,7 @@ export default new Vuex.Store({ CustomerOrgParentId: "", //单位父级ID customerOrgFlag: true, //单位作为查询条件 customerOrgRegister: { id: '' }, //单位体检次数 - customerOrgGroupIds:[], //体检分组 + customerOrgGroupIds: [], //体检分组 checkAsbs: null, patientRegisterNo: '', pacsNo: '', @@ -175,7 +228,7 @@ export default new Vuex.Store({ RegisterCheckId: '', // checkItemList: [], //组合项目包含的明细项目 checkItem: {}, //单项目记录 - preResult:{}, // 上次结果 + preResult: {}, // 上次结果 checkSummaryList: [], //小结 checkSuggestionList: [], //建议 }, @@ -308,7 +361,7 @@ export default new Vuex.Store({ { id: "0", displayName: "普通" }, { id: "1", displayName: "采血室" } ], - queueFlag:[ + queueFlag: [ { id: "0", displayName: "候诊" }, { id: "1", displayName: "已呼" }, { id: "2", displayName: "过号" }, @@ -431,19 +484,19 @@ export default new Vuex.Store({ appoint_register_asbitem: [], // 预约所选组合项目 room: [], // 房间 room_detail: [], // 房间关联组合项目 - common_table:[], // 公共表 + common_table: [], // 公共表 }, plus: { PatientRegisterEditQuery: 0, // 更新查询条件 clearPatientRegisterQuery: 0, // 清空人员登记界面查询条件(重新赋值体检单位) PatientRegisterEditGroupBatch: 0, // 刷新批量调整分组窗口 PatientRegisterEditItemBatch: 0, // 刷新批量调整项目窗口 - PatientRegisterEditDoctorBatch:0, // 刷新批量调整项目检查医生窗口 + PatientRegisterEditDoctorBatch: 0, // 刷新批量调整项目检查医生窗口 PatientRegisterForChoose: 0, // 体检人员查询窗口 OccDisease: 0, // 职业病 WebBooking: 0, // 网上预约 ImportOrgData: 0, // 导入企业(青藏公司)数据 - queue:0, // 排队信息 + queue: 0, // 排队信息 } }, @@ -466,12 +519,12 @@ export default new Vuex.Store({ Label: false, // 补打条码 WebBooking: false, // 网上预约 ImportOrgData: false, // 导入企业(青藏公司)数据 - RoomEdit:false, //房间 - queue:false, // 排队信息 - FollowCriticalCheck:false, // 危急值 - CommonTableTypeEdit:false, //公共表类别 - CommonTableEdit:false, //公共表 - PacsTemplate:false, // pacs结果模版 + RoomEdit: false, //房间 + queue: false, // 排队信息 + FollowCriticalCheck: false, // 危急值 + CommonTableTypeEdit: false, //公共表类别 + CommonTableEdit: false, //公共表 + PacsTemplate: false, // pacs结果模版 } },