Browse Source

诊疗档案添加患者健康问卷(PHQ-9)

newMaster
1747191978@qq.com 4 months ago
parent
commit
150db3f78b
  1. 2
      acupuncture-前台/src/assets/styles/common.css
  2. 182
      acupuncture-前台/src/views/medicalFile/components/posture/PHQ-9.vue
  3. 60
      acupuncture-前台/src/views/medicalFile/details.vue
  4. 379
      acupuncture-前台/src/views/medicalFile/index.vue

2
acupuncture-前台/src/assets/styles/common.css

@ -19,7 +19,7 @@
display: none;
}
.popup >>> .el-dialog:not(.is-fullscreen) {
margin-top: 0 !important;
margin: 0 !important;
}
.popup >>> .popupAdd {
height: 58px;

182
acupuncture-前台/src/views/medicalFile/components/posture/PHQ-9.vue

@ -0,0 +1,182 @@
<template>
<div>
<!--
分值范围
评分方法每个条目根据症状频率评分0分表示完全没有1分表示有几天2分表示七天以上3分表示接近每天总分范围为0~27
分值意义
0~4无或极轻微的抑郁症状
5~9轻度抑郁
10~14中度抑郁
15~19中重度抑郁
20~27重度抑郁
-->
<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 type="primary" @click="submitForm">提交</el-button>
</div>
</div>
</div>
</template>
<script>
export default {
name: "phq",
data() {
return {
form: {},
questions: [
{
index: 1,
question: "做任何事都觉得沉闷或者根本不想做任何事",
criteria: [
{ label: "完全没有", value: 0 },
{ label: "有几天", value: 1 },
{ label: "七天以上", value: 2 },
{ label: "接近每天", value: 3 },
],
},
{
index: 2,
question: "情绪低落、忧郁或绝望",
criteria: [
{ label: "完全没有", value: 0 },
{ label: "有几天", value: 1 },
{ label: "七天以上", value: 2 },
{ label: "接近每天", value: 3 },
],
},
{
index: 3,
question: "难于入睡、半夜会醒,或相反,睡觉时间过多",
criteria: [
{ label: "完全没有", value: 0 },
{ label: "有几天", value: 1 },
{ label: "七天以上", value: 2 },
{ label: "接近每天", value: 3 },
],
},
{
index: 4,
question: "觉得疲倦或没有精力",
criteria: [
{ label: "完全没有", value: 0 },
{ label: "有几天", value: 1 },
{ label: "七天以上", value: 2 },
{ label: "接近每天", value: 3 },
],
},
{
index: 5,
question: "胃口不好或饮食过量",
criteria: [
{ label: "完全没有", value: 0 },
{ label: "有几天", value: 1 },
{ label: "七天以上", value: 2 },
{ label: "接近每天", value: 3 },
],
},
{
index: 6,
question: "觉得自己做得不好、对自己失望或有负家人期望",
criteria: [
{ label: "完全没有", value: 0 },
{ label: "有几天", value: 1 },
{ label: "七天以上", value: 2 },
{ label: "接近每天", value: 3 },
],
},
{
index: 7,
question: "难于集中精神做事,例如看报纸或看电视",
criteria: [
{ label: "完全没有", value: 0 },
{ label: "有几天", value: 1 },
{ label: "七天以上", value: 2 },
{ label: "接近每天", value: 3 },
],
},
{
index: 8,
question:
"其它人可能会注意到您在动或说话的时候比平时慢;或者相反,您坐立不安,比起平时有多余的身体动作",
criteria: [
{ label: "完全没有", value: 0 },
{ label: "有几天", value: 1 },
{ label: "七天以上", value: 2 },
{ label: "接近每天", value: 3 },
],
},
{
index: 9,
question: "想到自己不如死了算了,或者有自残的念头",
criteria: [
{ label: "完全没有", value: 0 },
{ label: "有几天", value: 1 },
{ label: "七天以上", value: 2 },
{ label: "接近每天", value: 3 },
],
},
],
scaleData: {},
};
},
created() {
this.treatmentId = this.$route.query.treatmentId; // id
let scaleData = localStorage.getItem("scaleData"); //
this.scaleData = JSON.parse(scaleData) || {};
console.log(" this.scaleData", this.scaleData);
this.form = this.scaleData[this.treatmentId] || {}; // form
},
methods: {
submitForm() {
let score = 0;
// , topic${i}
for (let i = 1; i <= 9; i++) {
if (this.form[`topic${i}`] !== undefined) {
score += this.form[`topic${i}`];
}
}
//
this.scaleData[this.treatmentId] = this.form;
localStorage.setItem("scaleData", JSON.stringify(this.scaleData));
//
this.$emit("getScaleResult", score, "PG_SM_PHQ-9_DF");
},
},
};
</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;
}
</style>

60
acupuncture-前台/src/views/medicalFile/details.vue

@ -231,10 +231,16 @@
</div>
<div class="div-title2">失眠评估</div>
<div class="human-body">
<el-form-item
label="患者健康问卷(PHQ-9)评估得分(0-27分)"
prop="PG_SM_PHQ-9_DF"
<el-form-item prop="PG_SM_PHQ-9_DF">
<template v-slot:label>
患者健康问卷PHQ-9评估得分(0-27)
<span
class="foem-item-pg"
@click="handleComponents('PHQ9', '患者健康问卷(PHQ-9)')"
>
评估
</span>
</template>
<el-input
v-model="detailsForm['PG_SM_PHQ-9_DF']"
placeholder="请输入"
@ -412,15 +418,41 @@
>
</div>
</div>
<!-- 动态量表组件框 -->
<el-dialog
class="popup"
:title="title"
:visible.sync="open"
width="780px"
append-to-body
>
<component
@getScaleResult="getScaleResult"
:treatmentId="treatmentId"
class="popup-module"
:is="componentsCode"
></component>
</el-dialog>
</div>
</template>
<script>
import { queryRecord, saveAidRecord } from "@/api/medicalFile";
import PHQ from "./components/posture/PHQ-9";
export default {
name: "Notice",
components: {
PHQ,
},
data() {
return {
title: "", //
open: false, //
component: {
//
PHQ9: "PHQ", // PHQ-9
}, //
componentsCode: "", // code
stepActive: 0,
stepArr: [
"基本信息",
@ -885,6 +917,21 @@ export default {
this.handleDetails(treatmentId);
},
methods: {
//
getScaleResult(_scaleResult, _code) {
this.detailsForm[_code] = _scaleResult;
this.open = false; //
},
// code
handleComponents(_code, _title) {
console.log(_code, _title);
this.componentsCode = this.component[_code]; // code
console.log(" this.componentsCode", this.componentsCode);
this.open = true; //
this.title = _title; //
},
/** 详情按钮操作 */
handleDetails(treatmentId) {
this.getDetailsForm(); //
@ -995,6 +1042,13 @@ export default {
<style scoped src="@/assets/styles/common.css"></style>
<style scoped>
.foem-item-pg {
color: blue;
border-bottom: 1px solid blue;
cursor: pointer;
position: relative;
z-index: 9;
}
.app-container {
display: flex;
}

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

@ -506,385 +506,6 @@
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 档案详情 -->
<el-drawer title="档案详情" :visible.sync="drawer">
<div style="padding: 0 16px">
<el-descriptions class="margin-top" :column="2">
<el-descriptions-item label="姓名">{{
form.name
}}</el-descriptions-item>
<el-descriptions-item label="性别">
{{ form.gender == 0 ? "男" : "女" }}
</el-descriptions-item>
<el-descriptions-item label="门诊号/住院号">
{{ form.visitNumber }}
</el-descriptions-item>
<el-descriptions-item label="门诊时间/住院时间">
{{ form.visitTime }}
</el-descriptions-item>
<el-descriptions-item label="责任医生">
{{ form.doctor }}
</el-descriptions-item>
<el-descriptions-item label="建档人">
{{ form.createBy }}
</el-descriptions-item>
<el-descriptions-item label="建档时间">
{{ form.createTime }}
</el-descriptions-item>
</el-descriptions>
<!-- 档案详情-->
<el-form
ref="detailsForm"
:model="detailsForm"
:rules="rules"
class="formStep"
>
<div>主要诊断</div>
<el-form-item class="form-item-zd" label="" prop="JBXX_ZYZD">
<el-checkbox-group v-model="detailsForm['JBXX_ZYZD']">
<el-checkbox
v-for="(item, index) in medicalHistory"
:label="item"
>
</el-checkbox>
</el-checkbox-group>
<el-input
v-model="detailsForm['JBXX_ZYZD_QT']"
placeholder="其他"
/>
</el-form-item>
<div>
<div class="div-title1">评估信息</div>
<div class="div-title2">人体成分基本参数</div>
</div>
<div class="human-body">
<el-form-item label="体重" prop="PG_RTCF_TZ">
<el-input
v-model="detailsForm['PG_RTCF_TZ']"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="去脂体重" prop="PG_RTCF_QZTZ">
<el-input
v-model="detailsForm['PG_RTCF_QZTZ']"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="肌肉量" prop="PG_RTCF_JRL">
<el-input
v-model="detailsForm['PG_RTCF_JRL']"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="总水分(TBW)" prop="PG_RTCF_TBW">
<el-input
v-model="detailsForm['PG_RTCF_TBW']"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="蛋白质" prop="PG_RTCF_DBZ">
<el-input
v-model="detailsForm['PG_RTCF_DBZ']"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="蛋白质" prop="PG_RTCF_GZ">
<el-input
v-model="detailsForm['PG_RTCF_GZ']"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="脂肪" prop="PG_RTCF_ZF">
<el-input
v-model="detailsForm['PG_RTCF_ZF']"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="体脂百分比(PBF)" prop="PG_RTCF_PBF">
<el-input
v-model="detailsForm['PG_RTCF_PBF']"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="骨骼肌" prop="PG_RTCF_GGJ">
<el-input
v-model="detailsForm['PG_RTCF_GGJ']"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="体质指数(BMI)" prop="PG_RTCF_BMI">
<el-input
v-model="detailsForm['PG_RTCF_BMI']"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="腰臀比(WHR)" prop="PG_RTCF_WHR">
<el-input
v-model="detailsForm['PG_RTCF_WHR']"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="内脏脂肪水平" prop="PG_RTCF_NZZFSP">
<el-input
v-model="detailsForm['PG_RTCF_NZZFSP']"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="身体各成分百分比" prop="PG_RTCF_STGCFBFB">
<el-input
v-model="detailsForm['PG_RTCF_STGCFBFB']"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="体型类型" prop="PG_RTCF_TXLX">
<el-select
v-model="detailsForm['PG_RTCF_TXLX']"
multiple
collapse-tags
placeholder="请选择"
>
<el-option
v-for="(item, index) in systemType"
:label="item"
:value="item"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="身体年龄" prop="PG_RTCF_STNL">
<el-input
v-model="detailsForm['PG_RTCF_STNL']"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="健康评分" prop="PG_RTCF_JKPF">
<el-input
v-model="detailsForm['PG_RTCF_JKPF']"
placeholder="请输入"
/>
</el-form-item>
</div>
<div class="div-title1">中医体质辨识</div>
<div class="div-title2">主要体质</div>
<el-form-item prop="PG_TZBS_ZYTZ">
<el-radio-group v-model="detailsForm['PG_TZBS_ZYTZ']">
<el-radio
v-for="(item, index) in habitus"
:key="index"
:label="item"
>
</el-radio>
</el-radio-group>
</el-form-item>
<div class="div-title2">兼夹体质</div>
<el-form-item class="form-item-zd" prop="PG_TZBS_JJTZ">
<el-checkbox-group v-model="detailsForm['PG_TZBS_JJTZ']">
<el-checkbox
v-for="(item, index) in habitus"
:key="index"
:label="item"
>
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<div class="div-title2">体态评估</div>
<div class="human-body">
<el-form-item
label="TAPS体态自觉评估得分(3-15分)"
prop="PG_TT_TAPS_DF"
>
<el-input
v-model="detailsForm['PG_TT_TAPS_DF']"
placeholder="请输入"
/>
</el-form-item>
<el-form-item
label="TRACE体态临床评估得分(0-12分)"
prop="PG_TT_TRACE_DF"
>
<el-input
v-model="detailsForm['PG_TT_TRACE_DF']"
placeholder="请输入"
/>
</el-form-item>
<el-form-item
label="SRS-22问卷评估得分(1~5分)"
prop="PG_TT_SRS22_DF"
>
<el-input
v-model="detailsForm['PG_TT_SRS22_DF']"
placeholder="请输入"
/>
</el-form-item>
</div>
<div class="div-title2">失眠评估</div>
<div class="human-body">
<el-form-item
label="患者健康问卷(PHQ-9)评估得分(0-27分)"
prop="PG_SM_PHQ-9_DF"
>
<el-input
v-model="detailsForm['PG_SM_PHQ-9_DF']"
placeholder="请输入"
/>
</el-form-item>
<el-form-item
label="Epworth嗜睡评估得分(0-24分)"
prop="PG_SM_EPSW_DF"
>
<el-input
v-model="detailsForm['PG_SM_EPSW_DF']"
placeholder="请输入"
/>
</el-form-item>
<el-form-item
label="匹兹堡睡眠质量指数(PSQI)评估得分(0~21分)"
prop="PG_SM_PSQI_DF"
>
<el-input
v-model="detailsForm['PG_SM_PSQI_DF']"
placeholder="请输入"
/>
</el-form-item>
</div>
<div class="div-title2">焦虑评估</div>
<div class="human-body">
<el-form-item
label="汉密尔顿抑郁评估(HAMD-24)得分(0-96分)"
prop="PG_JL_HAMD-24_DF"
>
<el-input
v-model="detailsForm['PG_JL_HAMD-24_DF']"
placeholder="请输入"
/>
</el-form-item>
<el-form-item
label="焦虑自评(SAS)得分(0-100分)"
prop="PG_JL_SAS_DF"
>
<el-input
v-model="detailsForm['PG_JL_SAS_DF']"
placeholder="请输入"
/>
</el-form-item>
</div>
<el-form-item label="治疗类型" prop="ZLFA_ZLLX">
<el-radio-group v-model="detailsForm['ZLFA_ZLLX']">
<el-radio label="中西医结合治疗"> </el-radio>
<el-radio label="单纯中医治疗"> </el-radio>
</el-radio-group>
</el-form-item>
<div style="font-size: 22px; margin-bottom: 14px" class="div-title1">
诊疗方法
</div>
<div
style="margin-bottom: 14px"
v-for="(i, ind) in healType"
:key="ind"
>
<div class="div-title2">{{ i.title }}</div>
<div v-for="(j, jnd) in i.list" :key="jnd">
<div v-if="j.title != '针灸疗法'">
<div class="div-title3">{{ j.title }}</div>
<span
v-if="k.type == 'but'"
@click="handleButClick(j, k)"
class="span-but"
:class="{
'span-but-active':
detailsForm[j.valueCode] == (k.value || k.title),
}"
v-for="(k, knd) in j.list"
:key="knd"
>
{{ k.value || k.title }}
</span>
<div v-else class="human-body">
<el-form-item prop="ZLFA_ZJ_XW_QT">
<el-input v-model="detailsForm[j.valueCode]"></el-input>
</el-form-item>
</div>
</div>
<div v-else>
<div class="div-title3">{{ j.title }}</div>
<div style="" v-for="(k, knd) in j.list" :key="knd">
<div class="div-title4">{{ k.title }}</div>
<span
v-if="l.type == 'but'"
@click="handleButClick(k, l)"
class="span-but"
:class="{
'span-but-active':
detailsForm[k.valueCode] == (l.value || l.title),
}"
v-for="(l, lnd) in k.list"
:key="lnd"
>
{{ l.value || l.title }}
</span>
<div v-else class="human-body">
<el-form-item prop="ZLFA_YW_QT">
<el-input v-model="detailsForm[k.valueCode]"></el-input>
</el-form-item>
</div>
</div>
</div>
</div>
</div>
<!-- -->
<div class="human-body"></div>
<el-form-item label="治理效果" prop="ZLFA_ZLXG">
<el-radio-group v-model="detailsForm['ZLFA_ZLXG']">
<el-radio label="治愈"> </el-radio>
<el-radio label="显效"> </el-radio>
<el-radio label="好转"> </el-radio>
<el-radio label="无效"> </el-radio>
</el-radio-group>
</el-form-item>
<div class="div-title2">诊疗费用</div>
<el-form-item label="总体费用按照区间进行选择" prop="ZLFA_ZTFY">
<el-radio-group v-model="detailsForm['ZLFA_ZTFY']">
<el-radio label="<300元" value="<300元"> </el-radio>
<el-radio label="300 ~ 900元" value="<300元"> </el-radio>
<el-radio label="900 ~ 2000元" value="<300元"> </el-radio>
<el-radio label="2000 ~ 5000元" value="<300元"> </el-radio>
<el-radio label=">5000元" value="<300元"> </el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="检查费用按照区间进行选择" prop="ZLFA_JCFY">
<el-radio-group v-model="detailsForm['ZLFA_JCFY']">
<el-radio label="<300元"> </el-radio>
<el-radio label="300 ~ 900元"> </el-radio>
<el-radio label="900 ~ 2000元"> </el-radio>
<el-radio label="2000 ~ 5000元"> </el-radio>
<el-radio label=">5000元"> </el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="中医治疗费用按照区间进行选择" prop="ZLFA_ZYZLFY">
<el-radio-group v-model="detailsForm['ZLFA_ZYZLFY']">
<el-radio label="<300元"> </el-radio>
<el-radio label="300 ~ 900元"> </el-radio>
<el-radio label="900 ~ 2000元"> </el-radio>
<el-radio label="2000 ~ 5000元"> </el-radio>
<el-radio label=">5000元"> </el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="药物费用按照区间进行选择" prop="ZLFA_YWFY">
<el-radio-group v-model="detailsForm['ZLFA_YWFY']">
<el-radio label="<300元"> </el-radio>
<el-radio label="300 ~ 900元"> </el-radio>
<el-radio label="900 ~ 2000元"> </el-radio>
<el-radio label="2000 ~ 5000元"> </el-radio>
<el-radio label=">5000元"> </el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer" styl>
<el-button type="primary" @click="submitDetailsForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</div>
</el-drawer>
<!-- 导入患者信息 -->
<el-dialog
title="导入诊疗档案"

Loading…
Cancel
Save