OHpressuresore.vue 22KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630
  1. <!-- OH压疮评估 -->
  2. <template>
  3. <div class="patient-container">
  4. <patient-sidebar :id="patientID" defaultActive="5-4"></patient-sidebar>
  5. <div>
  6. <div class="patient-app-container advice-container app-container">
  7. <div class="content_top">
  8. <!-- 左 -->
  9. <div style="width: 58%;">
  10. <div style="margin-bottom: 20px; display: flex;">
  11. <div style="flex:2" >
  12. <el-button type="primary" @click="OHadd" v-if="add_show">新增</el-button>
  13. <el-button style="background:#00B6D7;color:white" @click="editor_OH" v-if="zsgy_open==1">编辑</el-button>
  14. <el-button type="danger" @click="dele_OH" v-if="zsgy_open==1">删除</el-button>
  15. <el-button type="success" @click="print_OH" v-if="zsgy_open==1">打印</el-button>
  16. </div>
  17. <div style="flex:1" v-if="baocun_open==1">
  18. <el-button type="primary" @click="save_OH" >保存</el-button>
  19. <el-button @click="cancel_OH" >取消</el-button>
  20. </div>
  21. </div>
  22. <div>
  23. <div style="font-size: 20px;margin-bottom: 20px;">OH压疮评估表</div>
  24. <div style="width: 100%;">
  25. <table class="table" border="1" style="width: 100%;">
  26. <thead>
  27. <tr>
  28. <th style="width: 150px;">项目</th>
  29. <th>分值</th>
  30. </tr>
  31. </thead>
  32. <tbody>
  33. <tr class="bg_color">
  34. <td class="start">自主体位变换</td>
  35. <td>
  36. <div class="jiange">
  37. <span v-for="item in tiwei" class="rightjiange" @change="handleCheckedCitiesChange($event,item)">
  38. <label><input type="checkbox" class="checkbox1" name="ball" v-model="item.is_check" :value="item.value"/>&nbsp;{{ item.label }}</label>
  39. </span>
  40. </div>
  41. </td>
  42. </tr>
  43. <tr>
  44. <td class="start">病理性骨突出</td>
  45. <td>
  46. <div class="jiange">
  47. <span v-for="item in bingli" class="rightjiange" @change="bingligu(item)">
  48. <label><input type="checkbox" class="checkbox2" name="ball" v-model="item.is_check" :value="item.value" />&nbsp;{{ item.label }}</label>
  49. </span>
  50. </div>
  51. </td>
  52. </tr>
  53. <tr class="bg_color">
  54. <td class="start">浮肿</td>
  55. <td>
  56. <div class="jiange">
  57. <span v-for="item in edema" class="rightjiange" @change="fozhong_chang(item)">
  58. <label><input type="checkbox" class="checkbox3" name="ball" v-model="item.is_check" :value="item.value" />&nbsp;{{ item.label }}</label>
  59. </span>
  60. </div>
  61. </td>
  62. </tr>
  63. <tr>
  64. <td class="start">关节痉挛</td>
  65. <td>
  66. <div class="jiange">
  67. <span v-for="item in guanjie" class="rightjiange" @change="guanjie_change(item)">
  68. <label><input type="checkbox" class="checkbox4" name="ball" v-model="item.is_check" :value="item.value" />&nbsp;{{ item.label }}</label>
  69. </span>
  70. </div>
  71. </td>
  72. </tr>
  73. </tbody>
  74. </table>
  75. </div>
  76. <div style="vertical-align: top; margin: 10px 0px; position: relative;">
  77. <span style="position: relative; top: -55px;">护理措施:</span>
  78. <div style="margin-top: 20px;display: inline-block; width: 85%;">
  79. <el-input maxlength="200" type = "textarea" :rows="3" v-model="oh_huli" placeholder="输入护理措施,200字以内" ></el-input>
  80. </div>
  81. </div>
  82. <div>
  83. <div class="bottoms">
  84. <span>总分:</span>
  85. <el-input v-model="Totalpoints" style="width: 80px;"></el-input>分
  86. </div>
  87. <div class="bottoms">
  88. <span>评估日期:</span>
  89. <el-date-picker
  90. v-model="oh_date"
  91. type="date"
  92. placeholder="选择日期"
  93. value-format="yyyy-MM-dd"
  94. :clearable="false"
  95. style="width: 150px;">
  96. </el-date-picker>
  97. </div>
  98. <div class="bottoms">
  99. <span>评估人:</span>
  100. <el-select v-model="oh_appraiser" placeholder="请选择" style="width:120px;">
  101. <el-option
  102. v-for="item in oh_pinggr"
  103. :key="item.id"
  104. :label="item.label"
  105. :value="item.id"
  106. >
  107. </el-option>
  108. </el-select>
  109. </div>
  110. </div>
  111. <div id="ctrl-xgtlpic-mask" class="readonly" data-text="图片操作的遮罩层" v-show="append == false"></div>
  112. </div>
  113. <hr style="width: 100%;margin-top: 20px; border: none;height: 1px;background: #DCDFE6;"/>
  114. <div class="shuoming">
  115. <p>说明:</p>
  116. <p>1、本表适用于急症科、血液净化科等非病房科室。</p>
  117. <p>2、总分:10分,分值越大风险越高 ;1-3分为低危;4-6分为中危;7-10分为高危。</p>
  118. <p>3、病理性骨突出指骶尾部(或受压部位骨突出处)两侧均高于皮肤
  119. <2cm为“无”;两侧均为2cm或一侧<2cm一侧2cm为“轻度/中度”;两侧均>2cm或一侧>2cm一侧2cm为“高度”。
  120. </p>
  121. <p>参考:北海道大学名授大浦武彦,堀田由浩. 利用OH 评估法进行压疮预防[M].东京:中央法规出版社,2005:11</p>
  122. </div>
  123. </div>
  124. <!-- 虚线 -->
  125. <div style="height: 100vh; width: 1px; border-left:1px dashed #DCDFE6 ;"></div>
  126. <!-- 右 -->
  127. <div style="width: 38%;">
  128. <div style="font-size: 20px; margin-bottom: 20px;">评估历史记录</div>
  129. <div style="width: 100%;">
  130. <el-table
  131. :data="history_OH"
  132. stripe
  133. border
  134. @row-click="dele_click"
  135. :highlight-current-row="true"
  136. :header-cell-style="{
  137. background: '#0077ff9f',color:'white'}"
  138. style="width: 100%">
  139. <el-table-column
  140. prop="date"
  141. label="评估日期"
  142. width="180">
  143. </el-table-column>
  144. <el-table-column
  145. prop="mark"
  146. label="总分"
  147. >
  148. </el-table-column>
  149. <el-table-column
  150. prop="evaluate"
  151. label="评估人"
  152. >
  153. </el-table-column>
  154. </el-table>
  155. </div>
  156. </div>
  157. </div>
  158. </div>
  159. </div>
  160. <!-- 打印 -->
  161. <el-dialog
  162. title="提示"
  163. :visible.sync="open_print"
  164. width="67%"
  165. >
  166. <div>
  167. <el-button type="primary" @click="print_pingfen" style="float:right">打印</el-button>
  168. <div id="mingxi" >
  169. <div class="diedao_content" style="">
  170. <div style="width:100%;margin-top: 20px;">
  171. <div style="text-align: center;"><h1>血液透析中心跌倒评估记录</h1></div>
  172. <div style="margin-top: 20px;font-size: 16px;">
  173. <span>患者姓名:</span>
  174. <span>透析号:</span>
  175. <span>评估日期:{{ oh_date }}</span>
  176. <span>评估护士:{{ getpinggr(oh_appraiser) }}</span>
  177. <span>总分:{{ Totalpoints }}</span>
  178. <span>打印时间:{{ dayintime }}</span>
  179. </div>
  180. <table class="tables" border="1" style="width: 100%;border-collapse: collapse;">
  181. <thead>
  182. <tr>
  183. <th style="width: 150px;padding: 5px;">项目</th>
  184. <th style="padding: 5px;">分值</th>
  185. </tr>
  186. </thead>
  187. <tbody>
  188. <tr class="bg_color">
  189. <td class="start">自主体位变换</td>
  190. <td>
  191. <div class="jiange">
  192. <span v-for="item in tiwei" class="rightjiange" @change="handleCheckedCitiesChange($event,item)">
  193. <label><input type="checkbox" class="checkbox1" name="ball" v-model="item.is_check" :value="item.value"/>&nbsp;{{ item.label }}</label>
  194. </span>
  195. </div>
  196. </td>
  197. </tr>
  198. <tr>
  199. <td class="start">病理性骨突出</td>
  200. <td>
  201. <div class="jiange">
  202. <span v-for="item in bingli" class="rightjiange" @change="bingligu(item)">
  203. <label><input type="checkbox" class="checkbox2" name="ball" v-model="item.is_check" :value="item.value" />&nbsp;{{ item.label }}</label>
  204. </span>
  205. </div>
  206. </td>
  207. </tr>
  208. <tr class="bg_color">
  209. <td class="start">浮肿</td>
  210. <td>
  211. <div class="jiange">
  212. <span v-for="item in edema" class="rightjiange" @change="fozhong_chang(item)">
  213. <label><input type="checkbox" class="checkbox3" name="ball" v-model="item.is_check" :value="item.value" />&nbsp;{{ item.label }}</label>
  214. </span>
  215. </div>
  216. </td>
  217. </tr>
  218. <tr>
  219. <td class="start">关节痉挛</td>
  220. <td>
  221. <div class="jiange">
  222. <span v-for="item in guanjie" class="rightjiange" @change="guanjie_change(item)">
  223. <label><input type="checkbox" class="checkbox4" name="ball" v-model="item.is_check" :value="item.value" />&nbsp;{{ item.label }}</label>
  224. </span>
  225. </div>
  226. </td>
  227. </tr>
  228. </tbody>
  229. </table>
  230. <div style="vertical-align: top; margin: 10px 0px; ">
  231. <span >护理措施:</span>
  232. <div style="margin-top: 20px;display: inline-block; width: 85%;height: 80px;">
  233. {{ oh_huli }}
  234. <!-- <el-input maxlength="200" type = "textarea" :rows="3" v-model="input" placeholder="输入护理措施,200字以内" ></el-input> -->
  235. </div>
  236. </div>
  237. <hr style="width: 100%;margin-top: 20px; border: 1px solid black;"/>
  238. <div class="shuoming">
  239. <p>说明:</p>
  240. <p>1、本表适用于急症科、血液净化科等非病房科室。</p>
  241. <p>2、总分:10分,分值越大风险越高 ;1-3分为低危;4-6分为中危;7-10分为高危。</p>
  242. <p>3、病理性骨突出指骶尾部(或受压部位骨突出处)两侧均高于皮肤
  243. <2cm为“无”;两侧均为2cm或一侧<2cm一侧2cm为“轻度/中度”;两侧均>2cm或一侧>2cm一侧2cm为“高度”。
  244. </p>
  245. <p>参考:北海道大学名授大浦武彦,堀田由浩. 利用OH 评估法进行压疮预防[M].东京:中央法规出版社,2005:11</p>
  246. </div>
  247. </div>
  248. </div>
  249. </div>
  250. </div>
  251. </el-dialog>
  252. <!-- 删除弹窗 -->
  253. <el-dialog
  254. title="提示"
  255. :visible.sync="dele_dialogVisible"
  256. width="30%">
  257. <span>确认删除该数据</span>
  258. <span slot="footer" class="dialog-footer">
  259. <el-button @click="dele_Cancel">取 消</el-button>
  260. <el-button type="primary" @click="deleclick">确 定</el-button>
  261. </span>
  262. </el-dialog>
  263. </div>
  264. </template>
  265. <script>
  266. import PatientSidebar from '../components/PatientSidebar.vue'
  267. import print from 'print-js'
  268. import { uParseTime } from '@/utils/tools'
  269. export default {
  270. components:{
  271. PatientSidebar
  272. },
  273. data(){
  274. return{
  275. patientID:0,
  276. tiwei_num:null,
  277. bingli_num:null,
  278. edema_num:null,
  279. gaunjie_num:null,
  280. ball:'',
  281. input:'',
  282. history_OH:[{id:'001',date:'2023-9-27',mark:'',evaluate:''}],
  283. form:[],
  284. appraiser:null,
  285. value1:'',
  286. options:[],
  287. tiwei:[{id:1,value:0,label:'能(0分)',check:0,is_check:false},{id:2,value:1.5,label:'不能完全自立(1.5分)',check:0,is_check:false},{id:3,value:3,label:'不能(3分)',check:0,is_check:false}],
  288. bingli:[{value:0,label:'无(0分)',check:0,is_check:false},{value:1.5,label:'轻度/中度(1.5分)',check:0,is_check:false},{value:3,label:'高度(3分)',check:0,is_check:false}],
  289. edema:[{value:0,label:'无(0分)',check:0,is_check:false},{value:3,label:'有(3分)',check:0,is_check:false}],
  290. guanjie:[{value:0,label:'无(0分)',check:0,is_check:false},{value:1,label:'有(1分)',check:0,is_check:false}],
  291. oh_pinggr:[{id:1,label:'小米'},{id:2,label:'千仞雪'},{id:3,label:'千亦雪'},],
  292. checkList:[],
  293. checkList1:[],
  294. checkList2:[],
  295. checkList3:[],
  296. append:false,//控制遮罩层
  297. add_open:1,//新增按钮控制条件
  298. baocun_open:0,//控制保存取消显示
  299. add_show:true,//控制新增显示
  300. zsgy_open:0,//控制编辑,删除,打印显示
  301. cancel_num:0,//取消的条件
  302. open_print:false,
  303. dele_id:'',//删除的索引
  304. dele_dialogVisible:false,
  305. oh_huli:'',//护理措施
  306. oh_date:this.getTime(new Date()),
  307. oh_appraiser:null,
  308. dayintime:this.getTime(new Date())//打印
  309. // oh_pinggr:[],
  310. }
  311. },
  312. methods:{
  313. //选择的总分
  314. handleCheckedCitiesChange(e,item){
  315. console.log('vvvv','bbbb',item);
  316. for(let i=0;i<this.tiwei.length;i++){
  317. if(item.value == this.tiwei[i].value){
  318. if(this.tiwei[i].check == 0){
  319. this.tiwei[i].check =1
  320. this.tiwei[i].is_check = true
  321. this.tiwei_num = item.value
  322. }else{
  323. this.tiwei[i].check =0
  324. this.tiwei[i].is_check = false
  325. this.tiwei_num = 0
  326. }
  327. }else{
  328. this.tiwei[i].check =0
  329. this.tiwei[i].is_check = false
  330. }
  331. }
  332. console.log('oooo',this.tiwei);
  333. },
  334. bingligu(item){
  335. for(let i=0;i<this.bingli.length;i++){
  336. if(item.value == this.bingli[i].value){
  337. if(this.bingli[i].check == 0){
  338. this.bingli[i].check =1
  339. this.bingli[i].is_check = true
  340. this.bingli_num = item.value
  341. }else{
  342. this.bingli[i].check =0
  343. this.bingli[i].is_check = false
  344. this.bingli_num = 0
  345. }
  346. }else{
  347. this.bingli[i].check =0
  348. this.bingli[i].is_check = false
  349. }
  350. }
  351. },
  352. fozhong_chang(item){
  353. for(let i=0;i<this.edema.length;i++){
  354. if(item.value == this.edema[i].value){
  355. if(this.edema[i].check == 0){
  356. this.edema[i].check =1
  357. this.edema[i].is_check = true
  358. this.edema_num = item.value
  359. }else{
  360. this.edema[i].check =0
  361. this.edema[i].is_check = false
  362. this.edema_num = 0
  363. }
  364. }else{
  365. this.edema[i].check =0
  366. this.edema[i].is_check = false
  367. }
  368. }
  369. },
  370. guanjie_change(item){
  371. for(let i=0;i<this.guanjie.length;i++){
  372. if(item.value == this.guanjie[i].value){
  373. if(this.guanjie[i].check == 0){
  374. this.guanjie[i].check =1
  375. this.guanjie[i].is_check = true
  376. this.gaunjie_num = item.value
  377. }else{
  378. this.guanjie[i].check =0
  379. this.guanjie[i].is_check = false
  380. this.gaunjie_num = 0
  381. }
  382. }else{
  383. this.guanjie[i].check =0
  384. this.guanjie[i].is_check = false
  385. }
  386. }
  387. },
  388. // 新增
  389. OHadd(){
  390. if(this.add_open==1){
  391. this.append=true
  392. this.baocun_open=1
  393. this.add_show =false
  394. this.zsgy_open= 0
  395. }else{
  396. this.append = false
  397. }
  398. },
  399. //保存
  400. save_OH(){
  401. if(this.oh_appraiser==null){
  402. this.$message('请选择评估人')
  403. }else{
  404. this.baocun_open=0
  405. this.add_show=true
  406. this.zsgy_open=1
  407. this.cancel_num=1
  408. var params={
  409. patientID:this.patientID,
  410. tiwei:this.tiwei,
  411. bingli:this.bingli,
  412. edema:this.edema,
  413. guanjie:this.guanjie,
  414. oh_huli:this.oh_huli,
  415. oh_date:this.oh_date,
  416. oh_appraiser:this.oh_appraiser,
  417. Totalpoints:this.Totalpoints
  418. }
  419. const arr={
  420. id:'002',
  421. date:this.oh_date,
  422. mark:this.Totalpoints,
  423. evaluate:this.oh_appraiser
  424. }
  425. console.log('rrrrr',arr,params);
  426. this.history_OH.push(arr)
  427. const lenOH= this.history_OH
  428. var nameoh=''
  429. for(let i=0;i<lenOH.length;i++){
  430. lenOH[i].mark= this.Totalpoints
  431. for(let y=0;y<this.oh_pinggr.length;y++){
  432. if(this.oh_appraiser==this.oh_pinggr[y].id){
  433. nameoh=this.oh_pinggr[y].label
  434. }
  435. }
  436. lenOH[i].evaluate= nameoh
  437. }
  438. return this.cancel_num
  439. }
  440. },
  441. //编辑
  442. editor_OH(){
  443. this.add_show=false
  444. this.zsgy_open=0
  445. this.baocun_open=1
  446. this.cancel_num=1
  447. },
  448. // 选择需要删除的记录
  449. dele_click(row, column, event){
  450. this.dele_id=row.id
  451. },
  452. //删除
  453. dele_OH(){
  454. if(this.dele_id !=''){
  455. this.zsgy_open=0
  456. this.append=false
  457. this.dele_dialogVisible=true
  458. }else{
  459. this.$message('请选择需要删除的记录')
  460. }
  461. },
  462. deleclick(){
  463. for(let i=0;i<this.history_OH.length;i++){
  464. if(this.dele_id==this.history_OH[i].id){
  465. this.history_OH.splice(i,1)
  466. }
  467. }
  468. this.dele_dialogVisible=false
  469. },
  470. //打印
  471. print_OH(){
  472. this.open_print=true
  473. },
  474. dele_Cancel(){
  475. this.append=false
  476. this.zsgy_open=1
  477. this.add_show=true
  478. this.dele_dialogVisible=false
  479. },
  480. //取消
  481. cancel_OH(){
  482. const checkboxs=document.getElementsByClassName('ball')
  483. this.baocun_open=0
  484. console.log('1111',this.cancel_num);
  485. if(this.cancel_num==1){
  486. this.zsgy_open=1
  487. this.add_show=true
  488. }else{
  489. this.zsgy_open=0
  490. this.add_show=true
  491. this.append=false
  492. this.tiwei_num=''
  493. this.bingli_num=null
  494. this.edema_num=null
  495. this.gaunjie_num=null
  496. for(let i=0;i<checkboxs.length;i++){
  497. checkboxs[i].checked = false
  498. }
  499. }
  500. },
  501. print_pingfen(){
  502. const style= '@media print {.diedao_content{background-color: white; width:960px; margin:0 auto; padding: 0 0 20px 0;} .tables thead th{ text-align: center;height: 40px;} .tables tbody td{height: 40px;padding:0 10px}}'
  503. printJS({
  504. printable: 'mingxi',
  505. type: 'html',
  506. style: style,
  507. scanStyles: false
  508. })
  509. this.open_print=false
  510. },
  511. // 转换时间
  512. getTime(val) {
  513. if(val < 0){
  514. return ""
  515. }
  516. if(val == ""){
  517. return ""
  518. }else {
  519. return uParseTime(val, '{y}-{m}-{d}')
  520. }
  521. },
  522. // 评估护士
  523. getpinggr(id){
  524. for(let i in this.oh_pinggr){
  525. if(id == this.oh_pinggr[i].id){
  526. return this.oh_pinggr[i].label
  527. }
  528. }
  529. }
  530. },
  531. computed:{
  532. Totalpoints(){
  533. return this.gaunjie_num*1 + this.edema_num*1 + this.bingli_num*1 + this.tiwei_num*1
  534. }
  535. }
  536. }
  537. </script>
  538. <style lang="scss" scoped>
  539. .content_top{
  540. display: flex;
  541. justify-content: space-between;
  542. }
  543. .bottoms{
  544. display: inline-block;
  545. margin-left: 10px;
  546. margin-top: 5px;
  547. }
  548. .shuoming p{
  549. margin-top: 5px;
  550. color: rgb(167, 165, 165);
  551. }
  552. .table{
  553. border: 1px solid #DCDFE6;
  554. border-collapse:collapse;
  555. border-spacing: 0;
  556. thead th{
  557. background: #0077ff9f;
  558. color: white;
  559. text-align: center;
  560. height: 40px;
  561. }
  562. tbody td{
  563. height: 40px;
  564. }
  565. .start{
  566. text-align: center;
  567. }
  568. .bing{
  569. width: 150px;
  570. text-align: center;
  571. }
  572. .bg_color{
  573. background: rgb(243, 240, 240);
  574. }
  575. .jiange{
  576. margin-left: 20px;
  577. color: black;
  578. }
  579. .rightjiange{
  580. margin-right: 40px;
  581. font-size: 15px;
  582. }
  583. input{
  584. -webkit-appearance: checkbox;
  585. }
  586. }
  587. #ctrl-xgtlpic-mask.readonly {
  588. z-index: 2000;
  589. }
  590. #ctrl-xgtlpic-mask {
  591. width: 85%;
  592. height: 100%;
  593. position: absolute;
  594. left: 196px;
  595. top: 131px;
  596. opacity: 0;
  597. z-index: -1;
  598. }
  599. .tables {
  600. thead th{
  601. // background: #0077ff9f;
  602. // color: white;
  603. text-align: center;
  604. height: 40px;
  605. }
  606. tbody td{
  607. padding:0 10px;
  608. height: 40px;
  609. }
  610. input{
  611. -webkit-appearance: checkbox;
  612. }
  613. }
  614. </style>