Elizabeth's proactive approach involves introducing urinal toilet attachment , an ingenious concept that optimizes space and functionality.

printTwo.vue 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399
  1. <template>
  2. <div id="prescription-print">
  3. <div class="prescription-print">
  4. <div class="printTitle">{{ orgname }}血透中心病历</div>
  5. <!-- <div class="record_Title">
  6. <div>姓名:{{patient.name?patient.name:''}}</div>
  7. <div>性别:
  8. <span v-if="patient.gender == 1">男</span>
  9. <span v-if="patient.gender == 2">女</span>
  10. </div>
  11. <div>年龄:{{patient.age?patient.age:''}}岁</div>
  12. <div>透析病历号:{{patient.id?patient.id:''}}</div>
  13. </div> -->
  14. <div class="infoTitle" style="margin-top: 20px">
  15. <div class="name_slot">
  16. 姓名:{{ patient.name ? patient.name : "" }}
  17. </div>
  18. <div class="address_slot">
  19. 家庭住址:{{ patient.home_address ? patient.home_address : "" }}
  20. </div>
  21. </div>
  22. <div class="infoTitle">
  23. <div class="name_slot">
  24. 性别:
  25. <span v-if="patient.gender == 1">男</span>
  26. <span v-if="patient.gender == 2">女</span>
  27. </div>
  28. <div class="address_slot">工作单位:{{ patient.work_unit }}</div>
  29. </div>
  30. <div class="infoTitle">
  31. <div class="name_slot">
  32. 出生日期:{{ patient.id_card_no.slice(6, 10) }}年{{
  33. patient.id_card_no.slice(10, 12)
  34. }}月{{ patient.id_card_no.slice(12, 14) }}日
  35. </div>
  36. <div class="address_slot">身份证号:{{ patient.id_card_no }}</div>
  37. </div>
  38. <div class="infoTitle">
  39. <div class="name_slot">联系人:{{ patient.contact_name }}</div>
  40. <div class="address_slot">
  41. 联系电话:{{ patient.phone ? patient.phone : "" }}
  42. </div>
  43. </div>
  44. <div class="otherInfo" style="border-bottom: 1px solid">
  45. <div>进入透析时间:{{ getTime(patient.first_dialysis_date) }}</div>
  46. <div style="flex: 1"></div>
  47. </div>
  48. <div class="infoTitle">
  49. <div style="width: 300px">原发病:{{ history.primary_disease }}</div>
  50. <div class="address_slot">
  51. 确诊肾衰日期:{{ getTime(history.confirm_failure_date) }}
  52. </div>
  53. </div>
  54. <div class="otherInfo">
  55. <div>
  56. 药物过敏史:{{
  57. history.allergic_history ? history.allergic_history : ""
  58. }}
  59. </div>
  60. </div>
  61. <div class="otherInfo">
  62. <div>初始透析日期:{{ getTime(patient.first_dialysis_date) }}</div>
  63. <div style="flex: 1"></div>
  64. </div>
  65. <div class="otherInfo" style="border-bottom: 1px solid">
  66. <div>血管通路:{{ accessList.blood_access_part_opera_id }}</div>
  67. <div style="flex: 1"></div>
  68. </div>
  69. <div class="otherInfo" style="min-height: 60px">
  70. <div class="otherName">主诉:</div>
  71. <div style="flex: 1">
  72. {{ history.chief_conplaint ? history.chief_conplaint : "" }}
  73. </div>
  74. </div>
  75. <div class="otherInfo" style="min-height: 180px">
  76. <div class="otherName">现病史:</div>
  77. <div style="flex: 1">
  78. {{
  79. history.history_of_present_illness
  80. ? history.history_of_present_illness
  81. : ""
  82. }}
  83. </div>
  84. </div>
  85. <div class="otherInfo" style="min-height: 100px">
  86. <div class="otherName">既往史:</div>
  87. <div style="flex: 1">
  88. {{ history.past_history ? history.past_history : "" }}
  89. </div>
  90. </div>
  91. <div class="otherInfo" style="min-height: 80px">
  92. <div class="otherName">个人史:</div>
  93. <div style="flex: 1">
  94. {{ history.personal_history ? history.personal_history : "" }}
  95. </div>
  96. </div>
  97. <div class="otherInfo" style="min-height: 150px">
  98. <div class="otherName">家族史:</div>
  99. <div style="flex: 1">
  100. {{ history.family_history ? history.family_history : "" }}
  101. </div>
  102. </div>
  103. </div>
  104. <div style="page-break-after: always; margin-top: 50px"></div>
  105. <div class="prescription-print">
  106. <!-- <div class="printTitle">病历内容</div> -->
  107. <div class="recordTitle">
  108. <div>体格检查</div>
  109. <div class="recordContent" style="height: fit-content;min-height: 250px;">
  110. <div>
  111. <span
  112. >体温:{{
  113. history.temperature ? history.temperature + "℃" : "/"
  114. }}</span
  115. >
  116. <span
  117. >脉搏:{{ history.pulse ? history.pulse + "次/分" : "/" }}</span
  118. >
  119. <span
  120. >呼吸:{{
  121. history.breathing ? history.breathing + "次/分" : "/"
  122. }}</span
  123. >
  124. <span>血压:{{ history.sbp }}/{{ history.dbp }}mmHg</span>
  125. </div>
  126. <div style="text-align:left;">
  127. {{history.physical_examination}}
  128. </div>
  129. </div>
  130. </div>
  131. <div class="recordTitle">
  132. <div>专科检查</div>
  133. <div class="recordContent">{{ history.special_inspection }}</div>
  134. </div>
  135. <div class="recordTitle" style="border-bottom: 1px solid">
  136. <div>实验室及器械检查</div>
  137. <div class="recordContent" style="height: fit-content;min-height: 250px;">
  138. {{ history.lab_apparatus }}
  139. </div>
  140. </div>
  141. <div style="display: flex; justify-content: flex-end">
  142. <div class="endInfo">
  143. <div style="height: 100px">
  144. 诊断:{{ history.diagnostic ? history.diagnostic : "" }}
  145. </div>
  146. <div style="display: flex">
  147. <div>
  148. 医师:{{
  149. getDoctor(history.doctor) ? getDoctor(history.doctor) : ""
  150. }}
  151. </div>
  152. <div>手签:</div>
  153. </div>
  154. <div
  155. style="text-align: center; letter-spacing: 3px; padding-top: 20px"
  156. >
  157. {{ getTime(history.record_date) }}
  158. </div>
  159. </div>
  160. </div>
  161. </div>
  162. </div>
  163. </template>
  164. <script>
  165. import { jsGetAge, uParseTime } from "@/utils/tools";
  166. import { getDataConfig } from "@/utils/data";
  167. import { getAllDoctorList, getPatientCaseHistory } from "@/api/project/project";
  168. import { getAccessList } from "@/api/patient";
  169. export default {
  170. props: {
  171. patient: Object,
  172. hispatient: Object,
  173. patientid: Number,
  174. // history:Object,
  175. },
  176. data() {
  177. return {
  178. educationOptions: [],
  179. departmentList: [],
  180. orgname: "",
  181. history: {},
  182. printDate: "",
  183. accessList: {},
  184. blood_access_part_opera: [],
  185. };
  186. },
  187. methods: {
  188. getAge(patient) {
  189. var thisLen = patient.id_card_no.length;
  190. var birth = "";
  191. if (thisLen == 15) {
  192. birth = "19" + patient.id_card_no.substr(6, 6);
  193. } else {
  194. birth = patient.id_card_no.substr(6, 8);
  195. }
  196. var births =
  197. birth.substr(0, 4) +
  198. "-" +
  199. birth.substr(4, 2) +
  200. "-" +
  201. birth.substr(6, 2);
  202. return jsGetAge(births, "-");
  203. },
  204. show(val) {
  205. this.patientid = val;
  206. this.getAllDoctorList();
  207. this.getPatientCaseHistory();
  208. },
  209. getProfession(id) {
  210. var name = "";
  211. for (let i = 0; i < this.educationOptions.length; i++) {
  212. if (id == this.educationOptions[i].id) {
  213. name = this.educationOptions[i].name;
  214. }
  215. }
  216. return name;
  217. },
  218. getAllDoctorList() {
  219. getAllDoctorList().then((response) => {
  220. if (response.data.state == 1) {
  221. var doctor = response.data.data.doctor;
  222. this.doctorList = doctor;
  223. var department = response.data.data.department;
  224. this.departmentList = department;
  225. }
  226. });
  227. },
  228. getDoctor(id) {
  229. var name = "";
  230. for (let i = 0; i < this.doctorList.length; i++) {
  231. if (id == this.doctorList[i].admin_user_id) {
  232. name = this.doctorList[i].user_name;
  233. }
  234. }
  235. return name;
  236. },
  237. getPatientCaseHistory() {
  238. const params = {
  239. patient_id: this.patientid,
  240. };
  241. getPatientCaseHistory(params).then((response) => {
  242. if (response.data.state == 1) {
  243. var patient = response.data.data.patient;
  244. this.patient = patient;
  245. var history = response.data.data.history;
  246. this.history = history;
  247. var hispatient = response.data.data.hispatient;
  248. this.hispatient = hispatient;
  249. var accessList = response.data.data.accessList;
  250. this.accessList = accessList;
  251. }
  252. });
  253. },
  254. getDeparment(id) {
  255. var name = "";
  256. for (let i = 0; i < this.departmentList.length; i++) {
  257. if (id == this.departmentList[i].id) {
  258. name = this.departmentList[i].name;
  259. }
  260. }
  261. return name;
  262. },
  263. getTime(val) {
  264. if (val < 0) {
  265. return "";
  266. }
  267. if (val == "") {
  268. return "";
  269. } else {
  270. return uParseTime(val, "{y}-{m}-{d}");
  271. }
  272. },
  273. getAccessList() {
  274. getAccessList().then((response) => {
  275. if (response.data.state == 1) {
  276. var blood_access_part_opera =
  277. response.data.data.blood_access_part_opera;
  278. this.blood_access_part_opera = blood_access_part_opera;
  279. }
  280. });
  281. },
  282. getAccess(id) {
  283. var name = "";
  284. for (let i = 0; i < this.blood_access_part_opera.length; i++) {
  285. if (id == this.blood_access_part_opera[i].value) {
  286. name = this.blood_access_part_opera[i].name;
  287. }
  288. }
  289. return name;
  290. },
  291. },
  292. created() {
  293. this.educationOptions = getDataConfig("patient", "education_types");
  294. // this.getAllDoctorList();
  295. // this.getPatientCaseHistory();
  296. // this.getAccessList();
  297. var xtuser = this.$store.getters.xt_user;
  298. this.orgname = xtuser.org.org_name;
  299. var data = new Date();
  300. var month =
  301. data.getMonth() < 9 ? "0" + (data.getMonth() + 1) : data.getMonth() + 1;
  302. var date = data.getDate() <= 9 ? "0" + data.getDate() : data.getDate();
  303. this.printDate = data.getFullYear() + "-" + month + "-" + date;
  304. },
  305. };
  306. </script>
  307. <style lang="scss" scoped>
  308. .prescription-print {
  309. -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27),
  310. 0 0 60px rgba(0, 0, 0, 0.06) inset;
  311. -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27),
  312. 0 0 40px rgba(0, 0, 0, 0.06) inset;
  313. box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset;
  314. margin-bottom: 20px;
  315. padding: 20px 10px;
  316. }
  317. .printTitle {
  318. font-size: 22px;
  319. text-align: center;
  320. font-weight: bold;
  321. }
  322. .infoTitle {
  323. display: flex;
  324. margin-top: 10px;
  325. line-height: 24px;
  326. padding: 0 10px;
  327. }
  328. .infoTitle div {
  329. width: 200px;
  330. }
  331. .infoTitle .address_slot {
  332. width: 400px;
  333. }
  334. .infoTitle .name_slot {
  335. width: 250px;
  336. }
  337. .otherInfo {
  338. display: flex;
  339. margin-top: 10px;
  340. line-height: 24px;
  341. padding: 0 10px;
  342. }
  343. .endInfo {
  344. display: flex;
  345. flex-direction: column;
  346. justify-content: end;
  347. margin-top: 10px;
  348. line-height: 24px;
  349. }
  350. .endInfo div {
  351. width: 300px;
  352. }
  353. .recordTitle {
  354. display: flex;
  355. justify-content: center;
  356. flex-direction: column;
  357. margin-top: 10px;
  358. line-height: 24px;
  359. padding: 0 10px;
  360. border-top: 1px solid;
  361. }
  362. .recordTitle div {
  363. width: 100%;
  364. text-align: center;
  365. }
  366. .recordTitle .recordContent {
  367. width: 100%;
  368. height: fit-content;
  369. min-height: 150px;
  370. text-align: left;
  371. }
  372. .record_Title {
  373. display: flex;
  374. margin-top: 10px;
  375. line-height: 24px;
  376. padding: 0 10px;
  377. border-bottom: 2px solid #000;
  378. }
  379. .record_Title div {
  380. width: 200px;
  381. }
  382. </style>