Browse Source

同意书表单完成

360view
bianyaqi 2 years ago
parent
commit
09d39dc75c
  1. 24
      src/components/360View/medicalRecord/index.vue
  2. 370
      src/page-subspecialty/views/modules/formList/DrugInjection.vue
  3. 287
      src/page-subspecialty/views/modules/formList/InjectionTherapy.vue

24
src/components/360View/medicalRecord/index.vue

@ -111,6 +111,26 @@
@handleSaveTable="updateForm"
@formDelete="formDelete"
/>
<InjectionTherapy
v-if="name==='球旁注射同意书'"
ref="Lacrimal"
:only-read="onlyRead"
:is-platform="isPlatform"
:patient-detail="patientData"
:case-id="id"
@handleSaveTable="saveFormData"
@formDelete="formDelete"
/>
<DrugInjection
v-if="name==='药物注射手术知情同意书'"
ref="Lacrimal"
:only-read="onlyRead"
:is-platform="isPlatform"
:patient-detail="patientData"
:case-id="id"
@handleSaveTable="saveFormData"
@formDelete="formDelete"
/>
<childrenLacrimal
v-if="name==='小儿泪道冲洗知情同意书'"
ref="childrenLacrimal"
@ -172,8 +192,12 @@ import childrenLacrimal from '@/page-subspecialty/views/modules/formList/childre
import puncture from '@/page-subspecialty/views/modules/formList/puncture.vue'
import Lacrimal from '@/page-subspecialty/views/modules/formList/Lacrimal.vue'
import StyeForm from '@/page-subspecialty/views/modules/formList/StyeForm.vue'
import InjectionTherapy from '@/page-subspecialty/views/modules/formList/InjectionTherapy.vue'
import DrugInjection from '@/page-subspecialty/views/modules/formList/DrugInjection.vue'
export default {
components: {
DrugInjection,
InjectionTherapy,
StyeForm,
Lacrimal,
childrenLacrimal,

370
src/page-subspecialty/views/modules/formList/DrugInjection.vue

@ -0,0 +1,370 @@
<template>
<div class="formListBox">
<div v-if="!onlyRead && isPlatform" class="btnBox_top">
<el-button v-print="print" size="small" @click="handlePrint">打印</el-button>
<el-button type="primary" size="small" @click="handleSaveTable">保存</el-button>
<el-button type="danger" size="small" @click="formDelete">删除</el-button>
</div>
<div id="DrugInjection" style="width: 1000px;padding-right: 8px">
<div class="flex j-c">
<img width="450" src="@/assets/img/xianganlogo.png">
</div>
<hr>
<p style="color:#000000;font-size:32px;margin:0 0 30px 0;text-align:center;">
药物注射手术知情同意书
</p>
<div class="flex strongTitle">
疾病诊断和治疗建议
</div>
<div class="flex ">
<span style="word-break: keep-all">医生已告知我的</span><el-input v-model="confirmData.position" style="width: 50px" />
<span style="word-break: keep-all">眼患有</span><el-input v-model="confirmData.illness" style="width: 200px" />
<span style="word-break: keep-all">需要在</span><el-input v-model="confirmData.way" style="width: 120px" />
<span style="word-break: keep-all">麻醉下进行</span><el-input v-model="confirmData.operate" style="width: 200px" />手术
</div>
<div class="flex strongTitle">
手术潜在风险和对策
</div>
<div style="text-indent: 2rem;text-align: left">
医生告知我上述治疗方案可能发生的一些风险有些不常见的风险可能没有在此列出具体的手术式根据不同病人的情况有所不同医生告诉我可与我的医生讨论有关我手术的具体内容如果我有特殊的问题可与我的医生讨论
<div class="form_content">
<div v-for="(item,index) in content" :key="index" style="margin: 5px 0">
{{ item.title }}<span v-if="item.strong" :class="{underline:index===4,strong:true}">{{ item.strong }}</span>
<div v-for="(text,idx) in item.detail" :key="`${index}_${idx}`" :class="{underline:index===5}" class="form_detail">
{{ text }}
</div>
</div>
</div>
</div>
<div>
在向患方说明各治疗方案并告知利弊后患方基于当前病情需要经慎重考虑自愿选择 <el-input v-model="confirmData.treatOperate" style="width: 200px" /> 手术
注射药物<el-input v-model="confirmData.drug" style="width: 200px" />
</div>
<div class="flex strongTitle">
特殊风险或主要高危因素
</div>
<div style="text-align: left;margin-left: 2rem">
我理解根据我个人的病情我可能出现未包括在上述所交待并发症以外的风险
<el-input v-model="confirmData.docAdvice" type="textarea" :rows="3" />
一旦发生上述风险和意外医生会采取积极应对措施
</div>
<div class="flex strongTitle">
患者知情选择
</div>
<div style="text-align: left">
<p style="text-indent: 2rem">
我的医生已经告知我将要进行的治疗方式此次治疗及治疗后可能发生的并发症和风险可能存在的其它治疗方法并且解答了我关于此次治疗的相关问题
</p>
<p style="text-indent: 2rem">
我同意在治疗中医生可以根据我的病情对预定的治疗方式做出调整
</p>
<p style="text-indent: 2rem">
我理解我的治疗需要多位医生共同进行
</p>
<p style="text-indent: 2rem">
我并未得到治疗百分之百成功的许诺
</p>
<p style="text-indent: 2rem">
我授权医师对治疗切除的病变器官组织或标本进行处置包括病理学检查细胞学检查和医疗废物处理等
</p>
</div>
<div class="flex j-b" style="margin-top: 20px">
<div class="flex a-c">
<span style="word-break: keep-all;font-weight: bold">患者签名</span>
<div v-if="printHidden" style="margin-left:10px" @click="signClick('M')">
<img v-if="!minorPatientSignM" :src="require('@/assets/img/signature.png')" alt="">
<img v-else style="width: 80px;height: 40px;" :src="minorPatientSignM">
</div>
<el-input v-else style="width: 80px" />
</div>
<div style="margin-left: 100px">
签名日期
<el-date-picker
v-model="confirmData.patientDate"
style="flex: 1"
type="date"
format="yyyy年MM月dd日"
value-format="yyyy-MM-dd"
/>
</div>
</div>
<div class="flex">
如果患者无法签署知情同意书请其授权的亲属在此签名
</div>
<div class="flex j-b">
<div class="flex a-c">
<div style="font-weight: bold">患者授权亲属签名</div>
<div v-if="printHidden" style="margin-left:10px" @click="signClick('MM')">
<img v-if="!minorKinSignM" :src="require('@/assets/img/signature.png')" alt="">
<img v-else style="width: 80px;height: 40px;" :src="minorKinSignM">
</div>
<el-input v-else style="width: 80px" />
<span>与患者关系</span>
<el-input v-model="confirmData.relation" style="width: 100px" />
</div>
<div>
签名日期
<el-date-picker
v-model="confirmData.kinDate"
style="flex: 1"
type="date"
format="yyyy年MM月dd日"
value-format="yyyy-MM-dd"
/>
</div>
</div>
<div class="flex strongTitle">
医生陈述
</div>
<div style="font-weight: normal;font-size: 16px">
我已经告知患者将要进行的治疗方式此次治疗及治疗后可能发生的并发症和风险可能存在的其它治疗方法并且解答了患者关于此次治疗的相关问题
</div>
<div class="flex j-b" style="margin-top: 15px">
<div class="flex a-c" style="margin-left: 10px">
<span style="word-break: keep-all">医生签名</span>
<img v-if="confirmData.operator" :src="confirmData.operator" alt="" style="width: 80px;height: 50px;border-style:none;flex: 1">
</div>
<div class="flex a-c" style="margin-left: 15px">
日期<el-date-picker
v-model="confirmData.operateDate"
style="flex: 1"
type="date"
format="yyyy年MM月dd日"
value-format="yyyy-MM-dd"
/>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'DrugInjection',
props: {
onlyRead: {
type: Boolean,
default: false
},
isPlatform: {
type: Boolean,
default: true
},
patientDetail: {
type: Object
},
caseId: {
type: String,
default: ''
}
},
data() {
return {
options: [
{
label: '同意',
value: 1,
id: 'yes'
},
{
label: '不同意',
value: 2,
id: 'no'
}
],
content: [
{
title: '一、我理解任何手术、麻醉都存在风险;如果我患有高血压、心脏病、糖尿病、肝肾功能不全、静脉血栓等疾病或者有吸烟史,以上这些风险可能会加大,或者在术中或术后出现相关的病情加重或心脑血管意外,甚至死亡。'
},
{
title: '二、我理解任何所用药物都可能产生副作用,包括轻度的恶心、皮疹等症状到严重的过敏性休克,甚至危及生命。'
},
{
title: '三、我理解此手术可能发生的风险及医生的对策:',
detail: [
'1、各种手术都有感染的可能,但大部分经治疗均能好转,只有极个别的病人由于严重的感染不仅丧失视力,重者可能丧失眼球。',
'2、术中出血,严重时致手术终止,致视力丧失。',
'3、有可能出现视力不能提高、或提高不显著甚至下降。',
'4、术后有可能出现眼内出血、感染,多可以通过药物控制,严重时出现眼内炎需进一步手术。',
'5、术后有可能出现低眼压、高眼压,眼痛,需药物治疗,必要时行降压手术,如不能控制则产生继发性青光眼致视神经萎缩。',
'6、术后有可能出现角膜内皮失代偿,角膜混浊水肿,大泡性病变,疼痛等。',
'7、术后有可能出现白内障,需行白内障手术。',
'8、术后有可能出现眼前黑影感,视网膜裂孔,脉络膜脱离,视网膜脱离,需要进一步手术。',
'9、药物反应可能造成严重的后果。',
'10、目前抗新生血管生长因子、曲安奈德或地塞米松玻璃体内植入剂等的适应症可能尚无您的疾病,但是国内外文献及循证医学证明该药物用于治疗此类疾病是安全有效的。 ',
'11、术后需定期复查,必要时重复、多次注射治疗。',
'12、其它难以预料的意外情况。',
'13、术中发现其他病变或病情变化须更换或增加手术,亦可能无法进行预期手术须停止手术。'
]
},
{
title: '四、患者手术的医护人员团队将尽全力按操作规范实施上述治疗/手术,并且一旦发生并发症或意外情况,将从维护患者利益的角度出发积极采取措施,以努力降低并发症或意外情况导致的对患者的损害后果。'
},
{
title: '五、您有权选择同意或不同意接受上述治疗,但是如果拒绝接受上述治疗,您将面临以下风险:',
strong: '视力下降、眼底病变进展加快等。'
},
{
title: '六、根据患者目前的病情和我院目前开展的医疗技术,您还可以选择其他',
strong: '替代诊疗方案',
detail: [
'1、口服药物治疗:优点:无创; 缺点:疾病进展控制不佳。',
'2、PDT治疗:费用贵,目前国内均无此治疗药物。',
'3、视网膜激光光凝:优点:可以用于封闭裂孔及眼底出血性疾病;缺点:可能引起视野缺损,不能治疗视网膜脱离及严重的玻璃体积血。'
]
}
],
print: {
id: 'DrugInjection',
closeCallback: () => {
this.printHidden = true
}
},
printHidden: true,
orgin: '',
confirmData: {
drug: '',
position: '',
illness: '',
way: '',
operate: '',
treatOperate: '',
docAdvice: '',
relation: '',
patientSign: '',
familySign: '',
operator: '',
isAgree: '',
patientDate: new Date(),
kinDate: new Date(),
operateDate: new Date()
}
}
},
computed: {
minorPatientSignM() {
return this.$store.getters.minorPatientSignM
},
minorKinSignM() {
return this.$store.getters.minorKinSignM
}
},
watch: {
caseId(val) {
if (val) {
this.queryFormData()
}
}
},
created() {
this.orgin = JSON.parse(JSON.stringify(this.confirmData))
this.queryFormData()
this.$store.commit('initPlugin')
},
methods: {
signClick(index) {
this.$store.commit('beginSign', index)
},
handlePrint() {
this.printHidden = false
this.handleSaveTable()
},
//
handleSaveTable() {
this.confirmData.patientSign = this.minorPatientSignM
this.confirmData.familySign = this.minorKinSignM
const data = JSON.stringify(this.confirmData)
this.$emit('handleSaveTable', data)
},
//
queryFormData() {
this.$http.get('/case/getCaseById', { params: {
id: this.caseId
}}).then(data => {
const detail = data.data.data
if (detail.jsonText) {
this.confirmData = JSON.parse(detail.jsonText)
this.$store.commit('minorPatientSignM', this.confirmData.patientSign)
this.$store.commit('minorKinSignM', this.confirmData.familySign)
} else {
this.confirmData = JSON.parse(JSON.stringify(this.orgin))
const userData = JSON.parse(window.sessionStorage.getItem('qg-userData'))
this.confirmData.operator = userData.signImgBase
this.$store.commit('minorPatientSignM', this.confirmData.patientSign)
this.$store.commit('minorKinSignM', this.confirmData.familySign)
}
})
},
//
formDelete() {
this.$emit('formDelete')
}
}
}
</script>
<style lang="scss" scoped>
.flex{
display: flex;
}
.a-c{
align-items: center;
}
.j-c{
justify-content: center;
}
.j-b{
justify-content: space-between;
}
#DrugInjection{
text-align: left;
}
.formListBox{
background: #fff;
padding: 10px 20px 50px 20px;
page-break-after:always;
height: 100%;
overflow: auto;
}
.btnBox_top{
position: fixed;
z-index: 999;
right: 90px;
}
.form_top{
margin-bottom: 15px;
}
.form_content{
text-align: left;
line-height: 26px;
}
.form_detail{
text-indent: 2rem;
margin: 3px 0;
}
.strongTitle{
font-size: 20px;
font-weight: bold;
margin: 10px 0 5px 0;
}
.strong{
font-weight: bold;
}
.underline{
text-decoration: underline;
}
::v-deep .el-icon-arrow-up{
display: none;
}
::v-deep .el-input__inner{
border: none;
border-bottom: 1px solid #cccccc;
border-radius: 0;
font-size: 16px;
height: 26px;
text-align: center;
}
::v-deep .el-input__prefix{
display: none;
}
</style>

287
src/page-subspecialty/views/modules/formList/InjectionTherapy.vue

@ -0,0 +1,287 @@
<template>
<div class="formListBox">
<div v-if="!onlyRead && isPlatform" class="btnBox_top">
<el-button v-print="print" size="small" @click="handlePrint">打印</el-button>
<el-button type="primary" size="small" @click="handleSaveTable">保存</el-button>
<el-button type="danger" size="small" @click="formDelete">删除</el-button>
</div>
<div id="injectionTherapy" style="width: 1000px;padding-right: 8px">
<div class="flex j-c">
<img width="450" src="@/assets/img/xianganlogo.png">
</div>
<hr>
<p style="color:#000000;font-size:32px;margin:0 0 30px 0;text-align:center;">
球旁注射治疗同意书
</p>
<div class="flex">
<div class="flex">
姓名<el-input v-model="confirmData.patientName" style="width: 120px" />
</div>
<div class="flex">
性别<el-input v-model="confirmData.patientSex" style="width: 80px" />
</div>
<div class="flex">
年龄<el-input v-model="confirmData.patientAge" style="width: 200px" />
</div>
<div class="flex">
诊断<el-input v-model="confirmData.diagnose" style="width: 300px" />
</div>
</div>
<div class="flex" style="margin-top: 15px">
<span style="margin-right: 15px">治疗方案球旁注射治疗</span>
<div
v-for="(item,index) in confirmData.options"
:key="index"
style="margin: 0 20px 0 0;cursor: pointer"
@click="item.isSelect = !item.isSelect"
>
<input type="checkbox" :checked="item.isSelect">{{ item.name }}
</div>
</div>
<div style="margin-top: 15px">
治疗中可能发生的危险
<div style="margin-top: 15px">
<span>1药物过敏甚至导致过敏性休克</span>
<span>2出血或血肿</span>
</div>
</div>
<div style="margin-top: 15px">
治疗中可能发生的并发症
<div style="margin-top: 15px">
<span>1感染</span>
<span>2损伤眼外肌</span>
<span>3可能穿刺入眼内导致不良后果</span>
</div>
<div style="margin-top: 15px">
病员或家属意见
我们了解该治疗的各种可能发生的风险同意接受治疗
</div>
</div>
<div class="flex j-b" style="margin-top: 20px">
<div class="flex a-c">
<span style="word-break: keep-all;font-weight: bold">本人签名</span>
<div v-if="printHidden" style="margin-left:10px" @click="signClick('M')">
<img v-if="!minorPatientSignM" :src="require('@/assets/img/signature.png')" alt="">
<img v-else style="width: 80px;height: 40px;" :src="minorPatientSignM">
</div>
<el-input v-else style="width: 80px" />
</div>
<div class="flex a-c">
<div style="font-weight: bold">或家属签名</div>
<div v-if="printHidden" style="margin-left:10px" @click="signClick('MM')">
<img v-if="!minorKinSignM" :src="require('@/assets/img/signature.png')" alt="">
<img v-else style="width: 80px;height: 40px;" :src="minorKinSignM">
</div>
<el-input v-else style="width: 80px" />
</div>
<div class="flex a-c" style="margin-left: 10px">
<span style="word-break: keep-all">操作者</span>
<img v-if="confirmData.operator" :src="confirmData.operator" alt="" style="width: 80px;height: 50px;border-style:none;flex: 1">
</div>
<div class="flex a-c" style="margin-left: 15px">
日期<el-date-picker
v-model="confirmData.operateDate"
style="flex: 1"
type="date"
format="yyyy年MM月dd日"
value-format="yyyy-MM-dd"
/>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'InjectionTherapy',
props: {
onlyRead: {
type: Boolean,
default: false
},
isPlatform: {
type: Boolean,
default: true
},
patientDetail: {
type: Object
},
caseId: {
type: String,
default: ''
}
},
data() {
return {
print: {
id: 'injectionTherapy',
closeCallback: () => {
this.printHidden = true
}
},
printHidden: true,
orgin: '',
confirmData: {
options: [
{
name: 'OD',
isSelect: false
}, {
name: 'OS',
isSelect: false
}, {
name: 'OU',
isSelect: false
}
],
patientName: '',
patientSex: '',
patientAge: '',
diagnose: '',
patientSign: '',
familySign: '',
operator: '',
operateDate: new Date()
}
}
},
computed: {
minorPatientSignM() {
return this.$store.getters.minorPatientSignM
},
minorKinSignM() {
return this.$store.getters.minorKinSignM
}
},
watch: {
caseId(val) {
if (val) {
this.queryFormData()
}
}
},
created() {
this.orgin = JSON.parse(JSON.stringify(this.confirmData))
this.queryFormData()
this.$store.commit('initPlugin')
},
methods: {
signClick(index) {
this.$store.commit('beginSign', index)
},
handlePrint() {
this.printHidden = false
this.handleSaveTable()
},
//
handleSaveTable() {
this.confirmData.patientSign = this.minorPatientSignM
this.confirmData.familySign = this.minorKinSignM
const data = JSON.stringify(this.confirmData)
console.log(data)
this.$emit('handleSaveTable', data)
},
//
queryFormData() {
this.$http.get('/case/getCaseById', { params: {
id: this.caseId
}}).then(data => {
const detail = data.data.data
if (detail.jsonText) {
this.confirmData = JSON.parse(detail.jsonText)
this.$store.commit('minorPatientSignM', this.confirmData.patientSign)
this.$store.commit('minorKinSignM', this.confirmData.familySign)
} else {
this.confirmData = JSON.parse(JSON.stringify(this.orgin))
const userData = JSON.parse(window.sessionStorage.getItem('qg-userData'))
this.confirmData.operator = userData.signImgBase
this.confirmData.patientName = this.patientDetail.patientName
this.confirmData.patientAge = this.patientDetail.patientAge
this.confirmData.patientSex = this.patientDetail.patientSex
this.queryDiagnostic()
this.$store.commit('minorPatientSignM', this.confirmData.patientSign)
this.$store.commit('minorKinSignM', this.confirmData.familySign)
}
})
},
queryDiagnostic() {
this.$http.get('/mzbl/getLastDiagnostic', { params: {
patientId: this.patientDetail.patientId
}}).then(data => {
this.confirmData.diagnose = data.data.data
})
},
//
formDelete() {
this.$emit('formDelete')
}
}
}
</script>
<style lang="scss" scoped>
.flex{
display: flex;
}
.a-c{
align-items: center;
}
.j-c{
justify-content: center;
}
.j-b{
justify-content: space-between;
}
#injectionTherapy{
text-align: left;
}
.formListBox{
background: #fff;
padding: 10px 20px 50px 20px;
page-break-after:always;
height: 100%;
overflow: auto;
}
.btnBox_top{
position: fixed;
z-index: 999;
right: 90px;
}
.form_top{
margin-bottom: 15px;
}
.form_content{
text-align: left;
line-height: 26px;
}
.form_detail{
text-indent: 2rem;
margin: 3px 0;
}
.strongTitle{
font-size: 20px;
font-weight: bold;
margin: 10px 0 5px 0;
}
.strong{
font-weight: bold;
}
.underline{
text-decoration: underline;
}
::v-deep .el-icon-arrow-up{
display: none;
}
::v-deep .el-input__inner{
border: none;
border-bottom: 1px solid #cccccc;
border-radius: 0;
font-size: 16px;
height: 26px;
text-align: center;
}
::v-deep .el-input__prefix{
display: none;
}
</style>
Loading…
Cancel
Save