SPMMO00200.xjs 120 KB

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