Browse Source

前台诊疗档案修改点同步到后台

newMaster
1747191978@qq.com 3 months ago
parent
commit
17b3706bd9
  1. 2
      acupuncture-前台/src/views/medicalFile/index.vue
  2. 12
      acupuncture-后台/src/api/medicalFile.js
  3. 21
      acupuncture-后台/src/views/indexCom/JM.vue
  4. 1
      acupuncture-后台/src/views/medicalFile/components/insomnia/PHQ-9.vue
  5. 1
      acupuncture-后台/src/views/medicalFile/components/insomnia/PSQI.vue
  6. 0
      acupuncture-后台/src/views/medicalFile/components/insomnia/epworth.vue
  7. 394
      acupuncture-后台/src/views/medicalFile/components/posture/SRS22.vue
  8. BIN
      acupuncture-后台/src/views/medicalFile/components/posture/TAPS.png
  9. 146
      acupuncture-后台/src/views/medicalFile/components/posture/TAPS.vue
  10. 146
      acupuncture-后台/src/views/medicalFile/components/posture/TRACE.vue
  11. 1267
      acupuncture-后台/src/views/medicalFile/details.vue
  12. 15
      acupuncture-后台/src/views/medicalFile/index.vue

2
acupuncture-前台/src/views/medicalFile/index.vue

@ -390,7 +390,7 @@
<el-button
size="mini"
type="text"
icon="el-icon-notebook-2"
icon="el-icon-document-copy"
@click="handleReport(scope.row)"
v-hasPermi="['medicalFile:index:report']"
>评估报告单</el-button

12
acupuncture-后台/src/api/medicalFile.js

@ -39,7 +39,7 @@ export function queryRecord(data) {
method: "post",
data: data,
});
}// 档案详情
} // 档案详情
export function saveAidRecord(data) {
return request({
url: "/admin/treatment/saveAidRecord",
@ -55,4 +55,12 @@ export function queueAdd(data) {
method: "post",
data: data,
});
}
}
// 评估报告单
export function exportTreatmentPg(data) {
return request({
url: "/admin/treatment/exportTreatmentPg",
method: "post",
data: data,
});
}

21
acupuncture-后台/src/views/indexCom/JM.vue

@ -16,26 +16,27 @@
<div style="flex: 1; margin-right: 20px">
<el-card shadow="always">
<div class="dis title-box">
<span class="header-title">分布</span>
<span class="header-title">分布</span>
<div class="dis"></div>
</div>
<div style="height: 300px" v-loading="loading">
<div id="system" style="width: 100%"></div>
<div id="physique" style="width: 100%"></div>
</div>
</el-card>
</div>
<div style="flex: 1; margin-right: 20px">
<el-card shadow="always">
<div class="dis title-box">
<span class="header-title">分布</span>
<span class="header-title">分布</span>
<div class="dis"></div>
</div>
<div style="height: 300px" v-loading="loading">
<div id="physique" style="width: 100%"></div>
<div id="system" style="width: 100%"></div>
</div>
</el-card>
</div>
<div style="flex: 1; margin-right: 20px">
<!-- <div style="flex: 1; margin-right: 20px">
<el-card shadow="always">
<div class="dis title-box">
<span class="header-title">体态评估TAPS</span>
@ -45,8 +46,8 @@
<div id="posture" style="width: 100%"></div>
</div>
</el-card>
</div>
<div style="flex: 1; margin-right: 20px">
</div> -->
<div style="flex: 1">
<el-card shadow="always">
<div class="dis title-box">
<span class="header-title">失眠评估PHQ-9</span>
@ -57,7 +58,7 @@
</div>
</el-card>
</div>
<div style="flex: 1">
<!-- <div style="flex: 1">
<el-card shadow="always">
<div class="dis title-box">
<span class="header-title">焦虑HAMD-24</span>
@ -67,7 +68,7 @@
<div id="anxiety" style="width: 100%"></div>
</div>
</el-card>
</div>
</div> -->
</div>
</div>
<!-- <div class="app-container">
@ -413,7 +414,7 @@ export default {
display: inline-block;
height: 20px;
width: 6px;
background: #4f8bff;
background: #70483e;
margin-right: 10px;
border-radius: 8px;
}

1
acupuncture-后台/src/views/medicalFile/components/posture/PHQ-9.vue → acupuncture-后台/src/views/medicalFile/components/insomnia/PHQ-9.vue

@ -141,7 +141,6 @@ export default {
};
},
created() {
console.log("this.scaleCode", this.scaleCode);
this.treatmentId = this.$route.query.treatmentId; // id
let scaleData = localStorage.getItem("scaleData"); //
// scaleData

1
acupuncture-后台/src/views/medicalFile/components/posture/PSQI.vue → acupuncture-后台/src/views/medicalFile/components/insomnia/PSQI.vue

@ -123,7 +123,6 @@ export default {
if (!this.scaleData[this.treatmentId]) {
this.scaleData[this.treatmentId] = {};
}
this.form = this.scaleData[this.treatmentId][this.scaleCode] || {}; // form
},
methods: {

0
acupuncture-后台/src/views/medicalFile/components/posture/epworth.vue → acupuncture-后台/src/views/medicalFile/components/insomnia/epworth.vue

394
acupuncture-后台/src/views/medicalFile/components/posture/SRS22.vue

@ -0,0 +1,394 @@
<template>
<div>
<div>
<div
class="item-container"
v-for="(item, index) in questions"
:key="index"
>
<div class="item-title">{{ item.index }}. {{ item.question }}</div>
<div class="item-radio-box">
<el-radio-group v-model="form[`topic${item.index}`]">
<el-radio
v-for="(criteria, index) in item.criteria"
:key="index"
:label="criteria.value"
>{{ criteria.label }}
</el-radio>
</el-radio-group>
</div>
</div>
<div class="submit-box">
<el-button class="submit-box-but" type="primary" @click="submitForm"
>提交</el-button
>
</div>
</div>
</div>
</template>
<script>
export default {
name: "PHQ9",
props: ["scaleCode"],
data() {
return {
form: {},
questions: [
{
index: 1,
question: "以下哪一项能够最准确描述你在过去六个月所感受到的疼痛",
criteria: [
{ label: "无疼痛", value: 1 },
{ label: "轻微", value: 2 },
{ label: "中等", value: 3 },
{ label: "中等至严重", value: 4 },
{ label: "严重", value: 5 },
],
},
{
index: 2,
question: "以下哪一项能够最准确描述你在过去一个月所感受到的疼痛",
criteria: [
{ label: "无疼痛", value: 1 },
{ label: "轻微", value: 2 },
{ label: "中等", value: 3 },
{ label: "中等至严重", value: 4 },
{ label: "严重", value: 5 },
],
},
{
index: 3,
question: "总体来说,在过去六个月期间你感到十分焦虑吗",
criteria: [
{ label: "完全没有", value: 1 },
{ label: "小部分时间", value: 2 },
{ label: "有时", value: 3 },
{ label: "大部分时间", value: 4 },
{ label: "全部时间", value: 5 },
],
},
{
index: 4,
question:
"如果你必须在背部维持现状不变的情况下继续生活,你会有什么感受",
criteria: [
{ label: "十分愉快", value: 1 },
{ label: "某种程度上愉快", value: 2 },
{ label: "没有愉快或不愉快", value: 3 },
{ label: "某种程度不愉快", value: 4 },
{ label: "十分不愉快", value: 5 },
],
},
{
index: 5,
question: "你现时的活动能力如何",
criteria: [
{ label: "只限于床上", value: 1 },
{ label: "基本上不活动", value: 2 },
{ label: "轻度的运动及劳动,如家务活", value: 3 },
{ label: "中度的运动及劳动,如骑车", value: 4 },
{ label: "活动不受限制", value: 5 },
],
},
{
index: 6,
question: "你在穿上衣服后的外观如何",
criteria: [
{ label: "很好", value: 1 },
{ label: "好", value: 2 },
{ label: "可以接受", value: 3 },
{ label: "差劲", value: 4 },
{ label: "十分差劲", value: 5 },
],
},
{
index: 7,
question:
"在过去六个月期间你曾感到十分沮丧以至于任何事物也不能让你开心吗",
criteria: [
{ label: "总是", value: 1 },
{ label: "经常", value: 2 },
{ label: "有时", value: 3 },
{ label: "很少数时间", value: 4 },
{ label: "完全没有", value: 5 },
],
},
{
index: 8,
question: "你在休息时背部有疼痛吗",
criteria: [
{ label: "总是有", value: 1 },
{ label: "经常有", value: 2 },
{ label: "有时有", value: 3 },
{ label: "很少数时间有", value: 4 },
{ label: "完全没有", value: 5 },
],
},
{
index: 9,
question: "你现阶段在工作单位/学校的活动能力为多少",
criteria: [
{ label: "正常的100%", value: 1 },
{ label: "正常的75%", value: 2 },
{ label: "正常的50%", value: 3 },
{ label: "正常的25%", value: 4 },
{ label: "正常的0%", value: 5 },
],
},
{
index: 10,
question: "以下哪一项最能够描述你躯干的外观",
criteria: [
{ label: "很好", value: 1 },
{ label: "好", value: 2 },
{ label: "可以接受", value: 3 },
{ label: "差劲", value: 4 },
{ label: "十分差劲", value: 5 },
],
},
{
index: 11,
question: "下列哪一项最能准确地描述你因背部疼痛而所需要服用的药物",
criteria: [
{ label: "无", value: 1 },
{ label: "一般止痛药(每星期服用一次或更少)", value: 2 },
{ label: "一般止痛药(天天服用)", value: 3 },
{ label: "特效止痛药(每星期服用一次或更少)", value: 4 },
{ label: "特效止痛药(天天服用)", value: 5 },
],
},
{
index: 12,
question: "你的背部疼痛是否影响你做家务的能力",
criteria: [
{ label: "没有影响", value: 1 },
{ label: "少许影响", value: 2 },
{ label: "有时有影响", value: 3 },
{ label: "常有影响", value: 4 },
{ label: "总是有影响", value: 5 },
],
},
{
index: 13,
question: "总体来说,你在过去六个月期间感到安宁和平静吗",
criteria: [
{ label: "一直", value: 1 },
{ label: "大多数时间", value: 2 },
{ label: "有时", value: 3 },
{ label: "很少数时间", value: 4 },
{ label: "完全没有", value: 5 },
],
},
{
index: 14,
question: "你是否感到你背部的状况对你的人际关系构成影响",
criteria: [
{ label: "没有影响", value: 1 },
{ label: "少许影响", value: 2 },
{ label: "某种程度上有影响", value: 3 },
{ label: "很大程度上有影响", value: 4 },
{ label: "非常有影响", value: 5 },
],
},
{
index: 15,
question: "你以及/或你家人是否因为你背部的问题而在经济方面遇到困难",
criteria: [
{ label: "极有", value: 1 },
{ label: "很大程度上有", value: 2 },
{ label: "某种程度上有", value: 3 },
{ label: "少许", value: 4 },
{ label: "没有", value: 5 },
],
},
{
index: 16,
question: "总体来说,在过去六个月时间你是否感到失落和灰心",
criteria: [
{ label: "完全没有", value: 1 },
{ label: "很少数时间", value: 2 },
{ label: "有时", value: 3 },
{ label: "经常", value: 4 },
{ label: "绝大多数时间", value: 5 },
],
},
{
index: 17,
question:
"在过去三个月时间你是否因背痛而向学校/公司请假?如有,共有多少天",
criteria: [
{ label: "0天", value: 1 },
{ label: "1天", value: 2 },
{ label: "2天", value: 3 },
{ label: "3天", value: 4 },
{ label: "4天或以上", value: 5 },
],
},
{
index: 18,
question: "你背部的状况是否阻碍你和家人/朋友外出",
criteria: [
{ label: "从来没有", value: 1 },
{ label: "很少数时间", value: 2 },
{ label: "有时", value: 3 },
{ label: "经常", value: 4 },
{ label: "总是", value: 5 },
],
},
{
index: 19,
question: "你现在背部的状况是否让你觉得自己仍有吸引力",
criteria: [
{ label: "是,很有吸引力", value: 1 },
{ label: "是,某种程度上有吸引力", value: 2 },
{ label: "可能有,也可能没有", value: 3 },
{ label: "否,没有什么吸引力", value: 4 },
{ label: "否,完全没有吸引力", value: 5 },
],
},
{
index: 20,
question: "总体来说,你在过去的六个月里感到愉快吗",
criteria: [
{ label: "完全没有", value: 1 },
{ label: "很少数时间", value: 2 },
{ label: "有时", value: 3 },
{ label: "大多数时间", value: 4 },
{ label: "所有时间", value: 5 },
],
},
{
index: 21,
question: "你对你背部治疗的成效感到满意吗",
criteria: [
{ label: "十分满意", value: 1 },
{ label: "满意", value: 2 },
{ label: "满意,也可能不满意", value: 3 },
{ label: "不满意", value: 4 },
{ label: "非常不满意", value: 5 },
],
},
{
index: 22,
question: "如果你的背部再次遇到同类情况你是否接受同样的治疗",
criteria: [
{ label: "一定会", value: 1 },
{ label: "可能会", value: 2 },
{ label: "不清楚", value: 3 },
{ label: "可能不会", value: 4 },
{ label: "一定不会", value: 5 },
],
},
],
scaleData: {},
};
},
created() {
this.treatmentId = this.$route.query.treatmentId; // id
let scaleData = localStorage.getItem("scaleData"); //
// scaleData
this.scaleData = scaleData
? JSON.parse(scaleData)
: {
[this.treatmentId]: {},
};
// scaleData[this.treatmentId]
if (!this.scaleData[this.treatmentId]) {
this.scaleData[this.treatmentId] = {};
}
this.form = this.scaleData[this.treatmentId][this.scaleCode] || {}; // form
},
methods: {
//
//
//
// SRS-22
submitForm() {
let score = 0;
// / 59121518
// 1281117
// / 46101419
// 37131620
// 2122
// 2.
//
//
const calculateDimensionScore = (questionIndices) => {
let sum = 0;
let count = 0;
questionIndices.forEach((index) => {
if (this.form[`topic${index}`] !== undefined) {
sum += this.form[`topic${index}`];
count++;
}
});
return count > 0 ? sum / count : 0;
};
//
const dimensions = {
function: [5, 9, 12, 15, 18], // /
pain: [1, 2, 8, 11, 17], //
appearance: [4, 6, 10, 14, 19], // /
mentalHealth: [3, 7, 13, 16, 20], //
satisfaction: [21, 22], //
};
//
const dimensionScores = {
function: calculateDimensionScore(dimensions.function),
pain: calculateDimensionScore(dimensions.pain),
appearance: calculateDimensionScore(dimensions.appearance),
mentalHealth: calculateDimensionScore(dimensions.mentalHealth),
satisfaction: calculateDimensionScore(dimensions.satisfaction),
};
// 3.
// SRS-22
//
const totalScore =
(dimensionScores.function +
dimensionScores.pain +
dimensionScores.appearance +
dimensionScores.mentalHealth +
dimensionScores.satisfaction) /
5;
console.log("totalScore", totalScore);
//
this.scaleData[this.treatmentId][this.scaleCode] = this.form;
localStorage.setItem("scaleData", JSON.stringify(this.scaleData));
// //
this.$emit("getScaleResult", totalScore, this.scaleCode);
},
},
};
</script>
<style scoped src="@/assets/styles/common.css"></style>
<style scoped>
.item-title {
font-size: 20px;
font-weight: bold;
color: #3d3d3d;
line-height: 26px;
}
.item-radio-box {
margin: 16px 0px;
}
>>> .el-radio__label {
font-size: 18px;
color: #555555;
line-height: 20px;
}
.submit-box {
display: flex;
justify-content: center;
align-items: center;
.submit-box-but {
width: 200px;
}
}
</style>

BIN
acupuncture-后台/src/views/medicalFile/components/posture/TAPS.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

146
acupuncture-后台/src/views/medicalFile/components/posture/TAPS.vue

@ -0,0 +1,146 @@
<template>
<div>
<!--
1. 后方视角SET 1
图形1 图形2 图形3 图形4 图形5
2. 弯腰时从上方视角SET 2
图形1 图形2 图形3 图形4 图形5
3. 前方视角根据性别选择 SET 3
图形1 图形2 图形3 图形4 图形5
-->
<div>
<div style="">
<img src="./TAPS.png" alt="" />
</div>
<div
class="item-container"
v-for="(item, index) in questions"
:key="index"
>
<div class="item-title">{{ item.index }}. {{ item.question }}</div>
<div class="item-radio-box">
<el-radio-group v-model="form[`topic${item.index}`]">
<el-radio
v-for="(criteria, index) in item.criteria"
:key="index"
:label="criteria.value"
>{{ criteria.label }}
</el-radio>
</el-radio-group>
</div>
</div>
<div class="submit-box">
<el-button class="submit-box-but" type="primary" @click="submitForm"
>提交</el-button
>
</div>
</div>
</div>
</template>
<script>
export default {
name: "phq",
props: ["scaleCode"],
data() {
return {
form: {},
questions: [
{
index: 1,
question: "后方视角(SET 1)",
criteria: [
{ label: "图形1", value: 1 },
{ label: "图形2", value: 2 },
{ label: "图形3", value: 3 },
{ label: "图形4", value: 4 },
{ label: "图形5", value: 5 },
],
},
{
index: 2,
question: "弯腰时从上方视角(SET 2)",
criteria: [
{ label: "图形1", value: 1 },
{ label: "图形2", value: 2 },
{ label: "图形3", value: 3 },
{ label: "图形4", value: 4 },
{ label: "图形5", value: 5 },
],
},
{
index: 3,
question: "前方视角(根据性别选择 SET 3)",
criteria: [
{ label: "图形1", value: 1 },
{ label: "图形2", value: 2 },
{ label: "图形3", value: 3 },
{ label: "图形4", value: 4 },
{ label: "图形5", value: 5 },
],
},
],
scaleData: {},
};
},
created() {
this.treatmentId = this.$route.query.treatmentId; // id
let scaleData = localStorage.getItem("scaleData"); //
// scaleData
this.scaleData = scaleData
? JSON.parse(scaleData)
: {
[this.treatmentId]: {},
};
// scaleData[this.treatmentId]
if (!this.scaleData[this.treatmentId]) {
this.scaleData[this.treatmentId] = {};
}
this.form = this.scaleData[this.treatmentId][this.scaleCode] || {}; // form
},
methods: {
submitForm() {
let score = 0;
// , topic${i}
for (let i = 1; i <= 8; i++) {
if (this.form[`topic${i}`] !== undefined) {
score += this.form[`topic${i}`];
}
}
//
this.scaleData[this.treatmentId][this.scaleCode] = this.form;
localStorage.setItem("scaleData", JSON.stringify(this.scaleData));
//
this.$emit("getScaleResult", score, this.scaleCode);
},
},
};
</script>
<style scoped src="@/assets/styles/common.css"></style>
<style scoped>
.item-title {
font-size: 20px;
font-weight: bold;
color: #3d3d3d;
line-height: 26px;
}
.item-radio-box {
margin: 16px 0px;
}
>>> .el-radio__label {
font-size: 18px;
color: #555555;
line-height: 20px;
}
.submit-box {
display: flex;
justify-content: center;
align-items: center;
.submit-box-but {
width: 200px;
}
}
</style>

146
acupuncture-后台/src/views/medicalFile/components/posture/TRACE.vue

@ -0,0 +1,146 @@
<template>
<div>
<div>
<!--
1肩部
肩膀的不对称性轻微差异1分2分有差异3分差异性很大
2肩胛骨
肩胛骨的对称性轻微差异1分差异较大2分
3腰部
腰部的对称性轻微差异1分2分有差异3分差异性很大4分差异性很大
4半胸
上半身不对称的状况以上胸椎的区域为主主要看譬如肩胛骨的凸侧以及肋骨的变化轻微差异1分差异较大2分
-->
<div
class="item-container"
v-for="(item, index) in questions"
:key="index"
>
<div class="item-title">{{ item.index }}. {{ item.question }}</div>
<div class="item-radio-box">
<el-radio-group v-model="form[`topic${item.index}`]">
<el-radio
v-for="(criteria, index) in item.criteria"
:key="index"
:label="criteria.value"
>{{ criteria.label }}
</el-radio>
</el-radio-group>
</div>
</div>
<div class="submit-box">
<el-button class="submit-box-but" type="primary" @click="submitForm"
>提交</el-button
>
</div>
</div>
</div>
</template>
<script>
export default {
name: "PHQ9",
props: ["scaleCode"],
data() {
return {
form: {},
questions: [
{
index: 1,
question: "肩部-肩膀的不对称性",
criteria: [
{ label: "轻微差异", value: 1 },
{ label: "有差异", value: 2 },
{ label: "差异性很大", value: 3 },
],
},
{
index: 2,
question: "肩胛骨-肩胛骨的对称性",
criteria: [
{ label: "轻微差异", value: 1 },
{ label: "差异较大", value: 2 },
],
},
{
index: 3,
question: "腰部-腰部的对称性",
criteria: [
{ label: "轻微差异", value: 1 },
{ label: "有差异", value: 2 },
{ label: "差异性很大", value: 3 },
{ label: "差异性很大", value: 4 },
],
},
{
index: 4,
question: "半胸-上半身不对称的状况",
criteria: [
{ label: "轻微差异", value: 1 },
{ label: "差异较大", value: 2 },
],
},
],
scaleData: {},
};
},
created() {
this.treatmentId = this.$route.query.treatmentId; // id
let scaleData = localStorage.getItem("scaleData"); //
// scaleData
this.scaleData = scaleData
? JSON.parse(scaleData)
: {
[this.treatmentId]: {},
};
// scaleData[this.treatmentId]
if (!this.scaleData[this.treatmentId]) {
this.scaleData[this.treatmentId] = {};
}
this.form = this.scaleData[this.treatmentId][this.scaleCode] || {}; // form
},
methods: {
submitForm() {
let score = 0;
// , topic${i}
for (let i = 1; i <= 7; i++) {
if (this.form[`topic${i}`] !== undefined) {
score += this.form[`topic${i}`];
}
}
//
this.scaleData[this.treatmentId][this.scaleCode] = this.form;
localStorage.setItem("scaleData", JSON.stringify(this.scaleData));
//
this.$emit("getScaleResult", score, this.scaleCode);
},
},
};
</script>
<style scoped src="@/assets/styles/common.css"></style>
<style scoped>
.item-title {
font-size: 20px;
font-weight: bold;
color: #3d3d3d;
line-height: 26px;
}
.item-radio-box {
margin: 16px 0px;
}
>>> .el-radio__label {
font-size: 18px;
color: #555555;
line-height: 20px;
}
.submit-box {
display: flex;
justify-content: center;
align-items: center;
.submit-box-but {
width: 200px;
}
}
</style>

1267
acupuncture-后台/src/views/medicalFile/details.vue

File diff suppressed because it is too large

15
acupuncture-后台/src/views/medicalFile/index.vue

@ -389,6 +389,14 @@
@click="handleEecorde(scope.row)"
>随访记录</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-document-copy"
@click="handleReport(scope.row)"
v-hasPermi="['medicalFile:index:report']"
>评估报告单</el-button
>
<!-- <el-button
:disabled="scope.row.status != 0"
size="mini"
@ -593,6 +601,7 @@ import {
queryRecord,
saveAidRecord,
queueAdd,
exportTreatmentPg,
} from "@/api/medicalFile";
import { tenantsList } from "@/api/member";
import { getToken } from "@/utils/auth";
@ -1236,6 +1245,12 @@ export default {
this.getTenantsList(); //
},
methods: {
//
handleReport(row) {
exportTreatmentPg({ treatmentId: row.id }).then((res) => {
window.open(`${process.env.VUE_APP_API_QZURL}acupuncture${res.data}`);
});
},
//
getTenantsList() {
tenantsList({

Loading…
Cancel
Save