SPMMO00200.js 107 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833
  1. /*
  2. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  3. 수술마취의뢰 SPMMO00200_수술마취의뢰.xrw - JScript )
  4. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  5. */
  6. var sOPRSRVINFO_PATH = "/root/main/oprsrvinfo/oprsrvinfo";
  7. var sOPRSRVLIST_PATH = "/root/main/oprsrvlist/oprsrvlist";
  8. var sOPSCHERECLIST_PATH = "/root/main/opschereclist/opschereclist";
  9. var sDIAGCDLIST_PATH = "/root/main/diaglist/diaglist";
  10. var sPATORDINFOLIST_PATH= "/root/patordinfo/patordinfolist";
  11. var g_scrnflag = ""; //조회전용
  12. //2012/06/26 Start
  13. // 수술 예방적 항생제 관련
  14. var nodecnt ="";
  15. //2012/06/26 End
  16. /**
  17. * @desc : 수술예약 화면 초기화
  18. * @
  19. * @param :
  20. * @return :
  21. * @author : 오지훈
  22. * @---------------------------------------------------
  23. */
  24. function fInitialize_SPMMO00200(){
  25. model.removeNodeset(sOPRSRVLIST_PATH);
  26. model.removeNodeset(sDIAGCDLIST_PATH);
  27. model.removeNodeset(sOPSCHERECLIST_PATH);
  28. /*
  29. mmbfGetHardCodeInfoNm("/root/send/reqdata", "/root/init/oppatflag", 84); //수술환자구분
  30. mmbfGetHardCodeInfoNm("/root/send/reqdata", "/root/init/chkopcnfmtm", 102); //수술마취 정규수술 저장 가능시간
  31. mmbfGetHardCodeInfoNm("/root/send/reqdata", "/root/init/chkoffday", 103); //수술마취 정규수술 저장시 휴일체크 여부 체크
  32. */
  33. //강남성모는 외래 disable
  34. model.setValue("/root/main/cond/fromdd" , getCurrentDate()); //시작일자
  35. var todd = (getCurrentDate().toDate()).getAddDate(7);
  36. todd = todd.getDateFormat();
  37. model.setValue("/root/main/cond/todd" , todd); //종료일자
  38. model.setValue("/root/main/cond/opschedd", getCurrentDate()); //수술예약일자
  39. zbcfGetDeptCodeList(getUserInfo("dutplceinstcd"), "orduseyn", "D", "/root/init/orddept", "depthngnm"); //조회용 진료과
  40. addComboInstance("/root/init/orddept", "deptcd^depthngnm", "-^전체", "dept"); //조회용 진료과 전체항목 추가
  41. zbcfGetDeptCodeList(getUserInfo("dutplceinstcd"), "orduseyn", "D", "/root/init/orddept2", "depthngnm"); //부서코드 콤보 조회
  42. zbcfGetDeptCodeList(getUserInfo("dutplceinstcd"), "orduseyn", "D", "/root/init/orddept3", "depthngnm"); //부서코드 콤보 조회
  43. reqOpRoomList(getCurrentDate(), "/root/init/oproomlist" , "total"); //수술실 조회
  44. addComboInstance("/root/init/oproomlist", "oproomcd^oproomnm", "0000^방없음", "oproomlist"); //의사콤보 전체항목 추가
  45. reqOpRoomList(getCurrentDate(), "/root/init/oproomlist2", "total"); //수술실 조회(일별 가능한 수술실 조회가 아닌 수술실 전체 조회)
  46. addComboInstance("/root/init/oproomlist2", "oproomcd^oproomnm", "-^전체", "oproomlist"); //부서콤보 전체항목 추가
  47. zbcfGetCodeList(new Array("M0013",
  48. "M0014",
  49. "M0016",
  50. "M0017",
  51. "M0020",
  52. "M0022",
  53. "M0237",
  54. "M0238",
  55. "M0239",
  56. "M0240",
  57. "M0241",
  58. "M0242",
  59. "M0243",
  60. "M0244",
  61. "M0245",
  62. "M0258",
  63. "M0341",
  64. "M0377",
  65. "M0357"),
  66. new Array("/root/init/M0013",
  67. "/root/init/M0014",
  68. "/root/init/M0016",
  69. "/root/init/M0017",
  70. "/root/init/M0020",
  71. "/root/init/M0022",
  72. "/root/init/M0237",
  73. "/root/init/M0238",
  74. "/root/init/M0239",
  75. "/root/init/M0240",
  76. "/root/init/M0241",
  77. "/root/init/M0242",
  78. "/root/init/M0243",
  79. "/root/init/M0244",
  80. "/root/init/M0245",
  81. "/root/init/M0258",
  82. "/root/init/M0341",
  83. "/root/init/M0377",
  84. "/root/init/M0357"));
  85. //마취통증의학과
  86. //reqHardCodeInfo("/root/send/reqdata", "/root/init/hardcd", 18);
  87. var anstdeptcd = model.getValue("/root/init/hardcd/hardcd/hardcd");
  88. //2009.07.24 LYJ 서울성모만 추가, 정규의뢰에 대한 리미트 시간을 둔다.
  89. /* 2010. 12. 13 함수 변경으로 model.construct.done 으로 위치 이동)
  90. if( getUserInfo("dutplceinstcd") == '012' || getUserInfo("dutplceinstcd") == '017'){
  91. reqHardCodeInfo("/root/init/hard","/root/init/hardcodeS","116");
  92. reqHardCodeInfo("/root/init/hard","/root/init/hardcodeE","117");
  93. reqHardCodeInfo("/root/init/hard","/root/init/hardcodeJ","120");
  94. }
  95. */
  96. if( getUserInfo("dutplcecd") == anstdeptcd) { //2008.08.25 LWS 마취통증의학과를 제외한 로그인 유저 진료과 setting
  97. model.setValue("/root/main/cond/perfdeptcd", "-");
  98. model.setValue("/root/main/cond1/orddeptcd", "-");
  99. }else{
  100. model.setValue("/root/main/cond/perfdeptcd", getUserInfo("dutplcecd"));
  101. mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist2", combo1.value, "0330");
  102. addComboInstance("/root/init/userlist2", "userid^usernm", "-^전체", "usercombo"); //조회용 집도의 전체항목 추가
  103. //if( !isNull(getUserId())) model.setValue("/root/main/cond/perfdrid", getUserId());
  104. model.setValue("/root/main/cond1/orddeptcd", getUserInfo("dutplcecd"));
  105. mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist5", combo1.value, "0330");
  106. addComboInstance("/root/init/userlist5", "userid^usernm", "-^전체", "usercombo"); //조회용 집도의 전체항목 추가
  107. //if( !isNull(getUserId())) model.setValue("/root/main/cond/perfdrid", getUserId());
  108. if( !isNull(getUserId())) model.setValue("/root/main/cond/perfdrid", "-");
  109. if( !isNull(getUserId())) model.setValue("/root/main/cond1/perfdrid", "-");
  110. }
  111. model.setValue("/root/main/cond/oproomcd" , "-");
  112. model.setValue("/root/main/cond1/oproomcd" , "-");
  113. if(fInitPamInfo("Y")==false){ //화면 기본 정보 설정
  114. //window.close();
  115. return;
  116. }
  117. model.setValue(sOPRSRVINFO_PATH + "/reopflag" , "N"); //수술공개
  118. model.setValue(sOPRSRVINFO_PATH + "/opflagcd" , "1"); //수술구분
  119. model.setValue(sOPRSRVINFO_PATH + "/opopenflag" , "Y"); //금일재수술
  120. model.setValue(sOPRSRVINFO_PATH + "/anstreqflag", "N"); //마취의뢰만
  121. model.setValue(sOPRSRVINFO_PATH + "/cnstopflag" , "N"); //협진의뢰여부
  122. model.setValue(sOPRSRVINFO_PATH + "/opcntmdg" , "0"); //수술창상
  123. model.setValue("/root/main/cond/rgstnm", getUserInfo("usernm"));
  124. fGetReqrcntctel(); //연락처정보 셋팅 추가 요청 (2010.03.19 JJE)
  125. grd_diaglist.addRow(false, true);
  126. model.recalculate();
  127. model.refresh();
  128. fReqOpRsrvRecList(); //수술예약장부 조회
  129. model.setValue("/root/main/cond/qflag", "1"); //2008.08.25 LWS 선택된 부서로 조회되도록 수정
  130. fReqOpRsrvInfoList(); //수술예약정보 조회
  131. //2012/06/25 Start
  132. // 수술 예방적 항생제 관련
  133. mmbfGetHardCodeInfo("/root/send/reqdata", "/root/temp/opcd", 5606);
  134. nodecnt = instance1.selectNodes("/root/temp/opcd/hardcd");
  135. //2012/06/25 End
  136. //fReqDailyChrgAnstDr(ipt_opschedd.value); //담당요일 마취과 의사 조회
  137. }
  138. /**
  139. * @desc : 화면 기본 정보 설정 (parameter 값으로 설정 또는 상단정보를 기준으로 설정)
  140. * @
  141. * @param :
  142. * @return :
  143. * @author : 오지훈
  144. * @---------------------------------------------------
  145. */
  146. function fInitPamInfo(init){
  147. var param = opener.javascript.getParameter("SPMMO00200_param");
  148. if(param.length > 0){ //parameter가 있는 경우
  149. param = param.split("▦");
  150. var ioflag = param[0];
  151. var pid = param[1];
  152. var hngnm = param[2];
  153. var sa = param[3] + "/" + param[4];
  154. var orddeptcd = param[5];
  155. var orddd = param[6];
  156. var orddrid = param[7];
  157. var roomcd = param[8];
  158. var insukind = param[9];
  159. var suppkind = param[10];
  160. var fromdd = param[11];
  161. var todd = param[12];
  162. g_scrnflag = param[13]; //조회구분
  163. if(g_scrnflag == "Y"){
  164. model.setValue("/root/main/cond/pid" , param[1]);
  165. model.setValue("/root/main/cond/qflag", "3");
  166. }
  167. fReqPatCurrentDiagList(pid, orddd, orddeptcd, ioflag);
  168. }else{ //parameter가 없는 경우
  169. var paminfocsv = getGlobalVariable("paminfo");
  170. var patflagcsv = getGlobalVariable("patflag");
  171. /*수술 예약정보 입력시 연동되는 상단과 진료기록, 처방 창 환자 정보가 상이한 오류가 발생하여 상단 연동 기능을 제외한다. 김민선 선생님 요청
  172. 최초 오픈일 경우에만 상단정보를 보고 그 이외의 경우 별도의 submit으로 가져온 결과로 셋팅한다. 20100614 by LYJ*/
  173. if(paminfocsv.length < 1 || patflagcsv.length < 1){ //상단정보가 없는 경우
  174. if(init =="Y"){
  175. }else {
  176. var ioflag = model.getValue("/root/patflag/list/prcpgenrflag");
  177. var pid = model.getValue("/root/paminfo/list/pid");
  178. var hngnm = model.getValue("/root/paminfo/list/hngnm");
  179. var sa = model.getValue("/root/paminfo/list/sex") + "/" + model.getValue("/root/paminfo/list/age");
  180. var orddeptcd = model.getValue("/root/paminfo/list/orddeptcd");
  181. if(ioflag == "O"){
  182. var orddd = model.getValue("/root/paminfo/list/orddd");
  183. var orddrid = model.getValue("/root/paminfo/list/orddrid");
  184. var roomcd = "외래";
  185. }else{
  186. var orddd = model.getValue("/root/paminfo/list/indd");
  187. var orddrid = model.getValue("/root/paminfo/list/medispclid");
  188. var roomcd = model.getValue("/root/paminfo/list/roomcd");
  189. }
  190. var insukind = model.getValue("/root/paminfo/list/insukind");
  191. var suppkind = model.getValue("/root/paminfo/list/suppkind");
  192. fReqPatCurrentDiagList(pid, orddd, orddeptcd, ioflag);
  193. }
  194. }else{
  195. if(init =="Y"){ //최초 열때
  196. model.removeNodeset("/root/paminfo/list");
  197. model.removeNodeset("/root/patflag/list");
  198. setCSVToNode("/root/paminfo", paminfocsv);
  199. setCSVToNode("/root/patflag", patflagcsv);
  200. }
  201. var ioflag = model.getValue("/root/patflag/list/prcpgenrflag");
  202. var pid = model.getValue("/root/paminfo/list/pid");
  203. var hngnm = model.getValue("/root/paminfo/list/hngnm");
  204. var sa = model.getValue("/root/paminfo/list/sex") + "/" + model.getValue("/root/paminfo/list/age");
  205. var orddeptcd = model.getValue("/root/paminfo/list/orddeptcd");
  206. if(ioflag == "O"){
  207. var orddd = model.getValue("/root/paminfo/list/orddd");
  208. var orddrid = model.getValue("/root/paminfo/list/orddrid");
  209. var roomcd = "외래";
  210. }else{
  211. var orddd = model.getValue("/root/paminfo/list/indd");
  212. var orddrid = model.getValue("/root/paminfo/list/medispclid");
  213. var roomcd = model.getValue("/root/paminfo/list/roomcd");
  214. }
  215. var insukind = model.getValue("/root/paminfo/list/insukind");
  216. var suppkind = model.getValue("/root/paminfo/list/suppkind");
  217. fReqPatCurrentDiagList(pid, orddd, orddeptcd, ioflag);
  218. }
  219. }
  220. model.setValue(sOPRSRVINFO_PATH + "/pid" , pid);
  221. model.setValue(sOPRSRVINFO_PATH + "/hngnm" , hngnm);
  222. model.setValue(sOPRSRVINFO_PATH + "/sa" , sa);
  223. model.setValue(sOPRSRVINFO_PATH + "/orddeptcd" , orddeptcd);
  224. model.setValue(sOPRSRVINFO_PATH + "/perfdeptcd", orddeptcd);
  225. model.setValue(sOPRSRVINFO_PATH + "/insukind" , insukind);
  226. model.setValue(sOPRSRVINFO_PATH + "/suppkind" , suppkind);
  227. //zsufGetUserInfoCombo(orddeptcd, "/root/init/userlist", "_D"); //의사 콤보조회
  228. mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", orddeptcd, "0330");
  229. model.setValue(sOPRSRVINFO_PATH + "/perfdrid" , orddrid);
  230. //model.setValue(sOPRSRVINFO_PATH + "/opschedd" , getCurrentDate());
  231. model.setValue(sOPRSRVINFO_PATH + "/roomcd" , roomcd);
  232. model.setValue(sOPRSRVINFO_PATH + "/status" , "i");
  233. model.setValue(sOPRSRVINFO_PATH + "/opcd" , "");
  234. model.setValue(sOPRSRVINFO_PATH + "/opnm" , "");
  235. model.setValue(sOPRSRVINFO_PATH + "/subopcd" , "");
  236. model.setValue(sOPRSRVINFO_PATH + "/subopnm" , "");
  237. model.setValue(sOPRSRVINFO_PATH + "/opposturecd" , "");
  238. model.setValue(sOPRSRVINFO_PATH + "/opdirecflag" , "");
  239. model.setValue(sOPRSRVINFO_PATH + "/anstmthdcd" , "");
  240. model.setValue(sOPRSRVINFO_PATH + "/opcntmdg" , "-");
  241. model.setValue(sOPRSRVINFO_PATH + "/delivefact" , "");
  242. model.setValue(sOPRSRVINFO_PATH + "/opschedd" , "");
  243. model.setValue(sOPRSRVINFO_PATH + "/oproomcd" , "");
  244. model.setValue(sOPRSRVINFO_PATH + "/opfromtmcd" , "");
  245. model.setValue(sOPRSRVINFO_PATH + "/opendtmcd" , "");
  246. model.setValue(sOPRSRVINFO_PATH + "/opusetm" , "");
  247. model.setValue(sOPRSRVINFO_PATH + "/cnstopflag" , "N"); // 협진의뢰 여부 초기화._손성훈.
  248. model.setValue(sOPRSRVINFO_PATH + "/mainoprsrvno" , ""); // 주수술 예약번호 초기화._손성훈.
  249. /* 수술환자구분을 사용자가 직접 선택하도록 저장할 때, 입력여부를 검사함
  250. if(ioflag == "I"){ //입원환자, 수술환자구분 병동으로 설정
  251. model.setValue(sOPRSRVINFO_PATH + "/oppatflagcd", "I");
  252. }else if(ioflag == "E"){ //응급환자, 수술환자구분 응급으로 설정
  253. model.setValue(sOPRSRVINFO_PATH + "/oppatflagcd", "E");
  254. }else if(ioflag == "D" || ioflag =="O"){ //외래환자, 수술환자구분 외래(DSC)로 설정
  255. model.setValue(sOPRSRVINFO_PATH + "/oppatflagcd", "D");
  256. }
  257. */
  258. model.refresh();
  259. }
  260. /**
  261. * @desc : 수술예약장부 조회
  262. * @
  263. * @param :
  264. * @return :
  265. * @author : 오지훈
  266. * @---------------------------------------------------
  267. */
  268. function fReqOpRsrvRecList(){
  269. model.removeNodeset("/root/send/reqdata");
  270. model.makeValue("/root/send/reqdata/year" , "");
  271. model.makeValue("/root/send/reqdata/fromdd" , model.getValue("/root/main/cond/fromdd"));
  272. model.makeValue("/root/send/reqdata/todd" , model.getValue("/root/main/cond/todd"));
  273. model.makeValue("/root/send/reqdata/orddeptcd", model.getValue("/root/main/cond1/orddeptcd"));
  274. model.makeValue("/root/send/reqdata/oproomcd" , model.getValue("/root/main/cond1/oproomcd"));
  275. model.makeValue("/root/send/reqdata/pid" , model.getValue("/root/main/cond1/pid"));
  276. model.makeValue("/root/send/reqdata/perfdrid", model.getValue("/root/main/cond1/perfdrid"));
  277. var rtnval = submit("TRMMO05701");
  278. if(rtnval == true){
  279. fSetOpTimeToHourMin();
  280. }
  281. }
  282. /**
  283. * @desc : 초를 시간분으로 전환
  284. * @
  285. * @param :
  286. * @return :
  287. * @author : 오지훈
  288. * @---------------------------------------------------
  289. */
  290. function fTransSecToHourMin(sec){
  291. var hr = 3600;
  292. var min = 60;
  293. hour = parseInt(sec/hr);
  294. min = parseInt(sec%hr/min);
  295. var rtnstr = hour + "h " + min + "m ";
  296. return rtnstr;
  297. }
  298. /**
  299. * @desc : 수술시간 시분초로 변경
  300. * @
  301. * @param :
  302. * @return :
  303. * @author : 오지훈
  304. * @---------------------------------------------------
  305. */
  306. function fSetOpTimeToHourMin(){
  307. for(var i = 1; i < grd_opschelist.rows; i++){
  308. var opfromtmcd = model.getValue(sOPSCHERECLIST_PATH + "[" + i + "]/opfromtmcd");
  309. var opendtmcd = model.getValue(sOPSCHERECLIST_PATH + "[" + i + "]/opendtmcd");
  310. if(opfromtmcd == "" || opendtmcd == ""){
  311. var difftime = 0;
  312. }else{
  313. var difftime = getTimeInterval(opfromtmcd, opendtmcd);
  314. }
  315. model.setValue(sOPSCHERECLIST_PATH + "[" + i + "]/opusetm", fTransSecToHourMin(difftime));
  316. }
  317. grd_opschelist.refresh();
  318. }
  319. /**
  320. * @desc : 날짜를 계산
  321. * @
  322. * @param :
  323. * @return :
  324. * @author : 오지훈
  325. * @---------------------------------------------------
  326. */
  327. function fCalReqDate(daycnt){
  328. var fromdd = model.getValue("/root/main/cond/fromdd");
  329. var fromdd = (fromdd.toDate()).getAddDate(daycnt);
  330. fromdd = fromdd.getDateFormat();
  331. var todd = model.getValue("/root/main/cond/todd");
  332. var todd = (todd.toDate()).getAddDate(daycnt);
  333. todd = todd.getDateFormat();
  334. model.setValue("/root/main/cond/fromdd", fromdd);
  335. model.setValue("/root/main/cond/todd" , todd); //종료일자
  336. model.refresh();
  337. }
  338. /**
  339. * @desc : 진단명 검색 팝업 open
  340. * @
  341. * @param : pFlag 처리구분 (code : 코드검색, term : 수술명)
  342. * @return :
  343. * @author : 오지훈
  344. * @---------------------------------------------------
  345. */
  346. function fOpenDiagSearch(pFlag){
  347. if(pFlag == "code"){
  348. setParameter("SPMMO00800_cond1", 1);
  349. setParameter("SPMMO00800_cond2", 1);
  350. setParameter("SPMMO00800_cond3", "E");
  351. setParameter("SPMMO00800_cond4", getCurrentDate());
  352. setParameter("SPMMO00800_cond5", model.getValue("/root/main/oprsrvinfo/oprsrvinfo/dispdiagcd"));
  353. }else if(pFlag =="term"){
  354. var diagnm = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/diagnm");
  355. setParameter("SPMMO00800_cond1", 2);
  356. setParameter("SPMMO00800_cond2", 2);
  357. setParameter("SPMMO00800_cond3", fIsHangul(diagnm));
  358. setParameter("SPMMO00800_cond4", getCurrentDate());
  359. setParameter("SPMMO00800_cond5", diagnm);
  360. }
  361. modal("SPMMO00800");
  362. var useyn = getParameter("SPMMO00800_rtn_useyn");
  363. if(useyn == "Y"){
  364. setParameter("SPMMO00800_rtn_useyn", "N");
  365. var rtnparam = getParameter("SPMMO00800_rtn");
  366. rtnparam = rtnparam.split("▩");
  367. var tmpstr = rtnparam[1];
  368. tmpstr = tmpstr.split("▦");
  369. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/diagcd" , tmpstr[2]);
  370. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/dispdiagcd", tmpstr[2]);
  371. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/diagnm" , tmpstr[3]);
  372. ipt_diagcd.attribute("editable") = "false";
  373. ipt_diagnm.attribute("editable") = "false";
  374. model.refresh();
  375. }else{
  376. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/diagcd", "");
  377. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/diagnm", "");
  378. model.refresh();
  379. }
  380. }
  381. /**
  382. * @desc : 수술예약시간 설정
  383. * @
  384. * @param :
  385. * @return :
  386. * @author : 오지훈
  387. * @---------------------------------------------------
  388. */
  389. function fOpenOpScheTime(){
  390. var param = model.getValue(sOPRSRVINFO_PATH + "/status") + "▦" +
  391. model.getValue(sOPRSRVINFO_PATH + "/oproomcd") + "▦" +
  392. model.getValue(sOPRSRVINFO_PATH + "/oprsrvno") + "▦" +
  393. model.getValue(sOPRSRVINFO_PATH + "/ophistno") + "▦" +
  394. model.getValue(sOPRSRVINFO_PATH + "/pid") + "▦" +
  395. model.getValue(sOPRSRVINFO_PATH + "/opschedd") + "▦" +
  396. model.getValue(sOPRSRVINFO_PATH + "/perfdeptcd") + "▦" +
  397. model.getValue(sOPRSRVINFO_PATH + "/opfromtmcd") + "▦" +
  398. model.getValue(sOPRSRVINFO_PATH + "/opendtmcd") + "▦" +
  399. "oprsrv" + "▦" +
  400. model.getValue(sOPRSRVINFO_PATH + "/perfdrid");
  401. setParameter("SPMMO08800_param", param);
  402. modal("SPMMO08800");
  403. var rtnuseyn = getParameter("SPMMO08800_rtn_useyn");
  404. if(rtnuseyn == "Y"){
  405. setParameter("SPMMO08800_rtn_useyn", "N");
  406. var rtnparam = getParameter("SPMMO08800_rtn_param");
  407. rtnparam = rtnparam.split("▦");
  408. fReqRegOpTime(); // 정규 수술시간 조회
  409. // 정규시간을 초과해서 입력하면 응급과 추가만 가능
  410. if( (rtnparam[1] >= model.getValue("/root/main/scheregtimelist/scheregtimelist/regendtm") + "0000") ||
  411. (rtnparam[2] > model.getValue("/root/main/scheregtimelist/scheregtimelist/regendtm") + "0000" ) ){
  412. messageBox("정규시간을 초과하였습니다. 응급과 추가만", "I006");
  413. model.setValue(sOPRSRVINFO_PATH + "/oproomcd" , "");
  414. model.setValue(sOPRSRVINFO_PATH + "/opfromtmcd", "");
  415. model.setValue(sOPRSRVINFO_PATH + "/opendtmcd" , "");
  416. model.setValue(sOPRSRVINFO_PATH + "/opusetm" , "");
  417. return;
  418. }
  419. var difftime = getTimeInterval(rtnparam[1], rtnparam[2]);
  420. model.setValue(sOPRSRVINFO_PATH + "/oproomcd" , rtnparam[0]);
  421. model.setValue(sOPRSRVINFO_PATH + "/opfromtmcd", rtnparam[1]);
  422. model.setValue(sOPRSRVINFO_PATH + "/opendtmcd" , rtnparam[2]);
  423. model.setValue(sOPRSRVINFO_PATH + "/opusetm" , fTransSecToHourMin(difftime));
  424. model.refresh();
  425. }
  426. }
  427. /**
  428. * @desc : 초를 시분으로 전환
  429. * @
  430. * @param :
  431. * @return :
  432. * @author : 오지훈
  433. * @---------------------------------------------------
  434. */
  435. function fTransSecToHourMin(sec){
  436. var hr = 3600;
  437. var min = 60;
  438. hour = parseInt(sec/hr);
  439. min = parseInt(sec%hr/min);
  440. hour = ("" + hour + "").getLeftPad(2, "0");
  441. min = ("" + min + "").getLeftPad(2, "0");
  442. var rtnstr = hour.concat(min);
  443. return rtnstr;
  444. }
  445. /**
  446. * @desc : CaseCart조회 및 value설정
  447. * @
  448. * @param :
  449. * @return :
  450. * @author : 오지훈
  451. * @---------------------------------------------------
  452. */
  453. function fOpenCcrtSearch(){
  454. var param = model.getValue(sOPRSRVINFO_PATH + "/opschedd") + "▦" +
  455. model.getValue(sOPRSRVINFO_PATH + "/perfdeptcd") + "▦" +
  456. model.getValue(sOPRSRVINFO_PATH + "/perfdrid") + "▦" +
  457. model.getValue(sOPRSRVINFO_PATH + "/opcd") + "▦" +
  458. model.getValue(sOPRSRVINFO_PATH + "/opnm") + "▦" +
  459. "perf"; //query구분
  460. setParameter("SPMMO11000_param", param);
  461. modal("SPMMO11000");
  462. var useyn = getParameter("SPMMO11000_rtn_useyn");
  463. if(useyn == "Y"){
  464. var rtnparam = getParameter("SPMMO11000_rtn_param");
  465. //alert(rtnparam);
  466. rtnparam = rtnparam.split("▦");
  467. model.setValue(sOPRSRVINFO_PATH + "/ccrtno" , rtnparam[0]);
  468. model.setValue(sOPRSRVINFO_PATH + "/ccrtstat", 1);
  469. model.setValue(sOPRSRVINFO_PATH + "/opcd" , rtnparam[1]);
  470. model.setValue(sOPRSRVINFO_PATH + "/opnm" , rtnparam[2]);
  471. // 요청번호; 845
  472. // 요청내용: 수술의뢰시 필요한 기준자료 추가 등록
  473. // 세부내용: 수술체위, 수술창상, 수술위치, 마취방법
  474. // 수정날자 2010.05.24
  475. // 수정자 : kskim
  476. // 수정 시작
  477. var opflagcd = model.getValue(sOPRSRVINFO_PATH + "/opflagcd");
  478. var cnstopflag = model.getValue(sOPRSRVINFO_PATH + "/cnstopflag"); // 협진수술여부 체크 //2010.06.17 kskim
  479. // 응급:2, 추가:3 일 경우에만 수술카트에 등록된 소요시간 정보 사용
  480. if(opflagcd == 2 || opflagcd == 3){
  481. // 협진수술여부 조건 추가 체크(협진의뢰 시 opusetm, oproomcd 정보는 카드마스터와 연동 안됨) //2010.06.17 kskim
  482. if( cnstopflag == "N" ){
  483. model.setValue("/root/main/hopebox/usehour" , rtnparam[4]); // 소요시간(시)
  484. model.setValue("/root/main/hopebox/usemin" , rtnparam[5]); // 소요시간(분)
  485. var opusetime = rtnparam[4].concat(rtnparam[5]);
  486. model.setValue(sOPRSRVINFO_PATH + "/opusetm" , opusetime); //소요시간(시: 분)
  487. //model.setValue(sOPRSRVINFO_PATH + "/oproomcd" , "0000"); //수술방에 방벖음 정보 셋팅
  488. model.setValue(sOPRSRVINFO_PATH + "/oproomcd" , "2222"); //수술방에 임시방 정보 셋팅 2014.10.20 엄영만
  489. }
  490. }
  491. model.setValue(sOPRSRVINFO_PATH + "/opposturecd" , rtnparam[6]); // 수술체위
  492. model.setValue(sOPRSRVINFO_PATH + "/opdirecflag" , rtnparam[7]); // 수술위치
  493. model.setValue(sOPRSRVINFO_PATH + "/anstmthdcd" , rtnparam[8]); // 마취방법
  494. model.setValue(sOPRSRVINFO_PATH + "/opcntmdg" , rtnparam[9]); // 수술창상
  495. // 수정 종료
  496. setParameter("SPMMO11000_rtn_useyn", "N");
  497. }
  498. model.refresh();
  499. }
  500. /**
  501. * @desc : CaseCart조회 및 value설정
  502. * @
  503. * @param :
  504. * @return :
  505. * @author : 오지훈
  506. * @---------------------------------------------------
  507. */
  508. function fOpenSubCcrtSearch(){
  509. var param = model.getValue(sOPRSRVINFO_PATH + "/opschedd") + "▦" +
  510. model.getValue(sOPRSRVINFO_PATH + "/perfdeptcd") + "▦" +
  511. model.getValue(sOPRSRVINFO_PATH + "/perfdrid") + "▦" +
  512. model.getValue(sOPRSRVINFO_PATH + "/subopcd") + "▦" +
  513. model.getValue(sOPRSRVINFO_PATH + "/subopnm") + "▦" +
  514. "perf";
  515. setParameter("SPMMO11000_param", param);
  516. modal("SPMMO11000");
  517. var useyn = getParameter("SPMMO11000_rtn_useyn");
  518. if(useyn == "Y"){
  519. var rtnparam = getParameter("SPMMO11000_rtn_param");
  520. rtnparam = rtnparam.split("▦");
  521. model.setValue(sOPRSRVINFO_PATH + "/subopcd" , rtnparam[1]);
  522. model.setValue(sOPRSRVINFO_PATH + "/subopnm" , rtnparam[2]);
  523. setParameter("SPMMO11000_rtn_useyn", "N");
  524. }
  525. model.refresh();
  526. }
  527. /**
  528. * @desc : 수술예약정보 저장
  529. * @
  530. * @param :
  531. * @return :
  532. * @author : 오지훈
  533. * @---------------------------------------------------
  534. */
  535. function fSaveOpRsrvInfo(opstatcd,tmpstat){
  536. var status = model.getValue(sOPRSRVINFO_PATH + "/status");
  537. var painlessflag = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/painlessflag");
  538. var cmpopstatcd = model.getValue(sOPRSRVINFO_PATH + "/opstatcd");
  539. var chkopcnfmtm = model.getValue("/root/init/chkopcnfmtm/hardcd/hardcd");
  540. var chkoffday = model.getValue("/root/init/chkoffday/hardcd/hardcd");
  541. var MyTime = getCurrentTime();
  542. var realtime = MyTime.substr(0,2);
  543. var reqrsncd = model.getValue(sOPRSRVINFO_PATH + "/reqrsncd");
  544. if(painlessflag != "Y") { // 무통
  545. if(status == "u" && cmpopstatcd >= 20){ // 2008.10.31 확정이후 단계의 수술은 모두 변경 불가 처리
  546. messageBox("수술확정이 된 예약정보는 수술예약정보 변경", "E001");
  547. return;
  548. } else if(status == "u" && cmpopstatcd < 20 && (reqrsncd == "314" || reqrsncd == "315")) { // [요청번호: 847] 취소변경 사유(수술일자 변경)일 경우 블로킹 by 박영우 2010.07.09
  549. messageBox("수술일 변경요청된 스케줄입니다. 마취과 승인 이전 의뢰취소 또는 취소변경은 불가합니다.", "E");
  550. return;
  551. } else {
  552. if(fChkSaveOpRsrvValid() == true){ //데이터 무결성 검사시 이상이 없는 경우 저장 로직을 수행
  553. if(status == "u"){ //수정인 경우
  554. model.setValue(sOPRSRVINFO_PATH + "/status", ""); //수정내용 검사시 status는 제외하기 위해 값을 삭제
  555. if(model.getValue(sOPRSRVINFO_PATH + "/opstatcd") == "10") { // 의뢰상태일 경우만
  556. if(compareNodeVal(sOPRSRVINFO_PATH, "/root/temp/oprsrvinfo") == false && fChkSaveOpPrevDiag() == false){ //변경된 내용이 있는 경우
  557. messageBox("변경된 내용이", "I004");
  558. return;
  559. }else{
  560. model.setValue(sOPRSRVINFO_PATH + "/status", "u"); //수정 flag 원복
  561. }
  562. }else{ // 임시(00) -> 인증 (10)
  563. model.setValue(sOPRSRVINFO_PATH + "/status", "u"); //수정 flag 원복
  564. }
  565. }
  566. if(status != "d"){
  567. // 2008.09.10 수술 하루전 일괄확정(12:00) 이후에는 정규로는 의뢰불가
  568. // 추가, 응급(당일)로만 의뢰가능함
  569. var opflagcd = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/opflagcd");
  570. if( opflagcd == "1") {
  571. var opschedd = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/opschedd");
  572. if (getDateInterval(getCurrentDate(), opschedd) == 1) {
  573. if( getCurrentTime() > chkopcnfmtm ) {
  574. messageBox("정규수술 일괄확정되었습니다. 이후에는 추가, 응급으로만 의뢰", "I006");
  575. return;
  576. }
  577. }
  578. }
  579. if (chkoffday == "Y") {
  580. // 2008.10.13 월요일 의뢰는 금요일 오전 12시까지만 가능
  581. var opsdd = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/opschedd"); // 의뢰요일
  582. var someday = new Date(opsdd.substring(0, 4), opsdd.substring(4, 6), opsdd.substring(6, 8));
  583. someday = someday.getAddDate(-1, "M");
  584. var dkind = someday.getDay();
  585. if( getCurrentWeek() == "5") { // 금 5
  586. if(dkind == "1") { // 의뢰요일이 월요일이면
  587. if( opflagcd == "1" && getCurrentTime() > chkopcnfmtm ) {
  588. messageBox("정규수술 일괄확정되었습니다. 이후에는 추가, 응급으로만 의뢰", "I006");
  589. return;
  590. }
  591. }
  592. }
  593. if( getCurrentWeek() == "6") { // 토 6
  594. if(opflagcd == "1" && dkind == "1") { // 의뢰요일이 월요일이면
  595. messageBox("정규수술 일괄확정되었습니다. 이후에는 추가, 응급으로만 의뢰", "I006");
  596. return;
  597. }
  598. }
  599. // 2008.10.27 휴일인 경우 blocking 처리
  600. var opflagcd = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/opflagcd");
  601. if(opflagcd == "1") { // 정규일 경우만 check 하도록
  602. var opexdd = new Date(opsdd.substring(0, 4), opsdd.substring(4, 6) -1, opsdd.substring(6, 8));
  603. opexdd = opexdd.getAddDate(-1).getDateFormat();
  604. var nodeList = instance1.selectNodes("/root/main/calendar/calendar[basedd ="+ opexdd +"]");
  605. if( nodeList.length > 0) {
  606. var dutflag = nodeList.item(0).selectSingleNode("dutflag").text; // 휴일여부
  607. if(dutflag == "8") {
  608. var weekList = instance1.selectNodes("/root/main/calendar/calendar[basedd < "+ opexdd +" and dutflag = '0']");
  609. var possdd = weekList.item(weekList.length-1).selectSingleNode("basedd").text;
  610. if( opflagcd == "1" && possdd == getCurrentDate() && getCurrentTime() > chkopcnfmtm) {
  611. messageBox("정규수술 일괄확정되었습니다. 이후에는 추가, 응급으로만 의뢰", "I006");
  612. return;
  613. }
  614. }
  615. }
  616. }
  617. } else {
  618. var opcnfmdd = model.getValue("root/main/oprsrvinfo/oprsrvinfo/opschedd");
  619. var dutflag = model.getValue("/root/main/calendar/calendar[basedd ="+ opcnfmdd +"]/dutflag");
  620. var opflagcd = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/opflagcd");
  621. if ((dutflag == "4" || dutflag =="8") && opflagcd == "1") {
  622. messageBox("수술예정일자가 휴일 또는 토요일인 경우는 정규수술로 의뢰가 불가능합니다", "I");
  623. return;
  624. }
  625. }
  626. // 2008.09.23 협진의 경우 주과와 다른 방 입력시 alert
  627. // 09.02.04 주수술번호를 물고 있는 협진의 경우만 체크하도록 조건 추가
  628. var cnstopflag = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/cnstopflag");
  629. var mainoprsrvno = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/mainoprsrvno");
  630. var rtnRoomcd = getParameter("SPMMO11100_rtn_param_oproomcd");
  631. if( cnstopflag == "Y" && rtnRoomcd != null && mainoprsrvno != "") {
  632. var roomcd = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/oproomcd");
  633. if(rtnRoomcd != roomcd) {
  634. messageBox("수술협진시 다른방으로 의뢰", "E001");
  635. return;
  636. }
  637. }
  638. // 2008.11.19 재원여부 check
  639. if(!fChkPatInRgst()) return;
  640. }
  641. model.setValue(sOPRSRVINFO_PATH + "/opstatcd", opstatcd); //의뢰(인증저장)
  642. model.makeValue("/root/main/oprsrvinfo/oprsrvinfo/tmpstat",tmpstat);
  643. var rsrvinfo = model.instance1.selectNodes("/root/main/oprsrvinfo/oprsrvinfo");
  644. var diaginfo = model.instance1.selectNodes("/root/main/diaglist/diaglist");
  645. model.removeNodeset("/root/send/savedata");
  646. model.makeValue("/root/send/savedata/rsrvinfo", getNodeListCSV(rsrvinfo));
  647. model.makeValue("/root/send/savedata/diaginfo", getNodeListCSV(diaginfo));
  648. //2012/06/26 Start
  649. // 수술 예방적 항생제 관련
  650. var dispopcd=model.getValue("/root/main/oprsrvinfo/oprsrvinfo/opcd");
  651. var t_pname = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/hngnm");
  652. var t_opnm = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/opnm");
  653. var irow = grd_opschelist.row;
  654. if(model.getValue("/root/main/oprsrvinfo/oprsrvinfo/sa").substr(2,4)>17){
  655. for(var i=1; i<=parseInt(nodecnt.length); i++){
  656. var trgtcd=model.getValue("/root/temp/opcd/hardcd["+ i +"]/hardcd");
  657. if(dispopcd==trgtcd){
  658. messageBox("("+t_pname+")"+" 환자는 " +"("+t_opnm+")" + " 수술로 수술예방적 항생제 적정성 평가 대상입니다.\n" +
  659. "1,2세대 세파계 항생제를 단독으로 투여하시면 평가를 잘 받을 수 있습니다.", "I");
  660. break;
  661. }
  662. }
  663. }
  664. //2012/06/26 End
  665. if(submit("TXMMO00201")==true){
  666. if(status != "d"){ //삭제된 경우는 selectSingleNode error발생
  667. fDispAprvCnclChng(); //저장 후 조회결과 그리드의 color를 변경처리함
  668. fClkGrdOpRsrvList(1);
  669. }
  670. }
  671. }
  672. }
  673. } else if(painlessflag == "Y") {
  674. if(status == "u" && cmpopstatcd >= 20){ // 확정이후 단계의 수술은 모두 변경 불가 처리
  675. messageBox("수술확정이 된 예약정보는 수술예약정보 변경", "E001");
  676. return;
  677. } else if(status == "u" && cmpopstatcd < 20 && (reqrsncd == "314" || reqrsncd == "315")) { // [요청번호: 847] 취소변경 사유(수술일자 변경)일 경우 블로킹 by 박영우 2010.07.09
  678. messageBox("수술일 변경요청된 스케줄입니다. 마취과 승인 이전 의뢰취소 또는 취소변경은 불가합니다.", "E");
  679. return;
  680. }
  681. var opschedd = model.getValue(sOPRSRVINFO_PATH + "/opschedd");
  682. var oppatflagcd= model.getValue(sOPRSRVINFO_PATH + "/oppatflagcd");
  683. if(opschedd == ""){
  684. messageBox("수술예정일자를 ", "C001");
  685. return;
  686. }
  687. if(oppatflagcd == ""){
  688. messageBox("수술환자구분을", "C001");
  689. return;
  690. }
  691. var totrow = grd_diaglist.rows;
  692. if(totrow < 3){
  693. messageBox("수술전 진단을", "C001");
  694. return;
  695. }
  696. model.setValue(sOPRSRVINFO_PATH + "/opstatcd", opstatcd); //의뢰(인증저장)
  697. model.makeValue("/root/main/oprsrvinfo/oprsrvinfo/tmpstat",tmpstat);
  698. var rsrvinfo = model.instance1.selectNodes("/root/main/oprsrvinfo/oprsrvinfo");
  699. var diaginfo = model.instance1.selectNodes("/root/main/diaglist/diaglist");
  700. model.removeNodeset("/root/send/savedata");
  701. model.makeValue("/root/send/savedata/rsrvinfo", getNodeListCSV(rsrvinfo));
  702. model.makeValue("/root/send/savedata/diaginfo", getNodeListCSV(diaginfo));
  703. //2012/06/26 Start
  704. // 수술 예방적 항생제 관련
  705. var dispopcd=model.getValue("/root/main/oprsrvinfo/oprsrvinfo/opcd");
  706. var t_pname = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/hngnm");
  707. var t_opnm = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/opnm");
  708. var irow = grd_opschelist.row;
  709. if(model.getValue("/root/main/oprsrvinfo/oprsrvinfo/sa").substr(2,4)>17){
  710. for(var i=1; i<=parseInt(nodecnt.length); i++){
  711. var trgtcd=model.getValue("/root/temp/opcd/hardcd["+ i +"]/hardcd");
  712. if(dispopcd==trgtcd){
  713. messageBox("("+t_pname+")"+" 환자는 " +"("+t_opnm+")" + " 수술로 수술예방적 항생제 적정성 평가 대상입니다.\n" +
  714. "1,2세대 세파계 항생제를 단독으로 투여하시면 평가를 잘 받을 수 있습니다.", "I");
  715. break;
  716. }
  717. }
  718. }
  719. if(submit("TXMMO00201")==true){
  720. if(status != "d"){ //삭제된 경우는 selectSingleNode error발생
  721. fDispAprvCnclChng(); //저장 후 조회결과 그리드의 color를 변경처리함
  722. fClkGrdOpRsrvList(1);
  723. }
  724. }
  725. }
  726. }
  727. /**
  728. * @desc : 수술예약자리스트 선택시
  729. * @
  730. * @param :
  731. * @return :
  732. * @author : 오지훈
  733. * @---------------------------------------------------
  734. */
  735. function fClkGrdOpRsrvList(currow){
  736. var oppatflagcd = model.getValue(sOPRSRVLIST_PATH + "[" + currow + "]/oppatflagcd");
  737. var anstreqflag = model.getValue(sOPRSRVLIST_PATH + "[" + currow + "]/anstreqflag");
  738. var painlessflag = model.getValue(sOPRSRVLIST_PATH + "[" + currow + "]/painlessflag");
  739. var drgyn = model.getValue(sOPRSRVLIST_PATH + "[" + currow + "]/drgyn");
  740. // 일일수술실일 경우에만 수술전 검사 여부가 보이도록 함 2012.05.22 KJS
  741. caption60.visible = false;
  742. rdo_dsclabflag.visible = false;
  743. rdo_dsclabflag.disabled = true;
  744. if (oppatflagcd == "D") {
  745. caption60.visible = true;
  746. rdo_dsclabflag.visible = true;
  747. rdo_dsclabflag.disabled = false;
  748. }
  749. //임시저장인 경우 수술예약을 조회하지 않아서 selectSingleNode error 발생
  750. if(model.getValue(sOPRSRVINFO_PATH + "/opstatcd") != "00") {
  751. model.copyNode(sOPRSRVINFO_PATH, sOPRSRVLIST_PATH + "[" + currow + "]");
  752. }
  753. model.copyNode("/root/temp/oprsrvinfo", sOPRSRVINFO_PATH);
  754. model.setValue(sOPRSRVINFO_PATH + "/status", "u");
  755. // if(anstreqflag == "Y"){ //마취의뢰인 경우, 수술전진단 및 수술실시간, 수술실배정, 수술코드 입력이 모두 불가함
  756. // fSetInptDisabled("Y");
  757. // }else{
  758. if(painlessflag == "Y"){ //무통마취의뢰인 경우, 수술전진단 및 수술실시간, 수술실배정, 수술코드 입력이 모두 불가함
  759. fClkUnpainFlag("Y");
  760. }else{
  761. fSetInptDisabled("-");
  762. var orddeptcd = model.getValue(sOPRSRVINFO_PATH + "/perfdeptcd"); //의사명 집도과에 따라변경
  763. //zsufGetUserInfoCombo(orddeptcd, "/root/init/userlist", "_D");
  764. mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", orddeptcd, "0330");
  765. fReqDailyChrgAnstDr(ipt_opschedd.value);
  766. fReqOpPrevDiagList(currow); //수술예약정보 수술전 진단 조회
  767. model.refresh();
  768. }
  769. if (drgyn == "Y") {
  770. btn_drgmod.disabled = false;
  771. } else {
  772. btn_drgmod.disabled = true;
  773. }
  774. }
  775. /**
  776. * @desc : 진단검색
  777. * @
  778. * @param :
  779. * @return :
  780. * @author : 오지훈
  781. * @---------------------------------------------------
  782. */
  783. function fOpenSearchDiag(){
  784. var curcol = grd_diaglist.col;
  785. if(curcol == grd_diaglist.colRef("dispdiagcd")){ //진단코드로 검색
  786. setParameter("SPMMO00800_cond1", 1);
  787. setParameter("SPMMO00800_cond2", 1);
  788. setParameter("SPMMO00800_cond3", "E");
  789. setParameter("SPMMO00800_cond4", getCurrentDate());
  790. setParameter("SPMMO00800_cond5", grd_diaglist.valueMatrix(grd_diaglist.row, grd_diaglist.colRef("dispdiagcd")));
  791. }else if(curcol == grd_diaglist.colRef("diagengnm")){ //진단영문명 검색
  792. var diagengnm = grd_diaglist.valueMatrix(grd_diaglist.row, grd_diaglist.colRef("diagengnm"));
  793. setParameter("SPMMO00800_cond1", 2);
  794. setParameter("SPMMO00800_cond2", 4);
  795. setParameter("SPMMO00800_cond3", fIsHangul(diagengnm));
  796. setParameter("SPMMO00800_cond4", getCurrentDate());
  797. setParameter("SPMMO00800_cond5", diagengnm);
  798. }else if(curcol == grd_diaglist.colRef("diaghngnm")){ //진단한글명 검색
  799. var diaghngnm = grd_diaglist.valueMatrix(grd_diaglist.row, grd_diaglist.colRef("diaghngnm"));
  800. setParameter("SPMMO00800_cond1", 2);
  801. setParameter("SPMMO00800_cond2", 4);
  802. setParameter("SPMMO00800_cond3", fIsHangul(diaghngnm));
  803. setParameter("SPMMO00800_cond4", getCurrentDate());
  804. setParameter("SPMMO00800_cond5", diaghngnm);
  805. }
  806. if(getParameter("SPMMO00800_cond5").length < 2){
  807. return;
  808. }
  809. modal("SPMMO00800");
  810. var useyn = getParameter("SPMMO00800_rtn_useyn");
  811. if(useyn == "Y"){
  812. setParameter("SPMMO00800_rtn_useyn", "");
  813. fSetDiagTermCD();
  814. }else{
  815. setParameter("SPMMO00800_rtn_useyn", "");
  816. var currow = grd_diaglist.row;
  817. model.setValue(sDIAGCDLIST_PATH + "[" + currow + "]/dispdiagcd", "");
  818. model.setValue(sDIAGCDLIST_PATH + "[" + currow + "]/diagengnm" , "");
  819. model.setValue(sDIAGCDLIST_PATH + "[" + currow + "]/diaghngnm" , "");
  820. model.refresh();
  821. }
  822. }
  823. /**
  824. * @desc : 진단용어코드 설정
  825. * @
  826. * @param :
  827. * @return :
  828. * @author : 오지훈
  829. * @---------------------------------------------------
  830. */
  831. function fSetDiagTermCD(){
  832. var rtnparam = getParameter("SPMMO00800_rtn");
  833. rtnparam = rtnparam.split("▩");
  834. for(var i = 1; i <= rtnparam.length-2; i++){
  835. var tmpstr = rtnparam[i];
  836. tmpstr = tmpstr.split("▦");
  837. var currow = grd_diaglist.rows - 1;
  838. model.setValue(sDIAGCDLIST_PATH + "[" + currow + "]/status" , "i");
  839. model.setValue(sDIAGCDLIST_PATH + "[" + currow + "]/oprsrvno" , model.getValue(sOPRSRVINFO_PATH + "/oprsrvno"));
  840. model.setValue(sDIAGCDLIST_PATH + "[" + currow + "]/dispdiagcd", tmpstr[1]);
  841. model.setValue(sDIAGCDLIST_PATH + "[" + currow + "]/diagcd" , tmpstr[9]);
  842. model.setValue(sDIAGCDLIST_PATH + "[" + currow + "]/diagengnm" , tmpstr[2]);
  843. model.setValue(sDIAGCDLIST_PATH + "[" + currow + "]/diaghngnm" , tmpstr[3]);
  844. grd_diaglist.addrow(false, true);
  845. }
  846. model.recalculate();
  847. model.refresh();
  848. }
  849. /**
  850. * @desc : 수술예약정보 수술전 진단 조회
  851. * @
  852. * @param :
  853. * @return :
  854. * @author : 오지훈
  855. * @---------------------------------------------------
  856. */
  857. function fReqOpPrevDiagList(currow){
  858. var oprsrvno = model.getValue(sOPRSRVLIST_PATH + "[" + currow + "]/oprsrvno");
  859. var perfdeptcd = model.getValue(sOPRSRVLIST_PATH + "[" + currow + "]/perfdeptcd");
  860. model.removeNodeset("/root/send/reqdata");
  861. model.makeValue("/root/send/reqdata/oprsrvno", oprsrvno);
  862. model.makeValue("/root/send/reqdata/perfdeptcd", perfdeptcd);
  863. if(submit("TRMMO00202")==true){
  864. grd_diaglist.addRow(false, true);
  865. }
  866. model.recalculate();
  867. }
  868. /**
  869. * @desc : 수술예약정보 수술전 진단 삭제
  870. * @
  871. * @param :
  872. * @return :
  873. * @author : 오지훈
  874. * @---------------------------------------------------
  875. */
  876. function fDelOpPrevDiag(){
  877. var status = grd_diaglist.valueMatrix(grd_diaglist.row, grd_diaglist.colRef("status"));
  878. if(status == "i"){ //신규일 경우
  879. model.removeNode("/root/main/diaglist/diaglist[" + grd_diaglist.row + "]");
  880. grd_diaglist.rebuild();
  881. }else{
  882. grd_diaglist.valueMatrix(grd_diaglist.row, grd_diaglist.colRef("status")) = "d";
  883. }
  884. model.refresh();
  885. }
  886. /**
  887. * @desc : 수술예약정보 수술전 진단 변경 사항 검사
  888. * @
  889. * @param :
  890. * @return :
  891. * @author : 오지훈
  892. * @---------------------------------------------------
  893. */
  894. function fChkSaveOpPrevDiag(){
  895. var totrow = grd_diaglist.rows;
  896. for(var i = 0; i < totrow; i++){
  897. var status = grd_diaglist.valueMatrix(i, grd_diaglist.colRef("status"));
  898. if(status == "i" || status == "d"){
  899. return true;
  900. }
  901. }
  902. return false;
  903. }
  904. /**
  905. * @desc : 수술예약장부 클릭시 수술예약정보에 데이터 설정
  906. * @
  907. * @param :
  908. * @return :
  909. * @author : 오지훈
  910. * @---------------------------------------------------
  911. */
  912. function fClkGrdOpScheList(currow){
  913. var pid = model.getValue(sOPSCHERECLIST_PATH + "[" + currow + "]/pid");
  914. var perfdeptcd = model.getValue(sOPSCHERECLIST_PATH + "[" + currow + "]/perfdeptcd");
  915. var perfdrid = model.getValue(sOPSCHERECLIST_PATH + "[" + currow + "]/perfdrid");
  916. var oproomcd = model.getValue(sOPSCHERECLIST_PATH + "[" + currow + "]/oproomcd");
  917. var opfromtmcd = model.getValue(sOPSCHERECLIST_PATH + "[" + currow + "]/opfromtmcd");
  918. var opendtmcd = model.getValue(sOPSCHERECLIST_PATH + "[" + currow + "]/opendtmcd");
  919. var anstmthdcd = model.getValue(sOPSCHERECLIST_PATH + "[" + currow + "]/anstmthdcd");
  920. var opusetm = model.getValue(sOPSCHERECLIST_PATH + "[" + currow + "]/opusetm");
  921. var oppatflagcd= model.getValue(sOPSCHERECLIST_PATH + "[" + currow + "]/oppatflagcd");
  922. var opschedd = model.getValue(sOPSCHERECLIST_PATH + "[" + currow + "]/opschedd");
  923. var hngnm = model.getValue(sOPSCHERECLIST_PATH + "[" + currow + "]/hngnm");
  924. var sex = model.getValue(sOPSCHERECLIST_PATH + "[" + currow + "]/sex");
  925. var age = model.getValue(sOPSCHERECLIST_PATH + "[" + currow + "]/age");
  926. var diagcd = model.getValue(sOPSCHERECLIST_PATH + "[" + currow + "]/diagcd");
  927. var diagnm = model.getValue(sOPSCHERECLIST_PATH + "[" + currow + "]/diagnm");
  928. var dispdiagcd = model.getValue(sOPSCHERECLIST_PATH + "[" + currow + "]/dispdiagcd");
  929. var orddeptcd = model.getValue(sOPSCHERECLIST_PATH + "[" + currow + "]/orddeptcd");
  930. model.resetInstanceNode(sOPRSRVINFO_PATH);
  931. model.refresh();
  932. model.setValue(sOPRSRVINFO_PATH + "/status" , "i");
  933. model.setValue(sOPRSRVINFO_PATH + "/pid" , pid);
  934. model.setValue(sOPRSRVINFO_PATH + "/orddeptcd" , perfdeptcd);
  935. model.setValue(sOPRSRVINFO_PATH + "/perfdeptcd" , perfdeptcd);
  936. model.setValue(sOPRSRVINFO_PATH + "/oproomcd" , oproomcd);
  937. model.setValue(sOPRSRVINFO_PATH + "/opfromtmcd" , opfromtmcd);
  938. model.setValue(sOPRSRVINFO_PATH + "/opendtmcd" , opendtmcd);
  939. model.setValue(sOPRSRVINFO_PATH + "/anstmthdcd" , anstmthdcd);
  940. model.setValue(sOPRSRVINFO_PATH + "/opusetm" , opusetm);
  941. model.setValue(sOPRSRVINFO_PATH + "/oppatflagcd", oppatflagcd);
  942. model.setValue(sOPRSRVINFO_PATH + "/opschedd" , opschedd);
  943. model.setValue(sOPRSRVINFO_PATH + "/hngnm" , hngnm);
  944. model.setValue(sOPRSRVINFO_PATH + "/sa" , sex + "/".concat(age));
  945. model.setValue(sOPRSRVINFO_PATH + "/reopflag" , "N"); //수술공개
  946. if(opschedd != getCurrentDate()) {
  947. model.setValue(sOPRSRVINFO_PATH + "/opflagcd" , "1"); //수술구분
  948. }
  949. model.setValue(sOPRSRVINFO_PATH + "/opopenflag" , "Y"); //금일재수술
  950. model.setValue(sOPRSRVINFO_PATH + "/anstreqflag", "N"); //마취의뢰만
  951. model.setValue(sOPRSRVINFO_PATH + "/cnstopflag" , "N"); //협진의뢰여부
  952. model.setValue(sOPRSRVINFO_PATH + "/opcntmdg" , "0"); //수술창상
  953. model.setValue("/root/main/cond/rgstnm", getUserInfo("usernm"));
  954. fGetReqrcntctel(); //연락처정보 셋팅 추가 요청 (2010.03.19 JJE)
  955. //zsufGetUserInfoCombo(cmb_perfdeptcd.value, "/root/init/userlist", "_D"); //의사 콤보조회
  956. mmbfGetUserComboList("/root/send/reqdata", "/root/init/userlist", cmb_perfdeptcd.value, "0330");
  957. model.setValue(sOPRSRVINFO_PATH + "/perfdrid" , perfdrid);
  958. model.removeNodeset(sDIAGCDLIST_PATH);
  959. model.refresh();
  960. grd_diaglist.addRow(false, true);
  961. grd_diaglist.valueMatrix(grd_diaglist.row, grd_diaglist.colRef("status")) = "i";
  962. grd_diaglist.valueMatrix(grd_diaglist.row, grd_diaglist.colRef("diagcd")) = diagcd;
  963. grd_diaglist.valueMatrix(grd_diaglist.row, grd_diaglist.colRef("dispdiagcd"))= dispdiagcd;
  964. grd_diaglist.valueMatrix(grd_diaglist.row, grd_diaglist.colRef("diagengnm")) = diagnm;
  965. grd_diaglist.addRow(false, true);
  966. model.recalculate();
  967. }
  968. /**
  969. * @desc : 수술예약정보 저장시 데이터 무결성 검사 및 진단코드 설정
  970. * @
  971. * @param :
  972. * @return :
  973. * @author : 오지훈
  974. * @---------------------------------------------------
  975. */
  976. function fChkSaveOpRsrvValid(){
  977. var pid = model.getValue(sOPRSRVINFO_PATH + "/pid");
  978. var opcd = model.getValue(sOPRSRVINFO_PATH + "/opcd");
  979. var oproomcd = model.getValue(sOPRSRVINFO_PATH + "/oproomcd");
  980. var opfromtmcd = model.getValue(sOPRSRVINFO_PATH + "/opfromtmcd");
  981. var opendtmcd = model.getValue(sOPRSRVINFO_PATH + "/opendtmcd");
  982. var anstreqflag= model.getValue(sOPRSRVINFO_PATH + "/anstreqflag");
  983. var opposturecd= model.getValue(sOPRSRVINFO_PATH + "/opposturecd");
  984. var opdirecflag= model.getValue(sOPRSRVINFO_PATH + "/opdirecflag");
  985. var anstmthdcd = model.getValue(sOPRSRVINFO_PATH + "/anstmthdcd");
  986. var opflagcd = model.getValue(sOPRSRVINFO_PATH + "/opflagcd");
  987. var opschedd = model.getValue(sOPRSRVINFO_PATH + "/opschedd");
  988. var oppatflagcd= model.getValue(sOPRSRVINFO_PATH + "/oppatflagcd");
  989. var opcntmdg = model.getValue(sOPRSRVINFO_PATH + "/opcntmdg");
  990. var cnstopflag = model.getValue(sOPRSRVINFO_PATH + "/cnstopflag"); //2008.08.25 LWS 협진의뢰여부 체크위한 추가
  991. var hopetmflag = model.getValue(sOPRSRVINFO_PATH + "/hopetmflag");
  992. var cntctel = model.getValue(sOPRSRVINFO_PATH + "/cntctel"); //2010.03.19 JJE 작성자 연락처 필수 요청(요청번호:12222)
  993. var totrow = grd_diaglist.rows;
  994. if(opschedd == ""){
  995. messageBox("수술예정일자를 ", "C001");
  996. return;
  997. }
  998. if(pid == ""){
  999. messageBox("등록번호를 ", "C001");
  1000. return false;
  1001. }
  1002. if(oppatflagcd == ""){
  1003. messageBox("수술환자구분을", "C001");
  1004. return false;
  1005. }
  1006. if(opflagcd == "") {
  1007. messageBox("수술구분을", "C001");
  1008. return;
  1009. }
  1010. if(opflagcd == 1){ //정규인 경우, 수술방 입력은 필수(응급, 추가인 경우 수술방 입력 삭제)
  1011. if(cmb_oproomcd.label == "" ||cmb_oproomcd.value == "0000" ||cmb_oproomcd.value == "2222"){
  1012. messageBox("정규수술은 수술방", "I003");
  1013. return false;
  1014. }
  1015. if(opfromtmcd == "" || opendtmcd == ""){ //정규인 경우에만 수술시간 입력을 검사한다.
  1016. messageBox("수술시간을", "C001");
  1017. return false;
  1018. }
  1019. if(fCheckValidTime("/root/main/oprsrvinfo/oprsrvinfo") == false) { //입력된 시간이 유효한지 check
  1020. return false;
  1021. }
  1022. }
  1023. if(cnstopflag == "N" && hopetmflag != "4") { //2008.08.25 LWS 협진의뢰시 응급, 추가인경우 수술방정보가 있어도 인증저장 가능하도록
  1024. // 2008.10.13 특정시간 입력의 경우도 제외처리
  1025. if(opflagcd == 2 || opflagcd == 3){ //응급, 추가인 경우
  1026. if(cmb_oproomcd.value != "") {
  1027. if(cmb_oproomcd.value != "0000" && cmb_oproomcd.value != "2222"){
  1028. messageBox("응급, 추가 수술은 수술방을 선택", "E001");
  1029. return false;
  1030. }
  1031. }
  1032. /*if(cmb_oproomcd.value == ""){
  1033. messageBox("응급, 추가 수술은 소요시간을 설정", "I008");
  1034. return false;
  1035. }*/
  1036. if(opfromtmcd != "000000" || opendtmcd != "000000") {
  1037. if(opfromtmcd != "" || opendtmcd != ""){
  1038. messageBox("응급, 추가 수술은 수술시간을 입력", "E001");
  1039. return false;
  1040. }
  1041. }
  1042. }
  1043. }
  1044. // 2008-08-28 LWS 마취의뢰만인 경우도 무결성 검사하도록
  1045. // if(anstreqflag == "Y"){ //마취의뢰만인 경우, 이후의 데이터 무결성 검사를 하지 않는다.
  1046. // return true;
  1047. // }
  1048. if(totrow < 3){
  1049. messageBox("수술전 진단을", "C001");
  1050. return false;
  1051. }
  1052. if(opcd == ""){
  1053. messageBox("수술코드 및 수술명을", "C001");
  1054. return false;
  1055. }
  1056. if(opposturecd == ""){
  1057. messageBox("수술체위를", "C001");
  1058. return false;
  1059. }
  1060. if(opdirecflag == ""){
  1061. messageBox("수술위치(left, right, both)를", "C001");
  1062. return false;
  1063. }
  1064. if(anstmthdcd == ""){
  1065. messageBox("마취방법을", "C001");
  1066. return false;
  1067. }
  1068. if(opcntmdg == 0 || opcntmdg == "") {
  1069. messageBox("수술창상을", "C001");
  1070. return false;
  1071. }
  1072. if( isNull(cntctel) || getStringLength(cntctel) < 3 ){
  1073. messageBox("작성자 연락처는 3자리 이상", "C001");
  1074. return false;
  1075. }
  1076. return true;
  1077. }
  1078. /**
  1079. * @desc : 입원환자 원무, 환자구분, 상단정보 설정
  1080. * @
  1081. * @param :
  1082. * @return :
  1083. * @author : 이윤정
  1084. * @---------------------------------------------------
  1085. */
  1086. function fReqInPatTopInfo(){
  1087. if(submit("TRMMO04302")){
  1088. var paminfonode = model.instance1.selectNodes("/root/hidden/topinfo/inpatpaminfo");
  1089. var patflagnode = model.instance1.selectNodes("/root/hidden/topinfo/inpatflaginfo");
  1090. var maintopnode = model.instance1.selectNodes("/root/hidden/topinfo/patmaintopinfo");
  1091. model.copyNode("/root/paminfo/list", "/root/hidden/topinfo/inpatpaminfo");
  1092. model.copyNode("/root/patflag/list", "/root/hidden/topinfo/inpatflaginfo");
  1093. if(paminfonode.length < 1){
  1094. messageBox("입원환자 원무 정보가", "I004");
  1095. return false;
  1096. }
  1097. if(patflagnode.length < 1){
  1098. messageBox("입원환자 환자구분 정보가", "I004");
  1099. return false;
  1100. }
  1101. if(maintopnode.length < 1){
  1102. messageBox("입원환자 기본 정보가", "I004");
  1103. return false;
  1104. }
  1105. }
  1106. return true;
  1107. }
  1108. /**
  1109. * @desc : 외래환자 원무, 환자구분, 상단정보 설정
  1110. * @
  1111. * @param :
  1112. * @return :
  1113. * @author : 이윤정
  1114. * @---------------------------------------------------
  1115. */
  1116. function fReqOutPatTopInfo(){
  1117. if(submit("TRMMO04202")){
  1118. var paminfonode = model.instance1.selectNodes("/root/hidden/topinfo/outpatpaminfo");
  1119. var patflagnode = model.instance1.selectNodes("/root/hidden/topinfo/outpatflaginfo");
  1120. var maintopnode = model.instance1.selectNodes("/root/hidden/topinfo/patmaintopinfo");
  1121. model.copyNode("/root/paminfo/list", "/root/hidden/topinfo/outpatpaminfo");
  1122. model.copyNode("/root/patflag/list", "/root/hidden/topinfo/outpatflaginfo");
  1123. if(paminfonode.length < 1){
  1124. messageBox("외래환자 원무 정보가", "I004");
  1125. return false;
  1126. }
  1127. if(patflagnode.length < 1){
  1128. messageBox("외래환자 환자구분 정보가", "I004");
  1129. return false;
  1130. }
  1131. if(maintopnode.length < 1){
  1132. messageBox("외래환자 기본 정보가", "I004");
  1133. return false;
  1134. }
  1135. }
  1136. return true;
  1137. }
  1138. /**
  1139. * @desc : 응급환자 상단정보 조회조건 설정
  1140. * @
  1141. * @param :
  1142. * @return :
  1143. * @author : 이윤정
  1144. * @---------------------------------------------------
  1145. */
  1146. function fReqERPatTopInfo(){
  1147. if(submit("TRMMO04302")){
  1148. var paminfonode = model.instance1.selectNodes("/root/hidden/topinfo/inpatpaminfo");
  1149. var patflagnode = model.instance1.selectNodes("/root/hidden/topinfo/inpatflaginfo");
  1150. var maintopnode = model.instance1.selectNodes("/root/hidden/topinfo/patmaintopinfo");
  1151. model.copyNode("/root/paminfo/list", "/root/hidden/topinfo/inpatpaminfo");
  1152. model.copyNode("/root/patflag/list", "/root/hidden/topinfo/inpatflaginfo");
  1153. if(paminfonode.length < 1){
  1154. messageBox("응급환자 원무 정보가", "I004");
  1155. return false;
  1156. }
  1157. if(patflagnode.length < 1){
  1158. messageBox("응급환자 환자구분 정보가", "I004");
  1159. return false;
  1160. }
  1161. if(maintopnode.length < 1){
  1162. messageBox("응급환자 기본 정보가", "I004");
  1163. return false;
  1164. }
  1165. }
  1166. return true;
  1167. }
  1168. /**
  1169. * @desc : 환자 수진정보 조회
  1170. * @
  1171. * @param :
  1172. * @return :
  1173. * @author : 오지훈
  1174. * @---------------------------------------------------
  1175. */
  1176. function fReqPatOrdInfo(){
  1177. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/reopflag", "");
  1178. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/anstreqflag", "");
  1179. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/cnstopflag", "");
  1180. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/painlessflag", "");
  1181. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/angioflag", "");
  1182. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/robotopflag", "");
  1183. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/cancerflag", "");
  1184. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/laparoflag", "");
  1185. var pid = model.getValue(sOPRSRVINFO_PATH + "/pid");
  1186. if(pid == ""){
  1187. messageBox("환자의 등록번호를 ", "C001");
  1188. return;
  1189. }
  1190. model.removeNodeset("/root/send/reqdata");
  1191. /*
  1192. model.makeValue("/root/send/reqdata/cond1", "1"); //1은 등록번호, 2는 환자명
  1193. model.makeValue("/root/send/reqdata/cond2", pid); //등록번호
  1194. model.makeValue("/root/send/reqdata/cond3", getUserInfo("dutplceinstcd"));
  1195. model.makeValue("/root/send/reqdata/cond4", "N"); //원무키 기준여부
  1196. model.makeValue("/root/send/reqdata/cond5", "N"); //당일기준 조회여부
  1197. model.makeValue("/root/send/reqdata/cond6", "-"); //외래,입원테이블 기준
  1198. */
  1199. model.makeValue("/root/send/reqdata/pid", pid); //외래,입원테이블 기준
  1200. model.makeValue("/root/send/reqdata/confdd", getCurrentDate()); //외래,입원테이블 기준
  1201. if(submit("TRMMO00215") == true){
  1202. // 2008.11.18 주석
  1203. /*var nodecnt = getNodeSetCnt(sPATORDINFOLIST_PATH)
  1204. if(nodecnt > 1){
  1205. var xpt = window.screenleft + 50;
  1206. var ypt = window.screenTop + 80;
  1207. var coord = getRelativeCoordinate(xpt, ypt);
  1208. var mon = coord[0];
  1209. xpt = coord[1];
  1210. ypt = coord[2];
  1211. modal("SPMMO09100", mon, xpt, ypt, "patordinfo", "/root/patordinfo", "/root/patordinfo", "", false );
  1212. param = getParameter("SPMMO09100_rtn_param");
  1213. if(param.length > 0){
  1214. model.removeNodeset(sPATORDINFOLIST_PATH);
  1215. setCSVToNode("/root/patordinfo", param, "patordinfolist");
  1216. }
  1217. }*/
  1218. // 2008.11.18 로그인 의사 진료과의 최근 수진 이력을 선택한 상태
  1219. //sortNodeList("/root/patordinfo/patordinfolist", "orddd", "desc"); // 20090630 수진이력이 많은 경우 정렬하는데 시간이 너무 많이 걸려서 브라우저가 죽는 경우가 있음
  1220. // 쿼리에서 정렬한 결과를 가지고 오는 것으로 변경
  1221. var patlist = model.instance1.selectNodes("/root/patordinfo/patordinfolist[orddeptcd = " + getUserInfo("dutplcecd") + "and orddd <="+ getCurrentDate() +"]");
  1222. if(patlist.length > 0) {
  1223. var ioflag = patlist.item(0).selectSingleNode("ioflag").text;
  1224. var pid = patlist.item(0).selectSingleNode("pid").text;
  1225. var orddd = patlist.item(0).selectSingleNode("orddd").text;
  1226. var cretno = patlist.item(0).selectSingleNode("cretno").text;
  1227. var instcd = patlist.item(0).selectSingleNode("instcd").text;
  1228. var dschdd = patlist.item(0).selectSingleNode("dschdd").text;
  1229. if (dschdd == "99991231") {
  1230. var srchdd = getCurrentDate();
  1231. } else {
  1232. var srchdd = dschdd;
  1233. }
  1234. } else{ // 해당 진료과에 수진이력이 없을 경우 가장 최근 내원이력으로 조회하도록 로직 수정 : 2009.06.30 김영학
  1235. patlist = model.instance1.selectNodes("/root/patordinfo/patordinfolist[orddd <="+ getCurrentDate() +"]");
  1236. if(patlist.length > 0) {
  1237. var ioflag = patlist.item(0).selectSingleNode("ioflag").text;
  1238. var pid = patlist.item(0).selectSingleNode("pid").text;
  1239. var orddd = patlist.item(0).selectSingleNode("orddd").text;
  1240. var cretno = patlist.item(0).selectSingleNode("cretno").text;
  1241. var instcd = patlist.item(0).selectSingleNode("instcd").text;
  1242. var dschdd = patlist.item(0).selectSingleNode("dschdd").text;
  1243. if (dschdd == "99991231") {
  1244. var srchdd = getCurrentDate();
  1245. } else {
  1246. var srchdd = dschdd;
  1247. }
  1248. } else {
  1249. messageBox("환자번호를 확인하세요", "I");
  1250. return;
  1251. }
  1252. }
  1253. // (e)
  1254. // 2008.11.18 주석
  1255. /*
  1256. var ioflag = model.getValue(sPATORDINFOLIST_PATH + "/ioflag");
  1257. var pid = model.getValue(sPATORDINFOLIST_PATH + "/pid");
  1258. var orddd = model.getValue(sPATORDINFOLIST_PATH + "/orddd");
  1259. var cretno = model.getValue(sPATORDINFOLIST_PATH + "/cretno");
  1260. var instcd = model.getValue(sPATORDINFOLIST_PATH + "/instcd");*/
  1261. /*
  1262. model.removeNodeset("/root/send/reqdata");
  1263. model.makeValue("/root/send/reqdata/pid", pid);
  1264. model.makeValue("/root/send/reqdata/orddd", orddd);
  1265. model.makeValue("/root/send/reqdata/cretno", cretno);
  1266. // 조회조건에서 srchdd를 구할 수 있으므로 주석처리 20090630 김영학
  1267. // 2008.10.31 등록번호 검색으로 의뢰시 상단 UP 조건 icdr.fromdd
  1268. if(submit("TRMMO00210")) {
  1269. var srchdd = model.getValue("/root/main/topinfo/topinfo/fromdd");
  1270. }
  1271. // (e)
  1272. */
  1273. //수술 예약정보 입력시 연동되는 상단과 진료기록, 처방 창 환자 정보가 상이한 오류가 발생하여 상단 연동 기능을 제외한다.
  1274. //김민선 선생님 요청 20100614 by LYJ
  1275. model.makeValue("/root/send/reqdata/pid" , pid); //등록번호
  1276. model.makeValue("/root/send/reqdata/orddd" , orddd); //입원일자
  1277. model.makeValue("/root/send/reqdata/cretno" , cretno); //생성번호
  1278. model.makeValue("/root/send/reqdata/instcd" , instcd); //기관코드
  1279. if(ioflag == "I" || ioflag == "D"){
  1280. model.makeValue("/root/send/reqdata/srchdd" , srchdd); //조회일자
  1281. model.makeValue("/root/send/reqdata/ioflag" , "I");
  1282. fReqInPatTopInfo();
  1283. //var param = "I" + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd + "▦" + srchdd;
  1284. } else if(ioflag == "E") {
  1285. model.makeValue("/root/send/reqdata/srchdd", srchdd); //조회일자
  1286. model.makeValue("/root/send/reqdata/ioflag" , "E");
  1287. fReqERPatTopInfo();
  1288. //var param = "E" + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd + "▦"+ srchdd ;
  1289. }else{
  1290. model.makeValue("/root/send/reqdata/ioflag" , "O");
  1291. fReqOutPatTopInfo();
  1292. // var param = "O" + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd;
  1293. }
  1294. fInitPamInfo(); //화면 기본 정보 설정
  1295. grd_diaglist.addRow();
  1296. /*
  1297. setParameter("condparam", param);
  1298. modal("SPMMO08900", 1, "", "", "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  1299. var useyn = getParameter("SPMMO08900_rtn_useyn");
  1300. if(useyn == "Y"){
  1301. setParameter("SPMMO08900_rtn_useyn", "");
  1302. fInitPamInfo
  1303. grd_diaglist.addRow();
  1304. }else{
  1305. return;
  1306. }*/
  1307. //DRG 환자정보 조회 2013.05.21 KJS
  1308. var workdd = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/opschedd");
  1309. if (workdd == "" || workdd == null) {
  1310. workdd = getCurrentDate();
  1311. }
  1312. model.makeValue("/root/send/reqdata/pid" , model.getValue("/root/main/oprsrvinfo/oprsrvinfo/pid"));
  1313. model.makeValue("/root/send/reqdata/workdd" , workdd);
  1314. if (submit("TRMMO00218")) {
  1315. model.makeValue("/root/main/oprsrvinfo/oprsrvinfo/drgyn", model.getValue("/root/main/drginfo/drgyn"));
  1316. model.makeValue("/root/main/oprsrvinfo/oprsrvinfo/drgno", model.getValue("/root/main/drginfo/drgno"));
  1317. model.makeValue("/root/main/oprsrvinfo/oprsrvinfo/drgnm", model.getValue("/root/main/drginfo/drgnm"));
  1318. model.refresh();
  1319. var drgyn = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/drgyn");
  1320. if (drgyn != null && drgyn != "" && drgyn == "A"){
  1321. btn_drgmod.disabled = false;
  1322. } else {
  1323. btn_drgmod.disabled = true;
  1324. }
  1325. }
  1326. }
  1327. }
  1328. /**
  1329. * @desc : 신규버튼 클릭
  1330. * @
  1331. * @param :
  1332. * @return :
  1333. * @author : 오지훈
  1334. * @---------------------------------------------------
  1335. */
  1336. function fClkBtnNew(){
  1337. model.resetInstanceNode(sOPRSRVINFO_PATH);
  1338. model.removeNodeset(sDIAGCDLIST_PATH);
  1339. /*var paminfo = getGlobalVariable("paminfo");
  1340. if(paminfo.length < 1){
  1341. messaegeBox("환자의 상단정보가", "I004");
  1342. return;
  1343. }*/
  1344. fInitPamInfo("Y");
  1345. model.setValue(sOPRSRVINFO_PATH + "/reopflag" , "N"); //수술공개
  1346. //model.setValue(sOPRSRVINFO_PATH + "/opflagcd" , "1"); //수술구분
  1347. model.setValue(sOPRSRVINFO_PATH + "/opopenflag" , "Y"); //금일재수술
  1348. model.setValue(sOPRSRVINFO_PATH + "/anstreqflag", "N"); //마취의뢰만
  1349. model.setValue(sOPRSRVINFO_PATH + "/cnstopflag" , "N"); //협진의뢰여부
  1350. //model.setValue(sOPRSRVINFO_PATH + "/oppatflagcd", "D"); //수술환자구분
  1351. grd_diaglist.addRow(false, true);
  1352. if(rdo_opflag.disabled) { // 무통
  1353. fClkUnpainFlag("N");
  1354. }
  1355. fGetReqrcntctel(); //연락처정보 셋팅 추가 요청 (2010.03.19 JJE)
  1356. model.recalculate();
  1357. model.refresh();
  1358. }
  1359. /**
  1360. * @desc : 예약취소
  1361. * @
  1362. * @param :
  1363. * @return :
  1364. * @author : 오지훈
  1365. * @---------------------------------------------------
  1366. */
  1367. function fCnclRsrv(){
  1368. group1.attribute("visibility") = "visible";
  1369. btn_new.disabled = true;
  1370. btn_rsrvcncl.disabled = true;
  1371. btn_rsrvcncl.disabled = true;
  1372. btn_tempsave.disabled = true;
  1373. model.setFocus("cmb_inrsrvcnclresn");
  1374. model.refresh();
  1375. }
  1376. /**
  1377. * @desc : 환자 현재 진단 조회 (진단구분코드:M)
  1378. * @
  1379. * @param :
  1380. * @return :
  1381. * @author : 오지훈
  1382. * @---------------------------------------------------
  1383. */
  1384. function fReqPatCurrentDiagList(pid, orddd, orddeptcd, ioflag){
  1385. model.removeNodeset("/root/send/reqdata");
  1386. model.removeNodeset("/root/main/diaglist");
  1387. model.makeNode("/root/main/diaglist");
  1388. model.makeValue("/root/send/reqdata/pid" , pid);
  1389. model.makeValue("/root/send/reqdata/orddd" , orddd);
  1390. model.makeValue("/root/send/reqdata/orddeptcd" , orddeptcd);
  1391. model.makeValue("/root/send/reqdata/ioflag" , ioflag);
  1392. model.makeValue("/root/send/reqdata/diagkindcdflag", "");
  1393. if(submit("TRMMO00114")== true){
  1394. var xmlNode = model.instance1.selectSingleNode("/root/main/diaginfo/diagcdlist");
  1395. if(xmlNode != null){
  1396. var grdRow = grd_diaglist.row;
  1397. var totcnt = getNodeSetCnt("/root/main/diaginfo/diagcdlist");
  1398. for(var currow = 1 ; currow <= totcnt ; currow++){
  1399. var dispdiagcd = model.getValue("/root/main/diaginfo/diagcdlist[" + currow + "]/icd10cd");
  1400. var diagcd = model.getValue("/root/main/diaginfo/diagcdlist[" + currow + "]/diagcd");
  1401. var diagengnm = model.getValue("/root/main/diaginfo/diagcdlist[" + currow + "]/diagengnm");
  1402. var diaghngnm = model.getValue("/root/main/diaginfo/diagcdlist[" + currow + "]/diaghngnm");
  1403. if(grdRow == -1) grd_diaglist.addRow(false, true);
  1404. model.setValue(sDIAGCDLIST_PATH + "[" + grd_diaglist.row + "]/status" , "i");
  1405. model.setValue(sDIAGCDLIST_PATH + "[" + grd_diaglist.row + "]/dispdiagcd", dispdiagcd);
  1406. model.setValue(sDIAGCDLIST_PATH + "[" + grd_diaglist.row + "]/diagcd" , diagcd);
  1407. model.setValue(sDIAGCDLIST_PATH + "[" + grd_diaglist.row + "]/diagengnm" , diagengnm);
  1408. model.setValue(sDIAGCDLIST_PATH + "[" + grd_diaglist.row + "]/diaghngnm" , diaghngnm);
  1409. if(grdRow != -1) grd_diaglist.addRow(false, true);
  1410. }
  1411. }
  1412. }
  1413. model.recalculate();
  1414. model.refresh();
  1415. }
  1416. /**
  1417. * @desc : 협진의뢰 여부 bool 클릭시
  1418. * @
  1419. * @param :
  1420. * @return :
  1421. * @author : 오지훈
  1422. * @---------------------------------------------------
  1423. */
  1424. function fClkBoolCnstOpFlag(){
  1425. var cnstopflag = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/cnstopflag");
  1426. if(cnstopflag == "Y"){ //협진의뢰여부가 선택된 경우
  1427. var pid = model.getValue(sOPRSRVINFO_PATH + "/pid");
  1428. var opschedd = model.getValue(sOPRSRVINFO_PATH + "/opschedd");
  1429. var oprsrvno = model.getValue(sOPRSRVINFO_PATH + "/oprsrvno");
  1430. var ophistno = model.getValue(sOPRSRVINFO_PATH + "/ophistno");
  1431. var perfdeptcd = model.getValue(sOPRSRVINFO_PATH + "/perfdeptcd");
  1432. var perfdrid = model.getValue(sOPRSRVINFO_PATH + "/perfdrid");
  1433. //초기화
  1434. clearParameter("SPMMO11100_rtn_param_opschedd");
  1435. clearParameter("SPMMO11100_rtn_param_oprsrvno");
  1436. clearParameter("SPMMO11100_rtn_param_opfromtmcd");
  1437. clearParameter("SPMMO11100_rtn_param_opendtmcd");
  1438. clearParameter("SPMMO11100_rtn_param_opusetm");
  1439. clearParameter("SPMMO11100_rtn_param_oproomcd");
  1440. clearParameter("SPMMO11100_rtn_param_cnstopflag");
  1441. var param = pid + "▦" + opschedd + "▦" + "cnst" + "▦" + oprsrvno + "▦" + ophistno + "▦" + perfdeptcd + "▦" + perfdrid + "▦" + cnstopflag ;
  1442. setParameter("SPMMO11100_param", param);
  1443. modal("SPMMO11100");
  1444. var popschedd = getParameter("SPMMO11100_rtn_param_opschedd"); //수술예정일자
  1445. var poprsrvno = getParameter("SPMMO11100_rtn_param_oprsrvno"); //수술예약번호
  1446. var popfromtmcd = getParameter("SPMMO11100_rtn_param_opfromtmcd"); //수술예약번호
  1447. var popendtmcd = getParameter("SPMMO11100_rtn_param_opendtmcd"); //수술예약번호
  1448. var popusetm = getParameter("SPMMO11100_rtn_param_opusetm"); //수술예약번호
  1449. var poproomcd = getParameter("SPMMO11100_rtn_param_oproomcd"); //수술예약번호
  1450. var cnstopflag = getParameter("SPMMO11100_rtn_param_cnstopflag"); //협진여부
  1451. if(poprsrvno.length > 1){
  1452. //model.removeNodeset("/root/main/diaglist");
  1453. model.resetInstanceNode("/root/main/diaglist");
  1454. model.setValue(sOPRSRVINFO_PATH + "/opschedd", popschedd);
  1455. model.setValue(sOPRSRVINFO_PATH + "/mainoprsrvno", poprsrvno);
  1456. model.setValue(sOPRSRVINFO_PATH + "/opfromtmcd", popfromtmcd);
  1457. model.setValue(sOPRSRVINFO_PATH + "/opendtmcd", popendtmcd);
  1458. model.setValue(sOPRSRVINFO_PATH + "/opusetm", popusetm);
  1459. model.setValue(sOPRSRVINFO_PATH + "/oproomcd", poproomcd);
  1460. model.setValue(sOPRSRVINFO_PATH + "/status", "i");
  1461. model.setValue(sOPRSRVINFO_PATH + "/oprsrvno", "");
  1462. var cnts = getNodesetCount("/root/main/diaglist/diaglist");
  1463. if (cnts > 1 ) {
  1464. model.removeNodeset("/root/main/diaglist");
  1465. }
  1466. grd_diaglist.addRow(false, true);
  1467. grd_diaglist.rebuild();
  1468. model.refresh();
  1469. }else{
  1470. //부수술을 먼저 입력할 수 있도록 주석처리. 09.02.04
  1471. model.setValue(sOPRSRVINFO_PATH + "/cnstopflag", cnstopflag);
  1472. model.refresh();
  1473. }
  1474. }else if(cnstopflag == "N"){ //협진의뢰여부가 취소된 경우
  1475. var mainoprsrvno = model.getValue(sOPRSRVINFO_PATH + "/oprsrvno");
  1476. model.setValue(sOPRSRVINFO_PATH + "/mainoprsrvno", mainoprsrvno);
  1477. model.setValue(sOPRSRVINFO_PATH + "/opschedd", "");
  1478. model.setValue(sOPRSRVINFO_PATH + "/oproomcd", "");
  1479. model.setValue(sOPRSRVINFO_PATH + "/opfromtmcd", "");
  1480. model.setValue(sOPRSRVINFO_PATH + "/opendtmcd", "");
  1481. model.setValue(sOPRSRVINFO_PATH + "/opusetm", "");
  1482. model.refresh();
  1483. }
  1484. }
  1485. /**
  1486. * @desc : 마취의뢰 여부 bool 클릭시
  1487. * @
  1488. * @param :
  1489. * @return :
  1490. * @author : 오지훈
  1491. * @---------------------------------------------------
  1492. */
  1493. function fClkBoolAnstReqFlag(){
  1494. var anstreqflag = model.getValue(sOPRSRVINFO_PATH + "/anstreqflag");
  1495. if(anstreqflag == "Y"){ //마취의뢰만 선택된 경우
  1496. fSetInptDisabled("Y");
  1497. //model.setValue(sOPRSRVINFO_PATH + "/opcd", "0");
  1498. }else if(anstreqflag == "N"){ //마취의뢰만 취소된 경우
  1499. fSetInptDisabled("N");
  1500. //model.setValue(sOPRSRVINFO_PATH + "/opcd", "");
  1501. }
  1502. model.refresh();
  1503. }
  1504. /**
  1505. * @desc : 수술예약정보 input box disabled 설정
  1506. * @
  1507. * @param :
  1508. * @return :
  1509. * @author : 오지훈
  1510. * @---------------------------------------------------
  1511. */
  1512. function fSetInptDisabled(bFlag){
  1513. if(bFlag == "Y"){
  1514. //model.removeNodeset(sDIAGCDLIST_PATH);
  1515. var bval = true;
  1516. cmb_oproomcd.value = "";
  1517. rdo_oppatflag.value = "";
  1518. cmb_opfromtmcd.value = "";
  1519. cmb_opendtmcd.value = "";
  1520. //ipt_opcd.value = "0";
  1521. //ipt_opnm.value = "";
  1522. ipt_subopcd.value = "";
  1523. ipt_subopnm.value = "";
  1524. cmb_opposture.value = "";
  1525. cmb_opdirecflag.value = "";
  1526. //cmb_oppartcd.value = "";
  1527. cmb_anstmthd.value = "";
  1528. ipt_delivefact.value = "";
  1529. cmb_opcnfmdg.value = "";
  1530. }else if(bFlag == "N"){
  1531. var bval = false;
  1532. grd_diaglist.addRow(false, true);
  1533. }else{
  1534. var bval = false;
  1535. }
  1536. //rdo_oppatflag.disabled = bval;
  1537. //cmb_opfromtmcd.disabled = bval;
  1538. //cmb_opendtmcd.disabled = bval;
  1539. ipt_opcd.disabled = bval;
  1540. ipt_opnm.disabled = bval;
  1541. ipt_subopcd.disabled = bval;
  1542. ipt_subopnm.disabled = bval;
  1543. cmb_opposture.disabled = bval;
  1544. cmb_opdirecflag.disabled = bval;
  1545. //cmb_oppartcd.disabled = bval;
  1546. cmb_anstmthd.disabled = bval;
  1547. ipt_delivefact.disabled = bval;
  1548. cmb_opcnfmdg.disabled = bval;
  1549. //button61.disabled = bval;
  1550. //button5.disabled = bval;
  1551. model.recalculate();
  1552. model.refresh();
  1553. }
  1554. /**
  1555. * @desc : 수술예약정보 리스트 조회
  1556. * @
  1557. * @param :
  1558. * @return :
  1559. * @author : 오지훈
  1560. * @---------------------------------------------------
  1561. */
  1562. function fReqOpRsrvInfoList(){
  1563. // 2008.01.30 외래메인 간호에서 띄우는 경우
  1564. if(!isNull(opener.javascript.getParameter("SMMNO00100_opschedd"))) {
  1565. model.setValue("/root/main/cond/opschedd", opener.javascript.getParameter("SMMNO00100_opschedd"));
  1566. model.setValue("/root/main/cond/pid", opener.javascript.getParameter("SMMNO00100_pid"));
  1567. model.setValue("/root/main/cond/qflag", "3");
  1568. }
  1569. // (e)
  1570. model.removeNodeset("/root/send/reqdata");
  1571. model.makeNode ( "/root/send/reqdata" );
  1572. model.copyNode("/root/send/reqdata", "/root/main/cond");
  1573. if(submit("TRMMO00201")){
  1574. var qflag = model.getValue("/root/main/cond/qflag"); //파라미터를 받아서 조회하는 경우
  1575. if(qflag == 3){
  1576. if(grd_oprsrvlist.rows > 1){
  1577. fClkGrdOpRsrvList(1);
  1578. //파라미터를 받아서 조회하는 경우, 저장 버튼을 모두 disabled한다.
  1579. rdo_oppatflag.disabled = true;
  1580. ipt_opcd.disabled = true;
  1581. ipt_opnm.disabled = true;
  1582. ipt_subopcd.disabled = true;
  1583. ipt_subopnm.disabled = true;
  1584. cmb_opposture.disabled = true;
  1585. cmb_opdirecflag.disabled = true;
  1586. cmb_anstmthd.disabled = true;
  1587. ipt_delivefact.disabled = true;
  1588. cmb_opcnfmdg.disabled = true;
  1589. btn_new.disabled = true;
  1590. btn_tempsave.disabled = true;
  1591. btn_certsave.disabled = true;
  1592. btn_rsrvcncl.disabled = true;
  1593. model.refresh();
  1594. }
  1595. }
  1596. fDispAprvCnclChng();
  1597. // 2008.01.30 외래메인 간호에서 띄우는 경우
  1598. if(!isNull(opener.javascript.getParameter("SMMNO00100_pid"))) {
  1599. var nodeList = instance1.selectNodes(sOPRSRVLIST_PATH);
  1600. fClkGrdOpRsrvList(1);
  1601. clearParameter("SMMNO00100_opschedd");
  1602. clearParameter("SMMNO00100_pid");
  1603. }
  1604. // (e)
  1605. }
  1606. }
  1607. /**
  1608. * @desc : 입원의뢰화면 open
  1609. * @
  1610. * @param :
  1611. * @return :
  1612. * @author : 오지훈
  1613. * @---------------------------------------------------
  1614. */
  1615. function fClkBtnInReqWnd(){
  1616. var insukind = model.getValue(sOPRSRVINFO_PATH + "/insukind");
  1617. var suppkind = model.getValue(sOPRSRVINFO_PATH + "/suppkind");
  1618. if(insukind == ""){
  1619. messageBox("입원의뢰서를 등록하려면 현재 환자를 진료대상자 또는 스케줄현황 화면에서", "C002");
  1620. return;
  1621. }
  1622. if(suppkind == ""){
  1623. messageBox("입원의뢰서를 등록하려면 현재 환자를 진료대상자 또는 스케줄현황 화면에서", "C002");
  1624. return;
  1625. }
  1626. modal("SPMMO00100");
  1627. }
  1628. /**
  1629. * @desc : 과거의뢰내역 버튼 클릭
  1630. * @
  1631. * @param :
  1632. * @return :
  1633. * @author : 오지훈
  1634. * @---------------------------------------------------
  1635. */
  1636. function fClkBtnCnstPastHist(){
  1637. var pid = model.getValue(sOPRSRVINFO_PATH + "/pid");
  1638. var opschedd = model.getValue(sOPRSRVINFO_PATH + "/opschedd");
  1639. var oprsrvno = model.getValue(sOPRSRVINFO_PATH + "/oprsrvno");
  1640. var ophistno = model.getValue(sOPRSRVINFO_PATH + "/ophistno");
  1641. var param = pid + "▦" + opschedd + "▦" + "past" + "▦" + oprsrvno + "▦" + ophistno;
  1642. setParameter("SPMMO11100_param", param);
  1643. modal("SPMMO11100");
  1644. }
  1645. /**
  1646. * @desc : 취소변경 버튼 클릭
  1647. * @
  1648. * @param :
  1649. * @return :
  1650. * @author : 오지훈
  1651. * @---------------------------------------------------
  1652. */
  1653. function fClkCnfmCncl(){
  1654. var rtnval = 6; //승인요청 대기중이 아니더라도 취소변경 flow는 흘러가도록 rtnval값을 예로 설정
  1655. var currow = grd_oprsrvlist.row
  1656. if(currow < 1){
  1657. return;
  1658. }
  1659. var opstatcd = model.getValue(sOPRSRVINFO_PATH + "/opstatcd");
  1660. var aprvreqno = model.getValue(sOPRSRVLIST_PATH + "[" + currow + "]/aprvreqno");
  1661. var reqrsncd = model.getValue(sOPRSRVINFO_PATH + "/reqrsncd");
  1662. if(opstatcd < 20){
  1663. if(reqrsncd == "314" || reqrsncd == "315") { // [요청번호: 847] 취소변경 사유(수술일자 변경)일 경우 블로킹 by 박영우 2010.07.09
  1664. messageBox("수술일 변경요청된 스케줄입니다. 마취과 승인 이전 의뢰취소 또는 취소변경은 불가합니다.", "E");
  1665. } else {
  1666. messageBox("의뢰 중인 수술예약은 취소 요청을", "E001");
  1667. }
  1668. return;
  1669. }
  1670. if(aprvreqno != 0){
  1671. rtnval = messageBox("승인 요청 대기 중인 수술예약 정보입니다. 확정취소 변경을", "Q003");
  1672. }
  1673. if(rtnval == 6){
  1674. setParameter("SPMMO05800_param_pid" , model.getValue("/root/main/oprsrvinfo/oprsrvinfo/pid"));
  1675. setParameter("SPMMO05800_param_oprsrvno" , model.getValue("/root/main/oprsrvinfo/oprsrvinfo/oprsrvno"));
  1676. setParameter("SPMMO05800_param_ophistno" , model.getValue("/root/main/oprsrvinfo/oprsrvinfo/ophistno"));
  1677. setParameter("SPMMO05800_param_aprvreqno", model.getValue("/root/main/oprsrvinfo/oprsrvinfo/aprvreqno"));
  1678. var opschedd = model.getValue(sOPRSRVINFO_PATH + "/opschedd");
  1679. var opfromtmcd= model.getValue(sOPRSRVINFO_PATH + "/opfromtmcd");
  1680. var opendtmcd = model.getValue(sOPRSRVINFO_PATH + "/opendtmcd");
  1681. var oproomcd = model.getValue(sOPRSRVINFO_PATH + "/oproomcd");
  1682. var opcd = model.getValue(sOPRSRVINFO_PATH + "/opcd");
  1683. var opnm = model.getValue(sOPRSRVINFO_PATH + "/opnm");
  1684. var diagcd = model.getValue(sOPRSRVINFO_PATH + "/diagcd");
  1685. var diagnm = model.getValue(sOPRSRVINFO_PATH + "/diagnm");
  1686. var perfdeptcd= model.getValue(sOPRSRVINFO_PATH + "/perfdeptcd");
  1687. var perfdrid = model.getValue(sOPRSRVINFO_PATH + "/perfdrid");
  1688. var opusetm = model.getValue(sOPRSRVINFO_PATH + "/opusetm");
  1689. var anstmthd = model.getValue(sOPRSRVINFO_PATH + "/anstmthdcd");
  1690. var anstdetlmthdcd = model.getValue(sOPRSRVINFO_PATH + "/anstdetlmthdcd");
  1691. var opstatcd = model.getValue(sOPRSRVINFO_PATH + "/opstatcd");
  1692. var opposturecd = model.getValue(sOPRSRVINFO_PATH + "/opposturecd");
  1693. var opdirecflag = model.getValue(sOPRSRVINFO_PATH + "/opdirecflag");
  1694. var oppatflagcd = model.getValue(sOPRSRVINFO_PATH + "/oppatflagcd");
  1695. var opcntmdg = model.getValue(sOPRSRVINFO_PATH + "/opcntmdg");
  1696. var opdelivefact = model.getValue(sOPRSRVINFO_PATH + "/delivefact");
  1697. var opcnfmdd = model.getValue(sOPRSRVINFO_PATH + "/opcnfmdd");
  1698. var opflagcd = model.getValue(sOPRSRVINFO_PATH + "/opflagcd"); // [요청번호: 847] 수술일자변경 2010.06.25 kskim, opflagcd(수술구분)정보 추가
  1699. var cntctel = model.getValue(sOPRSRVINFO_PATH + "/cntctel"); // [요청번호: 847] 수술일자변경 2010.06.25 kskim, cntctel(연락처)정보 추가
  1700. var cnstopflag = model.getValue(sOPRSRVINFO_PATH + "/cnstopflag"); // [요청번호: 847] 수술일자변경 2010.06.25 kskim, cnstopflag(협진여부)정보 추가
  1701. var ccrtno = model.getValue(sOPRSRVINFO_PATH + "/ccrtno"); // [요청번호: 847] 카트번호 2010.06.25 kskim, ccrtno정보 추가
  1702. //drg정보 추가 2013.06.20 KJS
  1703. var drgyn = model.getValue(sOPRSRVINFO_PATH + "/drgyn");
  1704. var drgno = model.getValue(sOPRSRVINFO_PATH + "/drgno");
  1705. var drgnm = model.getValue(sOPRSRVINFO_PATH + "/drgnm");
  1706. var opdata = opschedd + "▦" +
  1707. opfromtmcd + "▦" +
  1708. opendtmcd + "▦" +
  1709. oproomcd + "▦" +
  1710. opcd + "▦" +
  1711. opnm + "▦" +
  1712. diagcd + "▦" +
  1713. diagnm + "▦" +
  1714. perfdeptcd + "▦" +
  1715. perfdrid + "▦" +
  1716. opusetm + "▦" +
  1717. anstmthd + "▦" +
  1718. anstdetlmthdcd + "▦" +
  1719. opstatcd + "▦" +
  1720. opposturecd + "▦" +
  1721. opdirecflag + "▦" +
  1722. oppatflagcd + "▦" +
  1723. opcntmdg + "▦" +
  1724. opdelivefact + "▦" +
  1725. opcnfmdd + "▦" +
  1726. opflagcd + "▦" +
  1727. cntctel + "▦" +
  1728. cnstopflag + "▦" +
  1729. ccrtno + "▦" +
  1730. drgyn + "▦" +
  1731. drgno + "▦" +
  1732. drgnm; // [요청번호: 847] 수술일자변경 2010.06.25 kskim, opflagcd(수술구분)정보 추가
  1733. setParameter("SPMMO05800_param_opdata", opdata);
  1734. modal("SPMMO05800");
  1735. var rtnuseyn = getParameter("SPMMO05800_rtn_useyn");
  1736. if(rtnuseyn == "Y"){
  1737. setParameter("SPMMO05800_rtn_useyn", "N");
  1738. model.setValue("/root/main/cond/qflag", "1");
  1739. fReqOpRsrvInfoList();
  1740. }
  1741. }else{
  1742. return;
  1743. }
  1744. }
  1745. /**
  1746. * @desc : 담당요일 의사조회
  1747. * @
  1748. * @param : opschedd 수술예약일자
  1749. * @return :
  1750. * @author : 오지훈
  1751. * @---------------------------------------------------
  1752. */
  1753. function fReqDailyChrgAnstDr(opschedd){
  1754. model.removeNodeset("/root/send/reqdata");
  1755. model.makeValue("/root/send/reqdata/opschedd", opschedd);
  1756. if(submit("TRMMO00203")){
  1757. var existxml = instance1.selectNodes("/root/main/dailychrgdrlist/dailychrgdrlist");
  1758. if(existxml.length == 1){ //담당자가 있는 경우
  1759. var daynm = model.getValue("/root/main/dailychrgdrlist/dailychrgdrlist/chrgdwnm") + "요일";
  1760. var chrgdrnm = model.getValue("/root/main/dailychrgdrlist/dailychrgdrlist/usernm") + "\n"+"(" +
  1761. model.getValue("/root/main/dailychrgdrlist/dailychrgdrlist/beepno") + ")";
  1762. model.setValue("/root/main/cond/daynm" , daynm);
  1763. model.setValue("/root/main/cond/chrgdrnm", chrgdrnm);
  1764. }else{ //담당자가 없는 경우
  1765. model.setValue("/root/main/cond/daynm" , "");
  1766. model.setValue("/root/main/cond/chrgdrnm", "");
  1767. }
  1768. }
  1769. model.refresh();
  1770. }
  1771. /**
  1772. * @desc : 취소/변경 승인요청 표시, 빨간색 취소, 파란색 변경
  1773. * @
  1774. * @param :
  1775. * @return :
  1776. * @author : 오지훈
  1777. * @---------------------------------------------------
  1778. */
  1779. function fDispAprvCnclChng(){
  1780. for(var i = 1; i < grd_oprsrvlist.rows; i++){
  1781. var aprvreqno = model.getValue(sOPRSRVLIST_PATH + "[" + i + "]/aprvreqno");
  1782. var reqrsncd = model.getValue(sOPRSRVLIST_PATH + "[" + i + "]/reqrsncd");
  1783. if(aprvreqno != 0){
  1784. if(reqrsncd < 300){ //취소
  1785. grd_oprsrvlist.rowStyle(i, "all", "color") = "#ff0000";
  1786. }else if(reqrsncd > 300){ //변경
  1787. grd_oprsrvlist.rowStyle(i, "all", "color") = "#0000ff";
  1788. }
  1789. }else{
  1790. grd_oprsrvlist.rowStyle(i, "all", "color") = "#000000";
  1791. }
  1792. }
  1793. grd_oprsrvlist.refresh();
  1794. }
  1795. /**
  1796. * @desc : 예약취소 버튼 클릭
  1797. * @
  1798. * @param :
  1799. * @return :
  1800. * @author : 오지훈
  1801. * @---------------------------------------------------
  1802. */
  1803. function fClkBtnRsrvCncl(){
  1804. var opstatcd = model.getValue(sOPRSRVINFO_PATH + "/opstatcd");
  1805. var reqrsncd = model.getValue(sOPRSRVINFO_PATH + "/reqrsncd");
  1806. if(opstatcd < 20){
  1807. if(reqrsncd == "314" || reqrsncd == "315") { // [요청번호: 847] 취소변경 사유(수술일자 변경)일 경우 블로킹 by 박영우 2010.07.09
  1808. messageBox("수술일 변경요청된 스케줄입니다. 마취과 승인 이전 의뢰취소 또는 취소변경은 불가합니다.", "E");
  1809. return;
  1810. } else {
  1811. group1.attribute("visibility") = "visible";
  1812. btn_new.disabled = true;
  1813. btn_rsrvcncl.disabled = true;
  1814. btn_rsrvcncl.disabled = true;
  1815. btn_tempsave.disabled = true;
  1816. model.setFocus("cmb_inrsrvcnclresn");
  1817. model.refresh();
  1818. }
  1819. }else{
  1820. messageBox("확정된 환자는 예약 취소", "E001");
  1821. return;
  1822. }
  1823. }
  1824. /**
  1825. * @desc : 8PM~11PM 의 익일 추가 수술 마취 의뢰 가능 하도록 블러킹
  1826. * @
  1827. * @param :
  1828. * @return :
  1829. * @author : 이윤정
  1830. * @---------------------------------------------------
  1831. */
  1832. function fOpRsrvTimeInfo(tmp){
  1833. var MyTime = getCurrentTime();
  1834. var realtime = MyTime.substr(0,2);
  1835. reqHardCodeInfo("/root/init/hard","/root/init/hardcodeI","115");
  1836. reqHardCodeInfo("/root/init/hard","/root/init/hardcodeS","116");
  1837. reqHardCodeInfo("/root/init/hard","/root/init/hardcodeE","117");
  1838. var start = model.getValue("/root/init/hardcodeS/hardcd/hardcd");
  1839. var end = model.getValue("/root/init/hardcodeE/hardcd/hardcd");
  1840. if (model.getValue("/root/init/hardcodeI/hardcd/hardcd")=="Y" && ipt_opschedd.value == getCurrentDate().toDate('YYYYMMDD').getAddDate(+1, "D").getDateFormat('YYYYMMDD')&& model.getValue("/root/main/oprsrvinfo/oprsrvinfo/opflagcd")!="1"&& model.getValue("/root/main/oprsrvinfo/oprsrvinfo/opflagcd")!="3"){
  1841. if((model.getValue("/root/init/hardcodeS/hardcd/hardcd")<realtime && realtime<model.getValue("/root/init/hardcodeE/hardcd/hardcd"))||(model.getValue("/root/main/oprsrvinfo/oprsrvinfo/opflagcd")=="2")){
  1842. fSaveOpRsrvInfo(tmp);
  1843. }
  1844. else if (model.alert("익일 추가 수술 의뢰 가능시간은 " +start+":00 ~ "+end+":00 입니다"));
  1845. }
  1846. else fSaveOpRsrvInfo(tmp);
  1847. }
  1848. /**
  1849. * @desc : 수술구분 유효성 체크, 당일인 경우 정규 설정은 불가함
  1850. * @
  1851. * @param :
  1852. * @return :
  1853. * @author : 오지훈
  1854. * @---------------------------------------------------
  1855. */
  1856. function fValidOpFlagCD(){
  1857. var chkopcnfmtm = model.getValue("/root/init/chkopcnfmtm/hardcd/hardcd");
  1858. var opflagcd = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/opflagcd");
  1859. var MyTime = getCurrentTime();
  1860. var Mydate = getCurrentDate();
  1861. if(ipt_opschedd.value == Mydate){ //현재일자와 동일한 경우
  1862. if(opflagcd == 1 || opflagcd == 3){ //정규(1), 추가(3)인 경우
  1863. messageBox("당일 수술마취의뢰는 응급만", "I006");
  1864. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/opflagcd", "2"); // 응급 설정
  1865. // 2010.05.24 kskim
  1866. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/opusetm", "");
  1867. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/oproomcd", "");
  1868. }
  1869. }
  1870. if(opflagcd == 2 && ipt_opschedd.value != "") { //응급인 경우
  1871. if( ipt_opschedd.value != Mydate && MyTime <= chkopcnfmtm ) { // 2008.09.10 수술하루전 일괄확정시간 이전일 경우만 check 하도록 조건 추가
  1872. messageBox("응급은 당일 수술마취만", "I006");
  1873. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/opflagcd", "");
  1874. }
  1875. }
  1876. model.refresh();
  1877. }
  1878. /**
  1879. * @desc : 시간설정 버튼 클릭, 수술구분 정규 -> 수술예약시간 설정 팝업 open
  1880. * 응급, 추가 -> 희망시간 입력 팝업 open
  1881. * @
  1882. * @param :
  1883. * @return :
  1884. * @author : 오지훈
  1885. * @---------------------------------------------------
  1886. */
  1887. function fClkBtnSetTime(){
  1888. var opflagcd = model.getValue(sOPRSRVINFO_PATH + "/opflagcd");
  1889. var opschedd = model.getValue(sOPRSRVINFO_PATH + "/opschedd");
  1890. var hopetmflag= model.getValue(sOPRSRVINFO_PATH + "/hopetmflag");
  1891. if(opschedd == ""){
  1892. messageBox("수술예정일자를", "C001");
  1893. return;
  1894. }
  1895. if(opflagcd == 1){ //정규
  1896. fOpenOpScheTime(); //수술예약시간 설정 팝업 open
  1897. }else if(opflagcd == 2 || opflagcd == 3){ //응급, 추가
  1898. group2.attribute("visibility") = "visible";
  1899. btn_new.disabled = true;
  1900. btn_rsrvcncl.disabled = true;
  1901. btn_rsrvcncl.disabled = true;
  1902. btn_tempsave.disabled = true;
  1903. if(hopetmflag == ""){ //희망일자 구분이 선택된 경우
  1904. cmb_hopetmflag.select(0);
  1905. ipt_hopehour.disabled = true;
  1906. cmb_hopemin.disabled = true;
  1907. //ipt_usehour.disabled = true;
  1908. //cmb_usemin.disabled = true;
  1909. model.setFocus("cmb_hopetmflag");
  1910. //model.setValue("/root/main/hopebox/hopehour", "09");
  1911. model.setValue("/root/main/hopebox/hopehour", "00");
  1912. model.setValue("/root/main/hopebox/hopemin" , "00");
  1913. // model.setValue("/root/main/hopebox/usehour", "00"); // 주석처리 사유: 응급, 추가 수술일 경우 수술카트에 저장된 정보 사용
  1914. // model.setValue("/root/main/hopebox/usemin" , "10"); // 주석처리 사유: 응급, 추가 수술일 경우 수술카트에 저장된 정보 사용
  1915. // 요청번호; 845
  1916. // 요청내용: 수술의뢰시 필요한 기준자료 추가 등록
  1917. // 세부내용: 수술체위, 수술창상, 수술위치, 마취방법
  1918. // 수정날자 2010.05.24
  1919. // 수정자 : kskim
  1920. var opusetm = model.getValue(sOPRSRVINFO_PATH + "/opusetm");
  1921. var usehour = opusetm.substr(0, 2);
  1922. var usemin = opusetm.substr(2, 2);
  1923. model.setValue("/root/main/hopebox/usehour" , usehour);
  1924. model.setValue("/root/main/hopebox/usemin" , usemin);
  1925. }else{
  1926. if(hopetmflag == 1 || hopetmflag == 2 || hopetmflag == 3){ //1:오전, 2:오후, 3:상관없음, 시간설정 disabled
  1927. ipt_hopehour.disabled = true;
  1928. cmb_hopemin.disabled = true;
  1929. //ipt_usehour.disabled = true;
  1930. //cmb_usemin.disabled = true;
  1931. }else if(hopetmflag == 4){ //4:특정시간, 시간설정 enabled
  1932. ipt_hopehour.disabled = false;
  1933. cmb_hopemin.disabled = false;
  1934. //ipt_usehour.disabled = false;
  1935. //cmb_usemin.disabled = false;
  1936. var opfromtmcd = model.getValue(sOPRSRVINFO_PATH + "/opfromtmcd");
  1937. var opusetm = model.getValue(sOPRSRVINFO_PATH + "/opusetm");
  1938. var hopehour = opfromtmcd.substr(0, 2);
  1939. var hopemin = opfromtmcd.substr(4, 2);
  1940. var usehour = opusetm.substr(0, 2);
  1941. var usemin = opusetm.substr(2, 2);
  1942. model.setValue("/root/main/hopebox/hopehour", hopehour);
  1943. model.setValue("/root/main/hopebox/hopemin" , hopemin);
  1944. model.setValue("/root/main/hopebox/usehour" , usehour);
  1945. model.setValue("/root/main/hopebox/usemin" , usemin);
  1946. }
  1947. }
  1948. }
  1949. model.refresh();
  1950. }
  1951. /**
  1952. * @desc : 희망시간구분 변경
  1953. * @
  1954. * @param :
  1955. * @return :
  1956. * @author : 오지훈
  1957. * @---------------------------------------------------
  1958. */
  1959. function fChngHopeTmFlag(){
  1960. var hopetmflag = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/hopetmflag");
  1961. if(hopetmflag == 1){//오전
  1962. //model.setValue("/root/main/hopebox/hopehour", "09");
  1963. model.setValue("/root/main/hopebox/hopehour", "00");
  1964. model.setValue("/root/main/hopebox/hopemin" , "00");
  1965. //model.setValue("/root/main/hopebox/usehour", "00");
  1966. //model.setValue("/root/main/hopebox/usemin" , "00");
  1967. // 요청번호; 845
  1968. // 요청내용: 수술의뢰시 필요한 기준자료 추가 등록
  1969. // 세부내용: 수술체위, 수술창상, 수술위치, 마취방법
  1970. // 수정날자 2010.05.24
  1971. // 수정자 : kskim
  1972. var opusetm = model.getValue(sOPRSRVINFO_PATH + "/opusetm");
  1973. var usehour = opusetm.substr(0, 2);
  1974. var usemin = opusetm.substr(2, 2);
  1975. model.setValue("/root/main/hopebox/usehour" , usehour);
  1976. model.setValue("/root/main/hopebox/usemin" , usemin);
  1977. model.setFocus("ipt_cntctel");
  1978. ipt_hopehour.disabled = true;
  1979. cmb_hopemin.disabled = true;
  1980. //ipt_usehour.disabled = true;
  1981. //cmb_usemin.disabled = true;
  1982. }else if(hopetmflag == 2){ //오후
  1983. //model.setValue("/root/main/hopebox/hopehour", "13");
  1984. model.setValue("/root/main/hopebox/hopehour", "00");
  1985. model.setValue("/root/main/hopebox/hopemin" , "00");
  1986. //model.setValue("/root/main/hopebox/usehour", "00");
  1987. //model.setValue("/root/main/hopebox/usemin" , "00");
  1988. // 요청번호; 845
  1989. // 요청내용: 수술의뢰시 필요한 기준자료 추가 등록
  1990. // 세부내용: 수술체위, 수술창상, 수술위치, 마취방법
  1991. // 수정날자 2010.05.24
  1992. // 수정자 : kskim
  1993. var opusetm = model.getValue(sOPRSRVINFO_PATH + "/opusetm");
  1994. var usehour = opusetm.substr(0, 2);
  1995. var usemin = opusetm.substr(2, 2);
  1996. model.setValue("/root/main/hopebox/usehour" , usehour);
  1997. model.setValue("/root/main/hopebox/usemin" , usemin);
  1998. model.setFocus("ipt_cntctel");
  1999. ipt_hopehour.disabled = true;
  2000. cmb_hopemin.disabled = true;
  2001. //ipt_usehour.disabled = true;
  2002. //cmb_usemin.disabled = true;
  2003. }else if(hopetmflag == 3){ //상관없음
  2004. // 요청번호; 845
  2005. // 요청내용: 수술의뢰시 필요한 기준자료 추가 등록
  2006. // 세부내용: 수술체위, 수술창상, 수술위치, 마취방법
  2007. // 수정날자 2010.05.24
  2008. // 수정자 : kskim
  2009. var opusetm = model.getValue(sOPRSRVINFO_PATH + "/opusetm");
  2010. var usehour = opusetm.substr(0, 2);
  2011. var usemin = opusetm.substr(2, 2);
  2012. model.setValue("/root/main/hopebox/usehour" , usehour);
  2013. model.setValue("/root/main/hopebox/usemin" , usemin);
  2014. model.setFocus("ipt_cntctel");
  2015. ipt_hopehour.disabled = true;
  2016. cmb_hopemin.disabled = true;
  2017. //ipt_usehour.disabled = true;
  2018. //cmb_usemin.disabled = true;
  2019. }else if(hopetmflag == 4){ //특정시간
  2020. model.setFocus("ipt_hopehour");
  2021. ipt_hopehour.disabled = false;
  2022. cmb_hopemin.disabled = false;
  2023. //ipt_usehour.disabled = false;
  2024. //cmb_usemin.disabled = false;
  2025. }
  2026. model.refresh();
  2027. }
  2028. /**
  2029. * @desc : 희망시간 확정버튼 클릭
  2030. * @
  2031. * @param :
  2032. * @return :
  2033. * @author : 오지훈
  2034. * @---------------------------------------------------
  2035. */
  2036. function fClkCnfmHopeTm(){
  2037. group2.attribute("visibility") = "hidden";
  2038. var hopehour = model.getValue("/root/main/hopebox/hopehour");
  2039. var hopemin = model.getValue("/root/main/hopebox/hopemin");
  2040. var usehour = model.getValue("/root/main/hopebox/usehour");
  2041. var usemin = model.getValue("/root/main/hopebox/usemin");
  2042. var hopetmflag = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/hopetmflag");
  2043. if(hopehour.length == 1) {
  2044. hopehour = "0" + hopehour;
  2045. }
  2046. if(usehour.length == 1) {
  2047. usehour = "0" + usehour;
  2048. }
  2049. var opusetm = usehour.concat(usemin);
  2050. if(hopetmflag == 4){
  2051. var opfromtmcd = hopehour.concat(hopemin) + "00";
  2052. var opendhour = eval(hopehour) + eval(usehour);
  2053. var opendmin = eval(hopemin) + eval(usemin);
  2054. if(opendmin == 60){
  2055. opendhour++;
  2056. opendmin = "00";
  2057. }else if(opendmin == 0){
  2058. opendmin = "00";
  2059. }
  2060. if(opendhour < 10){
  2061. opendhour = "0".concat(opendhour);
  2062. }
  2063. var opendtmcd = ("" + opendhour + "").concat(opendmin) + "00";
  2064. model.setValue(sOPRSRVINFO_PATH + "/opfromtmcd", opfromtmcd);
  2065. model.setValue(sOPRSRVINFO_PATH + "/opendtmcd" , opendtmcd);
  2066. }
  2067. //model.setValue(sOPRSRVINFO_PATH + "/oproomcd" , "0000"); //응급, 추가의 경우, 방없음 설정
  2068. model.setValue(sOPRSRVINFO_PATH + "/oproomcd" , "2222"); //응급, 추가의 경우, 임시방 설정
  2069. model.setValue(sOPRSRVINFO_PATH + "/opusetm" , opusetm);
  2070. btn_new.disabled = false;
  2071. btn_rsrvcncl.disabled = false;
  2072. btn_rsrvcncl.disabled = false;
  2073. btn_tempsave.disabled = false;
  2074. if(hopetmflag != 4) { // 2008.10.13 특정시간 설정일 경우만 제외하고 처리
  2075. if(cmb_opfromtmcd.value != "" || cmb_opendtmcd.value != "") {
  2076. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/opfromtmcd", "");
  2077. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/opendtmcd", "");
  2078. }
  2079. }
  2080. model.refresh();
  2081. }
  2082. /**
  2083. * @desc : 그리드 data 엑셀화일로 저장
  2084. * @
  2085. * @param :
  2086. * @event :
  2087. * @return :
  2088. * @---------------------------------------------------
  2089. */
  2090. function saveGridToExcel(grdObj){
  2091. var fileName = window.fileDialog("save", ",", false, "excel", "xls", "Excel Files(*.xls)|*.xls|All Files (*.*)|*.*");
  2092. if (fileName != ""){
  2093. grdObj.saveExcel(fileName, "SheetName", true, true, "", "", true);
  2094. }
  2095. }
  2096. /**
  2097. * @desc : 입력된 수술시간이 유효한지 check
  2098. * @
  2099. * @param :
  2100. * @return :
  2101. * @author : 박유미
  2102. * @---------------------------------------------------
  2103. */
  2104. function fCheckValidTime(timePath){
  2105. var fromtm = model.getValue( timePath + "/opfromtmcd");
  2106. var endtm = model.getValue( timePath + "/opendtmcd");
  2107. if(fromtm.length != 6) {
  2108. fromtm += "00";
  2109. model.setValue(timePath + "/opfromtmcd", fromtm);
  2110. }
  2111. if(endtm.length != 6) {
  2112. endtm += "00";
  2113. model.setValue(timePath + "/opendtmcd", endtm);
  2114. }
  2115. var node = instance1.selectNodes("/root/init/M0014/M0014/cdid");
  2116. var i, j;
  2117. for(i=1; i< node.length; i++) {
  2118. if(fromtm == node.item(i).value) {
  2119. break;
  2120. }
  2121. }
  2122. for(j=1; j< node.length; j++) {
  2123. if(endtm == node.item(j).value) {
  2124. break;
  2125. }
  2126. }
  2127. if(i == node.length) {
  2128. messageBox("입력된 시간이", "E016");
  2129. model.setFocus("ipt_fmtm");
  2130. return false;
  2131. }
  2132. if(j == node.length) {
  2133. messageBox("입력된 시간이", "E016");
  2134. model.setFocus("ipt_endtm");
  2135. return false;
  2136. }
  2137. return true;
  2138. }
  2139. /**
  2140. * @desc : 병원 휴일 select
  2141. * @
  2142. * @param :
  2143. * @return :
  2144. * @author : 박유미
  2145. * @---------------------------------------------------
  2146. */
  2147. function fGetCalendar(basedd){
  2148. var preyear = new Date(basedd.substring(0, 4) -1, basedd.substring(4, 6), basedd.substring(6, 8));
  2149. //alert(preyear.getDateFormat().substring(0, 4));
  2150. model.makeValue("/root/send/reqdata/basedd", preyear.getDateFormat().substring(0, 4)+ "▦" +basedd.substring(0, 4));
  2151. //model.makeValue("/root/send/reqdata/basedd", basedd.substring(0, 4));
  2152. //submit("TRMMO10601");
  2153. submit("TRMMO00212");
  2154. // --> 2008.10.27 휴일인 경우 blocking 처리 check
  2155. }
  2156. /**
  2157. * @desc : 환자진료정보 list 조회
  2158. * @
  2159. * @param :
  2160. * @return :
  2161. * @author : 박유미
  2162. * @---------------------------------------------------
  2163. */
  2164. function fOpenPatInfo(){
  2165. var pid = model.getValue(sOPRSRVINFO_PATH + "/pid");
  2166. if(pid == ""){
  2167. messageBox("환자의 등록번호를 ", "C001");
  2168. return;
  2169. }
  2170. model.removeNodeset("/root/send/reqdata");
  2171. model.makeValue("/root/send/reqdata/cond1", "1"); //1은 등록번호, 2는 환자명
  2172. model.makeValue("/root/send/reqdata/cond2", pid); //등록번호
  2173. model.makeValue("/root/send/reqdata/cond3", getUserInfo("dutplceinstcd"));
  2174. model.makeValue("/root/send/reqdata/cond4", "N"); //원무키 기준여부
  2175. model.makeValue("/root/send/reqdata/cond5", "N"); //당일기준 조회여부
  2176. model.makeValue("/root/send/reqdata/cond6", "-"); //외래,입원테이블 기준
  2177. if(submit("TRMMO00200")==true){
  2178. var nodecnt = getNodeSetCnt(sPATORDINFOLIST_PATH)
  2179. if(nodecnt > 1){
  2180. var xpt = window.screenleft + 50;
  2181. var ypt = window.screenTop + 80;
  2182. var coord = getRelativeCoordinate(xpt, ypt);
  2183. var mon = coord[0];
  2184. xpt = coord[1];
  2185. ypt = coord[2];
  2186. modal("SPMMO09100", mon, xpt, ypt, "patordinfo", "/root/patordinfo", "/root/patordinfo", "", false );
  2187. param = getParameter("SPMMO09100_rtn_param");
  2188. if(param.length > 0){
  2189. model.removeNodeset(sPATORDINFOLIST_PATH);
  2190. setCSVToNode("/root/patordinfo", param, "patordinfolist");
  2191. }
  2192. }
  2193. var ioflag = model.getValue(sPATORDINFOLIST_PATH + "/ioflag");
  2194. var pid = model.getValue(sPATORDINFOLIST_PATH + "/pid");
  2195. var orddd = model.getValue(sPATORDINFOLIST_PATH + "/orddd");
  2196. var cretno = model.getValue(sPATORDINFOLIST_PATH + "/cretno");
  2197. var instcd = model.getValue(sPATORDINFOLIST_PATH + "/instcd");
  2198. model.removeNodeset("/root/send/reqdata");
  2199. model.makeValue("/root/send/reqdata/pid" , pid); //등록번호
  2200. model.makeValue("/root/send/reqdata/orddd" , orddd); //입원일자
  2201. model.makeValue("/root/send/reqdata/cretno" , cretno); //생성번호
  2202. model.makeValue("/root/send/reqdata/instcd" , instcd); //기관코드
  2203. // 2008.10.31 등록번호 검색으로 의뢰시 상단 UP 조건 icdr.fromdd
  2204. if(submit("TRMMO00210")) {
  2205. var srchdd = model.getValue("/root/main/topinfo/topinfo/fromdd");
  2206. }
  2207. // (e)
  2208. //수술 예약정보 입력시 연동되는 상단과 진료기록, 처방 창 환자 정보가 상이한 오류가 발생하여 상단 연동 기능을 제외한다. 김민선 선생님 요청 20100614 by LYJ
  2209. if(ioflag == "I" || ioflag == "D"){
  2210. model.makeValue("/root/send/reqdata/srchdd" , srchdd); //조회일자
  2211. model.makeValue("/root/send/reqdata/ioflag" , "I");
  2212. fReqInPatTopInfo();
  2213. // var param = "I" + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd + "▦" + srchdd;
  2214. } else if(ioflag == "E") {
  2215. model.makeValue("/root/send/reqdata/srchdd", srchdd); //조회일자
  2216. model.makeValue("/root/send/reqdata/ioflag" , "E");
  2217. fReqERPatTopInfo();
  2218. //var param = "E" + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd + "▦"+ srchdd ;
  2219. }else{
  2220. model.makeValue("/root/send/reqdata/ioflag" , "O");
  2221. fReqOutPatTopInfo();
  2222. // var param = "O" + "▦" + pid + "▦" + orddd + "▦" + cretno + "▦" + instcd;
  2223. }
  2224. fInitPamInfo(); //화면 기본 정보 설정
  2225. /* setParameter("condparam", param);
  2226. modal("SPMMO08900", 1, "", "", "", "", "", "left:0; right:0; width:0; height:0; sysmenu:hidden; caption:hidden; min:hidden, max:hidden;");
  2227. var useyn = getParameter("SPMMO08900_rtn_useyn");
  2228. if(useyn == "Y"){
  2229. setParameter("SPMMO08900_rtn_useyn", "");
  2230. fInitPamInfo(); //화면 기본 정보 설정
  2231. }else{
  2232. return;
  2233. }*/
  2234. }
  2235. }
  2236. /**
  2237. * @desc : 재원여부 check
  2238. * @
  2239. * @param :
  2240. * @return :
  2241. * @author : 박유미
  2242. * @---------------------------------------------------
  2243. */
  2244. function fChkPatInRgst(){
  2245. var pid = model.getValue(sOPRSRVINFO_PATH + "/pid");
  2246. var oppatflagcd = model.getValue(sOPRSRVINFO_PATH +"/oppatflagcd");
  2247. if(pid != "" && oppatflagcd == "D"){
  2248. model.removeNodeset("/root/send/reqdata");
  2249. model.makeValue("/root/send/reqdata/pid", pid); //등록번호
  2250. if(submit("TRMMO00211")) {
  2251. var rgstyn = model.getValue("/root/main/rgstinfo/rgstinfo/ret");
  2252. if(rgstyn == "Y") {
  2253. messageBox("재원 중인 환자입니다. DSC수술의뢰", "E001");
  2254. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/oppatflagcd", "");
  2255. model.refresh();
  2256. return false;
  2257. }else{
  2258. return true;
  2259. }
  2260. }
  2261. }
  2262. return true;
  2263. }
  2264. /**
  2265. * @desc : 무통마취 의뢰
  2266. * @
  2267. * @param :
  2268. * @return :
  2269. * @author : 박유미
  2270. * @---------------------------------------------------
  2271. */
  2272. function fClkUnpainFlag( bFlag ) {
  2273. var painlessflag = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/painlessflag");
  2274. if(painlessflag == "Y"){
  2275. if(bFlag == "Y") {
  2276. //model.removeNodeset(sDIAGCDLIST_PATH);
  2277. var bval = true;
  2278. rdo_opflag.value = "";
  2279. rdo_opopen.value = "";
  2280. cmb_oproomcd.value = "";
  2281. //rdo_oppatflag.value = "";
  2282. cmb_opfromtmcd.value = "";
  2283. cmb_opendtmcd.value = "";
  2284. ipt_opcd.value = "";
  2285. ipt_opnm.value = "";
  2286. ipt_subopcd.value = "";
  2287. ipt_subopnm.value = "";
  2288. cmb_opposture.value = "";
  2289. cmb_opdirecflag.value = "";
  2290. cmb_anstmthd.value = "";
  2291. //ipt_delivefact.value = "";
  2292. cmb_opcnfmdg.value = "";
  2293. ipt_usetm.value = "";
  2294. bool3.value = "N";
  2295. bool1.value = "N";
  2296. bool2.value = "N";
  2297. } else if(bFlag == "N") {
  2298. var bval = false;
  2299. grd_diaglist.addRow(false, true);
  2300. } else {
  2301. var bval = false;
  2302. }
  2303. } else { // 무통마취가 풀렸을 경우, 신규일 경우
  2304. var bval = false;
  2305. //grd_diaglist.addRow(false, true);
  2306. }
  2307. rdo_opflag.disabled = bval;
  2308. rdo_opopen.disabled = bval;
  2309. bool1.disabled = bval;
  2310. bool2.disabled = bval;
  2311. bool3.disabled = bval;
  2312. //rdo_oppatflag.disabled = bval;
  2313. ipt_opcd.disabled = bval;
  2314. ipt_opnm.disabled = bval;
  2315. ipt_subopcd.disabled = bval;
  2316. ipt_subopnm.disabled = bval;
  2317. cmb_opposture.disabled = bval;
  2318. cmb_opdirecflag.disabled = bval;
  2319. cmb_anstmthd.disabled = bval;
  2320. //ipt_delivefact.disabled = bval;
  2321. cmb_opcnfmdg.disabled = bval;
  2322. button61.disabled = bval;
  2323. button5.disabled = bval;
  2324. button6.disabled = bval;
  2325. btn_tmsetup.disabled = bval;
  2326. //model.recalculate();
  2327. model.refresh();
  2328. }
  2329. /**
  2330. * @desc : 진단 팝업
  2331. * @
  2332. * @param :
  2333. * @return :
  2334. * @author : 박유미
  2335. * @---------------------------------------------------
  2336. */
  2337. function fOpenDiagInfo() {
  2338. var xpt = window.screenLeft + 50;
  2339. var ypt = window.screenTop + 80;
  2340. var coord = getRelativeCoordinate(xpt, ypt);
  2341. var mon = coord[0];
  2342. var paminfo = model.getValue("/root/paminfo/list/pid") +"▦" + model.getValue("/root/paminfo/list/orddd");
  2343. xpt = coord[1];
  2344. ypt = coord[2];
  2345. //model.makeValue("/root/main/temp/setlist", "Y");
  2346. //open("SPMMO03100", mon,xpt,ypt,"SPMMO03100", "/root/main/temp/setlist", "/root/temp/getlist/getlist", "", false);
  2347. setParameter("SPMMO03100_param", "Y");
  2348. setParameter("SPMMO03100_patinfo", paminfo); // 상단정보를 올리지 않음으로 파라메터로 값 넘기도록 수정 20100614 by LYJ
  2349. modal("SPMMO03100", mon,xpt,ypt,"SPMMO03100", "", "", "", false);
  2350. var useyn = getParameter("SPMMO03100_rtn_useyn");
  2351. if(useyn == "Y") {
  2352. var diagparam = getParameter("SPMMO03100_rtn");
  2353. diagparam = diagparam.split("▩");
  2354. for(var i = 1; i <= diagparam.length-2; i++){
  2355. var tmpstr = diagparam[i];
  2356. tmpstr = tmpstr.split("▦");
  2357. var currow = grd_diaglist.rows - 1;
  2358. model.setValue(sDIAGCDLIST_PATH + "[" + currow + "]/status" , "i");
  2359. model.setValue(sDIAGCDLIST_PATH + "[" + currow + "]/oprsrvno" , model.getValue(sOPRSRVINFO_PATH + "/oprsrvno"));
  2360. model.setValue(sDIAGCDLIST_PATH + "[" + currow + "]/dispdiagcd", tmpstr[1]);
  2361. model.setValue(sDIAGCDLIST_PATH + "[" + currow + "]/diagcd" , tmpstr[9]);
  2362. model.setValue(sDIAGCDLIST_PATH + "[" + currow + "]/diagengnm" , tmpstr[2]);
  2363. model.setValue(sDIAGCDLIST_PATH + "[" + currow + "]/diaghngnm" , tmpstr[3]);
  2364. grd_diaglist.addrow(false, true);
  2365. }
  2366. model.recalculate();
  2367. model.refresh();
  2368. }
  2369. }
  2370. /**
  2371. * @desc : 하드코드 조회 (하드코드, 하드코드명)
  2372. * @
  2373. * @param : ref - reference path
  2374. * rsltref - result reference path
  2375. * hardcd - 하드코드
  2376. * @return :
  2377. * @author : 오지훈
  2378. * @---------------------------------------------------
  2379. */
  2380. function mmbfGetHardCodeInfoNm(ref, rsltref, hardcd){
  2381. var mmb_rsltref = "/root/hidden/mmb/hardcd";
  2382. model.removeNode(mmb_rsltref);
  2383. model.makeNode(mmb_rsltref);
  2384. model.removeNode(ref);
  2385. model.makeValue(ref + "/hardcd", hardcd);
  2386. if(submit("TRMMB04105", "false", ref, mmb_rsltref)==true){
  2387. model.copyNode(rsltref, mmb_rsltref);
  2388. model.removeNode(mmb_rsltref);
  2389. }
  2390. model.refresh();
  2391. }
  2392. /**
  2393. * @desc : 하드코드 조회 (하드코드, 하드코드명)
  2394. * @
  2395. * @param : ref - reference path
  2396. * rsltref - result reference path
  2397. * hardcd - 하드코드
  2398. * @return :
  2399. * @author : 오지훈
  2400. * @---------------------------------------------------
  2401. */
  2402. function fDelOpRsrvCncl() {
  2403. var currow = grd_oprsrvlist.row
  2404. var pid = model.getValue(sOPRSRVLIST_PATH + "[" + currow + "]/pid");
  2405. var opschedd = model.getValue(sOPRSRVLIST_PATH + "[" + currow + "]/opschedd");
  2406. var oprsrvno = model.getValue(sOPRSRVLIST_PATH + "[" + currow + "]/oprsrvno");
  2407. var aprvreqno = model.getValue(sOPRSRVLIST_PATH + "[" + currow + "]/aprvreqno");
  2408. var perfdeptcd = model.getValue("/root/main/cond/perfdeptcd");
  2409. var oproomcd = model.getValue("/root/main/cond/oproomcd");
  2410. model.makeValue("/root/send/savedata/rsrvcnclinfo/pid" , pid);
  2411. model.makeValue("/root/send/savedata/rsrvcnclinfo/opschedd" , opschedd);
  2412. model.makeValue("/root/send/savedata/rsrvcnclinfo/oprsrvno" , oprsrvno);
  2413. model.makeValue("/root/send/savedata/rsrvcnclinfo/aprvreqno", aprvreqno);
  2414. model.makeValue("/root/send/savedata/rsrvcnclinfo/perfdeptcd", perfdeptcd);
  2415. model.makeValue("/root/send/savedata/rsrvcnclinfo/oproomcd", oproomcd);
  2416. submit("TXMMO00202", false);
  2417. model.setValue("/root/main/cond/qflag", "1");
  2418. fReqOpRsrvInfoList();
  2419. }
  2420. /**
  2421. * @desc : 집도과 수술마취 의뢰자 연락처 정보 조회
  2422. * @
  2423. * @param :
  2424. * @return :
  2425. * @author : 전지은
  2426. * @---------------------------------------------------
  2427. */
  2428. function fGetReqrcntctel() {
  2429. var rgstMpphonNo = getUserInfo("mpphonno");
  2430. var cntctel = "";
  2431. if( !isNull(rgstMpphonNo) ){
  2432. if( getStringLength(rgstMpphonNo) == 10 ) cntctel = rgstMpphonNo.substring(0,3) + "-" + rgstMpphonNo.substring(3,6) + "-" + rgstMpphonNo.substring(6,10);
  2433. else if( getStringLength(rgstMpphonNo) == 11 ) cntctel = rgstMpphonNo.substring(0,3) + "-" + rgstMpphonNo.substring(3,7) + "-" + rgstMpphonNo.substring(7,11);
  2434. else cntctel = rgstMpphonNo;
  2435. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/cntctel", cntctel);
  2436. }
  2437. }
  2438. /**
  2439. * @desc : 퇴원예고가 된 환자에 한해 외래 수술/마취 의뢰 가능
  2440. * @
  2441. * @param :
  2442. * @return :
  2443. * @author : 이윤정
  2444. * @---------------------------------------------------
  2445. */
  2446. function foppatflaginfo() {
  2447. var pid = model.getValue(sOPRSRVINFO_PATH + "/pid");
  2448. var oppatflagcd = model.getValue(sOPRSRVINFO_PATH +"/oppatflagcd");
  2449. var indd = model.getValue("/root/paminfo/list/indd");
  2450. // 일일수술실일 경우에만 수술전 검사 여부가 보이도록 함 2012.05.22 KJS
  2451. if (oppatflagcd == "D") {
  2452. caption60.visible = true;
  2453. rdo_dsclabflag.visible = true;
  2454. rdo_dsclabflag.disabled = false;
  2455. } else {
  2456. caption60.visible = false;
  2457. rdo_dsclabflag.visible = false;
  2458. rdo_dsclabflag.disabled = true;
  2459. model.setValue(sOPRSRVINFO_PATH +"/dsclabflag", "");
  2460. rdo_dsclabflag.refresh();
  2461. }
  2462. if(pid != "" && oppatflagcd == "O" && indd != ""){
  2463. model.removeNodeset("/root/send/reqdata");
  2464. model.makeValue("/root/send/reqdata/pid", pid); //등록번호
  2465. model.makeValue("/root/send/reqdata/indd", indd); //입원일
  2466. if(submit("TRMMO00211")) {
  2467. var rgstyn = model.getValue("/root/main/rgstinfo/rgstinfo/ret");
  2468. if(rgstyn == "A") {
  2469. messageBox("재원중인 환자는 외래수술 의뢰가 불가합니다." + "\n"+"단, 퇴원예고 후에는 외래수술 의뢰가 가능합니다. 퇴원예고 여부를 확인하시기 바랍니다.", "I");
  2470. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/oppatflagcd", "");
  2471. model.refresh();
  2472. return false;
  2473. }else{
  2474. return true;
  2475. }
  2476. }
  2477. }
  2478. }
  2479. /**
  2480. * @desc : 협진의뢰 시 수술구분정보 체크(협진의 경우 당일에도 추가 가능)
  2481. * @
  2482. * @param :
  2483. * @return :
  2484. * @author : 김광성 2010.06.17
  2485. * @---------------------------------------------------
  2486. */
  2487. function fCheckCnstOpFlag(){
  2488. // 협진의뢰 시 수술구분정보 체크(협진의 경우 당일에도 추가 가능) 2010.06.17 kskim
  2489. var cnstopflag = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/cnstopflag");
  2490. if( cnstopflag == "Y" ){
  2491. var opflagcd = model.getValue("/root/main/oprsrvinfo/oprsrvinfo/opflagcd");
  2492. if( opflagcd == 2 || opflagcd == 3 ){
  2493. model.setValue( "/root/main/oprsrvinfo/oprsrvinfo/oproomcd", getParameter("SPMMO11100_rtn_param_oproomcd"));
  2494. model.setValue( "/root/main/oprsrvinfo/oprsrvinfo/opusetm", getParameter("SPMMO11100_rtn_param_opusetm"));
  2495. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/opfromtmcd", getParameter("SPMMO11100_rtn_param_opfromtmcd"));
  2496. model.setValue("/root/main/oprsrvinfo/oprsrvinfo/opendtmcd", getParameter("SPMMO11100_rtn_param_opendtmcd"));
  2497. model.refresh();
  2498. }
  2499. }
  2500. }