RASS_history.vue 21KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627
  1. <!-- RASS -->
  2. <template>
  3. <div class="patient-container">
  4. <div class="patient-app-containers advice-container app-container">
  5. <div style="display: flex;margin-bottom: 20px;">
  6. <div style="width: 50%;">
  7. <el-button type="text" icon="el-icon-arrow-left" style="font-size: 18px;" @click="fanhui">返回</el-button>
  8. <div class="history">RASS评估记录</div>
  9. </div>
  10. <div style="margin-left: 30%;">
  11. <el-button type="primary" @click="Rass_pingfen(1)">打印评分</el-button>
  12. <el-button type="primary" @click="Rass_pingfen(2)">打印明细</el-button>
  13. </div>
  14. </div>
  15. <div>
  16. <el-table
  17. ref="multipleTable"
  18. :data="tableData"
  19. border
  20. tooltip-effect="dark"
  21. :header-cell-style="{
  22. background:'#4579c5',
  23. color:'#fff'
  24. }"
  25. style="width: 100%"
  26. @selection-change="handleSelectionChange">
  27. <el-table-column
  28. type="selection"
  29. width="55"
  30. align="center">
  31. </el-table-column>
  32. <el-table-column
  33. prop="time"
  34. label="评估日期"
  35. width=""
  36. align="center">
  37. </el-table-column>
  38. <el-table-column
  39. prop="Losradio"
  40. label="LOS评分"
  41. width=""
  42. align="center">
  43. </el-table-column>
  44. <el-table-column
  45. prop="rassradio"
  46. label="RASS评分"
  47. width=""
  48. align="center">
  49. </el-table-column>
  50. <el-table-column
  51. prop="evaluate"
  52. label="评估护士"
  53. width=""
  54. align="center">
  55. </el-table-column>
  56. <el-table-column
  57. prop="address"
  58. label="操作"
  59. width=""
  60. align="center"
  61. show-overflow-tooltip>
  62. <template slot-scope="scope">
  63. <el-button type="primary" icon="el-icon-delete" @click="RASS_delete(scope.row)"></el-button>
  64. </template>
  65. </el-table-column>
  66. </el-table>
  67. </div>
  68. <div style="display: flex;margin: 50px 0 20px 0;">
  69. <div style="width: 50%;">
  70. <div class="history">疼痛评估历史评分</div>
  71. </div>
  72. <div style="margin-left: 40%;">
  73. <el-button type="primary" @click="tengtong_open">打印评分</el-button>
  74. </div>
  75. </div>
  76. <div>
  77. <el-table
  78. ref="multipleTable"
  79. :data="tengtable"
  80. border
  81. tooltip-effect="dark"
  82. :header-cell-style="{
  83. background:'#4579c5',
  84. color:'#fff'
  85. }"
  86. style="width: 100%"
  87. @selection-change="teng_SelectionChanges">
  88. <el-table-column
  89. type="selection"
  90. width="55"
  91. align="center">
  92. </el-table-column>
  93. <el-table-column
  94. prop="time"
  95. label="评估日期"
  96. width=""
  97. align="center">
  98. </el-table-column>
  99. <el-table-column
  100. prop="tool"
  101. label="疼痛工具"
  102. width=""
  103. align="center">
  104. </el-table-column>
  105. <el-table-column
  106. prop="mark"
  107. label="分数"
  108. width=""
  109. align="center">
  110. </el-table-column>
  111. <el-table-column
  112. prop="evaluate"
  113. label="评估护士"
  114. width=""
  115. align="center">
  116. </el-table-column>
  117. <el-table-column
  118. prop="address"
  119. label="操作"
  120. width=""
  121. align="center"
  122. show-overflow-tooltip>
  123. <template slot-scope="scope">
  124. <el-button type="primary" icon="el-icon-delete" @click="teng_dele(scope.row)"></el-button>
  125. </template>
  126. </el-table-column>
  127. </el-table>
  128. </div>
  129. </div>
  130. <!-- RASS打印评分 -->
  131. <el-dialog
  132. title="提示"
  133. :visible.sync="RASS_dialogVisible"
  134. width="67%"
  135. >
  136. <div>
  137. <el-button type="primary" @click="print_pingfen(1)" style="float:right">打印</el-button>
  138. <div id="pingfeng" >
  139. <div class="diedao_content" style="">
  140. <div style="width:100%">
  141. <div style="text-align: center;"><h1>血液透析中心住院患者导管脱落危险因素评估记录</h1></div>
  142. <div style="margin-top: 20px;font-size: 16px;">
  143. <span>患者姓名:{{Patient_info.name}}</span>&nbsp;&nbsp;
  144. <span>透析号:{{Patient_info.dialysis_no}}</span>&nbsp;&nbsp;
  145. <span>打印时间:{{dayin}}</span>
  146. </div>
  147. <table class="table" border="1" style="border-collapse:collapse;text-align:center;width:100%;font-size:16px">
  148. <tr>
  149. <td style="">评估日期</td>
  150. <td style="">LOS评分</td>
  151. <td style="">RASS评分</td>
  152. <td style="">评估护士</td>
  153. </tr>
  154. <tr v-for="(item,index) in multipleSelection" :key="index">
  155. <td>{{ item.time }}</td>
  156. <td>{{ item.Losradio }}</td>
  157. <td>{{ item.rassradio }}</td>
  158. <td>{{ item.evaluate }}</td>
  159. </tr>
  160. </table>
  161. </div>
  162. </div>
  163. </div>
  164. </div>
  165. </el-dialog>
  166. <!-- 疼痛打印评分 -->
  167. <el-dialog
  168. title="提示"
  169. :visible.sync="teng_dialogVisible"
  170. width="67%"
  171. >
  172. <div>
  173. <el-button type="primary" @click="print_teng" style="float:right">打印</el-button>
  174. <div id="pingfeng" >
  175. <div class="diedao_content" style="">
  176. <div style="width:100%">
  177. <div style="text-align: center;"><h1>血液透析中心住院患者导管脱落危险因素评估记录</h1></div>
  178. <div style="margin-top: 20px;font-size: 16px;">
  179. <span>患者姓名:{{Patient_info.name}}</span>&nbsp;&nbsp;
  180. <span>透析号:{{Patient_info.dialysis_no}}</span>&nbsp;&nbsp;
  181. <span>打印时间:{{dayin}}</span>
  182. </div>
  183. <table class="table" border="1" style="border-collapse:collapse;text-align:center;width:100%;font-size:16px">
  184. <tr>
  185. <td style="">评估日期</td>
  186. <td style="">疼痛工具</td>
  187. <td style="">分数</td>
  188. <td style="">评估护士</td>
  189. </tr>
  190. <tr v-for="(item,index) in tengtongvalue" :key="index">
  191. <td>{{ item.time }}</td>
  192. <td>{{ item.tool }}</td>
  193. <td>{{ item.mark }}</td>
  194. <td>{{ item.evaluate }}</td>
  195. </tr>
  196. </table>
  197. </div>
  198. </div>
  199. </div>
  200. </div>
  201. </el-dialog>
  202. <!-- RASS打印明细 -->
  203. <el-dialog
  204. title="提示"
  205. :visible.sync="mingxi_dialogVisible"
  206. width="70%"
  207. >
  208. <div>
  209. <div style="">
  210. <el-button type="primary" @click="print_pingfen(2)" style="float:right">打印</el-button>
  211. </div>
  212. <div id="mingxi" >
  213. <div class="diedao_content" style="page-break-after: always;" v-for="items in multipleSelection">
  214. <div style="width:100%;margin-top: 20px;">
  215. <div style="text-align: center;"><h1>血液透析中心RASS评估记录</h1></div>
  216. <div style="margin-top: 20px;font-size: 16px;">
  217. <span>患者姓名:{{Patient_info.name}}</span>&nbsp;&nbsp;
  218. <span>透析号:{{Patient_info.dialysis_no}}</span>&nbsp;&nbsp;
  219. <span>评估日期:{{items.time}}</span>&nbsp;&nbsp;
  220. <span>评估护士:{{items.evaluate}}</span>&nbsp;&nbsp;
  221. <span>总分:{{items.mark}}</span>
  222. </div>
  223. <table class="table" border="1" style="width: 100%;border-collapse:collapse;margin-bottom:30px">
  224. <thead>
  225. <tr>
  226. <th style="width: 180px; text-align: left;margin-left: 5px;">LOS评分</th>
  227. </tr>
  228. </thead>
  229. <tbody>
  230. <tr v-for="(item, index) in LOS" :key="index" :style="{'background':(index==0 || index % 2==0) ?'rgb(243, 240, 240)':'white'}">
  231. <td style="padding: 5px;">
  232. <div class="rightjiange" style="position: relative;"><!--v-model="items.Losradio"-->
  233. <el-radio v-model="items.Losradio" :label="item.value"><span>{{ item.title }}</span> {{ item.label }}</el-radio>
  234. </div>
  235. </td>
  236. </tr>
  237. </tbody>
  238. </table>
  239. <table class="tables" border="1" style="width: 100%;border-collapse:collapse;">
  240. <thead>
  241. <tr>
  242. <th colspan="2">RASS评分</th>
  243. </tr>
  244. </thead>
  245. <tbody>
  246. <tr >
  247. <td style='width:50%'>
  248. <table class="table" border="1" style="width: 100%;border-collapse: collapse;">
  249. <tr class="bg_color" v-for="(item,index) in RASS" :key="index"
  250. :style="{'background':(index==0 || index % 2==0) ?'rgb(243, 240, 240)':'white'}">
  251. <td style='height: 40px;'>
  252. <div class="rightjiange" style="position: relative;">
  253. <el-radio class="elradio" v-model="items.rassradio" :label="item.value"><span>{{ item.title }}</span> {{ item.label }}</el-radio>
  254. </div>
  255. </td>
  256. </tr>
  257. </table>
  258. </td>
  259. <td>
  260. <table class="table" border="1" style="width: 100%;border-collapse: collapse;">
  261. <tr v-for="(item,index) in RASS1" :key="index"
  262. :style="{'background':(index==0 || index % 2==0) ?'rgb(243, 240, 240)':'white'}">
  263. <td style='height: 40px;'>
  264. <div class="rightjiange" style="position: relative;">
  265. <el-radio class="elradio" v-model="items.rassradio" :label="item.value"><span>{{ item.title2 }}</span> {{ item.label }}</el-radio>
  266. </div>
  267. </td>
  268. </tr>
  269. </table>
  270. </td>
  271. </tr>
  272. </tbody>
  273. </table>
  274. <div style="font-size: 16px;">打印时间:{{ dayin }}</div>
  275. </div>
  276. </div>
  277. </div>
  278. </div>
  279. </el-dialog>
  280. <!--删除 -->
  281. <el-dialog
  282. title="提示"
  283. :visible.sync="delete_centerDialogVisible"
  284. width="20%"
  285. center>
  286. <span>是否删除该记录</span>
  287. <span slot="footer" class="dialog-footer">
  288. <el-button @click="delete_centerDialogVisible = false">取 消</el-button>
  289. <el-button type="primary" @click="deletes">确 定</el-button>
  290. </span>
  291. </el-dialog>
  292. </div>
  293. </template>
  294. <script>
  295. import print from 'print-js'
  296. import { uParseTime } from '@/utils/tools'
  297. import {getAllNurseList,savePatientHpressuresore,getPatientBedlist,getPedPatientFallAssessmentById,
  298. deletePedPatientFallassment,updateBedPatientList} from '@/api/fallassement'
  299. export default{
  300. data(){
  301. return{
  302. tableData:[],
  303. multipleSelection:[],
  304. tengtongvalue:[],
  305. RASS_dialogVisible:false,
  306. teng_dialogVisible:false,
  307. mingxi_dialogVisible:false,
  308. delete_centerDialogVisible:false,
  309. row:'',
  310. limit:10,
  311. page:1,
  312. patient_id:'',
  313. Patient_info:{},
  314. RAssradio:'',
  315. dayin:this.getTime2(new Date()),
  316. num:1,
  317. rassoptions:[],
  318. tengtable:[],
  319. LOS:[{title:'0分', label:'清醒',value:0},{title:'1分', label:'有些昏昏欲睡,但容易唤醒',value:1},
  320. {title:'2分', label:'频繁发生昏昏欲睡,容易唤醒,但不能持续处于觉醒状态',value:2},
  321. {title:'3分', label:'无意识,无法唤醒',value:3},{title:'S分', label:'正常意识,容易唤醒',value:'s'}
  322. ],
  323. RASS:[{title:'-5分', label:'无法唤醒,对声音或物理刺激均无反应',value:-5},
  324. {title:'-4分', label:'深度镇静,对声音刺激无反应,但对物理刺激有运动或睁眼反应',value:-4},
  325. {title:'-3分', label:'中度镇静,对声音刺激有活动或睁眼动作(但无目光接触)',value:-3},
  326. {title:'-2分', label:'轻度镇静,对于声音刺激可以有简短的目光接触的觉醒,<10s',value:-2},
  327. {title:'-1分', label:'困倦的昏昏欲睡的,不完全觉醒但能保持觉醒状态,对于声音刺激眼睛可以睁开或有目光接触≥10s',value:-1},
  328. ],
  329. RASS1:[{title2:'0分', label:'警觉的平静的',value:0},
  330. {title2:'+1分', label:'不安的焦虑的:焦虑但无强烈的攻击行为',value:1},
  331. {title2:'+2分', label:'焦虑的激动的:经常性的无目的活动,人机对抗',value:2},
  332. {title2:'+3分', label:'非常焦虑激动的:牵拉或拔除管道,容易焦虑不安',value:3},
  333. {title2:'+4分', label:'好斗的好战的:过于好斗,有暴力倾向,对医护人员有攻击行为',value:4},
  334. ],
  335. RassGJ:[{value:1,label:'NRS'},{value:2,label:'表情法'},{value:3,label:'视觉模拟法'},{value:4,label:'语言描述法'},
  336. {value:5,label:'行为学评估量表'},{value:6,label:'其他'}],
  337. }
  338. },
  339. created(){
  340. this.patient_id = this.$route.query.patient_id
  341. this.Patient_info = this.$route.query.Patient_info
  342. this.getRass_list()
  343. this.getteng_list()
  344. this.getAllNurseList()
  345. },
  346. methods:{
  347. // 返回
  348. fanhui(){
  349. window.history.go(-1);
  350. },
  351. // rass选中条数
  352. handleSelectionChange(val) {
  353. this.multipleSelection = val;
  354. console.log('val',this.multipleSelection);
  355. },
  356. // 疼痛选中条数
  357. teng_SelectionChanges(val){
  358. this.tengtongvalue = val
  359. console.log('teng',this.tengtongvalue);
  360. },
  361. // rass打印
  362. Rass_pingfen(ids){
  363. if(this.multipleSelection.length==0){
  364. this.$message('请选择需要打印的记录')
  365. }else{
  366. if(ids==1){
  367. this.RASS_dialogVisible=true
  368. }else{
  369. this.mingxi_dialogVisible=true
  370. }
  371. }
  372. },
  373. // 疼痛打印
  374. tengtong_open(){
  375. if(this.tengtongvalue.length==0){
  376. this.$message('请选择需要打印的记录')
  377. }else{
  378. this.teng_dialogVisible = true
  379. }
  380. },
  381. print_pingfen(ids){
  382. const style= '@media print {.diedao_content{background-color: white; width:960px; margin:0 auto; padding: 0 0 20px 0;} .table tr td{padding:5px}}'
  383. if(ids==1){
  384. printJS({
  385. printable: 'pingfeng',
  386. type: 'html',
  387. style: style,
  388. scanStyles: false
  389. })
  390. this.dialogVisible=false
  391. }else if(ids==2){
  392. printJS({
  393. printable: 'mingxi',
  394. type: 'html',
  395. style: style,
  396. scanStyles: false
  397. })
  398. this.mingxi_dialogVisible=false
  399. }
  400. },
  401. // 打印疼痛
  402. print_teng(){
  403. const style= '@media print {.diedao_content{background-color: white; width:960px; margin:0 auto; padding: 0 0 20px 0;} .table tr td{padding:5px}}'
  404. printJS({
  405. printable: 'pingfeng',
  406. type: 'html',
  407. style: style,
  408. scanStyles: false
  409. })
  410. this.teng_dialogVisible=false
  411. },
  412. // 疼痛删除弹出
  413. teng_dele(row){
  414. this.num =2
  415. this.row=row.id
  416. this.delete_centerDialogVisible=true
  417. },
  418. // 删除弹出
  419. RASS_delete(row){
  420. this.num =1
  421. this.row=row.id
  422. this.delete_centerDialogVisible=true
  423. },
  424. // 确认删除
  425. deletes(){
  426. deletePedPatientFallassment(this.row).then(response =>{
  427. if(response.data.state == 1){
  428. if(this.num ==1){
  429. for(let i=0;i<this.tableData.length;i++){
  430. if(this.row==this.tableData[i].id){
  431. this.tableData.splice(i,1)
  432. }
  433. }
  434. }else{
  435. for(let i=0;i<this.tengtable.length;i++){
  436. if(this.row==this.tengtable[i].id){
  437. this.tengtable.splice(i,1)
  438. }
  439. }
  440. }
  441. this.$message({message:'删除成功',type:'success'})
  442. }
  443. })
  444. this.delete_centerDialogVisible=false
  445. return this.tableData
  446. },
  447. // 转换时间
  448. getTime(val) {
  449. if(val < 0){
  450. return ""
  451. }
  452. if(val == ""){
  453. return ""
  454. }else {
  455. return uParseTime(val, '{y}-{m}-{d}')
  456. }
  457. },
  458. getTime2(val) {
  459. if(val < 0){
  460. return ""
  461. }
  462. if(val == ""){
  463. return ""
  464. }else {
  465. return uParseTime(val, '{y}-{m}-{d} {h}:{i}:{s}')
  466. }
  467. },
  468. // RASS数据源
  469. getRass_list(){
  470. var params = {
  471. patient_id:this.patient_id,
  472. limit:this.limit,
  473. is_type:5,
  474. page:this.page,
  475. }
  476. getPatientBedlist(params).then(response =>{
  477. if(response.data.state ==1){
  478. const Rass = response.data.data.list
  479. Rass.forEach(item => {
  480. if(item.text != ''){
  481. const text = JSON.parse(item.text)
  482. console.log('text',text);
  483. const arr ={
  484. id:item.id,
  485. time:text.date,
  486. rassradio:text.rassradio,
  487. Losradio:text.Losradio,
  488. Rass_num : text.Rass_num,
  489. mark:text.total,
  490. evaluate:this.getoptions(text.appraiser),
  491. }
  492. this.tableData.push(arr)
  493. }
  494. });
  495. }
  496. })
  497. },
  498. // 疼痛数据源
  499. getteng_list(){
  500. var params = {
  501. patient_id:this.patient_id,
  502. limit:this.limit,
  503. is_type:13,
  504. page:this.page,
  505. }
  506. getPatientBedlist(params).then(response =>{
  507. if(response.data.state ==1){
  508. const Rass = response.data.data.list
  509. Rass.forEach(item => {
  510. if(item.text != ''){
  511. const text = JSON.parse(item.text)
  512. console.log('text',text);
  513. const arr ={
  514. id:item.id,
  515. time:text.date,
  516. // tool:this.getRassGJ(text.RassGJradio),
  517. tool:text.RassGJradio,
  518. mark:text.total,
  519. qita:text.qita_val,
  520. evaluate:this.getoptions(text.appraiser),
  521. }
  522. // if(arr.tool=='其他'){
  523. // arr.mark = arr.qita
  524. // }
  525. if(arr.tool==6){
  526. arr.mark = arr.qita
  527. }
  528. arr.tool= this.getRassGJ(arr.tool)
  529. console.log('1111',arr);
  530. this.tengtable.push(arr)
  531. // if(this.tengtable.length>0){
  532. // for(let i in this.tengtable){
  533. // if(this.tengtable[i].tool==6){
  534. // this.tengtable[i].mark = this.tengtable[i].qita
  535. // }
  536. // // this.getRassGJ(this.tengtable[i].tool)
  537. // // console.log('111111',this.tengtable);
  538. // }
  539. // }
  540. }
  541. });
  542. }
  543. })
  544. },
  545. // 评估人
  546. getoptions(ids){
  547. const options= this.rassoptions
  548. for(let i in options){
  549. if(options[i].admin_user_id == ids){
  550. return options[i].user_name
  551. }
  552. }
  553. },
  554. // 疼痛工具
  555. getRassGJ(ids){
  556. const teng = this.RassGJ
  557. for(let i in teng){
  558. if(ids == teng[i].value){
  559. return teng[i].label
  560. }
  561. }
  562. },
  563. // 评估人数据源
  564. getAllNurseList(){
  565. getAllNurseList().then(response=>{
  566. if(response.data.state ==1){
  567. var nurseList = response.data.data.nurseList
  568. this.rassoptions =nurseList
  569. }
  570. })
  571. },
  572. }
  573. }
  574. </script>
  575. <style lang="scss" scoped>
  576. .patient-app-containers {
  577. margin-left: 10px;
  578. margin-right: 10px;
  579. background: #fff;
  580. }
  581. .history{
  582. display: inline-block;
  583. border-left:2px solid gray ;
  584. padding: 0 10px;
  585. margin-left:10px;
  586. color: gray;
  587. font-size: 18px;
  588. }
  589. .table tr td{
  590. padding:5px,
  591. }
  592. input{
  593. -webkit-appearance: checkbox;
  594. }
  595. // .elradio{
  596. // display: flex;
  597. // /deep/.el-radio__label{
  598. // white-space: normal !important; /* 换行 */
  599. // }
  600. // }
  601. </style>
  602. <style>
  603. .elradio{
  604. display: flex;
  605. .el-radio__label{
  606. white-space: normal; /* 换行 */
  607. }
  608. }
  609. </style>