prescription.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450
  1. "use strict";
  2. /**
  3. * mplus_modal_prescription
  4. */
  5. var mplus_modal_prescription = function(){
  6. // 상속
  7. mplus_common.call(this);
  8. // 상위 객체 생성
  9. //var mplusPatient = new mplus_mobile_patient();
  10. //var mplusNursing = new mplus_nursing();
  11. //super
  12. var self = this;
  13. var varPrescriptionLists = [];
  14. //20190607 dkchoi75
  15. // var varExamrslttyParam = { "examCd" : "", "examRsltKey" : "", "examRsltKey2" : "", "examRsltKey3" : "" };
  16. var varExamrslttyParam = { "examCd" : "", "examRsltKey" : "", "examRsltKey2" : "", "examRsltKey3" : "", "prescriptionNo" : "" };
  17. //==== 변수 { ====
  18. //==== 변수 } ====
  19. /**
  20. * 초기화
  21. */
  22. this.init = function(){ //여기서 모든화면 콤보박스데이터를 집어넣자!!! 그래야지 화면이동할때 속도가 오래걸리지않음!!!
  23. // 초기 화면 조건 구성
  24. initCondition();
  25. // 이벤트 초기화
  26. addEvent();
  27. };
  28. //==== 초기화 설정 { ====
  29. var initCondition = function(){
  30. initEmptyData();
  31. initSetData();
  32. // 초기 화면 조건 구성
  33. //외래 입원 분기처리
  34. searchMedicalInOut();
  35. //처방조회 조회
  36. //searchMedicalPrescriptionList();
  37. //3.처방 분류 리스트
  38. searchMedicalPrescriptionClsList();
  39. //4.처방 상태 리스트
  40. searchMedicalgetPrescriptionStatList();
  41. //5.구분 리스트
  42. searchMedicalgetPrescriptionClassList();
  43. };
  44. var initSetData = function(){
  45. var varToday = new Date();
  46. $("#txtPrescriptionVisitDt").val(moment(varToday).format("YYYY-MM-DD"));
  47. };
  48. var initEmptyData = function(){
  49. $("#divPrescriptionResultRows").empty();
  50. varPrescriptionLists = [];
  51. // 20190607 dkchoi75
  52. //varExamrslttyParam = { "examCd" : "", "examRsltKey" : "", "examRsltKey2" : "", "examRsltKey3" : "" };
  53. varExamrslttyParam = { "examCd" : "", "examRsltKey" : "", "examRsltKey2" : "", "examRsltKey3" : "", "prescriptionNo" : "" };
  54. }
  55. var searchMedicalPrescriptionList = function(){
  56. var varPrescriptionDt = "";
  57. if(gPatientTreatCls == "I"){ //입원
  58. varPrescriptionDt = moment($("#txtPrescriptionVisitDt").val()).format("YYYYMMDD");
  59. //20190520 dkchoi75 백병원 입원>처방조회 시 외래일자 API 변경 미처리 부분
  60. // varPrescriptionDt = moment($("#sltOutPrescriptionHospitalizationDt").val()).format("YYYYMMDD");
  61. }else if(gPatientTreatCls == "O"){ //외래
  62. varPrescriptionDt = moment($("#sltOutPrescriptionHospitalizationDt").val()).format("YYYYMMDD");
  63. }
  64. // 20190502 dkchoi75 : 응급 처방조회 목록 수정
  65. else if(gPatientTreatCls == "E"){ //응급
  66. varPrescriptionDt = moment($("#sltOutPrescriptionHospitalizationDt").val()).format("YYYYMMDD");
  67. }
  68. var param = {
  69. userId:gLoginUserId,
  70. patientId:gPatientId,
  71. deptCd:gPatientDeptCd,
  72. searchCls:gPatientTreatCls,
  73. prescriptionDt:varPrescriptionDt,
  74. prescriptionClsCd:$("#sltPrescriptionClsCd").val(),
  75. prescriptionStatCd:$("#sltPrescriptionStatCd").val(),
  76. prescriptionCls2Cd:$("#sltPrescriptionClass").val()
  77. };
  78. self.medical.getPrescription(param, processSearchMedicalPrescriptionList);
  79. };
  80. var processSearchMedicalPrescriptionList = function(lists){
  81. //console.log(JSON.stringify(lists));
  82. varPrescriptionLists = lists;
  83. var strDisplayTemp = "";
  84. $("#divPrescriptionResultRows").empty();
  85. for( var i = 0; i < lists.length; i++){
  86. strDisplayTemp += "<div id=\"" + "divPrescriptionList" + i + "\" class=\"row list-group-item\" listCnt=\"" + i + "\" prescriptionNo=\"" + lists[i].prescriptionNo + "\" style=\"overflow: hidden; padding-left: 0px; padding-right: 0px;\">"
  87. + " <div class=\"col-xs-12\" style=\" padding-left: 0px; padding-right: 0px;\">"
  88. + " <div class=\"col-xs-1 text-center\" style=\"padding: 0px;\">" + lists[i].prescriptionStatNm + "</div>"
  89. + " <div class=\"col-xs-1 text-center\" style=\"padding: 0px;\">" + lists[i].prescriptionClsNm + "</div>"
  90. + " <div class=\"col-xs-1 text-center\" style=\"padding: 0px;\">" + lists[i].prescriptionCls2Nm + "</div>"
  91. + " <div class=\"col-xs-9\" style=\"padding-left: 5px;\">" + lists[i].prescriptionNm + "</div>"
  92. + " </div>"
  93. + " <div id=\"divPrescriptionDetail" + i + "\" class=\"hidden col-xs-12\">"
  94. + " <div class=\"col-xs-2 \" style=\"padding: 0px;\">" + "</div>"
  95. + " <div class=\"col-xs-10 \" style=\"padding: 0px;\">" + lists[i].prescriptionStatNm + " / " + ((lists[i].commentYn == "Y") ? lists[i].comment : "") + "</div>"
  96. + " <div class=\"col-xs-2 \" style=\"padding: 0px;\"></div>"
  97. + " <div class=\"col-xs-10 \" style=\"padding: 0px;\">" ;
  98. if(lists[i].examResultKey != null && lists[i].examResultKey != "" && lists[i].examResultKey != "-"){
  99. strDisplayTemp += " <button id=\"btnCallExamrsltty\" type=\"button\" class=\"btn btn-info\">검사결과</button>"
  100. }
  101. if(lists[i].medicationKeyYn == "Y"){
  102. strDisplayTemp += " <button id=\"btnCallMedicationlist\" type=\"button\" class=\"btn btn-info\">투약조회</button>"
  103. }
  104. //2019.04.15. 건대 코드 하드코딩
  105. // prescriptionClsCd (11 주사)(12 내복약) 또는 처방코드 앞문자가 M 또는 I
  106. //2019.05.09 백병원 요구사항으로 약품정보 버튼 미노출
  107. // 20190610 dkchoi75 일산백병원 요구사항으로 약품정보 버튼 노출 Y: 노출 N:미노출
  108. var varDrogInfoButtonYn = "Y";
  109. //if(lists[i].prescriptionClsCd == "11" || lists[i].prescriptionClsCd == "12" || (lists[i].prescriptionCd).indexOf("M") == 0 || (lists[i].prescriptionCd).indexOf("I") == 0){
  110. if(lists[i].prescriptionCd != null && lists[i].prescriptionCd != "" && lists[i].prescriptionCd != "-"){
  111. //if(lists[i].comment != null && lists[i].comment != "" && lists[i].comment != "-" && varDrogInfoButtonYn == "Y"){
  112. strDisplayTemp += " <button id=\"btnCallPrescriptionDrugInfo\" type=\"button\" class=\"btn btn-info\">약품정보</button>"
  113. }
  114. strDisplayTemp += " </div>"
  115. + " </div>"
  116. + "</div>"
  117. ;
  118. //console.log( i + " : " + lists[i].deptNm);
  119. }
  120. $("#divPrescriptionResultRows").append(strDisplayTemp); // element 추가
  121. //선택이벤트 처리
  122. addEventPrescriptionResult();
  123. };
  124. var addEventPrescriptionResult = function() {
  125. $("#divPrescriptionResultRows .list-group-item").off("click"); // 기존 이벤트 해제
  126. $("#divPrescriptionResultRows .list-group-item").on("click", function(e){
  127. //진료기록 조회 리스트 검색 처리
  128. var varPreCnt = e.currentTarget.attributes.listCnt.value;
  129. var divPrescriptionId = "#divPrescriptionDetail" + varPreCnt;
  130. // 20190610 dkchoi75 일산백병원 약품정보 Naver 연동 서비스 구분 N:Naver, E:내부EMR, K:킴스
  131. var varDrugInfoApi = "N";
  132. //버튼 클릭 이벤트 처리
  133. if((e.target.id).indexOf("btnCallExamrsltty") != -1){//검사결과
  134. varExamrslttyParam.examRsltKey =
  135. ((varPrescriptionLists[varPreCnt].examResultKey != undefined ||
  136. varPrescriptionLists[varPreCnt].examResultKey != null ||
  137. varPrescriptionLists[varPreCnt].examResultKey != "" ||
  138. varPrescriptionLists[varPreCnt].examResultKey != "-") ? varPrescriptionLists[varPreCnt].examResultKey : ""
  139. );
  140. // 20190607 dkchoi75
  141. varExamrslttyParam.prescriptionNo = varPrescriptionLists[varPreCnt].prescriptionNo;
  142. if (varPrescriptionLists[varPreCnt].isExamResult == "1"){
  143. // if(varPrescriptionLists[varPreCnt].examResultKey != null && varPrescriptionLists[varPreCnt].examResultKey != "" && varPrescriptionLists[varPreCnt].examResultKey != "-"){
  144. //examResultKey의 값을 정확하게 처리해야함!!! 체크바람!
  145. if(varPrescriptionLists[varPreCnt].examRsltTy == "1"){//검사결과 검체
  146. $("#modalExamRsltTy1").modal("show");
  147. //mplusModalExamrsltty1.init(varPrescriptionLists[varPreCnt]);
  148. mplusModalExamrsltty1.init(varExamrslttyParam);
  149. }else{//판독결과
  150. // 환자 정보 화면 띄우기
  151. $("#modalExamRsltTy2").modal("show");
  152. //mplusModalExamrsltty2.init(varPrescriptionLists[varPreCnt]);
  153. mplusModalExamrsltty2.init(varExamrslttyParam);
  154. }
  155. }else{
  156. //self.alert("데이터 오류입니다. 관리자에게 문의하세요.");
  157. console.log("examResultKey값 확인바람 : " + varPrescriptionLists[varPreCnt].examResultKey);
  158. }
  159. return;
  160. }else if((e.target.id).indexOf("btnCallMedicationlist") != -1){//투약조회
  161. if(/*varPrescriptionLists[varPreCnt].prescriptionNo != "" &&*/ varPrescriptionLists[varPreCnt].prescriptionCd != ""&& varPrescriptionLists[varPreCnt].medicationSearchDt != ""){
  162. var param = {
  163. prescriptionCd: varPrescriptionLists[varPreCnt].prescriptionCd,
  164. prescriptionNo: varPrescriptionLists[varPreCnt].prescriptionNo,
  165. medicationSearchDt: varPrescriptionLists[varPreCnt].medicationSearchDt
  166. };
  167. $("#modalMedicationList").modal("show");
  168. mplusModalMedicationlist.init(param);
  169. }else{
  170. //self.alert("데이터 오류입니다. 관리자에게 문의하세요.");
  171. console.log("prescriptionCd 확인바람 : " + varPrescriptionLists[varPreCnt].prescriptionCd);
  172. }
  173. return;
  174. }else if((e.target.id).indexOf("btnCallPrescriptionDrugInfo") != -1){//약품정보
  175. //if(varPrescriptionLists[varPreCnt].prescriptionCd != null && varPrescriptionLists[varPreCnt].prescriptionCd != "" && varPrescriptionLists[varPreCnt].prescriptionCd != "-"){
  176. // if(varPrescriptionLists[varPreCnt].comment != null && varPrescriptionLists[varPreCnt].comment != "" && varPrescriptionLists[varPreCnt].comment != "-" ){
  177. // 20190610 dkchoi75 일산백병원 약품정보 Naver 연동
  178. if (varDrugInfoApi == "N") {
  179. var jsonMsg = {
  180. "type":"command",
  181. "functionType":"popup",
  182. "value" : {
  183. "url" : "http://m.terms.naver.com/medicineSearch.nhn?query=" + varPrescriptionLists[varPreCnt].comment,
  184. "method": "GET", // Default "GET" ** 2017-10-19 추가
  185. "parameters": "-" // POST 인 경우만, GET 인 경우는 "url" 에 모두 붙여서 전달 ** 2017-10-19 추가
  186. }
  187. };
  188. self.toNative(jsonMsg);
  189. } else if (varDrugInfoApi == "E") {
  190. var param = {
  191. orderCd: varPrescriptionLists[varPreCnt].prescriptionCd
  192. };
  193. //console.log("prescriptionCd : " + varPrescriptionLists[varPreCnt].prescriptionCd);
  194. mplusModalMedication.init(param);
  195. $("#mplusAlertDrugInfo").modal("show");
  196. } else if (varDrugInfoApi == "K") {
  197. // 킴스 연동 부분
  198. }
  199. // }else{
  200. //self.alert("데이터 오류입니다. 관리자에게 문의하세요.");
  201. // self.alert("약품정보가 없습니다.");
  202. //console.log("prescriptionCd 확인바람 : " + varPrescriptionLists[varPreCnt].prescriptionCd);
  203. // }
  204. return;
  205. }
  206. if( $(divPrescriptionId).hasClass("hidden")) {
  207. $(divPrescriptionId).removeClass("hidden");
  208. } else {
  209. $(divPrescriptionId).addClass("hidden");
  210. }
  211. });
  212. };
  213. var searchMedicalInOut = function(){
  214. if(gPatientTreatCls == "I"){ //입원
  215. $("#divOutPrescriptionHospitalizationDt").addClass('hidden');
  216. $("#divInPrescriptionHospitalizationDt").removeClass('hidden');
  217. //1.입원일자 이력 리스트
  218. // 20190514 dkchoi75 백병원 요구사항 입원->처방조회 검색 부분 외래로 맞춰달라고 함
  219. //$("#divOutPrescriptionHospitalizationDt").removeClass('hidden');
  220. //$("#divInPrescriptionHospitalizationDt").addClass('hidden');
  221. searchMedicalInDateList();
  222. //searchMedicalOutDateList();
  223. }else if(gPatientTreatCls == "O"){ //외래
  224. $("#divOutPrescriptionHospitalizationDt").removeClass('hidden');
  225. $("#divInPrescriptionHospitalizationDt").addClass('hidden');
  226. //2.외래 진료일자 이력 리스트
  227. searchMedicalOutDateList();
  228. }
  229. // 20190502 dkchoi75 : 응급 처방조회 목록 수정
  230. else if(gPatientTreatCls == "E"){ //응급
  231. $("#divOutPrescriptionHospitalizationDt").removeClass('hidden');
  232. $("#divInPrescriptionHospitalizationDt").addClass('hidden');
  233. //3.응급(외래) 진료일자 이력 리스트
  234. searchMedicalOutDateList();
  235. }
  236. };
  237. var searchMedicalInDateList = function(){
  238. var param = {
  239. userId:gLoginUserId,
  240. patientId:gPatientId
  241. };
  242. self.medical.getInDateList(param, processSearchMedicalInDateList);
  243. };
  244. var processSearchMedicalInDateList = function(lists){
  245. $("#sltInPrescriptionHospitalizationDt").empty();
  246. var strDisplayTemp = "";
  247. strDisplayTemp = "<option value=\"\">입원일자 리스트</option>";
  248. if(lists != undefined){
  249. for(var i=0; i<lists.length; i++){
  250. var varHospitalizationDt = "";
  251. var varDischargeDt = "";
  252. if(lists[i].hospitalizationDt != undefined && lists[i].hospitalizationDt != "" && lists[i].hospitalizationDt != null) {
  253. varHospitalizationDt = moment(lists[i].hospitalizationDt).format("YYYY-MM-DD");
  254. } else {
  255. varHospitalizationDt = lists[i].hospitalizationDt;
  256. }
  257. if(lists[i].dischargeDt != undefined && lists[i].dischargeDt != "" && lists[i].dischargeDt != null) {
  258. varDischargeDt = moment(lists[i].dischargeDt).format("YYYY-MM-DD");
  259. } else {
  260. varDischargeDt = lists[i].dischargeDt;
  261. }
  262. // strDisplayTemp += "<option value=\""+ lists[i].hospitalizationDt +"\">"+ moment(lists[i].hospitalizationDt).format("YYYY-MM-DD") + "~" + moment(lists[i].dischargeDt).format("YYYY-MM-DD") +"</option>";
  263. strDisplayTemp += "<option value=\""+ varHospitalizationDt +"\">"+ varHospitalizationDt + "~" + varDischargeDt +"</option>";
  264. }
  265. }
  266. $("#sltInPrescriptionHospitalizationDt").append(strDisplayTemp);
  267. $("#sltInPrescriptionHospitalizationDt").val($("#sltInPrescriptionHospitalizationDt option:first").val());
  268. //처방조회 조회
  269. searchMedicalPrescriptionList();
  270. };
  271. var searchMedicalOutDateList = function(){
  272. var param = {
  273. userId:gLoginUserId,
  274. patientId:gPatientId,
  275. //20190521 dkchoi75 백병원 Input Paremeter에 deptCd (진료과코드) 추가
  276. deptCd:gPatientDeptCd
  277. };
  278. self.medical.getOutDateList(param, processSearchMedicalOutDateList);
  279. };
  280. var processSearchMedicalOutDateList = function(lists){
  281. $("#sltOutPrescriptionHospitalizationDt").empty();
  282. var varVisitDt = "";
  283. var strDisplayTemp = "";
  284. if(lists != undefined){
  285. for(var i=0; i<lists.length; i++){
  286. if(lists[i].visitDt != undefined && lists[i].visitDt != "" && lists[i].visitDt != null) {
  287. varVisitDt = moment(lists[i].visitDt).format("YYYY-MM-DD");
  288. } else {
  289. varVisitDt = lists[i].visitDt;
  290. }
  291. // strDisplayTemp += "<option value=\""+ lists[i].visitDt +"\" deptCd=\"" + lists[i].deptCd + "\" >"+ moment(lists[i].visitDt).format("YYYY-MM-DD") +"</option>";
  292. strDisplayTemp += "<option value=\""+ lists[i].visitDt +"\" deptCd=\"" + lists[i].deptCd + "\" >"+ varVisitDt +"</option>";
  293. }
  294. }else{
  295. strDisplayTemp = "<option value=\"\">진료일이 없습니다.</option>";
  296. }
  297. $("#sltOutPrescriptionHospitalizationDt").append(strDisplayTemp);
  298. $("#sltOutPrescriptionHospitalizationDt").val($("#sltOutPrescriptionHospitalizationDt option:first").val());
  299. //처방조회 조회
  300. searchMedicalPrescriptionList();
  301. };
  302. var searchMedicalPrescriptionClsList = function(){
  303. var param = {
  304. userId:gLoginUserId,
  305. searchCls:gPatientTreatCls
  306. };
  307. self.medical.getPrescriptionClsList(param, processSearchMedicalPrescriptionClsList);
  308. };
  309. var processSearchMedicalPrescriptionClsList = function(lists){
  310. $("#sltPrescriptionClsCd").empty();
  311. var strDisplayTemp = "";
  312. strDisplayTemp = "<option value=\"\">분류</option>";
  313. if(lists != undefined){
  314. for(var i=0; i<lists.length; i++){
  315. strDisplayTemp += "<option value=\""+ lists[i].prescriptionClsCd +"\">"+ lists[i].prescriptionClsNm +"</option>";
  316. }
  317. }
  318. $("#sltPrescriptionClsCd").append(strDisplayTemp);
  319. $("#sltPrescriptionClsCd").val($("#sltPrescriptionClsCd option:first").val());
  320. };
  321. var searchMedicalgetPrescriptionStatList = function(){
  322. var param = {
  323. userId:gLoginUserId,
  324. searchCls:gPatientTreatCls
  325. };
  326. self.medical.getPrescriptionStatList(param, processSearchMedicalPrescriptionStatList);
  327. };
  328. var processSearchMedicalPrescriptionStatList = function(lists){
  329. $("#sltPrescriptionStatCd").empty();
  330. var strDisplayTemp = "";
  331. strDisplayTemp = "<option value=\"\">상태</option>";
  332. if(lists != undefined){
  333. for(var i=0; i<lists.length; i++){
  334. strDisplayTemp += "<option value=\""+ lists[i].prescriptionStatCd +"\">"+ lists[i].prescriptionStatNm +"</option>";
  335. }
  336. }
  337. $("#sltPrescriptionStatCd").append(strDisplayTemp);
  338. $("#sltPrescriptionStatCd").val($("#sltPrescriptionStatCd option:first").val());
  339. };
  340. var searchMedicalgetPrescriptionClassList = function(lists){
  341. $("#sltPrescriptionClass").empty();
  342. var strDisplayTemp = "";
  343. strDisplayTemp = "<option value=\"\">구분</option>";
  344. if(lists != undefined){
  345. for(var i=0; i<lists.length; i++){
  346. strDisplayTemp += "<option value=\""+ lists[i].prescriptionStatCd +"\">"+ lists[i].prescriptionStatNm +"</option>";
  347. }
  348. }
  349. $("#sltPrescriptionClass").append(strDisplayTemp);
  350. $("#sltPrescriptionClass").val($("#sltPrescriptionClass option:first").val());
  351. };
  352. //==== 초기화 설정 } ====
  353. //==== 이벤트 설정 { ====
  354. var addEvent = function(){
  355. //$("#btnLogout").on("click", function(){
  356. // logout();
  357. //});
  358. eventConditionClick();
  359. eventColumnClick();
  360. eventRowClick();
  361. };
  362. var eventConditionClick = function(){
  363. // 조회버튼
  364. $("#btnPrescriptionSearch").off("click"); // 기존 이벤트 해제
  365. $("#btnPrescriptionSearch").on("click", function(e){
  366. searchMedicalPrescriptionList();
  367. });
  368. $("#sltOutPrescriptionHospitalizationDt").off("change");
  369. $("#sltOutPrescriptionHospitalizationDt").on("change", function(){
  370. //처방조회 조회
  371. searchMedicalPrescriptionList();
  372. });
  373. };
  374. var eventColumnClick = function(){
  375. };
  376. var eventRowClick = function(){
  377. };
  378. //==== 이벤트 설정 } ====
  379. //==== 서비스 실행 { ====
  380. //==== 서비스 실행 { ====
  381. };