Browse Source

pacsText

master
pengjun 11 months ago
parent
commit
569e7c2432
  1. 2
      src/components/doctorCheck/CheckItemList.vue
  2. 340
      src/components/doctorCheck/PacsTemplate.vue

2
src/components/doctorCheck/CheckItemList.vue

@ -746,6 +746,7 @@ export default {
handlePacsResult(row, index, pacsResult) {
// console.log('row,index,pacsResult', row, index, pacsResult)
// this.doctorCheck.checkItemList[index].result = pacsResult.result;
/*
this.doctorCheck.checkSummaryList = [
{
id: Math.random(),
@ -754,6 +755,7 @@ export default {
summaryFlag: "N",
},
];
*/
this.dialogWinPacsTemplate = false;
},

340
src/components/doctorCheck/PacsTemplate.vue

@ -1,64 +1,101 @@
<template>
<div>
<div>
<el-table :data="bigTexts" style="width: 100%;" border highlight-current-row @row-click="rowClick"
height="300">
<el-table :data="bigTexts" style="width: 100%;" highlight-current-row @row-click="rowClick" height="260">
<el-table-column type="index" label="序号" width="40" align="center" />
<el-table-column prop="patientName" label="词条类别" min-width="80" align="center" />
<el-table-column prop="checkRequestNo" label="词条模版" min-width="100" align="center" />
<el-table-column prop="patientName" label="检查描述" min-width="380" />
<el-table-column prop="patientName" label="检查结论" min-width="180" />
<el-table-column prop="bigtextResultTypeName" label="词条类别" min-width="80" align="center" />
<el-table-column prop="bigtextResultTemplateName" label="词条模版" min-width="150" align="center" />
<el-table-column prop="bigtextResultConclusion" label="检查结论" min-width="150" align="center" />
<el-table-column prop="bigtextResultDescription" label="检查描述" min-width="400" />
</el-table>
</div>
<div style="display: flex;">
<div style="display: flex;margin-top: 5px;">
<div style="width: 49%;">
<!-- 多个检查明细 -->
<div>
<div style="display: flex; justify-content: space-between">
<div style="display: flex; justify-content: space-between;height: 20px;">
<div><span>检查结果</span></div>
<div>
<el-tooltip :content="`给 ${doctorCheck.checkItemList[refParams.index].itemName} 项目,赋默认结果`"
placement="top">
<el-tooltip :content="`给 ${doctorCheck.checkItemList[refParams.index].itemName} 项目,赋默认结果`" placement="top">
<i class="el-icon-edit" @click="btnDefResult(refParams.index)"
style="font-size: 18px;color: blue;cursor: pointer;margin-right: 10px;"></i>
</el-tooltip>
<el-tooltip :content="`清除 ${doctorCheck.checkItemList[refParams.index].itemName} 项目的检查结果`"
placement="top">
<el-tooltip :content="`清除 ${doctorCheck.checkItemList[refParams.index].itemName} 项目的检查结果`" placement="top">
<i class="el-icon-delete" @click="btnClear(refParams.index)"
style="font-size: 18px; color: red;cursor: pointer;margin-right: 10px;"></i>
</el-tooltip>
</div>
</div>
</div>
<div>
<el-input style="width: 100%" type="textarea" v-model="doctorCheck.checkItemList[refParams.index].result"
placeholder="请输入检查结果" :autosize="{ minRows: 10, maxRows: 10 }" />
</div>
</div>
<div style="margin-left: 10px; width: 49%;">
<span>检查结论</span>
<div style="display: flex; justify-content: space-between">
<el-input style="width: 100%" type="textarea" v-model="summary" placeholder="请输入结论"
:autosize="{ minRows: 10, maxRows: 10 }" />
<div style="margin-left: 8px; width: 50%;">
<div style="display: flex; justify-content: space-between;height: 20px;">
<div><span>检查结论</span></div>
<div>
<el-tooltip :content="`给 ${doctorCheck.checkItemList[refParams.index].itemName} 项目,赋默认结果`" placement="top">
<i class="el-icon-edit" @click="btnDefResult(refParams.index)"
style="font-size: 18px;color: blue;cursor: pointer;margin-right: 10px;"></i>
</el-tooltip>
<el-tooltip :content="`清除 ${doctorCheck.checkItemList[refParams.index].itemName} 项目的检查结果`" placement="top">
<i class="el-icon-delete" @click="btnClear(refParams.index)"
style="font-size: 18px; color: red;cursor: pointer;margin-right: 10px;"></i>
</el-tooltip>
</div>
</div>
<div>
<el-table id="tableSummary" row-key="id" :data="doctorCheck.checkSummaryList" size="samll" height="186"
width="100%" border>
<el-table-column width="30" align="center">
<template slot-scope="scope">
<el-tag class="moveSummary" style="height:25px;padding:0 2px;cursor: move;background-color: #EEEEEE;">
<div style="width: 16px;">{{ scope.$index + 1 }}</div>
</el-tag>
</template>
</el-table-column>
<el-table-column prop="summary" label="小结">
<template slot="header">
<div style="display: flex;justify-content:space-between;">
<div>小结</div>
<div></div>
</div>
</template>
<template slot-scope="scope">
<div style="display: flex;">
<el-input type="textarea" v-model="scope.row.summary" :autosize="{ minRows: 1, maxRows: 100 }"
placeholder="请输入小结">
</el-input>
<el-button type="danger" style="min-width:23px;padding:2px;" icon="el-icon-delete"
@click="delSum(scope.$index)" size="small"></el-button>
</div>
<div style="display: flex; justify-content: space-between; margin-top: 10px">
<div></div>
<div>
</template>
</el-table-column>
</el-table>
</div>
</div>
</div>
<!--可选结果-->
<div style="display: flex; justify-content: space-between; margin-top: 5px">
<div style="width: 730px;">
<el-table row-key="id" :data="resultOptRows" size="samll" width="100%" border>
<el-table-column v-for="col in resultOpts" :key="col.resultTemplate" width="120" align="left">
<template slot="header">{{ col.resultTemplate }}</template>
<template slot-scope="scope">
<el-radio-group v-model="scope.row[col.resultTemplate]" @input="radioGroupInput">
<div v-for="opt in col.opts" :key="opt" style="margin-left: 10px;">
<el-radio :label="opt" style="margin: 5px 0;">{{ opt }}</el-radio>
</div>
</el-radio-group>
</template>
</el-table-column>
</el-table>
</div>
<div style=" margin-top: 5px">
<!--
<el-button type="primary" @click="btnTest" class="commonbutton">测试</el-button>
-->
<el-tooltip content="清除所有检查项目描述及结论" placement="top">
<el-button type="primary" @click="btnClearAll" class="commonbutton">清除</el-button>
</el-tooltip>
<el-tooltip content="所有检查项目赋默认描述及结论" placement="top">
<el-button type="primary" @click="btnDefault" class="commonbutton">默认结果</el-button>
</el-tooltip>
<el-button type="primary" @click="btnOk" class="commonbutton">确定</el-button>
</div>
</div>
@ -68,6 +105,7 @@
import moment from "moment";
import { mapState } from "vuex";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { arrayExistObj } from "@/utlis/proFunc";
export default {
@ -75,13 +113,20 @@ export default {
props: ["refParams", "refFuncOther"],
data() {
return {
description: [], //
conclusion: [], //
descriptionChoosedPre: [], //
descriptionChoosed: [], //
conclusionChoosed: [], //
conclusionAll: [], //
bigTexts:[] //
bigTexts: [{
bigtextResultTypeName: "",
bigtextResultTemplateName: "",
bigtextResultConclusion: "",
bigtextResultDescription: ""
}], //
result: "", //
resultOpts: [
{ resultTemplate: "[A|B|C|D]", opts: ['A', 'B', 'C', 'D'], chooseOpt: 'A' }
], // [|]
resultOptRows: [
],
};
},
//<el-tree :data="$store.state.customerOrg.ref_tree" :props="$store.state.customerOrg.treeprops" @node-click="treeclick"></el-tree>
@ -100,20 +145,136 @@ export default {
methods: {
//
init() {
this.description = [];
this.result = this.doctorCheck.checkItemList[this.refParams.index].result
this.resultOpts = []
this.madeResultOpts()
let itemId = this.doctorCheck.checkItemList[this.refParams.index].itemId
postapi('/api/app/BigtextResultTemplate/GetBigtextResultTemplateWithDetail',)
//"itemId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
postapi('/api/app/BigtextResultTemplate/GetBigtextResultTemplateWithDetail', { itemId })
.then(res => {
if(res.code > -1){
if (res.code > -1) {
this.bigTexts = res.data
}
})
},
// [A|B|C|D]
madeResultOpts() {
this.resultOptRows = []
if (!this.result) return
let opts1 = this.result.split(']')
opts1.forEach(e => {
let opts2 = e.split('[')
if (opts2.length == 2) {
if (opts2[1].includes('|')) {
let resultTemplate = `[${opts2[1]}]`
let lfind = arrayExistObj(this.resultOpts, 'resultTemplate', resultTemplate)
if (lfind == -1) {
let opts = opts2[1].split('|')
let chooseOpt = ''
this.resultOpts.push({ resultTemplate, opts, chooseOpt })
}
}
}
});
let resultOptRow = { id: 1 }
if (this.resultOpts.length > 0) {
this.resultOpts.forEach(e => {
resultOptRow[e.resultTemplate] = e.chooseOpt
});
}
this.resultOptRows.push(resultOptRow)
},
// tab
dispLabel(itemName) {
return itemName.length > 5 ? itemName.substring(0, 4) + "…" : itemName;
//
radioGroupInput(v){
// console.log('radioGroupInput',this.resultOptRows,this.refParams.index)
let result = this.result
this.resultOpts.forEach(e => {
if(this.resultOptRows[0][e.resultTemplate]) result = result.replace(e.resultTemplate,this.resultOptRows[0][e.resultTemplate])
});
this.doctorCheck.checkItemList[this.refParams.index].result = result
},
// (true false)
rowClick(row) {
// bigtextResultTypeName: "",
// bigtextResultTemplateName: "",
// bigtextResultConclusion: "",
// bigtextResultDescription: ""
let chooseOpra = true
let conclusions = []
let result = this.doctorCheck.checkItemList[this.refParams.index].result
if (result) {
if (result == this.doctorCheck.checkItemList[this.refParams.index].defaultResult) {
chooseOpra = true
result = row.bigtextResultDescription
} else {
//
if (result.includes(row.bigtextResultDescription)) {
return //
// chooseOpra = false
// result = result.replaceAll(`${row.bigtextResultDescription}`, '').replaceAll(`${row.bigtextResultDescription}`, '').replaceAll(`${row.bigtextResultDescription}`, '')
// if (!result) result = this.doctorCheck.checkItemList[this.refParams.index].defaultResult
} else {
chooseOpra = true
result += ";" + row.bigtextResultDescription
}
}
} else {
chooseOpra = true
result = row.bigtextResultDescription
}
this.doctorCheck.checkItemList[this.refParams.index].result = result
this.result = result
this.madeResultOpts()
if (row.bigtextResultConclusion) conclusions = row.bigtextResultConclusion.split(";")
if (conclusions.length > 0) {
let lfind = -1
conclusions.forEach(e => {
if (chooseOpra) {
lfind = -1
this.doctorCheck.checkSummaryList.forEach(c => {
if (c.summary == e) lfind = 1
});
//
if (lfind == -1) {
this.doctorCheck.checkSummaryList.push({
id: Math.random(),
registerCheckId: this.doctorCheck.RegisterCheckEdit.id,
summary: e,
summaryFlag: 'N',
})
}
} else {
if (this.doctorCheck.checkSummaryList.length > 0) {
for (let i = this.doctorCheck.checkSummaryList.length - 1; i > -1; i--) {
if (e == this.doctorCheck.checkSummaryList[i].summary) this.doctorCheck.checkSummaryList.splice(i, 1)
}
}
}
});
}
},
//
delSum(index) {
this.$confirm("此操作将删除该记录, 是否继续?", "提示", {
confirmButtonText: "是",
cancelButtonText: "否",
type: "warning",
}).then(() => {
this.doctorCheck.checkSummaryList.splice(index, 1);
}).catch(err => {
if (err == "cancel") {
// this.$message.info("");
console.log('已取消删除')
}
});
},
//
@ -144,90 +305,6 @@ export default {
// truefalse
chooseDescription(opraType) {
let bfind = false;
let result =
this.doctorCheck.checkItemList[parseInt(this.tabChoosed)].result;
this.description.forEach((e) => {
bfind = result.includes(e.description);
if (opraType) {
if (!bfind) {
if (result) {
if (
result ==
this.doctorCheck.checkItemList[parseInt(this.tabChoosed)]
.defaultResult
) {
result = e.description;
} else {
result += ";" + e.description;
}
} else {
result = e.description;
}
}
} else {
if (bfind)
result = result
.replaceAll(e.description + ";", "")
.replaceAll(e.description, "");
}
});
// ;
if (result.substring(result.length - 1) == ";") {
result = result.substring(0, result.length - 1);
}
this.doctorCheck.checkItemList[parseInt(this.tabChoosed)].result = result;
},
// truefalse
chooseConclusion(opraType) {
let lfind = 0;
let summarys = this.summary.split(";");
this.conclusion.forEach((e) => {
lfind = summarys.indexOf(e.conclusion);
if (opraType) {
if (lfind == -1 && e.isAbnormal == "Y") summarys.push(e.conclusion);
} else {
if (lfind > -1) summarys.splice(lfind, 1);
}
});
let summary = "";
//
summarys.forEach((e) => {
if (!(e.includes("未见异常") || e.includes("未见明显异常"))) {
if (summary) {
summary += ";" + e;
} else {
summary = e;
}
}
});
this.summary = summary;
//
if (!this.summary) {
if (this.doctorCheck.checkItemList.length > 0) this.summary = this.doctorCheck.checkItemList[0].result;
}
},
btnTest() {
console.log("this.descriptionChoosed", this.descriptionChoosed);
console.log("this.conclusionChoosed", this.conclusionChoosed);
},
//
btnClearAll() {
this.doctorCheck.checkItemList.forEach((e) => {
e.result = "";
});
this.summary = "";
},
//
btnClear(seq) {
@ -240,13 +317,6 @@ export default {
this.doctorCheck.checkItemList[seq].defaultResult;
},
//
btnDefault() {
this.doctorCheck.checkItemList.forEach((e) => {
e.result = e.defaultResult;
});
this.summary = "未见异常";
},
//
btnOk() {

Loading…
Cancel
Save