SMMNP01802.js 140 KB

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