Browse Source

pacs

master
pengjun 1 year ago
parent
commit
f4d0fe0009
  1. 209
      src/components/doctorCheck/PacsDcmList.vue
  2. 79
      src/store/index.js

209
src/components/doctorCheck/PacsDcmList.vue

@ -5,10 +5,43 @@
</div>
<div style="display: flex;">
<div>
<iframe :src="iframeSrc" :height="window.pageHeight - 85" :width="window.pageWidth - 260"></iframe>
<iframe :src="iframeSrc" :height="window.pageHeight - 105" :width="window.pageWidth - 330"></iframe>
</div>
<div style="width: 240px;margin-left: 2px;">
<div style="margin-top: 5px;">
<div style="width: 310px;margin-left: 2px;">
<div style="display: flex;">
<el-select v-model="query.dateType" placeholder="请选择" style="width: 80px" size="small">
<el-option label="检查日期" value="0" />
<el-option label="上传日期" value="1" />
</el-select>
<el-date-picker v-model="query.startDate" type="date" placeholder="起始日期" size="small" style="width:90px;"
value-format="yyyy-MM-dd" :picker-options="pickerOptions" />
<span class="spanClass"></span>
<el-date-picker v-model="query.endDate" type="date" placeholder="截止日期" size="small" style="width:90px;"
value-format="yyyy-MM-dd" :picker-options="pickerOptions" />
<el-button icon="el-icon-search" @click="btnQuery" type="primary"
style="font-size: 20px;height:32px;min-width:30px; padding: 5px;z-index: 2;" size="small"></el-button>
</div>
<el-table :data="pacsList" style="width: 100%;" border highlight-current-row @row-click="rowClick"
:height="tableHeight" :row-style="{ height: '28px' }">
<el-table-column prop="patientName" label="姓名" min-width="80" align="center" />
<el-table-column prop="checkRequestNo" label="检查条码" min-width="120" align="center" />
<el-table-column prop="asbitemName" label="检查项目" show-overflow-tooltip min-width="200" />
<el-table-column prop="pacsCheckDate" label="检查日期" min-width="90" align="center">
<template slot-scope="scope">
{{ moment(scope.row.pacsCheckDate).format("yyyy-MM-DD") }}
</template>
</el-table-column>
<el-table-column prop="pacsUploadDate" label="上传日期" min-width="90" align="center">
<template slot-scope="scope">
{{ moment(scope.row.pacsUploadDate).format("yyyy-MM-DD") }}
</template>
</el-table-column>
</el-table>
<div v-if="false" style="margin-top: 5px;">
<span style="color: #232748;">人员信息</span>
<div style="display: flex;">
<span style="width: 80px;margin: 7px 0;">检查条码</span>
@ -33,13 +66,12 @@
<div style="margin-top: 5px;">
<span style="color: #232748;">检查结果</span>
<el-input style="width: 100%;border: 1px solid #232748;" type="textarea" v-model="pacsParams.result"
placeholder="请输入描述"
:autosize="{ minRows: Math.floor((window.pageHeight - 500) / 24), maxRows: 20 }" />
placeholder="请输入描述" size="small" :autosize="{ minRows: 10, maxRows: 10 }" />
</div>
<div style="margin-top: 5px;">
<span style="color: #232748;">检查结论</span>
<el-input style="width: 100%;border: 1px solid #232748;" type="textarea" v-model="pacsParams.summary"
placeholder="请输入结论" :autosize="{ minRows: 8, maxRows: 8 }" />
placeholder="请输入结论" size="small" :autosize="{ minRows: 6, maxRows: 6 }" />
</div>
<div style="display: flex;justify-content: space-between;margin-top: 10px;">
<div></div>
@ -47,10 +79,10 @@
<!--
<el-button type="primary" @click="btnTest" class="commonbutton">测试</el-button>
-->
<el-button type="primary" @click="btnChooseBigtext"
class="commonbutton">选择描述</el-button>
<el-button type="primary" @click="btnOkBigtext"
class="commonbutton">保存结果</el-button>
<el-button type="primary" @click="btnChooseBigtext" size="small" class="commonbutton"
:disabled="dataTransOpts.tableS.patient_register.completeFlag == '3'">选择描述</el-button>
<el-button type="primary" @click="btnOkBigtext" size="small" class="commonbutton"
:disabled="dataTransOpts.tableS.patient_register.completeFlag == '3'">保存结果</el-button>
</div>
</div>
</div>
@ -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);
// }
// },
},
};

79
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结果模版
}
},

Loading…
Cancel
Save