血透系统PC前端

index.vue 20KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551
  1. <template>
  2. <div class="main-contain">
  3. <div class="position">
  4. <bread-crumb :crumbs='crumbs'></bread-crumb>
  5. <div class="print" style="float:left;">
  6. <!-- <el-button type="primary" @click="dialogFormVisible = true">长期医嘱</el-button> -->
  7. <!-- <el-button type="primary" @click="orders = true">临时医嘱</el-button> -->
  8. <el-button size="small" type="primary" @click="printOrder" icon="el-icon-printer">打印</el-button>
  9. </div>
  10. </div>
  11. <div class="details-bg" v-loading.fullscreen.lock="loading">
  12. <nav-igation
  13. title="弹窗导航"
  14. :patient="patient"
  15. :schedual="schedual"
  16. :prescription="prescription"
  17. :solution="solution"
  18. :receiver_treatment_access="receiver_treatment_access"
  19. :predialysis_evaluation="predialysis_evaluation"
  20. :doctor_advices="doctor_advices"
  21. :double_check="double_check"
  22. :assessment_after_dislysis="assessment_after_dislysis"
  23. :treatment_summary="treatment_summary"
  24. :monitor_records="monitor_records"
  25. :dialysis_order="dialysis_order"
  26. :admin_users="admin_users"
  27. :devices="devices"
  28. :device_numbers="device_numbers"
  29. :admin_user_map="admin_user_map"
  30. :device_map="device_map"
  31. :device_number_map="device_number_map"
  32. :niprocart_info="niprocart_info"
  33. :jms_info="jms_info"
  34. :fistula_needle_set_info="fistula_needle_set_info"
  35. :fistula_needle_set_16_info="fistula_needle_set_16_info"
  36. :hemoperfusion_info="hemoperfusion_info"
  37. :dialyser_sterilised_info="dialyser_sterilised_info"
  38. :filtryzer_info="filtryzer_info"
  39. :dialyzers_info="dialyzers_info"
  40. :injector_info="injector_info"
  41. :bloodlines_info="bloodlines_info"
  42. :tubingHemodialysis_info="tubingHemodialysis_info"
  43. :safe_package_info="safe_package_info"
  44. :aliquid_info="aliquid_info"
  45. :config = "config"
  46. >
  47. </nav-igation>
  48. <basic-infor :patient="patient" :device_number="schedual.id == 0 ? '' : schedual.device_number.number"
  49. :steps="steps" title="基本信息"></basic-infor>
  50. <dialysis-prescription :prescription="prescription" :solution="solution" :device_map="device_map"
  51. title="透析处方"></dialysis-prescription>
  52. <!-- <past-data class="往期数据"></past-data> -->
  53. <div style="height: 20px;background-color: #f6f8f9" ></div>
  54. <accepts-assessment :record="receiver_treatment_access" title="接诊评估"></accepts-assessment>
  55. <assessment-before :record="predialysis_evaluation" ref="assessment_before" title="透前评估"></assessment-before>
  56. <stat-order ref="stat_order" :advices="doctor_advices" :doctor_map="admin_user_map" title="临时医嘱"></stat-order>
  57. <dialysis-computer ref="dialysis_computer" :record="dialysis_order" :admin_map="admin_user_map"
  58. :device_number_map="device_number_map" title="透析上机 "></dialysis-computer>
  59. <double-check ref="double_check" :record="double_check" :admin_map="admin_user_map" title="双人核对 "></double-check>
  60. <dialysis-monitoring ref="monitoring" :monitores="monitor_records" title="透析监测"></dialysis-monitoring>
  61. <el-dialog title="长期医嘱单" :visible.sync="dialogFormVisible" width="960px">
  62. <div class="printForm">
  63. <h1 class="title">长期医嘱单 </h1>
  64. <div class="info">
  65. <ul>
  66. <li>
  67. <span class="name">姓名:</span>
  68. <input type="text" class="InputBox">
  69. </li>
  70. <li>
  71. <span class="name">性别:</span>
  72. <input type="text" class="InputBox">
  73. </li>
  74. <li>
  75. <span class="name">年龄:</span>
  76. <input type="text" class="InputBox">
  77. </li>
  78. <li>
  79. <span class="name">科别:</span>
  80. <input type="text" class="InputBox">
  81. </li>
  82. <li>
  83. <span class="name">床号:</span>
  84. <input type="text" class="InputBox">
  85. </li>
  86. <li>
  87. <span class="name">住院号:</span>
  88. <input type="text" class="InputBox">
  89. </li>
  90. </ul>
  91. </div>
  92. <table border="1" style="border:1px #999 solid;margin-top:20px;" bordercolorlight="#fff"
  93. bordercolordark="#fff" width="100%" cellpadding="0" cellspacing="0" class="printTable">
  94. <tbody>
  95. <tr align="center">
  96. <th style="width:20%;" colspan="2" align="center">起始</th>
  97. <th style="width:20%;" rowspan="2" align="center">医嘱</th>
  98. <th style="width:8%;" rowspan="2" align="center">医师签名</th>
  99. <th style="width:6%;" rowspan="2" align="center">执行护士签名</th>
  100. <th style="width:42%;" colspan="4" align="center">停止</th>
  101. </tr>
  102. <tr align="center">
  103. <th align="center">日期</th>
  104. <th align="center">时间</th>
  105. <th style="width:10%;" align="center">日期</th>
  106. <th style="width:10%;" align="center">时间</th>
  107. <th style="width:10%;" align="center">医师签名</th>
  108. <th style="width:6%;" align="center">执行护士签名</th>
  109. </tr>
  110. <tr align="center">
  111. <td>2018-90-09</td>
  112. <td>2018-90-09</td>
  113. <td>地方开发发地方开发发方发发发大渡岗</td>
  114. <td>张三</td>
  115. <td>张三</td>
  116. <td>张三</td>
  117. <td>张三</td>
  118. <td>张三</td>
  119. <td>张三</td>
  120. </tr>
  121. <tr align="center">
  122. <td>2018-90-09</td>
  123. <td>2018-90-09</td>
  124. <td>地方开发发地方开发发方发发发大渡岗</td>
  125. <td>张三</td>
  126. <td>张三</td>
  127. <td>张三</td>
  128. <td>张三</td>
  129. <td>张三</td>
  130. <td>张三</td>
  131. </tr>
  132. </tbody>
  133. </table>
  134. </div>
  135. </el-dialog>
  136. <el-dialog title="临时医嘱单" :visible.sync="orders" width="960px">
  137. <div class="printForm">
  138. <h1 class="title">临时医嘱单</h1>
  139. <div class="info">
  140. <ul>
  141. <li>
  142. <span class="name">姓名:</span>
  143. <input type="text" class="InputBox">
  144. </li>
  145. <li>
  146. <span class="name">性别:</span>
  147. <input type="text" class="InputBox">
  148. </li>
  149. <li>
  150. <span class="name">年龄:</span>
  151. <input type="text" class="InputBox">
  152. </li>
  153. <li>
  154. <span class="name">科:</span>
  155. <input type="text" class="InputBox">
  156. </li>
  157. <li>
  158. <span class="name">区:</span>
  159. <input type="text" class="InputBox">
  160. </li>
  161. <li>
  162. <span class="name">房:</span>
  163. <input type="text" class="InputBox">
  164. </li>
  165. <li>
  166. <span class="name">床:</span>
  167. <input type="text" class="InputBox">
  168. </li>
  169. <li>
  170. <span class="name">住院号:</span>
  171. <input type="text" class="InputBox">
  172. </li>
  173. </ul>
  174. </div>
  175. <table border="1" style="border:1px #999 solid;margin-top:20px;" bordercolorlight="#fff"
  176. bordercolordark="#fff" width="100%" cellpadding="0" cellspacing="0" class="printTable">
  177. <tbody>
  178. <tr align="center">
  179. <th style="width:10%;" align="center">日期</th>
  180. <th style="width:10%;" align="center">时间</th>
  181. <th style="width:10%;" align="center">医生签名</th>
  182. <th style="width:40%;" align="center">医嘱内容</th>
  183. <th style="width:10%;" align="center">执行时间</th>
  184. <th style="width:10%;" align="center">护士签名</th>
  185. <th style="width:10%;" align="center">金额</th>
  186. </tr>
  187. <tr align="center">
  188. <td>2018-90-09</td>
  189. <td>2018-90-09</td>
  190. <td>张三</td>
  191. <td>张三</td>
  192. <td>张三</td>
  193. <td>张三</td>
  194. <td>888</td>
  195. </tr>
  196. <tr align="center">
  197. <td>2018-90-09</td>
  198. <td>2018-90-09</td>
  199. <td>张三</td>
  200. <td>张三</td>
  201. <td>2018-90-09</td>
  202. <td>张三</td>
  203. <td>888</td>
  204. </tr>
  205. </tbody>
  206. </table>
  207. </div>
  208. </el-dialog>
  209. <dialysis-off ref="dialysis_off" :record="dialysis_order" :admin_map="admin_user_map"
  210. title="透析下机 "></dialysis-off>
  211. <assessment-after ref="assessment_after" :record="assessment_after_dislysis" title="透后评估"></assessment-after>
  212. <treatment-of ref="treatment_of" :record="treatment_summary" title="治疗小结"></treatment-of>
  213. </div>
  214. </div>
  215. </template>
  216. <script>
  217. import NavIgation from './NavIgation'
  218. import BasicInfor from './BasicInfor'
  219. import DialysisPrescription from './DialysisPrescription'
  220. import PastData from './pastData'
  221. import AcceptsAssessment from './acceptsAssessment'
  222. import AssessmentBefore from './assessmentBefore'
  223. import StatOrder from './statOrder'
  224. import DialysisComputer from './dialysisComputer'
  225. import DoubleCheck from './doubleCheck'
  226. import DialysisMonitoring from './dialysisMonitoring'
  227. import DialysisOff from './dialysisOff'
  228. import AssessmentAfter from './assessmentAfter'
  229. import TreatmentOf from './treatmentOf'
  230. import OperationStaff from './operationStaff'
  231. import { getDialysisScheduleDetail } from '@/api/dialysis_record'
  232. import { parseTime } from '@/utils'
  233. import BreadCrumb from '@/xt_pages/components/bread-crumb'
  234. export default {
  235. name: 'index',
  236. components: {
  237. NavIgation,
  238. BasicInfor,
  239. DialysisPrescription,
  240. PastData,
  241. AcceptsAssessment,
  242. AssessmentBefore,
  243. StatOrder,
  244. DialysisComputer,
  245. DoubleCheck,
  246. DialysisMonitoring,
  247. DialysisOff,
  248. AssessmentAfter,
  249. TreatmentOf,
  250. OperationStaff,
  251. BreadCrumb
  252. },
  253. data() {
  254. return {
  255. crumbs: [
  256. { path: false, name: '透析管理' },
  257. { path: false, name: '透析记录' },
  258. { path: false, name: '透析单' }
  259. ],
  260. dialogFormVisible: false,
  261. orders: false,
  262. loading: false,
  263. patient_id: 0,
  264. date: 0,
  265. patient: { id: 0 }, // 患者信息
  266. schedual: { id: 0 }, // 患者排班信息
  267. prescription: { id: 0 }, // 透析处方
  268. solution: { id: 0 }, // 透析方案
  269. receiver_treatment_access: { id: 0 }, // 接诊评估
  270. predialysis_evaluation: { id: 0 }, // 透前评估
  271. doctor_advices: [], // 临时医嘱
  272. double_check: { id: 0 }, // 双人核对
  273. assessment_after_dislysis: { id: 0 }, // 透后评估
  274. treatment_summary: { id: 0 }, // 治疗小结
  275. monitor_records: [], // 透析监测
  276. dialysis_order: { id: 0 }, // 透析记录
  277. admin_users: [], // 系统用户列表
  278. devices: [], // 设备
  279. device_numbers: [], // 床位号
  280. admin_user_map: {}, // {user_id: admin_user object}
  281. device_map: {}, // {device_id: device}
  282. device_number_map: {}, // {device_number_id: device_number}
  283. niprocart_info: [],
  284. jms_info: [],
  285. fistula_needle_set_info: [],
  286. fistula_needle_set_16_info: [],
  287. hemoperfusion_info: [],
  288. dialyser_sterilised_info: [],
  289. filtryzer_info: [],
  290. dialyzers_info: [],
  291. injector_info: [],
  292. bloodlines_info: [],
  293. tubingHemodialysis_info: [],
  294. safe_package_info: [],
  295. aliquid_info: [],
  296. config: {}
  297. }
  298. },
  299. created() {
  300. var patient_id = this.$route.query.patient_id
  301. var date = this.$route.query.date
  302. this.patient_id = patient_id
  303. this.date = date
  304. this.getScheduleDetail()
  305. },
  306. computed: {
  307. steps: function() {
  308. var steps = [
  309. { title: '透析处方', finish: false },
  310. { title: '接诊评估', finish: false },
  311. { title: '透前评估', finish: false },
  312. { title: '临时医嘱', finish: false },
  313. { title: '双人核对', finish: false },
  314. { title: '透析上机', finish: false },
  315. { title: '透析监测', finish: false },
  316. { title: '透析下机', finish: false },
  317. { title: '透后评估', finish: false },
  318. { title: '治疗小结', finish: false }
  319. ]
  320. steps[0].finish = this.prescription.id > 0
  321. steps[1].finish = this.receiver_treatment_access.id > 0
  322. steps[2].finish = this.predialysis_evaluation.id > 0
  323. steps[3].finish = this.doctor_advices.length > 0
  324. steps[5].finish = this.dialysis_order.id > 0
  325. steps[7].finish =
  326. this.dialysis_order.id > 0 && this.dialysis_order.stage == 2
  327. steps[4].finish = this.double_check.id > 0 && this.double_check.creater > 0 && this.double_check.modifier > 0
  328. steps[6].finish = this.monitor_records.length > 0
  329. steps[8].finish = this.assessment_after_dislysis.id > 0
  330. steps[9].finish = this.treatment_summary.id > 0
  331. return steps
  332. }
  333. },
  334. methods: {
  335. didDelMonitor(record_id) {
  336. var mrl = this.monitor_records.length
  337. for (let index = 0; index < mrl; index++) {
  338. if (this.monitor_records[index].id == record_id) {
  339. this.monitor_records.splice(index, 1)
  340. break
  341. }
  342. }
  343. },
  344. getScheduleDetail: function() {
  345. this.loading = true
  346. var dateStr = parseTime(this.date, '{y}-{m}-{d}')
  347. getDialysisScheduleDetail(this.patient_id, dateStr).then(rs => {
  348. var resp = rs.data
  349. if (resp.state == 1) {
  350. var patient = resp.data.patient // 患者信息
  351. console.log('patient是史森明', patient)
  352. var schedual = resp.data.schedual // 患者排班信息
  353. var prescription = resp.data.prescription // 透析处方
  354. console.log('prescription', prescription)
  355. var solution = resp.data.solution // 透析方案
  356. var receiver_treatment_access = resp.data.receiver_treatment_access // 接诊评估
  357. var predialysis_evaluation = resp.data.predialysis_evaluation // 透前评估
  358. console.log('predialysis_evaluation', predialysis_evaluation)
  359. var doctor_advices = resp.data.doctor_advices // 临时医嘱
  360. var double_check = resp.data.double_check // 双人核对
  361. var assessment_after_dislysis = resp.data.assessment_after_dislysis // 透后评估
  362. var treatment_summary = resp.data.treatment_summary // 治疗小结
  363. var monitor_records = resp.data.monitor_records // 透析监测
  364. var dialysis_order = resp.data.dialysis_order // 透析记录
  365. var niprocart_info = resp.data.niprocart_info
  366. var jms_info = resp.data.jms_info
  367. var fistula_needle_set_info = resp.data.fistula_needle_set_info
  368. var fistula_needle_set_16_info = resp.data.fistula_needle_set_16_info
  369. var hemoperfusion_info = resp.data.hemoperfusion_info
  370. var dialyser_sterilised_info = resp.data.dialyser_sterilised_info
  371. var filtryzer_info = resp.data.filtryzer_info
  372. var dialyzers_info = resp.data.dialyzers_info
  373. var injector_info = resp.data.injector_info
  374. var bloodlines_info = resp.data.bloodlines_info
  375. var tubingHemodialysis_info = resp.data.tubingHemodialysis_info
  376. var safe_package_info = resp.data.safe_package_info
  377. var aliquid_info = resp.data.aliquid_info
  378. var config = resp.data.config
  379. this.niprocart_info = niprocart_info
  380. this.jms_info = jms_info
  381. this.fistula_needle_set_info = fistula_needle_set_info
  382. this.fistula_needle_set_16_info = fistula_needle_set_16_info
  383. this.hemoperfusion_info = hemoperfusion_info
  384. this.dialyser_sterilised_info = dialyser_sterilised_info
  385. this.filtryzer_info = filtryzer_info
  386. this.dialyzers_info = dialyzers_info
  387. this.injector_info = injector_info
  388. this.bloodlines_info = bloodlines_info
  389. this.tubingHemodialysis_info = tubingHemodialysis_info
  390. this.safe_package_info = safe_package_info
  391. this.aliquid_info = aliquid_info
  392. this.config = config
  393. this.patient = patient
  394. this.schedual = schedual == null ? { id: 0 } : schedual
  395. this.prescription = prescription == null ? { id: 0 } : prescription
  396. this.solution = solution == null ? { id: 0 } : solution
  397. this.receiver_treatment_access =
  398. receiver_treatment_access == null
  399. ? { id: 0 }
  400. : receiver_treatment_access
  401. this.predialysis_evaluation =
  402. predialysis_evaluation == null ? { id: 0 } : predialysis_evaluation
  403. this.doctor_advices = doctor_advices == null ? [] : doctor_advices
  404. this.double_check = double_check == null ? { id: 0 } : double_check
  405. this.assessment_after_dislysis =
  406. assessment_after_dislysis == null
  407. ? { id: 0 }
  408. : assessment_after_dislysis
  409. this.treatment_summary =
  410. treatment_summary == null ? { id: 0 } : treatment_summary
  411. this.monitor_records = monitor_records == null ? [] : monitor_records
  412. this.dialysis_order =
  413. dialysis_order == null ? { id: 0 } : dialysis_order
  414. // this.$refs.stat_order.setAdvices(this.doctor_advices)
  415. // this.$refs.monitoring.setRecords(this.monitor_records)
  416. this.admin_users = resp.data.doctors
  417. this.devices = resp.data.devices
  418. this.device_numbers = resp.data.device_numbers
  419. var device_map = {}
  420. for (let index = 0; index < this.devices.length; index++) {
  421. const device = this.devices[index]
  422. device_map[device.id] = device
  423. }
  424. this.device_map = device_map
  425. var admin_map = {}
  426. for (let index = 0; index < this.admin_users.length; index++) {
  427. const admin = this.admin_users[index]
  428. admin_map[admin.id] = admin
  429. }
  430. this.admin_user_map = admin_map
  431. var device_number_map = {}
  432. for (let index = 0; index < this.device_numbers.length; index++) {
  433. const device_number = this.device_numbers[index]
  434. device_number_map[device_number.id] = device_number
  435. }
  436. this.device_number_map = device_number_map
  437. } else {
  438. this.$message.error(resp.msg)
  439. }
  440. this.loading = false
  441. })
  442. },
  443. printOrder() {
  444. var xtdate = parseTime(this.date, '{y}-{m}-{d}')
  445. this.$router.push(
  446. '/dialysis/print?xtdate=' + xtdate + '&xtno=' + this.patient.dialysis_no
  447. )
  448. }
  449. }
  450. }
  451. </script>
  452. <style style="stylesheet/scss" lang="scss" scoped>
  453. .details-bg{
  454. background: #fff;
  455. margin: 0 15px;
  456. }
  457. .printForm {
  458. .title {
  459. font-size: 30px;
  460. font-weight: 500;
  461. text-align: center;
  462. line-height: 60px;
  463. }
  464. .info {
  465. ul {
  466. display: -webkit-box;
  467. display: -moz-box;
  468. display: -ms-flexbox;
  469. display: -webkit-flex;
  470. display: flex;
  471. align-items: center;
  472. -moz-box-sizing: border-box;
  473. -webkit-box-sizing: border-box;
  474. -o-box-sizing: border-box;
  475. -ms-box-sizing: border-box;
  476. box-sizing: border-box;
  477. -webkit-justify-content: space-around;
  478. -moz-justify-content: space-around;
  479. -ms-justify-content: space-around;
  480. -o-justify-content: space-around;
  481. justify-content: space-around;
  482. li {
  483. display: flex;
  484. box-sizing: border-box;
  485. justify-content: space-around;
  486. .name {
  487. }
  488. .InputBox {
  489. padding: 0;
  490. border: none;
  491. border-bottom: 1px #e5e5e5 solid;
  492. width: 60px;
  493. outline: none;
  494. }
  495. }
  496. }
  497. }
  498. .printTable {
  499. tr {
  500. padding: 2px;
  501. th {
  502. padding: 6px 4px;
  503. }
  504. td {
  505. padding: 6px 4px;
  506. }
  507. }
  508. }
  509. }
  510. </style>