SMMNP01802.xjs 152 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/* ---------------------------------------------------------------------
  3. 수술마취임시,확정,간호처방 저장 (SMMNP01802.xfm - JScript )
  4. - Version :
  5. 1) : Ver.1.00.01
  6. : Create By Francis Choi
  7. : 2007.10.17 03:42
  8. ---------------------------------------------------------------------- */
  9. //----------------------------------------------
  10. // Cart 물품 저장
  11. //----------------------------------------------
  12. var ProcCartStat = ""; // Cart 저장 STATUS
  13. var MnphctosData = ""; // CaseCart물품의 임시처방내역(CCR에서확정)
  14. var MnphccolData = ""; // 수술중에 사용한 물품의처방내역(수술처방화면에서등록)
  15. // ---------------------------------------------
  16. // Cart 물품 처방저장에 사용되는 Variable
  17. //----------------------------------------------
  18. var sPrcpPid = ""; // 환자번호
  19. // --------------------------------------------------
  20. // 지원부서 처방저장 Interface - 공통 사용
  21. // --------------------------------------------------
  22. // 저장구분정보(saveFlagInfoVO) -> "saveFlagInfo"
  23. // --------------------------------------------------
  24. var FlagInfoData = "";
  25. var FlagInfoHeader = "";
  26. // --------------------------------------------------
  27. // 저장등록정보(saveRgstInfoVO) ->" saveRgstInfo"
  28. // --------------------------------------------------
  29. var RgstInfoData = "";
  30. var RgstInfoHeader = "";
  31. // --------------------------------------------------
  32. // 저장처방정보(savePrcpInfoVO) ->" savePrcpInfo"
  33. // --------------------------------------------------
  34. var PrcpInfoData = "";
  35. var PrcpInfoHeader = "";
  36. // --------------------------------------------------
  37. // 저장처방정보(saveSignInfoVO) ->" saveSignInfo"
  38. // --------------------------------------------------
  39. var SignInfoData = "";
  40. var SignInfoHeader = "";
  41. // 저장처방정보(savePrcpInfoVO) 자료를 구성한다.
  42. var PrcpData = "";
  43. var PrcpData0101 = "";
  44. var PrcpData0205 = "";
  45. var PrcpData0614 = "";
  46. var PrcpData1520 = "";
  47. var PrcpData2122 = "";
  48. //var PrcpData2340 = "";
  49. var PrcpData2324 = "";
  50. var PrcpData2528 = "";
  51. var PrcpData2938 = "";
  52. var PrcpData3940 = ""; //39:원내원외 구분
  53. var PrcpData4141 = "";
  54. var PrcpData4243 = "";//처방구분
  55. var PrcpData44 = "";//후인증필드
  56. var PrcpData4547 = "";
  57. //var PrcpData4247 = "";
  58. var PrcpData4848 = "";
  59. var PrcpData4949 = "";
  60. var PrcpData5063 = "";
  61. var PrcpData64 = "";
  62. var PrcpData65 = "";//용법기타
  63. var PrcpData66 = "-"; //수술구분 opansflagcd 2008-10-15 오후 5:09:33 taebum add
  64. var PrcpData67 = ""; //인증데이터 생성시 필요 데이터 추가
  65. var PrcpData68 = ""; //처방명
  66. var PrcpData69 = ""; //처방분류코드 + 투여비율
  67. var PrcpData7172 = ""; //후인증구분 + 후인증 의사
  68. var PrcpDate = utlf_getCurrentDate();; // 처방일자
  69. var PrcpData73 = ""; //부유형(subcretno)
  70. var PrcpData52 = "" //calcflag :계산구분
  71. var PrcpData2528_R = "";
  72. var PrcpData3940_R = "";
  73. //--------End of Cart 물품 처방저장에 사용되는 Variable
  74. var SvOprsrvno = ""; // 01 수술예약(의뢰)번호 (년도 + 일련번호)
  75. var SvCartgubn = ""; // 02 Cart구분 (O:수술,A:마취)
  76. var SvOrdseq = ""; // 03 처방순번
  77. var SvInstcd = ""; // 04 병원기관코드(코드정의서 Z0007 참조)
  78. var SvGoodcd = ""; // 05 물품코드
  79. var SvAllsizespecid = ""; // 06 ALLSIZE규격ID
  80. var SvGoodcls = ""; // 07 물품구분 1:Sutures,2:Supplies,3:Drug,4:Instrument,5:처치처방,6:수술소모품
  81. var SvGoodqty = ""; // 08 물품수량
  82. var SvAddreductqty = ""; // 09 가감수량
  83. var SvPayflagcd = ""; // 10 급여구분코드 (코드정의서 M0029 참조)
  84. var SvOldPayflagcd = ""; // 10_1 조회시 급여구분코드 (코드정의서 M0029 참조)
  85. var SvOproomcd = ""; // 11 수술실코드
  86. var SvRoomdeptcd = ""; // 12 수술방부서코드 01/17 추가
  87. var SvPrcpmemo = ""; // 13 처방수정MEMO(사유) 01/17 추가
  88. var SvPrcpdd = ""; // 14 처방일자
  89. var SvPrcpno = ""; // 15 처방일자별 일련번호
  90. var SvPrcphistno = ""; // 16 처방이력생할때 마다 생성 (처방일자, 처방번호, 기관코드 기준)
  91. var SvPid = ""; // 17 등록번호
  92. var SvReqtabcls = ""; // 18 테이블구 T:임시처방, C: 확정처방
  93. var SvRowno = ""; // 19 줄번호
  94. var SvRecflag = ""; // 20 U:수정,I:입력, D:삭제 구분
  95. var SvDrugMthdSpccd = ""; // 21 투여방법 및 검체코드
  96. var SvDrugMthdSpcEtc = ""; // 65 예외용법 설명
  97. var svOpansflagcd = "-"; // 66 수술마취구분
  98. var sSignNo = "-"; //인증번호
  99. var sGrupcd = "-"; //그룹코드
  100. //2009-07-20 K.J.M 산정여부 추가
  101. var sCalCulYn = "";
  102. //2009-08-18 K.J.M 수가대상여부, 수가코드
  103. var sInsuYn = "";
  104. var sCalcscorcd = "";
  105. //2009-10-16 K.J.M 한번 처방난 처방 재고 변동 막기 위한 변수
  106. var sPrcpno = "";
  107. var sPid = "";
  108. //2009-10-19 K.J.M 가납물품이면서 소모품이나 기구로 등록된 물품 CSR로직 안타도록 수정
  109. var sPurcflag = "";
  110. //2009-12-29 K.J.M 종료된 경우 처방 못함
  111. var sTodd = "";
  112. var sLisTodd = "";
  113. var sSpcmTodd = "";
  114. //2010-05-06 K. J. M 산정, 비산정 처방 카운트 변수
  115. var sCalCount = 0;
  116. var sNonCalCount = 0;
  117. var sTGoodcd = "";
  118. var initCnt = 0;
  119. //================ 2008-11-28 오후 2:49:45 taebum
  120. // 일반청구인 물품은 처방으로 보내지 않고 direct로 재료 집계 테이블로 저장
  121. var sMrsmHeader = "";
  122. var sMrsmData = "";
  123. var sMrsmInfoData = "";
  124. var sReqmthd = ""; //청구 방법
  125. var ordtype = ""; //환자진료형태(외래 O, 응급 E ,입원 I, D:DSC)
  126. var indd = ""; //입원일자
  127. var orddd = ""; //진료일자
  128. var ordindd = ""; //진료일자(외래일 경우 orddd, 입원일 경우 indd)
  129. var cretno = ""; //환자 일자별 일련번호
  130. //var sMrsmPgenrdd = ""; // 발생일자(시스템일자)
  131. //var sMrsmPgenrno = ""; // 발생번호 - 발생일자에 대한 일련번호
  132. //var sMrsmPinstcd = ""; // 기관코드
  133. //var sMrsmPpid = ""; // 등록(환자)번호
  134. //var sMrsmPorddd = ""; // 진료(입원)일자
  135. //var sMrsmPcretno = ""; // 생성번호
  136. //var sMrsmPorddeptcd = ""; // 진료과
  137. //var sMrsmPorddrid = ""; // 진료의
  138. //var sMrsmPprcpgenrflag = ""; // 처방발생구분 (코드정의서 M0010 참조) : oppatflagcd
  139. //var sMrsmPprcpdd = ""; // 처방일자(외래:원무의 진료일자와 동일, 입원:입원일자 이후의 처방일자, 응급:입원과 동일하게 처리)
  140. //var sMrsmPexecprcpuniqno = "0000000000"; // default 수술실에서 보낼경우 Setting
  141. //var sMrsmPcalcscorcd = ""; // 수가코드
  142. //var sMrsmPprcpflag = ""; // 처방구분 (O:정상, D:삭제- 수정이나 삭제 일경우)
  143. //var sMrsmPexecprcpqty = ""; // 실시처방수량
  144. //var sMrsmPexecprcptims = "1"; // 실시처방횟수
  145. //var sMrsmPexecprcpdayno = "1"; // 실시처방일수
  146. //var sMrsmPexecprcptotqty = ""; // 실시처방총수량
  147. //var sMrsmPallsizespecid = "-"; // AllSize규격ID
  148. //var sMrsmPissdeptcd = ""; // 발행부서 - 약품 및 재료에 대한 전달위치
  149. //var sMrsmPwardcd = ""; // 병동
  150. //var sMrsmProomcd = ""; // 병실
  151. //var sMrsmPpamexecdd = ""; // 원무실시일자
  152. //var sMrsmPexecdd = ""; // 처방에 대한 실시일자 - 모든 Part 공통 사용
  153. //var sMrsmPexectm = ""; // 처방에 대한 실시시간 - 모든 Part 공통 사용
  154. //var sMrsmPexecrid = ""; // 처방에 대한 실시자ID - 모든 Part 공통 사용
  155. //var sMrsmPsumflag = "N"; // 실시처방에 대한 집계구분(Y/N)
  156. //var sMrsmPsumdt = "0000000000000"; // 실시처방에 대한 집계일시
  157. // -----------------------------------------------------
  158. // 버튼 Action에 대한 처리구분 찾기
  159. // -----------------------------------------------------
  160. // X X X
  161. // - 1: Cart상태 1:임시,2:저장,3:불출,4:처방,5:확정,9:반납
  162. // - 2: 버튼구분(테이블구분) T:Cart처방저장(MNPHCTOS), C:임시처방저장(MNPHCCOL), P:확정처방저장(MNPHCCOL+원무)
  163. // - 3: 입력구분 I:입력, U:수정, D:삭제(데이타의 구분)
  164. // -----------------------------------------------------
  165. var tActionCode = "1TI,2TI,3TI,4TI,5TI,9TI," // 1
  166. + "1TU,2TU,3TU,4TU,5TU,9TU," // 2
  167. + "1TD,2TD,3TD,4TD,5TD,9TD," // 3
  168. + "1CI,2CI,3CI,4CI,5CI,9CI," // 4
  169. + "1CU,2CU,3CU,4CU,5CU,9CU," // 5
  170. + "1CD,2CD,3CD,4CD,5CD,9CD," // 6
  171. + "1PI,2PI,3PI,4PI,5PI,9PI," // 7
  172. + "1PU,2PU,3PU,4PU,5PU,9PU," // 8
  173. + "1PD,2PD,3PD,4PD,5PD,9PD," // 9
  174. + "1DD,2DD,3DD,4DD,5DD,9DD" ; // 10
  175. var tActCode = tActionCode.split(","); //
  176. //----------------------------------------------------------------------
  177. // 버튼 Action에 대한 처리구분를 찾고 아래의 세부처리를 표현한 Switch 값
  178. // 01*IX*XX*XX
  179. // -- : 처리번호
  180. // -- : Cart처방저장(MNPHCTOS) 구분
  181. // -- : 임시처방저장(MNPHCCOL) 구분
  182. // -- : 처방저장(원무) 구분
  183. // XX : N/A
  184. // IX : INSERT ONLY(처방INSERT포함)
  185. // UX : UPDATE ONLY
  186. // DX : DELETE ONLY
  187. // UI : UPDATE AND INSERT
  188. // IC : 처방INSERT AND 처방DC
  189. // XC : 처방DC
  190. //--------------------------------------------------------------
  191. // 1TI 2TI 3TI 4TI 5TI 9TI
  192. var tActionProc = "01*IX*XX*XX,01*IX*XX*XX,00*XX*XX*XX,00*XX*XX*XX,00*XX*XX*XX,00*XX*XX*XX," // 1
  193. // 1TU 2TU 3TU 4TU 5TU 9TU
  194. + "02*UX*XX*XX,02*UX*XX*XX,00*XX*XX*XX,00*XX*XX*XX,00*XX*XX*XX,00*XX*XX*XX," // 2
  195. // 1TD 2TD 3TD 4TD 5TD 9TD
  196. + "03*DX*XX*XX,03*DX*XX*XX,00*XX*XX*XX,00*XX*XX*XX,00*XX*XX*XX,00*XX*XX*XX," // 3
  197. // 1CI 2CI 3CI 4CI 5CI 9CI
  198. + "04*XX*IX*XX,04*XX*IX*XX,06*XX*IX*XX,06*XX*IX*XX,00*XX*XX*XX,00*XX*XX*XX," // 4
  199. // 1CU 2CU 3CU 4CU 5CU 9CU
  200. + "04*XX*IX*XX,04*XX*IX*XX,07*XX*UI*XX,07*XX*UI*XX,00*XX*XX*XX,00*XX*XX*XX," // 5
  201. // 1CD 2CD 3CD 4CD 5CD 9CD
  202. + "00*XX*XX*XX,00*XX*XX*XX,08*XX*UX*XX,08*XX*UX*XX,00*XX*XX*XX,00*XX*XX*XX," // 6
  203. // 1PI 2PI 3PI 4PI 5PI 9PI
  204. + "05*XX*IX*IX,05*XX*IX*IX,09*XX*IX*IX,09*XX*IX*IX,09*XX*IX*IX,09*XX*IX*IX," // 7
  205. // 1PU 2PU 3PU 4PU 5PU 9PU
  206. + "05*XX*IX*IX,05*XX*IX*IX,10*XX*UI*IX,10*XX*UI*IX,12*XX*UI*IC,12*XX*UI*IC," // 8
  207. // 1PD 2PD 3PD 4PD 5PD 9PD
  208. + "00*XX*XX*XX,00*XX*XX*XX,11*XX*UX*XX,11*XX*UX*XX,13*XX*UX*XC,13*XX*UX*XC," // 9
  209. // 1DD 2DD 3DD 4DD 5DD 9DD // 삭제 버튼 Click
  210. + "03*DX*XX*XX,03*DX*XX*XX,11*XX*UX*XX,11*XX*UX*XX,13*XX*UX*XC,13*XX*UX*XC" ; // 10
  211. var tActProc = tActionProc.split(","); //
  212. var sRecalfromdd = "";
  213. var sRecaltodd = "";
  214. var sRecalddStr = "";
  215. // 2009-03-10 ycd 처방데이터 parameter 추가 부분
  216. var sGoodCrFlag = ""; //물품발생구분
  217. var sInsuPynpy = ""; //급여구분
  218. var sNightYn = ""; //야간처방여부
  219. var sErPrpcFlag = "";
  220. var sErbgcd = "";
  221. //---------------------------------------
  222. // 임시, 확정, 처방을 저장하는 함수
  223. //---------------------------------------
  224. function fDataSave(pStat){
  225. trace("01802 fDataSave()");
  226. var CartProcFlag = 0;
  227. var WkGoodQty = ""; // 불출수량
  228. var WkOutQty = ""; // 변경수량
  229. var WkSaveQty = ""; // 변경전 수량 = 불출수량 + 증감수량
  230. var WkAddreductQty = ""; // 증감수량 = 변경수량 - 불출수량
  231. var WkOproomDeptcd = ""; // 수술실방 부서코드
  232. var WkRecFalg = "";
  233. var WkOldAddQty = "0"; // 변경전증감수량
  234. var WkNewAddQty = "0"; // 변경후증감수량
  235. var WkDupflag = "";
  236. var WkDelCheck = ""; // 삭제구분
  237. var WkDeleteYn = "";
  238. //2008-08-21 오전 2:42:29 taebum 물품 실재고량 정보 추가
  239. var sTempStocqty = "";
  240. var tempGoodEngNm = ""; //알림창 용 물품명
  241. var sPrcpDataPat = ds_main_patinfocond_patinfo;
  242. var sCartStat = ds_init_WorkData_cond.getColumn(0, "cartstat"); // 1:임시,2:저장, 3:불출,4:처방,5:확정,9:반납
  243. var sCartUseYn = ds_main_cond.getColumn(0, "cartuseyn");//임시카트리스트 사용여부(카트사용여부)
  244. var sBefPrcpdd = "";
  245. var sPrcpclscd = "";
  246. sLoginDeptcd = ds_main_MmohoprsLists_mmohoprslist.getColumn(0, "issdeptcd");
  247. ProcCartStat = sCartStat + pStat;
  248. var delTempSaveYN = "N"; //@@KNUH, 삭제처방 된 처방 되살리는 경우 별도의 func으로 처리 여부
  249. //2008-08-22 오전 1:51:10
  250. switch(ProcCartStat) {
  251. case("1T") : wCartStat = "2"; // 1:임시 임시만
  252. CartProcFlag = 1;
  253. break;
  254. case("1C") : wCartStat = "4"; // 임시 + 확정
  255. CartProcFlag = 2;
  256. break;
  257. case("1P") : wCartStat = "5"; // 임시 + 확정 + 처방
  258. CartProcFlag = 3;
  259. break;
  260. case("1D") : wCartStat = "2"; // 1:임시 임시만
  261. CartProcFlag = 1;
  262. break;
  263. case("2T") : wCartStat = "2"; // 2:저장 임시만
  264. CartProcFlag = 1;
  265. break;
  266. case("2C") : wCartStat = "4"; // 임시 + 확정
  267. CartProcFlag = 2;
  268. break;
  269. case("2P") : wCartStat = "5"; // 임시 + 확정 + 처방
  270. CartProcFlag = 3;
  271. break;
  272. case("2D") : wCartStat = "2"; // 2:저장 임시만
  273. CartProcFlag = 1;
  274. break;
  275. case("3C") : wCartStat = "4"; // 3:불출 확정
  276. CartProcFlag = 4;
  277. break;
  278. case("3P") : wCartStat = "5"; // 확정 + 처방
  279. CartProcFlag = 5;
  280. break;
  281. case("3D") : wCartStat = "4"; // 3:불출 확정
  282. CartProcFlag = 4;
  283. break;
  284. case("4C") : wCartStat = "4"; // 4:처방 확정
  285. CartProcFlag = 4;
  286. break;
  287. case("4P") : wCartStat = "5"; // 확정 + 처방
  288. CartProcFlag = 5;
  289. break;
  290. case("4D") : wCartStat = "4"; // 4:처방 확정
  291. CartProcFlag = 4;
  292. break;
  293. case("5P") : wCartStat = "5"; // 5:처방확정 확정 + 처방
  294. CartProcFlag = 5;
  295. break;
  296. case("5D") : wCartStat = "5"; // 5:처방확정 확정 + 처방
  297. CartProcFlag = 5;
  298. break;
  299. case("9P") : wCartStat = "9"; // 5:처방확정 확정 + 처방
  300. CartProcFlag = 5;
  301. break;
  302. default:
  303. return;
  304. }
  305. fPrcpHeader(); // 처방 헤더
  306. MnphctosData = fTitleCreate(); // CaseCart물품의 임시처방내역(CCR에서확정)
  307. MnphccolData = fTitleCreate(); // 수술중에 사용한 물품의처방내역(수술처방화면에서등록)
  308. fMrsmHeader(); // 재료집계 헤더
  309. var cartgubn = ds_init_WorkData_cond.getColumn(0, "cartgubn");
  310. //20101214_KNUH_Start 처방로봇수술여부 조회.
  311. if( ds_main_MmohoprsLists_mmohoprslist.getColumn(0, "robotopflag") == "Y" ){
  312. if(cartgubn == "O") {
  313. PrcpData52 = "R";
  314. } else {
  315. PrcpData52 = "";
  316. }
  317. } else {
  318. PrcpData52 = "";
  319. }
  320. var PrcpIdx = 0;
  321. var PrcpFirst = 0; // 처방구성 첫번째 여부
  322. var SubmitCount = 0;
  323. var ProcCd = "";
  324. var ProcData = "";
  325. var PrcpQtyUnitFlag = "-"; // 22 처방수량단위 (약품일 경우 "3", 그렇지 않을경우 "-")
  326. sPrcpPid = eval(gPathNode[6]).getColumn(0, "pid") ; // 환자번호
  327. // -------------------------------------------------------------------------------------
  328. // 수정 입력된 자료를 구성한다. 0000 : ▣
  329. // 물품구분별 For Loop 1:Sutures,2:Supplies,3:Drug,4:Instrument,5:처치처방,6:수술소모품
  330. // -------------------------------------------------------------------------------------
  331. //2008-08-02 오후 6:25:12 taebum add 회복은 수술카트 사용
  332. var tempCartGb = ds_init_WorkData_cond.getColumn(0, "cartgubn");
  333. /*
  334. // 2008-08-18 오후 1:31:55 taebum 회복은 기존처럼 R로 처리
  335. var sTmpCar2Gb = "";
  336. if(tempCartGb == "R"){
  337. sTmpCar2Gb = "R";
  338. }else if(tempCartGb == "A"){
  339. sTmpCar2Gb = "A";
  340. }else{
  341. sTmpCar2Gb = "O";
  342. }
  343. */
  344. //2008-08-18 오후 7:17:03 taebum 발행처 변수 추가
  345. var sIssdeptcd = "";
  346. //2009-03-10 YCD 처치발행처
  347. var sIssdeptcdCure = "";
  348. //2008-10-31 오후 8:28:39 taebum 소급관련 전역변수 초기화
  349. sRecalfromdd = "";
  350. sRecaltodd = "";
  351. sRecalddStr = "";
  352. //2008-11-28 오후 3:31:06 taebum 일반청구성 물품 관련 변수
  353. sReqmthd = "";
  354. sMrsmInfoData = ""; //서버에 전송할 일반청구 물품 정보 초기화
  355. sGoodCrFlag = "";
  356. sInsuPynpy = "-";
  357. sNightYn = eval(gPathNode[6]).getColumn(0, "prcpamtaddyn");
  358. if( utlf_isNull(sNightYn) ){
  359. sNightYn = "N";
  360. }
  361. /*
  362. var gPathName = "/root/main/MnphcagoLists" + " " 0 Cart물품
  363. + "/root/main/MnpmcartList" + " " 1 CartCode
  364. + "/root/main/MmbhppdsLists" + " " 2 처치처방
  365. + "/root/init/WorkData/DelMnphcagoListss" + " " 3 삭제Cart물품
  366. + "/root/init/WorkData/codelists" + " " 4 Save Cart Master
  367. + "/root/init/WorkData/MnphcagoLists" + " " 5 Save 물품 내역
  368. + "/root/main/MmohoprsLists/mmohoprslist" + " " 6 예약정보 Path
  369. + "/root/main/operation/list" + " " 7 수술예약 상단정보
  370. + "/root/main/CartOrdData" ; 8 Cart Order Display Data Instance Path
  371. var gPathNode = gPathName.split(" ");
  372. var tCartPath = "ListSupplies" + " " 0 공급물품
  373. + "ListDrug" + " " 1 약재료
  374. + "ListInstrument" + " " 2 기구
  375. + "ListOpsupply" + " " 3 수술소모품
  376. + "ListDiposit" ; 4 가납물품
  377. var tPathCart = tCartPath.split(" ");
  378. var tCartName = "supplies" + " " 공급물품 0
  379. + "drug" + " " 약재료 1
  380. + "instrument" + " " 기구 2
  381. + "opsupply" + " " 수술소모품 3
  382. + "diposit" ; 가납물품 4
  383. var tNameCart = tCartName.split(" "); */
  384. //2008-12-29 오전 11:04:24 taebum 수술일 이후에 수술료를 발생시킬경우 소급인터페이스 추가
  385. var sTempOpcnfmdd = eval(gPathNode[6]).getColumn(0, "opcnfmdd");
  386. var sCalArr = new Array();
  387. var supcnt = 0;
  388. for( var Idx=0 ; Idx<5 ; Idx++ ){
  389. wCartPath = eval(gPathNode[8]+tPathCart[Idx]); // gPathNode[8] : "root/main/CartOrdData"
  390. sRowCnt = eval(sGridNm[Idx]).rowcount;
  391. PrcpData = "";
  392. sMrsmData = "";
  393. PrcpQtyUnitFlag = (Idx == 1) ? "3" : "-"; // 22 처방수량단위 (약품일 경우 "3", 그렇지 않을경우 "-")
  394. // ---------------------------------------------------
  395. // For Loop : 물품구분에 해당하는 Grid별 물품Check
  396. // ---------------------------------------------------
  397. for( var i=0 ; i<sRowCnt ; i++ ){
  398. SvRecflag = wCartPath.getColumn(i, "recflag"); // 17 U:수정,I:입력구분
  399. //2008-09-06 오후 1:55:14 taebum add 삭제된 경우 check 안되도록 수정 및 저장 시 전체 check 시 disable된 삭제처방이
  400. // 선택되었을 경우 skip 처리
  401. var tempDeleteyn = wCartPath.getColumn(i, "deleteyn"); //
  402. var tempDelcheck = wCartPath.getColumn(i, "delcheck"); //
  403. if( tempDeleteyn == "X" && tempDelcheck == "1" ){
  404. continue;
  405. }
  406. var delTempPid = wCartPath.getColumn(i, "pid"); //@@KNUH, 삭제처방 된 처방 되살리는 경우 별도의 func으로 처리
  407. var delTempSaveqty = wCartPath.getColumn(i, "saveqty"); //@@KNUH, 삭제처방 된 처방 되살리는 경우 별도의 func으로 처리
  408. var delTempOutqty = wCartPath.getColumn(i, "outqty"); //@@KNUH, 삭제처방 된 처방 되살리는 경우 별도의 func으로 처리
  409. var delTempPrcpno = wCartPath.getColumn(i, "prcpno"); //@@KNUH, 처방을추가했다가 바로 삭제하고 확정저장하는 경우, 저장하는 값에서 제외돼야 함 (2011.02.11 JJE)
  410. if( pStat == "C" && delTempPid == "DELETE" && tempDeleteyn == "D" && delTempSaveqty == 0 && delTempOutqty > 0 ){ //@@KNUH, 삭제처방 된 처방 되살리는 경우 별도의 func으로 처리
  411. delTempSaveYN = "Y";
  412. continue;
  413. }
  414. if( pStat == "P" && tempDelcheck=="1" && (delTempPrcpno=="0" || utlf_isNull(delTempPrcpno)) ){ //@@KNUH, 처방을추가했다가 바로 삭제하고 확정저장하는 경우, 저장하는 값에서 제외돼야 함 (2011.02.11 JJE)
  415. continue;
  416. }
  417. if ((pStat == "D") && (SvRecflag == "I")) continue; // { // 삭제 이면 입력인 자료는 제외한다.
  418. WkDelCheck = wCartPath.getColumn(i, "delcheck"); // 삭제구분
  419. WkDeleteYn = wCartPath.getColumn(i, "deleteyn"); // 삭제여부
  420. WkGoodQty = wCartPath.getColumn(i, "goodqty"); // 불출수량
  421. WkAddreductQty = wCartPath.getColumn(i, "addreductqty"); // 증감수량 = 변경수량 - 불출수량
  422. WkSaveQty = wCartPath.getColumn(i, "saveqty"); // 변경전 수량 = 불출수량 + 증감수량
  423. WkOutQty = wCartPath.getColumn(i, "outqty"); // 변경수량
  424. SvOprsrvno = wCartPath.getColumn(i, "oprsrvno"); // 01 수술예약(의뢰)번호 (년도 + 일련번호)
  425. SvCartgubn = wCartPath.getColumn(i, "cartgubn"); // 02 Cart구분 (O:수술,A:마취, R:회복) 2008-08-02 오후 6:49:10 taebum R:회복은 O수술을 같이 쓴다.
  426. WkOproomDeptcd = wCartPath.getColumn(i, "oproomdeptcd");
  427. sBefPrcpdd = wCartPath.getColumn(i, "prcpdd");
  428. sPrcpclscd = wCartPath.getColumn(i, "prcpclscd");
  429. sReqmthd = wCartPath.getColumn(i, "reqmthd");
  430. sGoodCrFlag = wCartPath.getColumn(i, "goodcrflag"); // 물품발생구분(정규 : S , 응급 : E )
  431. sInsuPynpy = wCartPath.getColumn(i, "insupynpy1"); // 급여구분
  432. sSignNo = wCartPath.getColumn(i, "signno"); // 인증번호
  433. sGrupcd = wCartPath.getColumn(i, "grupcd"); //그룹코드
  434. sErbgcd = wCartPath.getColumn(i, "erbgcd"); //그룹코드
  435. /*
  436. //2008-08-18 오후 7:18:21 taebum 약품일 경우 발행처 정보 Setting 주석처리
  437. if (Idx == 3) { // 약품일 경우 "3"
  438. if (tempCartGb == "A") {
  439. WkOproomDeptcd = "3073100000"; // 마취부서코드
  440. } else if (tempCartGb == "R") {
  441. WkOproomDeptcd = "3073300000"; // 회복실부서코드
  442. } else {
  443. WkOproomDeptcd = "3070000000"; // 수술실
  444. }
  445. }
  446. */
  447. //===============================================================================
  448. //2008-08-18 오후 7:19:21 taebum add
  449. /*
  450. Cart O : 발행처 - 수술실 대표코드 , 실시부서 - 수술방 매핑코드
  451. Cart A : 발행처 - 마취간호 대표코드 , 실시부서 - 마취간호 대표코드
  452. Cart R : 발행처 - 회복실 대표코드 , 실시부서 - 회복실 대표코드
  453. WkOproomDeptcd : 처방실시 부서코드
  454. PrcpData4141 : 발행처 부서코드
  455. */
  456. /* 2009-03-26 YCD 삭제 처리
  457. if (tempCartGb == "A") {
  458. sIssdeptcd = sLoginDeptcd; // 마취부서코드
  459. sIssdeptcdCure = sLoginDeptcd; // 마취부서코드
  460. WkOproomDeptcd = sLoginDeptcd; // 마취부서코드
  461. //sIssdeptcd = sLoginDeptcd;
  462. //WkOproomDeptcd = sLoginDeptcd;
  463. } else if (tempCartGb == "R") {
  464. sIssdeptcd = sLoginDeptcd; // 회복실부서코드
  465. sIssdeptcdCure = sLoginDeptcd; // 회복실부서코드
  466. WkOproomDeptcd = sLoginDeptcd; // 회복실부서코드
  467. //sIssdeptcd = sLoginDeptcd;
  468. //WkOproomDeptcd = sLoginDeptcd;
  469. } else {
  470. if(sLoginDeptcd == "3072700000"){ // 수술실 안과
  471. sIssdeptcd = sLoginDeptcd; // 수술실(물류)
  472. sIssdeptcdCure = model.getValue(gPathNode[6]+"/perfdeptcd") ; // 수술실(처치)
  473. }else{ // 수술실
  474. sIssdeptcd = "3070000000"; // 수술실(물류)
  475. sIssdeptcdCure = "3070000000"; // 수술실(처치)
  476. }
  477. //WkOproomDeptcd는 부서 매핑 코드를 그대로 사용함.
  478. }
  479. */
  480. // 부유형(subcretno) 셋팅
  481. var subcret = wCartPath.getColumn(i, "anamneflag");
  482. var chkprcpno = wCartPath.getColumn(i, "prcpno");
  483. var subcretno = 0;
  484. if( chkprcpno == 0 ){
  485. if(subcret == "1") {
  486. if (supcnt == 0 ) {
  487. // alert(supcnt);
  488. var flag = fSuppkind();
  489. supcnt++;
  490. if(flag == "false") {
  491. return;
  492. }
  493. }
  494. var subcretno = ds_temp_prcpinfo.getColumn(0, "subcretno");
  495. } else {
  496. subcretno = "0"
  497. }
  498. }
  499. PrcpData2938 = "N" + "▦" // 29 포터블처방구분 (Y/N) ==> default : "N"
  500. + "N" + "▦" // 30 정액처방구분 (Y/N) ==> default : "N"
  501. + "N" + "▦" // 31 선택처방구분 (Y/N) -> 만약 "-"일 경우 원무정보 기준으로 처리 ==> default : "N"
  502. + (wCartPath.getColumn(i, "anamneflag") == "1" ? "Y" : "N") + "▦" // 32 기왕력(증)구분 (Y/N) ==> default : "N"
  503. + "-" + "▦" // 33 처방방향구분 (코드정의서 M0041 참조), 재활은 위치구분으로 사용 : "-" => default : "-"
  504. + "-" + "▦" // 34 Angio구분 (코드정의서 M0006 참조) : "-" => default : "-"
  505. + "-" + "▦" // 35 수술마취구분 (코드정의서 M0007, M0008 참조) : "-" => default : "-"
  506. + "0000" + "▦" // 36 마취처방에 대한 마취적용시간 - 분을 4자리로 표현, 연속검사 검사간격 => default : "0000"
  507. + "N" + "▦" // 37 출장검진구분 (Y/N) => default : "N"
  508. + "00NNN" + "▦"; // 38 "00NNN" 건진청구구분, 조혈모(줄기)세포 구분 - Stem Cell Source 여부 ,Cryo여부, CD34 채집여부, 해동여부의 조합으로 구성 => default : "00NNN"
  509. //+ "-" + "▦" // 39 원내외구분(건진은 "I", 약이 아닐경우 "-") => default : "-"
  510. //+ "00" + "▦"; // 40 원내처방사유 (건진에 해당하는 사유 - 정의, 약이 아닐경우 "00") => default : "00"
  511. //PrcpData4949 = model.getValue(wCartPath + "[" + (i) +"]/prcpdelivefact") + "▦";
  512. PrcpData4949 = "-" + "▦";
  513. PrcpData73 = subcretno + "▩" ; // 부유형 +"▦"; // 73 부유형(subcretno)
  514. if(tempCartGb == "A" || tempCartGb == "R"){
  515. sIssdeptcd = sLoginDeptcd; // 마취부서코드, 회복실부서코드
  516. sIssdeptcdCure = sLoginDeptcd; // 마취부서코드, 회복실부서코드
  517. WkOproomDeptcd = sLoginDeptcd; // 마취부서코드, 회복실부서코드
  518. if( (sPrcpclscd == "H2")||(sPrcpclscd == "A2")||(sPrcpclscd == "A4")||(sPrcpclscd == "A6")||
  519. (sPrcpclscd == "C2")||(sPrcpclscd == "C4")||(sPrcpclscd == "B2")||(sPrcpclscd == "B4") ) {//H2:수술, A2:경구, A4:외용, A6:주사, C2:영상, C4:ANGIO, B2:진건, B4:수혈(후인증대상 처방)
  520. PrcpData44 = "1" + "▦";//후인증 필드
  521. PrcpData7172 = "12" + "▦"
  522. + eval(gPathNode[6]).getColumn(0, "anstdrid") + "▦";//후인증 구분(11:수술간호처방)+후인증 의사(수술:집도의, 마취(회복):마취의)
  523. }else {
  524. PrcpData44 = "0" + "▦";//후인증 필드
  525. PrcpData7172 = "-" + "▦" + "-" + "▦"
  526. }
  527. }else{
  528. sIssdeptcd = sLoginDeptcd; // 수술실
  529. sIssdeptcdCure = sLoginDeptcd; //
  530. if( (sPrcpclscd == "H2")||(sPrcpclscd == "A2")||(sPrcpclscd == "A4")||(sPrcpclscd == "A6")||
  531. (sPrcpclscd == "C2")||(sPrcpclscd == "C4")||(sPrcpclscd == "B2")||(sPrcpclscd == "B4") ) {//H2:수술, A2:경구, A4:외용, A6:주사, C2:영상, C4:ANGIO, B2:진건, B4:수혈(후인증대상 처방)
  532. PrcpData44 = "1" + "▦";//후인증 필드
  533. PrcpData7172 = "12" + "▦"
  534. + eval(gPathNode[6]).getColumn(0, "perfdrid") + "▦";//후인증 구분(12:수술간호처방)+후인증 의사(수술:집도의, 마취(회복):마취의)
  535. }else {
  536. PrcpData44 = "0" + "▦";//후인증 필드
  537. PrcpData7172 = "-" + "▦" + "-" + "▦"
  538. }
  539. }
  540. //===============================================================================
  541. SvOrdseq = wCartPath.getColumn(i, "ordseq"); // 03 처방순번
  542. SvInstcd = wCartPath.getColumn(i, "instcd"); // 04 병원기관코드(코드정의서 Z0007 참조)
  543. SvGoodcd = utlf_transNullToEmpty(wCartPath.getColumn(i, "goodcd")); // 05 물품코드
  544. SvAllsizespecid = wCartPath.getColumn(i, "allsizespecid"); // 06 ALLSIZE규격ID
  545. SvGoodcls = wCartPath.getColumn(i, "goodcls"); // 07 물품구분 1:Sutures,2:Supplies,3:Drug,4:Instrument,5:처치처방,6:수술소모품
  546. SvGoodqty = wCartPath.getColumn(i, "goodqty"); // 08 물품수량
  547. SvAddreductqty = wCartPath.getColumn(i, "addreductqty"); // 09 가감수량
  548. SvPayflagcd = wCartPath.getColumn(i, "payflagcd"); // 10 급여구분코드 (코드정의서 M0029 참조)
  549. SvOproomcd = wCartPath.getColumn(i, "oproomcd"); // 11 수술실코드
  550. SvRoomdeptcd = wCartPath.getColumn(i, "oproomdeptcd"); // 12 수술방부서코드
  551. SvPrcpmemo = wCartPath.getColumn(i, "prcpmemo"); // 13 처방수정MEMO(사유)
  552. SvPrcpdd = wCartPath.getColumn(i, "prcpdd"); // 14 처방일자
  553. SvPrcpno = wCartPath.getColumn(i, "prcpno"); // 15 처방일자별 일련번호
  554. SvPrcphistno = wCartPath.getColumn(i, "prcphistno"); // 16 처방이력생할때 마다 생성 (처방일자, 처방번호, 기관코드 기준)
  555. SvPid = wCartPath.getColumn(i, "pid"); // 17 등록번호
  556. sPrcpno = wCartPath.getColumn(i, "prcpno"); // 18 등록번호2009.10.16 K.J.M 재고변동여부 체크
  557. sPid = wCartPath.getColumn(i, "pid"); // 19 등록번호2009.10.16 K.J.M 재고변동여부 체크
  558. SvReqtabcls = ""; // 20 테이블구 T:임시처방, C: 확정처방
  559. SvGoodengnm = wCartPath.getColumn(i, "goodengnm"); // 21 물품명
  560. sPurcflag = wCartPath.getColumn(i, "purcflag"); // 22 구매구분
  561. SvOldPayflagcd = wCartPath.getColumn(i, "old_payflagcd"); //
  562. //2008-08-21 오전 2:43:51 taebum 임시저장 이거나 인증저장일 경우 환자의 수술방에 물품재고량이 없을 경우 경고창 처리
  563. sTempStocqty = wCartPath.getColumn(i, "stocqty");
  564. //2009-07-20 산정여부 추가 K.J.M
  565. sCalCulYn = wCartPath.getColumn(i, "calculyn");//구매 산정여부
  566. //2009-08-18 수가대상여부, 수가코드 K.J.M
  567. sInsuYn = wCartPath.getColumn(i, "insuyn");//구매 수가대상 여부
  568. sCalcscorcd = wCartPath.getColumn(i, "calcscorcd");//수가코드
  569. //2009.12.29 처방 종료일자 K.J.M
  570. sTodd = wCartPath.getColumn(i, "todd");//종료일자
  571. sLisTodd = wCartPath.getColumn(i, "listodd");//종료일자
  572. sSpcmTodd = wCartPath.getColumn(i, "spcmtodd");//종료일자
  573. sGrupcd = wCartPath.getColumn(i, "grupcd");//그룹코드
  574. if( sInsuYn == "Y" && utlf_isNull(sCalcscorcd) && tempDelcheck != "1" ){//삭제일경우는 제외
  575. sysf_messageBox( SvGoodcd+"코드 처방 할 수 없습니다.!", "E000");
  576. return;
  577. }
  578. //처방불가 물품은 처방 안되게 막음, 삭제는 제외 2009.08.31 K.J.M
  579. if( sReqmthd == "X" && tempDelcheck != "1" && tempDeleteyn != "X" ){ //@@ KNUH, 추가처방 확정 저장 시 삭제구분 X 처방이 수가에 없는 처방으로 블로킹 걸리는 오류 조치 (2011.02.14 JJE)
  580. sysf_messageBox( SvGoodcd+"코드 처방불가이므로 처방 할 수 없습니다.!", "E000");
  581. return;
  582. }
  583. //종료된 물품은 처방 안되게 막음, 2009.10.19 K.J.M
  584. //if( (sReqmthd == "" || sPrcpclscd == "")&&( sTodd != "99991231" )&&( SvGoodcd.substring(0, 1) != "T" )&&(!(tempDelcheck == "true" || tempDelcheck == true)) ) {//구매와 처방마스터에 살아있는 정보가 없으면 처방 막음, 중앙공급실에서 생성한 물품은 제외
  585. if( (sTodd <= utlf_getCurrentDate()) && (SvGoodcd.substring(0, 1) != "T") && tempDelcheck != "1" ){//구매와 처방마스터에 살아있는 정보가 없으면 처방 막음, 중앙공급실에서 생성한 물품은 제외
  586. if( SvRecflag != "U" && ProcCartStat == "5P" ){//이미 처방된것은 걸리지 않게 함
  587. sysf_messageBox( SvGoodcd+" 종료된 코드이므로 처방 할 수 없습니다.!", "E000");
  588. return;
  589. }
  590. }
  591. var sIndexCnt = 0;
  592. var sLength = sCalArr.length;
  593. if( initCnt == 0 ) {
  594. sCalArr[sLength] = new Array(3);
  595. sCalArr[sLength][0] = SvGoodcd;
  596. sCalArr[sLength][1] = 0;//비산정 카운트
  597. sCalArr[sLength][2] = 0;//산정 카운트
  598. initCnt++;
  599. }
  600. //alert(sCalArr.length);
  601. //삭제이면 카운트 안함.
  602. if( sCalCulYn == "N" && WkDelCheck != "1" && utlf_isNull(WkDeleteYn) ){//비산정
  603. for( var s=0 ; s<sCalArr.length ; s++ ) {
  604. sTGoodcd = sCalArr[s][0];//물품코드
  605. sNonCalCount = sCalArr[s][1];//비산정 카운트
  606. //alert(sTGoodcd);
  607. if( sTGoodcd == SvGoodcd ) {//같은 물품이면
  608. sCalArr[s][1] = (sNonCalCount+1);
  609. sIndexCnt++;
  610. //alert(sCalArr[s][1]);
  611. }
  612. }
  613. if( sIndexCnt < 1 ) {//배열에 없는 물품코드는 추가
  614. sCalArr[sLength] = new Array(3);
  615. sCalArr[sLength][0] = SvGoodcd;
  616. sCalArr[sLength][1] = 1;//비산정 카운트
  617. sCalArr[sLength][2] = 0;//산정 카운트
  618. }
  619. }else if( sCalCulYn == "Y" && WkDelCheck != "1" && utlf_isNull(WkDeleteYn) ){//산정
  620. for( var s=0 ; s<sCalArr.length ; s++ ){
  621. sTGoodcd = sCalArr[s][0];//물품코드
  622. sCalCount = sCalArr[s][2];//산정 카운트
  623. if( sTGoodcd == SvGoodcd ) {//같은 물품이면
  624. sCalArr[s][2] = (sCalCount+1);
  625. sIndexCnt++;
  626. }
  627. }
  628. if( sIndexCnt < 1 ) {//배열에 없는 물품코드는 추가
  629. sCalArr[sLength] = new Array(3);
  630. sCalArr[sLength][0] = SvGoodcd;
  631. sCalArr[sLength][1] = 0;//비산정 카운트
  632. sCalArr[sLength][2] = 1;//산정 카운트
  633. }
  634. }
  635. if( Idx == 1 ){ // 약품일 경우 "3"
  636. //2009-03-10 YCD 추가
  637. if( ordtype == "O" ){
  638. PrcpData2528_R = SvPayflagcd + "▦" // 25 급여구분코드 (M0029 참조) -> "-"로 넣으주면 환자의 보험유형에 따라 자동 발생
  639. + "N" + "▦" // 26 응급처방구분 (Y/N) ==> default : "N"
  640. + "Y" + "▦" // 27 선처치처방구분 (Y/N) ==> default : "N" MMBTPRCD
  641. + "N" + "▦"; // 28 야간처방구분 (Y/N) : 야간가산에 해당 될 경우 ==> default : "N"
  642. }else{
  643. PrcpData2528_R = SvPayflagcd + "▦" // 25 급여구분코드 (M0029 참조) -> "-"로 넣으주면 환자의 보험유형에 따라 자동 발생
  644. + "N" + "▦" // 26 응급처방구분 (Y/N) ==> default : "N"
  645. + "N" + "▦" // 27 선처치처방구분 (Y/N) ==> default : "N" MMBTPRCD
  646. + "N" + "▦"; // 28 야간처방구분 (Y/N) : 야간가산에 해당 될 경우 ==> default : "N"
  647. }
  648. //2008-12-29 오전 9:34:34 taebum
  649. // 약품일 경우 원내/원외 구분을 원내로 setting함.
  650. if( ordtype == "O" ){//외래 환자
  651. if( sPrcpclscd == "A2" || sPrcpclscd == "A4" ){//경구, 외용제
  652. PrcpData3940_R = "I" + "▦" // 39 원내외구분(건진은 "I", 약이 아닐경우 "-") => default : "-"
  653. + "55" + "▦"; // 검사를 위하여 필요하거나 수술 및 처치에 사용하는 주사제
  654. }else if( sPrcpclscd == "A6" ){//주사제
  655. PrcpData3940_R = "I" + "▦" // 39 원내외구분(건진은 "I", 약이 아닐경우 "-") => default : "-"
  656. + "52" + "▦"; // 주사제를 원내 투약한 경우
  657. }else{
  658. PrcpData3940_R = "I" + "▦" // 39 원내외구분(건진은 "I", 약이 아닐경우 "-") => default : "-"
  659. + "55" + "▦"; // 검사를 위하여 필요하거나 수술 및 처치에 사용하는 주사제
  660. }
  661. }else{//입원 환자의 경우
  662. PrcpData3940_R = "I" + "▦" // 39 원내외구분(건진은 "I", 약이 아닐경우 "-") => default : "-"
  663. + "00" + "▦";
  664. }
  665. SvDrugMthdSpccd = wCartPath.getColumn(i, "drugmthdspccd"); // 21 투여방법 및 검체코드
  666. if( utlf_isNull(SvDrugMthdSpccd) && pStat == "P" && WkOutQty != "0" ){
  667. sysf_messageBox("확정처방 저장시 용법지정은 필수 입력사항입니다.", "I000");
  668. return;
  669. }
  670. //2008-10-01 오후 12:58:22 taebum 예외용법일 경우를 체크하는 로직 추가
  671. if(SvDrugMthdSpccd == "IE" || SvDrugMthdSpccd == "EYDR" || SvDrugMthdSpccd == "XCO" || SvDrugMthdSpccd == "XWA" ||
  672. SvDrugMthdSpccd == "XIR" || SvDrugMthdSpccd == "XPR" || SvDrugMthdSpccd == "XFPR" || SvDrugMthdSpccd == "XCIC" ||
  673. SvDrugMthdSpccd == "IAR" || SvDrugMthdSpccd == "ICO" || SvDrugMthdSpccd == "IBB" || SvDrugMthdSpccd == "IVB" ||
  674. SvDrugMthdSpccd == "IVD" || SvDrugMthdSpccd == "IVSI" || SvDrugMthdSpccd == "ISA3" || SvDrugMthdSpccd == "IRB" ||
  675. SvDrugMthdSpccd == "SCJ" || SvDrugMthdSpccd == "IM" || SvDrugMthdSpccd == "ANES" ){
  676. SvDrugMthdSpcEtc = "-";
  677. SvDrugMthdSpccd = SvDrugMthdSpccd;
  678. }else{
  679. if( utlf_isNull(SvDrugMthdSpccd) ){
  680. SvDrugMthdSpcEtc = "-";
  681. SvDrugMthdSpccd = SvDrugMthdSpccd;
  682. }else{
  683. SvDrugMthdSpcEtc = SvDrugMthdSpccd;
  684. SvDrugMthdSpccd = "ZZZ";
  685. if(SvDrugMthdSpcEtc == "ZZZ"){
  686. SvDrugMthdSpcEtc = "-";
  687. }
  688. }
  689. }
  690. }else{//약품이 아닐경우
  691. //20110325 이선경(경북대) : 응급처방여부
  692. sErPrpcFlag = (wCartPath.getColumn(i, "erprcpflag") == "1" ? "Y" : "N"); //응급처방여부
  693. if( utlf_isNull(sErPrpcFlag) ){ //값이 없는 경우는 디폴드값으로 넣어줌
  694. sErPrpcFlag = "N";
  695. }
  696. //2009-03-10 YCD 추가
  697. PrcpData2528_R = SvPayflagcd + "▦" // 25 급여구분코드 (M0029 참조) -> "-"로 넣으주면 환자의 보험유형에 따라 자동 발생
  698. //+ "N" + "▦" // 26 응급처방구분 (Y/N) ==> default : "N"
  699. + sErPrpcFlag + "▦" // 26 응급처방구분 (Y/N) ==> default : "N"
  700. + "Y" + "▦" // 27 선처치처방구분 (Y/N) ==> default : "N" MMBTPRCD
  701. + sNightYn + "▦"; // 28 야간처방구분 (Y/N) : 야간가산에 해당 될 경우 ==> default : "N"
  702. //2008-12-29 오전 10:41:11 taebum
  703. // 약품이 아닐 경우 원내/원외 구분을 - setting함.
  704. PrcpData3940_R = "-" + "▦" // 39 원내외구분(건진은 "I", 약이 아닐경우 "-") => default : "-"
  705. + "00" + "▦";
  706. //처방구분이 수술일 경우.
  707. if(sPrcpclscd == "H2"){
  708. svOpansflagcd = "4";//주수술 setting
  709. }else{
  710. svOpansflagcd = "-";
  711. }
  712. SvDrugMthdSpcEtc = "-";
  713. SvDrugMthdSpccd = "-";
  714. }
  715. WkGoodQty = utlf_isNull(WkGoodQty) ? "0" : WkGoodQty ; // 불출수량
  716. WkAddreductQty = utlf_isNull(WkAddreductQty) ? "0" : WkAddreductQty ; // 증감수량 = 변경수량 - 불출수량
  717. WkSaveQty = utlf_isNull(WkSaveQty) ? "0" : WkSaveQty ; // 변경전 수량 = 불출수량 + 증감수량
  718. WkOutQty = utlf_isNull(WkOutQty) ? "0" : WkOutQty ; // 변경수량
  719. //
  720. WkPid = SvPid;
  721. WkDupflag = "N";
  722. WkRecFalg = "X";
  723. WkRecFalg = SvRecflag;
  724. WkOldAddQty = parseFloat(WkSaveQty) - parseFloat(WkGoodQty) ; // 변경전증감수량
  725. WkNewAddQty = parseFloat(WkOutQty ) - parseFloat(WkGoodQty) ; // 변경후증감수량
  726. if( WkDelCheck == "1" ) { // 삭제구분
  727. ProcCd = ProcCartStat + "D";
  728. }else {
  729. ProcCd = ProcCartStat + SvRecflag;
  730. }
  731. //---------------------------------
  732. // 처리형태를 가져온다
  733. //---------------------------------
  734. ProcData = fActionCodeCheck(ProcCd);
  735. SvAddreductqty = WkAddreductQty; // 09 가감수량
  736. // SvPid = (SvPid == "" ) ? sPrcpPid : SvPid ; // 환자번호
  737. SvPrcpdd = utlf_isNull(SvPrcpdd) ? "" : SvPrcpdd ; // 처방일자
  738. SvPrcpno = utlf_isNull(SvPrcpno) ? "0" : SvPrcpno ; // 처방일자별 일련번호
  739. SvPrcphistno = utlf_isNull(SvPrcphistno) ? "0" : SvPrcphistno ; // 처방이력생할때 마다 생성
  740. SvRowno = ""; // 17 줄번호
  741. if( !utlf_isNull(ProcData) && utlf_isNull(WkDeleteYn) ){
  742. ActProc = ProcData.split("*"); //
  743. WkPid = sPrcpPid;
  744. if( ActProc[2] == "UI" ) {
  745. if (WkNewAddQty != WkOldAddQty || SvPayflagcd != SvOldPayflagcd) {
  746. WkPid = "DELETE";
  747. }
  748. }
  749. if (ActProc[2] == "UX") {
  750. WkPid = "DELETE";
  751. }
  752. //---------------------------------
  753. // 처방 수정 및 입력하는 루틴
  754. //---------------------------------
  755. if (ActProc[3] != "XX") {
  756. if (PrcpFirst == 0) {
  757. PrcpFirst = 1;
  758. fInitPrcpData(); // 처방내역 기본 SET
  759. // 처방일자
  760. //2008-10-04 오후 1:09:24 수술처방일 경우에도 처방일자는 현재일자로 내보내도록 수정.
  761. PrcpDate = utlf_getCurrentDate();//model.getValue(gPathNode[6] + "/opcnfmdd"); // 수술 처방확정일자
  762. }
  763. PrcpData2528 = PrcpData2528_R;
  764. PrcpData3940 = PrcpData3940_R;
  765. SvPrcpdd = PrcpDate ; // 처방일자
  766. PrcpData1520 = SvGoodcd + "▦" // 15 처방코드
  767. + SvGoodcd + "▦" // 16 수가코드 MMBTPRCD의 수가 코드 가져올것
  768. + "-" + "▦" // 17 종속처방코드 ("-") => default : "-"
  769. + 0 + "▦" // 18 종속처방번호 (일련번호 - 종속처방코드별로 생성) => default : 0
  770. + WkOproomDeptcd + "▦" // 19 처방실시부서코드 (수가의 접수부서를 넣어 주거나, 접수하는 부서코드, 없을 경우 "-"로 처리)
  771. + PrcpDate + "▦"; // 20 처방희망일자 (처방일자 이전으로 발생불가)
  772. //2008-08-18 오후 7:23:14 taebum 발행부서 정보 변경
  773. //PrcpData4141 = WkOproomDeptcd + "▦"; // 41 발행부서코드 (집계가 타부서일 경우 타과코드, 입원은 기본이 병동) -> "-" 로 처리하면 자동 처리(기본은 처방입력부서이나 입원은 해당 병동으로 처리) => default : "-"
  774. if(SvGoodcls == "5"){ //처치처방
  775. PrcpData4141 = sIssdeptcdCure + "▦"; // 41 발행부서코드 (집계가 타부서일 경우 타과코드, 입원은 기본이 병동) -> "-" 로 처리하면 자동 처리(기본은 처방입력부서이나 입원은 해당 병동으로 처리) => default : "-"
  776. }else{
  777. PrcpData4141 = sIssdeptcd + "▦"; // 41 발행부서코드 (집계가 타부서일 경우 타과코드, 입원은 기본이 병동) -> "-" 로 처리하면 자동 처리(기본은 처방입력부서이나 입원은 해당 병동으로 처리) => default : "-"
  778. }
  779. if( SvAllsizespecid == "0" || utlf_isNull(SvAllsizespecid) ){
  780. PrcpData64 = "-▦";
  781. }else{
  782. PrcpData64 = SvAllsizespecid+"▦";
  783. }
  784. //2008-10-01 오후 1:07:33 taebum free text 입력 용법 추가
  785. PrcpData65 = SvDrugMthdSpcEtc+"▦";
  786. if( utlf_isNull(PrcpData65) ){
  787. PrcpData65 = "-"+"▦";
  788. }
  789. //opansflagcd add
  790. PrcpData66 = svOpansflagcd+"▦";
  791. if( utlf_isNull(SvDrugMthdSpccd) ) SvDrugMthdSpccd = "-";
  792. PrcpData4848 = SvDrugMthdSpccd + "▦" ; // 48 투여방법및검체코드(약일 경우 복용방법, 진검 및 병리일 경우 검체코드, Default "-") => default : "-"
  793. PrcpData68 = SvGoodengnm + "▦"; // 68 처방명
  794. if( utlf_isNull(sPrcpclscd) && sReqmthd == "1" ){
  795. sysf_messageBox("["+SvGoodcd+ "] 처방 분류 정보가 존재하지 않습니다. 수가 정보 확인이 필요합니다.", "E000");
  796. return;
  797. }else{
  798. PrcpData69 = sPrcpclscd + "▦-▦"; // 69 처방분류코드 + 70 투여비율
  799. //PrcpData69 = sPrcpclscd + "▦-▩"; // 69 처방분류코드 + 70 투여비율
  800. }
  801. // -----------------------------------------------------------------------
  802. // 처방이 수정되어 DC를 내린다.(처방이 수정되어 생성과DC를 동시에 내린다.)
  803. // -----------------------------------------------------------------------
  804. if( (ActProc[3] == "IC" && SvGoodcls != "4" && SvGoodcls != "6" && SvGoodcls != "10") || (ActProc[3] == "IC" && !utlf_isNull(sReqmthd) && (SvGoodcls == "4" || SvGoodcls == "6" || SvGoodcls == "10")) ){
  805. if( WkNewAddQty != WkOldAddQty || SvPayflagcd != SvOldPayflagcd ){
  806. if( parseFloat(WkSaveQty) != 0 ){
  807. if( utlf_isNull(sRecalddStr) ){
  808. sRecalddStr = sBefPrcpdd;
  809. }else{
  810. sRecalddStr = sRecalddStr+"▧"+sBefPrcpdd;
  811. }
  812. PrcpIdx++;
  813. PrcpData0101 = "C" + "▦"; // 01 신규(I), DC(C)
  814. PrcpData0205 = PrcpIdx + "▦" // 02 줄번호 (병리 요구)
  815. //2008-10-04 오후 1:19:23 taebum 수정
  816. + sBefPrcpdd + "▦" // 03 처방일자(외래/종건은 orddd와 동일, 입원은 처방일자)
  817. + SvPrcpno + "▦" // 04 처방번호 (status가 "I"일 경우 0)
  818. + SvPrcphistno + "▦"; // 05 처방이력번호 (status가 "I"일 경우 0)
  819. PrcpData2122 = WkSaveQty + "▦" // 21 처방수량 (1) (약품일 경우 반드시 포장단위 수량을 넣어 주어야 됨) => default : 1
  820. + PrcpQtyUnitFlag + "▦"; // 22 처방수량단위 (약품일 경우 "3", 그렇지 않을경우 "-")
  821. //일반 청구성 물품일 경우, 비산정 처방
  822. //if(sReqmthd == "3"||sCalCulYn == "N")
  823. //최소현 선생님 요청으로 산정 로직 중단 2009.10.14
  824. //2010.04.19 K. J. M 산정로직 추가(비산정일때는 구매집계에도 내려가면 안됨
  825. if( sCalCulYn != "N" ) {
  826. if(sReqmthd == "3"){
  827. sMrsmData += utlf_getCurrentDate() +"▦"
  828. + "" +"▦"
  829. + "" +"▦"
  830. + sPrcpPid +"▦"
  831. + ordindd +"▦"
  832. + cretno +"▦"
  833. + eval(gPathNode[6]).getColumn(0, "orddeptcd") +"▦"
  834. + eval(gPathNode[6]).getColumn(0, "orddrid") +"▦"
  835. + eval(gPathNode[6]).getColumn(0, "oppatflagcd") +"▦"
  836. + sBefPrcpdd +"▦"
  837. + "999999999" +"▦"
  838. + SvGoodcd +"▦"
  839. + "D" +"▦"
  840. + WkSaveQty +"▦"
  841. + "1" +"▦"
  842. + "1" +"▦"
  843. + WkSaveQty +"▦"
  844. + PrcpData64 + "" //- "▦"가 안에 포함되어있음.
  845. + sIssdeptcd +"▦"
  846. + eval(gPathNode[6]).getColumn(0, "wardcd") +"▦"
  847. + eval(gPathNode[6]).getColumn(0, "roomcd") +"▦"
  848. + "00000000" +"▦"
  849. + utlf_getCurrentDate() +"▦"
  850. + utlf_getCurrentTime() +"▦"
  851. + sysf_getUserInfo("userid") +"▦"
  852. + "N" +"▦"
  853. + "00000000000000" +"▦"
  854. + SvGoodcls +"▦"
  855. + SvOrdseq +"▦"
  856. + tempCartGb +"▦"
  857. + wCartPath.getColumn(i, "oprsrvno")+"▩";
  858. }else {//처방집계 물품 및 산정인 처방
  859. PrcpData += PrcpData0101
  860. + PrcpData0205
  861. + PrcpData0614
  862. + PrcpData1520
  863. + PrcpData2122
  864. //+ PrcpData2340
  865. + PrcpData2324
  866. + PrcpData2528
  867. + PrcpData2938
  868. + PrcpData3940
  869. + PrcpData4141
  870. + PrcpData4243
  871. + PrcpData44
  872. + PrcpData4547
  873. //+ PrcpData4247
  874. + PrcpData4848
  875. + PrcpData4949
  876. + PrcpData5063
  877. + PrcpData64
  878. + PrcpData65
  879. + PrcpData66
  880. + PrcpData67
  881. + PrcpData68
  882. + PrcpData69//;
  883. + PrcpData7172
  884. + PrcpData73;
  885. }
  886. }
  887. WkPid = "CANCEL";
  888. }
  889. if( parseFloat(WkOutQty) == 0 ){
  890. sysf_messageBox("처방 수량을 입력하십시요", "I000");
  891. return;
  892. }else {
  893. PrcpIdx++;
  894. PrcpData0101 = "I" + "▦"; // 01 신규(I), DC(C)
  895. PrcpData0205 = PrcpIdx + "▦" // 02 줄번호 (병리 요구)
  896. + PrcpDate + "▦" // 03 처방일자(외래/종건은 orddd와 동일, 입원은 처방일자)
  897. + "0" + "▦" // 04 처방번호 (status가 "I"일 경우 0)
  898. + "0" + "▦"; // 05 처방이력번호 (status가 "I"일 경우 0)
  899. PrcpData2122 = WkOutQty + "▦" // 21 처방수량 (1) (약품일 경우 반드시 포장단위 수량을 넣어 주어야 됨) => default : 1
  900. + PrcpQtyUnitFlag + "▦"; // 22 처방수량단위 (약품일 경우 "3", 그렇지 않을경우 "-")
  901. //일반 청구성 물품일 경우, 비산정 처방
  902. //if(sReqmthd == "3"||sCalCulYn == "N"){최소현 선생님 요청으로 산정 로직 중단 2009.10.14
  903. //2010.04.19 K. J. M 산정로직 추가(비산정일때는 구매집계에도 내려가면 안됨
  904. if( sCalCulYn != "N" ) {
  905. if(sReqmthd == "3"){
  906. // 정상 입력 처리
  907. sMrsmData += utlf_getCurrentDate() +"▦"
  908. + "" +"▦"
  909. + "" +"▦"
  910. + sPrcpPid +"▦"
  911. + ordindd +"▦"
  912. + cretno +"▦"
  913. + eval(gPathNode[6]).getColumn(0, "orddeptcd") +"▦"
  914. + eval(gPathNode[6]).getColumn(0, "orddrid") +"▦"
  915. + eval(gPathNode[6]).getColumn(0, "oppatflagcd") +"▦"
  916. + utlf_getCurrentDate() +"▦"
  917. + "999999999" +"▦"
  918. + SvGoodcd +"▦"
  919. + "O" +"▦"
  920. + WkOutQty +"▦"
  921. + "1" +"▦"
  922. + "1" +"▦"
  923. + WkOutQty +"▦"
  924. + PrcpData64 +"" // "▦"가 안에 포함되어있음.
  925. + sIssdeptcd +"▦"
  926. + eval(gPathNode[6]).getColumn(0, "wardcd") +"▦"
  927. + eval(gPathNode[6]).getColumn(0, "roomcd") +"▦"
  928. + "00000000" +"▦"
  929. + utlf_getCurrentDate() +"▦"
  930. + utlf_getCurrentTime() +"▦"
  931. + sysf_getUserInfo("userid") +"▦"
  932. + "N" +"▦"
  933. + "00000000000000" +"▦"
  934. + SvGoodcls +"▦"
  935. + SvOrdseq +"▦"
  936. + tempCartGb +"▦"
  937. + wCartPath.getColumn(i, "oprsrvno")+"▩";
  938. }else{
  939. PrcpData += PrcpData0101
  940. + PrcpData0205
  941. + PrcpData0614
  942. + PrcpData1520
  943. + PrcpData2122
  944. //+ PrcpData2340
  945. + PrcpData2324
  946. + PrcpData2528
  947. + PrcpData2938
  948. + PrcpData3940
  949. + PrcpData4141
  950. + PrcpData4243
  951. + PrcpData44
  952. + PrcpData4547
  953. //+ PrcpData4247
  954. + PrcpData4848
  955. + PrcpData4949
  956. + PrcpData5063
  957. + PrcpData64
  958. + PrcpData65
  959. + PrcpData66
  960. + PrcpData67
  961. + PrcpData68
  962. + PrcpData69 //;
  963. + PrcpData7172
  964. + PrcpData73 ;
  965. SvRowno = PrcpIdx; // 17 줄번호
  966. }
  967. }
  968. }
  969. }
  970. }
  971. // -----------------------------------------------
  972. // 처방이 수정되어 DC를 내린다. 처방삭제
  973. // -----------------------------------------------
  974. //if (ActProc[3] == "XC" && (sReqmthd != ""&&(SvGoodcls == "4" || SvGoodcls == "6")))
  975. if( (ActProc[3] == "XC" && SvGoodcls != "4" && SvGoodcls != "6" && SvGoodcls != "10") || (ActProc[3] == "XC" && !utlf_isNull(sReqmthd) && (SvGoodcls == "4" || SvGoodcls == "6" || SvGoodcls == "10")) ){
  976. if( parseFloat(WkSaveQty) != 0 ){
  977. if( utlf_isNull(sRecalddStr) ){
  978. sRecalddStr = sBefPrcpdd;
  979. }else{
  980. sRecalddStr = sRecalddStr+"▧"+sBefPrcpdd;
  981. }
  982. PrcpIdx++;
  983. PrcpData0101 = "C" + "▦"; // 01 신규(I), DC(C)
  984. PrcpData0205 = PrcpIdx + "▦" // 02 줄번호 (병리 요구)
  985. //2008-10-04 오후 1:20:19 taebum 수정.
  986. + sBefPrcpdd + "▦" // 03 처방일자(외래/종건은 orddd와 동일, 입원은 처방일자)
  987. + SvPrcpno + "▦" // 04 처방번호 (status가 "I"일 경우 0)
  988. + SvPrcphistno + "▦"; // 05 처방이력번호 (status가 "I"일 경우 0)
  989. PrcpData2122 = WkSaveQty + "▦" // 21 처방수량 (1) (약품일 경우 반드시 포장단위 수량을 넣어 주어야 됨) => default : 1
  990. + PrcpQtyUnitFlag + "▦"; // 22 처방수량단위 (약품일 경우 "3", 그렇지 않을경우 "-")
  991. //일반 청구성 물품일 경우, 비산정 처방
  992. //if(sReqmthd == "3"||sCalCulYn == "N")
  993. //최소현 선생님 요청으로 산정 로직 중단 2009.10.14
  994. //2010.04.19 K. J. M 산정로직 추가(비산정일때는 구매집계에도 내려가면 안됨
  995. if( sCalCulYn != "N" ) {
  996. if(sReqmthd == "3"){
  997. sMrsmData += utlf_getCurrentDate() +"▦"
  998. + "" +"▦"
  999. + "" +"▦"
  1000. + sPrcpPid +"▦"
  1001. + ordindd +"▦"
  1002. + cretno +"▦"
  1003. + eval(gPathNode[6]).getColumn(0, "orddeptcd") +"▦"
  1004. + eval(gPathNode[6]).getColumn(0, "orddrid") +"▦"
  1005. + eval(gPathNode[6]).getColumn(0, "oppatflagcd") +"▦";
  1006. + sBefPrcpdd +"▦"
  1007. + "999999999" +"▦"
  1008. + SvGoodcd +"▦"
  1009. + "D" +"▦"
  1010. + WkSaveQty +"▦"
  1011. + "1" +"▦"
  1012. + "1" +"▦"
  1013. + WkSaveQty +"▦"
  1014. + PrcpData64 +"" // "▦"가 안에 포함되어있음.
  1015. + sIssdeptcd +"▦"
  1016. + eval(gPathNode[6]).getColumn(0, "wardcd") +"▦"
  1017. + eval(gPathNode[6]).getColumn(0, "roomcd") +"▦"
  1018. + "00000000" +"▦"
  1019. + utlf_getCurrentDate() +"▦"
  1020. + utlf_getCurrentTime() +"▦"
  1021. + sysf_getUserInfo("userid") +"▦"
  1022. + "N" +"▦"
  1023. + "00000000000000" +"▦"
  1024. + SvGoodcls +"▦"
  1025. + SvOrdseq +"▦"
  1026. + tempCartGb +"▦"
  1027. + wCartPath.getColumn(i, "oprsrvno")+"▩";
  1028. }else{
  1029. PrcpData += PrcpData0101
  1030. + PrcpData0205
  1031. + PrcpData0614
  1032. + PrcpData1520
  1033. + PrcpData2122
  1034. //+ PrcpData2340
  1035. + PrcpData2324
  1036. + PrcpData2528
  1037. + PrcpData2938
  1038. + PrcpData3940
  1039. + PrcpData4141
  1040. + PrcpData4243
  1041. + PrcpData44
  1042. + PrcpData4547
  1043. //+ PrcpData4247
  1044. + PrcpData4848
  1045. + PrcpData4949
  1046. + PrcpData5063
  1047. + PrcpData64
  1048. + PrcpData65
  1049. + PrcpData66
  1050. + PrcpData67
  1051. + PrcpData68
  1052. + PrcpData69 //;
  1053. + PrcpData7172
  1054. + PrcpData73 ;
  1055. }
  1056. }
  1057. WkPid = "CANCEL";
  1058. }
  1059. }
  1060. // -----------------------------------------------
  1061. // 처방입력 한다.(신규처방생성)
  1062. // -----------------------------------------------
  1063. //if (ActProc[3] == "IX" && (sReqmthd != ""&&(SvGoodcls == "4" || SvGoodcls == "6")))
  1064. if( (ActProc[3] == "IX" && SvGoodcls != "4" && SvGoodcls != "6" && SvGoodcls != "10") || (ActProc[3] == "IX" && !utlf_isNull(sReqmthd) && (SvGoodcls == "4" || SvGoodcls == "6" || SvGoodcls == "10")) ){
  1065. if (parseFloat(WkOutQty) == 0) {
  1066. WkPid = "DELETE";
  1067. }else {
  1068. PrcpIdx++;
  1069. PrcpData0101 = "I" + "▦"; // 01 신규(I), DC(C)
  1070. PrcpData0205 = PrcpIdx + "▦" // 02 줄번호 (병리 요구)
  1071. + PrcpDate + "▦" // 03 처방일자(외래/종건은 orddd와 동일, 입원은 처방일자)
  1072. + "0" + "▦" // 04 처방번호 (status가 "I"일 경우 0)
  1073. + "0" + "▦"; // 05 처방이력번호 (status가 "I"일 경우 0)
  1074. PrcpData2122 = WkOutQty + "▦" // 21 처방수량 (1) (약품일 경우 반드시 포장단위 수량을 넣어 주어야 됨) => default : 1
  1075. + PrcpQtyUnitFlag + "▦"; // 22 처방수량단위 (약품일 경우 "3", 그렇지 않을경우 "-")
  1076. //2008-12-29 오후 6:53:34 taebum 처방구분이 수술인 경우 신규로 발생시 수술일 이후에 수술료 발생시 소급인터페이스 적용
  1077. if(sPrcpclscd == "H2"){
  1078. if(sTempOpcnfmdd < utlf_getCurrentDate()){
  1079. if( utlf_isNull(sRecalddStr) ){
  1080. sRecalddStr = utlf_getCurrentDate();
  1081. }else{
  1082. sRecalddStr = sRecalddStr+"▧"+utlf_getCurrentDate();
  1083. }
  1084. }
  1085. }
  1086. //일반 청구성 물품일 경우
  1087. //if(sReqmthd == "3"||sCalCulYn == "N")
  1088. //최소현 선생님 요청으로 산정 로직 중단 2009.10.14
  1089. //2010.04.19 K. J. M 산정로직 추가(비산정일때는 구매집계에도 내려가면 안됨
  1090. if( sCalCulYn != "N" ) {
  1091. if(sReqmthd == "3"){
  1092. // 정상 입력 처리
  1093. sMrsmData += utlf_getCurrentDate() +"▦"
  1094. + "" +"▦"
  1095. + "" +"▦"
  1096. + sPrcpPid +"▦"
  1097. + ordindd +"▦"
  1098. + cretno +"▦"
  1099. + eval(gPathNode[6]).getColumn(0, "orddeptcd") +"▦"
  1100. + eval(gPathNode[6]).getColumn(0, "orddrid") +"▦"
  1101. + eval(gPathNode[6]).getColumn(0, "oppatflagcd") +"▦"
  1102. + utlf_getCurrentDate() +"▦"
  1103. + "0000000000" +"▦"
  1104. + SvGoodcd +"▦"
  1105. + "O" +"▦"
  1106. + WkOutQty +"▦"
  1107. + "1" +"▦"
  1108. + "1" +"▦"
  1109. + WkOutQty +"▦"
  1110. + PrcpData64 +"" // "▦"가 안에 포함되어있음.
  1111. + sIssdeptcd +"▦"
  1112. + eval(gPathNode[6]).getColumn(0, "wardcd") +"▦"
  1113. + eval(gPathNode[6]).getColumn(0, "roomcd") +"▦"
  1114. + "00000000" +"▦"
  1115. + utlf_getCurrentDate() +"▦"
  1116. + utlf_getCurrentTime() +"▦"
  1117. + sysf_getUserInfo("userid") +"▦"
  1118. + "N" +"▦"
  1119. + "00000000000000" +"▦"
  1120. + SvGoodcls +"▦"
  1121. + SvOrdseq +"▦"
  1122. + tempCartGb +"▦"
  1123. + wCartPath.getColumn(i, "oprsrvno")+"▩";
  1124. }else{
  1125. PrcpData += PrcpData0101
  1126. + PrcpData0205
  1127. + PrcpData0614
  1128. + PrcpData1520
  1129. + PrcpData2122
  1130. //+ PrcpData2340
  1131. + PrcpData2324
  1132. + PrcpData2528
  1133. + PrcpData2938
  1134. + PrcpData3940
  1135. + PrcpData4141
  1136. + PrcpData4243
  1137. + PrcpData44
  1138. + PrcpData4547
  1139. //+ PrcpData4247
  1140. + PrcpData4848
  1141. + PrcpData4949
  1142. + PrcpData5063
  1143. + PrcpData64
  1144. + PrcpData65
  1145. + PrcpData66
  1146. + PrcpData67
  1147. + PrcpData68
  1148. + PrcpData69 //;
  1149. + PrcpData7172
  1150. + PrcpData73;
  1151. SvRowno = PrcpIdx; // 17 줄번호
  1152. }
  1153. }
  1154. }
  1155. }
  1156. } // ActProc[3] != "XX"
  1157. //--------------------------------
  1158. // 확정 테이블을 수정한다.
  1159. // 수량변경이 있는데 수량이 0이면 DELETE 시킨다.2009.12.04 K.J.M
  1160. // 카트 사용하는 병원만 적용한다. 2010.04.19 K.J.M
  1161. //--------------------------------
  1162. if (ActProc[2] != "XX") { // 확정 테이블을 수정한다.
  1163. if (ActProc[2] == "UI") {
  1164. if (WkNewAddQty != WkOldAddQty || SvPayflagcd != SvOldPayflagcd) {
  1165. SvPid = sPrcpPid; // 환자번호
  1166. SvRecflag = "I";
  1167. SvAddreductqty = WkNewAddQty; // 변경후증감수량
  1168. SvReqtabcls = "C";
  1169. if( sCartUseYn == "Y" ) {//카트사용하는 병원은 변경된 수량이 0이상이어야만 저장 0이면 삭제처리
  1170. if( parseFloat(WkOutQty) > 0 ) {
  1171. MnphccolData += fCartConstruct(PrcpDate); // 수술중에 사용한 물품의처방내역(수술처방화면에서등록)
  1172. }
  1173. }else {
  1174. MnphccolData += fCartConstruct(PrcpDate); // 수술중에 사용한 물품의처방내역(수술처방화면에서등록)
  1175. }
  1176. SvRowno = ""; // 17 줄번호
  1177. }
  1178. //일반청구 물품일 경우, 비산정 처방 확정 테이블 수정시 prcpdd가 없을 경우 현재일자로 발생시킨다.
  1179. //if((sReqmthd == "3"||sCalCulYn == "N") && sBefPrcpdd == "")
  1180. //최소현 선생님 요청으로 산청로직 중단.2009.10.14
  1181. if( sReqmthd == "3" && utlf_isNull(sBefPrcpdd) ){
  1182. sBefPrcpdd = utlf_getCurrentDate();
  1183. }
  1184. SvPid = WkPid; // 환자번호
  1185. SvRecflag = "U" ;
  1186. if( !(pStat == "C" && WkPid == "DELETE" && WkOutQty == "0") ) //KNUH, 임시처방 수량 0으로 보정 후 저장 시, 수량을 0으로 수정한 후 삭제처리되도록 함(2011.02.07 JJE)
  1187. SvAddreductqty = WkOldAddQty; // 변경전증감수량
  1188. SvReqtabcls = "C";
  1189. MnphccolData += fCartConstruct(sBefPrcpdd); // 수술중에 사용한 물품의처방내역(수술처방화면에서등록)
  1190. }
  1191. if (ActProc[2] == "IX") {
  1192. //2009-01-02 오후 9:19:32 taebum add 신규 확정처방의 수량이 0일 경우 삭제처리
  1193. if(pStat == "P" && WkOutQty == 0 ){
  1194. SvPid = "DELETE"; // 환자번호
  1195. }else{
  1196. SvPid = sPrcpPid; // 환자번호
  1197. }
  1198. SvRecflag = "I";
  1199. SvAddreductqty = WkNewAddQty; // 변경후증감수량
  1200. SvReqtabcls = "C";
  1201. MnphccolData += fCartConstruct(PrcpDate); // 수술중에 사용한 물품의처방내역(수술처방화면에서등록)
  1202. }
  1203. if (ActProc[2] == "UX") {
  1204. SvPid = WkPid; // 환자번호
  1205. SvRecflag = "U" ;
  1206. SvAddreductqty = WkOldAddQty; // 변경전증감수량
  1207. SvReqtabcls = "C";
  1208. MnphccolData += fCartConstruct(sBefPrcpdd); // 수술중에 사용한 물품의처방내역(수술처방화면에서등록)
  1209. }
  1210. }
  1211. //--------------------------------
  1212. // 임시 테이블을 수정한다.
  1213. //--------------------------------
  1214. if (ActProc[1] != "XX") {
  1215. switch(ActProc[1]) {
  1216. case("DX") : SvRecflag = "D" ;
  1217. break;
  1218. case("IX") : SvRecflag = "I";
  1219. break;
  1220. default : SvRecflag = "U" ;
  1221. }
  1222. SvReqtabcls = "T" ;
  1223. SvGoodqty = WkOutQty ; // 물품수량
  1224. MnphctosData += fCartConstruct(); // 수술중에 사용한 물품의처방내역(수술처방화면에서등록)
  1225. }
  1226. }
  1227. SubmitCount++; // 수정 대상 건수
  1228. } // 1111 : End Of for (var i=1; i<= sRowCnt; i++)
  1229. PrcpInfoData += PrcpData;
  1230. sMrsmInfoData += sMrsmData;
  1231. } // 0000 : End Of for (Idx = 0; Idx < 5; Idx++ ) {
  1232. //비산정 처방만 있을 경우 처방 제한(확정처방일때만)
  1233. if( pStat == "P" ) {
  1234. for( var k=0 ; k<sCalArr.length ; k++ ){
  1235. sNonCalCount = sCalArr[k][1];//비산정 카운트
  1236. sCalCount = sCalArr[k][2];//산정 카운트
  1237. //alert(sCalArr[k][0]+"======"+sCalArr[k][1]+"======"+sCalArr[k][2]);
  1238. if( ( sNonCalCount > 0 )&&( sCalCount < 1 ) ) {//비산정만 있으면 블럭킹
  1239. sysf_messageBox("산정처방이 없습니다. SET코드 처방 확인하세요!", "E000");
  1240. return;
  1241. }
  1242. }
  1243. }
  1244. var Mmohoprslist = "instcd" + "▦" // 1 기관코드
  1245. + "oprsrvno" + "▦" // 2 수술예약(의뢰)번호 (년도 + 일련번호)
  1246. + "ophistno" + "▦" // 3 예약번호에따른이력번호
  1247. + "ophistcd" + "▦" // 4 수술예약의이력코드
  1248. + "cartgubn" + "▦" // 5 Cart구분 O:수술, A:마취
  1249. + "cartstat" + "▦" // 6 Cart 임시:1, Cart 출력:2, Cart 불출:3, Cart 확정:4, Cart 반납:5, 처방 확정:9
  1250. + "procstat" + "▦" // 7 테이블구 T:임시처방, C: 확정처방
  1251. + "currentcartstat" + "▦" // 8 현재 화면의 Cart상태 임시:1, Cart 출력:2, Cart 불출:3, Cart 확정:4, Cart 반납:5, 처방 확정:9
  1252. + "cartsavestat" + "▦"
  1253. + "oproomcd" + "▩"
  1254. + utlf_transNullToEmpty(eval(gPathNode[6]).getColumn(0, "instcd" )) + "▦" // 1 기관코드
  1255. + utlf_transNullToEmpty(eval(gPathNode[6]).getColumn(0, "oprsrvno" )) + "▦" // 2 수술예약(의뢰)번호 (년도 + 일련번호)
  1256. + utlf_transNullToEmpty(eval(gPathNode[6]).getColumn(0, "ophistno" )) + "▦" // 3 예약번호에따른이력번호
  1257. + utlf_transNullToEmpty(eval(gPathNode[6]).getColumn(0, "ophistcd" )) + "▦" // 4 수술예약의이력코드
  1258. + utlf_transNullToEmpty(tempCartGb) + "▦" // 5 Cart구분 O:수술, A:마취
  1259. + utlf_transNullToEmpty(wCartStat) + "▦" // 6 Cart 임시:1, Cart 출력:2, Cart 불출:3, Cart 확정:4, Cart 반납:5, 처방 확정:9
  1260. + utlf_transNullToEmpty(ProcCartStat) + "▦" // 7 처리구분 1T:임시,1C:임시+확정,1P:임시+확정+처방,2C/4C:확정,2P/4P/5P:확정+처방
  1261. + utlf_transNullToEmpty(ds_init_WorkData_cond.getColumn(0, "cartstat")) + "▦" // 8 현재 화면의 Cart 상태
  1262. + utlf_transNullToEmpty(ds_main_cond.getColumn(0, "cartsavestat")) + "▦" // 9 호출 구분(T;임시, C:확정)
  1263. + utlf_transNullToEmpty(ds_main_operation_list.getColumn(0, "oproomcd")) + "▩"; // 10 화면 조회된 수술방번호
  1264. // Summit Instance 생성
  1265. // 처방자료가 있는 경우를 Check한다.
  1266. if (PrcpIdx > 0) {
  1267. dsf_setCSVToDs("ds_send_saveflaginfo", FlagInfoHeader+FlagInfoData);
  1268. dsf_setCSVToDs("ds_send_savergstinfo", RgstInfoHeader+RgstInfoData);
  1269. dsf_setCSVToDs("ds_send_saveprcpinfo", PrcpInfoHeader+PrcpInfoData);
  1270. var oParam = {};
  1271. oParam.id = "TRMNW10906";
  1272. oParam.service = "wardorderapp.NursPrcpMngt";
  1273. oParam.method = "reqGetSaveNursPrcpSignData";
  1274. oParam.inds = "saveFlagInfo=ds_send_saveflaginfo saveRgstInfo=ds_send_savergstinfo savePrcpInfo=ds_send_saveprcpinfo";
  1275. oParam.outds = "ds_main_signdata_signprcplist=signprcplist";
  1276. oParam.async = false;
  1277. oParam.callback = "cf_TRMNW10906";
  1278. tranf_submit(oParam);
  1279. if( utlf_isNull(ds_main_signdata_signprcplist.getColumnInfo("dschnotiyn")) ){
  1280. ds_main_signdata_signprcplist.addColumn("dschnotiyn", "string");
  1281. }
  1282. if( utlf_isNull(ds_main_signdata_signprcplist.getColumnInfo("signbfcnts")) ){
  1283. ds_main_signdata_signprcplist.addColumn("signbfcnts", "string");
  1284. }
  1285. //처방인증데이터 생성
  1286. if( arErrorCode.pop("TRMNW10906") > -1 ){
  1287. var signbfcnts = sSIGNDATA_PATH.getColumn(0, "signbfcnts");
  1288. var signuserid = sysf_getUserInfo("userid");
  1289. var dschnotiyn = sSIGNDATA_PATH.getColumn(0, "dschnotiyn");
  1290. if(dschnotiyn == "Y"){
  1291. sysf_messageBox("해당 환자는 간호사 퇴원 확정된 상태이므로 처방을 저장을 할 수 없습니다.", "E000");
  1292. return;
  1293. }
  1294. // -----------------------(2010.08.18 센터)start--------------------
  1295. var signinfo = "";
  1296. if( gds_systemInfo.getColumn(0, "devsystem") != "1" ){
  1297. signinfo = fMakeSignData(signbfcnts, signuserid, true); // 항상 인증서 비밀번호 확인 설정(true)_20080909(ByJA)
  1298. } else {
  1299. signinfo = "A"; //인증저장모듈 로직 제외 by pyw
  1300. }
  1301. // -----------------------(2010.08.18 센터)start--------------------
  1302. if( utlf_isNull(signinfo) || signinfo == "-" ){ //인증저장 취소
  1303. return;
  1304. }else{
  1305. sSIGNDATA_PATH.setColumn(0, "signaftcnts", signinfo); //true : 처방저장할 때마다 인증저장 태움
  1306. //var savesignlist = getNodeListCSV(model.instances(0).selectNodes(sSIGNDATA_PATH));
  1307. ds_send_savesigninfo.copyData(sSIGNDATA_PATH); //사인 정보
  1308. }
  1309. }else{
  1310. return;
  1311. }
  1312. dsf_setCSVToDs("ds_send_savemrsminfo", sMrsmHeader+sMrsmInfoData); //일반청구물품
  1313. ds_send_refcond.copyData(sPrcpDataPat); //저장 후 조회조건
  1314. }else {
  1315. dsf_setCSVToDs("ds_send_saveflaginfo", FlagInfoHeader);
  1316. dsf_setCSVToDs("ds_send_savergstinfo", RgstInfoHeader);
  1317. dsf_setCSVToDs("ds_send_saveprcpinfo", PrcpInfoHeader);
  1318. dsf_setCSVToDs("ds_send_savemrsminfo", sMrsmHeader);
  1319. ds_send_refcond.copyData(sPrcpDataPat); // 저장 후 조회조건
  1320. }
  1321. dsf_setCSVToDs("ds_send_mnphctoslist", MnphctosData); // CaseCart물품의 임시처방내역(CCR에서확정)
  1322. dsf_setCSVToDs("ds_send_mnphccollist", MnphccolData); // 수술중에 사용한 물품의처방내역(수술처방화면에서등록)
  1323. dsf_setCSVToDs("ds_send_mmohoprslist", Mmohoprslist); // 수술 예약정보
  1324. //model.makeValue("/root/send/refcond/cartsavestat", model.getValue("/root/main/cond/cartsavestat"));
  1325. if( SubmitCount < 1 ) {
  1326. if( wCartStat < "9" ) {
  1327. if( sysf_messageBox("수정된 내역이 없습니다.! ", "Q002") != 6 ) return;
  1328. if( wCartStat >= "5" ) {//확정처방이상이면 인증타기
  1329. Sign.certreload = true ;
  1330. if (Sign.signprocess() == true){
  1331. }else { return; }
  1332. }
  1333. ds_send_reqdata.setColumn(0, "oprsrvno", utlf_transNullToEmpty(eval(gPathNode[6]).getColumn(0, "oprsrvno")));
  1334. ds_send_reqdata.setColumn(0, "ophistno", utlf_transNullToEmpty(eval(gPathNode[6]).getColumn(0, "ophistno")));
  1335. ds_send_reqdata.setColumn(0, "cartgubn", utlf_transNullToEmpty(ds_init_WorkData_cond.getColumn(0, "cartgubn")));
  1336. ds_send_reqdata.setColumn(0, "cartstat", utlf_transNullToEmpty(wCartStat));
  1337. var oParam = {};
  1338. oParam.id = "TXMNP01809";
  1339. oParam.service = "opanstapp.OpAnstCCrtGoodMngt";
  1340. oParam.method = "reqSetCCrtStat";
  1341. oParam.inds = "reqdata=ds_send_reqdata";
  1342. oParam.outds = "";
  1343. oParam.async = false;
  1344. //oParam.callback = "cf_TXMNP01809";
  1345. tranf_submit(oParam);
  1346. fQueryData();
  1347. return;
  1348. }else {
  1349. sysf_messageBox("수정된 내역이 없습니다.! ", "E000");
  1350. return;
  1351. }
  1352. }
  1353. //2008-07-21 오전 9:18:49 처방 마감 정보 추가 taebum
  1354. fnEndddSave(pStat);
  1355. //2008-10-31 오후 8:16:40 taebum 소급적용 관련 interface 연동 추가
  1356. if( !utlf_isNull(sRecalddStr) ){
  1357. var sRecalArr = sRecalddStr.split("▧");
  1358. if( sRecalArr.length > 0 ){
  1359. for( var m=0 ; m<sRecalArr.length ; m++ ){
  1360. if( utlf_isNull(sRecalArr[m]) ){
  1361. //값 없음.
  1362. }else{
  1363. if( utlf_isNull(sRecalfromdd) ){
  1364. sRecalfromdd = sRecalArr[m];
  1365. sRecaltodd = sRecalArr[m];
  1366. }else{
  1367. if(sRecalArr[m] < sRecalfromdd){
  1368. sRecalfromdd = sRecalArr[m];
  1369. }
  1370. if(sRecalArr[m] > sRecaltodd){
  1371. sRecaltodd = sRecalArr[m];
  1372. }
  1373. }
  1374. }
  1375. }
  1376. }
  1377. }
  1378. if( !utlf_isNull(sRecalfromdd) && !utlf_isNull(sRecaltodd) ){
  1379. var sTempOprsXpath = ds_main_MmohoprsLists_mmohoprslist;
  1380. //2009.05.07 소급시작일자가 기본값일때 현재 날짜로 변경
  1381. if( sRecalfromdd == "00000000" ) {
  1382. //sRecalfromdd = getCurrentDate();
  1383. sRecalfromdd = eval(gPathNode[6]).getColumn(0, "opcnfmdd");
  1384. }
  1385. if( sRecaltodd == "00000000" ) {
  1386. sRecaltodd = utlf_getCurrentDate();
  1387. }
  1388. var sTempColumnInfo = "status▦pid▦indd▦cretno▦recalfromdd▦recaltodd▦instcd▦mskind▦histstat▦genrdd▦tretrslt▦errcnts▦retcgenrplce▩";
  1389. var sTempColumnData = "U" +"▦"+ //01 상태
  1390. sPrcpPid +"▦"+ //02 등록번호 원무key
  1391. ordindd +"▦"+ //03 입원일자 원무key
  1392. cretno +"▦"+ //04 생성번호 원무key
  1393. sRecalfromdd +"▦"+ //05 재계산할 시작일자 재계산할시작일자(yyyymmdd) 오늘이 아닌 이전일자
  1394. sRecaltodd +"▦"+ //06 재계산할 종료일자 재계산할종료일자(yyyymmdd) 오늘이 아닌 이전일자
  1395. sysf_getUserInfo("dutplceinstcd") +"▦"+ //07 기관코드
  1396. "M" +"▦"+ //08 주부유형
  1397. "Y" +"▦"+ //09 이력상태
  1398. utlf_getCurrentDate() +"▦"+ //10 발생일자
  1399. "M" +"▦"+ //11 처리결과
  1400. "" +"▦"+ //12 오류내용(처리결과)
  1401. "G" +"▩"; //13 소급발생장소 W:원무, C:진료, G:간호, L:LIS, A:지원부서
  1402. dsf_setCSVToDs("ds_send_pamsogeubinfo", sTempColumnInfo+sTempColumnData);
  1403. }
  1404. var oParam = {};
  1405. oParam.id = "TXMNP01803";
  1406. oParam.service = "opanstapp.OpAnstCCrtGoodMngt";
  1407. oParam.method = "reqExeMnphPrcpDataInfo";
  1408. oParam.inds = "mmohoprslist=ds_send_mmohoprslist mnphctoslist=ds_send_mnphctoslist mnphccollist=ds_send_mnphccollist req_flaginfo=ds_send_saveflaginfo req_rgstinfo=ds_send_savergstinfo req_prcpinfo=ds_send_saveprcpinfo req_mrsminfo=ds_send_savemrsminfo req_signinfo=ds_send_savesigninfo reqCond=ds_send_reqCond req_pamsogeubinfo=ds_send_pamsogeubinfo";
  1409. oParam.outds = "ds_temp_result_prcperrlist=prcperrlist";
  1410. oParam.async = false;
  1411. oParam.callback = "cf_TXMNP01803";
  1412. tranf_submit(oParam);
  1413. if( arErrorCode.pop("TXMNP01803") > -1 ){ // 정보저장
  1414. if( wCartStat == "5" ) {
  1415. //오류팝업
  1416. var prcpErrList = ds_temp_result_prcperrlist;
  1417. if( prcpErrList.rowcount > 0 ) {
  1418. if( !utlf_isNull(ds_temp_result_prcperrlist.getColumn(0, "prcpcd")) ){
  1419. var xpt = system.clientToScreenX(this, this.position.left) + 100;
  1420. var ypt = system.clientToScreenY(this, this.position.top) + 50;
  1421. //var coord = getRelativeCoordinate ( xpt, ypt );
  1422. var mon = sysf_getCurrentMonitorNumber();
  1423. //xpt = coord[1];
  1424. //ypt = coord[2];
  1425. ds_temp_result_prcperrlist_copy.copyData(ds_temp_result_prcperrlist);
  1426. var objArg = new Object();
  1427. objArg.arg_ds_result_prcperrlist = ds_temp_result_prcperrlist_copy;
  1428. frmf_open("SPMMO00600", "SPMMO00600", objArg, null, mon, xpt, ypt, null, null, null, null, null, "M");
  1429. ds_temp_result_prcperrlist.clearData();
  1430. //fQueryData(); // 조회
  1431. return;
  1432. }
  1433. }
  1434. }
  1435. if( ds_main_cond.getColumn(0, "cartsavestat") != "T" ){
  1436. ds_init_WorkData_cond.setColumn(0, "cartstat", wCartStat);
  1437. }
  1438. gRvStat = wCartStat;
  1439. // 2009-03-17 YCD 응급 CartBag 불출시 팝업, 재조회 처리 안함.
  1440. if( ds_temp.getColumn(0, "cartoutflag") != "E" ){
  1441. var sMsgFlag = (pStat == "D") ? "삭제가" : "저장이";
  1442. sysf_messageBox("자료 "+ sMsgFlag, "I002");
  1443. if( delTempSaveYN == "Y" ) fCnclDeleteRows(); //@@KNUH, 삭제처방 된 처방 되살리는 경우 별도의 func으로 처리
  1444. fQueryData(); // 조회
  1445. }
  1446. }else {
  1447. if( delTempSaveYN == "Y" ) fCnclDeleteRows(); //@@KNUH, 삭제처방 된 처방 되살리는 경우 별도의 func으로 처리
  1448. fQueryData();
  1449. }
  1450. } //--- End Of function fDataSave(pStat){
  1451. function cf_TRMNW10906(sSvcId, nErrorCode, sErrorMsg) {
  1452. arErrorCode.push(sSvcId, nErrorCode);
  1453. }
  1454. function cf_TXMNP01803(sSvcId, nErrorCode, sErrorMsg) {
  1455. arErrorCode.push(sSvcId, nErrorCode);
  1456. }
  1457. // ※ 인증데이터 생성함수 만들기
  1458. function fMake_SignData(){
  1459. Sign.certreload = true;
  1460. var arrSignPath = new Array();
  1461. arrSignPath[0] = "/signotlists";
  1462. arrSignPath[1] = "/signexlists";
  1463. var arrSignDs = new Array();
  1464. arrSignDs[0] = ds_exotinfo_signotlists.saveXML();
  1465. arrSignDs[1] = ds_exotinfo_signexlists.saveXML();
  1466. Sign.addnodeset(arrSignPath, arrSignDs);
  1467. // Sign.addnode("/root/exotinfo/signotlists" ); //yjh : 사용안하는듯...
  1468. // Sign.addnode("/root/exotinfo/signexlists" );
  1469. }
  1470. // --------------------------------------------------
  1471. // 버튼 Action에 대한 처리구분 찾기
  1472. // --------------------------------------------------
  1473. function fActionCodeCheck(pCode) {
  1474. var ii = 0 ;
  1475. var sIdx = 999;
  1476. var rData = ""
  1477. //
  1478. while( tActCode.length > ii ){
  1479. if( tActCode[ii] == pCode ){
  1480. sIdx = ii;
  1481. ii = tActCode.length;
  1482. }
  1483. ii++;
  1484. }
  1485. //
  1486. if (sIdx != 999) {
  1487. rData = tActProc[sIdx];
  1488. }
  1489. return rData;
  1490. }
  1491. //
  1492. function fTitleCreate(){
  1493. trace("01802 fTitleCreate()");
  1494. var TitleData = "oprsrvno" + "▦" // 01 수술예약(의뢰)번호 (년도 + 일련번호)
  1495. + "cartgubn" + "▦" // 02 Cart구분 (O:수술,A:마취)
  1496. + "ordseq" + "▦" // 03 처방순번
  1497. + "instcd" + "▦" // 04 병원기관코드(코드정의서 Z0007 참조)
  1498. + "goodcd" + "▦" // 05 물품코드
  1499. + "allsizespecid" + "▦" // 06 ALLSIZE규격ID
  1500. + "goodcls" + "▦" // 07 물품구분 1:Sutures,2:Supplies,3:Drug,4:Instrument,5:처치처방,6:수술소모품
  1501. + "goodqty" + "▦" // 08 물품수량
  1502. + "addreductqty" + "▦" // 09 가감수량
  1503. + "payflagcd" + "▦" // 10 급여구분코드 (코드정의서 M0029 참조)
  1504. + "oproomcd" + "▦" // 11 수술실코드
  1505. + "roomdeptcd" + "▦" // 12 수술방부서코드 01/17 추가
  1506. + "prcpmemo" + "▦" // 13 처방수정MEMO(사유) 01/17 추가
  1507. + "prcpdd" + "▦" // 14 처방일자
  1508. + "prcpno" + "▦" // 15 처방일자별 일련번호
  1509. + "prcphistno" + "▦" // 16 처방이력생할때 마다 생성 (처방일자, 처방번호, 기관코드 기준)
  1510. + "pid" + "▦" // 17 등록번호
  1511. + "reqtabcls" + "▦" // 18 테이블구 T:임시처방, C: 확정처방
  1512. + "rowno" + "▦" // 19 줄번호
  1513. + "recflag" + "▦" // 20 U:수정,I:입력구분
  1514. + "drugmthdspccd" + "▦" // 21 투여방법
  1515. + "reqmthd" + "▦" // 22 청구방법
  1516. + "goodcrflag" + "▦" // 23 물품발생구분
  1517. + "calculyn" + "▦" // 23 산정여부
  1518. + "oldprcpno" + "▦" // 25 이전 prcpno
  1519. + "oldpid" + "▦" // 26 이전 PID
  1520. + "signno" + "▦" // 27 인증번호
  1521. + "purcflag" + "▦" // 28 구매구분
  1522. + "grupcd" + "▦" // 29 그룹코드
  1523. + "erprcpflag" + "▦" // 30 응급처방구분 20110412 이선경(경북대)
  1524. + "erbgcd" + "▩"; // 31 응급카트구분
  1525. return TitleData;
  1526. }
  1527. // Cart Data 구성
  1528. function fCartConstruct(pPrcpdd) {
  1529. trace("01802 fCartConstruct()");
  1530. //2008-08-18 오후 4:29:23 taebum allsized가 -로 들어가 있을 경우 0로 수정
  1531. //2008-08-19 오전 11:01:37 taebum allsized가 0로 들어가 있을 경우 -로 수정
  1532. if( SvAllsizespecid == "0" || utlf_isNull(SvAllsizespecid) ){
  1533. SvAllsizespecid = "-";
  1534. }
  1535. var SvOrdseq_1 = "";
  1536. if(SvRecflag != "I") SvOrdseq_1 = SvOrdseq ;
  1537. var cData = utlf_transNullToEmpty(SvOprsrvno) + "▦" // 01 수술예약(의뢰)번호 (년도 + 일련번호)
  1538. + utlf_transNullToEmpty(SvCartgubn) + "▦" // 02 Cart구분 (O:수술,A:마취)
  1539. + utlf_transNullToEmpty(SvOrdseq_1) + "▦" // 03 처방순번
  1540. + utlf_transNullToEmpty(SvInstcd) + "▦" // 04 병원기관코드(코드정의서 Z0007 참조)
  1541. + utlf_transNullToEmpty(SvGoodcd) + "▦" // 05 물품코드
  1542. + utlf_transNullToEmpty(SvAllsizespecid) + "▦" // 06 ALLSIZE규격ID
  1543. + utlf_transNullToEmpty(SvGoodcls) + "▦" // 07 물품구분 1:Sutures,2:Supplies,3:Drug,4:Instrument,5:처치처방,6:수술소모품
  1544. + utlf_transNullToEmpty(SvGoodqty) + "▦" // 08 물품수량
  1545. + utlf_transNullToEmpty(SvAddreductqty) + "▦" // 09 가감수량
  1546. + utlf_transNullToEmpty(SvPayflagcd) + "▦" // 10 급여구분코드 (코드정의서 M0029 참조)
  1547. + utlf_transNullToEmpty(SvOproomcd) + "▦" // 11 수술실코드
  1548. + utlf_transNullToEmpty(SvRoomdeptcd) + "▦" // 12 수술방부서코드 01/17 추가
  1549. + utlf_transNullToEmpty(SvPrcpmemo) + "▦" // 13 처방수정MEMO(사유) 01/17 추가
  1550. + utlf_transNullToEmpty(pPrcpdd) + "▦" // 14 처방일자
  1551. //+ SvPrcpdd + "▦" // 14 처방일자 //2008-10-04 오후 1:21:50 taebum 현재일자로 수정.
  1552. + utlf_transNullToEmpty(SvPrcpno) + "▦" // 15 처방일자별 일련번호
  1553. + utlf_transNullToEmpty(SvPrcphistno) + "▦" // 16 처방이력생할때 마다 생성 (처방일자, 처방번호, 기관코드 기준)
  1554. + utlf_transNullToEmpty(SvPid) + "▦" // 17 등록번호
  1555. + utlf_transNullToEmpty(SvReqtabcls) + "▦" // 18 테이블구 T:임시처방, C: 확정처방
  1556. + utlf_transNullToEmpty(SvRowno) + "▦" // 19 줄번호
  1557. + utlf_transNullToEmpty(SvRecflag) + "▦" // 20 U:수정,I:입력, D:삭제 구분
  1558. + utlf_transNullToEmpty(SvDrugMthdSpccd) + "▦" // 21 투여방법
  1559. + utlf_transNullToEmpty(sReqmthd) + "▦" // 22 청구방법 1 : 처방성, 3: 일반청구 2: 정량보충
  1560. + utlf_transNullToEmpty(sGoodCrFlag) + "▦" // 23 물품발생구분(정규 : S, 응급 : E)
  1561. + utlf_transNullToEmpty(sCalCulYn) + "▦" // 24 산정여부
  1562. + utlf_transNullToEmpty(sPrcpno) + "▦" // 25 이전 prcpno
  1563. + utlf_transNullToEmpty(sPid) + "▦" // 26 이전 PID
  1564. + utlf_transNullToEmpty(sSignNo) + "▦" // 27 인증번호
  1565. + utlf_transNullToEmpty(sPurcflag) + "▦" // 28 구매구분
  1566. + utlf_transNullToEmpty(sGrupcd) + "▦" // 29 그룹코드
  1567. + utlf_transNullToEmpty(sErPrpcFlag) + "▦" // 30 응급처방구분 20110412 이선경(경북대)
  1568. + utlf_transNullToEmpty(sErbgcd) + "▩"; // 31 응급카트구분 20120718 김병국(경북대)
  1569. return cData;
  1570. }
  1571. // --------------------------------------------------
  1572. // 처방 Header 구성
  1573. // --------------------------------------------------
  1574. function fPrcpHeader(){
  1575. trace("01802 fPrcpHeader()");
  1576. // --------------------------------------------------
  1577. // 지원부서 처방저장 Interface - 공통 사용
  1578. // --------------------------------------------------
  1579. // 저장구분정보(saveFlagInfoVO) -> "saveFlagInfo"
  1580. // --------------------------------------------------
  1581. FlagInfoData = "";
  1582. FlagInfoHeader = "savedataflag" +"▦" // 01 저장자료구분 (2:처방)
  1583. + "saveflag" +"▦" // 02 저장구분 (O:외래, I:입원, E:응급, S:건진)
  1584. + "prcpflag" +"▦" // 03 처방구분 (코드정의서 M0035 참조 "0"을 제외한 해당 값을 넣어주세요...)1:정기,2:응급,3:추가
  1585. + "inptflag" +"▦" // 04 입력구분 (코드정의서 M0034 참조)
  1586. + "pamflag" +"▦" // 05 원무정보 처리구분 (Y/N) -> N일 경우 check하지 않음.
  1587. + "diagflag" +"▦" // 06 진단정보 처리구분 (Y/N) -> N일 경우 check하지 않음. ("Y"이면 진단없이 처방 저장이 안됨)
  1588. + "prcperrflag" +"▦" // 07 처방오류구분(Y/N) -> Y일 경우 의사처방과 동일하게 오류리스트를 반환, N이면 오류를 확인하지 않음
  1589. + "deptcd" +"▦" // 08 부서코드 (입력자 또는 로그인한 사용자의 부서코드)
  1590. + "deptnm" +"▦" // 09 부서명 (입력자 또는 로그인한 사용자의 부서명)
  1591. + "userid" +"▦" // 10 사용자ID (입력자 또는 로그인한 사용자ID)
  1592. + "usernm" +"▦" // 11 사용자명 (입력자 또는 로그인한 사용자명)
  1593. + "signyn" +"▦" // 12 전자서명여부 (Y/N)
  1594. + "prcpdd" +"▩"; // 13 처방일자
  1595. // --------------------------------------------------
  1596. // 저장등록정보(saveRgstInfoVO) ->" saveRgstInfo"
  1597. // --------------------------------------------------
  1598. RgstInfoData = "";
  1599. RgstInfoHeader = "pid" +"▦" // 1 등록번호(원무Key)
  1600. + "orddd" +"▦" // 2 진료일자(원무Key) - 입원일경우는 "-"
  1601. + "indd" +"▦" // 3 입원일자(원무Key) - 외래일경우는 "-"
  1602. + "cretno" +"▦" // 4 생성번호(원무Key)
  1603. + "orddeptcd" +"▦" // 5 진료과(원무)
  1604. + "orddrid" +"▦" // 6 진료의ID(원무)
  1605. + "instcd" +"▦" // 7 기관코드
  1606. + "orddeptnm" +"▦" // 8 진료과ID(원무Key)
  1607. + "orddrnm" +"▦" // 9 진료의명(원무Key)
  1608. + "hngnm" +"▦" // 10 환자명
  1609. + "sa" +"▦" // 11 성별나이
  1610. + "ordtype" +"▩"; // 12 외래입원구분
  1611. // --------------------------------------------------
  1612. // 저장처방정보(savePrcpInfoVO) ->" savePrcpInfo"
  1613. // --------------------------------------------------
  1614. PrcpInfoData = "";
  1615. PrcpInfoHeader = "status" +"▦" // 01 신규(I), DC(C)
  1616. + "rowno" +"▦" // 02 줄번호 (병리 요구)
  1617. + "prcpdd" +"▦" // 03 처방일자(외래/종건은 orddd와 동일, 입원은 처방일자)
  1618. + "prcpno" +"▦" // 04 처방번호 (status가 "I"일 경우 0)
  1619. + "prcphistno" +"▦" // 05 처방이력번호 (status가 "I"일 경우 0)
  1620. + "instcd" +"▦" // 06 기관코드
  1621. + "pid" +"▦" // 07 등록번호(원무Key)
  1622. + "orddd" +"▦" // 08 진료일자(원무Key) - 입원환자일 경우 indd
  1623. + "cretno" +"▦" // 09 생성번호(원무Key)
  1624. + "orddeptcd" +"▦" // 10 진료과(원무)
  1625. + "orddrid" +"▦" // 11 진료의ID(원무)
  1626. + "prcpgenrflag" +"▦" // 12 처방발생구분(원무) - O:외래, I:입원, E:응급, S:건진
  1627. + "prcpstatcd" +"▦" // 13 처방상태 : "000"
  1628. + "prcpkindcd" +"▦" // 14 처방종류 : "20"
  1629. + "prcpcd" +"▦" // 15 처방코드
  1630. + "calcscorcd" +"▦" // 16 수가코드
  1631. + "inclprcpcd" +"▦" // 17 종속처방코드 ("-")
  1632. + "inclprcpno" +"▦" // 18 종속처방번호 (일련번호 - 종속처방코드별로 생성)
  1633. + "prcpexecdeptcd" +"▦" // 19 처방실시부서코드 (수가의 접수부서를 넣어 주거나, 접수하는 부서코드, 없을 경우 "-"로 처리)
  1634. + "prcphopedd" +"▦" // 20 처방희망일자 (처방일자 이전으로 발생불가)
  1635. + "prcpqty" +"▦" // 21 처방수량 (1) (약품일 경우 반드시 포장단위 수량을 넣어 주어야 됨)
  1636. + "prcpqtyunitflag" +"▦" // 22 처방수량단위 (약품일 경우 "3", 그렇지 않을경우 "-")
  1637. + "prcptims" +"▦" // 23 처방횟수 (1) (입원일 경우 횟수에 따라 풀림)
  1638. + "prcpdayno" +"▦" // 24 처방일수 (1) (지원부서에서는 주사처방에 대하여 일수를 넣으면 안됨, 넣으면 자료가 문제가 생김)
  1639. + "payflagcd" +"▦" // 25 급여구분코드 (M0029 참조) -> "-"로 넣으주면 환자의 보험유형에 따라 자동 발생
  1640. + "erprcpflag" +"▦" // 26 응급처방구분 (Y/N)
  1641. + "precureprcpflag" +"▦" // 27 선처치처방구분 (Y/N)
  1642. + "nigtprcpflag" +"▦" // 28 야간처방구분 (Y/N) : 야간가산에 해당 될 경우
  1643. + "portprcpflag" +"▦" // 29 포터블처방구분 (Y/N)
  1644. + "fixprcpflag" +"▦" // 30 정액처방구분 (Y/N)
  1645. + "choiordflag" +"▦" // 31 선택처방구분 (Y/N) -> 만약 "-"일 경우 원무정보 기준으로 처리
  1646. + "anamneflag" +"▦" // 32 기왕력(증)구분 (Y/N)
  1647. + "prcpdirecflag" +"▦" // 33 처방방향구분 (코드정의서 M0041 참조), 재활은 위치구분으로 사용 : "-"
  1648. + "angioflagcd" +"▦" // 34 Angio구분 (코드정의서 M0006 참조) : "-"
  1649. + "opansflagcd" +"▦" // 35 수술마취구분 (코드정의서 M0007, M0008 참조) : "-"
  1650. + "ansttm" +"▦" // 36 마취처방에 대한 마취적용시간 - 분을 4자리로 표현, 연속검사 검사간격
  1651. + "offictourhealexamflag" +"▦" // 37 출장검진구분 (Y/N)
  1652. + "stemcellflag" +"▦" // 38 "00NNN" 건진청구구분, 조혈모(줄기)세포 구분 - Stem Cell Source 여부 ,Cryo여부, CD34 채집여부, 해동여부의 조합으로 구성
  1653. + "hosinhosoutflag" +"▦" // 39 원내외구분(건진은 "I", 약이 아닐경우 "-")
  1654. + "hosinprcpresncd" +"▦" // 40 원내처방사유 (건진에 해당하는 사유 - 정의, 약이 아닐경우 "00")
  1655. + "issdeptcd" +"▦" // 41 발행부서코드 (집계가 타부서일 경우 타과코드, 입원은 기본이 병동) -> "-" 로 처리하면 자동 처리(기본은 처방입력부서이나 입원은 해당 병동으로 처리)
  1656. + "prcpauthflag" +"▦" // 42 처방권한구분(0:의사처방화면, 1:의사및간호사공유처방, 2:순수간호처방, 3:지원부서의사처방, 4:기타처방 - 기타 지원부서 추가, 5:계산용원무처방, 6:건진처방 ==> 0,1만 의사처방화면에 보임, 단 3은 추후에 결정)
  1657. + "prcpinptflag" +"▦" // 43 처방입력구분(저장구분정보의 inptflag와 동일하게 처리)
  1658. + "prcpsignflag" +"▦" // 44 처방서명구분(0:인증안됨, 1:의사가 후인증, 2:인증완료)
  1659. + "oprsrvno" +"▦" // 45 수술예약번호(0)
  1660. + "clincstdyflag" +"▦" // 46 임상연구구분 (Y/N)
  1661. + "clincstdycd" +"▦" // 47 임상연구코드 ("-") -> 임상연구구분이 "Y"일 경우 임상연구코드를 등록
  1662. + "drugmthdspccd" +"▦" // 48 *투여방법및검체코드(약일 경우 복용방법, 진검 및 병리일 경우 검체코드, Default "-")
  1663. + "prcpdelivefact" +"▦" // 49 처방전달사항
  1664. + "tootfact" +"▦" // 50 치식 (병리만 사용, 나머지는 "-")
  1665. + "matrsetprcpspec" +"▦" // 51 *재료처방내용 ("-") -> 추후정의
  1666. + "calcflag" +"▦" // 52 계산구분 (Y/N)
  1667. + "rsrvflag" +"▦" // 53 예약구분 (Y/N)
  1668. + "rsrvdd" +"▦" // 54 예약일자 ("N"일 경우 "00000000")
  1669. + "rsrvtm" +"▦" // 55 예약시간 ("N"일 경우 "000000")
  1670. + "rsrvrid" +"▦" // 56 예약자ID ("-")
  1671. + "execdd" +"▦" // 57 실시일자 ("00000000")
  1672. + "exectm" +"▦" // 58 실시시간 ("000000")
  1673. + "execrid" +"▦" // 59 실시자ID ("-")
  1674. + "direcprcplnkdd" +"▦" // 60 지시처방연계일자 (00000000) -> 지원부서에서 사용 - 원지시처방의 처방일자
  1675. + "direcprcplnkno" +"▦" // 61 지시처방연계번호 (0) -> 지원부서에서 사용 - 원지시처방의 실시처방유일번호
  1676. + "ordreqlnkno" +"▦" // 62 진료의뢰연계번호 (0)
  1677. + "testreqlnkno" +"▦" // 63 검사의뢰연계번호 (0) -> 병리와 진단검사 사용
  1678. + "matrallsizespecid" +"▦" // 64 재료 allsize id
  1679. + "exptmthdfact" +"▦" // 65 기타 용법
  1680. + "opansflagcd" +"▦" // 66 수술마취구분
  1681. + "prcpflag" +"▦" // 67 처방구분 (코드정의서 M0035 참조 "0"을 제외한 해당 값을 넣어주세요...)1:정기,2:응급,3:추가
  1682. + "prcpnm" +"▦" // 68 처방명
  1683. + "prcpclscd" +"▦" // 69 처방분류코드
  1684. + "drugrateqty" +"▦" // 70 투여비율
  1685. + "aftcertflag" +"▦" // 71 후인증 구분(11:수술간호처방)
  1686. + "aftcertdrid" +"▦" // 72 후인증의사(수술:집도의, 마취(회복):마취의)
  1687. + "subcretno" +"▩"; // 73 생성번호(부유형)
  1688. //+ "drugrateqty" +"▩"; // 70 투여비율
  1689. //+ "aftcertflag" +"▦" // 71 후인증 구분(11:수술간호처방)
  1690. //+ "aftcertdrid" +"▩"; // 72 후인증의사(수술:집도의, 마취(회복):마취의)
  1691. // --------------------------------------------------
  1692. // 저장처방정보(saveSignInfoVO) ->" saveSignInfo"
  1693. // --------------------------------------------------
  1694. SignInfoData = "";
  1695. SignInfoHeader = "signdd" +"▦" // 01 서명일자
  1696. + "signno" +"▦" // 02 서명번호
  1697. + "instcd" +"▦" // 03 기관코드
  1698. + "pid" +"▦" // 04 등록번호
  1699. + "orddd" +"▦" // 05 진료일자
  1700. + "cretno" +"▦" // 06 생성번호
  1701. + "signflag" +"▦" // 07 서명구분
  1702. + "signgenrflag" +"▦" // 08 서명발생구분
  1703. + "rgstdeptcd" +"▦" // 09 등록부서코드
  1704. + "rgstdd" +"▦" // 10 등록일자
  1705. + "rgsttm" +"▦" // 11 등록시간
  1706. + "rgstrid" +"▦" // 12 등록자ID
  1707. + "updtdeptcd" +"▦" // 13 수정부서코드
  1708. + "updtdd" +"▦" // 14 수정일자
  1709. + "updttm" +"▦" // 15 수정시간
  1710. + "updtrid" +"▦" // 16 수정자ID
  1711. + "fstrgstrid" +"▦" // 17 최초등록자ID
  1712. + "fstrgstdt" +"▦" // 18 최초등록일시
  1713. + "lastupdtrid" +"▦" // 19 최종수정자ID
  1714. + "lastupdtdt" +"▦" // 20 최종수정일시
  1715. + "signbfcnts" +"▦" // 21 서명전내역
  1716. + "signaftcnts" +"▩"; // 22 서명후내역
  1717. } // 처방 Header 생성 fPrcpHeader()
  1718. // --------------------------------------------------
  1719. // 처방저장
  1720. // --------------------------------------------------
  1721. function fInitPrcpData(){
  1722. trace("01802 fInitPrcpData()");
  1723. // 처방정보 Save를 위한 Node생성
  1724. //var ordtype = ""; //환자진료형태(외래 O, 응급 E ,입원 I, D:DSC)
  1725. var deptcd = ""; //부서코드
  1726. var deptnm = ""; //부서명
  1727. //var indd = ""; //입원일자
  1728. //var orddd = ""; //진료일자
  1729. //var prcpdd = ""; //처방일자
  1730. var prcphistno = ""; //처방이력번호
  1731. var prcpno = ""; //처방번호
  1732. //var ordindd = ""; //진료일자(외래일 경우 orddd, 입원일 경우 indd)
  1733. //var cretno = ""; //환자 일자별 일련번호
  1734. ordtype = eval(gPathNode[6]).getColumn(0, "oppatflagcd"); // 환자진료형태(외래 O, 응급 E ,입원 I)
  1735. deptcd = sysf_getUserInfo("dutplcecd"); // 로인 사용자 근무지 부서 코드
  1736. deptnm = sysf_getUserInfo("dutplcenm"); // 로인 사용자 근무지 부서 코드명
  1737. // 사용 및 반납에 관한 부서는 차대리가 준비중
  1738. if (ordtype == "O") { //외래
  1739. indd = "-"; //입원일자(원무Key) - 외래일경우는 "-"
  1740. cretno = eval(gPathNode[6]).getColumn(0, "o_cretno");
  1741. orddd = eval(gPathNode[6]).getColumn(0, "o_orddd" );
  1742. ordindd = eval(gPathNode[6]).getColumn(0, "o_orddd" );
  1743. } else { //입원
  1744. orddd = "-" ; //진료일자(원무Key) - 입원일경우는 "-"
  1745. cretno = eval(gPathNode[6]).getColumn(0, "i_cretno");
  1746. indd = eval(gPathNode[6]).getColumn(0, "i_indd" );
  1747. ordindd = eval(gPathNode[6]).getColumn(0, "i_indd" );
  1748. }
  1749. //2008-07-31 오후 4:31:31 taebum allsize가 0일 경우에는 -로 처리
  1750. if(SvAllsizespecid == "0"){
  1751. SvAllsizespecid = "-";
  1752. }
  1753. // 저장구분정보(saveFlagInfoVO)
  1754. // 2007.12.05 + "Y" + "▦" // 07 처방오류구분(Y/N) -> Y일 경우 의사처방과 동일하게 오류리스트를 반환, N이면 오류를 확인하지 않음
  1755. // --------------------------------------------------------------
  1756. FlagInfoData = "2" + "▦" // 01 저장자료구분 (2:처방)
  1757. + ordtype + "▦" // 02 저장구분 (O:외래, I:입원, E:응급, S:건진)
  1758. + "2" + "▦" // 03 처방구분(M0035 처방권한에 대한 구분종류 : 간호 추가처방)
  1759. + "10" + "▦" // 04 입력구분(M0034 처방입력에 대한 구분종류 : 간호처방) 10:Cart처방
  1760. + "Y" + "▦" // 05 원무정보 처리구분 (Y/N)
  1761. + "N" + "▦" // 06 진단정보 처리구분 (Y/N)
  1762. + "Y" + "▦" // 07 처방오류구분(Y/N) -> Y일 경우 의사처방과 동일하게 오류리스트를 반환, N이면 오류를 확인하지 않음
  1763. + deptcd + "▦" // 08 부서코드 (입력자 또는 로그인한 사용자의 부서코드)
  1764. + deptnm + "▦" // 09 부서명 (입력자 또는 로그인한 사용자의 부서명)
  1765. + sysf_getUserInfo("userid") + "▦" // 10 사용자ID (입력자 또는 로그인한 사용자ID)
  1766. + sysf_getUserInfo("usernm") + "▦" // 11 사용자명 (입력자 또는 로그인한 사용자명)
  1767. + "Y" + "▦" // 12 전자서명여부 (Y/N)
  1768. + utlf_getCurrentDate() + "▩"; // 13 처방일자
  1769. // 저장등록정보(saveRgstInfoVO)
  1770. RgstInfoData = sPrcpPid + "▦" // 1 등록번호(원무Key)
  1771. + orddd + "▦" // 2 진료일자(원무Key) - 입원일경우는 "-"
  1772. + indd + "▦" // 3 입원일자(원무Key) - 외래일경우는 "-"
  1773. + cretno + "▦" // 4 생성번호(원무Key)
  1774. + eval(gPathNode[6]).getColumn(0, "orddeptcd" ) + "▦" // 5 진료과(원무)
  1775. + eval(gPathNode[6]).getColumn(0, "orddrid" ) + "▦" // 6 진료의ID(원무)
  1776. + eval(gPathNode[6]).getColumn(0, "instcd" ) + "▦" // 7 기관코드
  1777. + eval(gPathNode[6]).getColumn(0, "depthngnm" ) + "▦" // 8 진료과명(원무)
  1778. + eval(gPathNode[6]).getColumn(0, "perfdridnm" ) + "▦" // 9 진료의명(원무)
  1779. + eval(gPathNode[6]).getColumn(0, "patname" ) + "▦" // 10 환자명
  1780. + eval(gPathNode[6]).getColumn(0, "sa" ) + "▦" // 11 성별나이
  1781. + eval(gPathNode[6]).getColumn(0, "oppatflagcd") + "▩"; // 12 외래입원구분
  1782. // 저장처방정보(savePrcpInfoVO) 자료를 구성한다.
  1783. PrcpData = "";
  1784. PrcpData0101 = "" ; // 01 신규(I), DC(C)
  1785. PrcpData0205 = "" ; // 02 줄번호 (병리 요구)
  1786. // 03 처방일자(외래/종건은 orddd와 동일, 입원은 처방일자)
  1787. // 04 처방번호 (status가 "I"일 경우 0)
  1788. // 05 처방이력번호 (status가 "I"일 경우 0)
  1789. PrcpData0614 = eval(gPathNode[6]).getColumn(0, "instcd") + "▦" // 06 기관코드
  1790. + sPrcpPid + "▦" // 07 등록번호(원무Key)
  1791. + ordindd + "▦" // 08 진료일자(원무Key) - 입원환자일 경우 indd
  1792. + cretno + "▦" // 09 생성번호(원무Key)
  1793. + eval(gPathNode[6]).getColumn(0, "orddeptcd") + "▦" // 10 진료과(원무)
  1794. + eval(gPathNode[6]).getColumn(0, "orddrid") + "▦" // 11 진료의ID(원무)
  1795. + ordtype + "▦" // 12 처방발생구분(원무) - O:외래, I:입원, E:응급, S:건진
  1796. + "610" + "▦" // 13 처방상태 : "000" , 610:실시완료
  1797. + "35" + "▦"; // 14 처방종류 : "20" , 35:수술중 2007.12.20 수술중생성으로 35로 변경
  1798. PrcpData1520 = "" ; // 15 처방코드
  1799. // 16 수가코드 MMBTPRCD의 수가 코드 가져올것
  1800. // 17 종속처방코드 ("-") => default : "-"
  1801. // 18 종속처방번호 (일련번호 - 종속처방코드별로 생성) => default : 0
  1802. // 19 처방실시부서코드 (수가의 접수부서를 넣어 주거나, 접수하는 부서코드, 없을 경우 "-"로 처리)
  1803. // 20 처방희망일자 (처방일자 이전으로 발생불가)
  1804. PrcpData2122 = "" ; // 21 처방수량 (1) (약품일 경우 반드시 포장단위 수량을 넣어 주어야 됨) 0 => default : 1
  1805. // 22 처방수량단위 (약품일 경우 "3", 그렇지 않을경우 "-") => default : "-"
  1806. //PrcpData2340 = "1" + "▦" // 23 처방횟수 (1) (입원일 경우 횟수에 따라 풀림) => default : 1
  1807. PrcpData2324 = "1" + "▦" // 23 처방횟수 (1) (입원일 경우 횟수에 따라 풀림) => default : 1
  1808. + "1" + "▦"; // 24 처방일수 (1) (지원부서에서는 주사처방에 대하여 일수를 넣으면 안됨, 넣으면 자료가 문제가 생김) => default : 1
  1809. PrcpData2528 = "" + "▦" // 25 급여구분코드 (M0029 참조) -> "-"로 넣으주면 환자의 보험유형에 따라 자동 발생
  1810. + + "▦" // 26 응급처방구분 (Y/N) ==> default : "N"
  1811. + "" + "▦" // 27 선처치처방구분 (Y/N) ==> default : "N" MMBTPRCD
  1812. + "" + "▦" // 28 야간처방구분 (Y/N) : 야간가산에 해당 될 경우 ==> default : "N" // 2009-03-09 ycd 야간처방구분 추가
  1813. PrcpData3940 = "-" + "▦" // 39 원내외구분(건진은 "I", 약이 아닐경우 "-") => default : "-"
  1814. + "00" + "▦"; // 40 원내처방사유 (건진에 해당하는 사유 - 정의, 약이 아닐경우 "00") => default : "00"
  1815. PrcpData4141 = "" ; // 41 발행부서코드 (집계가 타부서일 경우 타과코드, 입원은 기본이 병동) -> "-" 로 처리하면 자동 처리(기본은 처방입력부서이나 입원은 해당 병동으로 처리) => default : "-"
  1816. PrcpData4243 = "2" + "▦" // 42 처방권한구분(0:의사처방화면, 1:의사및간호사공유처방, 2:순수간호처방, 3:지원부서의사처방, 4:기타처방 - 기타 지원부서 추가, 5:계산용원무처방, 6:건진처방 ==> 0,1만 의사처방화면에 보임, 단 3은 추후에 결정)
  1817. + "10" + "▦"; // 43 처방입력구분(저장구분정보의 inptflag와 동일하게 처리) 10:Cart처방
  1818. + "0" + "▦" // 44 처방서명구분(0:인증안됨, 1:의사가 후인증, 2:인증완료) => default : "2"
  1819. PrcpData4547 = eval(gPathNode[6]).getColumn(0, "oprsrvno") + "▦" // 45 수술예약번호(0) => default : "-"
  1820. + "N" + "▦" // 46 임상연구구분 (Y/N)
  1821. + "-" + "▦"; // 47 임상연구코드 ("-") -> 임상연구구분이 "Y"일 경우 임상연구코드를 등록 => default : "-"
  1822. //PrcpData4247 = "2" + "▦" // 42 처방권한구분(0:의사처방화면, 1:의사및간호사공유처방, 2:순수간호처방, 3:지원부서의사처방, 4:기타처방 - 기타 지원부서 추가, 5:계산용원무처방, 6:건진처방 ==> 0,1만 의사처방화면에 보임, 단 3은 추후에 결정)
  1823. // + "10" + "▦" // 43 처방입력구분(저장구분정보의 inptflag와 동일하게 처리) 10:Cart처방
  1824. // + "0" + "▦" // 44 처방서명구분(0:인증안됨, 1:의사가 후인증, 2:인증완료) => default : "2"
  1825. // + model.getValue(gPathNode[6] +"/oprsrvno") + "▦" // 45 수술예약번호(0) => default : "-"
  1826. // + "N" + "▦" // 46 임상연구구분 (Y/N)
  1827. // + "-" + "▦"; // 47 임상연구코드 ("-") -> 임상연구구분이 "Y"일 경우 임상연구코드를 등록 => default : "-"
  1828. PrcpData4848 = "" ; // 48 투여방법및검체코드(약일 경우 복용방법, 진검 및 병리일 경우 검체코드, Default "-") => default : "-"
  1829. //2008-05-30 오전 11:13:16 김태범 수정 - 처방 전달사항을 default '-'로 수정함.
  1830. PrcpData5063 = "-" + "▦" // 50 치식 (병리만 사용, 나머지는 "-") => default : "-"
  1831. + "-" + "▦" // 51 재료처방내용 ("-") -> 추후정의
  1832. + PrcpData52 + "▦" // 52 계산구분 (Y/N)
  1833. + "N" + "▦" // 53 예약구분 (Y/N)
  1834. + "00000000" + "▦" // 54 예약일자 ("N"일 경우 "00000000")
  1835. + "000000" + "▦" // 55 예약시간 ("N"일 경우 "000000")
  1836. + "-" + "▦" // 56 예약자ID ("-")
  1837. + utlf_getCurrentDate() + "▦" // 57 실시일자 ("00000000")
  1838. + utlf_getCurrentTime() + "▦" // 58 실시시간 ("000000")
  1839. + sysf_getUserInfo("userid") + "▦" // 59 실시자ID ("-")
  1840. + "00000000" + "▦" // 60 지시처방연계일자 (00000000) -> 지원부서에서 사용 - 원지시처방의 처방일자
  1841. + "0" + "▦" // 61 지시처방연계번호 (0) -> 지원부서에서 사용 - 원지시처방의 실시처방유일번호
  1842. + "0" + "▦" // 62 진료의뢰연계번호 (0)
  1843. + "0" + "▦"; // 63 검사의뢰연계번호 (0) -> 병리와 진단검사 사용
  1844. PrcpData64 = "" + "▦"; // 64 allsize
  1845. PrcpData65 = "" + "▦"; // 65 기타 용법
  1846. PrcpData66 = "-" + "▦"; // 66 수술마취구분 M0007,M0008 -> 수술처방일경우 4 주수술로 보냄
  1847. PrcpData67 = "2" + "▦"; // 67 처방구분 (코드정의서 M0035 참조 "0"을 제외한 해당 값을 넣어주세요...)1:정기,2:응급,3:추가
  1848. PrcpData68 = "" + "▦"; // 68 처방명
  1849. PrcpData69 = "" + "▦" // 69 처방분류코드
  1850. + "-" + "▦"; // 70 투여비율
  1851. } // 처방저장 fInitPrcpData()
  1852. /**
  1853. * @group :
  1854. * @ver : 2008-07-16 오후 6:05:11
  1855. * @by : 김태범
  1856. * @---------------------------------------------------
  1857. * @type : function
  1858. * @access : public
  1859. * @desc : 반환사유내역등록기능
  1860. * @param :
  1861. * @param :
  1862. * @return :
  1863. * @---------------------------------------------------
  1864. */
  1865. function fnEndddSave(pFlag) {
  1866. trace("01802 fnEndddSave()");
  1867. //현재 카트 상태가 확정일 경우에만 해당함.
  1868. var sCcrtStat = ds_init_WorkData_cond.getColumn(0, "cartstat");
  1869. if(sCcrtStat != "5" && sCcrtStat != "9"){ // -- 확정, 반납
  1870. return;
  1871. }
  1872. var sPathCheckStr = "ds_main_CartOrdData_ListDiposit▨" //처지처방
  1873. + "ds_main_CartOrdData_ListSupplies▨" //Supplies
  1874. + "ds_main_CartOrdData_ListSutures▨" //Sutures
  1875. + "ds_main_CartOrdData_ListDrug▨" // Drug
  1876. + "ds_main_CartOrdData_ListInstrument▨" //Instrument
  1877. + "ds_main_CartOrdData_ListOpsupply"; //수술소모품
  1878. var sGridPathStr = "group3.grp_ord.switch1.case3.grd_diposit▨"
  1879. + "group3.grp_ord.switch1.case3.grd_supplies▨"
  1880. + "grd_sutures▨"
  1881. + "group3.grp_ord.switch1.case3.grd_drug▨"
  1882. + "group3.grp_ord.switch1.case4.grd_instrument▨"
  1883. + "group3.grp_ord.switch1.case4.grd_opsupply";
  1884. var sPathCheckArr = sPathCheckStr.split("▨");
  1885. var sGridPathkArr = sGridPathStr.split("▨");
  1886. var sCurrentPath = "";
  1887. var sCurrentGrid = "";
  1888. var sinstcd = sysf_getUserInfo("dutplceinstcd");
  1889. var sEndFlag = false;
  1890. var sprcpdd = "";
  1891. var sprcpno = "";
  1892. var sprcphistno = "";
  1893. var sexecprcpno = "";
  1894. var sioflag = "";
  1895. var sDeleteFlag = "";
  1896. var sRecflag = "";
  1897. var sTempSaveqty = "";
  1898. var sTempOutqty = "";
  1899. for( var i=0 ; i<sPathCheckArr.length ; i++ ){
  1900. sEndFlag = false;
  1901. sCurrentPath = eval(sPathCheckArr[i]);
  1902. sCurrentGrid = sGridPathkArr[i];
  1903. var iRows = sCurrentPath.rowcount;
  1904. /*
  1905. switch (sCurrentGrid) {
  1906. case "grd_diposit" :
  1907. iRows = getNodesetCount(sCurrentPath);
  1908. break;
  1909. case "grd_supplies" :
  1910. iRows = grd_supplies.rows - grd_supplies.fixedrows;
  1911. break;
  1912. case "grd_sutures" :
  1913. iRows = grd_sutures.rows - grd_sutures.fixedrows;
  1914. break;
  1915. case "grd_drug" :
  1916. iRows = grd_drug.rows - grd_drug.fixedrows;
  1917. break;
  1918. case "grd_instrument" :
  1919. iRows = grd_instrument.rows - grd_instrument.fixedrows;
  1920. break;
  1921. case "grd_opsupply" :
  1922. iRows = grd_opsupply.rows - grd_opsupply.fixedrows;
  1923. break;
  1924. default :
  1925. break;
  1926. }
  1927. */
  1928. for( var k=0 ; k<iRows ; k++ ){
  1929. if(pFlag == "D"){
  1930. sDeleteFlag = sCurrentPath.getColumn(k, "delcheck");
  1931. if( sDeleteFlag == "1"){
  1932. sprcpdd = sCurrentPath.getColumn(k, "prcpdd");
  1933. sprcpno = sCurrentPath.getColumn(k, "prcpno");
  1934. sprcphistno = sCurrentPath.getColumn(k, "prcphistno");
  1935. fnEndddSaveData(sprcpdd, sprcpno, sprcphistno); //마감 요부 확인 후 사유 입력 팝업 호출
  1936. }else{
  1937. continue;
  1938. }
  1939. }else{
  1940. sRecflag = sCurrentPath.getColumn(k, "recflag");
  1941. if(sRecflag == "U"){
  1942. sTempSaveqty = sCurrentPath.getColumn(k, "saveqty"); // 변경Check 수량 (물품수량 + 가감수량)
  1943. sTempOutqty = sCurrentPath.getColumn(k, "outqty"); // 변경할 수량 (물품수량 + 가감수량)
  1944. if(sTempSaveqty != sTempOutqty){
  1945. sprcpdd = sCurrentPath.getColumn(k, "prcpdd");
  1946. sprcpno = sCurrentPath.getColumn(k, "prcpno");
  1947. sprcphistno = sCurrentPath.getColumn(k, "prcphistno");
  1948. fnEndddSaveData(sprcpdd, sprcpno, sprcphistno); //마감 요부 확인 후 사유 입력 팝업 호출
  1949. }else{
  1950. continue;
  1951. }
  1952. }
  1953. }
  1954. }
  1955. }
  1956. }
  1957. /**
  1958. * 마감여부 조회 및 사유 입력 메세지 연동
  1959. */
  1960. function fnEndddSaveData(sprcpdd, sprcpno, sprcphistno){
  1961. trace("01802 fnEndddSaveData()");
  1962. //alert("fnEndddSaveData 접근완료!! sprcpdd : "+sprcpdd+ " , sprcpno : "+ sprcpno+ " , sprcphistno : "+sprcphistno);
  1963. var sPathEndSave = ds_sendendresult_endinfo_list; //반환사유정보생성path
  1964. var sPathEndResult = ds_endddresult_endddresult;
  1965. var sPathEndCond = ds_endddresult_endddresult.getColumn(0, "enddd"); //enddd 확인 결과(종료일자)
  1966. var sPathEndCond2 = ds_endddresult_endddresult.getColumn(0, "execprcpno"); //enddd 확인 결과(간호처방 풀림 일련번호)
  1967. var sPathEndCond3 = ds_endddresult_endddresult.getColumn(0, "instcd"); //enddd 확인 결과(간호처방 풀림 일련번호)
  1968. var sexecprcpno = "";
  1969. var sinstcd = "";
  1970. var sioflag = appf_getPatientInfoDetail("ioflag");
  1971. sPathEndResult.clearData();
  1972. ds_sendendsearch.setColumn(0, "prcpdd", utlf_transNullToEmpty(sprcpdd));
  1973. ds_sendendsearch.setColumn(0, "prcpno", utlf_transNullToEmpty(sprcpno));
  1974. ds_sendendsearch.setColumn(0, "prcphistno", utlf_transNullToEmpty(sprcphistno));
  1975. //model.makeValue(sPathEndCond + "/execprcpno", sexecprcpno); 수술마취 처방은 1건 자동액팅 되므로 execprcpno는 prcphistno와 동일함.
  1976. //model.makeValue(sPathEndCond + "/instcd", sinstcd);
  1977. //model.makeValue(sPathEndCond + "/ioflag", sioflag);
  1978. var oParam = {};
  1979. oParam.id = "TXMNP01806";
  1980. oParam.service = "opanstapp.OpAnstCCrtGoodMngt";
  1981. oParam.method = "reqGetEndddList";
  1982. oParam.inds = "req=ds_sendendsearch";
  1983. oParam.outds = "ds_endddresult_endddresult=endddresult";
  1984. oParam.async = false;
  1985. //oParam.callback = "cf_TXMNP01806";
  1986. tranf_submit(oParam);
  1987. // model.alert("enddd : "+ model.getValue("/root/endddresult/enddd"));
  1988. //alert("TXMNP01806 조회완료!! "+model.getValue(sPathEndCond));
  1989. //조회된 처방 내역이 없거나, 종료되지 않았을 경우 return 한다.
  1990. var sTemEnddd = sPathEndCond;
  1991. if( utlf_transNullToEmpty(sTemEnddd).substr(0,8) == "99991231" || utlf_isNull(sTemEnddd) ){
  1992. return;
  1993. }
  1994. sexecprcpno = sPathEndCond2;
  1995. sinstcd = sPathEndCond3;
  1996. sPathEndSave.setColumn(0, "prcpdd", sprcpdd);
  1997. sPathEndSave.setColumn(0, "prcpno", sprcpno);
  1998. sPathEndSave.setColumn(0, "prcphistno", sprcphistno);
  1999. sPathEndSave.setColumn(0, "execprcpno", sexecprcpno);
  2000. sPathEndSave.setColumn(0, "instcd", sinstcd);
  2001. sPathEndSave.setColumn(0, "ioflag", sioflag);
  2002. if( sPathEndSave.rowcount > 0 ){
  2003. var objArg = new Object();
  2004. objArg.arg_ds_endinfo_result_list = sPathEndSave;
  2005. frmf_modal("SPPAS03000","SPPAS03000",objArg,"",2,100,100,"","","","","","M");
  2006. }
  2007. }
  2008. /* 일반청구 물품 재료집계 테이블로 쌓기 위한 Header 정보 Setting (EMR.MMODMRSM table 참고 ) */
  2009. function fMrsmHeader(){
  2010. trace("01802 fMrsmHeader()");
  2011. sMrsmHeader = "genrdd" +"▦"
  2012. + "genrno" +"▦"
  2013. + "instcd" +"▦"
  2014. + "pid" +"▦"
  2015. + "orddd" +"▦"
  2016. + "cretno" +"▦"
  2017. + "orddeptcd" +"▦"
  2018. + "orddrid" +"▦"
  2019. + "prcpgenrflag" +"▦"
  2020. + "prcpdd" +"▦"
  2021. + "execprcpuniqno" +"▦"
  2022. + "calcscorcd" +"▦"
  2023. + "prcpflag" +"▦"
  2024. + "execprcpqty" +"▦"
  2025. + "execprcptims" +"▦"
  2026. + "execprcpdayno" +"▦"
  2027. + "execprcptotqty" +"▦"
  2028. + "allsizespecid" +"▦"
  2029. + "issdeptcd" +"▦"
  2030. + "wardcd" +"▦"
  2031. + "roomcd" +"▦"
  2032. + "pamexecdd" +"▦"
  2033. + "execdd" +"▦"
  2034. + "exectm" +"▦"
  2035. + "execrid" +"▦"
  2036. + "sumflag" +"▦"
  2037. + "sumdt" +"▦"
  2038. + "goodcls" +"▦"
  2039. + "ordseq" +"▦"
  2040. + "cartgubn" +"▦"
  2041. + "oprsrvno" +"▩";
  2042. }
  2043. /* ------------------------------------------------- */
  2044. /* ------End Of List ------------------------------- */
  2045. /* -------------------------------------------------- */
  2046. function fSuppkind() {
  2047. trace("01802 fSuppkind()");
  2048. var pid = ds_main_MmohoprsLists_mmohoprslist.getColumn(0, "pid");
  2049. var indd = ds_main_MmohoprsLists_mmohoprslist.getColumn(0, "i_indd");
  2050. ds_temp_send.setColumn(0, "pid", pid);
  2051. ds_temp_send.setColumn(0, "indd", indd);
  2052. var oParam = {};
  2053. oParam.id = "TRMMO15701";
  2054. oParam.service = "prcpmngtapp.PatPrcpSrchMngt";
  2055. oParam.method = "reqGetPatSupKind";
  2056. oParam.inds = "req=ds_temp_send";
  2057. oParam.outds = "ds_temp_patsupkind_patsupkind=patsupkind";
  2058. oParam.async = false;
  2059. oParam.callback = "cf_TRMMO15701";
  2060. tranf_submit(oParam);
  2061. if( arErrorCode.pop("TRMMO15701") > -1 ){
  2062. var nodelist = ds_temp_patsupkind_patsupkind;
  2063. if( !utlf_isNull(nodelist) ){
  2064. if( nodelist.rowcount > 1 ){
  2065. frmf_clearParameter("SPMMO15700_subcretno");
  2066. var objArg = new Object();
  2067. objArg.arg_ds_temp_patsupkind = ds_temp_patsupkind_patsupkind;
  2068. frmf_modal("SPMMO15700","SPMMO15700",objArg,"","","","","","","","","","M");
  2069. var subcretno = frmf_getParameter("SPMMO15700_subcretno");
  2070. if(subcretno == "0") {
  2071. var rtn = sysf_messageBox("주유형으로 처방을 발행하시겠습니까?", "Q");
  2072. if(rtn != "6") {
  2073. return "false";
  2074. }
  2075. }
  2076. if( utlf_isNull(subcretno) ){
  2077. sysf_messageBox("유형을 선택하세요", "E");
  2078. return "false";
  2079. }
  2080. ds_temp_prcpinfo.setColumn(0, "subcretno", subcretno);
  2081. }
  2082. }
  2083. } else{ //기왕증이 N로 처리된 경우에는 subcretno 0로 처리
  2084. ds_temp_prcpinfo.setColumn(0, "subcretno", "0");
  2085. }
  2086. }
  2087. function cf_TRMMO15701(sSvcId, nErrorCode, sErrorMsg) {
  2088. arErrorCode.push(sSvcId, nErrorCode);
  2089. }
  2090. ]]></Script>