MMR05700.xjs 97 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/*
  3. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  4. 마취환자기록 ( SSMMR05700_마취환자기록일반정보.xrw - JScript )
  5. - Version :
  6. 1) : Ver.1.00.01 2008-06-23
  7. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  8. */
  9. var instcd = "";
  10. // 마취과 부서코드 (마취통증의학과/통증클리닉)
  11. var anstdeptcd = "2090000000";
  12. // 수술실 마취 부서코드 (간호사 소속부서코드)
  13. var opanstdeptcd = "";
  14. // 수술실 마취 부서코드 (간호사 소속부서코드)
  15. var hardcdno = "5590";
  16. //2012/11/13 End
  17. var orddd = "";
  18. var cretno = "";
  19. var ordtype = "";
  20. var ioflag = "";
  21. var oprsrvno = "";
  22. var mainoprsrvno = "";
  23. var ophistno = "";
  24. var pid = "";
  25. var phngnm = "";
  26. var anstrecno = "";
  27. var anstdd = "";
  28. var currentdate = "";
  29. var patarrvdt = "";
  30. var checkedMeetingTime = "N";
  31. //2013/09/11 수술구분
  32. var old_opflagcd="";
  33. var new_opflagcd="";
  34. //2013/09/11
  35. //2013/12/19
  36. var nurseoprec=""; //간호 수술기록 존재여부
  37. var rtn="";
  38. //2013/12/19
  39. var btn_oproominoutctl_clickyn=false;
  40. function cf_TRMMR03701(sSvcId, nErrorCode, sErrorMsg) {
  41. if(nErrorCode < 0)
  42. {
  43. return;
  44. }
  45. else
  46. {
  47. //협진수술여부
  48. mainoprsrvno = ds_oprsrvinfo.lookup("seq",1,"mainoprsrvno");
  49. if(mainoprsrvno=="-" || utlf_isNull(mainoprsrvno)){
  50. sysf_messageBox("수술 예약 정보가 올바르지 않습니다. 전산실로 문의 바랍니다.", "E");
  51. return;
  52. }
  53. if (oprsrvno != mainoprsrvno) {
  54. //2013/09/23 START 협진 수술에 대해서도 마취 기록지를 사용 할 수 있도록 수정(이정택)
  55. sysf_messageBox("협진수술에 마취 기록을 작성합니다.\n주수술과 연계되지 않고 협진수술로 수술 종료시에는 주과에 연락하여\n수술취소를 안내해 주시기 바랍니다.", "I", "");
  56. }
  57. //진단명 리스트, 수술명(전)- case cart (주+부), 수술명(후) 조회
  58. var oParam = {};
  59. oParam.id = "TRMMR03709";
  60. oParam.service = "anstrecapp.AnstRec";
  61. oParam.method = "reqGetOpInfo";
  62. oParam.inds = "reqdata=ds_send_reqdata";
  63. oParam.outds = "ds_opinfo_item=item";
  64. oParam.async = false;
  65. oParam.callback = "cf_TRMMR03709";
  66. tranf_submit(oParam);
  67. //공통 기본 정보 셋
  68. oprsrvno = ds_oprsrvinfo.lookup("seq",1,"oprsrvno");
  69. ophistno = ds_oprsrvinfo.lookup("seq",1,"ophistno");
  70. pid = ds_oprsrvinfo.lookup("seq",1,"pid");
  71. phngnm = ds_oprsrvinfo.lookup("seq",1,"phngnm");
  72. anstrecno = ds_oprsrvinfo.lookup("seq",1,"anstrecno");
  73. ds_send_reqdata.setColumn(0,"oprsrvno" , oprsrvno);
  74. ds_send_reqdata.setColumn(0,"ophistno" , ophistno);
  75. ds_send_reqdata.setColumn(0,"pid" , pid);
  76. ds_send_reqdata.setColumn(0,"anstrecno", anstrecno);
  77. //공통코드 가져오기...
  78. var arrParam = [{dsNm: "ds_init_M0013", cdGrpId: "M0013"}, //M0013:수술구분코드
  79. {dsNm: "ds_init_M0016", cdGrpId: "M0016"}, //M0016:수술체위코드
  80. {dsNm: "ds_init_M0020", cdGrpId: "M0020"}, //M0020:수술환자구분코드
  81. {dsNm: "ds_init_M0008", cdGrpId: "M0008"}, //M0008:마취가산
  82. {dsNm: "ds_init_M0270", cdGrpId: "M0270"}, //M0270:마취방법코드(주)
  83. {dsNm: "ds_init_M0271", cdGrpId: "M0271"}, //M0271:마취방법코드(부)
  84. {dsNm: "ds_init_M0269", cdGrpId: "M0269"}, //M0269:physical status
  85. {dsNm: "ds_init_M0287", cdGrpId: "M0287"} //M0287:drug 소분류
  86. ]
  87. appf_getCodeList(arrParam); //공통코드 보험유형 조회
  88. // 부서코드 콤보조회
  89. lf_mmbfGetDeptCodeComboList(ds_init_orddept, "D", orddd);
  90. dsf_addDsItem( ds_init_orddept, "deptcd", "depthngnm", "-", "-", "above");
  91. // 수술방 콤보조회
  92. var oParam = {};
  93. oParam.id = "TRMMR03712";
  94. oParam.service = "anstrecapp.AnstRec";
  95. oParam.method = "reqGetOpRoomList";
  96. oParam.inds = "reqdata=ds_send_reqdata";
  97. oParam.outds = "ds_init_oproomlist=item";
  98. oParam.async = false;
  99. tranf_submit(oParam);
  100. // 마취의 1,2,3
  101. var opcnfmdd = utlf_transNullToEmpty(ds_oprsrvinfo.lookup("seq",1,"opcnfmdd"));
  102. fGetUserComboList(ds_init_anstdrlist , anstdeptcd, "0330", "", opcnfmdd);
  103. // 2009.04.21. 수술실마취 부서코드 정보 가져오기.. 하드코드조회 (79)
  104. dsf_makeValue(ds_send_reqdata,"hardcdno" , "string", hardcdno);
  105. var oParam = {};
  106. oParam.id = "TRMMR03716";
  107. oParam.service = "anstrecapp.AnstRec";
  108. oParam.method = "reqGetHardCode";
  109. oParam.inds = "reqdata=ds_send_reqdata";
  110. oParam.outds = "ds_hiddendata_hardcdlist=item";
  111. oParam.async = false;
  112. oParam.callback = "cf_TRMMR03716";
  113. tranf_submit(oParam);
  114. // 용법조회 (주사약)
  115. ds_send_req.setColumn(0,"cond1" , "I");
  116. ds_send_req.setColumn(0,"cond2" , 1);
  117. ds_send_req.setColumn(0,"cond3" , "");
  118. var oParam = {};
  119. oParam.id = "TRMMR03710";
  120. oParam.service = "anstrecapp.AnstRec";
  121. oParam.method = "reqGetTmedTthdInfo";
  122. oParam.inds = "req=ds_send_req";
  123. oParam.outds = "ds_hiddendata_tmedmthdlist=tmedmthdlist";
  124. oParam.async = false;
  125. oParam.callback = "cf_TRMMR03710";
  126. tranf_submit(oParam);
  127. // 마취일반정보조회
  128. if (anstrecno == "0") {
  129. // 선택환자정보
  130. var node = sysf_getGlobalVariable("paminfo");
  131. ds_paminfolist.clear();
  132. dsf_setCSVToDs("ds_paminfolist", node);
  133. //환자정보 : 오더일자(원무키), 생성번호(원무키), 내원구분, 서식코드
  134. ordtype = ds_paminfolist.getColumn(0,"ioflag");
  135. // O : 왜래, S : 검진
  136. if (ordtype == "O" || ordtype == "S") {
  137. orddd = ds_paminfolist.getColumn(0,"orddd");
  138. ioflag = "o";
  139. } else {
  140. orddd = ds_paminfolist.getColumn(0,"indd");
  141. ioflag = "i";
  142. }
  143. cretno = ds_paminfolist.getColumn(0,"cretno");
  144. // 환자번호, 환자명 셋 해주기.
  145. ds_anstinfo_5700.setColumn(0,"pid", pid);
  146. ds_anstinfo_5700.setColumn(0,"phngnm", phngnm);
  147. // 원무키 : 오더일자, 생성번호 셋 해주기.
  148. ds_anstinfo_5700.setColumn(0,"orddd", orddd);
  149. ds_anstinfo_5700.setColumn(0,"cretno", cretno);
  150. // 마취일자는 수술확정일자와 동일하게 한다.
  151. anstdd = ds_oprsrvinfo.lookup("seq",1,"opcnfmdd");
  152. ds_anstinfo_5700.setColumn(0,"anstdd", anstdd);
  153. //20131010 이정택 집도과 및 집도의 세팅하는 부분 수정
  154. ds_anstinfo_5700.setColumn(0,"perfdeptcd1", ds_oprsrvinfo.lookup("seq",1,"perfdeptcd"));
  155. ds_anstinfo_5700.setColumn(0,"perfdrid1", ds_oprsrvinfo.lookup("seq",1,"perfdrid"));
  156. ds_anstinfo_5700.setColumn(0,"perfdeptcd2", ds_oprsrvinfo.lookup("seq",2,"perfdeptcd"));
  157. ds_anstinfo_5700.setColumn(0,"perfdrid2", ds_oprsrvinfo.lookup("seq",2,"perfdrid"));
  158. ds_anstinfo_5700.setColumn(0,"perfdeptcd3", ds_oprsrvinfo.lookup("seq",3,"perfdeptcd"));
  159. ds_anstinfo_5700.setColumn(0,"perfdrid3", ds_oprsrvinfo.lookup("seq",3,"perfdrid"));
  160. ds_anstinfo_5700.setColumn(0,"perfdeptcd4", ds_oprsrvinfo.lookup("seq",4,"perfdeptcd"));
  161. ds_anstinfo_5700.setColumn(0,"perfdrid4", ds_oprsrvinfo.lookup("seq",4,"perfdrid"));
  162. ds_anstinfo_5700.setColumn(0,"anstdrid1", ds_oprsrvinfo.lookup("seq",1,"anstdrid1"));
  163. ds_anstinfo_5700.setColumn(0,"anstdrid2", ds_oprsrvinfo.lookup("seq",1,"anstdrid2"));
  164. ds_anstinfo_5700.setColumn(0,"anstdrid3", ds_oprsrvinfo.lookup("seq",1,"anstdrid3"));
  165. //2013/09/25 이정택(네번째 마취의가 통합기록에 안보이는 현상 수정)
  166. ds_anstinfo_5700.setColumn(0,"anstdrid4", ds_oprsrvinfo.lookup("seq",1,"anstdrid4"));
  167. //20200319 김현석, 마취기록지 마취의 정보 추가 anstdrid5 ~ 8, 요청번호:20200210033
  168. ds_anstinfo_5700.setColumn(0,"anstdrid5", ds_oprsrvinfo.lookup("seq",1,"anstdrid5"));
  169. ds_anstinfo_5700.setColumn(0,"anstdrid6", ds_oprsrvinfo.lookup("seq",1,"anstdrid6"));
  170. ds_anstinfo_5700.setColumn(0,"anstdrid7", ds_oprsrvinfo.lookup("seq",1,"anstdrid7"));
  171. ds_anstinfo_5700.setColumn(0,"anstdrid8", ds_oprsrvinfo.lookup("seq",1,"anstdrid8"));
  172. //2013/09/25
  173. // 마취일반정보가 없는 경우 수술예약정보로 기본 셋 (수술방)
  174. ds_anstinfo_5700.setColumn(0,"oproomcd", ds_oprsrvinfo.lookup("seq",1,"oproomcd"));
  175. // 마취일반정보가 없는 경우 수술예약정보로 기본 셋 (수술구분)
  176. ds_anstinfo_5700.setColumn(0,"opflagcd", ds_oprsrvinfo.lookup("seq",1,"opflagcd"));
  177. // 마취일반정보가 없는 경우 수술예약정보로 기본 셋 (수술체위)
  178. var opposturecd = ds_oprsrvinfo.lookup("seq",1,"opposturecd");
  179. var opposturerem = ds_init_M0016.lookup("cdid", opposturecd, "cdnm");
  180. ds_anstinfo_5700.setColumn(0,"opposturecd", opposturecd);
  181. ds_anstinfo_5700.setColumn(0,"opposturerem", opposturerem);
  182. // 마취방법 (주/부), 마취가산, Physical Status 기본 셋
  183. // 2008.12.23. 마취방법(주) default 는 "" 공백으로 항상 선택되어야 함.
  184. ds_anstinfo_5700.setColumn(0,"anstmthdcd", "");
  185. ds_anstinfo_5700.setColumn(0,"anstmthdcdsub", "00");
  186. ds_anstinfo_5700.setColumn(0,"anstaddcd", "0");
  187. ds_anstinfo_5700.setColumn(0,"physstat", "01");
  188. var opcnfmdd = ds_oprsrvinfo.lookup("seq",1,"opcnfmdd");
  189. opcnfmdd.substr(0,8);
  190. // 마취, 수술 일자
  191. ds_anstinfo_5700.setColumn(0,"meetingdd" , opcnfmdd);
  192. ds_anstinfo_5700.setColumn(0,"tmoutchkdd" , opcnfmdd);
  193. ds_anstinfo_5700.setColumn(0,"optodd" , opcnfmdd);
  194. ds_anstinfo_5700.setColumn(0,"anstfromdd" , opcnfmdd);
  195. ds_anstinfo_5700.setColumn(0,"ansttodd" , opcnfmdd);
  196. //간호수술기록에서 수술시작 정보 읽어온다. 2010.04.14, 주희경 추가
  197. ds_send_reqdata.setColumn(0,"oprsrvno" , oprsrvno);
  198. //2014/01/07 서브밋 주석처리
  199. var tmpopcnfmdd = ds_temp_anstinfo.getColumn(0,"opfromdd");
  200. var opcnfmtm = ds_temp_anstinfo.getColumn(0,"opfromtm");
  201. if ( !utlf_isNull(tmpopcnfmdd))
  202. {
  203. opcnfmdd = tmpopcnfmdd;
  204. }
  205. ds_anstinfo_5700.setColumn(0,"opfromdd" , opcnfmdd);
  206. ds_anstinfo_5700.setColumn(0,"opfromtm" , opcnfmtm);
  207. //20131111 키 및 몸무게 세팅하도록 수정(이정택)
  208. ds_anstinfo_5700.setColumn(0,"height", ds_oprsrvinfo.lookup("seq",1,"ht"));
  209. ds_anstinfo_5700.setColumn(0,"weight", ds_oprsrvinfo.lookup("seq",1,"wt"));
  210. //20131111
  211. // 2009.06.12. 수술전처치 관련 플래그..
  212. var preopcureflag = ds_anstinfo_5700.getColumn(0,"preopcureflag");
  213. if (preopcureflag == "N")
  214. {
  215. preopcureflag = "";
  216. }
  217. ds_anstinfo_5700.setColumn(0,"preopcureflag" , preopcureflag);
  218. // 마취기록 일련번호 기본셋..
  219. anstrecno = ds_anstinfo_5700.getColumn(0,"anstrecno");
  220. ds_oprsrvinfo.setColumn(0,"anstrecno", anstrecno);
  221. ds_send_reqdata.setColumn(0,"anstrecno" , anstrecno);
  222. // 집도의사 콤보조회 (1)
  223. var orddeptcd = ds_anstinfo_5700.getColumn(0,"perfdeptcd1");
  224. //fGetUserComboList("/root/send/userlist1", "/root/init/userlist1", orddeptcd, '0330', ''); // 0330
  225. fGetUserComboList(ds_init_userlist1 , orddeptcd, "0330", "");
  226. if (ds_anstinfo_5700.getColumn(0,"perfdeptcd2") != "-") {
  227. // 집도의사 콤보조회 (2)
  228. var orddeptcd = ds_anstinfo_5700.getColumn(0,"perfdeptcd2");
  229. //fGetUserComboList("/root/send/userlist", "/root/init/userlist2", orddeptcd, '0330', ''); // 0330
  230. fGetUserComboList(ds_init_userlist2 , orddeptcd, "0330", "");
  231. }
  232. if (ds_anstinfo_5700.getColumn(0,"perfdeptcd3") != "-") {
  233. // 집도의사 콤보조회 (3)
  234. var orddeptcd = ds_anstinfo_5700.getColumn(0,"perfdeptcd3");
  235. //fGetUserComboList("/root/send/userlist", "/root/init/userlist3", orddeptcd, '0330', ''); // 0330
  236. fGetUserComboList(ds_init_userlist3 , orddeptcd, "0330", "");
  237. }
  238. if (ds_anstinfo_5700.getColumn(0,"perfdeptcd4") != "-") {
  239. // 집도의사 콤보조회 (4)
  240. var orddeptcd = ds_anstinfo_5700.getColumn(0,"perfdeptcd4");
  241. //fGetUserComboList("/root/send/userlist", "/root/init/userlist4", orddeptcd, '0330', ''); // 0330
  242. fGetUserComboList(ds_init_userlist4 , orddeptcd, "0330", "");
  243. }
  244. // opposturerem
  245. parent.parent.parent.parent.ds_anstinfo.setColumn(0,"opposturerem", ds_anstinfo_5700.getColumn(0,"opposturerem"));
  246. // remark
  247. parent.parent.parent.parent.ds_anstinfo.setColumn(0,"remark" , ds_anstinfo_5700.getColumn(0,"remark"));
  248. // pca remark
  249. parent.parent.parent.parent.ds_anstinfo.setColumn(0,"pcarem" , ds_anstinfo_5700.getColumn(0,"pcarem"));
  250. // vs set code (2009.06.22)
  251. parent.parent.parent.parent.ds_anstinfo.setColumn(0,"vssetcd" , ds_anstinfo_5700.getColumn(0,"vssetcd"));
  252. // 2017.03.15 default '일치'
  253. parent.parent.parent.parent.ds_anstinfo.setColumn(0,"recmatchflag" , "Y");
  254. // 마취시작시간, 마취종료시간 차~
  255. fGetHours();
  256. // 시간 컨트롤
  257. fCtlDisable(false);
  258. // 2009.05.26. 대기실 환자 도착시간 표시하기..
  259. //2013/10/10 병동 출발시각은 메인수술에만 기록하기 때문에 메인으로 변경하여 정보 취득후 다시 원래 수술번호로 원복(이정택)
  260. //fGetPatArrvDT();
  261. ds_send_reqdata.setColumn(0,"oprsrvno" , mainoprsrvno);
  262. fGetPatArrvDT();
  263. ds_send_reqdata.setColumn(0,"oprsrvno" , oprsrvno);
  264. //2013/10/10 End
  265. // 2009.05.19. 수술전평가서 formcd 조회하기..
  266. var oParam = {};
  267. oParam.id = "TRMMO05503";
  268. oParam.service = "prcpmngtapp.OpMngt";
  269. oParam.method = "reqGetPreOpAssemRecFormcd";
  270. oParam.inds = "req=ds_init_hardcd";
  271. oParam.outds = "ds_init_formcd_hardcd=hardcd";
  272. oParam.async = false;
  273. tranf_submit(oParam);
  274. // 2008.10.07. 수술전평가서 정보가져오기..
  275. ds_opanstform.clear();
  276. var oParam = {};
  277. oParam.id = "TRMMR03714";
  278. oParam.service = "anstrecapp.AnstRec";
  279. oParam.method = "reqGetOpAnstFormSeqno";
  280. oParam.inds = "reqdata=ds_send_reqdata";
  281. oParam.outds = "ds_opanstform=opanstform";
  282. oParam.async = false;
  283. oParam.callback = "cf_TRMMR03714";
  284. tranf_submit(oParam);
  285. } else {
  286. var oParam = {};
  287. oParam.id = "TRMMR03702";
  288. oParam.service = "anstrecapp.AnstRec";
  289. oParam.method = "reqGetAnstInfo";
  290. oParam.inds = "reqdata=ds_send_reqdata";
  291. oParam.outds = "ds_anstinfo_5700=anstinfo";
  292. oParam.async = false;
  293. oParam.callback = "cf_TRMMR03702";
  294. tranf_submit(oParam);
  295. }
  296. }
  297. }
  298. function cf_TRMMR03702(sSvcId, nErrorCode, sErrorMsg) {
  299. if(nErrorCode < 0) return;
  300. // 2009.06.12. 수술전처치 관련 플래그..
  301. var preopcureflag = ds_anstinfo_5700.getColumn(0,"preopcureflag");
  302. if (preopcureflag == "N")
  303. {
  304. preopcureflag = "";
  305. }
  306. ds_anstinfo_5700.setColumn(0,"preopcureflag" , preopcureflag);
  307. // 마취기록 일련번호 기본셋..
  308. anstrecno = ds_anstinfo_5700.getColumn(0,"anstrecno");
  309. ds_oprsrvinfo.setColumn(0,"anstrecno", anstrecno);
  310. ds_send_reqdata.setColumn(0,"anstrecno" , anstrecno);
  311. // 집도의사 콤보조회 (1)
  312. var orddeptcd = ds_anstinfo_5700.getColumn(0,"perfdeptcd1");
  313. //fGetUserComboList("/root/send/userlist1", "/root/init/userlist1", orddeptcd, '0330', ''); // 0330
  314. fGetUserComboList(ds_init_userlist1 , orddeptcd, "0330", "");
  315. if (ds_anstinfo_5700.getColumn(0,"perfdeptcd2") != "-") {
  316. // 집도의사 콤보조회 (2)
  317. var orddeptcd = ds_anstinfo_5700.getColumn(0,"perfdeptcd2");
  318. //fGetUserComboList("/root/send/userlist", "/root/init/userlist2", orddeptcd, '0330', ''); // 0330
  319. fGetUserComboList(ds_init_userlist2 , orddeptcd, "0330", "");
  320. }
  321. if (ds_anstinfo_5700.getColumn(0,"perfdeptcd3") != "-") {
  322. // 집도의사 콤보조회 (3)
  323. var orddeptcd = ds_anstinfo_5700.getColumn(0,"perfdeptcd3");
  324. //fGetUserComboList("/root/send/userlist", "/root/init/userlist3", orddeptcd, '0330', ''); // 0330
  325. fGetUserComboList(ds_init_userlist3 , orddeptcd, "0330", "");
  326. }
  327. if (ds_anstinfo_5700.getColumn(0,"perfdeptcd4") != "-") {
  328. // 집도의사 콤보조회 (4)
  329. var orddeptcd = ds_anstinfo_5700.getColumn(0,"perfdeptcd4");
  330. //fGetUserComboList("/root/send/userlist", "/root/init/userlist4", orddeptcd, '0330', ''); // 0330
  331. fGetUserComboList(ds_init_userlist4 , orddeptcd, "0330", "");
  332. }
  333. // opposturerem
  334. parent.parent.parent.parent.ds_anstinfo.setColumn(0,"opposturerem", ds_anstinfo_5700.getColumn(0,"opposturerem"));
  335. // remark
  336. parent.parent.parent.parent.ds_anstinfo.setColumn(0,"remark" , ds_anstinfo_5700.getColumn(0,"remark"));
  337. // pca remark
  338. parent.parent.parent.parent.ds_anstinfo.setColumn(0,"pcarem" , ds_anstinfo_5700.getColumn(0,"pcarem"));
  339. // vs set code (2009.06.22)
  340. parent.parent.parent.parent.ds_anstinfo.setColumn(0,"vssetcd" , ds_anstinfo_5700.getColumn(0,"vssetcd"));
  341. // [요청번호:20170214016] 마취기록지
  342. parent.parent.parent.parent.ds_anstinfo.setColumn(0, "teethrem" , ds_anstinfo_5700.getColumn(0, "teethrem"));
  343. parent.parent.parent.parent.ds_anstinfo.setColumn(0, "recmatchflag" , ds_anstinfo_5700.getColumn(0, "recmatchflag"));
  344. parent.parent.parent.parent.ds_anstinfo.setColumn(0, "reccomparerem" , ds_anstinfo_5700.getColumn(0, "reccomparerem"));
  345. parent.parent.parent.parent.ds_anstinfo.setColumn(0, "recsolutionsrem" , ds_anstinfo_5700.getColumn(0, "recsolutionsrem"));
  346. // 마취시작시간, 마취종료시간 차~
  347. fGetHours();
  348. // 시간 컨트롤
  349. fCtlDisable(false);
  350. // 2009.05.26. 대기실 환자 도착시간 표시하기..
  351. //2013/10/10 병동 출발시각은 메인수술에만 기록하기 때문에 메인으로 변경하여 정보 취득후 다시 원래 수술번호로 원복(이정택)
  352. //fGetPatArrvDT();
  353. ds_send_reqdata.setColumn(0,"oprsrvno" , mainoprsrvno);
  354. fGetPatArrvDT();
  355. ds_send_reqdata.setColumn(0,"oprsrvno" , oprsrvno);
  356. //2013/10/10 End
  357. // 2009.05.19. 수술전평가서 formcd 조회하기..
  358. var oParam = {};
  359. oParam.id = "TRMMO05503";
  360. oParam.service = "prcpmngtapp.OpMngt";
  361. oParam.method = "reqGetPreOpAssemRecFormcd";
  362. oParam.inds = "req=ds_init_hardcd";
  363. oParam.outds = "ds_init_formcd_hardcd=hardcd";
  364. oParam.async = false;
  365. tranf_submit(oParam);
  366. // 2008.10.07. 수술전평가서 정보가져오기..
  367. var oParam = {};
  368. oParam.id = "TRMMR03714";
  369. oParam.service = "anstrecapp.AnstRec";
  370. oParam.method = "reqGetOpAnstFormSeqno";
  371. oParam.inds = "reqdata=ds_send_reqdata";
  372. oParam.outds = "ds_opanstform=opanstform";
  373. oParam.async = false;
  374. oParam.callback = "cf_TRMMR03714";
  375. tranf_submit(oParam);
  376. }
  377. function cf_TRMMR03714(sSvcId, nErrorCode, sErrorMsg) {
  378. if(nErrorCode < 0) return;
  379. // 2008.10.07. 수술전평가서 작성후.. 표시하기..
  380. // 2009.03.03. 수술전평가서의 작성된 asa class code 셋하기..
  381. fSetASAClass();
  382. // 2010.02.02. 하드코드 정보 가져오기..
  383. lf_reqHardCodeInfo(ds_init_chkhardcd, "9919");
  384. var checkedStartDD = ds_init_chkhardcd.getColumn(0,"hardcd");
  385. var opdd = ds_oprsrvinfo.lookup("seq",1,"opcnfmdd");
  386. if (!utlf_isNull(checkedStartDD) && checkedStartDD <= opdd) {
  387. checkedMeetingTime = "Y";
  388. ds_hiddendata.setColumn(0,"checkedmeetingtime", checkedMeetingTime);
  389. }
  390. //2012/12/11 Start 화면 로딩 후 수술부위확인 점검표의 인증저장 여부 체크
  391. if(parent.parent.parent.parent.ds_init_applychk.getColumn(0,"hardcd")=="Y"){
  392. fChkEspi();
  393. }
  394. //2012/12/11 End
  395. //2013/09/11
  396. var opflagcd=ds_anstinfo_5700.getColumn(0,"opflagcd");
  397. if(!utlf_isNull(opflagcd)){
  398. old_opflagcd=opflagcd;
  399. }
  400. //2013/09/11
  401. }
  402. function cf_TRMMR03709(sSvcId, nErrorCode, sErrorMsg) {
  403. if(nErrorCode < 0) return;
  404. // 마취 수술후명 카피 노드셋
  405. //copyNodeset("/root/main/opinfo7/item" , "/root/main/opinfo/item[cdflag = '4']");
  406. ds_opinfo_item.filter("cdflag == '4'");
  407. ds_opinfo_item.applyChange();
  408. ds_opinfo7_item.copyData(ds_opinfo_item,true);
  409. ds_opinfo_item.filter("");
  410. }
  411. function cf_TRMMR03716(sSvcId, nErrorCode, sErrorMsg) {
  412. if(nErrorCode < 0) return;
  413. opanstdeptcd = ds_hiddendata_hardcdlist.lookup("hardcdno", hardcdno , "trgtcd");
  414. // 수술실 마취 간호사 1,2
  415. fGetUserComboList(ds_init_anstnurslist , opanstdeptcd, "1140", "");
  416. }
  417. function cf_TRMMR03710(sSvcId, nErrorCode, sErrorMsg) {
  418. if(nErrorCode < 0) return;
  419. }
  420. /**
  421. * @desc : 폼초기화
  422. * @
  423. * @param :
  424. * @return :
  425. * @---------------------------------------------------
  426. */
  427. function fFormInit(send_oprsrvno) {
  428. ds_anstinfo_5700.enableevent = false;
  429. oprsrvno = send_oprsrvno;
  430. ds_hiddendata.clearData();
  431. ds_patinfo.clearData();
  432. ds_patinfo.addRow();
  433. ds_hiddendata.addRow();
  434. if (oprsrvno.length == 0) {
  435. ds_anstinfo_5700.enableevent = true;
  436. return;
  437. }
  438. //2016.10.11 [수술탭] Popup Menu 서식코드(Formcd)
  439. lf_getHardCDList("N", 9969, null, ds_pmenu_formcd);
  440. ds_anstinfo_5700.filter("");
  441. ds_anstinfo_5700.clearData();
  442. ds_anstinfo_5700.addRow();
  443. ds_anstinfo_5700.setColumn(0,"preopcureflag","N");
  444. ds_anstinfo_5700.setColumn(0,"anstmthdchgflag","N");
  445. instcd = sysf_getUserInfo("dutplceinstcd"); // 2009.04.21. 기관코드 셋;
  446. //초기화 데이타
  447. ds_send_reqdata.setColumn(0,"instcd" , instcd);
  448. ds_send_reqdata.setColumn(0,"anstdeptcd", anstdeptcd);
  449. ds_send_reqdata.setColumn(0,"oprsrvno" , oprsrvno);
  450. bool1.value = "N";
  451. // 현재일시
  452. currentdate = utlf_getCurrentDate() + utlf_getCurrentTime();
  453. ds_send_reqdata.setColumn(0,"currentdate" , currentdate);
  454. // 2017.06.19 집도의 초기화
  455. ds_init_userlist2.clearData();
  456. ds_init_userlist2.addRow();
  457. ds_init_userlist3.clearData();
  458. ds_init_userlist3.addRow();
  459. ds_init_userlist4.clearData();
  460. ds_init_userlist4.addRow();
  461. cmb_perfdr2.value = "";
  462. cmb_perfdr3.value = "";
  463. cmb_perfdr4.value = "";
  464. //수술예약정보조회
  465. var oParam = {};
  466. oParam.id = "TRMMR03701";
  467. oParam.service = "anstrecapp.AnstRec";
  468. oParam.method = "reqGetOpRvInfo";
  469. oParam.inds = "reqdata=ds_send_reqdata";
  470. oParam.outds = "ds_oprsrvinfo=oprsrvinfo";
  471. oParam.async = false;
  472. oParam.callback = "cf_TRMMR03701";
  473. tranf_submit(oParam);
  474. ds_anstinfo_5700.enableevent = true;
  475. }
  476. /**
  477. * @desc : 그래프의 시작시간 가져오기
  478. * @
  479. * @param :
  480. * @return :
  481. * @author :
  482. * @---------------------------------------------------
  483. */
  484. function fGetGraphFormdt(fromdt)
  485. {
  486. var fromdd = fromdt.substr(0,8);
  487. var fromhr = fromdt.substr(8,2);
  488. var frommin = fromdt.substr(10,2);
  489. // 6분 시작 -> 5분/10분, 14분 시작 -> 10분/15분
  490. var share = parseInt(frommin / 5);
  491. frommin = 5 * share;
  492. if (("" + frommin).length == 1) { frommin = "0" + frommin; }
  493. return "" + fromdd + fromhr + frommin;
  494. }
  495. /**
  496. * @desc : 마취일반정보 저장
  497. * @
  498. * @param :
  499. * @return :
  500. * @author :
  501. * @---------------------------------------------------
  502. */
  503. function fSaveAnstInfo(flag) {
  504. ds_anstinfo_5700.enableevent = false;
  505. var chk_anstrecno = ds_anstinfo_5700.getColumn(0,"anstrecno");
  506. if (utlf_isNull(chk_anstrecno)) { // 2009.06.22. 이미 저장된 마취기록정보가 있는가? 덮어쓸껀지 물어보자..
  507. var oParam = {};
  508. oParam.id = "TRMMR03717";
  509. oParam.service = "anstrecapp.AnstRec";
  510. oParam.method = "reqGetOprsAnstInfo";
  511. oParam.inds = "reqdata=ds_send_reqdata";
  512. oParam.outds = "ds_oprsanstinfo=item";
  513. oParam.async = false;
  514. tranf_submit(oParam);
  515. var dataCnt = ds_oprsanstinfo.rowcount;
  516. if (dataCnt > 0) {
  517. // 최초입력자 & 시간 / 최종수정자 & 시간
  518. var fstrgstrid = ds_oprsanstinfo.getColumn(0,"fstrgstrid");
  519. var fstrgstrnm = ds_oprsanstinfo.getColumn(0,"fstrgstrnm");
  520. var fstrgstdt = ds_oprsanstinfo.getColumn(0,"fstrgstdt");
  521. var lastupdtrid = ds_oprsanstinfo.getColumn(0,"lastupdtrid");
  522. var lastupdtrnm = ds_oprsanstinfo.getColumn(0,"lastupdtrnm");
  523. var lastupdtdt = ds_oprsanstinfo.getColumn(0,"lastupdtdt");
  524. var message = "";
  525. message = message + "\n" + "----------------------------------------------------"
  526. message = message + "\n" + "이미 저장된 마취기록지가 있습니다. 덮어쓰시겠습니까?"
  527. message = message + "\n" + "----------------------------------------------------"
  528. message = message + "\n" + "최초작성 : " + fstrgstrnm + " (" + fstrgstdt + ")";
  529. message = message + "\n" + "최종수정 : " + lastupdtrnm + " (" + lastupdtdt + ")";
  530. message = message + "\n" + "----------------------------------------------------"
  531. var retValue = sysf_messageBox(message, "Q999", "");
  532. if( retValue == "6" ){
  533. chk_anstrecno = ds_oprsanstinfo.getColumn(0,"anstrecno");
  534. ds_anstinfo_5700.setColumn(0,"anstrecno", chk_anstrecno);
  535. } else {
  536. ds_anstinfo_5700.enableevent = true;
  537. return;
  538. }
  539. }
  540. }
  541. if (utlf_isNull(flag)) { flag = "N" };
  542. // 2008.12.23. 마취방법(주) default 는 "" 공백으로 항상 선택되어야 함.
  543. var anstfromtm = ds_anstinfo_5700.getColumn(0,"anstmthdcd");
  544. if (utlf_isNull(anstfromtm)){
  545. sysf_messageBox("마취방법 (주마취)를 선택해 주시기 바랍니다.", "E");
  546. ds_anstinfo_5700.enableevent = true;
  547. return;
  548. }
  549. //20131112 추가(이정택)
  550. var anstdrid1 = cmb_anstdrid1.value;
  551. if(utlf_isNull(anstdrid1) || anstdrid1=="0" || anstdrid1=="-"){
  552. sysf_messageBox("첫번째 마취의는 필수 입력입니다.", "E");
  553. ds_anstinfo_5700.enableevent = true;
  554. return;
  555. }
  556. //20131112
  557. dsf_makeValue(ds_anstinfo_5700,"opposturerem","string", parent.parent.parent.parent.ds_anstinfo.getColumn(0,"opposturerem")); // opposturerem
  558. dsf_makeValue(ds_anstinfo_5700,"remark" , "string",parent.parent.parent.parent.ds_anstinfo.getColumn(0,"remark")); // remark
  559. dsf_makeValue(ds_anstinfo_5700,"pcarem" , "string",parent.parent.parent.parent.ds_anstinfo.getColumn(0,"pcarem")); // pca remark
  560. dsf_makeValue(ds_anstinfo_5700,"vssetcd" , "string",parent.parent.parent.parent.ds_anstinfo.getColumn(0,"vssetcd")); // vs set code (2009.06.22)
  561. // [요청번호:20170214016] 마취기록지
  562. ds_anstinfo_5700.setColumn(0, "teethrem" , parent.parent.parent.parent.ds_anstinfo.getColumn(0, "teethrem"));
  563. ds_anstinfo_5700.setColumn(0, "recmatchflag" , parent.parent.parent.parent.ds_anstinfo.getColumn(0, "recmatchflag"));
  564. ds_anstinfo_5700.setColumn(0, "reccomparerem" , parent.parent.parent.parent.ds_anstinfo.getColumn(0, "reccomparerem"));
  565. ds_anstinfo_5700.setColumn(0, "recsolutionsrem" , parent.parent.parent.parent.ds_anstinfo.getColumn(0, "recsolutionsrem"));
  566. // 임시 마취의사리스트 정보
  567. var anstdrid1_c = ds_anstinfo_5700.getColumn(0,"anstdrid1");
  568. var anstdrid2_c = ds_anstinfo_5700.getColumn(0,"anstdrid2");
  569. var anstdrid3_c = ds_anstinfo_5700.getColumn(0,"anstdrid3");
  570. var anstdrid4_c = ds_anstinfo_5700.getColumn(0,"anstdrid4"); //2013/02/04 Start 마취의 추가
  571. // 20200319 김현석, 마취기록지 마취의 정보 추가 anstdrid5 ~ 8, 요청번호:20200210033
  572. var anstdrid5_c = ds_anstinfo_5700.getColumn(0,"anstdrid5");
  573. var anstdrid6_c = ds_anstinfo_5700.getColumn(0,"anstdrid6");
  574. var anstdrid7_c = ds_anstinfo_5700.getColumn(0,"anstdrid7");
  575. var anstdrid8_c = ds_anstinfo_5700.getColumn(0,"anstdrid8");
  576. // 임시 간호사 리스트 정보
  577. var anstnursid1_c = ds_anstinfo_5700.getColumn(0,"anstnursid1");
  578. var anstnursid2_c = ds_anstinfo_5700.getColumn(0,"anstnursid2");
  579. var anstnursid3_c = ds_anstinfo_5700.getColumn(0,"anstnursid3"); //20131104 임시간호사 추가
  580. var anstnursid4_c = ds_anstinfo_5700.getColumn(0,"anstnursid4"); //20131104 임시간호사 추가
  581. var perfdeptcd1_c = ds_anstinfo_5700.getColumn(0,"perfdeptcd1");
  582. var perfdrid1_c = ds_anstinfo_5700.getColumn(0,"perfdrid1");
  583. var perfdeptcd2_c = ds_anstinfo_5700.getColumn(0,"perfdeptcd2");
  584. var perfdrid2_c = ds_anstinfo_5700.getColumn(0,"perfdrid2");
  585. var perfdeptcd3_c = ds_anstinfo_5700.getColumn(0,"perfdeptcd3");
  586. var perfdrid3_c = ds_anstinfo_5700.getColumn(0,"perfdrid3");
  587. var perfdeptcd4_c = ds_anstinfo_5700.getColumn(0,"perfdeptcd4");
  588. var perfdrid4_c = ds_anstinfo_5700.getColumn(0,"perfdrid4");
  589. // 마취, 수술 (시작 날짜+시간, 종료 날짜+시간)
  590. var meetingdt = ds_anstinfo_5700.getColumn(0,"meetingdd") + utlf_transNullToEmpty(ipt_meetingtm.value) ;
  591. var tmoutchkdt = ds_anstinfo_5700.getColumn(0,"tmoutchkdd") + utlf_transNullToEmpty(ipt_tmoutchktm.value);
  592. var anstfromdt = ds_anstinfo_5700.getColumn(0,"anstfromdd") + utlf_transNullToEmpty(ipt_anstfromtm.value);
  593. var ansttodt = ds_anstinfo_5700.getColumn(0,"ansttodd") + utlf_transNullToEmpty(ipt_ansttotm.value);
  594. var opfromdt = ds_anstinfo_5700.getColumn(0,"opfromdd") + utlf_transNullToEmpty(ipt_opfromtm.value) ;
  595. var optodt = ds_anstinfo_5700.getColumn(0,"optodd") + utlf_transNullToEmpty(ipt_optotm.value) ;
  596. var anstfromtm = utlf_transNullToEmpty(ipt_anstfromtm.value);
  597. var ansttotm = utlf_transNullToEmpty(ipt_ansttotm.value);
  598. var opfromtm = utlf_transNullToEmpty(ipt_opfromtm.value);
  599. var optotm = utlf_transNullToEmpty(ipt_optotm.value);
  600. //if (utlf_isNull(anstfromtm)) {anstfromdt = anstfromdt + "9999"};
  601. //if (utlf_isNull(ansttotm)) {ansttodt = ansttodt + "9999"};
  602. //if (utlf_isNull(opfromtm)) {opfromdt = opfromdt + "9999"};
  603. //if (utlf_isNull(optotm)) {optodt = optodt + "9999"};
  604. meetingdt = meetingdt.replace("undefined","");
  605. tmoutchkdt = tmoutchkdt.replace("undefined","");
  606. anstfromdt = anstfromdt.replace("undefined","");
  607. ansttodt = ansttodt.replace("undefined","");
  608. opfromdt = opfromdt.replace("undefined","");
  609. optodt = optodt.replace("undefined","");
  610. // 마취, 수술 (시작일시, 종료일시)
  611. dsf_makeValue(ds_anstinfo_5700,"meetingdt" , "string",meetingdt);
  612. dsf_makeValue(ds_anstinfo_5700,"tmoutchkdt", "string",tmoutchkdt);
  613. dsf_makeValue(ds_anstinfo_5700,"anstfromdt", "string",anstfromdt);
  614. dsf_makeValue(ds_anstinfo_5700,"ansttodt" , "string",ansttodt);
  615. dsf_makeValue(ds_anstinfo_5700,"opfromdt" , "string",opfromdt);
  616. dsf_makeValue(ds_anstinfo_5700,"optodt" , "string",optodt);
  617. // 2009.06.12. 수술전처치 관련 플래그..
  618. var preopcureflag = ds_anstinfo_5700.getColumn(0,"preopcureflag");
  619. if (utlf_isNull(preopcureflag)) { preopcureflag = "N" };
  620. ds_anstinfo_5700.setColumn(0,"preopcureflag" , preopcureflag);
  621. var vssetcd = ds_anstinfo_5700.getColumn(0,"vssetcd"); // 2009.06.16. V/S 셋코드..
  622. if (utlf_isNull(vssetcd)) { vssetcd = "0" };
  623. ds_anstinfo_5700.setColumn(0,"vssetcd" , vssetcd);
  624. //마취일반정보 저장
  625. dsf_copyDs(ds_send_reqdata_anstinfo, ds_anstinfo_5700,"replace");
  626. dsf_makeValue(ds_send_reqdata_anstinfo,"instcd" ,"string", instcd);
  627. dsf_makeValue(ds_send_reqdata_anstinfo,"oprsrvno" , "string", oprsrvno);
  628. dsf_makeValue(ds_send_reqdata_anstinfo,"mainoprsrvno" , "string", mainoprsrvno);
  629. dsf_makeValue(ds_send_reqdata_anstinfo,"ophistno" , "string", ophistno);
  630. dsf_makeValue(ds_send_reqdata_anstinfo,"pid" , "string", pid);
  631. dsf_makeValue(ds_send_reqdata_anstinfo,"anstdd" , "string", anstdd);
  632. dsf_makeValue(ds_send_reqdata_anstinfo,"lastespiyn" ,"string", flag);
  633. dsf_makeValue(ds_send_reqdata_anstinfo,"chopflagcd", "string",new_opflagcd);
  634. //2013/12/19
  635. var temp_patinroomdd="";
  636. var temp_patinroomtm="";
  637. var temp_patoutroomdd="";
  638. var temp_patoutroomtm="";
  639. if(nurseoprec=="false"){
  640. temp_patinroomdd = ipt_patinroomdd.value;
  641. temp_patinroomtm = ipt_patinroomtm.value;
  642. temp_patoutroomdd = ipt_patoutroomdd.value;
  643. temp_patoutroomtm = ipt_patoutroomtm.value;
  644. var temp_wardstartdttm = ds_anstinfo_5700.getColumn(0,"wardstartdttm");
  645. var temp_patarrvdttm = ds_anstinfo_5700.getColumn(0,"patarrvdttm");
  646. var temp_patinroomdt = ds_anstinfo_5700.getColumn(0,"patinroomdt");
  647. var temp_patoutroomdt = ds_anstinfo_5700.getColumn(0,"patoutroomdt");
  648. if(utlf_isNull(temp_patinroomdt)){ // 환자 수술방 입실 시간이 저장되어 있지 않은 상태
  649. if(!utlf_isNull(temp_patoutroomtm)){ // 환자 수술방 퇴실 시간을 기록한 상태
  650. sysf_messageBox("수술방 입실시간과 동시에 퇴실시간은 입력 불가능합니다.", "E");
  651. ipt_patoutroomtm.value="";
  652. temp_patoutroomdd="";
  653. temp_patoutroomtm="";
  654. ds_anstinfo_5700.enableevent = true;
  655. return;
  656. }else{ // 환자 수술방 입실시간이 없는 상태에서 저장시 수술방 퇴실 시간을 없애주기
  657. temp_patoutroomdd="";
  658. temp_patoutroomtm="";
  659. }
  660. }
  661. fGetPatArrvDT("recheck");
  662. }
  663. dsf_makeValue(ds_send_reqdata_anstinfo,"patinroomdd", "string",ipt_patinroomdd.value);
  664. dsf_makeValue(ds_send_reqdata_anstinfo,"patinroomtm", "string",ipt_patinroomtm.value);
  665. dsf_makeValue(ds_send_reqdata_anstinfo,"patoutroomdd", "string",ipt_patoutroomdd.value);
  666. dsf_makeValue(ds_send_reqdata_anstinfo,"patoutroomtm", "string",ipt_patoutroomtm.value);
  667. dsf_makeValue(ds_send_reqdata_anstinfo,"opcnfmdd", "string",ds_oprsrvinfo.getColumn(0,"opcnfmdd"));
  668. dsf_makeValue(ds_send_reqdata_anstinfo,"perfdeptcd", "string",ds_oprsrvinfo.getColumn(0,"perfdeptcd")); // 2014/03/21
  669. if(!fRecTimeCheck(rtn)){ //2013/12/30 마취기록지상 시간을 다시 한번 체크 하도록 설정
  670. ds_anstinfo_5700.enableevent = true;
  671. return;
  672. } //2013/12/30
  673. var oParam = {};
  674. oParam.id = "TXMMR03702";
  675. oParam.service = "anstrecapp.AnstRec";
  676. oParam.method = "reqExeAnstInfo";
  677. oParam.inds = "anstinfo=ds_send_reqdata_anstinfo";
  678. oParam.outds = "ds_anstinfo_5700=anstinfo";
  679. oParam.async = false;
  680. tranf_submit(oParam);
  681. //2013/09/11
  682. old_opflagcd=ds_send_reqdata_anstinfo.getColumn(0,"chopflagcd");
  683. //2013/09/11
  684. //alert("마취 일반 정보를 저장하였습니다");
  685. // 공통 기본 정보 셋 (마취기록번호)
  686. anstrecno = ds_anstinfo_5700.getColumn(0,"anstrecno");
  687. dsf_makeValue(ds_send_reqdata_anstinfo,"anstrecno", "string",anstrecno);
  688. // 집도과, 집도의, 마취의사 저장
  689. var updateflag = "N";
  690. dsf_makeValue(ds_anstinfo_5700,"anstdrid1", "string",anstdrid1_c);
  691. dsf_makeValue(ds_anstinfo_5700,"anstdrid2", "string",anstdrid2_c);
  692. dsf_makeValue(ds_anstinfo_5700,"anstdrid3", "string",anstdrid3_c);
  693. dsf_makeValue(ds_anstinfo_5700,"anstdrid4", "string",anstdrid4_c); //2013/02/04 Start 마취의 추가
  694. // 20200319 김현석, 마취기록지 마취의 정보 추가 anstdrid5 ~ 8, 요청번호:20200210033
  695. dsf_makeValue(ds_anstinfo_5700,"anstdrid5", "string",anstdrid5_c);
  696. dsf_makeValue(ds_anstinfo_5700,"anstdrid6", "string",anstdrid6_c);
  697. dsf_makeValue(ds_anstinfo_5700,"anstdrid7", "string",anstdrid7_c);
  698. dsf_makeValue(ds_anstinfo_5700,"anstdrid8", "string",anstdrid8_c);
  699. dsf_makeValue(ds_anstinfo_5700,"anstnursid1", "string",anstnursid1_c);
  700. dsf_makeValue(ds_anstinfo_5700,"anstnursid2", "string",anstnursid2_c);
  701. dsf_makeValue(ds_anstinfo_5700,"anstnursid3", "string",anstnursid3_c); //20131104 Start
  702. dsf_makeValue(ds_anstinfo_5700,"anstnursid4", "string",anstnursid4_c); //20131104 End
  703. dsf_makeValue(ds_anstinfo_5700,"perfdeptcd1","string", perfdeptcd1_c);
  704. dsf_makeValue(ds_anstinfo_5700,"perfdrid1" , "string",perfdrid1_c);
  705. dsf_makeValue(ds_anstinfo_5700,"perfdeptcd2","string", perfdeptcd2_c);
  706. dsf_makeValue(ds_anstinfo_5700,"perfdrid2" ,"string", perfdrid2_c);
  707. dsf_makeValue(ds_anstinfo_5700,"perfdeptcd3","string", perfdeptcd3_c);
  708. dsf_makeValue(ds_anstinfo_5700,"perfdrid3" ,"string", perfdrid3_c);
  709. dsf_makeValue(ds_anstinfo_5700,"perfdeptcd4", "string",perfdeptcd4_c);
  710. dsf_makeValue(ds_anstinfo_5700,"perfdrid4" , "string",perfdrid4_c);
  711. var savedata = "oprsrvno▦anstrecno▦instcd▦drseq▦drtype▦drid▦deptcd▩";
  712. var dataString = "";
  713. // 집도과 / 집도의 / 마취의
  714. if (!utlf_isNull(perfdrid1_c) && perfdrid1_c != "-" && perfdrid1_c != "0") {
  715. dataString = dataString + oprsrvno + "▦" + anstrecno + "▦" + instcd + "▦1▦O▦" + perfdrid1_c + "▦" + perfdeptcd1_c + "▩";
  716. }
  717. if (!utlf_isNull(perfdrid2_c) && perfdrid2_c != "-" && perfdrid2_c != "0") {
  718. dataString = dataString + oprsrvno + "▦" + anstrecno + "▦" + instcd + "▦2▦O▦" + perfdrid2_c + "▦" + perfdeptcd2_c + "▩";
  719. }
  720. if (!utlf_isNull(perfdrid3_c) && perfdrid3_c != "-" && perfdrid3_c != "0") {
  721. dataString = dataString + oprsrvno + "▦" + anstrecno + "▦" + instcd + "▦3▦O▦" + perfdrid3_c + "▦" + perfdeptcd3_c + "▩";
  722. }
  723. if (!utlf_isNull(perfdrid4_c) && perfdrid4_c != "-" && perfdrid4_c != "0") {
  724. dataString = dataString + oprsrvno + "▦" + anstrecno + "▦" + instcd + "▦4▦O▦" + perfdrid4_c + "▦" + perfdeptcd4_c + "▩";
  725. }
  726. if (!utlf_isNull(anstdrid1_c) && anstdrid1_c != "-" && anstdrid1_c != "0") {
  727. dataString = dataString + oprsrvno + "▦" + anstrecno + "▦" + instcd + "▦1▦A▦" + anstdrid1_c + "▦" + anstdeptcd + "▩";
  728. }
  729. if (!utlf_isNull(anstdrid2_c) && anstdrid2_c != "-" && anstdrid2_c != "0") {
  730. dataString = dataString + oprsrvno + "▦" + anstrecno + "▦" + instcd + "▦2▦A▦" + anstdrid2_c + "▦" + anstdeptcd + "▩";
  731. }
  732. if (!utlf_isNull(anstdrid3_c) && anstdrid3_c != "-" && anstdrid3_c != "0") {
  733. dataString = dataString + oprsrvno + "▦" + anstrecno + "▦" + instcd + "▦3▦A▦" + anstdrid3_c + "▦" + anstdeptcd + "▩";
  734. }
  735. if (!utlf_isNull(anstdrid4_c) && anstdrid4_c != "-" && anstdrid4_c != "0") { //2013/02/04 Start 마취의 추가
  736. dataString = dataString + oprsrvno + "▦" + anstrecno + "▦" + instcd + "▦4▦A▦" + anstdrid4_c + "▦" + anstdeptcd + "▩";
  737. }//2013/02/04 End
  738. // 20200319 김현석, 마취기록지 마취의 정보 추가 anstdrid5 ~ 8, 요청번호:2020021003
  739. if (!utlf_isNull(anstdrid5_c) && anstdrid5_c != "-" && anstdrid5_c != "0") {
  740. dataString = dataString + oprsrvno + "▦" + anstrecno + "▦" + instcd + "▦5▦A▦" + anstdrid5_c + "▦" + anstdeptcd + "▩";
  741. }
  742. if (!utlf_isNull(anstdrid6_c) && anstdrid6_c != "-" && anstdrid6_c != "0") {
  743. dataString = dataString + oprsrvno + "▦" + anstrecno + "▦" + instcd + "▦6▦A▦" + anstdrid6_c + "▦" + anstdeptcd + "▩";
  744. }
  745. if (!utlf_isNull(anstdrid7_c) && anstdrid7_c != "-" && anstdrid7_c != "0") {
  746. dataString = dataString + oprsrvno + "▦" + anstrecno + "▦" + instcd + "▦7▦A▦" + anstdrid7_c + "▦" + anstdeptcd + "▩";
  747. }
  748. if (!utlf_isNull(anstdrid8_c) && anstdrid8_c != "-" && anstdrid8_c != "0") {
  749. dataString = dataString + oprsrvno + "▦" + anstrecno + "▦" + instcd + "▦8▦A▦" + anstdrid8_c + "▦" + anstdeptcd + "▩";
  750. }
  751. if (!utlf_isNull(anstnursid1_c) && anstnursid1_c != "-" && anstnursid1_c != "0") {
  752. dataString = dataString + oprsrvno + "▦" + anstrecno + "▦" + instcd + "▦1▦N▦" + anstnursid1_c + "▦" + opanstdeptcd + "▩";
  753. }
  754. if (!utlf_isNull(anstnursid2_c) && anstnursid2_c != "-" && anstnursid2_c != "0") {
  755. dataString = dataString + oprsrvno + "▦" + anstrecno + "▦" + instcd + "▦2▦N▦" + anstnursid2_c + "▦" + opanstdeptcd + "▩";
  756. }
  757. if (!utlf_isNull(anstnursid3_c) && anstnursid3_c != "-" && anstnursid3_c != "0") { //20131104 Start
  758. dataString = dataString + oprsrvno + "▦" + anstrecno + "▦" + instcd + "▦3▦N▦" + anstnursid3_c + "▦" + opanstdeptcd + "▩";
  759. }
  760. if (!utlf_isNull(anstnursid4_c) && anstnursid4_c != "-" && anstnursid4_c != "0") {
  761. dataString = dataString + oprsrvno + "▦" + anstrecno + "▦" + instcd + "▦4▦N▦" + anstnursid4_c + "▦" + opanstdeptcd + "▩";
  762. } //20131104 End
  763. // 집도과 / 집도의 / 마취의 저장
  764. dsf_setCSVToDs("ds_send_drinfo",savedata + dataString);
  765. dsf_setTypeFormat(ds_send_drinfo, "anstrecno:INT^drseq:INT");
  766. var oParam = {};
  767. oParam.id = "TXMMR03701";
  768. oParam.service = "anstrecapp.AnstRec";
  769. oParam.method = "reqExeAnstDr";
  770. oParam.inds = "drinfo=ds_send_drinfo";
  771. oParam.outds = "ds_anstinfo_5700=anstinfo";
  772. oParam.async = false;
  773. tranf_submit(oParam);
  774. // 2008.10.07. 수술전평가서 작성후.. 표시하기..
  775. // 2009.03.03. 수술전평가서의 작성된 asa class code 셋하기..
  776. fSetASAClass();
  777. // 2009.06.12. 수술전처치 관련 플래그..
  778. var preopcureflag = ds_anstinfo_5700.getColumn(0,"preopcureflag");
  779. if (preopcureflag == "N") { preopcureflag = "" };
  780. ds_anstinfo_5700.setColumn(0,"preopcureflag" , preopcureflag);
  781. //hkjoo, 2009/10/29, 마취의(선택의) 정보를 원무팀 선택진료정보에 저장
  782. setSpecdridInfo();
  783. ds_anstinfo_5700.enableevent = true;
  784. }
  785. /*************************************************
  786. * 마취일반정보 마취의(선택의) 첫번째 정보를
  787. * 원무팀 선택진료의사 정보의 마취통증의학과 선택의3에 저장
  788. *************************************************/
  789. function setSpecdridInfo()
  790. {
  791. //mmbfGetHardCodeInfo("/root/send/reqdata/hardCodeInfo", "/root/init/hardcd", 9910);
  792. lf_getHardCDList("N", 9910, null, ds_init_hardcd);
  793. var dutplceinstcd = sysf_getUserInfo("dutplceinstcd");
  794. //하드코드 테이블의 정보에 따라 해당 기관에만 적용
  795. if(!utlf_isNull(ds_init_hardcd.lookup("hardcd", dutplceinstcd , "hardcd")))
  796. {
  797. //hkjoo, 2009/10/26
  798. var anstdrid = "";
  799. var anstdrid1 = ds_anstinfo_5700.getColumn(0,"anstdrid1");
  800. var anstdrid2 = ds_anstinfo_5700.getColumn(0,"anstdrid2");
  801. var anstdrid3 = ds_anstinfo_5700.getColumn(0,"anstdrid3");
  802. if ( ds_init_anstdrlist.lookup("userid", anstdrid1 ,"refseq") == "A")
  803. {
  804. anstdrid = anstdrid1;
  805. }
  806. else if ( ds_init_anstdrlist.lookup("userid", anstdrid2 ,"refseq") == "A")
  807. {
  808. anstdrid = anstdrid2;
  809. }
  810. else if ( ds_init_anstdrlist.lookup("userid", anstdrid3 ,"refseq") == "A")
  811. {
  812. anstdrid = anstdrid3;
  813. }
  814. if ( !utlf_isNull(anstdrid))
  815. {
  816. var objParam =[{col:"pid", type:"string", size:256, val:pid},
  817. {col:"anstdrid", type:"string", size:256, val:anstdrid}]
  818. dsf_createDsRow("ds_send_reqdata_anstinfoMast",objParam, false);
  819. var oParam = {};
  820. oParam.id = "TRMMR04211";
  821. oParam.service = "anstrecapp.AnstRec";
  822. oParam.method = "reqGetSpecdridInfo";
  823. oParam.inds = "anstinfoMast=ds_send_reqdata_anstinfoMast";
  824. oParam.outds = "ds_specdridInfo=specdridInfo";
  825. oParam.async = false;
  826. tranf_submit(oParam);
  827. var specdrid1 = ds_specdridInfo.getColumn(0,"specdrid1");
  828. var specdrid2 = ds_specdridInfo.getColumn(0,"specdrid2");
  829. if ( anstdrid == specdrid1 || anstdrid == specdrid2 ) {
  830. //alert("원무팀 선택의 정보에 이미 저장 되어 있는 마취의 입니다.");
  831. }
  832. else { //선택의1의 정보가 원무팀 선택의1, 선택의2의 정보와 겹치지 않으면 저장
  833. var oParam = {};
  834. oParam.id = "TXMMR03713";
  835. oParam.service = "anstrecapp.AnstRec";
  836. oParam.method = "reqExeAnstDrMastItem";
  837. oParam.inds = "anstinfoMast=ds_send_reqdata_anstinfoMast";
  838. oParam.outds = "";
  839. oParam.async = false;
  840. oParam.callback = "cf_TXMMR03713";
  841. tranf_submit(oParam);
  842. }
  843. }
  844. }
  845. }
  846. /************************************/
  847. function cf_TXMMR03713(sSvcId, nErrorCode, sErrorMsg) {
  848. if(nErrorCode < 0) return;
  849. }
  850. /**
  851. * @desc : 종료시간에서 시작시간을 뺀 시간 계산
  852. * @param :
  853. * @ fromtmPath : 시작시간 (시분)
  854. * @ totmPath : 종료시간 (시분)
  855. * @return :
  856. * @author :
  857. * @---------------------------------------------------
  858. */
  859. function fGetHours()
  860. {
  861. ds_anstinfo_5700.enableevent = false;
  862. var anstfromdd = ds_anstinfo_5700.getColumn(0,"anstfromdd");
  863. var anstfromtm = utlf_transNullToEmpty(ds_anstinfo_5700.getColumn(0,"anstfromtm"));
  864. var ansttodd = ds_anstinfo_5700.getColumn(0,"ansttodd");
  865. var ansttotm = utlf_transNullToEmpty(ds_anstinfo_5700.getColumn(0,"ansttotm"));
  866. if (anstfromtm >= "2400") { anstfromtm = "0000" }
  867. if (ansttotm >= "2400") { ansttotm = "0000" }
  868. ds_anstinfo_5700.setColumn(0,"anstfromdt", ""+ anstfromdd + anstfromtm);
  869. ds_anstinfo_5700.setColumn(0,"ansttodt", ""+ ansttodd + ansttotm);
  870. var fromdt = ds_anstinfo_5700.getColumn(0,"anstfromdt");
  871. var todt = ds_anstinfo_5700.getColumn(0,"ansttodt");
  872. var getHours = "0000";
  873. if (fromdt <= todt)
  874. {
  875. var date1 = fromdt.toDate("YYYYMMDDhhmm");
  876. var date2 = todt.toDate("YYYYMMDDhhmm");
  877. getHours= fGetHourInterval(fTimeString(date1),fTimeString(date2));
  878. }
  879. if (getHours.length > 4)
  880. {
  881. //alert("마취 총시간은 100시간 미만입니다.");
  882. getHours = "0000";
  883. }
  884. var hr = getHours.substr(0,2);
  885. var min = getHours.substr(2,2);
  886. ds_hiddendata.setColumn(0,"ansttm", hr);
  887. ds_hiddendata.setColumn(0,"anstmnt",min);
  888. ds_anstinfo_5700.enableevent = true;
  889. }
  890. /**
  891. * Time 스트링을 자바스크립트 Date 객체로 변환
  892. * parameter time: Time 형식의 String
  893. */
  894. function fTimeObject(time) { //parseTime(time)
  895. var year = time.substr(0,4);
  896. var month = time.substr(4,2) - 1; // 1월=0,12월=11
  897. var day = time.substr(6,2);
  898. var hour = time.substr(8,2);
  899. var min = time.substr(10,2);
  900. return new Date(year,month,day,hour,min);
  901. }
  902. /**
  903. * 자바스크립트 Date 객체를 Time 스트링으로 변환
  904. * parameter date: JavaScript Date Object
  905. */
  906. function fTimeString(date) { //formatTime(date)
  907. var year = date.getFullYear();
  908. var month = date.getMonth() + 1; // 1월=0,12월=11이므로 1 더함
  909. var day = date.getDate();
  910. var hour = date.getHours();
  911. var min = date.getMinutes();
  912. if (("" + month).length == 1) { month = "0" + month; }
  913. if (("" + day).length == 1) { day = "0" + day; }
  914. if (("" + hour).length == 1) { hour = "0" + hour; }
  915. if (("" + min).length == 1) { min = "0" + min; }
  916. return ("" + year + month + day + hour + min)
  917. }
  918. /**
  919. * 두 Time이 몇 시간 차이나는지 구함
  920. * time1이 time2보다 크면(미래면) minus(-)
  921. */
  922. function fGetHourInterval(time1,time2) {
  923. var date1 = fTimeObject(time1);
  924. var date2 = fTimeObject(time2);
  925. var hour = 1000 * 3600; //1시간
  926. var min = 1000 * 60; //1분
  927. var origin = parseInt((date2 - date1) / min, 10);
  928. var deferhour = parseInt(origin / 60,10);
  929. var defermin = origin % 60;
  930. var hour = deferhour;
  931. var min = defermin;
  932. if (("" + hour).length == 1) { hour = "0" + hour; }
  933. if (("" + min).length == 1) { min = "0" + min; }
  934. return ("" + hour + min);
  935. }
  936. /**
  937. * Right 빈자리 만큼 padStr 을 붙인다.
  938. */
  939. function rpad(src, len, padStr){
  940. var retStr = "";
  941. var padCnt = Number(len) - String(src).length;
  942. for(var i=0;i<padCnt;i++) retStr += String(padStr);
  943. return src+retStr;
  944. }
  945. /**
  946. * @desc : 종료일시 적용 (선택된 Inhalational Agent)
  947. * @
  948. * @param :
  949. * @return :
  950. * @---------------------------------------------------
  951. */
  952. function fSetAnstToDt()
  953. {
  954. // 2007.12.13. 마취시작시간을 확인한다.. 마취시작시간이랑 선택할 시작시간이 같으면 선택시간 변경한다..
  955. var anstfromdt = ds_anstinfo_5700.getColumn(0,"anstfromdd") + ds_anstinfo_5700.getColumn(0,"anstfromtm");
  956. var agenttodd = ds_hiddendata.getColumn(0,"agenttodd");
  957. var agenttotm = ds_hiddendata.getColumn(0,"agenttotm");
  958. var todt = agenttodd + agenttotm;
  959. if (anstfromdt > todt)
  960. {
  961. return;
  962. }
  963. for (var i=0 ; i < ds_agent01.rowcount ; i++)
  964. {
  965. var checked = ds_agent01.getColumn(i,"checked");
  966. if (checked == "true")
  967. {
  968. ds_agent01.setColumn(i,"drugtodd", agenttodd);
  969. ds_agent01.setColumn(i,"drugtotm", agenttotm);
  970. }
  971. }
  972. }
  973. /**
  974. * @desc : 수술전상태평가표 기록지
  975. * @
  976. * @param :
  977. * @return :
  978. * @author : 박유미
  979. * @---------------------------------------------------
  980. */
  981. function fPreOpAssemRec(Flag) {
  982. if( utlf_isNull(Flag) ){
  983. Flag = "STEP1";
  984. }
  985. var lv_scrnidx = 0;
  986. var lv_scrnid = "SSMMR06900";
  987. if( Flag == "STEP4" ){
  988. lv_scrnidx = 4;
  989. lv_scrnid = "SSMMR06900_" + lv_scrnidx;
  990. }
  991. // 2009.05.29. 수술전평가서팝업 화면 체킹하기..
  992. var mainObj = frmf_getMainViewer();
  993. var xpt = this.position.left + eval(0);
  994. var ypt = this.position.top + eval(0);
  995. var mon = (sysf_getCurrentMonitorNumber()==1) ? 2 : 1;
  996. var curPrcpObj = mainObj.frmf_findPopup(lv_scrnid); //활성화된 수술전평가서팝업 화면 object loading
  997. if(!utlf_isNull(curPrcpObj)){ //활성화된 처방화면이 있는 경우, 처방창 클로징하기..
  998. curPrcpObj.frmf_setFocus();
  999. return;
  1000. }
  1001. var nFormcd = ds_pmenu_formcd.lookup("hardcd", Flag, "hardcdnm");
  1002. if( utlf_isNull(nFormcd) ){
  1003. sysf_messageBox("선택한 기록의 서식코드가", "E014");
  1004. return false;
  1005. }
  1006. dsf_createDsRow("ds_init_formcd_hardcd", [{col:"hardcd", type:"string", size:256, val:nFormcd}]);
  1007. var formseqno = "";
  1008. if(Flag == "STEP4"){
  1009. lf_OpAssemRecExist(Flag);
  1010. if(!lgv_OpAssemRecExist)
  1011. return;
  1012. formseqno = ds_data_opanstform.getColumn(0,"formseqno");
  1013. }else{
  1014. formseqno = utlf_transEmptyToNull(ds_opanstform.getColumn(0,"formseqno"));
  1015. if (utlf_isNull(formseqno) || formseqno == "0") {
  1016. ds_opanstform.clearData();
  1017. var oParam = {};
  1018. oParam.id = "TRMMR03714";
  1019. oParam.service = "anstrecapp.AnstRec";
  1020. oParam.method = "reqGetOpAnstFormSeqno";
  1021. oParam.inds = "reqdata=ds_send_reqdata";
  1022. oParam.outds = "ds_opanstform=opanstform";
  1023. oParam.async = false;
  1024. oParam.progress = false;
  1025. oParam.callback = "cf_TRMMR03714_fPreOpAssemRec";
  1026. tranf_submit(oParam);
  1027. formseqno = ds_opanstform.getColumn(0,"formseqno");
  1028. }
  1029. }
  1030. var sPid = "";
  1031. var sOrddd = "";
  1032. var sCretNo = "";
  1033. var formcd = "";
  1034. if (utlf_isNull(formseqno) || formseqno == "0")
  1035. {
  1036. var rtnMsg = "마취전평가 및 협진서";
  1037. if( Flag != "STEP4"){
  1038. //rtnMsg = "마취유도직전평가서";
  1039. sysf_messageBox(rtnMsg + " 작성이 되지않았습니다. \n진료대상자리스트 수술탭에서 작성하시기 바랍니다.", "E");
  1040. return;
  1041. }
  1042. // 환자수술정보
  1043. var node = sysf_getGlobalVariable("paminfo");
  1044. ds_paminfolist.clear();
  1045. dsf_setCSVToDs("ds_paminfolist", node);
  1046. sPid = ds_paminfolist.getColumn(0,"pid"); // 환자번호
  1047. var sPnm = ds_paminfolist.getColumn(0,"hngnm"); // 환자명
  1048. var sSex = ds_paminfolist.getColumn(0,"sex"); // 성별
  1049. var sAge = ds_paminfolist.getColumn(0,"age"); // 나이
  1050. var sIndd = ds_paminfolist.getColumn(0,"indd"); // 입원일자
  1051. sOrddd = ds_paminfolist.getColumn(0,"orddd"); // 진료일자
  1052. sCretNo = ds_paminfolist.getColumn(0,"cretno"); // 환자 일자별 일련번호
  1053. var sInstcd = ds_paminfolist.getColumn(0,"instcd"); // 기관코드
  1054. var sIOFlag = ds_paminfolist.getColumn(0,"ioflag"); // 입원/외래 구분
  1055. var sWardCD = ds_paminfolist.getColumn(0,"wardcd");
  1056. var sRoomCD = ds_paminfolist.getColumn(0,"roomcd");
  1057. var sOrdDeptCd = ds_paminfolist.getColumn(0,"orddeptcd"); // 진료과코드
  1058. var sOrdDrId = ds_paminfolist.getColumn(0,"medispclid"); // 진료의사ID
  1059. var sOrdDeptNm = ds_paminfolist.getColumn(0,"orddeptnm"); // 진료과
  1060. var sOrdDrNm = ds_paminfolist.getColumn(0,"orddrnm"); // 진료의사
  1061. // 2009.05.20. 입원/외래 파람처리를 위하여..
  1062. var sPerfDeptCd = ds_oprsrvinfo.getColumn(0,"perfdeptcd"); // 집도과코드
  1063. var sPerfDrId = ds_oprsrvinfo.getColumn(0,"perfdrid"); // 집도의ID
  1064. var disparam = sPid +"▦" + sPnm +"▦" + sSex+ "/" + sAge+ "▦" + sOrdDeptNm +"▦" + sRoomCD + "▦";
  1065. frmf_setParameter("pid", sPid);
  1066. // 2009.05.20. 입원인 경우는 입원일/진료과를.. 이외는 진료일/집도과를..
  1067. if (sIOFlag == "I" || sIOFlag == "D" || sIOFlag == "E") {
  1068. sOrddd = sIndd;
  1069. frmf_setParameter("orddd", sIndd);
  1070. frmf_setParameter("orddeptcd", sOrdDeptCd); //진료과
  1071. } else {
  1072. frmf_setParameter("orddd", sOrddd);
  1073. frmf_setParameter("orddeptcd", sPerfDeptCd); //집도과
  1074. }
  1075. frmf_setParameter("cretno", sCretNo);
  1076. frmf_setParameter("ioflag", sIOFlag);
  1077. frmf_setParameter("orddrid", sPerfDrId); //집도의
  1078. frmf_setParameter("disppatinfo", disparam); //등록번호▦환자명▦성별/나이▦진료과▦병실▦
  1079. // 2009.02.24. 수술전평가서 띄울때 검사 측정치 등이 있으면 바로 세팅해서 보여달라는 요청
  1080. // 파라메터 추가 : oprsrvno, opcnfmdd)
  1081. var oprsrvno = ds_oprsrvinfo.getColumn(0,"oprsrvno");
  1082. var opcnfmdd = ds_oprsrvinfo.getColumn(0,"opcnfmdd");
  1083. frmf_setParameter("oprsrvno", oprsrvno);
  1084. frmf_setParameter("opcnfmdd", opcnfmdd);
  1085. frmf_setParameter("openmode", "newform"); //오픈모드는 “recform”
  1086. // 2009.05.19. 수술전평가서 폼코드 가져오기.. (의정부 확산 관련 수정내용임)
  1087. formcd = ds_init_formcd_hardcd.getColumn(0,"hardcd");
  1088. frmf_setParameter("formcd", formcd);
  1089. frmf_setParameter("formrecseq", formseqno);
  1090. } else {
  1091. // 2009.02.24. 수술전평가서 띄울때 검사 측정치 등이 있으면 바로 세팅해서 보여달라는 요청
  1092. // 환자수술정보
  1093. var node = sysf_getGlobalVariable("paminfo");
  1094. ds_paminfolist.clear();
  1095. dsf_setCSVToDs("ds_paminfolist", node);
  1096. sPid = ds_paminfolist.getColumn(0,"pid"); // 환자번호
  1097. var sPnm = ds_paminfolist.getColumn(0,"hngnm"); // 환자명
  1098. var sSex = ds_paminfolist.getColumn(0,"sex"); // 성별
  1099. var sAge = ds_paminfolist.getColumn(0,"age"); // 나이
  1100. var sIndd = ds_paminfolist.getColumn(0,"indd"); // 입원일자
  1101. sOrddd = ds_paminfolist.getColumn(0,"orddd"); // 진료일자
  1102. sCretNo = ds_paminfolist.getColumn(0,"cretno"); // 환자 일자별 일련번호
  1103. var sInstcd = ds_paminfolist.getColumn(0,"instcd"); // 기관코드
  1104. var sIOFlag = ds_paminfolist.getColumn(0,"ioflag"); // 입원/외래 구분
  1105. var sWardCD = ds_paminfolist.getColumn(0,"wardcd");
  1106. var sRoomCD = ds_paminfolist.getColumn(0,"roomcd");
  1107. var sOrdDeptCd = ds_paminfolist.getColumn(0,"orddeptcd"); // 진료과코드
  1108. var sOrdDrId = ds_paminfolist.getColumn(0,"medispclid"); // 진료의사ID
  1109. var sOrdDeptNm = ds_paminfolist.getColumn(0,"orddeptnm"); // 진료과
  1110. var sOrdDrNm = ds_paminfolist.getColumn(0,"orddrnm"); // 진료의사
  1111. var disparam = sPid +"▦" + sPnm +"▦" + sSex+ "/" + sAge+ "▦" + sOrdDeptNm +"▦" + sRoomCD + "▦";
  1112. frmf_setParameter("disppatinfo", disparam); //등록번호▦환자명▦성별/나이▦진료과▦병실▦
  1113. // 2009.02.24. 수술전평가서 띄울때 검사 측정치 등이 있으면 바로 세팅해서 보여달라는 요청
  1114. // 파라메터 추가 : oprsrvno, opcnfmdd)
  1115. var oprsrvno = ds_oprsrvinfo.getColumn(0,"oprsrvno");
  1116. var opcnfmdd = ds_oprsrvinfo.getColumn(0,"opcnfmdd");
  1117. frmf_setParameter("oprsrvno", oprsrvno);
  1118. frmf_setParameter("opcnfmdd", opcnfmdd);
  1119. frmf_setParameter("openmode", "recform"); //오픈모드는 “recform”
  1120. frmf_setParameter("formrecseq", formseqno);
  1121. }
  1122. frmf_setParameter("callback", Flag);
  1123. if( lv_scrnidx != 0 ){
  1124. frmf_setParameter("scrnidx", lv_scrnidx);
  1125. }else{
  1126. frmf_clearParameter("scrnidx");
  1127. }
  1128. //open("SSMMR06900", 1, 0, 0 ,"", "", "","caption:hidden;");
  1129. frmf_open(lv_scrnid, "SSMMR06900", null, false, 1, 1, 1, null, null, null, null, null, "P");
  1130. }
  1131. function cf_TRMMR03714_fPreOpAssemRec(sSvcId, nErrorCode, sErrorMsg) {
  1132. if(nErrorCode < 0) return;
  1133. }
  1134. function fPreOpAssemRecClose() {
  1135. //술전평가표 저장후 formseqno 넘겨받음
  1136. var param = frmf_getParameter("SSMMR01100_formrecseq");
  1137. if (!utlf_isNull(param)) {
  1138. dsf_makeValue(ds_opanstform,"formseqno", "string", param);
  1139. // 2008.10.07. 수술전평가서 정보가져오기..
  1140. ds_opanstform.clear();
  1141. var oParam = {};
  1142. oParam.id = "TRMMR03714";
  1143. oParam.service = "anstrecapp.AnstRec";
  1144. oParam.method = "reqGetOpAnstFormSeqno";
  1145. oParam.inds = "reqdata=ds_send_reqdata";
  1146. oParam.outds = "ds_opanstform=opanstform";
  1147. oParam.async = false;
  1148. oParam.callback = "cf_TRMMR03714_fPreOpAssemRecClose";
  1149. tranf_submit(oParam);
  1150. // 2008.10.07. 수술전평가서 작성후.. 표시하기..
  1151. // 2009.03.03. 수술전평가서의 작성된 asa class code 셋하기..
  1152. }
  1153. }
  1154. function cf_TRMMR03714_fPreOpAssemRecClose(sSvcId, nErrorCode, sErrorMsg) {
  1155. if(nErrorCode < 0) return;
  1156. fSetASAClass();
  1157. }
  1158. /**
  1159. * @desc : 사용자콤보 조회
  1160. * @
  1161. * @param : ref - reference path
  1162. * rsltref - result reference path
  1163. * deptcd - 부서코드
  1164. * jobkindcd - 직종코드
  1165. * jobposcd - 직책코드
  1166. * specordyn - 선택진료여부
  1167. * @return :
  1168. * @author :
  1169. * @---------------------------------------------------
  1170. */
  1171. function fGetUserComboList(oDsRsltRef, sDeptCd, sJobKindCd, sSpeCordYN, sOpcnfmdd)
  1172. {
  1173. var sRef = dsf_createDsRow("ds_cond_usercombo", [{col:"deptcd", type:"string", size:256, val:sDeptCd}, // 부서코드
  1174. {col:"jobkindcd", type:"string", size:256, val:sJobKindCd}, // 직종코드(의사:0330)
  1175. {col:"specordyn", type:"string", size:256, val:sSpeCordYN}]); // 선택진료여부
  1176. var oRef = this.objects[sRef];
  1177. if(!utlf_isNull(sOpcnfmdd) && sOpcnfmdd.length == 8){
  1178. oRef.addColumn("opcnfmdd", "string");
  1179. oRef.setColumn(0, "opcnfmdd", sOpcnfmdd); //수술확정일자
  1180. }
  1181. var oParam = {};
  1182. oParam.id = "TRMMR03700"; // transaction을 구분하기 위한 ID
  1183. oParam.service = "anstrecapp.AnstRec";
  1184. oParam.method = "reqGetUserComboList"; // method ID
  1185. oParam.inds = "req=" + sRef; // transaction을 요청할 때 입력값으로 보낼 Dataset 의 ID
  1186. oParam.outds = oDsRsltRef.name + "=usercombo"; // transaction을 처리 결과를 받을 Dataset의 ID
  1187. tranf_submit(oParam);
  1188. dsf_addDsItem( oDsRsltRef, "userid", "usernm", "-", "-", "above");
  1189. // Temp로 사용한 Dataset을 삭제
  1190. var oRemoveDs = this.removeChild(sRef);
  1191. oRemoveDs = null;
  1192. }
  1193. /**
  1194. * @desc : meeting time set
  1195. * @
  1196. * @param :
  1197. * @return :
  1198. * @author : 2008.06.23. 이은영
  1199. * @---------------------------------------------------
  1200. */
  1201. function fSetMeetingTime(currentFlag)
  1202. {
  1203. //2013/12/19
  1204. ds_anstinfo_5700.enableevent = false;
  1205. var patinroomdd="";
  1206. var patinroomtm="";
  1207. if(nurseoprec=="false"){
  1208. patinroomdd=ipt_patinroomdd.value;
  1209. patinroomtm=ipt_patinroomtm.value;
  1210. if(utlf_isNull(patinroomdd) || utlf_isNull(patinroomtm)){
  1211. sysf_messageBox("수술방 입실시간이 입력되지 않았습니다.", "E");
  1212. ipt_meetingtm.value="";
  1213. btn_oproominoutctl.setFocus();
  1214. ds_anstinfo_5700.enableevent = true;
  1215. return;
  1216. }else{
  1217. fCtlDisable(true);
  1218. }
  1219. }else{
  1220. if (fGetPatArrvDT() == false) {
  1221. sysf_messageBox("환자가 도착하지 않았습니다.", "E999", "");
  1222. ipt_meetingtm.value = "";
  1223. ds_anstinfo_5700.enableevent = true;
  1224. return;
  1225. }
  1226. }
  1227. //2013/12/19
  1228. // 2. 버튼 현재 시간 입력인가?
  1229. if (currentFlag == "Y") {
  1230. var tm = utlf_getCurrentTime();
  1231. //ds_anstinfo_5700.setColumn(0,"meetingtm", tm.substring(0,4));
  1232. ipt_meetingtm.value = tm.substring(0,4);
  1233. }
  1234. // 3. 날짜 + 시간 => 데이트 타입이 맞는가?
  1235. var dt = ds_anstinfo_5700.getColumn(0,"meetingdd") + ipt_meetingtm.value;
  1236. if (utlf_isValidDateTime(dt, "YYYYMMDDhhmm") == false) {
  1237. sysf_messageBox("Meeting Time 시간을 정확히 입력하십시오", "E999", "");
  1238. ipt_meetingtm.value = "";
  1239. }
  1240. dt = ds_anstinfo_5700.getColumn(0,"meetingdd") + ipt_meetingtm.value;
  1241. // 4. 환자도착시간 , meeting time 비교
  1242. // 2009.05.04. 무통마취 / 재수술 / 수술전처치 인 경우에는 환자도착시간을 체킹하지 않음..
  1243. // 2009.07.16. 무통마취 / 재수술 인 경우에는 환자도착시간을 체킹하지 않음.. (수술전처치 제외)
  1244. var painlessflag = ds_oprsrvinfo.getColumn(0,"painlessflag");
  1245. var reopflag = ds_oprsrvinfo.getColumn(0,"reopflag");
  1246. var preopcureflag = ds_anstinfo_5700.getColumn(0,"preopcureflag");
  1247. //마취 방법 변경의 경우에도 환자 도착시간 체킹하지 않음. 2010.03.25, 주희경
  1248. var anstmthdchgflag = ds_anstinfo_5700.getColumn(0,"anstmthdchgflag"); //2010.04.13, 주희경, 마취방법변경 시 시간 체크 블러킹 해제
  1249. if (painlessflag != "Y" && reopflag != "Y" && anstmthdchgflag != "Y") {
  1250. if (dt.length == 12) {
  1251. //2013/12/19
  1252. var diffDays="";
  1253. var diffSecond="";
  1254. var diffMin="";
  1255. if(nurseoprec=="false"){
  1256. if(utlf_isNull(patinroomdd) || utlf_isNull(patinroomtm)){
  1257. sysf_messageBox("수술방 입실시간이 입력되지 않았습니다.", "E");
  1258. btn_oproominoutctl.setFocus();
  1259. ds_anstinfo_5700.enableevent = true;
  1260. return;
  1261. }
  1262. diffDays = utlf_getDateInterval(patinroomdd, dt.substring(0, 8));
  1263. diffSecond = utlf_getTimeInterval(patinroomtm, dt.substring(8,12));
  1264. diffMin = (diffDays * 24 * 60) + (diffSecond/60);
  1265. }else{
  1266. diffDays = utlf_getDateInterval(patarrvdt.substring(0,8), dt.substring(0, 8));
  1267. diffSecond = utlf_getTimeInterval(patarrvdt.substring(8,12), dt.substring(8,12));
  1268. diffMin = (diffDays * 24 * 60) + (diffSecond/60);
  1269. }
  1270. //2013/12/19
  1271. if (diffMin < 0) {
  1272. if(nurseoprec=="false"){
  1273. sysf_messageBox("Meeting Time이 수술방 입실시간 보다 작습니다.", "E999", "");
  1274. ipt_meetingtm.value = "";
  1275. ipt_meetingtm.setFocus();
  1276. ds_anstinfo_5700.enableevent = true;
  1277. return;
  1278. }else{
  1279. sysf_messageBox("Meeting Time이 대기실 도착시간 보다 작습니다.", "E999", "");
  1280. ipt_meetingtm.value = "";
  1281. ipt_meetingtm.setFocus();
  1282. ds_anstinfo_5700.enableevent = true;
  1283. return;
  1284. }
  1285. } else if (checkedMeetingTime == "Y" && diffMin > 15) {
  1286. // 2010.02.02. meeting time 블락킹..
  1287. // 1. 수술간호에서 환자 대기실 도착시간 저장 후 15분 이내에만 마취환자기록의 Meeting Time 을 저장할 수 있도록 Blocking
  1288. // 2. 단, 15분이 지난 경우에는 15분 이내 시간으로 수정하여 Meeting Time 입력 가능해야 함.
  1289. sysf_messageBox("환자 도착 시간 후 15분 이내로 Meeting Time 입력 가능합니다.", "E999", "");
  1290. ipt_meetingtm.value = "";
  1291. }
  1292. }
  1293. }
  1294. // 5. meeting time set
  1295. dt = ds_anstinfo_5700.getColumn(0,"meetingdd") + ds_anstinfo_5700.getColumn(0,"meetingtm");
  1296. //마취 방법 변경이 체크되어 있는 경우 수술방 도착시간을 기준으로 일시를 셋팅한다.
  1297. //2010.03.25, 주희경
  1298. if (anstmthdchgflag == "Y")
  1299. {
  1300. var patinroomtm = ds_hiddendata.getColumn(0,"patinroomtm");
  1301. dt = ds_hiddendata.getColumn(0,"patinroomdd") + patinroomtm;
  1302. }
  1303. var preMeetingdt = ds_anstinfo_5700.getColumn(0,"meetingdt");
  1304. if( !utlf_isNull(preMeetingdt) && preMeetingdt.length == 12
  1305. && !utlf_isNull(dt) && dt.length == 12){
  1306. var bRtn = parent.parent.parent.parent.lf_ChkVsData(dt, preMeetingdt);
  1307. if( bRtn == false ){
  1308. sysf_messageBox("변경하시는 Meeting Time 이전 기입력된 기록(V/S, Progress)이 존재합니다.\n기록(V/S, Progress) 삭제 후 진행하시기 바랍니다.", "E");
  1309. ipt_meetingtm.value = preMeetingdt.substr(8, 12);
  1310. ds_anstinfo_5700.enableevent = true;
  1311. return;
  1312. }
  1313. }
  1314. ds_anstinfo_5700.setColumn(0,"meetingdt", dt);
  1315. if (dt.length == 12) {
  1316. // 그래프 시작일시, 종료일시 셋해주기.. 마취시작시간 ~ (5분간격 컬럼 표시 : 총 2시간)
  1317. parent.parent.parent.parent.fSetGraphFormdt(dt);
  1318. // 메인 그리드에 그려주자..
  1319. parent.parent.parent.parent.fDisplayGrid();
  1320. // V/S TChart 그려주자..
  1321. }
  1322. ipt_tmoutchktm.setFocus();
  1323. ds_anstinfo_5700.enableevent = true;
  1324. }
  1325. /**
  1326. * @desc : time out check time set
  1327. * @
  1328. * @param :
  1329. * @return :
  1330. * @author : 2008.06.23. 이은영
  1331. * @---------------------------------------------------
  1332. */
  1333. function fSetTimeOutCheck(currentFlag)
  1334. {
  1335. //2013/12/19
  1336. ds_anstinfo_5700.enableevent = false;
  1337. if(nurseoprec=="false"){
  1338. var patinroomdd=ipt_patinroomdd.value;
  1339. var patinroomtm=ipt_patinroomtm.value;
  1340. if(utlf_isNull(patinroomdd) || utlf_isNull(patinroomtm)){
  1341. sysf_messageBox("수술방 도착시간이 입력되지 않았습니다.", "E");
  1342. ipt_tmoutchktm.value="";
  1343. ds_anstinfo_5700.enableevent = true;
  1344. return;
  1345. }else{
  1346. fCtlDisable(true);
  1347. }
  1348. }else{
  1349. if (fGetPatArrvDT() == false) {
  1350. sysf_messageBox("환자가 도착하지 않았습니다.", "E999", "");
  1351. ipt_tmoutchktm.value = "";
  1352. ds_anstinfo_5700.enableevent = true;
  1353. return;
  1354. }
  1355. }
  1356. //2013/12/19
  1357. // 2. 버튼 현재 시간 입력인가?
  1358. if (currentFlag == "Y") {
  1359. var tm = utlf_getCurrentTime();
  1360. ipt_tmoutchktm.value = tm.substring(0,4);
  1361. }
  1362. // 3. 날짜 + 시간 => 데이트 타입이 맞는가?
  1363. var dt = ds_anstinfo_5700.getColumn(0,"tmoutchkdd") + ds_anstinfo_5700.getColumn(0,"tmoutchktm");
  1364. if (utlf_isValidDateTime(dt, "YYYYMMDDhhmm") == false) {
  1365. sysf_messageBox("환자확인시간을 정확히 입력하십시오", "E999", "");
  1366. ipt_tmoutchktm.value = "";
  1367. }
  1368. var anstmthdchgflag = ds_anstinfo_5700.getColumn(0,"anstmthdchgflag"); //2010.04.13, 주희경, 마취방법변경 시 시간 체크 블러킹 해제
  1369. // 4. time out check, meeting time 비교
  1370. var meetingdt = ipt_meetingdd.value + ipt_meetingtm.value;
  1371. if (utlf_transNullToEmpty(ipt_meetingtm.value).length != 4) {
  1372. sysf_messageBox("meeting time 을 입력하십시오", "E999", "");
  1373. ipt_tmoutchktm.value = "";
  1374. } else if (dt.length == 12 && Number(dt) < Number(meetingdt) && anstmthdchgflag != "Y") {
  1375. sysf_messageBox("환자확인시간이 meeting time 보다 작습니다.\n시간을 정확히 입력하십시오", "E999", "");
  1376. ipt_tmoutchktm.value = "";
  1377. ipt_tmoutchktm.setFocus();
  1378. ds_anstinfo_5700.enableevent = true;
  1379. return;
  1380. }
  1381. // 5. time out check set
  1382. dt = ds_anstinfo_5700.getColumn(0,"tmoutchkdd") + ds_anstinfo_5700.getColumn(0,"tmoutchktm");
  1383. ds_anstinfo_5700.setColumn(0,"tmoutchkdt", dt);
  1384. ds_anstinfo_5700.enableevent = true;
  1385. // 6. 시작종료 symbol 그려주기..
  1386. // 20160624 [요청번호:20160818037] 마취기록지 관련
  1387. //parent.parent.parent.parent.fSetTimeRecAnstInfo("02", dt, 1);
  1388. }
  1389. /**
  1390. * @desc : 수술 시작 시간 set
  1391. * @
  1392. * @param :
  1393. * @return :
  1394. * @author : 2008.06.23. 이은영
  1395. * @---------------------------------------------------
  1396. */
  1397. function fSetOpStartTime(currentFlag) {
  1398. //2013/12/19
  1399. ds_anstinfo_5700.enableevent = false;
  1400. if(nurseoprec=="false")
  1401. {
  1402. var patinroomdd=ipt_patinroomdd.value;
  1403. var patinroomtm=ipt_patinroomtm.value;
  1404. if(utlf_isNull(patinroomdd) || utlf_isNull(patinroomtm))
  1405. {
  1406. sysf_messageBox("수술방 도착시간이 입력되지 않았습니다.", "E");
  1407. ipt_opfromtm.value="";
  1408. ds_anstinfo_5700.enableevent = true;
  1409. return;
  1410. }else
  1411. {
  1412. fCtlDisable(true);
  1413. }
  1414. }
  1415. else
  1416. {
  1417. if (fGetPatArrvDT() == false)
  1418. {
  1419. sysf_messageBox("환자가 도착하지 않았습니다.", "E999", "");
  1420. ipt_opfromtm.value = "";
  1421. ds_anstinfo_5700.enableevent = true;
  1422. return;
  1423. }
  1424. }
  1425. //2013/12/19
  1426. // 2. 버튼 현재 시간 입력인가?
  1427. if (currentFlag == "Y")
  1428. {
  1429. var tm = utlf_getCurrentTime();
  1430. ipt_opfromtm.value = tm.substring(0,4);
  1431. }
  1432. // 3. 날짜 + 시간 => 데이트 타입이 맞는가?
  1433. var dt = ds_anstinfo_5700.getColumn(0,"opfromdd") + ds_anstinfo_5700.getColumn(0,"opfromtm") ;
  1434. if (utlf_isValidDateTime(dt, "YYYYMMDDhhmm") == false)
  1435. {
  1436. sysf_messageBox("수술시작시간을 정확히 입력하십시오", "E999", "");
  1437. ipt_opfromtm.value = "";
  1438. }
  1439. var anstmthdchgflag = ds_anstinfo_5700.getColumn(0,"anstmthdchgflag"); //2010.04.13, 주희경, 마취방법변경 시 시간 체크 블러킹 해제
  1440. // 4. 수술시작시간, 마취시작시간 비교
  1441. var anstfromdt = ds_anstinfo_5700.getColumn(0,"anstfromdt");
  1442. if (anstfromdt.length == 8 && anstmthdchgflag != "Y")
  1443. {
  1444. sysf_messageBox("마취시작시간을 입력하십시오", "E999", "");
  1445. ipt_opfromtm.value = "";
  1446. }
  1447. // 5. 수술시작시간 set
  1448. dt = ds_anstinfo_5700.getColumn(0,"opfromdd") + ds_anstinfo_5700.getColumn(0,"opfromtm") ;
  1449. ds_anstinfo_5700.setColumn(0,"opfromdt", dt);
  1450. ds_anstinfo_5700.enableevent = true;
  1451. // 6. 시작종료 symbol 그려주기..
  1452. parent.parent.parent.parent.fSetTimeRecAnstInfo("03", dt, 1);
  1453. }
  1454. /**
  1455. * @desc : 수술 종료 시간 set
  1456. * @
  1457. * @param :
  1458. * @return :
  1459. * @author : 2008.06.23. 이은영
  1460. * @---------------------------------------------------
  1461. */
  1462. function fSetOpEndTime(currentFlag)
  1463. {
  1464. //2013/12/19
  1465. ds_anstinfo_5700.enableevent = false;
  1466. if(nurseoprec=="false"){
  1467. var patinroomdd=ipt_patinroomdd.value;
  1468. var patinroomtm=ipt_patinroomtm.value;
  1469. if(utlf_isNull(patinroomdd) || utlf_isNull(patinroomtm)){
  1470. sysf_messageBox("수술방 도착시간이 입력되지 않았습니다.", "E");
  1471. ipt_optotm.value="";
  1472. ds_anstinfo_5700.enableevent = true;
  1473. return;
  1474. }else{
  1475. fCtlDisable(true);
  1476. }
  1477. }else{
  1478. if (fGetPatArrvDT() == false) {
  1479. sysf_messageBox("환자가 도착하지 않았습니다.", "E999", "");
  1480. ipt_optotm.value = "";
  1481. ds_anstinfo_5700.enableevent = true;
  1482. return;
  1483. }
  1484. }
  1485. //2013/12/19
  1486. // 2. 버튼 현재 시간 입력인가?
  1487. if (currentFlag == "Y") {
  1488. var tm = utlf_getCurrentTime();
  1489. ipt_optotm.value = tm.substring(0,4);
  1490. }
  1491. // 3. 날짜 + 시간 => 데이트 타입이 맞는가?
  1492. var dt = ds_anstinfo_5700.getColumn(0,"optodd") + ds_anstinfo_5700.getColumn(0,"optotm") ;
  1493. if (utlf_isValidDateTime(dt, "YYYYMMDDhhmm") == false) {
  1494. sysf_messageBox("수술종료시간을 정확히 입력하십시오", "E999", "");
  1495. ipt_optotm.value = "";
  1496. }
  1497. var anstmthdchgflag = ds_anstinfo_5700.getColumn(0,"anstmthdchgflag"); //2010.04.13, 주희경, 마취방법변경 시 시간 체크 블러킹 해제
  1498. //2010.04.16, 이은영, Physical Status = 06 (환자의 퇴사가 선언되고 장기기증을 위한 목적으로 수술을 받는 환자) 인 경우 (수술종료시간/마취종료시간) 시간 체크 블러킹 해제
  1499. var physstat = ds_anstinfo_5700.getColumn(0,"physstat");
  1500. // 4. 수술시작시간, 수술종료시간 비교
  1501. var opfromdt = utlf_transNullToEmpty(ds_anstinfo_5700.getColumn(0,"opfromdt"));
  1502. if (opfromdt.length == 8) {
  1503. sysf_messageBox("수술시작시간을 입력하십시오", "E999", "");
  1504. ipt_optotm.value = "";
  1505. } else if (dt.length == 12 && Number(dt) < Number(opfromdt) && anstmthdchgflag != "Y" && physstat != "06") {
  1506. sysf_messageBox("수술종료시간이 수술시작시간 보다 작습니다.\n시간을 정확히 입력하십시오", "E999", "");
  1507. ipt_optotm.value = "";
  1508. ipt_optotm.setFocus();
  1509. ds_anstinfo_5700.enableevent = true;
  1510. return;
  1511. }
  1512. // 5. 수술종료시간 set
  1513. dt = ds_anstinfo_5700.getColumn(0,"optodd") + ds_anstinfo_5700.getColumn(0,"optotm") ;
  1514. ds_anstinfo_5700.setColumn(0,"optodt", dt);
  1515. ds_anstinfo_5700.enableevent = true;
  1516. // 6. 시작종료 symbol 그려주기..
  1517. parent.parent.parent.parent.fSetTimeRecAnstInfo("03", dt, 2);
  1518. }
  1519. /**
  1520. * @desc : 마취 시작 시간 set
  1521. * @
  1522. * @param :
  1523. * @return :
  1524. * @author : 2008.06.23. 이은영
  1525. * @---------------------------------------------------
  1526. */
  1527. function fSetAnstStartTime(currentFlag)
  1528. {
  1529. //2013/12/19
  1530. ds_anstinfo_5700.enableevent = false;
  1531. if(nurseoprec=="false"){
  1532. var patinroomdd=ipt_patinroomdd.value;
  1533. var patinroomtm=ipt_patinroomtm.value;
  1534. if(utlf_isNull(patinroomdd) || utlf_isNull(patinroomtm)){
  1535. sysf_messageBox("수술방 도착시간이 입력되지 않았습니다.", "E");
  1536. ipt_anstfromtm.value="";
  1537. ds_anstinfo_5700.enableevent = true;
  1538. return;
  1539. }else{
  1540. fCtlDisable(true);
  1541. }
  1542. }else{
  1543. if (fGetPatArrvDT() == false) {
  1544. sysf_messageBox("환자가 도착하지 않았습니다.", "E999", "");
  1545. ipt_anstfromtm.value = "";
  1546. ds_anstinfo_5700.enableevent = true;
  1547. return;
  1548. }
  1549. }
  1550. //2013/12/19
  1551. // 2. 버튼 현재 시간 입력인가?
  1552. if (currentFlag == "Y") {
  1553. var tm = utlf_getCurrentTime();
  1554. ds_anstinfo_5700.setColumn(0,"anstfromtm", tm.substring(0,4));
  1555. }
  1556. // 3. 날짜 + 시간 => 데이트 타입이 맞는가?
  1557. var dt = ds_anstinfo_5700.getColumn(0,"anstfromdd") + ds_anstinfo_5700.getColumn(0,"anstfromtm");
  1558. if (utlf_isValidDateTime(dt, "YYYYMMDDhhmm") == false) {
  1559. sysf_messageBox("마취시작시간을 정확히 입력하십시오", "E999", "");
  1560. ipt_anstfromtm.value = "";
  1561. }
  1562. var anstmthdchgflag = ds_anstinfo_5700.getColumn(0,"anstmthdchgflag"); //2010.04.13, 주희경, 마취방법변경 시 시간 체크 블러킹 해제
  1563. // 4. 마취시작시간, time out check 비교
  1564. var tmoutchkdt = utlf_transNullToEmpty(ds_anstinfo_5700.getColumn(0,"tmoutchkdt"));
  1565. if (tmoutchkdt.length == 8) {
  1566. sysf_messageBox("환자확인시간을 입력하십시오", "E999", "");
  1567. ipt_anstfromtm.value = "";
  1568. } else if (dt.length == 12 && Number(dt) < Number(tmoutchkdt) && anstmthdchgflag != 'Y') {
  1569. sysf_messageBox("마취시작시간이 환자확인시간 보다 작습니다.\n시간을 정확히 입력하십시오", "E999", "");
  1570. ipt_anstfromtm.value = "";
  1571. ipt_anstfromtm.setFocus();
  1572. ds_anstinfo_5700.enableevent = true;
  1573. return;
  1574. }
  1575. // 5. 마취시작시간 set
  1576. dt = ds_anstinfo_5700.getColumn(0,"anstfromdd") + ds_anstinfo_5700.getColumn(0,"anstfromtm");
  1577. ds_anstinfo_5700.setColumn(0,"anstfromdt", dt);
  1578. // 6. 마취 시작~종료 시간 구하기..
  1579. fSetAnstStartEndTime();
  1580. ds_anstinfo_5700.enableevent = true;
  1581. // 7. 시작종료 symbol 그려주기..
  1582. // 2009.06.16. 수술전처치 시 마취시간은 [T] - 02 가 아닌 [X] - 01 로 표기함.
  1583. parent.parent.parent.parent.fSetTimeRecAnstInfo("01", dt);
  1584. /*
  1585. var preopcureflag = ds_anstinfo_5700.getColumn(0,"preopcureflag");
  1586. if (preopcureflag == "Y") {
  1587. parent.parent.parent.parent.fSetTimeRecAnstInfo("01", dt);
  1588. } else {
  1589. parent.parent.parent.parent.fSetTimeRecAnstInfo("02", dt);
  1590. }
  1591. */
  1592. }
  1593. /**
  1594. * @desc : 마취 종료시간 set
  1595. * @
  1596. * @param :
  1597. * @return :
  1598. * @author : 2008.06.23. 이은영
  1599. * @---------------------------------------------------
  1600. */
  1601. function fSetAnstEndTime(currentFlag)
  1602. {
  1603. //2013/12/19
  1604. ds_anstinfo_5700.enableevent = false;
  1605. if(nurseoprec=="false"){
  1606. var patinroomdd=ipt_patinroomdd.value;
  1607. var patinroomtm=ipt_patinroomtm.value;
  1608. if(utlf_isNull(patinroomdd) || utlf_isNull(patinroomtm)){
  1609. sysf_messageBox("수술방 도착시간이 입력되지 않았습니다.", "E");
  1610. ipt_ansttotm.value="";
  1611. ds_anstinfo_5700.enableevent = true;
  1612. return;
  1613. }else{
  1614. fCtlDisable(true);
  1615. }
  1616. }else{
  1617. if (fGetPatArrvDT() == false) {
  1618. sysf_messageBox("환자가 도착하지 않았습니다.", "E999", "");
  1619. ipt_ansttotm.value = "";
  1620. ds_anstinfo_5700.enableevent = true;
  1621. return;
  1622. }
  1623. }
  1624. //2013/12/19
  1625. // 2. 버튼 현재 시간 입력인가?
  1626. if (currentFlag == "Y") {
  1627. var tm = utlf_getCurrentTime();
  1628. ipt_ansttotm.value = tm.substring(0,4);
  1629. }
  1630. // 3. 날짜 + 시간 => 데이트 타입이 맞는가?
  1631. var dt = ds_anstinfo_5700.getColumn(0,"ansttodd") + ipt_ansttotm.value;
  1632. if (utlf_isValidDateTime(dt, "YYYYMMDDhhmm") == false) {
  1633. sysf_messageBox("마취종료시간을 정확히 입력하십시오", "E999", "");
  1634. ipt_ansttotm.value = "";
  1635. }
  1636. var anstmthdchgflag = ds_anstinfo_5700.getColumn(0,"anstmthdchgflag"); //2010.04.13, 주희경, 마취방법변경 시 시간 체크 블러킹 해제
  1637. //2010.04.16, 이은영, Physical Status = 06 (환자의 퇴사가 선언되고 장기기증을 위한 목적으로 수술을 받는 환자) 인 경우 (수술종료시간/마취종료시간) 시간 체크 블러킹 해제
  1638. var physstat = ds_anstinfo_5700.getColumn(0,"physstat");
  1639. // 4. 마취종료시간, 수술종료시간 비교
  1640. var optodt = utlf_transNullToEmpty(ds_anstinfo_5700.getColumn(0,"optodt"));
  1641. var anstfromdt = ipt_anstfromdd.value+ipt_anstfromtm.value; // 마취시작시간
  1642. if (optodt.length == 8) {
  1643. sysf_messageBox("수술종료시간을 입력하십시오", "E999", "");
  1644. ipt_ansttotm.value = "";
  1645. } else if (dt.length == 12 && Number(dt) < Number(optodt) && physstat != "06") {
  1646. sysf_messageBox("마취종료시간이 수술종료시간 보다 작습니다.\n시간을 정확히 입력하십시오", "E999", "");
  1647. ipt_ansttotm.value = "";
  1648. ipt_ansttotm.setFocus();
  1649. ds_anstinfo_5700.enableevent = true;
  1650. return;
  1651. } else if (dt.length == 12 && Number(dt) < Number(anstfromdt) && physstat != "06") {
  1652. sysf_messageBox("마취종료시간이 마취시작시간 보다 작습니다.\n시간을 정확히 입력하십시오", "E999", "");
  1653. ipt_ansttotm.value = "";
  1654. ipt_ansttotm.setFocus();
  1655. ds_anstinfo_5700.enableevent = true;
  1656. return;
  1657. }
  1658. // 5. 마취종료시간 set
  1659. dt = ds_anstinfo_5700.getColumn(0,"ansttodd") + ipt_ansttotm.value;
  1660. ds_anstinfo_5700.setColumn(0,"ansttodt", dt);
  1661. // 6. 마취 시작~종료 시간 구하기..
  1662. fSetAnstStartEndTime();
  1663. // 7. 시작종료 symbol 그려주기..
  1664. fSetTimeRecAnstInfo("01", dt, 2);
  1665. ds_anstinfo_5700.enableevent = true;
  1666. }
  1667. /**
  1668. * @desc : 마취 종료시간 set
  1669. * @
  1670. * @param :
  1671. * @return :
  1672. * @author : 2008.06.23. 이은영
  1673. * @---------------------------------------------------
  1674. */
  1675. function fSetAnstStartEndTime()
  1676. {
  1677. fGetHours();
  1678. // Inhalational Agent 인 경우 시작일시 셋해주기
  1679. parent.parent.case_anstmast.iv_anstmast.fSetTimeAgent01();
  1680. // Inhalational Agent : 별도로 Display (항목 선택해 주고, 시작일시, 종료일시 다시 보여주기)
  1681. parent.parent.case_anstmast.iv_anstmast.fDisplayAgent01();
  1682. }
  1683. /**
  1684. * @desc : 환자도착시간 조회하고 체킹하기...
  1685. * @
  1686. * @param :
  1687. * @return :
  1688. * @author : 2008.09.17. 이은영
  1689. * @---------------------------------------------------
  1690. */
  1691. function fGetPatArrvDT(flag)
  1692. {
  1693. var chkPatArrvDT = true;
  1694. // 2009.05.04. 무통마취 / 재수술 / 수술전처치 인 경우에는 환자도착시간을 체킹하지 않음..
  1695. // 2009.07.16. 무통마취 / 재수술 인 경우에는 환자도착시간을 체킹하지 않음.. (수술전처치 제외)
  1696. /* 2009.12.01. 변경요청사항
  1697. 1. 마취환자기록의 수술구분의 금일재수술은 재수술로 변경
  1698. 2. 집도과에서 재수술로 의뢰하는 경우에도 병동 출발시간, 대기실 도착시간, 수술방 도착시간 정보가 있는 경우에는 해당 정보 디스플레이
  1699. 3. 단, 회복실에서 바로 수술실로 재입실하는 경우에는 병동출발시간과 대기실 도착시간 없이
  1700. 수술방 도착시간만 있기 때문에 이런 경우 마취과에서 Meeting Time 을 체크하고 일반 수술프로세스와 동일하게 처리되어야 함.
  1701. */
  1702. var painlessflag = ds_oprsrvinfo.getColumn(0,"painlessflag");
  1703. var reopflag = ds_oprsrvinfo.getColumn(0,"reopflag");
  1704. var preopcureflag = ds_anstinfo_5700.getColumn(0,"preopcureflag");
  1705. if (painlessflag == "Y") {
  1706. var opcnfmdd = ds_oprsrvinfo.getColumn(0,"opcnfmdd");
  1707. patarrvdt = opcnfmdd + "0000";
  1708. chkPatArrvDT = false;
  1709. fCtlDisable(true);
  1710. return true;
  1711. }
  1712. if (chkPatArrvDT == true) {
  1713. // 2009.06.08. 병동 환자 출발시간, 수술방 환자 도착시간 표시하기..
  1714. var wardstartdttm = ds_patinfo.getColumn(0,"wardstartdttm");
  1715. var patarrvdttm = ds_patinfo.getColumn(0,"patarrvdttm");
  1716. var patinroomdt = ds_patinfo.getColumn(0,"patinroomdt");
  1717. var patoutroomdt = ds_patinfo.getColumn(0,"patoutroomdt");
  1718. if (utlf_isNull(wardstartdttm) || utlf_isNull(patarrvdttm) || utlf_isNull(patinroomdt)) {
  1719. var oParam = {};
  1720. oParam.id = "TRMMR03715";
  1721. oParam.service = "anstrecapp.AnstRec";
  1722. oParam.method = "reqGetPatArrvDT";
  1723. oParam.inds = "reqdata=ds_send_reqdata";
  1724. oParam.outds = "ds_patinfo=patinfo";
  1725. oParam.async = false;
  1726. tranf_submit(oParam);
  1727. wardstartdttm = ds_patinfo.getColumn(0,"wardstartdttm");
  1728. patarrvdttm = ds_patinfo.getColumn(0,"patarrvdttm");
  1729. patinroomdt = ds_patinfo.getColumn(0,"patinroomdt");
  1730. patoutroomdt = ds_patinfo.getColumn(0,"patoutroomdt");
  1731. // 2009.06.08. 병동 환자 출발시간 표시하기..
  1732. if (!utlf_isNull(wardstartdttm)) {
  1733. ds_hiddendata.setColumn(0,"wardstartdd", wardstartdttm.substr(0,8));
  1734. ds_hiddendata.setColumn(0,"wardstarttm", wardstartdttm.substr(8,4));
  1735. }
  1736. // 2009.05.26. 대기실 환자 도착시간 표시하기..
  1737. if (!utlf_isNull(patarrvdttm)) {
  1738. ds_hiddendata.setColumn(0,"patarrvdd", patarrvdttm.substr(0,8));
  1739. ds_hiddendata.setColumn(0,"patarrvtm", patarrvdttm.substr(8,4));
  1740. }
  1741. // 2009.06.08. 수술방 환자 도착시간 표시하기..
  1742. if (!utlf_isNull(patinroomdt)) {
  1743. ds_hiddendata.setColumn(0,"patinroomdd", patinroomdt.substr(0,8));
  1744. ds_hiddendata.setColumn(0,"patinroomtm", patinroomdt.substr(8,4));
  1745. }
  1746. //2013/12/26 수술방 퇴실시간을 표시
  1747. if (!utlf_isNull(patoutroomdt) && patoutroomdt.length==12) {
  1748. ds_hiddendata.setColumn(0,"patoutroomdd", patoutroomdt.substr(0,8));
  1749. ds_hiddendata.setColumn(0,"patoutroomtm", patoutroomdt.substr(8,4));
  1750. }
  1751. //2013/12/26
  1752. }
  1753. //2013/12/30
  1754. var perfdeptcd=ds_oprsrvinfo.getColumn(0,"perfdeptcd");
  1755. var instcd = sysf_getUserInfo("dutplceinstcd");
  1756. var oproomcd = ds_oprsrvinfo.getColumn(0,"oproomcd");
  1757. if(instcd=="031" && (oproomcd=="0041"||oproomcd=="0042"||oproomcd=="0043"||oproomcd=="0061"||oproomcd=="0062"||oproomcd=="0063"||oproomcd=="0064"||oproomcd=="0080")){ // 시술일때는 그냥 스킵하도록 설정(김시오교수 요청)
  1758. btn_oproominoutctl.enable=true;
  1759. nurseoprec="false";
  1760. }else{
  1761. if(!utlf_isNull(wardstartdttm) && !utlf_isNull(patarrvdttm) && utlf_isNull(patinroomdt)){ // 병동 출발시간 / 대기실 도착시간 / 수술방 입실시간
  1762. if(instcd=="032" && perfdeptcd=="2090000000"){ // 칠곡은 집도과가 마취통증의학과 일시에만 수술방 입실시간 활성화 버튼 오픈
  1763. btn_oproominoutctl.enable=true;
  1764. nurseoprec="false";
  1765. }else if(instcd=="031"){ // 본원은 집도과 상관 없이 수술방 입실시간 활성화 버튼 오픈
  1766. btn_oproominoutctl.enable=true;
  1767. nurseoprec="false";
  1768. }else{
  1769. return false;
  1770. }
  1771. }else if(!utlf_isNull(wardstartdttm) && !utlf_isNull(patarrvdttm) && !utlf_isNull(patinroomdt)){
  1772. if(nurseoprec=="false"){
  1773. btn_oproominoutctl.enable=true;
  1774. }else if(utlf_isNull(nurseoprec) || nurseoprec=="true"){
  1775. nurseoprec="true";
  1776. }
  1777. }
  1778. }
  1779. //2013/12/30
  1780. patarrvdt = ds_patinfo.getColumn(0,"patarrvdttm");
  1781. /* 2009.12.01. 변경요청사항
  1782. 1. 마취환자기록의 수술구분의 금일재수술은 재수술로 변경
  1783. 2. 집도과에서 재수술로 의뢰하는 경우에도 병동 출발시간, 대기실 도착시간, 수술방 도착시간 정보가 있는 경우에는 해당 정보 디스플레이
  1784. 3. 단, 회복실에서 바로 수술실로 재입실하는 경우에는 병동출발시간과 대기실 도착시간 없이
  1785. 수술방 도착시간만 있기 때문에 이런 경우 마취과에서 Meeting Time 을 체크하고 일반 수술프로세스와 동일하게 처리되어야 함.
  1786. */
  1787. if (utlf_isNull(patarrvdt) && utlf_isNull(patinroomdt)) {
  1788. patarrvdt = patinroomdt;
  1789. }
  1790. if(flag!="recheck"){
  1791. if (utlf_isNull(patarrvdt)) {
  1792. fCtlDisable(false);
  1793. return false;
  1794. } else {
  1795. fCtlDisable(true);
  1796. return true;
  1797. }
  1798. }
  1799. }
  1800. }
  1801. /**
  1802. * @desc : 환자도착시간 조회하고 체킹하기...
  1803. * @
  1804. * @param :
  1805. * @return :
  1806. * @author : 2008.09.17. 이은영
  1807. * @---------------------------------------------------
  1808. */
  1809. function fCtlDisable(benable)
  1810. {
  1811. ipt_tmoutchktm.enable = benable;
  1812. ipt_opfromtm.enable = benable;
  1813. ipt_optotm.enable = benable;
  1814. ipt_anstfromtm.enable = benable;
  1815. ipt_ansttotm.enable = benable;
  1816. }
  1817. /**
  1818. * 마취전 평가서 인증저장 여부 체크
  1819. * 2013/08/14
  1820. */
  1821. function fSetASAClass(){
  1822. ds_anstinfo_5700.enableevent = false;
  1823. var asaclasscd = null;
  1824. var physstat = null;
  1825. asaclasscd = ds_opanstform.getColumn(0,"cdid");
  1826. physstat = ds_anstinfo_5700.getColumn(0,"physstat");
  1827. var formseqno = ds_opanstform.getColumn(0,"formseqno"); // 기록키
  1828. var espiseq = ds_opanstform.getColumn(0,"espiseq"); //인증키
  1829. if (utlf_isNull(espiseq) || espiseq == "0") { //인증저장여부에 따라서 마크 표시 여부 결정
  1830. ds_hiddendata.setColumn(0,"preopassemrec", "");
  1831. parent.parent.parent.parent.grp_tle.Static_preopassemrec.text = "";
  1832. }else{
  1833. ds_hiddendata.setColumn(0,"preopassemrec", "◈");
  1834. parent.parent.parent.parent.grp_tle.Static_preopassemrec.text = "◈";
  1835. }
  1836. //20131101 이정택 Start
  1837. var anstrecno = ds_anstinfo_5700.getColumn(0,"anstrecno");
  1838. if(utlf_isNull(anstrecno)){
  1839. if(!utlf_isNull(formseqno) && formseqno != "0" && !utlf_isNull(asaclasscd)){
  1840. ds_anstinfo_5700.setColumn(0,"physstat", asaclasscd);
  1841. }
  1842. }
  1843. //20131101 End
  1844. physstat = ds_anstinfo_5700.getColumn(0,"physstat");
  1845. if(!utlf_isNull(formseqno) && formseqno != "0") {
  1846. if (utlf_isNull(physstat)) {
  1847. ds_anstinfo_5700.setColumn(0,"physstat", asaclasscd);
  1848. }
  1849. if (physstat == asaclasscd) {
  1850. cap_asamsg.visible = false;
  1851. } else {
  1852. cap_asamsg.visible = true;
  1853. }
  1854. }
  1855. ds_anstinfo_5700.enableevent = true;
  1856. var lv_RecExist = lf_OpAssemRecExist("STEP4");
  1857. if( lv_RecExist == false){
  1858. ds_hiddendata.setColumn(0,"opassemrecexist", "");
  1859. parent.parent.parent.parent.grp_tle.Static_OpAssemRecExist.text = "";
  1860. }else{
  1861. ds_hiddendata.setColumn(0,"opassemrecexist", "◈");
  1862. parent.parent.parent.parent.grp_tle.Static_OpAssemRecExist.text = "◈";
  1863. }
  1864. }
  1865. /**
  1866. * 수술부위확인점검표 인증저장 여부 체크
  1867. *
  1868. */
  1869. function fChkEspi(){
  1870. var objParam = [{col:"pid", type:"string", size:256, val:ds_anstinfo_5700.getColumn(0,"pid")},
  1871. {col:"oprsrvno", type:"string", size:256, val:ds_anstinfo_5700.getColumn(0,"oprsrvno")},
  1872. {col:"orddd", type:"string", size:256, val:ds_anstinfo_5700.getColumn(0,"orddd")},
  1873. {col:"cretno", type:"string", size:256, val:ds_anstinfo_5700.getColumn(0,"cretno")}
  1874. ]
  1875. dsf_createDsRow("ds_send_espi_chk",objParam,false);
  1876. var oParam = {};
  1877. oParam.id = "TRMMR03720";
  1878. oParam.service = "anstrecapp.AnstRec";
  1879. oParam.method = "reqGetSignno";
  1880. oParam.inds = "reqdata=ds_send_espi_chk";
  1881. oParam.outds = "ds_espiinfo=item";
  1882. oParam.async = false;
  1883. oParam.callback = "cf_TRMMR03720";
  1884. tranf_submit(oParam);
  1885. var signno=ds_espiinfo.getColumn(0,"signno");
  1886. if(signno!="0" && !utlf_isNull(signno)){
  1887. ds_hiddendata.setColumn(0,"espi_chk", "◈");
  1888. parent.parent.parent.parent.grp_tle.Static_espi.text = "◈";
  1889. }
  1890. else
  1891. {
  1892. ds_hiddendata.setColumn(0,"espi_chk", "");
  1893. parent.parent.parent.parent.grp_tle.Static_espi.text = "";
  1894. }
  1895. }
  1896. function cf_TRMMR03720(sSvcId, nErrorCode, sErrorMsg) {
  1897. if(nErrorCode < 0) return;
  1898. }
  1899. /*
  1900. * 마취 일반정보에서 수술구분을 변경시의 이벤트
  1901. *
  1902. * */
  1903. function fChangeOpFlag(){
  1904. var change_opflagcd = ds_anstinfo_5700.getColumn(0,"opflagcd");
  1905. if(old_opflagcd!=change_opflagcd &&(!utlf_isNull(change_opflagcd))){
  1906. new_opflagcd= ds_anstinfo_5700.getColumn(0,"opflagcd");
  1907. }
  1908. }
  1909. /**
  1910. * 수술방 입실시간 활성화 버튼 클릭시 이벤트
  1911. */
  1912. function fOpRoomInOutCtl(){
  1913. //ds_hiddendata.setColumn(0,"patinroomdd", utlf_transNullToEmpty(ds_oprsrvinfo.getColumn(0,"opcnfmdd")));
  1914. //ds_hiddendata.setColumn(0,"patoutroomdd", utlf_transNullToEmpty(ds_oprsrvinfo.getColumn(0,"opcnfmdd")));
  1915. ds_hiddendata.setColumn(0,"patinroomdd", ds_oprsrvinfo.getColumn(0,"opcnfmdd"));
  1916. ds_hiddendata.setColumn(0,"patoutroomdd", ds_oprsrvinfo.getColumn(0,"opcnfmdd"));
  1917. ipt_patinroomdd.enable=true;
  1918. ipt_patinroomtm.enable=true;
  1919. ipt_patoutroomdd.enable=true;
  1920. ipt_patoutroomtm.enable=true;
  1921. btn_patinroom.enable=true;
  1922. btn_patoutroom.enable=true;
  1923. }
  1924. /**
  1925. * 수술방 입실시간을 입력
  1926. */
  1927. function fSetPatInRoomTime(currentFlag){
  1928. // 2. 버튼 현재 시간 입력인가?
  1929. sysf_trace("currentFlag == " + currentFlag);
  1930. if (currentFlag == "Y") {
  1931. var tm = utlf_getCurrentTime();
  1932. ipt_patinroomtm.value = tm.substring(0,4);
  1933. }
  1934. // 3. 날짜 + 시간 => 데이트 타입이 맞는가?
  1935. var dt = ipt_patinroomdd.value + ipt_patinroomtm.value;
  1936. sysf_trace("dt == " + dt);
  1937. if (utlf_isValidDateTime(dt, "YYYYMMDDhhmm") == false) {
  1938. sysf_messageBox("수술방 입실시간을 정확히 입력하십시오", "E999", "");
  1939. ipt_patinroomtm.value = "";
  1940. ipt_patinroomtm.setFocus();
  1941. return;
  1942. }
  1943. //2010.04.16, 이은영, Physical Status = 06 (환자의 퇴사가 선언되고 장기기증을 위한 목적으로 수술을 받는 환자) 인 경우 (수술종료시간/마취종료시간) 시간 체크 블러킹 해제
  1944. var physstat = ds_anstinfo_5700.getColumn(0,"physstat");
  1945. // 4. 대기실 도착시간 VS 수술방 입실시간 비교
  1946. var patarrvdt = ipt_patarrvdd.value + ipt_patarrvtm.value;
  1947. if (dt.length == 12 && Number(dt) < Number(patarrvdt) && physstat != "06") {
  1948. sysf_messageBox("수술방 입실시간이 대기실 도착시간 보다 작습니다.\n시간을 정확히 입력하십시오", "E999", "");
  1949. ipt_patinroomtm.value = "";
  1950. ipt_patinroomtm.setFocus();
  1951. return;
  1952. }
  1953. }
  1954. /**
  1955. * 수술방 퇴실시간을 입력
  1956. */
  1957. function fSetPatOutRoomTime(currentFlag){
  1958. //2013/12/19
  1959. if(nurseoprec=="false"){
  1960. var patinroomdd=ipt_patinroomdd.value;
  1961. var patinroomtm=ipt_patinroomtm.value;
  1962. if(utlf_isNull(patinroomdd) || utlf_isNull(patinroomtm)){
  1963. sysf_messageBox("수술방 도착시간이 입력되지 않았습니다.", "E");
  1964. ipt_patoutroomtm.value="";
  1965. return;
  1966. }else{
  1967. fCtlDisable(true);
  1968. }
  1969. }else{
  1970. if (fGetPatArrvDT() == false) {
  1971. sysf_messageBox("환자가 도착하지 않았습니다.", "E999", "");
  1972. ipt_patoutroomtm.value = "";
  1973. return;
  1974. }
  1975. }
  1976. //2013/12/19
  1977. // 2. 버튼 현재 시간 입력인가?
  1978. if (currentFlag == "Y") {
  1979. var tm = utlf_getCurrentTime();
  1980. ipt_patoutroomtm.value = tm.substring(0,4);
  1981. }
  1982. // 3. 날짜 + 시간 => 데이트 타입이 맞는가?
  1983. var dt = ipt_patoutroomdd.value + ipt_patoutroomtm.value;
  1984. if (utlf_isValidDateTime(dt, "YYYYMMDDhhmm") == false) {
  1985. sysf_messageBox("수술방 퇴실시간을 정확히 입력하십시오", "E999", "");
  1986. ipt_patoutroomtm.value = "";
  1987. return;
  1988. }
  1989. //2010.04.16, 이은영, Physical Status = 06 (환자의 퇴사가 선언되고 장기기증을 위한 목적으로 수술을 받는 환자) 인 경우 (수술종료시간/마취종료시간) 시간 체크 블러킹 해제
  1990. var physstat = ds_anstinfo_5700.getColumn(0,"physstat");
  1991. // 4. 마취종료시간, 수술방 퇴실시간 비교
  1992. var ansttodt = ipt_ansttodd.value + ipt_ansttotm.value;
  1993. if (ansttodt.length != 12) {
  1994. sysf_messageBox("마취 종료시간을 정확히 입력하십시오", "E999", "");
  1995. ipt_patoutroomtm.value = "";
  1996. return;
  1997. } else if (dt.length == 12 && Number(dt) < Number(ansttodt) && physstat != "06") {
  1998. sysf_messageBox("수술방 퇴실시간이 마취종료시간 보다 작습니다.\n시간을 정확히 입력하십시오", "E999", "");
  1999. ipt_patoutroomtm.value = "";
  2000. ipt_patoutroomtm.setFocus();
  2001. return;
  2002. }
  2003. }
  2004. /**
  2005. * 기록지상 시간이 제대로 기록 됐는지 확인
  2006. * 2013/12/30
  2007. */
  2008. function fRecTimeCheck(rtn){
  2009. var physstat = ds_anstinfo_5700.getColumn(0,"physstat");
  2010. var ipt_patarrvdt = ipt_patarrvdd.value+ipt_patarrvtm.value; //대기실 도착시간
  2011. var ipt_patinroomdt = ipt_patinroomdd.value+ipt_patinroomtm.value; // 수술방 입실시간
  2012. var ipt_meetingdt = ipt_meetingdd.value + ipt_meetingtm.value; // 미팅타임
  2013. var ipt_tmoutchkdt = ipt_tmoutchkdd.value + ipt_tmoutchktm.value; // time out check
  2014. var ipt_anstfromdt = ipt_anstfromdd.value+ipt_anstfromtm.value; // 마취시작시간
  2015. var ipt_opfromdt = ipt_opfromdd.value+ipt_opfromtm.value; // 수술시작시간
  2016. var ipt_optodt = ipt_optodd.value+ipt_optotm.value; // 수술종료시간
  2017. var ipt_ansttodt = ipt_ansttodd.value+ipt_ansttotm.value; // 마취종료시간
  2018. var ipt_patoutroomdt = ipt_patoutroomdd.value+ipt_patoutroomtm.value; // 수술방 퇴실시간
  2019. if(rtn=="6" && ipt_patinroomdt.length==12 && Number(ipt_patinroomdt) < Number(ipt_patarrvdt) && physstat != "06"){
  2020. sysf_messageBox("수술방 입실시간이 대기실 도착시간보다 작습니다.\n시간을 정확히 입력하십시오", "E999", "");
  2021. ipt_patinroomtm.value="";
  2022. ipt_patinroomtm.setFocus();
  2023. return false;
  2024. }
  2025. if(ipt_meetingdt.length==12 && Number(ipt_meetingdt) < Number(ipt_patarrvdt) && physstat != "06"){
  2026. sysf_messageBox("Meeting Time이 대기실 도착시간보다 작습니다. \n시간을 정확히 입력하십시오", "E999", "");
  2027. ipt_meetingtm.value="";
  2028. ipt_meetingtm.setFocus();
  2029. return false;
  2030. }
  2031. if(ipt_tmoutchkdt.length==12 && Number(ipt_tmoutchkdt) < Number(ipt_meetingdt) && physstat != "06"){
  2032. sysf_messageBox("환자확인시간이 Meeting Time 보다 작습니다.\n시간을 정확히 입력하십시오", "E999", "");
  2033. ipt_tmoutchktm.value="";
  2034. ipt_tmoutchktm.setFocus();
  2035. return false;
  2036. }
  2037. if(ipt_anstfromdt.length==12 && Number(ipt_anstfromdt) < Number(ipt_tmoutchkdt) && physstat != "06"){
  2038. sysf_messageBox("마취시작시간이 환자확인시간보다 작습니다.\n시간을 정확히 입력하십시오", "E999", "");
  2039. ipt_anstfromtm.value="";
  2040. ipt_anstfromtm.setFocus();
  2041. return false;
  2042. }
  2043. if(ipt_optodt.length==12 && Number(ipt_optodt) < Number(ipt_opfromdt) && physstat != "06"){
  2044. sysf_messageBox("수술종료시간이 수술시작시간 보다 작습니다.\n시간을 정확히 입력하십시오", "E999", "");
  2045. ipt_optotm.value="";
  2046. ipt_optotm.setFocus();
  2047. return false;
  2048. }
  2049. if(ipt_ansttodt.length==12 && Number(ipt_ansttodt) < Number(ipt_anstfromdt) && physstat != "06"){
  2050. sysf_messageBox("마취종료시간이 마취시작시간 보다 작습니다.\n시간을 정확히 입력하십시오", "E999", "");
  2051. ipt_ansttotm.value="";
  2052. ipt_ansttotm.setFocus();
  2053. return false;
  2054. }
  2055. if(ipt_ansttodt.length==12 && Number(ipt_ansttodt) < Number(ipt_optodt) && physstat != "06"){
  2056. sysf_messageBox("마취종료시간이 수술종료시간 보다 작습니다.\n시간을 정확히 입력하십시오", "E999", "");
  2057. ipt_ansttotm.value="";
  2058. ipt_ansttotm.setFocus();
  2059. return false;
  2060. }
  2061. if(nurseoprec=="false" && ipt_patoutroomdt.length==12 && Number(ipt_patoutroomdt) < Number(ipt_ansttodt) && physstat != "06"){
  2062. sysf_messageBox("수술방 퇴실시간이 마취 종료시간 보다 작습니다.\n시간을 정확히 입력하십시오", "E999", "");
  2063. ipt_patoutroomtm.value="";
  2064. ipt_patoutroomtm.setFocus();
  2065. return false;
  2066. }
  2067. return true;
  2068. }
  2069. var lgv_OpAssemRecExist = null;
  2070. function lf_OpAssemRecExist(Flag){
  2071. var nFormcd = ds_pmenu_formcd.lookup("hardcd", Flag, "hardcdnm");
  2072. if( utlf_isNull(nFormcd) ){
  2073. sysf_messageBox("선택한 기록의 서식코드가", "E014");
  2074. return false;
  2075. }
  2076. dsf_createDsRow("ds_init_formcd_hardcd", [{col:"hardcd", type:"string", size:256, val:nFormcd}]);
  2077. // 서식존재유무 체크
  2078. if(utlf_isNull(lgv_OpAssemRecExist)){
  2079. dsf_createDsRow("ds_cond_TRMRF00707", [{col:"reqflag", type:"STRING", size:256, val:"formcd"}
  2080. , {col:"reqdata", type:"STRING", size:256, val:nFormcd}
  2081. , {col:"reqformprogflag", type:"STRING", size:256, val:""}
  2082. , {col:"reqstatus", type:"STRING", size:256, val:""}
  2083. , {col:"popflag", type:"STRING", size:256, val:"1"}
  2084. , {col:"jinjeong", type:"STRING", size:256, val:""}]);
  2085. dsf_createDs("ds_data_TRMRF00707");
  2086. var oParam = {};
  2087. oParam.id = "TRMRF00707";
  2088. oParam.service = "formmngtapp.FormMngt";
  2089. oParam.method = "reqGetFormList";
  2090. oParam.inds = "req=ds_cond_TRMRF00707";
  2091. oParam.outds = "ds_data_TRMRF00707=formlist";
  2092. oParam.async = false;
  2093. oParam.progress = false;
  2094. tranf_submit(oParam);
  2095. if( ds_data_TRMRF00707.rowcount > 0 )
  2096. lgv_OpAssemRecExist = true;
  2097. else
  2098. lgv_OpAssemRecExist = false;
  2099. }
  2100. var nOprsrvno = utlf_transNullToEmpty(ds_send_reqdata.getColumn(ds_send_reqdata.rowposition, "oprsrvno"));
  2101. dsf_createDsRow("ds_cond_opanstform", [{col:"oprsrvno", type:"STRING", size:256, val:nOprsrvno}
  2102. , {col:"formcd", type:"STRING", size:256, val:ds_init_formcd_hardcd.getColumn(0, "hardcd")}
  2103. , {col:"instcd", type:"STRING", size:256, val:sysf_getUserInfo("dutplceinstcd")}
  2104. , {col:"pid" , type:"STRING", size:256, val:ds_anstinfo_5700.getColumn(0,"pid")}
  2105. , {col:"orddd" , type:"STRING", size:256, val:ds_anstinfo_5700.getColumn(0, "orddd")}
  2106. , {col:"cretno", type:"STRING", size:256, val:ds_anstinfo_5700.getColumn(0, "cretno")}]);
  2107. dsf_createDs("ds_data_opanstform", [
  2108. {col:"formseqno", type:"BIGDECIMAL", size:256}
  2109. , {col:"espiseq", type:"STRING", size:256}
  2110. ]);
  2111. //if( utlf_isNull(nOprsrvno) ) return false;
  2112. var oParam = {};
  2113. oParam.id = "TRMMR03715";
  2114. oParam.service = "anstrecapp.AnstRec";
  2115. oParam.method = "reqGetOpAssemFormSeqno";
  2116. oParam.inds = "reqdata=ds_cond_opanstform";
  2117. oParam.outds = "ds_data_opanstform=opanstform";
  2118. oParam.async = false;
  2119. oParam.progress = false;
  2120. oParam.callback = "cf_TRMMR03715";
  2121. // 서식이 존재할 경우만 기록 조회
  2122. if( lgv_OpAssemRecExist == true ){
  2123. tranf_submit(oParam);
  2124. if(arErrorCode.pop("TRMMR03715") < 0 )
  2125. return false;
  2126. }
  2127. dsf_deleteDs("ds_cond_opanstform");
  2128. if( ds_data_opanstform.rowcount == 0
  2129. || (utlf_isNull(ds_data_opanstform.getColumn(0, "formseqno")) || ds_data_opanstform.getColumn(0, "formseqno") == "0"))
  2130. return false;
  2131. return true;
  2132. }
  2133. function cf_TRMMR03715(sSvcId, nErrorCode, sErrorMsg) {
  2134. arErrorCode.push(sSvcId, nErrorCode);
  2135. }]]></Script>