Released SD*5.3*805 SEQ #660 Extracted from mail message **KIDS**:SD*5.3*805^ **INSTALL NAME** SD*5.3*805 "BLD",12685,0) SD*5.3*805^SCHEDULING^0^3220222^y "BLD",12685,1,0) ^^124^124^3220131^ "BLD",12685,1,1,0) VSE-175: Tasks Tab - Help section "BLD",12685,1,2,0) VSE-191: Pending Appointment Letter - Remediate 508 findings in Pending "BLD",12685,1,3,0) Appointment Letter form "BLD",12685,1,4,0) VSE-201: Reports Tab - Remediate 508 findings in Reports Tab form "BLD",12685,1,5,0) VSE-1941: VistA: SDES RPC to create appointment in HOSPITAL LOCATION "BLD",12685,1,6,0) file (#44) "BLD",12685,1,7,0) VSE-1942: VistA: SDES RPC to update/edit appointment in HOSPITAL "BLD",12685,1,8,0) LOCATION file (#44) "BLD",12685,1,9,0) VSE-1943: VistA: SDES RPC to read appointment in HOSPITAL LOCATION file "BLD",12685,1,10,0) (#44) "BLD",12685,1,11,0) VSE-1944: VistA: SDES RPC to delete appointment in HOSPITAL LOCATION "BLD",12685,1,12,0) file (#44) "BLD",12685,1,13,0) VSE-1945: Allow users to update PID when no-showing an appointment "BLD",12685,1,14,0) VSE-2074: .NET: Allow user to update PID when rescheduling an "BLD",12685,1,15,0) appointment that was canceled by patient "BLD",12685,1,16,0) VSE-2107: VistA: Add EAS Tracking Number to all SDES RPCs "BLD",12685,1,17,0) VSE-2114: .NET GUI: VVS appointments are converting to incorrect time "BLD",12685,1,18,0) zones. "BLD",12685,1,19,0) VSE-2223: - VistA: Update SDES Get User Profile RPC to receive SECID "BLD",12685,1,20,0) rather than VPID "BLD",12685,1,21,0) VSE-2226: VistA: Updates to support VVS timezone correction "BLD",12685,1,22,0) VSE-2231: VistA: Update the Insurance Verification Logic in the SDES "BLD",12685,1,23,0) GET INSURANCE VERIFY REQ RPC. "BLD",12685,1,24,0) VSE-2333: VistA: RPC SDES CREATE CLINIC defaults clinic start time to "BLD",12685,1,25,0) Midnight when editing and clinic start time not answered "BLD",12685,1,26,0) VSE-2264: VistA: Block and Move requires cancel reason. "BLD",12685,1,27,0) VSE-2333: VistA: RPC SDES CREATE CLINIC defaults clinic start time to "BLD",12685,1,28,0) Midnight when editing and clinic start time not answered. "BLD",12685,1,29,0) "BLD",12685,1,30,0) FILES: "BLD",12685,1,31,0) ====== "BLD",12685,1,32,0) RECALL REMINDERS (#403.5) EAS TRACKING NUMBER (#100) - VSE-2107 "BLD",12685,1,33,0) RECALL REMINDERS REMOVED (#403.56) EAS TRACKING NUMBER (#100) - VSE-2107 "BLD",12685,1,34,0) SDEC APPOINTMENT (#409.84) EAS TRACKING NUMBER (#100) - VSE-2107 "BLD",12685,1,35,0) SDEC APPT REQUEST (#409.85) EAS TRACKING NUMBER (#100) - VSE-2107 "BLD",12685,1,36,0) (#409.85) PID CHANGE ALLOWED (#49) "BLD",12685,1,37,0) PID HISTORY (#409.854) PID HISTORY (#50) "BLD",12685,1,38,0) SDEC CONSULT PID HISTORY (#409.87) FULL FILE "BLD",12685,1,39,0) "BLD",12685,1,40,0) ROUTINES: "BLD",12685,1,41,0) ========= "BLD",12685,1,42,0) SDEC07 - VSE-2107,2074 "BLD",12685,1,43,0) SDEC08 - VSE-2107 "BLD",12685,1,44,0) SDES - VSE-2107,VSE-2223,VSE-1943 "BLD",12685,1,45,0) SDESAPPT - VSE-2107 "BLD",12685,1,46,0) SDESAPPTDATA - VSE-2097 "BLD",12685,1,47,0) SDESAPTREQSET - VSE-2097 "BLD",12685,1,48,0) SDESBLKANDMOVE - VSE-2107,VSE-2264 "BLD",12685,1,49,0) SDESCANCELAPPT - VSE-2107 "BLD",12685,1,50,0) SDESCCAVAIL - VSE-2107 "BLD",12685,1,51,0) SDESCKNSTEP - VSE-2107 "BLD",12685,1,52,0) SDESCLINICAVAIL - VSE-2107 "BLD",12685,1,53,0) SDESCLINICSET - VSE-2107,VSE-2333 "BLD",12685,1,54,0) SDESCLNSETAVAIL - VSE-2107 "BLD",12685,1,55,0) SDESDISPRECALL - VSE-2107 "BLD",12685,1,56,0) SDESARCLOSE - VSE-2107 "BLD",12685,1,57,0) SDESARGET - VSE-2107 "BLD",12685,1,58,0) SDESGETRECALL - VSE-2107 "BLD",12685,1,59,0) SDESGETREGA - VSE-2107 "BLD",12685,1,60,0) SDESGETUD - VSE-2107,VSE-2223 "BLD",12685,1,61,0) SDESINACTCLINIC - VSE-2107 "BLD",12685,1,62,0) SDESJSON - VSE-2107,VSE-2223 "BLD",12685,1,63,0) SDESPATRPC - VSE-2107,VSE-2231 "BLD",12685,1,64,0) SDESRTVCLN - VSE-2107 "BLD",12685,1,65,0) SDESUPDRECREQ - VSE-2107 "BLD",12685,1,66,0) SDECDUZ - VSE-2226 "BLD",12685,1,67,0) SDECVVS - VSE-2226 "BLD",12685,1,68,0) SDESVVSJSON - VSE-2226 "BLD",12685,1,69,0) SDESUTIL - VSE-2107,VSE-2226 "BLD",12685,1,70,0) SDECDATE - VSE-2226 "BLD",12685,1,71,0) SDAMUTDT - VSE-2226 "BLD",12685,1,72,0) SDEC - VSE-2074 "BLD",12685,1,73,0) SDEC07 - VSE-2074 "BLD",12685,1,74,0) SDEC08 - VSE-2074 "BLD",12685,1,75,0) SDEC31 - VSE-2074 "BLD",12685,1,76,0) SDECAR2 - VSE-2074 "BLD",12685,1,77,0) SDECAR4 - VSE-2074 "BLD",12685,1,78,0) SDECCONSJSON - VSE-2074 "BLD",12685,1,79,0) SDECRECREQ - VSE-2074 "BLD",12685,1,80,0) SDECAR - VSE-2074 "BLD",12685,1,81,0) SDESGETCLINAPPT - VSE-1943 "BLD",12685,1,82,0) "BLD",12685,1,83,0) "BLD",12685,1,84,0) REMOTE PROCEDURES: "BLD",12685,1,85,0) ================== "BLD",12685,1,86,0) SDES CANCEL APPT - VSE-2107 "BLD",12685,1,87,0) SDES CANCEL CLIN AVAILABILITY - VSE-2107 "BLD",12685,1,88,0) SDES CREATE APPT BLK AND MOVE - VSE-2107 "BLD",12685,1,89,0) SDES CREATE APPT REQ - VSE-2107 "BLD",12685,1,90,0) SDES CREATE CLIN AVAILABILITY - VSE-2107 "BLD",12685,1,91,0) SDES CREATE CLINIC - VSE-2107 "BLD",12685,1,92,0) SDES CREATE RECALL REQ - VSE-2107 "BLD",12685,1,93,0) SDES DISPOSITION RECALL REQ - VSE-2107 "BLD",12685,1,94,0) SDES DISPOSITION APPT REQ - VSE-2107 "BLD",12685,1,95,0) SDES EDIT APPT REQ - VSE-2107 "BLD",12685,1,96,0) SDES EDIT CHECK-IN STEP - VSE-2107 "BLD",12685,1,97,0) SDES EDIT CLINIC - VSE-2107 "BLD",12685,1,98,0) SDES EDIT CLINIC AVAILABILITY - VSE-2107 "BLD",12685,1,99,0) SDES EDIT RECALL REQ - VSE-2107 "BLD",12685,1,100,0) SDES GET APPT BY IEN - VSE-2107 "BLD",12685,1,101,0) SDES GET APPT CHECK-IN STEP - VSE-2107 "BLD",12685,1,102,0) SDES GET APPT CHECK-IN STEPS - VSE-2107 "BLD",12685,1,103,0) SDES GET APPT REQ BY IEN - VSE-2107 "BLD",12685,1,104,0) SDES GET APPT REQ BY PATIENT - VSE-2107 "BLD",12685,1,105,0) SDES GET APPTS BY CLINIC - VSE-2107 "BLD",12685,1,106,0) SDES GET APPTS BY PATIENT - VSE-2107 "BLD",12685,1,107,0) SDES GET APPTS BY RESOURCE - VSE-2107 "BLD",12685,1,108,0) SDES GET CHECK-IN STEP - VSE-2107 "BLD",12685,1,109,0) SDES GET CHECK-IN STEPS - VSE-2107 "BLD",12685,1,110,0) SDES GET CLIN AVAILABILITY - VSE-2107 "BLD",12685,1,111,0) SDES GET CLINIC INFO - VSE-2107 "BLD",12685,1,112,0) SDES GET INSURANCE VERIFY REQ - VSE-2107 "BLD",12685,1,113,0) SDES GET PATIENT REGISTRATION - VSE-2107 "BLD",12685,1,114,0) SDES GET RECALL BY IEN - VSE-2107 "BLD",12685,1,115,0) SDES GET RECALLS BY DFN - VSE-2107 "BLD",12685,1,116,0) SDES GET USRPROFILE - VSE-2107,VSE-2223 "BLD",12685,1,117,0) SDES INACTIVATE/ZZ CLINIC - VSE-2107 "BLD",12685,1,118,0) SDES SET APPT CHECK-IN STEP - VSE-2107 "BLD",12685,1,119,0) SDES SET CHECK-IN STEP - VSE-2107 "BLD",12685,1,120,0) "BLD",12685,1,121,0) "BLD",12685,1,122,0) OPTIONS: "BLD",12685,1,123,0) ======== "BLD",12685,1,124,0) SDESRPC - VSE-2107 "BLD",12685,4,0) ^9.64PA^409.87^5 "BLD",12685,4,403.5,0) 403.5 "BLD",12685,4,403.5,2,0) ^9.641^403.5^1 "BLD",12685,4,403.5,2,403.5,0) RECALL REMINDERS (File-top level) "BLD",12685,4,403.5,2,403.5,1,0) ^9.6411^100^1 "BLD",12685,4,403.5,2,403.5,1,100,0) EAS TRACKING NUMBER "BLD",12685,4,403.5,222) y^y^p^^^^n^^n "BLD",12685,4,403.5,224) "BLD",12685,4,403.56,0) 403.56 "BLD",12685,4,403.56,2,0) ^9.641^403.56^1 "BLD",12685,4,403.56,2,403.56,0) RECALL REMINDERS REMOVED (File-top level) "BLD",12685,4,403.56,2,403.56,1,0) ^9.6411^100^1 "BLD",12685,4,403.56,2,403.56,1,100,0) EAS TRACKING NUMBER "BLD",12685,4,403.56,222) y^y^p^^^^n^^n "BLD",12685,4,403.56,224) "BLD",12685,4,409.84,0) 409.84 "BLD",12685,4,409.84,2,0) ^9.641^409.84^1 "BLD",12685,4,409.84,2,409.84,0) SDEC APPOINTMENT (File-top level) "BLD",12685,4,409.84,2,409.84,1,0) ^9.6411^100^1 "BLD",12685,4,409.84,2,409.84,1,100,0) EAS TRACKING NUMBER "BLD",12685,4,409.84,222) y^y^p^^^^n^^n "BLD",12685,4,409.84,224) "BLD",12685,4,409.85,0) 409.85 "BLD",12685,4,409.85,2,0) ^9.641^409.854^2 "BLD",12685,4,409.85,2,409.85,0) SDEC APPT REQUEST (File-top level) "BLD",12685,4,409.85,2,409.85,1,0) ^9.6411^49^2 "BLD",12685,4,409.85,2,409.85,1,49,0) PID CHANGE ALLOWED "BLD",12685,4,409.85,2,409.85,1,100,0) EAS TRACKING NUMBER "BLD",12685,4,409.85,2,409.854,0) PID HISTORY (sub-file) "BLD",12685,4,409.85,2,409.854,1,0) ^9.6411^2^3 "BLD",12685,4,409.85,2,409.854,1,.01,0) DATE/TIME PID ENTERED "BLD",12685,4,409.85,2,409.854,1,1,0) PID "BLD",12685,4,409.85,2,409.854,1,2,0) ENTERED BY "BLD",12685,4,409.85,222) y^y^p^^^^n^^n "BLD",12685,4,409.85,224) "BLD",12685,4,409.87,0) 409.87 "BLD",12685,4,409.87,222) y^y^f^^^^n "BLD",12685,4,"APDD",403.5,403.5) "BLD",12685,4,"APDD",403.5,403.5,100) "BLD",12685,4,"APDD",403.56,403.56) "BLD",12685,4,"APDD",403.56,403.56,100) "BLD",12685,4,"APDD",409.84,409.84) "BLD",12685,4,"APDD",409.84,409.84,100) "BLD",12685,4,"APDD",409.85,409.85) "BLD",12685,4,"APDD",409.85,409.85,49) "BLD",12685,4,"APDD",409.85,409.85,100) "BLD",12685,4,"APDD",409.85,409.854) "BLD",12685,4,"APDD",409.85,409.854,.01) "BLD",12685,4,"APDD",409.85,409.854,1) "BLD",12685,4,"APDD",409.85,409.854,2) "BLD",12685,4,"B",403.5,403.5) "BLD",12685,4,"B",403.56,403.56) "BLD",12685,4,"B",409.84,409.84) "BLD",12685,4,"B",409.85,409.85) "BLD",12685,4,"B",409.87,409.87) "BLD",12685,6) 6^ "BLD",12685,6.3) 9 "BLD",12685,"ABPKG") n "BLD",12685,"INIT") SDEC805P "BLD",12685,"KRN",0) ^9.67PA^1.5^24 "BLD",12685,"KRN",.4,0) .4 "BLD",12685,"KRN",.401,0) .401 "BLD",12685,"KRN",.402,0) .402 "BLD",12685,"KRN",.403,0) .403 "BLD",12685,"KRN",.5,0) .5 "BLD",12685,"KRN",.84,0) .84 "BLD",12685,"KRN",1.5,0) 1.5 "BLD",12685,"KRN",1.6,0) 1.6 "BLD",12685,"KRN",1.61,0) 1.61 "BLD",12685,"KRN",1.62,0) 1.62 "BLD",12685,"KRN",3.6,0) 3.6 "BLD",12685,"KRN",3.8,0) 3.8 "BLD",12685,"KRN",9.2,0) 9.2 "BLD",12685,"KRN",9.8,0) 9.8 "BLD",12685,"KRN",9.8,"NM",0) ^9.68A^44^40 "BLD",12685,"KRN",9.8,"NM",1,0) SDES^^0^B51321606 "BLD",12685,"KRN",9.8,"NM",3,0) SDESGETREGA^^0^B79018362 "BLD",12685,"KRN",9.8,"NM",5,0) SDESAPPT^^0^B30103059 "BLD",12685,"KRN",9.8,"NM",6,0) SDESAPTREQSET^^0^B175699985 "BLD",12685,"KRN",9.8,"NM",7,0) SDESARCLOSE^^0^B8714831 "BLD",12685,"KRN",9.8,"NM",8,0) SDESARGET^^0^B98126417 "BLD",12685,"KRN",9.8,"NM",9,0) SDESBLKANDMOVE^^0^B161097023 "BLD",12685,"KRN",9.8,"NM",10,0) SDESCCAVAIL^^0^B43467402 "BLD",12685,"KRN",9.8,"NM",11,0) SDESCKNSTEP^^0^B63763776 "BLD",12685,"KRN",9.8,"NM",12,0) SDESCLINICAVAIL^^0^B24322500 "BLD",12685,"KRN",9.8,"NM",13,0) SDESCLINICSET^^0^B165828222 "BLD",12685,"KRN",9.8,"NM",14,0) SDESCLNSETAVAIL^^0^B100206409 "BLD",12685,"KRN",9.8,"NM",15,0) SDESDISPRECALL^^0^B11149763 "BLD",12685,"KRN",9.8,"NM",16,0) SDESGETRECALL^^0^B49095781 "BLD",12685,"KRN",9.8,"NM",17,0) SDESGETUD^^0^B10449662 "BLD",12685,"KRN",9.8,"NM",18,0) SDESINACTCLINIC^^0^B3830394 "BLD",12685,"KRN",9.8,"NM",19,0) SDESPATRPC^^0^B6681657 "BLD",12685,"KRN",9.8,"NM",20,0) SDESRTVCLN^^0^B57719322 "BLD",12685,"KRN",9.8,"NM",21,0) SDESUPDRECREQ^^0^B28455492 "BLD",12685,"KRN",9.8,"NM",22,0) SDESJSON^^0^B69391825 "BLD",12685,"KRN",9.8,"NM",24,0) SDESCANCELAPPT^^0^B6224069 "BLD",12685,"KRN",9.8,"NM",25,0) SDEC07^^0^B180328576 "BLD",12685,"KRN",9.8,"NM",26,0) SDECDUZ^^0^B1197507 "BLD",12685,"KRN",9.8,"NM",28,0) SDECVVS^^0^B53522578 "BLD",12685,"KRN",9.8,"NM",29,0) SDESUTIL^^0^B15644745 "BLD",12685,"KRN",9.8,"NM",30,0) SDESGETCLINAPPT^^0^B45823175 "BLD",12685,"KRN",9.8,"NM",31,0) SDECDATE^^0^B9653243 "BLD",12685,"KRN",9.8,"NM",32,0) SDAMUTDT^^0^B46311532 "BLD",12685,"KRN",9.8,"NM",33,0) SDECVVSJSON^^0^B17111301 "BLD",12685,"KRN",9.8,"NM",34,0) SDEC^^0^B136542757 "BLD",12685,"KRN",9.8,"NM",35,0) SDEC08^^0^B200745537 "BLD",12685,"KRN",9.8,"NM",36,0) SDEC31^^0^B44957325 "BLD",12685,"KRN",9.8,"NM",37,0) SDECAR2^^0^B213318205 "BLD",12685,"KRN",9.8,"NM",38,0) SDECAR4^^0^B129709695 "BLD",12685,"KRN",9.8,"NM",39,0) SDECCONSJSON^^0^B37663476 "BLD",12685,"KRN",9.8,"NM",40,0) SDECRECREQ^^0^B10883727 "BLD",12685,"KRN",9.8,"NM",41,0) SDECAR^^0^B93182894 "BLD",12685,"KRN",9.8,"NM",42,0) SDESCANCELAPPT44^^0^B5182587 "BLD",12685,"KRN",9.8,"NM",43,0) SDEC07PID^^0^B3154294 "BLD",12685,"KRN",9.8,"NM",44,0) SDESAPTREQ44^^0^B22239909 "BLD",12685,"KRN",9.8,"NM","B","SDAMUTDT",32) "BLD",12685,"KRN",9.8,"NM","B","SDEC",34) "BLD",12685,"KRN",9.8,"NM","B","SDEC07",25) "BLD",12685,"KRN",9.8,"NM","B","SDEC07PID",43) "BLD",12685,"KRN",9.8,"NM","B","SDEC08",35) "BLD",12685,"KRN",9.8,"NM","B","SDEC31",36) "BLD",12685,"KRN",9.8,"NM","B","SDECAR",41) "BLD",12685,"KRN",9.8,"NM","B","SDECAR2",37) "BLD",12685,"KRN",9.8,"NM","B","SDECAR4",38) "BLD",12685,"KRN",9.8,"NM","B","SDECCONSJSON",39) "BLD",12685,"KRN",9.8,"NM","B","SDECDATE",31) "BLD",12685,"KRN",9.8,"NM","B","SDECDUZ",26) "BLD",12685,"KRN",9.8,"NM","B","SDECRECREQ",40) "BLD",12685,"KRN",9.8,"NM","B","SDECVVS",28) "BLD",12685,"KRN",9.8,"NM","B","SDECVVSJSON",33) "BLD",12685,"KRN",9.8,"NM","B","SDES",1) "BLD",12685,"KRN",9.8,"NM","B","SDESAPPT",5) "BLD",12685,"KRN",9.8,"NM","B","SDESAPTREQ44",44) "BLD",12685,"KRN",9.8,"NM","B","SDESAPTREQSET",6) "BLD",12685,"KRN",9.8,"NM","B","SDESARCLOSE",7) "BLD",12685,"KRN",9.8,"NM","B","SDESARGET",8) "BLD",12685,"KRN",9.8,"NM","B","SDESBLKANDMOVE",9) "BLD",12685,"KRN",9.8,"NM","B","SDESCANCELAPPT",24) "BLD",12685,"KRN",9.8,"NM","B","SDESCANCELAPPT44",42) "BLD",12685,"KRN",9.8,"NM","B","SDESCCAVAIL",10) "BLD",12685,"KRN",9.8,"NM","B","SDESCKNSTEP",11) "BLD",12685,"KRN",9.8,"NM","B","SDESCLINICAVAIL",12) "BLD",12685,"KRN",9.8,"NM","B","SDESCLINICSET",13) "BLD",12685,"KRN",9.8,"NM","B","SDESCLNSETAVAIL",14) "BLD",12685,"KRN",9.8,"NM","B","SDESDISPRECALL",15) "BLD",12685,"KRN",9.8,"NM","B","SDESGETCLINAPPT",30) "BLD",12685,"KRN",9.8,"NM","B","SDESGETRECALL",16) "BLD",12685,"KRN",9.8,"NM","B","SDESGETREGA",3) "BLD",12685,"KRN",9.8,"NM","B","SDESGETUD",17) "BLD",12685,"KRN",9.8,"NM","B","SDESINACTCLINIC",18) "BLD",12685,"KRN",9.8,"NM","B","SDESJSON",22) "BLD",12685,"KRN",9.8,"NM","B","SDESPATRPC",19) "BLD",12685,"KRN",9.8,"NM","B","SDESRTVCLN",20) "BLD",12685,"KRN",9.8,"NM","B","SDESUPDRECREQ",21) "BLD",12685,"KRN",9.8,"NM","B","SDESUTIL",29) "BLD",12685,"KRN",19,0) 19 "BLD",12685,"KRN",19,"NM",0) ^9.68A^2^2 "BLD",12685,"KRN",19,"NM",1,0) SDECRPC^^0 "BLD",12685,"KRN",19,"NM",2,0) SDESRPC^^0 "BLD",12685,"KRN",19,"NM","B","SDECRPC",1) "BLD",12685,"KRN",19,"NM","B","SDESRPC",2) "BLD",12685,"KRN",19.1,0) 19.1 "BLD",12685,"KRN",19.1,"NM",0) ^9.68A^^ "BLD",12685,"KRN",101,0) 101 "BLD",12685,"KRN",409.61,0) 409.61 "BLD",12685,"KRN",771,0) 771 "BLD",12685,"KRN",779.2,0) 779.2 "BLD",12685,"KRN",870,0) 870 "BLD",12685,"KRN",8989.51,0) 8989.51 "BLD",12685,"KRN",8989.52,0) 8989.52 "BLD",12685,"KRN",8994,0) 8994 "BLD",12685,"KRN",8994,"NM",0) ^9.68A^46^38 "BLD",12685,"KRN",8994,"NM",1,0) SDES CREATE CLINIC^^0 "BLD",12685,"KRN",8994,"NM",2,0) SDES CANCEL CLIN AVAILABILITY^^0 "BLD",12685,"KRN",8994,"NM",3,0) SDES CREATE CLIN AVAILABILITY^^0 "BLD",12685,"KRN",8994,"NM",4,0) SDES CREATE RECALL REQ^^0 "BLD",12685,"KRN",8994,"NM",5,0) SDES EDIT CHECK-IN STEP^^0 "BLD",12685,"KRN",8994,"NM",6,0) SDES EDIT CLINIC^^0 "BLD",12685,"KRN",8994,"NM",7,0) SDES EDIT CLINIC AVAILABILITY^^0 "BLD",12685,"KRN",8994,"NM",8,0) SDES GET APPT BY IEN^^0 "BLD",12685,"KRN",8994,"NM",9,0) SDES GET APPT CHECK-IN STEP^^0 "BLD",12685,"KRN",8994,"NM",10,0) SDES GET APPT CHECK-IN STEPS^^0 "BLD",12685,"KRN",8994,"NM",11,0) SDES GET APPT REQ BY IEN^^0 "BLD",12685,"KRN",8994,"NM",12,0) SDES GET APPT REQ BY PATIENT^^0 "BLD",12685,"KRN",8994,"NM",13,0) SDES GET APPTS BY CLINIC^^0 "BLD",12685,"KRN",8994,"NM",14,0) SDES GET APPTS BY RESOURCE^^0 "BLD",12685,"KRN",8994,"NM",15,0) SDES GET CHECK-IN STEP^^0 "BLD",12685,"KRN",8994,"NM",16,0) SDES GET CHECK-IN STEPS^^0 "BLD",12685,"KRN",8994,"NM",17,0) SDES GET CLIN AVAILABILITY^^0 "BLD",12685,"KRN",8994,"NM",18,0) SDES GET CLINIC INFO^^0 "BLD",12685,"KRN",8994,"NM",19,0) SDES GET INSURANCE VERIFY REQ^^0 "BLD",12685,"KRN",8994,"NM",20,0) SDES GET PATIENT REGISTRATION^^0 "BLD",12685,"KRN",8994,"NM",22,0) SDES GET RECALL BY IEN^^0 "BLD",12685,"KRN",8994,"NM",23,0) SDES GET RECALLS BY DFN^^0 "BLD",12685,"KRN",8994,"NM",24,0) SDES GET USRPROFILE^^0 "BLD",12685,"KRN",8994,"NM",25,0) SDES INACTIVATE/ZZ CLINIC^^0 "BLD",12685,"KRN",8994,"NM",29,0) SDES GET APPT #44^^0 "BLD",12685,"KRN",8994,"NM",30,0) SDES GET APPTS BY PATIENT^^0 "BLD",12685,"KRN",8994,"NM",31,0) SDES CANCEL APPT^^0 "BLD",12685,"KRN",8994,"NM",32,0) SDES CREATE APPT BLK AND MOVE^^0 "BLD",12685,"KRN",8994,"NM",33,0) SDES CREATE APPT REQ^^0 "BLD",12685,"KRN",8994,"NM",34,0) SDES DISPOSITION APPT REQ^^0 "BLD",12685,"KRN",8994,"NM",35,0) SDES EDIT APPT REQ^^0 "BLD",12685,"KRN",8994,"NM",36,0) SDES EDIT RECALL REQ^^0 "BLD",12685,"KRN",8994,"NM",41,0) SDES DISPOSITION RECALL REQ^^0 "BLD",12685,"KRN",8994,"NM",42,0) SDES SET APPT CHECK-IN STEP^^0 "BLD",12685,"KRN",8994,"NM",43,0) SDES CREATE APPT #44^^0 "BLD",12685,"KRN",8994,"NM",44,0) SDES EDIT APPT #44^^0 "BLD",12685,"KRN",8994,"NM",45,0) SDES CANCEL APPT #44^^0 "BLD",12685,"KRN",8994,"NM",46,0) SDES SET CHECK-IN STEP^^0 "BLD",12685,"KRN",8994,"NM","B","SDES CANCEL APPT",31) "BLD",12685,"KRN",8994,"NM","B","SDES CANCEL APPT #44",45) "BLD",12685,"KRN",8994,"NM","B","SDES CANCEL CLIN AVAILABILITY",2) "BLD",12685,"KRN",8994,"NM","B","SDES CREATE APPT #44",43) "BLD",12685,"KRN",8994,"NM","B","SDES CREATE APPT BLK AND MOVE",32) "BLD",12685,"KRN",8994,"NM","B","SDES CREATE APPT REQ",33) "BLD",12685,"KRN",8994,"NM","B","SDES CREATE CLIN AVAILABILITY",3) "BLD",12685,"KRN",8994,"NM","B","SDES CREATE CLINIC",1) "BLD",12685,"KRN",8994,"NM","B","SDES CREATE RECALL REQ",4) "BLD",12685,"KRN",8994,"NM","B","SDES DISPOSITION APPT REQ",34) "BLD",12685,"KRN",8994,"NM","B","SDES DISPOSITION RECALL REQ",41) "BLD",12685,"KRN",8994,"NM","B","SDES EDIT APPT #44",44) "BLD",12685,"KRN",8994,"NM","B","SDES EDIT APPT REQ",35) "BLD",12685,"KRN",8994,"NM","B","SDES EDIT CHECK-IN STEP",5) "BLD",12685,"KRN",8994,"NM","B","SDES EDIT CLINIC",6) "BLD",12685,"KRN",8994,"NM","B","SDES EDIT CLINIC AVAILABILITY",7) "BLD",12685,"KRN",8994,"NM","B","SDES EDIT RECALL REQ",36) "BLD",12685,"KRN",8994,"NM","B","SDES GET APPT #44",29) "BLD",12685,"KRN",8994,"NM","B","SDES GET APPT BY IEN",8) "BLD",12685,"KRN",8994,"NM","B","SDES GET APPT CHECK-IN STEP",9) "BLD",12685,"KRN",8994,"NM","B","SDES GET APPT CHECK-IN STEPS",10) "BLD",12685,"KRN",8994,"NM","B","SDES GET APPT REQ BY IEN",11) "BLD",12685,"KRN",8994,"NM","B","SDES GET APPT REQ BY PATIENT",12) "BLD",12685,"KRN",8994,"NM","B","SDES GET APPTS BY CLINIC",13) "BLD",12685,"KRN",8994,"NM","B","SDES GET APPTS BY PATIENT",30) "BLD",12685,"KRN",8994,"NM","B","SDES GET APPTS BY RESOURCE",14) "BLD",12685,"KRN",8994,"NM","B","SDES GET CHECK-IN STEP",15) "BLD",12685,"KRN",8994,"NM","B","SDES GET CHECK-IN STEPS",16) "BLD",12685,"KRN",8994,"NM","B","SDES GET CLIN AVAILABILITY",17) "BLD",12685,"KRN",8994,"NM","B","SDES GET CLINIC INFO",18) "BLD",12685,"KRN",8994,"NM","B","SDES GET INSURANCE VERIFY REQ",19) "BLD",12685,"KRN",8994,"NM","B","SDES GET PATIENT REGISTRATION",20) "BLD",12685,"KRN",8994,"NM","B","SDES GET RECALL BY IEN",22) "BLD",12685,"KRN",8994,"NM","B","SDES GET RECALLS BY DFN",23) "BLD",12685,"KRN",8994,"NM","B","SDES GET USRPROFILE",24) "BLD",12685,"KRN",8994,"NM","B","SDES INACTIVATE/ZZ CLINIC",25) "BLD",12685,"KRN",8994,"NM","B","SDES SET APPT CHECK-IN STEP",42) "BLD",12685,"KRN",8994,"NM","B","SDES SET CHECK-IN STEP",46) "BLD",12685,"KRN","B",.4,.4) "BLD",12685,"KRN","B",.401,.401) "BLD",12685,"KRN","B",.402,.402) "BLD",12685,"KRN","B",.403,.403) "BLD",12685,"KRN","B",.5,.5) "BLD",12685,"KRN","B",.84,.84) "BLD",12685,"KRN","B",1.5,1.5) "BLD",12685,"KRN","B",1.6,1.6) "BLD",12685,"KRN","B",1.61,1.61) "BLD",12685,"KRN","B",1.62,1.62) "BLD",12685,"KRN","B",3.6,3.6) "BLD",12685,"KRN","B",3.8,3.8) "BLD",12685,"KRN","B",9.2,9.2) "BLD",12685,"KRN","B",9.8,9.8) "BLD",12685,"KRN","B",19,19) "BLD",12685,"KRN","B",19.1,19.1) "BLD",12685,"KRN","B",101,101) "BLD",12685,"KRN","B",409.61,409.61) "BLD",12685,"KRN","B",771,771) "BLD",12685,"KRN","B",779.2,779.2) "BLD",12685,"KRN","B",870,870) "BLD",12685,"KRN","B",8989.51,8989.51) "BLD",12685,"KRN","B",8989.52,8989.52) "BLD",12685,"KRN","B",8994,8994) "BLD",12685,"QUES",0) ^9.62^^ "BLD",12685,"REQB",0) ^9.611^2^2 "BLD",12685,"REQB",1,0) SD*5.3*804^1 "BLD",12685,"REQB",2,0) SD*5.3*266^1 "BLD",12685,"REQB","B","SD*5.3*266",2) "BLD",12685,"REQB","B","SD*5.3*804",1) "FIA",403.5) RECALL REMINDERS "FIA",403.5,0) ^SD(403.5, "FIA",403.5,0,0) 403.5IP "FIA",403.5,0,1) y^y^p^^^^n^^n "FIA",403.5,0,10) "FIA",403.5,0,11) "FIA",403.5,0,"RLRO") "FIA",403.5,0,"VR") 5.3^SD "FIA",403.5,403.5) 1 "FIA",403.5,403.5,100) "FIA",403.56) RECALL REMINDERS REMOVED "FIA",403.56,0) ^SD(403.56, "FIA",403.56,0,0) 403.56P "FIA",403.56,0,1) y^y^p^^^^n^^n "FIA",403.56,0,10) "FIA",403.56,0,11) "FIA",403.56,0,"RLRO") "FIA",403.56,0,"VR") 5.3^SD "FIA",403.56,403.56) 1 "FIA",403.56,403.56,100) "FIA",409.84) SDEC APPOINTMENT "FIA",409.84,0) ^SDEC(409.84, "FIA",409.84,0,0) 409.84D "FIA",409.84,0,1) y^y^p^^^^n^^n "FIA",409.84,0,10) "FIA",409.84,0,11) "FIA",409.84,0,"RLRO") "FIA",409.84,0,"VR") 5.3^SD "FIA",409.84,409.84) 1 "FIA",409.84,409.84,100) "FIA",409.85) SDEC APPT REQUEST "FIA",409.85,0) ^SDEC(409.85, "FIA",409.85,0,0) 409.85P "FIA",409.85,0,1) y^y^p^^^^n^^n "FIA",409.85,0,10) "FIA",409.85,0,11) "FIA",409.85,0,"RLRO") "FIA",409.85,0,"VR") 5.3^SD "FIA",409.85,409.85) 1 "FIA",409.85,409.85,49) "FIA",409.85,409.85,50) "FIA",409.85,409.85,100) "FIA",409.85,409.854) 1 "FIA",409.85,409.854,.01) "FIA",409.85,409.854,1) "FIA",409.85,409.854,2) "FIA",409.87) SDEC CONSULT PID HISTORY "FIA",409.87,0) ^SDEC(409.87, "FIA",409.87,0,0) 409.87 "FIA",409.87,0,1) y^y^f^^^^n "FIA",409.87,0,10) "FIA",409.87,0,11) "FIA",409.87,0,"RLRO") "FIA",409.87,0,"VR") 5.3^SD "FIA",409.87,409.87) 0 "FIA",409.87,409.871) 0 "INIT") SDEC805P "IX",409.87,409.87,"C",0) 409.87^C^The C x-ref is based on the Patient DFN.^R^^F^IR^I^409.87^^^^^LS "IX",409.87,409.87,"C",.1,0) ^^1^1^3220112^ "IX",409.87,409.87,"C",.1,1,0) The C x-ref is based on the Patient DFN. This field is optional. "IX",409.87,409.87,"C",1) S ^SDEC(409.87,"C",X,DA)="" "IX",409.87,409.87,"C",2) K ^SDEC(409.87,"C",X,DA) "IX",409.87,409.87,"C",2.5) K ^SDEC(409.87,"C") "IX",409.87,409.87,"C",11.1,0) ^.114IA^1^1 "IX",409.87,409.87,"C",11.1,1,0) 1^F^409.87^.02^^1^F "IX",409.87,409.87,"C",11.1,1,3) "KRN",19,2922543,-1) 0^1 "KRN",19,2922543,0) SDECRPC^CLINICAL SCHEDULING PROCEDURE CALLS^^B^^^^^^^^SCHEDULING^y "KRN",19,2922543,1,0) ^19.06^2^2^3220114^^^^ "KRN",19,2922543,1,1,0) This option hosts RPCs in the SDEC namespace. CLINICAL SCHEDULING users "KRN",19,2922543,1,2,0) must have access to this option in order to use CLINICAL SCHEDULING. "KRN",19,2922543,99.1) 66130,42480 "KRN",19,2922543,"RPC",0) ^19.05P^288^288 "KRN",19,2922543,"RPC",1,0) SDEC ACCGPTYG "KRN",19,2922543,"RPC",2,0) SDEC ACCGROUP "KRN",19,2922543,"RPC",3,0) SDEC ACCTYPE "KRN",19,2922543,"RPC",4,0) SDEC ADDACCG "KRN",19,2922543,"RPC",5,0) SDEC ADDACCTY "KRN",19,2922543,"RPC",6,0) SDEC ADDAGI "KRN",19,2922543,"RPC",7,0) SDEC ADDRES "KRN",19,2922543,"RPC",8,0) SDEC ADDRESU "KRN",19,2922543,"RPC",9,0) SDEC ADDRG "KRN",19,2922543,"RPC",10,0) SDEC ADDRGI "KRN",19,2922543,"RPC",12,0) SDEC APBLKOV "KRN",19,2922543,"RPC",13,0) SDEC APPADD "KRN",19,2922543,"RPC",13,1) "KRN",19,2922543,"RPC",14,0) SDEC APPDEL "KRN",19,2922543,"RPC",16,0) SDEC APPTLETR "KRN",19,2922543,"RPC",17,0) SDEC APPTYPES "KRN",19,2922543,"RPC",18,0) SDEC AVADD "KRN",19,2922543,"RPC",19,0) SDEC AVDEL "KRN",19,2922543,"RPC",20,0) SDEC AVDELDT "KRN",19,2922543,"RPC",21,0) SDEC CANCKOUT "KRN",19,2922543,"RPC",22,0) SDEC CANREAS "KRN",19,2922543,"RPC",23,0) SDEC CHECKIN "KRN",19,2922543,"RPC",24,0) SDEC CHECKOUT "KRN",19,2922543,"RPC",25,0) SDEC CLINALL "KRN",19,2922543,"RPC",27,0) SDEC CLINDIS "KRN",19,2922543,"RPC",28,0) SDEC CLINDISW "KRN",19,2922543,"RPC",29,0) SDEC CLINLET "KRN",19,2922543,"RPC",30,0) SDEC CLINLETW "KRN",19,2922543,"RPC",31,0) SDEC CLINPROV "KRN",19,2922543,"RPC",32,0) SDEC CLINSET "KRN",19,2922543,"RPC",33,0) SDEC CLINSTOP "KRN",19,2922543,"RPC",34,0) SDEC COPYAPPT "KRN",19,2922543,"RPC",35,0) SDEC CPCANC "KRN",19,2922543,"RPC",36,0) SDEC CPSTAT "KRN",19,2922543,"RPC",37,0) SDEC CRSCHED "KRN",19,2922543,"RPC",38,0) SDEC CSLOTSCH "KRN",19,2922543,"RPC",39,0) SDEC CURFACG "KRN",19,2922543,"RPC",40,0) SDEC CVARAPPT "KRN",19,2922543,"RPC",41,0) SDEC DELAG "KRN",19,2922543,"RPC",42,0) SDEC DELAGI "KRN",19,2922543,"RPC",43,0) SDEC DELRESGP "KRN",19,2922543,"RPC",44,0) SDEC DELRGI "KRN",19,2922543,"RPC",45,0) SDEC DELRU "KRN",19,2922543,"RPC",46,0) SDEC EDITAPPT "KRN",19,2922543,"RPC",47,0) SDEC EHRPT "KRN",19,2922543,"RPC",48,0) SDEC GETFAC "KRN",19,2922543,"RPC",49,0) SDEC GETREGA "KRN",19,2922543,"RPC",50,0) SDEC HLTHSUMM "KRN",19,2922543,"RPC",51,0) SDEC HOLIDAY "KRN",19,2922543,"RPC",52,0) SDEC HOSPLOC "KRN",19,2922543,"RPC",53,0) SDEC IMHERE "KRN",19,2922543,"RPC",54,0) SDEC NEWPERS "KRN",19,2922543,"RPC",55,0) SDEC NOSHOPAT "KRN",19,2922543,"RPC",56,0) SDEC NOSHOW "KRN",19,2922543,"RPC",57,0) SDEC OVBOOK "KRN",19,2922543,"RPC",58,0) SDEC PATAPPTD "KRN",19,2922543,"RPC",59,0) SDEC PATAPPTH "KRN",19,2922543,"RPC",60,0) SDEC PROVALL "KRN",19,2922543,"RPC",61,0) SDEC PROVCLIN "KRN",19,2922543,"RPC",62,0) SDEC PTLOOKRS "KRN",19,2922543,"RPC",63,0) SDEC PWH "KRN",19,2922543,"RPC",64,0) SDEC RAISEVNT "KRN",19,2922543,"RPC",66,0) SDEC REBKLIST "KRN",19,2922543,"RPC",67,0) SDEC REBKNEXT "KRN",19,2922543,"RPC",68,0) SDEC REGEVENT "KRN",19,2922543,"RPC",69,0) SDEC RESGPUSR "KRN",19,2922543,"RPC",70,0) SDEC RESGRPUS "KRN",19,2922543,"RPC",71,0) SDEC RESLETRF "KRN",19,2922543,"RPC",72,0) SDEC RESLETRS "KRN",19,2922543,"RPC",73,0) SDEC RESOURCE "KRN",19,2922543,"RPC",74,0) SDEC RESUSER "KRN",19,2922543,"RPC",75,0) SDEC SCHUSR "KRN",19,2922543,"RPC",76,0) SDEC SEARCHAV "KRN",19,2922543,"RPC",77,0) SDEC SETFAC "KRN",19,2922543,"RPC",78,0) SDEC SETRBOOK "KRN",19,2922543,"RPC",79,0) SDEC SPACEBAR "KRN",19,2922543,"RPC",80,0) SDEC SUSRINFO "KRN",19,2922543,"RPC",81,0) SDEC SVSPALL "KRN",19,2922543,"RPC",82,0) SDEC SYSSTAT "KRN",19,2922543,"RPC",83,0) SDEC TPBLKOV "KRN",19,2922543,"RPC",85,0) SDEC UNREGEV "KRN",19,2922543,"RPC",86,0) SDEC WAITLIST "KRN",19,2922543,"RPC",87,0) SDEC WLCLOSE "KRN",19,2922543,"RPC",88,0) SDEC WLGET "KRN",19,2922543,"RPC",89,0) SDEC WLSET "KRN",19,2922543,"RPC",90,0) SDEC PREFGET "KRN",19,2922543,"RPC",91,0) SDEC PREFGETV "KRN",19,2922543,"RPC",92,0) SDEC PREFSET "KRN",19,2922543,"RPC",93,0) SDEC FAPPTGET "KRN",19,2922543,"RPC",94,0) SDEC RECAPGET "KRN",19,2922543,"RPC",95,0) SDEC RECDSET "KRN",19,2922543,"RPC",96,0) SDEC RECGET "KRN",19,2922543,"RPC",97,0) SDEC RECPRGET "KRN",19,2922543,"RPC",98,0) SDEC RECSET "KRN",19,2922543,"RPC",99,0) SDEC REQGET "KRN",19,2922543,"RPC",100,0) SDEC PCSTGET "KRN",19,2922543,"RPC",101,0) SDEC PCST2GET "KRN",19,2922543,"RPC",102,0) SDEC PCSGET "KRN",19,2922543,"RPC",103,0) SDEC PTSET "KRN",19,2922543,"RPC",104,0) SDEC PTINQ "KRN",19,2922543,"RPC",106,0) SDEC SUMMAGET "KRN",19,2922543,"RPC",107,0) SDEC APPIDGET "KRN",19,2922543,"RPC",108,0) SDEC FACLIST "KRN",19,2922543,"RPC",109,0) SDEC CGET "KRN",19,2922543,"RPC",110,0) SDEC ETHGET "KRN",19,2922543,"RPC",111,0) SDEC ETHCMGET "KRN",19,2922543,"RPC",112,0) SDEC RACEGET "KRN",19,2922543,"RPC",113,0) SDEC REP1GET "KRN",19,2922543,"RPC",114,0) SDEC WLPCSET "KRN",19,2922543,"RPC",115,0) SDEC APPSDGET "KRN",19,2922543,"RPC",116,0) SDEC WLOPEN "KRN",19,2922543,"RPC",117,0) SDEC ARCLOSE "KRN",19,2922543,"RPC",118,0) SDEC ARDGET "KRN",19,2922543,"RPC",119,0) SDEC ARGET "KRN",19,2922543,"RPC",120,0) SDEC ARMRTGET "KRN",19,2922543,"RPC",121,0) SDEC ARMRTSET "KRN",19,2922543,"RPC",122,0) SDEC AROPEN "KRN",19,2922543,"RPC",123,0) SDEC ARPCSET "KRN",19,2922543,"RPC",124,0) SDEC ARSET "KRN",19,2922543,"RPC",125,0) SDEC HIDE "KRN",19,2922543,"RPC",126,0) SDEC PRIV "KRN",19,2922543,"RPC",127,0) SDEC WLHIDE "KRN",19,2922543,"RPC",128,0) SDECAR ARAPPT "KRN",19,2922543,"RPC",129,0) SDECAR ARMRTC "KRN",19,2922543,"RPC",130,0) SDECDEV DEVICE "KRN",19,2922543,"RPC",131,0) SDECDIS DISABIL "KRN",19,2922543,"RPC",132,0) SDECIDX GETREC "KRN",19,2922543,"RPC",133,0) SDECIDX RECCNT "KRN",19,2922543,"RPC",134,0) SDECLK LOCK "KRN",19,2922543,"RPC",135,0) SDECLK UNLOCK "KRN",19,2922543,"RPC",136,0) SDECLOC PRIVLOC "KRN",19,2922543,"RPC",137,0) SDECLOC UPDPRIV "KRN",19,2922543,"RPC",138,0) SDECRMG RECCNT "KRN",19,2922543,"RPC",139,0) SDECRMG RMG "KRN",19,2922543,"RPC",140,0) SDECRMG2 URGENCY "KRN",19,2922543,"RPC",141,0) DG SENSITIVE RECORD ACCESS "KRN",19,2922543,"RPC",142,0) DG CHK BS5 XREF ARRAY "KRN",19,2922543,"RPC",143,0) ORPRF HASFLG "KRN",19,2922543,"RPC",144,0) ORPRF GETFLG "KRN",19,2922543,"RPC",145,0) ORWPT DIEDON "KRN",19,2922543,"RPC",146,0) ORWPT ID INFO "KRN",19,2922543,"RPC",147,0) ORWPT LAST5 "KRN",19,2922543,"RPC",148,0) ORWPT LAST5 RPL "KRN",19,2922543,"RPC",149,0) ORWU USERINFO "KRN",19,2922543,"RPC",150,0) SD VSE FILTER RPC "KRN",19,2922543,"RPC",151,0) SD VSE REPORT RPC "KRN",19,2922543,"RPC",152,0) SDEC APPSLOTS "KRN",19,2922543,"RPC",154,0) SDEC NETLOC "KRN",19,2922543,"RPC",155,0) SDEC NOAVAIL "KRN",19,2922543,"RPC",156,0) SDECAPP GETYPE "KRN",19,2922543,"RPC",157,0) SDECAR ARMULT "KRN",19,2922543,"RPC",158,0) SDECAR AUDITGET "KRN",19,2922543,"RPC",159,0) SDECCAP CAN "KRN",19,2922543,"RPC",160,0) SDECCAP GET "KRN",19,2922543,"RPC",161,0) SDECCAP SET "KRN",19,2922543,"RPC",162,0) SDECWL AUDITGET "KRN",19,2922543,"RPC",163,0) ROR LIST STATES "KRN",19,2922543,"RPC",164,0) XUS SIGNON SETUP "KRN",19,2922543,"RPC",165,0) XUS GET VISITOR "KRN",19,2922543,"RPC",166,0) XUS SET VISITOR "KRN",19,2922543,"RPC",167,0) XUS AV CODE "KRN",19,2922543,"RPC",168,0) SDEC01 CLINICS "KRN",19,2922543,"RPC",169,0) SDEC57 OBM "KRN",19,2922543,"RPC",170,0) SDECAR3 AREDIT "KRN",19,2922543,"RPC",171,0) SDECDEM MARITAL "KRN",19,2922543,"RPC",172,0) SDECDEM RELIGION "KRN",19,2922543,"RPC",173,0) SDECDEM ZIPLINK "KRN",19,2922543,"RPC",174,0) SDECDEV DEV "KRN",19,2922543,"RPC",175,0) SDECDEV PRINT "KRN",19,2922543,"RPC",176,0) SDECRMGP GETRMGUP "KRN",19,2922543,"RPC",177,0) SDECRMGP PUTRMGUP "KRN",19,2922543,"RPC",178,0) SDECU4 GETFONT "KRN",19,2922543,"RPC",179,0) SDECU4 PUTFONT "KRN",19,2922543,"RPC",180,0) ORWU CLINLOC "KRN",19,2922543,"RPC",181,0) XUS GET USER INFO "KRN",19,2922543,"RPC",182,0) XUS GET CCOW TOKEN "KRN",19,2922543,"RPC",183,0) ORWPT SHARE "KRN",19,2922543,"RPC",184,0) ORWPT TOP "KRN",19,2922543,"RPC",185,0) DG SENSITIVE RECORD BULLETIN "KRN",19,2922543,"RPC",186,0) SDEC EP CLASSIFICATION "KRN",19,2922543,"RPC",187,0) SDEC EP CPT "KRN",19,2922543,"RPC",188,0) SDEC EP DEMOGRAPHICS "KRN",19,2922543,"RPC",189,0) SDEC EP DIAGNOSIS "KRN",19,2922543,"RPC",190,0) SDEC EP EVENT LOG "KRN",19,2922543,"RPC",191,0) SDEC EP PROVIDER "KRN",19,2922543,"RPC",192,0) SDEC EP PT INFO "KRN",19,2922543,"RPC",193,0) SDEC EP STOP CODE "KRN",19,2922543,"RPC",194,0) SDEC EP WAIT TIME "KRN",19,2922543,"RPC",195,0) SDEC APPT STATUS "KRN",19,2922543,"RPC",196,0) SDEC ELIGIBILITY "KRN",19,2922543,"RPC",197,0) SDEC CONTACT DISPLAY "KRN",19,2922543,"RPC",198,0) SDEC CONTACT MULTI-DISPLAY "KRN",19,2922543,"RPC",199,0) SDEC CONTACT NEW "KRN",19,2922543,"RPC",200,0) SDEC CONTACT SEQUENCE "KRN",19,2922543,"RPC",201,0) SDEC CONTACT STOP CODE "KRN",19,2922543,"RPC",202,0) SDEC CONTACT UPDATE "KRN",19,2922543,"RPC",203,0) SDEC GETPRER "KRN",19,2922543,"RPC",204,0) SDEC ELIG RETURN "KRN",19,2922543,"RPC",205,0) SDEC BOOKHLDY "KRN",19,2922543,"RPC",206,0) SDECAR1 ARGUID "KRN",19,2922543,"RPC",207,0) SDECSTNG HELPLINK "KRN",19,2922543,"RPC",208,0) XWB GET VARIABLE VALUE "KRN",19,2922543,"RPC",209,0) SDEC RESCE "KRN",19,2922543,"RPC",210,0) SDEC SUMMGET2 "KRN",19,2922543,"RPC",211,0) SDEC CANCMT "KRN",19,2922543,"RPC",212,0) SDEC VVC_APPT "KRN",19,2922543,"RPC",213,0) ORQQCN DETAIL "KRN",19,2922543,"RPC",214,0) SDEC CLINIC GROUP LOOKUP "KRN",19,2922543,"RPC",215,0) SDEC CLINIC GROUP RETURN "KRN",19,2922543,"RPC",216,0) SDEC GETWLIEN "KRN",19,2922543,"RPC",217,0) SDEC CONTACT DISPLAY SINGLE "KRN",19,2922543,"RPC",218,0) SDEC CONTACT SEQUENCE SINGLE "KRN",19,2922543,"RPC",219,0) SDEC GETVVSMAKEINFO "KRN",19,2922543,"RPC",220,0) SDEC SEARCH VVS PROVIDERS "KRN",19,2922543,"RPC",221,0) SDEC SPACEBAR VVS PRO "KRN",19,2922543,"RPC",225,0) SDEC VVS GET ID "KRN",19,2922543,"RPC",226,0) SDEC VVS DELETE ID "KRN",19,2922543,"RPC",227,0) SDEC VVS SAVE ID "KRN",19,2922543,"RPC",229,0) SDEC GET PATIENT APPT REQ "KRN",19,2922543,"RPC",230,0) SDEC GET PATIENT CONSULTS JSON "KRN",19,2922543,"RPC",231,0) SDEC GET PATIENT CONSULTS "KRN",19,2922543,"RPC",232,0) SDEC GET PATIENT RECALLS "KRN",19,2922543,"RPC",233,0) SDEC GET PATIENT APPT REQ JSON "KRN",19,2922543,"RPC",234,0) SDEC GET PATIENT RECALLS JSON "KRN",19,2922543,"RPC",238,0) SDEC GET ICN "KRN",19,2922543,"RPC",239,0) SDEC GET APPT REQ BY IEN JSON "KRN",19,2922543,"RPC",240,0) SDEC GET PATIENT CONSULT JSON "KRN",19,2922543,"RPC",241,0) SDEC GET PATIENT DEMOG "KRN",19,2922543,"RPC",242,0) SDEC GET PATIENT RECALL BY IEN "KRN",19,2922543,"RPC",243,0) SDEC GET RECALL BY IEN JSON "KRN",19,2922543,"RPC",249,0) SDES GET CHECK-IN STEPS "KRN",19,2922543,"RPC",250,0) SDES GET CHECK-IN STEP "KRN",19,2922543,"RPC",251,0) SDES GET APPTS BY RESOURCE "KRN",19,2922543,"RPC",253,0) SDES GET APPTS BY PATIENT "KRN",19,2922543,"RPC",254,0) SDES GET APPTS BY CLINIC "KRN",19,2922543,"RPC",256,0) SDEC GET RECALLRMV BY DFN JSON "KRN",19,2922543,"RPC",257,0) SDES GET INSURANCE VERIFY REQ "KRN",19,2922543,"RPC",263,0) SDEC SEARCH VVS PROVIDERS "KRN",19,2922543,"RPC",264,0) SDEC GETVVSMAKEINFO "KRN",19,2922543,"RPC",265,0) SDEC SEARCH VVS PROVIDERS JSON "KRN",19,2922543,"RPC",266,0) SDEC GETVVSMAKEINFO JSON "KRN",19,2922543,"RPC",267,0) SDES GET PATIENT REGISTRATION "KRN",19,2922543,"RPC",268,0) SDEC EDIT PAT PRE-REGISTRATION "KRN",19,2922543,"RPC",274,0) SDES CREATE APPT BLK AND MOVE "KRN",19,2922543,"RPC",276,0) SDEC GET STATION ID JSON "KRN",19,2922543,"RPC",282,0) SDES GET APPT BY IEN "KRN",19,2922543,"RPC",283,0) SDES GET CLINIC INFO "KRN",19,2922543,"RPC",284,0) SDES GET APPT CHECK-IN STEPS "KRN",19,2922543,"RPC",285,0) SDES GET APPT CHECK-IN STEP "KRN",19,2922543,"RPC",286,0) SDES GET USRPROFILE "KRN",19,2922543,"RPC",287,0) SDES SET APPT CHECK-IN STEP "KRN",19,2922543,"RPC",288,0) SDES SET CHECK-IN STEP "KRN",19,2922543,"U") CLINICAL SCHEDULING PROCEDURE "KRN",19,2922994,-1) 0^2 "KRN",19,2922994,0) SDESRPC^CLINICAL SCHEDULING PROCEDURE CALLS^^B^^^^^^^^ "KRN",19,2922994,1,0) ^19.06^2^2^3211210^^^ "KRN",19,2922994,1,1,0) This option hosts RPCs in the SDES namespace. CLINICAL SCHEDULING users "KRN",19,2922994,1,2,0) must have access to this option in order to use CLINICAL SCHEDULING. "KRN",19,2922994,99.1) 66011,52538 "KRN",19,2922994,"RPC",0) ^19.05P^42^42 "KRN",19,2922994,"RPC",1,0) SDES SEARCH CLINIC "KRN",19,2922994,"RPC",2,0) SDES GET APPT REQ BY IEN "KRN",19,2922994,"RPC",3,0) SDES GET APPT REQ BY PATIENT "KRN",19,2922994,"RPC",4,0) SDES DISPOSITION APPT REQ "KRN",19,2922994,"RPC",5,0) SDES CREATE APPT REQ "KRN",19,2922994,"RPC",6,0) SDES EDIT APPT REQ "KRN",19,2922994,"RPC",8,0) SDES INACTIVATE/ZZ CLINIC "KRN",19,2922994,"RPC",9,0) SDES GET CLINIC INFO "KRN",19,2922994,"RPC",10,0) SDES CREATE CLINIC "KRN",19,2922994,"RPC",11,0) SDES EDIT CLINIC "KRN",19,2922994,"RPC",12,0) SDES GET CLIN AVAILABILITY "KRN",19,2922994,"RPC",13,0) SDES CREATE CLIN AVAILABILITY "KRN",19,2922994,"RPC",14,0) SDES CANCEL CLIN AVAILABILITY "KRN",19,2922994,"RPC",16,0) SDES DISPOSITION RECALL REQ "KRN",19,2922994,"RPC",17,0) SDES EDIT RECALL REQ "KRN",19,2922994,"RPC",18,0) SDES CREATE RECALL REQ "KRN",19,2922994,"RPC",19,0) SDES GET RECALL BY IEN "KRN",19,2922994,"RPC",20,0) SDES GET RECALLS BY DFN "KRN",19,2922994,"RPC",21,0) SDES EDIT CLINIC AVAILABILITY "KRN",19,2922994,"RPC",22,0) SDES CANCEL APPT "KRN",19,2922994,"RPC",23,0) SDES EDIT CHECK-IN STEP "KRN",19,2922994,"RPC",24,0) SDES GET APPT CHECK-IN STEP "KRN",19,2922994,"RPC",25,0) SDES GET APPT CHECK-IN STEPS "KRN",19,2922994,"RPC",26,0) SDES GET APPTS BY CLINIC "KRN",19,2922994,"RPC",27,0) SDES GET APPTS BY PATIENT "KRN",19,2922994,"RPC",28,0) SDES GET APPTS BY RESOURCE "KRN",19,2922994,"RPC",29,0) SDES GET CHECK-IN STEP "KRN",19,2922994,"RPC",30,0) SDES GET CHECK-IN STEPS "KRN",19,2922994,"RPC",31,0) SDES GET INSURANCE VERIFY REQ "KRN",19,2922994,"RPC",32,0) SDES GET PATIENT REGISTRATION "KRN",19,2922994,"RPC",34,0) SDES GET USRPROFILE "KRN",19,2922994,"RPC",35,0) SDES SET APPT CHECK-IN STEP "KRN",19,2922994,"RPC",36,0) SDES SET CHECK-IN STEP "KRN",19,2922994,"RPC",38,0) SDES GET APPT BY IEN "KRN",19,2922994,"RPC",39,0) SDES EDIT APPT #44 "KRN",19,2922994,"RPC",40,0) SDES CREATE APPT #44 "KRN",19,2922994,"RPC",41,0) SDES GET APPT #44 "KRN",19,2922994,"RPC",42,0) SDES CANCEL APPT #44 "KRN",19,2922994,"U") CLINICAL SCHEDULING PROCEDURE "KRN",8994,5777,-1) 0^9 "KRN",8994,5777,0) SDES GET APPT CHECK-IN STEP^GETAPPTCKNSTEP^SDESCKNSTEP^2^R^0^^0^^^1 "KRN",8994,5777,1,0) ^8994.01^1^1^3220102^^ "KRN",8994,5777,1,1,0) Returns status if match is found in 409.843 "KRN",8994,5777,2,0) ^8994.02A^3^3 "KRN",8994,5777,2,1,0) IEN^1^32000^1^1 "KRN",8994,5777,2,1,1,0) ^^1^1^3210624^ "KRN",8994,5777,2,1,1,1,0) Appointment IEN "KRN",8994,5777,2,2,0) STATUS^1^32000^1^2 "KRN",8994,5777,2,2,1,0) ^^1^1^3210624^ "KRN",8994,5777,2,2,1,1,0) Status associated with check-in "KRN",8994,5777,2,3,0) EASTRCKNGNMBR^1^40^0^3 "KRN",8994,5777,2,3,1,0) ^8994.021^2^2^3220121^^^^ "KRN",8994,5777,2,3,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5777,2,3,1,2,0) appointment. "KRN",8994,5777,2,"B","EASTRCKNGNMBR",3) "KRN",8994,5777,2,"B","IEN",1) "KRN",8994,5777,2,"B","STATUS",2) "KRN",8994,5777,2,"PARAMSEQ",1,1) "KRN",8994,5777,2,"PARAMSEQ",2,2) "KRN",8994,5777,2,"PARAMSEQ",3,3) "KRN",8994,5778,-1) 0^42 "KRN",8994,5778,0) SDES SET APPT CHECK-IN STEP^SETAPPTCKNSTEP^SDESCKNSTEP^2^R^0^^0^^^1 "KRN",8994,5778,1,0) ^8994.01^1^1^3220112^^^ "KRN",8994,5778,1,1,0) SET CHECK-IN STATUS FOR PATIENT IN 409.843 "KRN",8994,5778,2,0) ^8994.02A^3^3 "KRN",8994,5778,2,1,0) IEN^1^32000^1^1 "KRN",8994,5778,2,1,1,0) ^^1^1^3210625^ "KRN",8994,5778,2,1,1,1,0) APPOINTMENT IEN "KRN",8994,5778,2,2,0) STATUS^1^32000^1^2 "KRN",8994,5778,2,2,1,0) ^^12^12^3220110^ "KRN",8994,5778,2,2,1,1,0) STATUS TO BE SET IN 409.843 "KRN",8994,5778,2,2,1,2,0) Choose from: "KRN",8994,5778,2,2,1,3,0) CAT "KRN",8994,5778,2,2,1,4,0) CHECK-IN COMPLETE "KRN",8994,5778,2,2,1,5,0) CHECK-IN STARTED "KRN",8994,5778,2,2,1,6,0) E-CHECK-IN COMPLETE "KRN",8994,5778,2,2,1,7,0) E-CHECK-IN STARTED "KRN",8994,5778,2,2,1,8,0) HAS INSURANCE TEST "KRN",8994,5778,2,2,1,9,0) HORSE "KRN",8994,5778,2,2,1,10,0) Much Test "KRN",8994,5778,2,2,1,11,0) PRE-CHECK-IN COMPLETE "KRN",8994,5778,2,2,1,12,0) PRE-CHECK-IN STARTED "KRN",8994,5778,2,3,0) EAS^1^40^0^3 "KRN",8994,5778,2,3,1,0) ^8994.021^1^1^3220112^^^^ "KRN",8994,5778,2,3,1,1,0) This is the EAS Tracking number associated with the setting of the check in step. "KRN",8994,5778,2,"B","EAS",3) "KRN",8994,5778,2,"B","IEN",1) "KRN",8994,5778,2,"B","STATUS",2) "KRN",8994,5778,2,"PARAMSEQ",1,1) "KRN",8994,5778,2,"PARAMSEQ",2,2) "KRN",8994,5778,2,"PARAMSEQ",3,3) "KRN",8994,5779,-1) 0^10 "KRN",8994,5779,0) SDES GET APPT CHECK-IN STEPS^GETAPPTCKNSTEPS^SDESCKNSTEP^2^R^0^^0^^^1 "KRN",8994,5779,1,0) ^8994.01^1^1^3220102^^ "KRN",8994,5779,1,1,0) GET ALL STATUSES ASSOCIATED WITH AN APPOINTMENT IEN "KRN",8994,5779,2,0) ^8994.02A^2^2 "KRN",8994,5779,2,1,0) IEN^1^32000^1^1 "KRN",8994,5779,2,1,1,0) ^^1^1^3210625^ "KRN",8994,5779,2,1,1,1,0) IEN OF APPOINTMENT TO GET STATUSES FROM "KRN",8994,5779,2,2,0) EASTRCKNGNMBR^1^40^0^2 "KRN",8994,5779,2,2,1,0) ^8994.021^2^2^3220106^^^ "KRN",8994,5779,2,2,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5779,2,2,1,2,0) appointment. "KRN",8994,5779,2,"B","EASTRCKNGNMBR",2) "KRN",8994,5779,2,"B","IEN",1) "KRN",8994,5779,2,"PARAMSEQ",1,1) "KRN",8994,5779,2,"PARAMSEQ",2,2) "KRN",8994,5780,-1) 0^46 "KRN",8994,5780,0) SDES SET CHECK-IN STEP^SETCKNSTEP^SDESCKNSTEP^2^R^0^^0^^^1 "KRN",8994,5780,1,0) ^8994.01^1^1^3220103^^ "KRN",8994,5780,1,1,0) CREATE NEW STATUS IN FILE 409.842 "KRN",8994,5780,2,0) ^8994.02A^2^2 "KRN",8994,5780,2,1,0) STATUS^1^32000^1^1 "KRN",8994,5780,2,1,1,0) ^^1^1^3210625^ "KRN",8994,5780,2,1,1,1,0) STATUS TO BE SET IN 409.842 "KRN",8994,5780,2,2,0) EASTRCKNGNMBR^1^40^0^2 "KRN",8994,5780,2,2,1,0) ^8994.021^2^2^3220106^^ "KRN",8994,5780,2,2,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5780,2,2,1,2,0) appointment. "KRN",8994,5780,2,"B","EASTRCKNGNMBR",2) "KRN",8994,5780,2,"B","STATUS",1) "KRN",8994,5780,2,"PARAMSEQ",1,1) "KRN",8994,5780,2,"PARAMSEQ",2,2) "KRN",8994,5781,-1) 0^5 "KRN",8994,5781,0) SDES EDIT CHECK-IN STEP^EDITCKNSTEP^SDESCKNSTEP^2^R^0^^0^^^1 "KRN",8994,5781,1,0) ^8994.01^1^1^3220102^^ "KRN",8994,5781,1,1,0) EDIT STATUS ENTRY IN 409.842 "KRN",8994,5781,2,0) ^8994.02A^3^3 "KRN",8994,5781,2,1,0) IEN^1^32000^1^1 "KRN",8994,5781,2,1,1,0) ^^1^1^3210625^ "KRN",8994,5781,2,1,1,1,0) IEN OF ENTRY IN 409.842 TO BE EDITED "KRN",8994,5781,2,2,0) STATUS^1^32000^1^2 "KRN",8994,5781,2,2,1,0) ^^1^1^3210625^ "KRN",8994,5781,2,2,1,1,0) STRING TO REPLACE/EDIT THE EXISTING ENTRY IN 409.842 "KRN",8994,5781,2,3,0) EASTRCKNGNMBR^1^40^0^3 "KRN",8994,5781,2,3,1,0) ^8994.021^2^2^3220106^^ "KRN",8994,5781,2,3,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5781,2,3,1,2,0) appointment. "KRN",8994,5781,2,"B","EASTRCKNGNMBR",3) "KRN",8994,5781,2,"B","IEN",1) "KRN",8994,5781,2,"B","STATUS",2) "KRN",8994,5781,2,"PARAMSEQ",1,1) "KRN",8994,5781,2,"PARAMSEQ",2,2) "KRN",8994,5781,2,"PARAMSEQ",3,3) "KRN",8994,5782,-1) 0^15 "KRN",8994,5782,0) SDES GET CHECK-IN STEP^GETCKNSTEP^SDESCKNSTEP^2^R^0^^0^^^1 "KRN",8994,5782,1,0) ^8994.01^1^1^3220102^^ "KRN",8994,5782,1,1,0) GET STATUS ENTRY FROM 409.842 "KRN",8994,5782,2,0) ^8994.02A^2^2 "KRN",8994,5782,2,1,0) IEN^1^32000^1^1 "KRN",8994,5782,2,1,1,0) ^^1^1^3210625^ "KRN",8994,5782,2,1,1,1,0) IEN OF THE ENTRY TO GET IN 409.842 "KRN",8994,5782,2,2,0) EASTRCKNGNMBR^1^40^0^2 "KRN",8994,5782,2,2,1,0) ^8994.021^2^2^3220106^^ "KRN",8994,5782,2,2,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5782,2,2,1,2,0) appointment. "KRN",8994,5782,2,"B","EASTRCKNGNMBR",2) "KRN",8994,5782,2,"B","IEN",1) "KRN",8994,5782,2,"PARAMSEQ",1,1) "KRN",8994,5782,2,"PARAMSEQ",2,2) "KRN",8994,5783,-1) 0^16 "KRN",8994,5783,0) SDES GET CHECK-IN STEPS^GETCKNSTEPS^SDESCKNSTEP^2^R^0^^0^^^1 "KRN",8994,5783,1,0) ^8994.01^1^1^3220102^^ "KRN",8994,5783,1,1,0) GET ALL STATUS ENTRIES IN 409.842 "KRN",8994,5783,2,0) ^8994.02A^1^1 "KRN",8994,5783,2,1,0) EASTRCKNGNMBR^1^40^0^1 "KRN",8994,5783,2,1,1,0) ^8994.021^2^2^3220121^^^ "KRN",8994,5783,2,1,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5783,2,1,1,2,0) appointment. "KRN",8994,5783,2,"B","EASTRCKNGNMBR",1) "KRN",8994,5783,2,"PARAMSEQ",1,1) "KRN",8994,5784,-1) 0^14 "KRN",8994,5784,0) SDES GET APPTS BY RESOURCE^APPTBYRESOURCE^SDES^2^R^^^^^^1 "KRN",8994,5784,1,0) ^8994.01^1^1^3220102^^^^ "KRN",8994,5784,1,1,0) For a given clinic and date range, return general appointment data in JSON format "KRN",8994,5784,2,0) ^8994.02A^4^4 "KRN",8994,5784,2,1,0) RESIEN^1^25^1^1 "KRN",8994,5784,2,1,1,0) ^8994.021^1^1^3210706^^ "KRN",8994,5784,2,1,1,1,0) IEN from Resource File (409.831) "KRN",8994,5784,2,2,0) SDBEG^1^25^1^2 "KRN",8994,5784,2,2,1,0) ^8994.021^2^2^3220121^^ "KRN",8994,5784,2,2,1,1,0) Date and time to begin looking for appointments. Date/time will be in "KRN",8994,5784,2,2,1,2,0) external format. "KRN",8994,5784,2,3,0) SDEND^1^25^1^3 "KRN",8994,5784,2,3,1,0) ^8994.021^2^2^3220121^^ "KRN",8994,5784,2,3,1,1,0) Date and time to stop looking for appointments. Date/time will be in "KRN",8994,5784,2,3,1,2,0) external format. "KRN",8994,5784,2,4,0) EASTRCKNGNMBR^1^40^0^4 "KRN",8994,5784,2,4,1,0) ^^2^2^3220102^ "KRN",8994,5784,2,4,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5784,2,4,1,2,0) appointment. "KRN",8994,5784,2,"B","EASTRCKNGNMBR",4) "KRN",8994,5784,2,"B","RESIEN",1) "KRN",8994,5784,2,"B","SDBEG",2) "KRN",8994,5784,2,"B","SDEND",3) "KRN",8994,5784,2,"PARAMSEQ",1,1) "KRN",8994,5784,2,"PARAMSEQ",2,2) "KRN",8994,5784,2,"PARAMSEQ",3,3) "KRN",8994,5784,2,"PARAMSEQ",4,4) "KRN",8994,5784,3,0) ^8994.03^16^16^3220106^^^^ "KRN",8994,5784,3,1,0) Starttime "KRN",8994,5784,3,2,0) FILE: 409.84 FIELD: .01 "KRN",8994,5784,3,3,0) Endtime "KRN",8994,5784,3,4,0) FILE: 409.84 FIELD: .02 "KRN",8994,5784,3,5,0) Patient "KRN",8994,5784,3,6,0) FILE: 409.84 FIELD: .05 "KRN",8994,5784,3,7,0) AppointmentType "KRN",8994,5784,3,8,0) FILE: 409.84 FIELD: .06 "KRN",8994,5784,3,9,0) Resource "KRN",8994,5784,3,10,0) FILE: 409.84 FIELD: .07 "KRN",8994,5784,3,11,0) LengthOfAppt "KRN",8994,5784,3,12,0) FILE: 409.84 FIELD: .18 "KRN",8994,5784,3,13,0) Note "KRN",8994,5784,3,14,0) FILE: 409.84 FIELD: 1 "KRN",8994,5784,3,15,0) Overbook "KRN",8994,5784,3,16,0) FILE: 44 SUB: 1900 2 FIELD: 9 "KRN",8994,5785,-1) 0^8 "KRN",8994,5785,0) SDES GET APPT BY IEN^APPGETONEJSON^SDES^2^R^^^0^^^1 "KRN",8994,5785,1,0) ^8994.01^1^1^3220102^^^^ "KRN",8994,5785,1,1,0) Get a single appointment by IEN "KRN",8994,5785,2,0) ^8994.02A^2^2 "KRN",8994,5785,2,1,0) IEN^1^32000^1^1 "KRN",8994,5785,2,1,1,0) ^8994.021^1^1^3211013^^^^ "KRN",8994,5785,2,1,1,1,0) The IEN of the appointment to be returned "KRN",8994,5785,2,2,0) EASTRCKNGNMBR^1^40^0^2 "KRN",8994,5785,2,2,1,0) ^8994.021^2^2^3220121^^^^ "KRN",8994,5785,2,2,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5785,2,2,1,2,0) appointment. "KRN",8994,5785,2,"B","EASTRCKNGNMBR",2) "KRN",8994,5785,2,"B","IEN",1) "KRN",8994,5785,2,"PARAMSEQ",1,1) "KRN",8994,5785,2,"PARAMSEQ",2,2) "KRN",8994,5785,3,0) ^8994.03^2^2^3220106^^^^ "KRN",8994,5785,3,1,0) Starttime FILE: 409.84 FIELD: .01 Endtime FILE: 409.84 FIELD: .02 Patient FILE: 409.84 FIELD: .05 AppointmentType FILE: 409.84 FIELD: .06 Resource FILE: 409.84 FIELD: .07 LengthOfAppt FILE: 409.84 FIELD: .18 Note FILE: 409.84 FIELD: 1 Ov "KRN",8994,5785,3,2,0) erbook FILE: 44 SUB: 1900 2 FIELD: 9\ "KRN",8994,5786,-1) 0^30 "KRN",8994,5786,0) SDES GET APPTS BY PATIENT^APPGETJSON^SDES^2^R^^^0^^^1 "KRN",8994,5786,1,0) ^8994.01^1^1^3220105^^^ "KRN",8994,5786,1,1,0) Returns a list of appointments for a patient based on DFN "KRN",8994,5786,2,0) ^8994.02A^4^4 "KRN",8994,5786,2,1,0) DFN^1^32000^1^1 "KRN",8994,5786,2,1,1,0) ^8994.021^1^1^3220104^^ "KRN",8994,5786,2,1,1,1,0) The DFN of the patient to return a list of appointments for "KRN",8994,5786,2,2,0) BDATE^1^10^1^2 "KRN",8994,5786,2,2,1,0) ^^1^1^3220121^ "KRN",8994,5786,2,2,1,1,0) This is the beginning date/time in external format for the search. "KRN",8994,5786,2,3,0) EDATE^1^10^1^3 "KRN",8994,5786,2,3,1,0) ^^1^1^3220121^ "KRN",8994,5786,2,3,1,1,0) This is the ending date/time for the search in external format. "KRN",8994,5786,2,4,0) EASTRCKNGNMBR^1^40^0^4 "KRN",8994,5786,2,4,1,0) ^8994.021^2^2^3220105^^ "KRN",8994,5786,2,4,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5786,2,4,1,2,0) appointment. "KRN",8994,5786,2,"B","BDATE",2) "KRN",8994,5786,2,"B","DFN",1) "KRN",8994,5786,2,"B","EASTRCKNGNMBR",4) "KRN",8994,5786,2,"B","EDATE",3) "KRN",8994,5786,2,"PARAMSEQ",1,1) "KRN",8994,5786,2,"PARAMSEQ",2,2) "KRN",8994,5786,2,"PARAMSEQ",3,3) "KRN",8994,5786,2,"PARAMSEQ",4,4) "KRN",8994,5786,3,0) ^8994.03^2^2^3220106^^^^ "KRN",8994,5786,3,1,0) Starttime FILE: 409.84 FIELD: .01 Endtime FILE: 409.84 FIELD: .02 Patient FILE: 409.84 FIELD: .05 AppointmentType FILE: 409.84 FIELD: .06 Resource FILE: 409.84 FIELD: .07 LengthOfAppt FILE: 409.84 FIELD: .18 Note FILE: 409.84 FIELD: 1 Ov "KRN",8994,5786,3,2,0) erbook FILE: 44 SUB: 1900 2 FIELD: 9\ "KRN",8994,5787,-1) 0^13 "KRN",8994,5787,0) SDES GET APPTS BY CLINIC^APPTBYCLINIC^SDES^2^R^^^^^^1 "KRN",8994,5787,1,0) ^8994.01^1^1^3220102^^ "KRN",8994,5787,1,1,0) For a given clinic and date range, return general appointment data in JSON format "KRN",8994,5787,2,0) ^8994.02A^4^4 "KRN",8994,5787,2,1,0) CLINICIEN^1^20^1^1 "KRN",8994,5787,2,1,1,0) ^^1^1^3210706^ "KRN",8994,5787,2,1,1,1,0) IEN from Hospital Location file (#44) "KRN",8994,5787,2,2,0) SDBEG^1^25^1^2 "KRN",8994,5787,2,2,1,0) ^^1^1^3220121^ "KRN",8994,5787,2,2,1,1,0) Date and time in external format to begin looking for appointments "KRN",8994,5787,2,3,0) SDEND^1^25^1^3 "KRN",8994,5787,2,3,1,0) ^^1^1^3220121^ "KRN",8994,5787,2,3,1,1,0) Date and time in external format to stop looking for appointments "KRN",8994,5787,2,4,0) EASTRCKNGNMBR^1^40^0^4 "KRN",8994,5787,2,4,1,0) ^8994.021^2^2^3220121^^^ "KRN",8994,5787,2,4,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5787,2,4,1,2,0) appointment. "KRN",8994,5787,2,"B","CLINICIEN",1) "KRN",8994,5787,2,"B","EASTRCKNGNMBR",4) "KRN",8994,5787,2,"B","SDBEG",2) "KRN",8994,5787,2,"B","SDEND",3) "KRN",8994,5787,2,"PARAMSEQ",1,1) "KRN",8994,5787,2,"PARAMSEQ",2,2) "KRN",8994,5787,2,"PARAMSEQ",3,3) "KRN",8994,5787,2,"PARAMSEQ",4,4) "KRN",8994,5787,3,0) ^8994.03^16^16^3220106^^^^ "KRN",8994,5787,3,1,0) Starttime "KRN",8994,5787,3,2,0) FILE: 409.84 FIELD: .01 "KRN",8994,5787,3,3,0) Endtime "KRN",8994,5787,3,4,0) FILE: 409.84 FIELD: .02 "KRN",8994,5787,3,5,0) Patient "KRN",8994,5787,3,6,0) FILE: 409.84 FIELD: .05 "KRN",8994,5787,3,7,0) AppointmentType "KRN",8994,5787,3,8,0) FILE: 409.84 FIELD: .06 "KRN",8994,5787,3,9,0) Resource "KRN",8994,5787,3,10,0) FILE: 409.84 FIELD: .07 "KRN",8994,5787,3,11,0) LengthOfAppt "KRN",8994,5787,3,12,0) FILE: 409.84 FIELD: .18 "KRN",8994,5787,3,13,0) Note "KRN",8994,5787,3,14,0) FILE: 409.84 FIELD: 1 "KRN",8994,5787,3,15,0) Overbook "KRN",8994,5787,3,16,0) FILE: 44 SUB: 1900 2 FIELD: 9 "KRN",8994,5795,-1) 0^19 "KRN",8994,5795,0) SDES GET INSURANCE VERIFY REQ^INSURVERIFYREQ^SDES^2^R^^^^^^1 "KRN",8994,5795,1,0) ^8994.01^1^1^3220102^^^^ "KRN",8994,5795,1,1,0) DETERMINE IF A PATIENT'S INSURANCE NEEDS VERIFIED. "KRN",8994,5795,2,0) ^8994.02A^2^2 "KRN",8994,5795,2,1,0) DFN^1^30^1^1 "KRN",8994,5795,2,1,1,0) ^8994.021^1^1^3210728^^^ "KRN",8994,5795,2,1,1,1,0) PATIENT DFN FROM PATIENT FILE (#2) "KRN",8994,5795,2,2,0) EASTRCKNGNMBR^1^40^0^2 "KRN",8994,5795,2,2,1,0) ^^2^2^3220102^ "KRN",8994,5795,2,2,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5795,2,2,1,2,0) appointment. "KRN",8994,5795,2,"B","DFN",1) "KRN",8994,5795,2,"B","EASTRCKNGNMBR",2) "KRN",8994,5795,2,"PARAMSEQ",1,1) "KRN",8994,5795,2,"PARAMSEQ",2,2) "KRN",8994,5795,3,0) ^8994.03^3^3^3220102^^^ "KRN",8994,5795,3,1,0) RETURN VALUE "KRN",8994,5795,3,2,0) 1 MEANS VERIFICATION IS NEEDED "KRN",8994,5795,3,3,0) 0 MEANS THERE IS ACTIVE INSURANCE OR VERIFICATION IS STARTED "KRN",8994,5818,-1) 0^11 "KRN",8994,5818,0) SDES GET APPT REQ BY IEN^ARGETIENJSON^SDES^2^R^0^^0^^^1 "KRN",8994,5818,1,0) ^8994.01^1^1^3220102^^^^ "KRN",8994,5818,1,1,0) Get a specific appointment request based on IEN (409.85) "KRN",8994,5818,2,0) ^8994.02A^2^2 "KRN",8994,5818,2,1,0) ARIEN^1^30^1^1 "KRN",8994,5818,2,1,1,0) ^8994.021^1^1^3210928^^^ "KRN",8994,5818,2,1,1,1,0) IEN associated with the appointment request "KRN",8994,5818,2,2,0) EASTRCKNGNMBR^1^40^0^2 "KRN",8994,5818,2,2,1,0) ^8994.021^2^2^3220121^^^^ "KRN",8994,5818,2,2,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5818,2,2,1,2,0) appointment. "KRN",8994,5818,2,"B","ARIEN",1) "KRN",8994,5818,2,"B","EASTRCKNGNMBR",2) "KRN",8994,5818,2,"PARAMSEQ",1,1) "KRN",8994,5818,2,"PARAMSEQ",2,2) "KRN",8994,5819,-1) 0^12 "KRN",8994,5819,0) SDES GET APPT REQ BY PATIENT^ARGETPATJSON^SDES^2^R^0^^0^^^1 "KRN",8994,5819,1,0) ^8994.01^1^1^3220102^^^ "KRN",8994,5819,1,1,0) Returns a list of appointment requests based on patient DFN "KRN",8994,5819,2,0) ^8994.02A^2^2 "KRN",8994,5819,2,1,0) DFN^1^30^1^1 "KRN",8994,5819,2,1,1,0) ^8994.021^1^1^3210822^^ "KRN",8994,5819,2,1,1,1,0) DFN associated with the patient "KRN",8994,5819,2,2,0) EASTRCKNGNMBR^1^40^0^2 "KRN",8994,5819,2,2,1,0) ^8994.021^2^2^3220121^^^^ "KRN",8994,5819,2,2,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5819,2,2,1,2,0) appointment. "KRN",8994,5819,2,"B","DFN",1) "KRN",8994,5819,2,"B","EASTRCKNGNMBR",2) "KRN",8994,5819,2,"PARAMSEQ",1,1) "KRN",8994,5819,2,"PARAMSEQ",2,2) "KRN",8994,5820,-1) 0^34 "KRN",8994,5820,0) SDES DISPOSITION APPT REQ^DISPOSITION^SDES^2^R^0^^0^^^1 "KRN",8994,5820,1,0) ^8994.01^1^1^3220112^^^^ "KRN",8994,5820,1,1,0) Dispositioning/closing an appointment request "KRN",8994,5820,2,0) ^8994.02A^6^5 "KRN",8994,5820,2,1,0) ARIEN^1^30^1^1 "KRN",8994,5820,2,1,1,0) ^^1^1^3210820^ "KRN",8994,5820,2,1,1,1,0) IEN associated with the appointment request "KRN",8994,5820,2,2,0) DISP^1^30^1^2 "KRN",8994,5820,2,2,1,0) ^^1^1^3210820^ "KRN",8994,5820,2,2,1,1,0) Disposition reason associated with the Disposition/closing of the appt request "KRN",8994,5820,2,3,0) DISPBY^1^30^1^3 "KRN",8994,5820,2,3,1,0) ^^1^1^3210820^ "KRN",8994,5820,2,3,1,1,0) Provider IEN that is dispositioning the request "KRN",8994,5820,2,4,0) DISPDT^1^30^1^4 "KRN",8994,5820,2,4,1,0) ^8994.021^1^1^3220121^^ "KRN",8994,5820,2,4,1,1,0) Internal format of the date the disposition is occurring on "KRN",8994,5820,2,6,0) EASTRCKNGNMBR^1^40^0^5 "KRN",8994,5820,2,6,1,0) ^^2^2^3220112^ "KRN",8994,5820,2,6,1,1,0) Enterprise Appointment Scheduling Tracking Number associated to an "KRN",8994,5820,2,6,1,2,0) appointment. "KRN",8994,5820,2,"B","ARIEN",1) "KRN",8994,5820,2,"B","DISP",2) "KRN",8994,5820,2,"B","DISPBY",3) "KRN",8994,5820,2,"B","DISPDT",4) "KRN",8994,5820,2,"B","EASTRCKNGNMBR",6) "KRN",8994,5820,2,"PARAMSEQ",1,1) "KRN",8994,5820,2,"PARAMSEQ",2,2) "KRN",8994,5820,2,"PARAMSEQ",3,3) "KRN",8994,5820,2,"PARAMSEQ",4,4) "KRN",8994,5820,2,"PARAMSEQ",5,6) "KRN",8994,5821,-1) 0^33 "KRN",8994,5821,0) SDES CREATE APPT REQ^APTREQCREATE^SDES^2^R^^^^^^1 "KRN",8994,5821,1,0) ^8994.01^1^1^3220112^^^^ "KRN",8994,5821,1,1,0) CREATE A NEW APPOINTMENT REQUEST IN FILE 409.85 "KRN",8994,5821,2,0) ^8994.02A^29^29 "KRN",8994,5821,2,1,0) ARIEN^1^30^0^1 "KRN",8994,5821,2,1,1,0) ^8994.021^1^1^3210822^^ "KRN",8994,5821,2,1,1,1,0) THIS FIELD MUST ALWAYS BE BLANK. "KRN",8994,5821,2,2,0) DFN^1^30^1^2 "KRN",8994,5821,2,2,1,0) ^8994.021^1^1^3210822^^^^ "KRN",8994,5821,2,2,1,1,0) Internal number from File 2 "KRN",8994,5821,2,3,0) AREDT^1^30^1^3 "KRN",8994,5821,2,3,1,0) ^8994.021^1^1^3220121^^^^ "KRN",8994,5821,2,3,1,1,0) Originating Date/time in external date formt "KRN",8994,5821,2,4,0) ARINST^1^30^0^4 "KRN",8994,5821,2,4,1,0) ^8994.021^1^1^3210822^^^ "KRN",8994,5821,2,4,1,1,0) Institution name NAME field from the INSTITUTION file "KRN",8994,5821,2,5,0) ARTYPE^1^30^1^5 "KRN",8994,5821,2,5,1,0) ^8994.021^1^1^3210822^^ "KRN",8994,5821,2,5,1,1,0) Appointment Request Type "KRN",8994,5821,2,6,0) ARCLIN^1^30^1^6 "KRN",8994,5821,2,6,1,0) ^8994.021^1^1^3210822^^^ "KRN",8994,5821,2,6,1,1,0) Specific Clinic name/number - NAME field in file 44 "KRN",8994,5821,2,7,0) ARUSER^1^30^0^7 "KRN",8994,5821,2,7,1,0) ^8994.021^1^1^3210822^^ "KRN",8994,5821,2,7,1,1,0) Originating User name - NAME field in NEW PERSON file 200 "KRN",8994,5821,2,8,0) ARREQBY^1^30^1^8 "KRN",8994,5821,2,8,1,0) ^8994.021^1^1^3210822^^ "KRN",8994,5821,2,8,1,1,0) Request By - 'PROVIDER' or 'PATIENT' "KRN",8994,5821,2,9,0) ARPROV^1^30^0^9 "KRN",8994,5821,2,9,1,0) ^8994.021^1^1^3210822^^ "KRN",8994,5821,2,9,1,1,0) Provider name - NAME field in NEW PERSON file 200 "KRN",8994,5821,2,10,0) ARDAPTDT^1^30^1^10 "KRN",8994,5821,2,10,1,0) ^8994.021^2^2^3220121^^^ "KRN",8994,5821,2,10,1,1,0) Desired Date of appointment in external format. This date can not be in "KRN",8994,5821,2,10,1,2,0) the past. "KRN",8994,5821,2,11,0) ARCOMM^1^60^0^11 "KRN",8994,5821,2,11,1,0) ^8994.021^1^1^3210822^^^ "KRN",8994,5821,2,11,1,1,0) Comment must be 1-60 characters "KRN",8994,5821,2,12,0) ARENPRI^1^30^0^12 "KRN",8994,5821,2,12,1,0) ^8994.021^1^1^3210822^^ "KRN",8994,5821,2,12,1,1,0) ENROLLMENT PRIORITY - Valid Values are "GROUP 1" through "GROUP 8" "KRN",8994,5821,2,13,0) ARMAR^1^30^0^13 "KRN",8994,5821,2,13,1,0) ^8994.021^1^1^3210822^^ "KRN",8994,5821,2,13,1,1,0) Multiple Appointment RTC NO or YES "KRN",8994,5821,2,14,0) ARMAI^1^30^0^14 "KRN",8994,5821,2,14,1,0) ^^1^1^3210822^ "KRN",8994,5821,2,14,1,1,0) MULT APPT RTC INTERVAL "KRN",8994,5821,2,15,0) AMRAN^1^30^0^15 "KRN",8994,5821,2,15,1,0) ^8994.021^1^1^3210822^^ "KRN",8994,5821,2,15,1,1,0) MULT APPT NUMBER "KRN",8994,5821,2,16,0) ARPATCONT^1^30^0^16 "KRN",8994,5821,2,16,1,0) ^8994.021^9^9^3220121^^^ "KRN",8994,5821,2,16,1,1,0) Patient Contacts separated by :: "KRN",8994,5821,2,16,1,2,0) Each :: piece has the following ~~ pieces: "KRN",8994,5821,2,16,1,3,0) 1) = (date) ENTERED external date/time "KRN",8994,5821,2,16,1,4,0) 2) = (text) PC ENTERED BY USER ID or NAME - Pointer toNEW PERSON "KRN",8994,5821,2,16,1,5,0) file or NAME "KRN",8994,5821,2,16,1,6,0) 4) = (optional) ACTION - valid values are: "KRN",8994,5821,2,16,1,7,0) CALLED, MESSAGE LEFT or LETTER "KRN",8994,5821,2,16,1,8,0) 5) = (optional) PATIENT PHONE Free-Text 4-20 characters "KRN",8994,5821,2,16,1,9,0) 6) = NOT USED (optional) Comment 1-160 characters "KRN",8994,5821,2,17,0) ARSVCCON^1^30^0^17 "KRN",8994,5821,2,17,1,0) ^8994.021^1^1^3210822^^ "KRN",8994,5821,2,17,1,1,0) SERVICE CONNECTED PRIORITY valid values are NO YES "KRN",8994,5821,2,18,0) ARSVCCOP^1^30^0^18 "KRN",8994,5821,2,18,1,0) ^8994.021^1^1^3210822^^ "KRN",8994,5821,2,18,1,1,0) SERVICE CONNECTED PERCENTAGE = numeric 0-100 "KRN",8994,5821,2,19,0) MRTCPREFDT^1^30^0^19 "KRN",8994,5821,2,19,1,0) ^8994.021^2^2^3220121^^^ "KRN",8994,5821,2,19,1,1,0) MRTC calculated preferred dates separated by pipe |: "KRN",8994,5821,2,19,1,2,0) Each date can be in external format with no time. "KRN",8994,5821,2,20,0) ARSTOP^1^30^0^20 "KRN",8994,5821,2,20,1,0) ^8994.021^2^2^3210822^^ "KRN",8994,5821,2,20,1,1,0) CLINIC STOP pointer to CLINIC STOP file 40.7 "KRN",8994,5821,2,20,1,2,0) used to populate the REQ SERVICE/SPECIALTY field in 409.85 "KRN",8994,5821,2,21,0) ARAPTYP^1^30^0^21 "KRN",8994,5821,2,21,1,0) ^8994.021^1^1^3210822^^ "KRN",8994,5821,2,21,1,1,0) Appointment Type ID pointer to APPOINTMENT TYPE file 409.1 "KRN",8994,5821,2,22,0) ARPATSTAT^1^30^0^22 "KRN",8994,5821,2,22,1,0) ^8994.021^1^1^3210822^^ "KRN",8994,5821,2,22,1,1,0) Patient status N-New or E-Established "KRN",8994,5821,2,23,0) MULTIAPTMADE^1^30^0^23 "KRN",8994,5821,2,23,1,0) ^8994.021^6^6^3210822^^ "KRN",8994,5821,2,23,1,1,0) MULT APPTS MADE "KRN",8994,5821,2,23,1,2,0) List of child pointers to SDEC APPOINTMENT and/orSDEC APPT REQUEST files "KRN",8994,5821,2,23,1,3,0) separated by pipe "KRN",8994,5821,2,23,1,4,0) each pipe piece contains the following ~ pieces: "KRN",8994,5821,2,23,1,5,0) 1. Appointment Id pointer to SDEC APPOINTMENT file 409.84 "KRN",8994,5821,2,23,1,6,0) 2. Request Id pointer to SDEC APPT REQUEST file 409.85 "KRN",8994,5821,2,24,0) ARPARENT^1^30^0^24 "KRN",8994,5821,2,24,1,0) ^8994.021^1^1^3210822^^ "KRN",8994,5821,2,24,1,1,0) PARENT REQUEST pointer to SDEC APPT REQUEST file 409.85 "KRN",8994,5821,2,25,0) ARNLT^1^30^0^25 "KRN",8994,5821,2,25,1,0) ^8994.021^1^1^3210822^^ "KRN",8994,5821,2,25,1,1,0) NLT (No later than) [CPRS RTC REQUIREMENT] "KRN",8994,5821,2,26,0) ARPRER^1^30^0^26 "KRN",8994,5821,2,26,1,0) ^8994.021^1^1^3210822^^ "KRN",8994,5821,2,26,1,1,0) PREREQ (Prerequisites) [CPRS RTC REQUIREMENT] "KRN",8994,5821,2,27,0) ARORDN^1^30^0^27 "KRN",8994,5821,2,27,1,0) ^8994.021^1^1^3210822^^ "KRN",8994,5821,2,27,1,1,0) ORDER IEN [CPRS RTC REQUIREMENT] "KRN",8994,5821,2,28,0) VAOSGUID^1^30^0^28 "KRN",8994,5821,2,28,1,0) ^8994.021^1^1^3210929^^^^ "KRN",8994,5821,2,28,1,1,0) VAOS GUID - Request ID "KRN",8994,5821,2,29,0) EASTRCKNGNMBR^1^40^0^29 "KRN",8994,5821,2,29,1,0) ^8994.021^2^2^3220112^^ "KRN",8994,5821,2,29,1,1,0) Enterprise Appointment Scheduling Tracking Number associated to an "KRN",8994,5821,2,29,1,2,0) appointment. "KRN",8994,5821,2,"B","AMRAN",15) "KRN",8994,5821,2,"B","ARAPTYP",21) "KRN",8994,5821,2,"B","ARCLIN",6) "KRN",8994,5821,2,"B","ARCOMM",11) "KRN",8994,5821,2,"B","ARDAPTDT",10) "KRN",8994,5821,2,"B","AREDT",3) "KRN",8994,5821,2,"B","ARENPRI",12) "KRN",8994,5821,2,"B","ARIEN",1) "KRN",8994,5821,2,"B","ARINST",4) "KRN",8994,5821,2,"B","ARMAI",14) "KRN",8994,5821,2,"B","ARMAR",13) "KRN",8994,5821,2,"B","ARNLT",25) "KRN",8994,5821,2,"B","ARORDN",27) "KRN",8994,5821,2,"B","ARPARENT",24) "KRN",8994,5821,2,"B","ARPATCONT",16) "KRN",8994,5821,2,"B","ARPATSTAT",22) "KRN",8994,5821,2,"B","ARPRER",26) "KRN",8994,5821,2,"B","ARPROV",9) "KRN",8994,5821,2,"B","ARREQBY",8) "KRN",8994,5821,2,"B","ARSTOP",20) "KRN",8994,5821,2,"B","ARSVCCON",17) "KRN",8994,5821,2,"B","ARSVCCOP",18) "KRN",8994,5821,2,"B","ARTYPE",5) "KRN",8994,5821,2,"B","ARUSER",7) "KRN",8994,5821,2,"B","DFN",2) "KRN",8994,5821,2,"B","EASTRCKNGNMBR",29) "KRN",8994,5821,2,"B","MRTCPREFDT",19) "KRN",8994,5821,2,"B","MULTIAPTMADE",23) "KRN",8994,5821,2,"B","VAOSGUID",28) "KRN",8994,5821,2,"PARAMSEQ",1,1) "KRN",8994,5821,2,"PARAMSEQ",2,2) "KRN",8994,5821,2,"PARAMSEQ",3,3) "KRN",8994,5821,2,"PARAMSEQ",4,4) "KRN",8994,5821,2,"PARAMSEQ",5,5) "KRN",8994,5821,2,"PARAMSEQ",6,6) "KRN",8994,5821,2,"PARAMSEQ",7,7) "KRN",8994,5821,2,"PARAMSEQ",8,8) "KRN",8994,5821,2,"PARAMSEQ",9,9) "KRN",8994,5821,2,"PARAMSEQ",10,10) "KRN",8994,5821,2,"PARAMSEQ",11,11) "KRN",8994,5821,2,"PARAMSEQ",12,12) "KRN",8994,5821,2,"PARAMSEQ",13,13) "KRN",8994,5821,2,"PARAMSEQ",14,14) "KRN",8994,5821,2,"PARAMSEQ",15,15) "KRN",8994,5821,2,"PARAMSEQ",16,16) "KRN",8994,5821,2,"PARAMSEQ",17,17) "KRN",8994,5821,2,"PARAMSEQ",18,18) "KRN",8994,5821,2,"PARAMSEQ",19,19) "KRN",8994,5821,2,"PARAMSEQ",20,20) "KRN",8994,5821,2,"PARAMSEQ",21,21) "KRN",8994,5821,2,"PARAMSEQ",22,22) "KRN",8994,5821,2,"PARAMSEQ",23,23) "KRN",8994,5821,2,"PARAMSEQ",24,24) "KRN",8994,5821,2,"PARAMSEQ",25,25) "KRN",8994,5821,2,"PARAMSEQ",26,26) "KRN",8994,5821,2,"PARAMSEQ",27,27) "KRN",8994,5821,2,"PARAMSEQ",28,28) "KRN",8994,5821,2,"PARAMSEQ",29,29) "KRN",8994,5821,3,0) ^8994.03^2^2^3220112^^^^ "KRN",8994,5821,3,1,0) USING JSON FORMAT RETURN ERROR MESSAGES FOR ALL FALIED VALIDATION OR THE "KRN",8994,5821,3,2,0) APPT REQUEST IEN GENERATED FOR THIS NEW ENTRY IN 409.85 "KRN",8994,5822,-1) 0^35 "KRN",8994,5822,0) SDES EDIT APPT REQ^APTREQUPDATE^SDES^2^R^^^^^^1 "KRN",8994,5822,1,0) ^8994.01^1^1^3220113^^^ "KRN",8994,5822,1,1,0) UPDATE AN EXISTING ENTRY IN FILE 409.85 BASED ON THE IEN PASSED IN. "KRN",8994,5822,2,0) ^8994.02A^29^29 "KRN",8994,5822,2,1,0) ARIEN^1^30^1^1 "KRN",8994,5822,2,1,1,0) ^^1^1^3210927^ "KRN",8994,5822,2,1,1,1,0) IEN OF THE APPOINTMENT REQUEST TO BE UPDATED IN FILE 409.85 "KRN",8994,5822,2,2,0) DFN^1^30^0^2 "KRN",8994,5822,2,2,1,0) ^^1^1^3210823^ "KRN",8994,5822,2,2,1,1,0) THIS FIELD IS NOT USED WHEN UPDATING AN APPOINTMENT REQUEST "KRN",8994,5822,2,3,0) AREDT^1^30^0^3 "KRN",8994,5822,2,3,1,0) ^8994.021^1^1^3220121^^^ "KRN",8994,5822,2,3,1,1,0) Originating Date/time in external date formt "KRN",8994,5822,2,4,0) ARINST^1^30^0^4 "KRN",8994,5822,2,4,1,0) ^8994.021^1^1^3210822^^ "KRN",8994,5822,2,4,1,1,0) Institution name NAME field from the INSTITUTION file "KRN",8994,5822,2,5,0) ARTYPE^1^30^0^5 "KRN",8994,5822,2,5,1,0) ^8994.021^1^1^3210822^^ "KRN",8994,5822,2,5,1,1,0) Appointment Request Type "KRN",8994,5822,2,6,0) ARCLIN ^1^30^0^6 "KRN",8994,5822,2,6,1,0) ^^1^1^3210820^ "KRN",8994,5822,2,6,1,1,0) Specific Clinic name/number - NAME field in file 44 "KRN",8994,5822,2,7,0) ARUSER ^1^30^0^7 "KRN",8994,5822,2,7,1,0) ^^1^1^3210820^ "KRN",8994,5822,2,7,1,1,0) Originating User name - NAME field in NEW PERSON file 200 "KRN",8994,5822,2,8,0) ARREQBY ^1^30^0^8 "KRN",8994,5822,2,8,1,0) ^^1^1^3210820^ "KRN",8994,5822,2,8,1,1,0) Request By - 'PROVIDER' or 'PATIENT' "KRN",8994,5822,2,9,0) ARPROV ^1^30^0^9 "KRN",8994,5822,2,9,1,0) ^^1^1^3210820^ "KRN",8994,5822,2,9,1,1,0) Provider name - NAME field in NEW PERSON file 200 "KRN",8994,5822,2,10,0) ARDAPTDT ^1^30^0^10 "KRN",8994,5822,2,10,1,0) ^8994.021^1^1^3220121^^ "KRN",8994,5822,2,10,1,1,0) Desired Date of appointment in external format "KRN",8994,5822,2,11,0) ARCOMM ^1^30^0^11 "KRN",8994,5822,2,11,1,0) ^^1^1^3210820^ "KRN",8994,5822,2,11,1,1,0) Comment must be 1-60 characters "KRN",8994,5822,2,12,0) ARENPRI ^1^30^0^12 "KRN",8994,5822,2,12,1,0) ^^1^1^3210820^ "KRN",8994,5822,2,12,1,1,0) ENROLLMENT PRIORITY - Valid Values are "GROUP 1" through "GROUP 8" "KRN",8994,5822,2,13,0) ARMAR ^1^30^0^13 "KRN",8994,5822,2,13,1,0) ^^1^1^3210820^ "KRN",8994,5822,2,13,1,1,0) Multiple Appointment RTC NO or YES "KRN",8994,5822,2,14,0) ARMAI ^1^30^0^14 "KRN",8994,5822,2,14,1,0) ^^1^1^3210820^ "KRN",8994,5822,2,14,1,1,0) MULT APPT RTC INTERVAL "KRN",8994,5822,2,15,0) AMRAN ^1^30^0^15 "KRN",8994,5822,2,15,1,0) ^^1^1^3210820^ "KRN",8994,5822,2,15,1,1,0) MULT APPT NUMBER "KRN",8994,5822,2,16,0) ARPATCONT ^1^30^0^16 "KRN",8994,5822,2,16,1,0) ^8994.021^9^9^3220121^^ "KRN",8994,5822,2,16,1,1,0) Patient Contacts separated by :: "KRN",8994,5822,2,16,1,2,0) Each :: piece has the following ~~ pieces: "KRN",8994,5822,2,16,1,3,0) 1) = (date) DATE ENTERED external date/time "KRN",8994,5822,2,16,1,4,0) 2) = (text) PC ENTERED BY USER ID or NAME - Pointer toNEW PERSON "KRN",8994,5822,2,16,1,5,0) file or NAME "KRN",8994,5822,2,16,1,6,0) 4) = (optional) ACTION - valid values are: "KRN",8994,5822,2,16,1,7,0) CALLED, MESSAGE LEFT or LETTER "KRN",8994,5822,2,16,1,8,0) 5) = (optional) PATIENT PHONE Free-Text 4-20 characters "KRN",8994,5822,2,16,1,9,0) 6) = NOT USED (optional) Comment 1-160 characters "KRN",8994,5822,2,17,0) ARSVCCON ^1^30^0^17 "KRN",8994,5822,2,17,1,0) ^^1^1^3210820^ "KRN",8994,5822,2,17,1,1,0) SERVICE CONNECTED PRIORITY valid values are NO YES "KRN",8994,5822,2,18,0) ARSVCCOP ^1^30^0^18 "KRN",8994,5822,2,18,1,0) ^^1^1^3210820^ "KRN",8994,5822,2,18,1,1,0) SERVICE CONNECTED PERCENTAGE = numeric 0-100 "KRN",8994,5822,2,19,0) MRTCPREFDT ^1^30^0^19 "KRN",8994,5822,2,19,1,0) ^8994.021^2^2^3220121^^ "KRN",8994,5822,2,19,1,1,0) MRTC calculated preferred dates separated by pipe |: "KRN",8994,5822,2,19,1,2,0) Each date can be in external format with no time. "KRN",8994,5822,2,20,0) ARSTOP ^1^30^0^20 "KRN",8994,5822,2,20,1,0) ^^2^2^3210820^ "KRN",8994,5822,2,20,1,1,0) CLINIC STOP pointer to CLINIC STOP file 40.7 "KRN",8994,5822,2,20,1,2,0) used to populate the REQ SERVICE/SPECIALTY field in 409.85 "KRN",8994,5822,2,21,0) ARAPTYP ^1^30^0^21 "KRN",8994,5822,2,21,1,0) ^^1^1^3210820^ "KRN",8994,5822,2,21,1,1,0) Appointment Type ID pointer to APPOINTMENT TYPE file 409.1 "KRN",8994,5822,2,22,0) ARPATSTAT ^1^30^0^22 "KRN",8994,5822,2,22,1,0) ^^1^1^3210820^ "KRN",8994,5822,2,22,1,1,0) Patient status N-New or E-Established "KRN",8994,5822,2,23,0) MULTIAPTMADE ^1^30^0^23 "KRN",8994,5822,2,23,1,0) ^^6^6^3210820^ "KRN",8994,5822,2,23,1,1,0) MULT APPTS MADE "KRN",8994,5822,2,23,1,2,0) List of child pointers to SDEC APPOINTMENT and/orSDEC APPT REQUEST files "KRN",8994,5822,2,23,1,3,0) separated by pipe "KRN",8994,5822,2,23,1,4,0) each pipe piece contains the following ~ pieces: "KRN",8994,5822,2,23,1,5,0) 1. Appointment Id pointer to SDEC APPOINTMENT file 409.84 "KRN",8994,5822,2,23,1,6,0) 2. Request Id pointer to SDEC APPT REQUEST file 409.85 "KRN",8994,5822,2,24,0) ARPARENT ^1^30^0^24 "KRN",8994,5822,2,24,1,0) ^^1^1^3210820^ "KRN",8994,5822,2,24,1,1,0) PARENT REQUEST pointer to SDEC APPT REQUEST file 409.85 "KRN",8994,5822,2,25,0) ARNLT ^1^30^0^25 "KRN",8994,5822,2,25,1,0) ^^1^1^3210820^ "KRN",8994,5822,2,25,1,1,0) NLT (No later than) [CPRS RTC REQUIREMENT] "KRN",8994,5822,2,26,0) ARPRER ^1^30^0^26 "KRN",8994,5822,2,26,1,0) ^^1^1^3210820^ "KRN",8994,5822,2,26,1,1,0) PREREQ (Prerequisites) [CPRS RTC REQUIREMENT] "KRN",8994,5822,2,27,0) ARORDN ^1^30^0^27 "KRN",8994,5822,2,27,1,0) ^^1^1^3210820^ "KRN",8994,5822,2,27,1,1,0) ORDER IEN [CPRS RTC REQUIREMENT] "KRN",8994,5822,2,28,0) VAOSGUID ^1^30^0^28 "KRN",8994,5822,2,28,1,0) ^8994.021^1^1^3210929^^^^ "KRN",8994,5822,2,28,1,1,0) VAOS GUID - REQUEST ID "KRN",8994,5822,2,29,0) EASTRCKNGNMBR^1^40^0^29 "KRN",8994,5822,2,29,1,0) ^^2^2^3220113^ "KRN",8994,5822,2,29,1,1,0) Enterprise Appointment Scheduling Tracking Number associated to an "KRN",8994,5822,2,29,1,2,0) appointment. "KRN",8994,5822,2,"B","AMRAN ",15) "KRN",8994,5822,2,"B","ARAPTYP ",21) "KRN",8994,5822,2,"B","ARCLIN ",6) "KRN",8994,5822,2,"B","ARCOMM ",11) "KRN",8994,5822,2,"B","ARDAPTDT ",10) "KRN",8994,5822,2,"B","AREDT",3) "KRN",8994,5822,2,"B","ARENPRI ",12) "KRN",8994,5822,2,"B","ARIEN",1) "KRN",8994,5822,2,"B","ARINST",4) "KRN",8994,5822,2,"B","ARMAI ",14) "KRN",8994,5822,2,"B","ARMAR ",13) "KRN",8994,5822,2,"B","ARNLT ",25) "KRN",8994,5822,2,"B","ARORDN ",27) "KRN",8994,5822,2,"B","ARPARENT ",24) "KRN",8994,5822,2,"B","ARPATCONT ",16) "KRN",8994,5822,2,"B","ARPATSTAT ",22) "KRN",8994,5822,2,"B","ARPRER ",26) "KRN",8994,5822,2,"B","ARPROV ",9) "KRN",8994,5822,2,"B","ARREQBY ",8) "KRN",8994,5822,2,"B","ARSTOP ",20) "KRN",8994,5822,2,"B","ARSVCCON ",17) "KRN",8994,5822,2,"B","ARSVCCOP ",18) "KRN",8994,5822,2,"B","ARTYPE",5) "KRN",8994,5822,2,"B","ARUSER ",7) "KRN",8994,5822,2,"B","DFN",2) "KRN",8994,5822,2,"B","EASTRCKNGNMBR",29) "KRN",8994,5822,2,"B","MRTCPREFDT ",19) "KRN",8994,5822,2,"B","MULTIAPTMADE ",23) "KRN",8994,5822,2,"B","VAOSGUID ",28) "KRN",8994,5822,2,"PARAMSEQ",1,1) "KRN",8994,5822,2,"PARAMSEQ",2,2) "KRN",8994,5822,2,"PARAMSEQ",3,3) "KRN",8994,5822,2,"PARAMSEQ",4,4) "KRN",8994,5822,2,"PARAMSEQ",5,5) "KRN",8994,5822,2,"PARAMSEQ",6,6) "KRN",8994,5822,2,"PARAMSEQ",7,7) "KRN",8994,5822,2,"PARAMSEQ",8,8) "KRN",8994,5822,2,"PARAMSEQ",9,9) "KRN",8994,5822,2,"PARAMSEQ",10,10) "KRN",8994,5822,2,"PARAMSEQ",11,11) "KRN",8994,5822,2,"PARAMSEQ",12,12) "KRN",8994,5822,2,"PARAMSEQ",13,13) "KRN",8994,5822,2,"PARAMSEQ",14,14) "KRN",8994,5822,2,"PARAMSEQ",15,15) "KRN",8994,5822,2,"PARAMSEQ",16,16) "KRN",8994,5822,2,"PARAMSEQ",17,17) "KRN",8994,5822,2,"PARAMSEQ",18,18) "KRN",8994,5822,2,"PARAMSEQ",19,19) "KRN",8994,5822,2,"PARAMSEQ",20,20) "KRN",8994,5822,2,"PARAMSEQ",21,21) "KRN",8994,5822,2,"PARAMSEQ",22,22) "KRN",8994,5822,2,"PARAMSEQ",23,23) "KRN",8994,5822,2,"PARAMSEQ",24,24) "KRN",8994,5822,2,"PARAMSEQ",25,25) "KRN",8994,5822,2,"PARAMSEQ",26,26) "KRN",8994,5822,2,"PARAMSEQ",27,27) "KRN",8994,5822,2,"PARAMSEQ",28,28) "KRN",8994,5822,2,"PARAMSEQ",29,29) "KRN",8994,5822,3,0) ^8994.03^2^2^3220113^^ "KRN",8994,5822,3,1,0) USING JSON RETURN A LIST OF ALL VALIDATION ERRORS OR THE ARIEN IF THE "KRN",8994,5822,3,2,0) UPDATE WAS SUCCESSFUL. "KRN",8994,5826,-1) 0^32 "KRN",8994,5826,0) SDES CREATE APPT BLK AND MOVE^APPTBLOCKMOVE^SDES^2^R^0^^1^^^1 "KRN",8994,5826,1,0) ^8994.01^3^3^3220111^^ "KRN",8994,5826,1,1,0) APPOINTMENT BLOCK AND MOVE. THIS WILL MOVE AN APPOINTMENT TO A NEW CLINIC "KRN",8994,5826,1,2,0) AND DATE/TIME, CANCEL THE ORIGINAL APPOINTMENT AND KEEP THE ORIGINAL SLOT "KRN",8994,5826,1,3,0) BLOCKED SO IT CAN NOT BE REBOOKED. "KRN",8994,5826,2,0) ^8994.02A^4^4 "KRN",8994,5826,2,1,0) APPTIEN^1^30^1^1 "KRN",8994,5826,2,1,1,0) ^^1^1^3210915^ "KRN",8994,5826,2,1,1,1,0) APPOINTMENT IEN FROM SDEC APPOINTMENT #409.84 "KRN",8994,5826,2,2,0) SDRES^1^30^1^2 "KRN",8994,5826,2,2,1,0) ^^1^1^3210915^ "KRN",8994,5826,2,2,1,1,0) IEN FROM SDEC RESOURCE FILE 409.831 "KRN",8994,5826,2,3,0) APPTDT^1^30^1^3 "KRN",8994,5826,2,3,1,0) ^8994.021^1^1^3220121^^^^ "KRN",8994,5826,2,3,1,1,0) DATE AND TIME OF NEW APPOINTMENT "KRN",8994,5826,2,4,0) EASTRCKNGNMBR^1^40^0^4 "KRN",8994,5826,2,4,1,0) ^^2^2^3220111^ "KRN",8994,5826,2,4,1,1,0) Enterprise Appointment Scheduling Tracking Number associated to an "KRN",8994,5826,2,4,1,2,0) appointment. "KRN",8994,5826,2,"B","APPTDT",3) "KRN",8994,5826,2,"B","APPTIEN",1) "KRN",8994,5826,2,"B","EASTRCKNGNMBR",4) "KRN",8994,5826,2,"B","SDRES",2) "KRN",8994,5826,2,"PARAMSEQ",1,1) "KRN",8994,5826,2,"PARAMSEQ",2,2) "KRN",8994,5826,2,"PARAMSEQ",3,3) "KRN",8994,5826,2,"PARAMSEQ",4,4) "KRN",8994,5827,-1) 0^18 "KRN",8994,5827,0) SDES GET CLINIC INFO^JSONCLNINFO^SDES^2^R^^^^^^1 "KRN",8994,5827,1,0) ^8994.01^1^1^3220102^^^^ "KRN",8994,5827,1,1,0) Create new RPC to Read clinic information from HOSPITAL LOCATION file (44) "KRN",8994,5827,2,0) ^8994.02A^3^2 "KRN",8994,5827,2,2,0) CLINICIEN^1^20^1^1 "KRN",8994,5827,2,3,0) EASTRCKNGNMBR^1^40^0^2 "KRN",8994,5827,2,3,1,0) ^8994.021^2^2^3220106^^ "KRN",8994,5827,2,3,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5827,2,3,1,2,0) appointment. "KRN",8994,5827,2,"B","CLINICIEN",2) "KRN",8994,5827,2,"B","EASTRCKNGNMBR",3) "KRN",8994,5827,2,"PARAMSEQ",1,2) "KRN",8994,5827,2,"PARAMSEQ",2,3) "KRN",8994,5827,3,0) ^8994.03^1^1^3220106^^^^ "KRN",8994,5827,3,1,0) CLINIC INFO IN FILE 44 "KRN",8994,5828,-1) 0^20 "KRN",8994,5828,0) SDES GET PATIENT REGISTRATION^GETREGA^SDES^2^R^0^^^^^1 "KRN",8994,5828,1,0) ^8994.01^1^1^3220111^^^ "KRN",8994,5828,1,1,0) Given a DFN returns Patient registration information. "KRN",8994,5828,2,0) ^8994.02A^2^2 "KRN",8994,5828,2,1,0) DFN^1^^1^1 "KRN",8994,5828,2,1,1,0) ^^1^1^3210929^ "KRN",8994,5828,2,1,1,1,0) Data File Number (Pointer to the PATIENT (#2) File "KRN",8994,5828,2,2,0) EASTRCKNGNMBR^1^40^0^2 "KRN",8994,5828,2,2,1,0) ^8994.021^2^2^3220111^^^ "KRN",8994,5828,2,2,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5828,2,2,1,2,0) appointment. "KRN",8994,5828,2,"B","DFN",1) "KRN",8994,5828,2,"B","EASTRCKNGNMBR",2) "KRN",8994,5828,2,"PARAMSEQ",1,1) "KRN",8994,5828,2,"PARAMSEQ",2,2) "KRN",8994,5828,3,0) ^8994.03^48^48^3220111^^^^ "KRN",8994,5828,3,1,0) JSON array of Patient Registration Information. "KRN",8994,5828,3,2,0) Container: Patient "KRN",8994,5828,3,3,0) Fields: "KRN",8994,5828,3,4,0) AddressIndicator "KRN",8994,5828,3,5,0) MailCity "KRN",8994,5828,3,6,0) MailCountry "KRN",8994,5828,3,7,0) MailCountryName "KRN",8994,5828,3,8,0) MailCounty "KRN",8994,5828,3,9,0) MailState "KRN",8994,5828,3,10,0) MailZip "KRN",8994,5828,3,11,0) MentalHealthProvider "KRN",8994,5828,3,12,0) PrimaryNextOfKin "KRN",8994,5828,3,13,0) PrimaryNextOfKinAddress "KRN",8994,5828,3,14,0) PrimaryNextOfKinCity "KRN",8994,5828,3,15,0) PrimaryNextOfKinPhone "KRN",8994,5828,3,16,0) PrimaryNextOfKinState "KRN",8994,5828,3,17,0) PrimaryNextOfKinStreet2 "KRN",8994,5828,3,18,0) PrimaryNextOfKinZip "KRN",8994,5828,3,19,0) PrimaryyNextOfKinStreet3 "KRN",8994,5828,3,20,0) ResidentialAddress1 "KRN",8994,5828,3,21,0) ResidentialAddress2 "KRN",8994,5828,3,22,0) ResidentialAddress3 "KRN",8994,5828,3,23,0) ResidentialCity "KRN",8994,5828,3,24,0) ResidentialState "KRN",8994,5828,3,25,0) ResidentialZip "KRN",8994,5828,3,26,0) SecondaryNextOfKin "KRN",8994,5828,3,27,0) SecondaryNextOfKinCity "KRN",8994,5828,3,28,0) SecondaryNextOfKinName "KRN",8994,5828,3,29,0) SecondaryNextOfKinPhone "KRN",8994,5828,3,30,0) SecondaryNextOfKinRelationship "KRN",8994,5828,3,31,0) SecondaryNextOfKinState "KRN",8994,5828,3,32,0) SecondaryNextOfKinStreet "KRN",8994,5828,3,33,0) SecondaryNextOfKinStreet2 "KRN",8994,5828,3,34,0) SecondaryNextOfKinStreet3 "KRN",8994,5828,3,35,0) SecondaryNextOfKinZip "KRN",8994,5828,3,36,0) TempAddress1 "KRN",8994,5828,3,37,0) TempAddress2 "KRN",8994,5828,3,38,0) TempAddress3 "KRN",8994,5828,3,39,0) TempAddressEnd "KRN",8994,5828,3,40,0) TempAddressStart "KRN",8994,5828,3,41,0) TempCity "KRN",8994,5828,3,42,0) TempCountry "KRN",8994,5828,3,43,0) TempCountryName "KRN",8994,5828,3,44,0) TempCounty "KRN",8994,5828,3,45,0) TempPhone "KRN",8994,5828,3,46,0) TempState "KRN",8994,5828,3,47,0) TempZip "KRN",8994,5828,3,48,0) TempZip4 "KRN",8994,5829,-1) 0^25 "KRN",8994,5829,0) SDES INACTIVATE/ZZ CLINIC^JSONINACTCLN^SDES^2^R^^^^^^1 "KRN",8994,5829,1,0) ^^2^2^3220104^ "KRN",8994,5829,1,1,0) SDES RPC to INACTIVATE clinic from HOSPITAL LOCATION file (44) - single "KRN",8994,5829,1,2,0) IEN "KRN",8994,5829,2,0) ^8994.02A^2^2 "KRN",8994,5829,2,1,0) CLINICIEN^1^20^1^1 "KRN",8994,5829,2,2,0) EASTRCKNGNMBR^1^40^0^2 "KRN",8994,5829,2,2,1,0) ^8994.021^2^2^3220104^^ "KRN",8994,5829,2,2,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5829,2,2,1,2,0) appointment. "KRN",8994,5829,2,"B","CLINICIEN",1) "KRN",8994,5829,2,"B","EASTRCKNGNMBR",2) "KRN",8994,5829,2,"PARAMSEQ",1,1) "KRN",8994,5829,2,"PARAMSEQ",2,2) "KRN",8994,5829,3,0) ^8994.03^1^1^3220104^^^^ "KRN",8994,5829,3,1,0) ERROR OR SUCCESS MESSAGE "KRN",8994,5830,-1) 0^1 "KRN",8994,5830,0) SDES CREATE CLINIC^CLINICCREATE^SDES^2^R^^^^^^1 "KRN",8994,5830,1,0) ^8994.01^1^1^3220103^^^^ "KRN",8994,5830,1,1,0) THIS RPC IS USED TO ADD A NEW CLINIC TO THE HOSPITAL LOCATION FILE #44. "KRN",8994,5830,2,0) ^8994.02A^42^40 "KRN",8994,5830,2,3,0) SDNAME^1^30^0^2 "KRN",8994,5830,2,3,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,3,1,1,0) CLINIC NAME "KRN",8994,5830,2,3,1,2,0) FREE TEXT "KRN",8994,5830,2,4,0) SDABR ^1^30^0^3 "KRN",8994,5830,2,4,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,4,1,1,0) ABBREVATION "KRN",8994,5830,2,4,1,2,0) FREE TEXT "KRN",8994,5830,2,5,0) SDPATNAME ^1^30^0^4 "KRN",8994,5830,2,5,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,5,1,1,0) PATIENT FRIENDLY NAME "KRN",8994,5830,2,5,1,2,0) FREE TEXT "KRN",8994,5830,2,6,0) SDMEETATFAC ^1^30^0^5 "KRN",8994,5830,2,6,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,6,1,1,0) CLINIC MEETS AT THIS FACILITY? (Default = Y) "KRN",8994,5830,2,6,1,2,0) YES / NO "KRN",8994,5830,2,7,0) SDPATSCHED ^1^30^1^6 "KRN",8994,5830,2,7,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,7,1,1,0) ALLOW DIRECT PATIENT SCHEDULING "KRN",8994,5830,2,7,1,2,0) YES / NO "KRN",8994,5830,2,8,0) SDDISPAPPT ^1^30^1^7 "KRN",8994,5830,2,8,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,8,1,1,0) DISPLAY CLIN APPT TO PATIENTS "KRN",8994,5830,2,8,1,2,0) YES / NO "KRN",8994,5830,2,9,0) SDSERVICE ^1^30^1^8 "KRN",8994,5830,2,9,1,0) ^^8^8^3211001^ "KRN",8994,5830,2,9,1,1,0) SERVICE "KRN",8994,5830,2,9,1,2,0) SET OF CODES "KRN",8994,5830,2,9,1,3,0) M MEDICINE "KRN",8994,5830,2,9,1,4,0) S SURGERY "KRN",8994,5830,2,9,1,5,0) P PSYCHIATRY "KRN",8994,5830,2,9,1,6,0) R REHAB MEDICINE "KRN",8994,5830,2,9,1,7,0) N NEUROLOGY "KRN",8994,5830,2,9,1,8,0) 0 NONE "KRN",8994,5830,2,10,0) SDNONCOUNT ^1^30^1^9 "KRN",8994,5830,2,10,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,10,1,1,0) NON-COUNT CLINIC "KRN",8994,5830,2,10,1,2,0) YES / NO "KRN",8994,5830,2,11,0) SDDIVSION ^1^30^0^10 "KRN",8994,5830,2,11,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,11,1,1,0) DIVISION "KRN",8994,5830,2,11,1,2,0) POINTER TO FILE 40.8 "KRN",8994,5830,2,12,0) SDSTOPCODE ^1^30^1^11 "KRN",8994,5830,2,12,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,12,1,1,0) STOP CODE NUMBER "KRN",8994,5830,2,12,1,2,0) POINTER TO FILE 40.7 "KRN",8994,5830,2,13,0) SDAPPTTYP ^1^30^0^12 "KRN",8994,5830,2,13,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,13,1,1,0) DEFAULT APPOINTMENT TYPE (Default = REGULAR) "KRN",8994,5830,2,13,1,2,0) POINTER TO FILE 409.1 "KRN",8994,5830,2,14,0) SDINPATMED ^1^30^0^13 "KRN",8994,5830,2,14,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,14,1,1,0) ADMINISTER INPATIENT MEDS "KRN",8994,5830,2,14,1,2,0) YES / NO "KRN",8994,5830,2,15,0) SDPHONE ^1^30^0^14 "KRN",8994,5830,2,15,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,15,1,1,0) TELEPHONE "KRN",8994,5830,2,15,1,2,0) FREE TEXT "KRN",8994,5830,2,16,0) SDREQXRAY ^1^30^0^15 "KRN",8994,5830,2,16,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,16,1,1,0) REQUIRE X-RAY FILMS "KRN",8994,5830,2,16,1,2,0) YES / NO "KRN",8994,5830,2,17,0) SDREQPROFILE^1^30^0^16 "KRN",8994,5830,2,17,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,17,1,1,0) REQUIRE ACTION PROFILES (Default=Y) "KRN",8994,5830,2,17,1,2,0) YES / NO "KRN",8994,5830,2,18,0) SDNOSHOWLET ^1^30^0^17 "KRN",8994,5830,2,18,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,18,1,1,0) NO SHOW LETTER "KRN",8994,5830,2,18,1,2,0) POINTER TO FILE 407.5 "KRN",8994,5830,2,19,0) SDPREAPTLET ^1^30^0^18 "KRN",8994,5830,2,19,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,19,1,1,0) PRE-APPOINTMENT LETTER "KRN",8994,5830,2,19,1,2,0) POINTER TO FILE 407.5 "KRN",8994,5830,2,20,0) SDCANLET ^1^30^0^19 "KRN",8994,5830,2,20,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,20,1,1,0) CLINIC CANCELLATION LETTER "KRN",8994,5830,2,20,1,2,0) POINTER TO FILE 407.5 "KRN",8994,5830,2,21,0) SDAPTCANLET ^1^30^0^20 "KRN",8994,5830,2,21,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,21,1,1,0) APPT. CANCELLATION LETTER "KRN",8994,5830,2,21,1,2,0) POINTER TO FILE 407.5 "KRN",8994,5830,2,22,0) SDINOUTTIME ^1^30^0^21 "KRN",8994,5830,2,22,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,22,1,1,0) ASK FOR CHECK IN/OUT TIME "KRN",8994,5830,2,22,1,2,0) YES / NO "KRN",8994,5830,2,23,0) SDPROVIDER ^1^30^0^22 "KRN",8994,5830,2,23,1,0) ^^5^5^3211228^ "KRN",8994,5830,2,23,1,1,0) A LIST OF PROVIDERS TO BE LINKED TO THE CLINIC. POINTER TO FILE 200 "KRN",8994,5830,2,23,1,2,0) SUB DELIMITED FIELD. Provider|Special Action^Provider|Special Action "KRN",8994,5830,2,23,1,3,0) Provider - IEN or Name from file 200 "KRN",8994,5830,2,23,1,4,0) Special Action - D (set this provider as the default) "KRN",8994,5830,2,23,1,5,0) There can only be 1 default provider "KRN",8994,5830,2,24,0) SDPRACTIONER ^1^30^0^23 "KRN",8994,5830,2,24,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,24,1,1,0) DEFAULT TO PC PRACTITIONER "KRN",8994,5830,2,24,1,2,0) YES / NO "KRN",8994,5830,2,25,0) SDDIAG ^1^30^0^24 "KRN",8994,5830,2,25,1,0) ^^5^5^3211228^ "KRN",8994,5830,2,25,1,1,0) A LIST OF DIAGNOSIS LINKED TO THE CLINIC. POINTER TO FILE 80 "KRN",8994,5830,2,25,1,2,0) Sub delimited field. Diagnosis|Special Action^Diagnosis|Special Action "KRN",8994,5830,2,25,1,3,0) Diagnosis - IEN or Name "KRN",8994,5830,2,25,1,4,0) Special Action - D (set this provider as the default) "KRN",8994,5830,2,25,1,5,0) There can only be 1 default diagnosis "KRN",8994,5830,2,26,0) SDWORKLOAD ^1^30^0^25 "KRN",8994,5830,2,26,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,26,1,1,0) WORKLOAD VALIDATION AT CHK OUT "KRN",8994,5830,2,26,1,2,0) YES / NO "KRN",8994,5830,2,27,0) SDALLOWNOSHW ^1^30^1^26 "KRN",8994,5830,2,27,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,27,1,1,0) ALLOWABLE CONSECUTIVE NO-SHOWS "KRN",8994,5830,2,27,1,2,0) NUMBER 0-999 "KRN",8994,5830,2,28,0) SDMACFUTBOOK ^1^30^1^27 "KRN",8994,5830,2,28,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,28,1,1,0) MAX # DAYS FOR FUTURE BOOKING "KRN",8994,5830,2,28,1,2,0) NUMBER 11-999 "KRN",8994,5830,2,29,0) SDSCHEDHOLIDAY ^1^30^0^28 "KRN",8994,5830,2,29,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,29,1,1,0) SCHEDULE ON HOLIDAYS (Default=N) "KRN",8994,5830,2,29,1,2,0) YES / NO "KRN",8994,5830,2,30,0) SDCREDITSTOP ^1^30^0^29 "KRN",8994,5830,2,30,1,0) ^^2^2^3211001^ "KRN",8994,5830,2,30,1,1,0) CREDIT STOP CODE "KRN",8994,5830,2,30,1,2,0) POINTER TO FILE 40.7 "KRN",8994,5830,2,31,0) SDNOACCESS ^1^30^0^30 "KRN",8994,5830,2,31,1,0) ^^3^3^3211228^ "KRN",8994,5830,2,31,1,1,0) PROHIBIT ACCESS TO CLINIC (Default=N) "KRN",8994,5830,2,31,1,2,0) YES / NO. DELIMITED IF SET TO YES. Y|Privileged User|Privileged User "KRN",8994,5830,2,31,1,3,0) Privileged User - IEN or Name from file 200 "KRN",8994,5830,2,32,0) SDLOCATION ^1^30^1 "KRN",8994,5830,2,32,1,0) ^8994.021^3^3^3211001^^ "KRN",8994,5830,2,32,1,1,0) PHYSICAL LOCATION "KRN",8994,5830,2,32,1,2,0) FREE TEXT "KRN",8994,5830,2,32,1,3,0) THIS IS SEQUENCE 31 "KRN",8994,5830,2,33,0) SDPRINCLINIC ^1^30^0 "KRN",8994,5830,2,33,1,0) ^^3^3^3211001^ "KRN",8994,5830,2,33,1,1,0) PRINCIPAL CLINIC "KRN",8994,5830,2,33,1,2,0) POINTER TO FILE 44 "KRN",8994,5830,2,33,1,3,0) THIS IS SEQUENCE 32 "KRN",8994,5830,2,34,0) SDOVBDAYMAX ^1^30^1 "KRN",8994,5830,2,34,1,0) ^^3^3^3211001^ "KRN",8994,5830,2,34,1,1,0) OVERBOOKS/DAY MAXIMUM "KRN",8994,5830,2,34,1,2,0) NUMBER 0-9999 "KRN",8994,5830,2,34,1,3,0) SEQUENCE 33 "KRN",8994,5830,2,35,0) SDSPECINSTRU ^1^30^0 "KRN",8994,5830,2,35,1,0) ^^3^3^3211001^ "KRN",8994,5830,2,35,1,1,0) SPECIAL INSTRUCTIONS "KRN",8994,5830,2,35,1,2,0) Delimited field: Special Instruction^Special Instruction "KRN",8994,5830,2,35,1,3,0) SEQUENCE 34 "KRN",8994,5830,2,36,0) SDECHECKIN ^1^30^0 "KRN",8994,5830,2,36,1,0) ^^3^3^3211001^ "KRN",8994,5830,2,36,1,1,0) E-CHECKIN ALLOWED (Default=N) "KRN",8994,5830,2,36,1,2,0) YES / NO "KRN",8994,5830,2,36,1,3,0) SEQUENCE 35 "KRN",8994,5830,2,37,0) SDPRECHECKIN^1^30^0 "KRN",8994,5830,2,37,1,0) ^8994.021^3^3^3211005^^ "KRN",8994,5830,2,37,1,1,0) PRE-CHECKIN ALLOWED (Default=N) "KRN",8994,5830,2,37,1,2,0) YES / NO "KRN",8994,5830,2,37,1,3,0) SEQUENCE 36 "KRN",8994,5830,2,38,0) SDLENGTHOFAPT ^1^30^1 "KRN",8994,5830,2,38,1,0) ^^3^3^3211001^ "KRN",8994,5830,2,38,1,1,0) LENGTH OF APP'T "KRN",8994,5830,2,38,1,2,0) NUMBER 0-240 "KRN",8994,5830,2,38,1,3,0) SDEQUNCE 37 "KRN",8994,5830,2,39,0) SDVARAPTLNG ^1^30^0 "KRN",8994,5830,2,39,1,0) ^^3^3^3211001^ "KRN",8994,5830,2,39,1,1,0) VARIABLE APP'NTMENT LENGTH (Default=N) "KRN",8994,5830,2,39,1,2,0) YES / NO "KRN",8994,5830,2,39,1,3,0) SEQUENCE 38 "KRN",8994,5830,2,40,0) SDINCPERHR^1^30^1 "KRN",8994,5830,2,40,1,0) ^^8^8^3220103^ "KRN",8994,5830,2,40,1,1,0) DISPLAY INCREMENTS PER HOUR (Default=4) "KRN",8994,5830,2,40,1,2,0) SET OF CODES "KRN",8994,5830,2,40,1,3,0) 1 60-MIN "KRN",8994,5830,2,40,1,4,0) 2 30-MIN "KRN",8994,5830,2,40,1,5,0) 4 15-MIN "KRN",8994,5830,2,40,1,6,0) 3 20-MIN "KRN",8994,5830,2,40,1,7,0) 6 10-MIN "KRN",8994,5830,2,40,1,8,0) SEQUENCE 39 "KRN",8994,5830,2,41,0) SDSTARTHR^1^30^0 "KRN",8994,5830,2,41,1,0) ^8994.021^3^3^3211217^^ "KRN",8994,5830,2,41,1,1,0) HOUR CLINIC DISPLAY BEGINS (Default=8) "KRN",8994,5830,2,41,1,2,0) NUMBER 0-16 Ex: 13 means 1 PM "KRN",8994,5830,2,41,1,3,0) SEQUENCE 40 "KRN",8994,5830,2,42,0) EASTRCKNGNMBR^1^40^0 "KRN",8994,5830,2,42,1,0) ^8994.021^2^2^3220106^^^ "KRN",8994,5830,2,42,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5830,2,42,1,2,0) appointment. "KRN",8994,5830,2,"B","EASTRCKNGNMBR",42) "KRN",8994,5830,2,"B","SDABR ",4) "KRN",8994,5830,2,"B","SDALLOWNOSHW ",27) "KRN",8994,5830,2,"B","SDAPPTTYP ",13) "KRN",8994,5830,2,"B","SDAPTCANLET ",21) "KRN",8994,5830,2,"B","SDCANLET ",20) "KRN",8994,5830,2,"B","SDCREDITSTOP ",30) "KRN",8994,5830,2,"B","SDDIAG ",25) "KRN",8994,5830,2,"B","SDDISPAPPT ",8) "KRN",8994,5830,2,"B","SDDIVSION ",11) "KRN",8994,5830,2,"B","SDECHECKIN ",36) "KRN",8994,5830,2,"B","SDINCPERHR",40) "KRN",8994,5830,2,"B","SDINOUTTIME ",22) "KRN",8994,5830,2,"B","SDINPATMED ",14) "KRN",8994,5830,2,"B","SDLENGTHOFAPT ",38) "KRN",8994,5830,2,"B","SDLOCATION ",32) "KRN",8994,5830,2,"B","SDMACFUTBOOK ",28) "KRN",8994,5830,2,"B","SDMEETATFAC ",6) "KRN",8994,5830,2,"B","SDNAME",3) "KRN",8994,5830,2,"B","SDNOACCESS ",31) "KRN",8994,5830,2,"B","SDNONCOUNT ",10) "KRN",8994,5830,2,"B","SDNOSHOWLET ",18) "KRN",8994,5830,2,"B","SDOVBDAYMAX ",34) "KRN",8994,5830,2,"B","SDPATNAME ",5) "KRN",8994,5830,2,"B","SDPATSCHED ",7) "KRN",8994,5830,2,"B","SDPHONE ",15) "KRN",8994,5830,2,"B","SDPRACTIONER ",24) "KRN",8994,5830,2,"B","SDPREAPTLET ",19) "KRN",8994,5830,2,"B","SDPRECHECKIN",37) "KRN",8994,5830,2,"B","SDPRINCLINIC ",33) "KRN",8994,5830,2,"B","SDPROVIDER ",23) "KRN",8994,5830,2,"B","SDREQPROFILE",17) "KRN",8994,5830,2,"B","SDREQXRAY ",16) "KRN",8994,5830,2,"B","SDSCHEDHOLIDAY ",29) "KRN",8994,5830,2,"B","SDSERVICE ",9) "KRN",8994,5830,2,"B","SDSPECINSTRU ",35) "KRN",8994,5830,2,"B","SDSTARTHR",41) "KRN",8994,5830,2,"B","SDSTOPCODE ",12) "KRN",8994,5830,2,"B","SDVARAPTLNG ",39) "KRN",8994,5830,2,"B","SDWORKLOAD ",26) "KRN",8994,5830,2,"PARAMSEQ",2,3) "KRN",8994,5830,2,"PARAMSEQ",3,4) "KRN",8994,5830,2,"PARAMSEQ",4,5) "KRN",8994,5830,2,"PARAMSEQ",5,6) "KRN",8994,5830,2,"PARAMSEQ",6,7) "KRN",8994,5830,2,"PARAMSEQ",7,8) "KRN",8994,5830,2,"PARAMSEQ",8,9) "KRN",8994,5830,2,"PARAMSEQ",9,10) "KRN",8994,5830,2,"PARAMSEQ",10,11) "KRN",8994,5830,2,"PARAMSEQ",11,12) "KRN",8994,5830,2,"PARAMSEQ",12,13) "KRN",8994,5830,2,"PARAMSEQ",13,14) "KRN",8994,5830,2,"PARAMSEQ",14,15) "KRN",8994,5830,2,"PARAMSEQ",15,16) "KRN",8994,5830,2,"PARAMSEQ",16,17) "KRN",8994,5830,2,"PARAMSEQ",17,18) "KRN",8994,5830,2,"PARAMSEQ",18,19) "KRN",8994,5830,2,"PARAMSEQ",19,20) "KRN",8994,5830,2,"PARAMSEQ",20,21) "KRN",8994,5830,2,"PARAMSEQ",21,22) "KRN",8994,5830,2,"PARAMSEQ",22,23) "KRN",8994,5830,2,"PARAMSEQ",23,24) "KRN",8994,5830,2,"PARAMSEQ",24,25) "KRN",8994,5830,2,"PARAMSEQ",25,26) "KRN",8994,5830,2,"PARAMSEQ",26,27) "KRN",8994,5830,2,"PARAMSEQ",27,28) "KRN",8994,5830,2,"PARAMSEQ",28,29) "KRN",8994,5830,2,"PARAMSEQ",29,30) "KRN",8994,5830,2,"PARAMSEQ",30,31) "KRN",8994,5830,3,0) ^8994.03^2^2^3220106^^ "KRN",8994,5830,3,1,0) DATA IS RETURNED JSON FORMAT. IF SUCCESSFUL THE NEW IEN WILL BE "KRN",8994,5830,3,2,0) RETURNED. OTHERWISE ERROR MESSAGES WILL BE RETURNED. "KRN",8994,5831,-1) 0^6 "KRN",8994,5831,0) SDES EDIT CLINIC^CLINICEDIT^SDES^2^R^^^^^^1 "KRN",8994,5831,1,0) ^8994.01^2^2^3220103^^^^ "KRN",8994,5831,1,1,0) THIS RPC IS USED TO EDIT AND EXISTING CLINIC TO THE HOSPITAL LOCATION FILE "KRN",8994,5831,1,2,0) #44. "KRN",8994,5831,2,0) ^8994.02A^42^41 "KRN",8994,5831,2,1,0) SDIEN^1^30^1^1 "KRN",8994,5831,2,1,1,0) ^^1^1^3211005^ "KRN",8994,5831,2,1,1,1,0) IEN OF THE CLINIC TO BE CREATED IN FILE 44 "KRN",8994,5831,2,2,0) SDNAME^1^30^0^2 "KRN",8994,5831,2,2,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,2,1,1,0) CLINIC NAME "KRN",8994,5831,2,2,1,2,0) FREE TEXT "KRN",8994,5831,2,3,0) SDABR ^1^30^0^3 "KRN",8994,5831,2,3,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,3,1,1,0) ABBREVATION "KRN",8994,5831,2,3,1,2,0) FREE TEXT "KRN",8994,5831,2,4,0) SDPATNAME ^1^30^0^4 "KRN",8994,5831,2,4,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,4,1,1,0) PATIENT FRIENDLY NAME "KRN",8994,5831,2,4,1,2,0) FREE TEXT "KRN",8994,5831,2,5,0) SDMEETATFAC ^1^30^0^5 "KRN",8994,5831,2,5,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,5,1,1,0) CLINIC MEETS AT THIS FACILITY? (Default = Y) "KRN",8994,5831,2,5,1,2,0) YES / NO "KRN",8994,5831,2,7,0) SDPATSCHED^1^30^0^6 "KRN",8994,5831,2,7,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,7,1,1,0) ALLOW DIRECT PATIENT SCHEDULING "KRN",8994,5831,2,7,1,2,0) YES / NO "KRN",8994,5831,2,8,0) SDDISPAPPT ^1^30^0^7 "KRN",8994,5831,2,8,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,8,1,1,0) DISPLAY CLIN APPT TO PATIENTS "KRN",8994,5831,2,8,1,2,0) YES / NO "KRN",8994,5831,2,9,0) SDSERVICE ^1^30^0^8 "KRN",8994,5831,2,9,1,0) ^^8^8^3211005^ "KRN",8994,5831,2,9,1,1,0) SERVICE "KRN",8994,5831,2,9,1,2,0) SET OF CODES "KRN",8994,5831,2,9,1,3,0) M MEDICINE "KRN",8994,5831,2,9,1,4,0) S SURGERY "KRN",8994,5831,2,9,1,5,0) P PSYCHIATRY "KRN",8994,5831,2,9,1,6,0) R REHAB MEDICINE "KRN",8994,5831,2,9,1,7,0) N NEUROLOGY "KRN",8994,5831,2,9,1,8,0) 0 NONE "KRN",8994,5831,2,10,0) SDNONCOUNT ^1^30^0^9 "KRN",8994,5831,2,10,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,10,1,1,0) NON-COUNT CLINIC "KRN",8994,5831,2,10,1,2,0) YES / NO "KRN",8994,5831,2,11,0) SDDIVSION ^1^30^0^10 "KRN",8994,5831,2,11,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,11,1,1,0) DIVISION "KRN",8994,5831,2,11,1,2,0) POINTE TO FILE 40.8 "KRN",8994,5831,2,12,0) SDSTOPCODE ^1^30^0^11 "KRN",8994,5831,2,12,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,12,1,1,0) STOP CODE NUMBER "KRN",8994,5831,2,12,1,2,0) POINTER TO FILE 40.7 "KRN",8994,5831,2,13,0) SDAPPTTYP ^1^30^0^12 "KRN",8994,5831,2,13,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,13,1,1,0) DEFAULT APPOINTMENT TYPE (Default = REGULAR) "KRN",8994,5831,2,13,1,2,0) POINTER TO FILE 409.1 "KRN",8994,5831,2,14,0) SDINPATMED ^1^30^0^13 "KRN",8994,5831,2,14,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,14,1,1,0) ADMINISTER INPATIENT MEDS "KRN",8994,5831,2,14,1,2,0) YES / NO "KRN",8994,5831,2,15,0) SDPHONE ^1^30^0^14 "KRN",8994,5831,2,15,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,15,1,1,0) TELEPHONE "KRN",8994,5831,2,15,1,2,0) FREE TEXT "KRN",8994,5831,2,16,0) SDREQXRAY ^1^30^0^15 "KRN",8994,5831,2,16,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,16,1,1,0) REQUIRE X-RAY FILMS "KRN",8994,5831,2,16,1,2,0) YES / NO "KRN",8994,5831,2,17,0) SDREQPROFILE^1^30^0^16 "KRN",8994,5831,2,17,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,17,1,1,0) REQUIRE ACTION PROFILES (Default=Y) "KRN",8994,5831,2,17,1,2,0) YES / NO "KRN",8994,5831,2,18,0) SDNOSHOWLET ^1^30^0^17 "KRN",8994,5831,2,18,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,18,1,1,0) NO SHOW LETTER "KRN",8994,5831,2,18,1,2,0) POINTER TO FILE 407.5 "KRN",8994,5831,2,19,0) SDPREAPTLET ^1^30^0^18 "KRN",8994,5831,2,19,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,19,1,1,0) PRE-APPOINTMENT LETTER "KRN",8994,5831,2,19,1,2,0) POINTER TO FILE 407.5 "KRN",8994,5831,2,20,0) SDCANLET ^1^30^0^19 "KRN",8994,5831,2,20,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,20,1,1,0) CLINIC CANCELLATION LETTER "KRN",8994,5831,2,20,1,2,0) POINTER TO FILE 407.5 "KRN",8994,5831,2,21,0) SDAPTCANLET ^1^30^0^20 "KRN",8994,5831,2,21,1,0) ^8994.021^2^2^3211005^^ "KRN",8994,5831,2,21,1,1,0) APPT. CANCELLATION LETTER "KRN",8994,5831,2,21,1,2,0) POINTER TO FILE 407.5 "KRN",8994,5831,2,22,0) SDINOUTTIME ^1^30^0^21 "KRN",8994,5831,2,22,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,22,1,1,0) ASK FOR CHECK IN/OUT TIME "KRN",8994,5831,2,22,1,2,0) YES / NO "KRN",8994,5831,2,23,0) SDPROVIDER ^1^30^0^22 "KRN",8994,5831,2,23,1,0) ^8994.021^5^5^3220103^^ "KRN",8994,5831,2,23,1,1,0) A LIST OF PROVIDERS TO BE LINKED TO THE CLINIC. POINTER TO FILE 200 "KRN",8994,5831,2,23,1,2,0) SUB DELIMITED FIELD. Provider|Special Action;Provider|Special Action "KRN",8994,5831,2,23,1,3,0) Provider - IEN or Name from file 200 "KRN",8994,5831,2,23,1,4,0) Special Action - D (set this provider as the default) "KRN",8994,5831,2,23,1,5,0) There can only be 1 default provider "KRN",8994,5831,2,24,0) SDPRACTIONER ^1^30^0^23 "KRN",8994,5831,2,24,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,24,1,1,0) DEFAULT TO PC PRACTITIONER "KRN",8994,5831,2,24,1,2,0) YES / NO "KRN",8994,5831,2,25,0) SDDIAG ^1^30^0^24 "KRN",8994,5831,2,25,1,0) ^^5^5^3211005^ "KRN",8994,5831,2,25,1,1,0) A LIST OF DIAGNOSIS LINKED TO THE CLINIC. POINTER TO FILE 80 "KRN",8994,5831,2,25,1,2,0) Sub delimited field. Diagnosis|Special Action;Diagnosis|Special Action "KRN",8994,5831,2,25,1,3,0) Diagnosis - IEN or Name "KRN",8994,5831,2,25,1,4,0) Special Action - D (set this provider as the default) "KRN",8994,5831,2,25,1,5,0) There can only be 1 default diagnosis. "KRN",8994,5831,2,26,0) SDWORKLOAD ^1^30^0^25 "KRN",8994,5831,2,26,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,26,1,1,0) WORKLOAD VALIDATION AT CHK OUT "KRN",8994,5831,2,26,1,2,0) YES / NO "KRN",8994,5831,2,27,0) SDALLOWNOSHW ^1^30^1^26 "KRN",8994,5831,2,27,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,27,1,1,0) ALLOWABLE CONSECUTIVE NO-SHOWS "KRN",8994,5831,2,27,1,2,0) NUMBER 0-999 "KRN",8994,5831,2,28,0) SDMACFUTBOOK ^1^30^0^27 "KRN",8994,5831,2,28,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,28,1,1,0) MAX # DAYS FOR FUTURE BOOKING "KRN",8994,5831,2,28,1,2,0) NUMBER 11-999 "KRN",8994,5831,2,29,0) SDSCHEDHOLIDAY ^1^30^0^28 "KRN",8994,5831,2,29,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,29,1,1,0) SCHEDULE ON HOLIDAYS (Default=N) "KRN",8994,5831,2,29,1,2,0) YES / NO "KRN",8994,5831,2,30,0) SDCREDITSTOP ^1^30^0^29 "KRN",8994,5831,2,30,1,0) ^^2^2^3211005^ "KRN",8994,5831,2,30,1,1,0) CREDIT STOP CODE "KRN",8994,5831,2,30,1,2,0) POINTER TO FILE 40.7 "KRN",8994,5831,2,31,0) SDNOACCESS ^1^30^0^30 "KRN",8994,5831,2,31,1,0) ^8994.021^5^5^3220103^^ "KRN",8994,5831,2,31,1,1,0) PROHIBIT ACCESS TO CLINIC (Default=N) "KRN",8994,5831,2,31,1,2,0) YES / NO. DELIMITED IF SET TO YES. Y;Privileged User;Privileged|Action "KRN",8994,5831,2,31,1,3,0) "KRN",8994,5831,2,31,1,4,0) Action - @ meand remove the user "KRN",8994,5831,2,31,1,5,0) Privileged User - IEN or Name from file 200 "KRN",8994,5831,2,32,0) SDLOCATION ^1^30^0 "KRN",8994,5831,2,32,1,0) ^^3^3^3211005^ "KRN",8994,5831,2,32,1,1,0) PHYSICAL LOCATION "KRN",8994,5831,2,32,1,2,0) FREE TEXT "KRN",8994,5831,2,32,1,3,0) SEQUENCE 31 "KRN",8994,5831,2,33,0) SDPRINCLINIC ^1^30^0 "KRN",8994,5831,2,33,1,0) ^^3^3^3211005^ "KRN",8994,5831,2,33,1,1,0) PRINCIPAL Clinic "KRN",8994,5831,2,33,1,2,0) POINTER TO FILE 44 "KRN",8994,5831,2,33,1,3,0) SEQUENCE 32 "KRN",8994,5831,2,34,0) SDOVBDAYMAX ^1^30^0 "KRN",8994,5831,2,34,1,0) ^^3^3^3211005^ "KRN",8994,5831,2,34,1,1,0) OVERBOOKS/DAY MAXIMUM "KRN",8994,5831,2,34,1,2,0) NUMBER 0-9999 "KRN",8994,5831,2,34,1,3,0) SEQUENCE 33 "KRN",8994,5831,2,35,0) SDSPECINSTRU ^1^30^0 "KRN",8994,5831,2,35,1,0) ^^3^3^3211005^ "KRN",8994,5831,2,35,1,1,0) SPECIAL INSTRUCTIONS "KRN",8994,5831,2,35,1,2,0) Delimited field: Special Instruction;Special Instruction "KRN",8994,5831,2,35,1,3,0) SEQUENCE 34 "KRN",8994,5831,2,36,0) SDECHECKIN ^1^30^0 "KRN",8994,5831,2,36,1,0) ^^3^3^3211005^ "KRN",8994,5831,2,36,1,1,0) E-CHECKIN ALLOWED (Default=N) "KRN",8994,5831,2,36,1,2,0) YES / NO "KRN",8994,5831,2,36,1,3,0) SEQUENCE 35 "KRN",8994,5831,2,37,0) SDPRECHECKIN^1^30^0 "KRN",8994,5831,2,37,1,0) ^^3^3^3211005^ "KRN",8994,5831,2,37,1,1,0) PRE-CHECKIN ALLOWED (Default=N) "KRN",8994,5831,2,37,1,2,0) YES / NO "KRN",8994,5831,2,37,1,3,0) SEQUENCE 36 "KRN",8994,5831,2,38,0) SDLENGTHOFAPT ^1^30^0 "KRN",8994,5831,2,38,1,0) ^^3^3^3211005^ "KRN",8994,5831,2,38,1,1,0) LENGTH OF APP'T "KRN",8994,5831,2,38,1,2,0) NUMBER 0-240 "KRN",8994,5831,2,38,1,3,0) SEQUNCE 37 "KRN",8994,5831,2,39,0) SDVARAPTLNG ^1^30^0 "KRN",8994,5831,2,39,1,0) ^^3^3^3211005^ "KRN",8994,5831,2,39,1,1,0) VARIABLE APP'NTMENT LENGTH (Default=N) "KRN",8994,5831,2,39,1,2,0) YES / NO "KRN",8994,5831,2,39,1,3,0) SEQUENCE 38 "KRN",8994,5831,2,40,0) SDINCPERHR^1^30^0 "KRN",8994,5831,2,40,1,0) ^^8^8^3220103^ "KRN",8994,5831,2,40,1,1,0) DISPLAY INCREMENTS PER HOUR (Default=4) "KRN",8994,5831,2,40,1,2,0) SET OF CODES "KRN",8994,5831,2,40,1,3,0) 1 60-MIN "KRN",8994,5831,2,40,1,4,0) 2 30-MIN "KRN",8994,5831,2,40,1,5,0) 4 15-MIN "KRN",8994,5831,2,40,1,6,0) 3 20-MIN "KRN",8994,5831,2,40,1,7,0) 6 10-MIN "KRN",8994,5831,2,40,1,8,0) SEQUENCE 39 "KRN",8994,5831,2,41,0) SDSTARTHR^1^30^0 "KRN",8994,5831,2,41,1,0) ^^3^3^3211005^ "KRN",8994,5831,2,41,1,1,0) HOUR CLINIC DISPLAY BEGINS (Default=8) "KRN",8994,5831,2,41,1,2,0) NUMBER 0-16 Ex: 13 means 1 PM "KRN",8994,5831,2,41,1,3,0) SEQUENCE 40 "KRN",8994,5831,2,42,0) EASTRCKNGNMBR^1^40^0 "KRN",8994,5831,2,42,1,0) ^8994.021^2^2^3220106^^ "KRN",8994,5831,2,42,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5831,2,42,1,2,0) appointment. "KRN",8994,5831,2,"B","EASTRCKNGNMBR",42) "KRN",8994,5831,2,"B","SDABR ",3) "KRN",8994,5831,2,"B","SDALLOWNOSHW ",27) "KRN",8994,5831,2,"B","SDAPPTTYP ",13) "KRN",8994,5831,2,"B","SDAPTCANLET ",21) "KRN",8994,5831,2,"B","SDCANLET ",20) "KRN",8994,5831,2,"B","SDCREDITSTOP ",30) "KRN",8994,5831,2,"B","SDDIAG ",25) "KRN",8994,5831,2,"B","SDDISPAPPT ",8) "KRN",8994,5831,2,"B","SDDIVSION ",11) "KRN",8994,5831,2,"B","SDECHECKIN ",36) "KRN",8994,5831,2,"B","SDIEN",1) "KRN",8994,5831,2,"B","SDINCPERHR",40) "KRN",8994,5831,2,"B","SDINOUTTIME ",22) "KRN",8994,5831,2,"B","SDINPATMED ",14) "KRN",8994,5831,2,"B","SDLENGTHOFAPT ",38) "KRN",8994,5831,2,"B","SDLOCATION ",32) "KRN",8994,5831,2,"B","SDMACFUTBOOK ",28) "KRN",8994,5831,2,"B","SDMEETATFAC ",5) "KRN",8994,5831,2,"B","SDNAME",2) "KRN",8994,5831,2,"B","SDNOACCESS ",31) "KRN",8994,5831,2,"B","SDNONCOUNT ",10) "KRN",8994,5831,2,"B","SDNOSHOWLET ",18) "KRN",8994,5831,2,"B","SDOVBDAYMAX ",34) "KRN",8994,5831,2,"B","SDPATNAME ",4) "KRN",8994,5831,2,"B","SDPATSCHED",7) "KRN",8994,5831,2,"B","SDPHONE ",15) "KRN",8994,5831,2,"B","SDPRACTIONER ",24) "KRN",8994,5831,2,"B","SDPREAPTLET ",19) "KRN",8994,5831,2,"B","SDPRECHECKIN",37) "KRN",8994,5831,2,"B","SDPRINCLINIC ",33) "KRN",8994,5831,2,"B","SDPROVIDER ",23) "KRN",8994,5831,2,"B","SDREQPROFILE",17) "KRN",8994,5831,2,"B","SDREQXRAY ",16) "KRN",8994,5831,2,"B","SDSCHEDHOLIDAY ",29) "KRN",8994,5831,2,"B","SDSERVICE ",9) "KRN",8994,5831,2,"B","SDSPECINSTRU ",35) "KRN",8994,5831,2,"B","SDSTARTHR",41) "KRN",8994,5831,2,"B","SDSTOPCODE ",12) "KRN",8994,5831,2,"B","SDVARAPTLNG ",39) "KRN",8994,5831,2,"B","SDWORKLOAD ",26) "KRN",8994,5831,2,"PARAMSEQ",1,1) "KRN",8994,5831,2,"PARAMSEQ",2,2) "KRN",8994,5831,2,"PARAMSEQ",3,3) "KRN",8994,5831,2,"PARAMSEQ",4,4) "KRN",8994,5831,2,"PARAMSEQ",5,5) "KRN",8994,5831,2,"PARAMSEQ",6,7) "KRN",8994,5831,2,"PARAMSEQ",7,8) "KRN",8994,5831,2,"PARAMSEQ",8,9) "KRN",8994,5831,2,"PARAMSEQ",9,10) "KRN",8994,5831,2,"PARAMSEQ",10,11) "KRN",8994,5831,2,"PARAMSEQ",11,12) "KRN",8994,5831,2,"PARAMSEQ",12,13) "KRN",8994,5831,2,"PARAMSEQ",13,14) "KRN",8994,5831,2,"PARAMSEQ",14,15) "KRN",8994,5831,2,"PARAMSEQ",15,16) "KRN",8994,5831,2,"PARAMSEQ",16,17) "KRN",8994,5831,2,"PARAMSEQ",17,18) "KRN",8994,5831,2,"PARAMSEQ",18,19) "KRN",8994,5831,2,"PARAMSEQ",19,20) "KRN",8994,5831,2,"PARAMSEQ",20,21) "KRN",8994,5831,2,"PARAMSEQ",21,22) "KRN",8994,5831,2,"PARAMSEQ",22,23) "KRN",8994,5831,2,"PARAMSEQ",23,24) "KRN",8994,5831,2,"PARAMSEQ",24,25) "KRN",8994,5831,2,"PARAMSEQ",25,26) "KRN",8994,5831,2,"PARAMSEQ",26,27) "KRN",8994,5831,2,"PARAMSEQ",27,28) "KRN",8994,5831,2,"PARAMSEQ",28,29) "KRN",8994,5831,2,"PARAMSEQ",29,30) "KRN",8994,5831,2,"PARAMSEQ",30,31) "KRN",8994,5831,3,0) ^8994.03^2^2^3220106^^^^ "KRN",8994,5831,3,1,0) DATA IS RETURNED JSON FORMAT. IF SUCCESSFUL THE IEN OF THE CLINIC WILL "KRN",8994,5831,3,2,0) BE RETURNED. OTHERWISE ERROR MESSAGES WILL BE RETURNED. "KRN",8994,5849,-1) 0^17 "KRN",8994,5849,0) SDES GET CLIN AVAILABILITY^GETCLNAVAILABLTY^SDES^2^R^^^^^^1 "KRN",8994,5849,1,0) ^8994.01^2^2^3220113^^^^ "KRN",8994,5849,1,1,0) This RPC returns available appointment slots within a given timeframe for "KRN",8994,5849,1,2,0) a given clinic in JSON format. "KRN",8994,5849,2,0) ^8994.02A^6^4 "KRN",8994,5849,2,1,0) CLINICIEN^1^30^1^1 "KRN",8994,5849,2,1,1,0) ^^1^1^3211007^ "KRN",8994,5849,2,1,1,1,0) The Internal Entry Number (IEN) from HOSPITAL LOCATION FILE #44. "KRN",8994,5849,2,4,0) FROMDATE^1^10^1^2 "KRN",8994,5849,2,4,1,0) ^^1^1^3220121^ "KRN",8994,5849,2,4,1,1,0) The beginning date to search from. This date cannot be in the past. "KRN",8994,5849,2,5,0) TODATE^1^10^1^3 "KRN",8994,5849,2,5,1,0) ^^2^2^3220121^ "KRN",8994,5849,2,5,1,1,0) This is the end date to search to. This date cannot be prior to the "KRN",8994,5849,2,5,1,2,0) beginning date. "KRN",8994,5849,2,6,0) EASTRCKNGNMBR^1^40^0^4 "KRN",8994,5849,2,6,1,0) ^^2^2^3220113^ "KRN",8994,5849,2,6,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5849,2,6,1,2,0) appointment. "KRN",8994,5849,2,"B","CLINICIEN",1) "KRN",8994,5849,2,"B","EASTRCKNGNMBR",6) "KRN",8994,5849,2,"B","FROMDATE",4) "KRN",8994,5849,2,"B","TODATE",5) "KRN",8994,5849,2,"PARAMSEQ",1,1) "KRN",8994,5849,2,"PARAMSEQ",2,4) "KRN",8994,5849,2,"PARAMSEQ",3,5) "KRN",8994,5849,2,"PARAMSEQ",4,6) "KRN",8994,5849,3,0) ^8994.03^16^16^3220113^^^^ "KRN",8994,5849,3,1,0) Data is returned in JSON format. "KRN",8994,5849,3,2,0) If successful, the following data will be returned: "KRN",8994,5849,3,3,0) ^p1 SLOT START DATE (in FileMan format) "KRN",8994,5849,3,4,0) ^p2 SLOT START TIME "KRN",8994,5849,3,5,0) ^p3 SLOT END TIME "KRN",8994,5849,3,6,0) ^p4 AVAILABILITY CODE "KRN",8994,5849,3,7,0) NULL Not Available/Overbooked "KRN",8994,5849,3,8,0) 1,2,.. # of Available Slots "KRN",8994,5849,3,9,0) X Cancelled "KRN",8994,5849,3,10,0) "KRN",8994,5849,3,11,0) If problems are encountered, then the following data will be returned: "KRN",8994,5849,3,12,0) "KRN",8994,5849,3,13,0) RETURN("Error",n)=Error_Message "KRN",8994,5849,3,14,0) "KRN",8994,5849,3,15,0) where: "KRN",8994,5849,3,16,0) n = 1,2,... "KRN",8994,5850,-1) 0^3 "KRN",8994,5850,0) SDES CREATE CLIN AVAILABILITY^SETCLINAVAIL^SDES^2^^^^^^^1 "KRN",8994,5850,1,0) ^8994.01^1^1^3211228^^^^ "KRN",8994,5850,1,1,0) Set the clinic availability. "KRN",8994,5850,2,0) ^8994.02A^5^5 "KRN",8994,5850,2,1,0) SDCLINIC^1^30^1^1 "KRN",8994,5850,2,1,1,0) ^^1^1^3211022^ "KRN",8994,5850,2,1,1,1,0) CLINIC IEN OR NAME FROM FILE 44 "KRN",8994,5850,2,2,0) DATES^1^100^1^2 "KRN",8994,5850,2,2,1,0) ^8994.021^4^4^3220121^^^^ "KRN",8994,5850,2,2,1,1,0) String of dates in ISO8601 extended format separated by semi-colon "KRN",8994,5850,2,2,1,2,0) (e.g., CCYY-MM-DD;CCYY-MM-DD). Adding 9999999 (7 nines) as the last piece "KRN",8994,5850,2,2,1,3,0) of this string will set the pattern to be indefinite. These dates must "KRN",8994,5850,2,2,1,4,0) all be the same day of the week. "KRN",8994,5850,2,3,0) TIMES^1^50^1^3 "KRN",8994,5850,2,3,1,0) ^8994.021^2^2^3220121^^^^ "KRN",8994,5850,2,3,1,1,0) STRING OF TIME RANGES IN 24 HOUR FORMAT SEPERATED BY A ;. EX: "KRN",8994,5850,2,3,1,2,0) 0800-0900;0900-1200;1300-1600 "KRN",8994,5850,2,4,0) SLOTS^1^30^1^4 "KRN",8994,5850,2,4,1,0) ^8994.021^2^2^3211228^^ "KRN",8994,5850,2,4,1,1,0) STING OF NUMBERS REPRESENTING THE NUMBER OF SLOTS PER APPOINTMENT WINDOW "KRN",8994,5850,2,4,1,2,0) SEPERATED BY A ;. THESE NUMBERS CAN RANGE FROM 1 TO 20. "KRN",8994,5850,2,5,0) EASTRCKNGNMBR^1^40^0^5 "KRN",8994,5850,2,5,1,0) ^^2^2^3211228^ "KRN",8994,5850,2,5,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5850,2,5,1,2,0) appointment. "KRN",8994,5850,2,"B","DATES",2) "KRN",8994,5850,2,"B","EASTRCKNGNMBR",5) "KRN",8994,5850,2,"B","SDCLINIC",1) "KRN",8994,5850,2,"B","SLOTS",4) "KRN",8994,5850,2,"B","TIMES",3) "KRN",8994,5850,2,"PARAMSEQ",1,1) "KRN",8994,5850,2,"PARAMSEQ",2,2) "KRN",8994,5850,2,"PARAMSEQ",3,3) "KRN",8994,5850,2,"PARAMSEQ",4,4) "KRN",8994,5850,2,"PARAMSEQ",5,5) "KRN",8994,5850,3,0) ^8994.03^1^1^3220106^^ "KRN",8994,5850,3,1,0) EITHER ERROR MESSAGES OR MESSAGE THE 'PATTERN FILES'. "KRN",8994,5852,-1) 0^2 "KRN",8994,5852,0) SDES CANCEL CLIN AVAILABILITY^CANCLNAVAILABLTY^SDES^2^R^^^^^^1 "KRN",8994,5852,1,0) ^8994.01^1^1^3211228^^^ "KRN",8994,5852,1,1,0) Cancel Clinic Availability. "KRN",8994,5852,2,0) ^8994.02A^6^6 "KRN",8994,5852,2,1,0) CLINICIEN^1^20^1^1 "KRN",8994,5852,2,1,1,0) ^^1^1^3211025^ "KRN",8994,5852,2,1,1,1,0) Clinic IEN "KRN",8994,5852,2,2,0) CANCELDT^1^20^1^2 "KRN",8994,5852,2,2,1,0) ^^1^1^3220121^ "KRN",8994,5852,2,2,1,1,0) Cancel Date in FileMan format. "KRN",8994,5852,2,3,0) STARTTM^1^20^1^3 "KRN",8994,5852,2,3,1,0) ^8994.021^1^1^3220121^^^ "KRN",8994,5852,2,3,1,1,0) Starting Time to Cancel in HHMM format "KRN",8994,5852,2,4,0) ENDTM^1^20^1^4 "KRN",8994,5852,2,4,1,0) ^8994.021^1^1^3220121^^^^ "KRN",8994,5852,2,4,1,1,0) End Time to Cancel in HHMM format "KRN",8994,5852,2,5,0) CANCELRSN^1^50^1^5 "KRN",8994,5852,2,5,1,0) ^^1^1^3211025^ "KRN",8994,5852,2,5,1,1,0) Cancel Reason "KRN",8994,5852,2,6,0) EASTRCKNGNMBR^1^40^0^6 "KRN",8994,5852,2,6,1,0) ^8994.021^2^2^3220121^^^ "KRN",8994,5852,2,6,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5852,2,6,1,2,0) appointment. "KRN",8994,5852,2,"B","CANCELDT",2) "KRN",8994,5852,2,"B","CANCELRSN",5) "KRN",8994,5852,2,"B","CLINICIEN",1) "KRN",8994,5852,2,"B","EASTRCKNGNMBR",6) "KRN",8994,5852,2,"B","ENDTM",4) "KRN",8994,5852,2,"B","STARTTM",3) "KRN",8994,5852,2,"PARAMSEQ",1,1) "KRN",8994,5852,2,"PARAMSEQ",2,2) "KRN",8994,5852,2,"PARAMSEQ",3,3) "KRN",8994,5852,2,"PARAMSEQ",4,4) "KRN",8994,5852,2,"PARAMSEQ",5,5) "KRN",8994,5852,2,"PARAMSEQ",6,6) "KRN",8994,5852,3,0) ^8994.03^1^1^3220106^^^ "KRN",8994,5852,3,1,0) Success or Error message "KRN",8994,5853,-1) 0^31 "KRN",8994,5853,0) SDES CANCEL APPT^CANCELAPPT^SDES^2^R^^^0^^^1 "KRN",8994,5853,1,0) ^8994.01^1^1^3220110^^ "KRN",8994,5853,1,1,0) Cancels a single appointment from the appointment file 409.84 "KRN",8994,5853,2,0) ^8994.02A^5^5 "KRN",8994,5853,2,1,0) APPTIEN^1^30^1^1 "KRN",8994,5853,2,1,1,0) ^^1^1^3211104^ "KRN",8994,5853,2,1,1,1,0) Appointment IEN of the appointment to cancel. "KRN",8994,5853,2,2,0) STATUS^1^30^1^2 "KRN",8994,5853,2,2,1,0) ^8994.021^1^1^3211104^^ "KRN",8994,5853,2,2,1,1,0) Appointment status. "KRN",8994,5853,2,3,0) CANREAS^1^30^1^3 "KRN",8994,5853,2,3,1,0) ^^1^1^3211104^ "KRN",8994,5853,2,3,1,1,0) The cancel reason associated with the cancellation of the appointment. "KRN",8994,5853,2,4,0) USER^1^30^0^4 "KRN",8994,5853,2,4,1,0) ^^1^1^3211104^ "KRN",8994,5853,2,4,1,1,0) The user who cancelled the appointment. "KRN",8994,5853,2,5,0) EAS^1^40^0^5 "KRN",8994,5853,2,5,1,0) ^^2^2^3220110^ "KRN",8994,5853,2,5,1,1,0) The EAS Tracking Number associated with the request to cancel the "KRN",8994,5853,2,5,1,2,0) appointment. "KRN",8994,5853,2,"B","APPTIEN",1) "KRN",8994,5853,2,"B","CANREAS",3) "KRN",8994,5853,2,"B","EAS",5) "KRN",8994,5853,2,"B","STATUS",2) "KRN",8994,5853,2,"B","USER",4) "KRN",8994,5853,2,"PARAMSEQ",1,1) "KRN",8994,5853,2,"PARAMSEQ",2,2) "KRN",8994,5853,2,"PARAMSEQ",3,3) "KRN",8994,5853,2,"PARAMSEQ",4,4) "KRN",8994,5853,2,"PARAMSEQ",5,5) "KRN",8994,5854,-1) 0^24 "KRN",8994,5854,0) SDES GET USRPROFILE^GETUSRDTL^SDES^2^R^^^^^^1 "KRN",8994,5854,1,0) ^8994.01^2^2^3220110^^^ "KRN",8994,5854,1,1,0) SDES RPC to return IEN, user name, scheduling "KRN",8994,5854,1,2,0) options and keys for VSE GUI user. "KRN",8994,5854,2,0) ^8994.02A^2^2 "KRN",8994,5854,2,1,0) SECID^1^20^1^1 "KRN",8994,5854,2,1,1,0) ^^3^3^3220110^ "KRN",8994,5854,2,1,1,1,0) Field 205.1 from the New Person File (#200) "KRN",8994,5854,2,1,1,2,0) Identity and Access Management SECID field used to uniquely identify a "KRN",8994,5854,2,1,1,3,0) VistA user by Security. "KRN",8994,5854,2,2,0) EASTRCKNGNMBR^1^40^0^2 "KRN",8994,5854,2,2,1,0) ^8994.021^2^2^3220110^^^ "KRN",8994,5854,2,2,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5854,2,2,1,2,0) appointment. "KRN",8994,5854,2,"B","EASTRCKNGNMBR",2) "KRN",8994,5854,2,"B","SECID",1) "KRN",8994,5854,2,"PARAMSEQ",1,1) "KRN",8994,5854,2,"PARAMSEQ",2,2) "KRN",8994,5854,3,0) ^^2^2^3220110^ "KRN",8994,5854,3,1,0) Returns Scheduling Options & Keys for the User when given the SECID as "KRN",8994,5854,3,2,0) input "KRN",8994,5865,-1) 0^7 "KRN",8994,5865,0) SDES EDIT CLINIC AVAILABILITY^SETCLINAVAIL^SDES^2^R^^^^^^1 "KRN",8994,5865,1,0) ^8994.01^1^1^3211228^^^ "KRN",8994,5865,1,1,0) CREATE NEW SCHEDULING PATTERN FOR A CLINIC THAT HAS AN EXISTING PATTERN. "KRN",8994,5865,2,0) ^8994.02A^5^5 "KRN",8994,5865,2,1,0) SDCLINIC^1^30^1^1 "KRN",8994,5865,2,1,1,0) ^8994.021^1^1^3211201^^ "KRN",8994,5865,2,1,1,1,0) CLINIC IEN OR NAME FROM FILE 44 "KRN",8994,5865,2,2,0) DATES^1^100^1^2 "KRN",8994,5865,2,2,1,0) ^^3^3^3220121^ "KRN",8994,5865,2,2,1,1,0) STRING OF DATES IN EXTERNAL FILEMAN FORMAT SEPERATED BY A ;. ADDING "KRN",8994,5865,2,2,1,2,0) 9999999 (7 NINES) AS THE LAST PIECE OF THIS STRING WILL SET THE PATTERN TO "KRN",8994,5865,2,2,1,3,0) BE INDEFINITE. THESE DATES MUST ALL BE THE SAME DAY OF THE WEEK. "KRN",8994,5865,2,3,0) TIMES^1^30^1^3 "KRN",8994,5865,2,3,1,0) ^8994.021^2^2^3220121^^^ "KRN",8994,5865,2,3,1,1,0) STRING OF TIME RANGES IN 24 HOUR FORMAT SEPARATED BY A ;. EX: "KRN",8994,5865,2,3,1,2,0) 0800-0900;0900-1200;1300-1600 "KRN",8994,5865,2,4,0) SLOTS^1^30^1^4 "KRN",8994,5865,2,4,1,0) ^8994.021^2^2^3220106^^^ "KRN",8994,5865,2,4,1,1,0) STRING OF NUMBERS REPRESENTING THE NUMBER OF SLOTS PER APPOINTMENT WINDOW "KRN",8994,5865,2,4,1,2,0) SEPARATED BY A ;. THESE NUMBERS CAN RANGE FROM 1 TO 20. "KRN",8994,5865,2,5,0) EASTRCKNGNMBR^1^40^0^5 "KRN",8994,5865,2,5,1,0) ^^2^2^3211228^ "KRN",8994,5865,2,5,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5865,2,5,1,2,0) appointment. "KRN",8994,5865,2,"B","DATES",2) "KRN",8994,5865,2,"B","EASTRCKNGNMBR",5) "KRN",8994,5865,2,"B","SDCLINIC",1) "KRN",8994,5865,2,"B","SLOTS",4) "KRN",8994,5865,2,"B","TIMES",3) "KRN",8994,5865,2,"PARAMSEQ",1,1) "KRN",8994,5865,2,"PARAMSEQ",2,2) "KRN",8994,5865,2,"PARAMSEQ",3,3) "KRN",8994,5865,2,"PARAMSEQ",4,4) "KRN",8994,5865,2,"PARAMSEQ",5,5) "KRN",8994,5865,3,0) ^8994.03^1^1^3220106^^ "KRN",8994,5865,3,1,0) EITHER ERROR MESSAGES OR MESSAGE THE 'PATTERN FILES'. "KRN",8994,5867,-1) 0^22 "KRN",8994,5867,0) SDES GET RECALL BY IEN^RECGETONE^SDES^2^R^0^^0^^^1 "KRN",8994,5867,1,0) ^8994.01^1^1^3220102^^^ "KRN",8994,5867,1,1,0) Returns a single recall based on the IEN that is passed in. "KRN",8994,5867,2,0) ^8994.02A^2^2 "KRN",8994,5867,2,1,0) IEN^1^32000^1^1 "KRN",8994,5867,2,1,1,0) ^^1^1^3211206^ "KRN",8994,5867,2,1,1,1,0) The IEN associated with the recall request. "KRN",8994,5867,2,2,0) EASTRCKNGNMBR^1^40^0^2 "KRN",8994,5867,2,2,1,0) ^8994.021^2^2^3220106^^ "KRN",8994,5867,2,2,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5867,2,2,1,2,0) appointment. "KRN",8994,5867,2,"B","EASTRCKNGNMBR",2) "KRN",8994,5867,2,"B","IEN",1) "KRN",8994,5867,2,"PARAMSEQ",1,1) "KRN",8994,5867,2,"PARAMSEQ",2,2) "KRN",8994,5868,-1) 0^23 "KRN",8994,5868,0) SDES GET RECALLS BY DFN^RECGETLIST^SDES^2^R^0^^0^^^1 "KRN",8994,5868,1,0) ^8994.01^1^1^3220102^^ "KRN",8994,5868,1,1,0) Returns a list of recall requests based on patient DFN. "KRN",8994,5868,2,0) ^8994.02A^2^2 "KRN",8994,5868,2,1,0) DFN^1^32000^1^1 "KRN",8994,5868,2,1,1,0) ^^1^1^3211215^ "KRN",8994,5868,2,1,1,1,0) The DFN associated with the recall requests. "KRN",8994,5868,2,2,0) EASTRCKNGNMBR^1^40^0^2 "KRN",8994,5868,2,2,1,0) ^8994.021^2^2^3220106^^ "KRN",8994,5868,2,2,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number associated to an "KRN",8994,5868,2,2,1,2,0) appointment. "KRN",8994,5868,2,"B","DFN",1) "KRN",8994,5868,2,"B","EASTRCKNGNMBR",2) "KRN",8994,5868,2,"PARAMSEQ",1,1) "KRN",8994,5868,2,"PARAMSEQ",2,2) "KRN",8994,5869,-1) 0^36 "KRN",8994,5869,0) SDES EDIT RECALL REQ^UPDRECALLREQ^SDES^2^R^^^^^^1 "KRN",8994,5869,1,0) ^8994.01^2^2^3220113^^^^ "KRN",8994,5869,1,1,0) UPDATE AN EXISTING ENTRY IN RECALL REMINDERS (#403.5) BASED ON THE IEN "KRN",8994,5869,1,2,0) PASSED IN. "KRN",8994,5869,2,0) ^8994.02A^16^15 "KRN",8994,5869,2,1,0) RECALLIEN^1^30^1^1 "KRN",8994,5869,2,1,1,0) ^8994.021^1^1^3211207^^ "KRN",8994,5869,2,1,1,1,0) IEN pointer to RECALL REMINDERS (#403.5) "KRN",8994,5869,2,2,0) DFN^1^30^1^2 "KRN",8994,5869,2,2,1,0) ^^1^1^3211206^ "KRN",8994,5869,2,2,1,1,0) POINTER TO PATIENT (#2) FILE "KRN",8994,5869,2,3,0) ACCESSION_NUMBER^1^25^0^3 "KRN",8994,5869,2,3,1,0) ^8994.021^1^1^3211208^^^^ "KRN",8994,5869,2,3,1,1,0) ACCESSION # (FREE TEXT) "KRN",8994,5869,2,4,0) COMMENT^1^80^0^4 "KRN",8994,5869,2,4,1,0) ^8994.021^1^1^3211208^^ "KRN",8994,5869,2,4,1,1,0) COMMENT (FREE TEXT) "KRN",8994,5869,2,5,0) FASTING^1^12^1^5 "KRN",8994,5869,2,5,1,0) ^8994.021^4^4^3211209^^ "KRN",8994,5869,2,5,1,1,0) LABS: "KRN",8994,5869,2,5,1,2,0) FASTING "KRN",8994,5869,2,5,1,3,0) NON-FASTING "KRN",8994,5869,2,5,1,4,0) @ - NONE "KRN",8994,5869,2,6,0) APPOINTMENT_TYPE^1^1^1^6 "KRN",8994,5869,2,6,1,0) ^8994.021^5^5^3211209^^^^ "KRN",8994,5869,2,6,1,1,0) TEST/APP POINTER TO RECALL REMINDERS APPT TYPE (#403.51) FILE "KRN",8994,5869,2,6,1,2,0) 1 FOLLOW-UP "KRN",8994,5869,2,6,1,3,0) 4 OTHER "KRN",8994,5869,2,6,1,4,0) 3 SEMI-ANNUAL EXAM "KRN",8994,5869,2,6,1,5,0) 2 YEARLY EXAM "KRN",8994,5869,2,7,0) RECALL_PROVIDER_IEN^1^20^1^7 "KRN",8994,5869,2,7,1,0) ^^1^1^3211209^ "KRN",8994,5869,2,7,1,1,0) RECALL PROVIDER - POINTER TO RECALL REMINDERS PROVIDERS (#403.54) FILE "KRN",8994,5869,2,8,0) CLINIC_IEN^1^20^1^8 "KRN",8994,5869,2,8,1,0) ^8994.021^1^1^3211208^^^^ "KRN",8994,5869,2,8,1,1,0) CLINIC POINTER TO HOSPITAL LOCATION (#44) FILE "KRN",8994,5869,2,9,0) APPOINTMENT_LENGTH^1^10^0^9 "KRN",8994,5869,2,9,1,0) ^^2^2^3211209^ "KRN",8994,5869,2,9,1,1,0) LENGTH OF APPOINTMENT NUMERIC BETWEEN 10 AND 120. IF VALUE SENT IN IS "KRN",8994,5869,2,9,1,2,0) LESS THAN 10 OR GREATER THAN 120 SETS TO NULL. "KRN",8994,5869,2,10,0) RECALL_DATE^1^7^1^10 "KRN",8994,5869,2,10,1,0) ^8994.021^1^1^3220121^^ "KRN",8994,5869,2,10,1,1,0) RECALL DATE IN EXTERNAL FORMAT (NO TIME). "KRN",8994,5869,2,11,0) RECALL_DATE_PER_PATIENT^1^7^0^11 "KRN",8994,5869,2,11,1,0) ^8994.021^2^2^3220121^^ "KRN",8994,5869,2,11,1,1,0) RECALL DATE (PER PATIENT) IN EXTERNAL FORMAT (NO TIME). IF DATE SENT IS "KRN",8994,5869,2,11,1,2,0) INVALID WILL BE SET TO NULL. "KRN",8994,5869,2,12,0) DATE_REMINDER_SENT^1^7^0^12 "KRN",8994,5869,2,12,1,0) ^8994.021^2^2^3220121^^ "KRN",8994,5869,2,12,1,1,0) DATE REMINDER SENT IN EXTERNAL FORMAT (NO TIME). IF INVALID DATE SENT IN "KRN",8994,5869,2,12,1,2,0) SETS TO NULL. "KRN",8994,5869,2,14,0) USERIEN^1^20^0^13 "KRN",8994,5869,2,14,1,0) ^^2^2^3211215^ "KRN",8994,5869,2,14,1,1,0) USER WHO ENTERED/EDITED RECALL (POINTER TO NEW PERSON (#200) "KRN",8994,5869,2,14,1,2,0) FILE), DEFAULTS TO CURRENT USER. "KRN",8994,5869,2,15,0) SECOND_PRINT_DATE^1^7^0^14 "KRN",8994,5869,2,15,1,0) ^8994.021^2^2^3220121^^ "KRN",8994,5869,2,15,1,1,0) SECOND PRINT DATE IN EXTERNAL FORMAT (NO TIME). IF INVALID DATE SENT WILL "KRN",8994,5869,2,15,1,2,0) BE SET TO NULL. "KRN",8994,5869,2,16,0) EAS_TRACKING_NUMBER^1^40^0^15 "KRN",8994,5869,2,16,1,0) ^8994.021^1^1^3220113^^^^ "KRN",8994,5869,2,16,1,1,0) ENTERPRISE APPLICATION SERVINCE(EAS) TRACKING NUMBER "KRN",8994,5869,2,"B","ACCESSION_NUMBER",3) "KRN",8994,5869,2,"B","APPOINTMENT_LENGTH",9) "KRN",8994,5869,2,"B","APPOINTMENT_TYPE",6) "KRN",8994,5869,2,"B","CLINIC_IEN",8) "KRN",8994,5869,2,"B","COMMENT",4) "KRN",8994,5869,2,"B","DATE_REMINDER_SENT",12) "KRN",8994,5869,2,"B","DFN",2) "KRN",8994,5869,2,"B","EAS_TRACKING_NUMBER",16) "KRN",8994,5869,2,"B","FASTING",5) "KRN",8994,5869,2,"B","RECALLIEN",1) "KRN",8994,5869,2,"B","RECALL_DATE",10) "KRN",8994,5869,2,"B","RECALL_DATE_PER_PATIENT",11) "KRN",8994,5869,2,"B","RECALL_PROVIDER_IEN",7) "KRN",8994,5869,2,"B","SECOND_PRINT_DATE",15) "KRN",8994,5869,2,"B","USERIEN",14) "KRN",8994,5869,2,"PARAMSEQ",1,1) "KRN",8994,5869,2,"PARAMSEQ",2,2) "KRN",8994,5869,2,"PARAMSEQ",3,3) "KRN",8994,5869,2,"PARAMSEQ",4,4) "KRN",8994,5869,2,"PARAMSEQ",5,5) "KRN",8994,5869,2,"PARAMSEQ",6,6) "KRN",8994,5869,2,"PARAMSEQ",7,7) "KRN",8994,5869,2,"PARAMSEQ",8,8) "KRN",8994,5869,2,"PARAMSEQ",9,9) "KRN",8994,5869,2,"PARAMSEQ",10,10) "KRN",8994,5869,2,"PARAMSEQ",11,11) "KRN",8994,5869,2,"PARAMSEQ",12,12) "KRN",8994,5869,2,"PARAMSEQ",13,14) "KRN",8994,5869,2,"PARAMSEQ",14,15) "KRN",8994,5869,2,"PARAMSEQ",15,16) "KRN",8994,5869,3,0) ^8994.03^19^19^3220113^^ "KRN",8994,5869,3,1,0) RETURN "KRN",8994,5869,3,2,0) {"AptReqCreate":{"IEN":}} "KRN",8994,5869,3,3,0) {"Error":[error message]} "KRN",8994,5869,3,4,0) Possible errors: "KRN",8994,5869,3,5,0) Missing Recall ID "KRN",8994,5869,3,6,0) Invalid Recall ID "KRN",8994,5869,3,7,0) Missing Clinic ID "KRN",8994,5869,3,8,0) Invalid Clinic ID "KRN",8994,5869,3,9,0) Invalid Recall Reminders Provider ID "KRN",8994,5869,3,10,0) Invalid Recall Reminders Appointment Type ID "KRN",8994,5869,3,11,0) Invalid Recall Date "KRN",8994,5869,3,12,0) Error updating Recall Reminder File "KRN",8994,5869,3,13,0) Missing Security Key. Please contact your recall coordinator. "KRN",8994,5869,3,14,0) Missing Recall Reminders Provider ID "KRN",8994,5869,3,15,0) Invalid Fasting Value. "KRN",8994,5869,3,16,0) Missing Recall Reminders Appointment Type ID "KRN",8994,5869,3,17,0) Missing Recall Date "KRN",8994,5869,3,18,0) Missing Patient ID "KRN",8994,5869,3,19,0) Invalid Patient ID "KRN",8994,5870,-1) 0^4 "KRN",8994,5870,0) SDES CREATE RECALL REQ^CREATERECREQ^SDES^2^R^^^^^^1 "KRN",8994,5870,1,0) ^8994.01^2^2^3220112^^^^ "KRN",8994,5870,1,1,0) CREATE A NEW ENTRY INTO THE RECALL REMINDERS (#403.5) FILE FOR PATIENT "KRN",8994,5870,1,2,0) DFN. "KRN",8994,5870,2,0) ^8994.02A^16^15 "KRN",8994,5870,2,1,0) DFN^1^30^1^1 "KRN",8994,5870,2,1,1,0) ^8994.021^1^1^3211210^^ "KRN",8994,5870,2,1,1,1,0) POINTER TO PATIENT (#2) FILE "KRN",8994,5870,2,2,0) ACCESSION_NUMBER^1^25^1^2 "KRN",8994,5870,2,2,1,0) ^8994.021^1^1^3211210^^ "KRN",8994,5870,2,2,1,1,0) ACCESSION NUMBER (FREE TEXT) "KRN",8994,5870,2,3,0) COMMENT^1^80^0^3 "KRN",8994,5870,2,3,1,0) ^8994.021^1^1^3211210^^ "KRN",8994,5870,2,3,1,1,0) COMMENT (FREE TEXT) "KRN",8994,5870,2,4,0) FASTING^1^12^1^4 "KRN",8994,5870,2,4,1,0) ^8994.021^4^4^3211210^^ "KRN",8994,5870,2,4,1,1,0) LABS: "KRN",8994,5870,2,4,1,2,0) FASTING "KRN",8994,5870,2,4,1,3,0) NON-FASTING "KRN",8994,5870,2,4,1,4,0) @ - NONE "KRN",8994,5870,2,5,0) APPOINTMENT_TYPE^1^1^1^5 "KRN",8994,5870,2,5,1,0) ^8994.021^5^5^3211210^^^^ "KRN",8994,5870,2,5,1,1,0) TEST/APP POINTER TO RECALL REMINDERS APPT TYPE (#403.51) FILE "KRN",8994,5870,2,5,1,2,0) 1 FOLLOW-UP "KRN",8994,5870,2,5,1,3,0) 4 OTHER "KRN",8994,5870,2,5,1,4,0) 3 SEMI-ANNUAL EXAM "KRN",8994,5870,2,5,1,5,0) 2 YEARLY EXAM "KRN",8994,5870,2,6,0) RECALL_PROVIDER_IEN^1^20^1^6 "KRN",8994,5870,2,6,1,0) ^8994.021^1^1^3211210^^ "KRN",8994,5870,2,6,1,1,0) RECALL PROVIDER - POINTER TO RECALL REMINDERS PROVIDERS (#403.54) FILE "KRN",8994,5870,2,7,0) CLINIC_IEN^1^20^1^7 "KRN",8994,5870,2,7,1,0) ^^1^1^3211210^ "KRN",8994,5870,2,7,1,1,0) CLINIC POINTER TO HOSPITAL LOCATION (#44) FILE "KRN",8994,5870,2,8,0) APPOINTMENT_LENGTH^1^10^0^8 "KRN",8994,5870,2,8,1,0) ^^2^2^3211210^ "KRN",8994,5870,2,8,1,1,0) LENGTH OF APPOINTMENT NUMERIC BETWEEN 10 AND 120. IF VALUE SENT IN IS "KRN",8994,5870,2,8,1,2,0) LESS THAN 10 OR GREATER THAN 120 SETS TO NULL. "KRN",8994,5870,2,9,0) RECALL_DATE^1^10^1^9 "KRN",8994,5870,2,9,1,0) ^^1^1^3220121^ "KRN",8994,5870,2,9,1,1,0) RECALL DATE IN EXTERNAL FORMAT (NO TIME). "KRN",8994,5870,2,10,0) RECALL_DATE_PER_PATIENT^1^10^0^10 "KRN",8994,5870,2,10,1,0) ^^2^2^3220121^ "KRN",8994,5870,2,10,1,1,0) RECALL DATE (PER PATIENT) IN EXTERNAL FORMAT (NO TIME). IF DATE SENT IS "KRN",8994,5870,2,10,1,2,0) INVALID WILL BE SET TO NULL. "KRN",8994,5870,2,11,0) DATE_REMINDER_SENT^1^10^0^11 "KRN",8994,5870,2,11,1,0) ^^2^2^3220121^ "KRN",8994,5870,2,11,1,1,0) DATE REMINDER SENT IN EXTERNAL FORMAT (NO TIME). IF INVALID DATE SENT IN "KRN",8994,5870,2,11,1,2,0) SETS TO NULL. "KRN",8994,5870,2,12,0) USERIEN^1^20^0^12 "KRN",8994,5870,2,12,1,0) ^^2^2^3211210^ "KRN",8994,5870,2,12,1,1,0) USER WHO ENTERED RECALL (POINTER TO NEW PERSON (#200) FILE), DEFAULTS TO "KRN",8994,5870,2,12,1,2,0) CURRENT USER. "KRN",8994,5870,2,13,0) SECOND_PRINT_DATE^1^10^0^13 "KRN",8994,5870,2,13,1,0) ^^2^2^3220121^ "KRN",8994,5870,2,13,1,1,0) SECOND PRINT DATE IN EXTERNAL FORMAT (NO TIME). IF INVALID DATE SENT WILL "KRN",8994,5870,2,13,1,2,0) BE SET TO NULL. "KRN",8994,5870,2,15,0) ENTERED_DATE^1^10^0^14 "KRN",8994,5870,2,15,1,0) ^^1^1^3220121^ "KRN",8994,5870,2,15,1,1,0) Date recall was entered. "KRN",8994,5870,2,16,0) EASTRCKNGNMBR^1^40^0^15 "KRN",8994,5870,2,16,1,0) ^8994.021^1^1^3220112^^^^ "KRN",8994,5870,2,16,1,1,0) ENTERPRISE APPLICATION SERVICE (EAS) TRACKING NUMBER "KRN",8994,5870,2,"B","ACCESSION_NUMBER",2) "KRN",8994,5870,2,"B","APPOINTMENT_LENGTH",8) "KRN",8994,5870,2,"B","APPOINTMENT_TYPE",5) "KRN",8994,5870,2,"B","CLINIC_IEN",7) "KRN",8994,5870,2,"B","COMMENT",3) "KRN",8994,5870,2,"B","DATE_REMINDER_SENT",11) "KRN",8994,5870,2,"B","DFN",1) "KRN",8994,5870,2,"B","EASTRCKNGNMBR",16) "KRN",8994,5870,2,"B","ENTERED_DATE",15) "KRN",8994,5870,2,"B","FASTING",4) "KRN",8994,5870,2,"B","RECALL_DATE",9) "KRN",8994,5870,2,"B","RECALL_DATE_PER_PATIENT",10) "KRN",8994,5870,2,"B","RECALL_PROVIDER_IEN",6) "KRN",8994,5870,2,"B","SECOND_PRINT_DATE",13) "KRN",8994,5870,2,"B","USERIEN",12) "KRN",8994,5870,2,"PARAMSEQ",1,1) "KRN",8994,5870,2,"PARAMSEQ",2,2) "KRN",8994,5870,2,"PARAMSEQ",3,3) "KRN",8994,5870,2,"PARAMSEQ",4,4) "KRN",8994,5870,2,"PARAMSEQ",5,5) "KRN",8994,5870,2,"PARAMSEQ",6,6) "KRN",8994,5870,2,"PARAMSEQ",7,7) "KRN",8994,5870,2,"PARAMSEQ",8,8) "KRN",8994,5870,2,"PARAMSEQ",9,9) "KRN",8994,5870,2,"PARAMSEQ",10,10) "KRN",8994,5870,2,"PARAMSEQ",11,11) "KRN",8994,5870,2,"PARAMSEQ",12,12) "KRN",8994,5870,2,"PARAMSEQ",13,13) "KRN",8994,5870,2,"PARAMSEQ",14,15) "KRN",8994,5870,2,"PARAMSEQ",15,16) "KRN",8994,5870,3,0) ^8994.03^19^19^3220112^^^^ "KRN",8994,5870,3,1,0) RETURN "KRN",8994,5870,3,2,0) {"AptReqCreate":{"IEN":}} "KRN",8994,5870,3,3,0) {"Error":[error message]} "KRN",8994,5870,3,4,0) Possible errors: "KRN",8994,5870,3,5,0) Missing Recall ID "KRN",8994,5870,3,6,0) Invalid Recall ID "KRN",8994,5870,3,7,0) Missing Clinic ID "KRN",8994,5870,3,8,0) Invalid Clinic ID "KRN",8994,5870,3,9,0) Invalid Recall Reminders Provider ID "KRN",8994,5870,3,10,0) Invalid Recall Reminders Appointment Type ID "KRN",8994,5870,3,11,0) Invalid Recall Date "KRN",8994,5870,3,12,0) Error updating Recall Reminder File "KRN",8994,5870,3,13,0) Missing Security Key. Please contact your recall coordinator. "KRN",8994,5870,3,14,0) Missing Recall Reminders Provider ID "KRN",8994,5870,3,15,0) Invalid Fasting Value. "KRN",8994,5870,3,16,0) Missing Recall Reminders Appointment Type ID "KRN",8994,5870,3,17,0) Missing Recall Date "KRN",8994,5870,3,18,0) Missing Patient ID "KRN",8994,5870,3,19,0) Invalid Patient ID "KRN",8994,5871,-1) 0^41 "KRN",8994,5871,0) SDES DISPOSITION RECALL REQ^DISPRECALL^SDES^1^R^0^^0^^^1 "KRN",8994,5871,1,0) ^8994.01^4^4^3211210^^ "KRN",8994,5871,1,1,0) DISPOSITION and DELETE an entry from the RECALL REMINDERS file (403.5). "KRN",8994,5871,1,2,0) During the deletion of the entry, the new-style xref in 403.5 will "KRN",8994,5871,1,3,0) trigger the move of the data from 403.5 to the RECALL REMINDERS REMOVED "KRN",8994,5871,1,4,0) file (403.56). "KRN",8994,5871,2,0) ^8994.02A^4^4 "KRN",8994,5871,2,1,0) RECALLIEN^1^^1^1 "KRN",8994,5871,2,1,1,0) ^^2^2^3211210^ "KRN",8994,5871,2,1,1,1,0) Internal entry number (IEN) of the entry in the RECALL REMINDERS file "KRN",8994,5871,2,1,1,2,0) (403.5). "KRN",8994,5871,2,2,0) REASON^1^^0^2 "KRN",8994,5871,2,2,1,0) ^^9^9^3211210^ "KRN",8994,5871,2,2,1,1,0) Recall Disposition used to populate the DELETE REASON field (203) of "KRN",8994,5871,2,2,1,2,0) RECALL REMINDERS REMOVED file (403.56). Valid values are: "KRN",8994,5871,2,2,1,3,0) FAILURE TO RESPOND "KRN",8994,5871,2,2,1,4,0) MOVED "KRN",8994,5871,2,2,1,5,0) DECEASED "KRN",8994,5871,2,2,1,6,0) DOESN'T WANT VA SERVICES "KRN",8994,5871,2,2,1,7,0) RECEIVED CARE AT ANOTHER VA "KRN",8994,5871,2,2,1,8,0) OTHER "KRN",8994,5871,2,2,1,9,0) APPT SCHEDULED "KRN",8994,5871,2,3,0) COMMENTS^1^^0^3 "KRN",8994,5871,2,3,1,0) ^8994.021^4^4^3211210^^ "KRN",8994,5871,2,3,1,1,0) Comments that will populate the COMMENT field (2.5) in the RECALL "KRN",8994,5871,2,3,1,2,0) REMINDERS file (403.5) before the delete of the 403.5 entry. During the "KRN",8994,5871,2,3,1,3,0) delete of the 403.5 entry, the comments along with the rest of the fields "KRN",8994,5871,2,3,1,4,0) will be moved to the RECALL REMINDERS REMOVED file (403.56). "KRN",8994,5871,2,4,0) EAS^1^^0^4 "KRN",8994,5871,2,4,1,0) ^^1^1^3211210^ "KRN",8994,5871,2,4,1,1,0) Enterprise Appointment Scheduling (EAS) Tracking Number "KRN",8994,5871,2,"B","COMMENTS",3) "KRN",8994,5871,2,"B","EAS",4) "KRN",8994,5871,2,"B","REASON",2) "KRN",8994,5871,2,"B","RECALLIEN",1) "KRN",8994,5871,2,"PARAMSEQ",1,1) "KRN",8994,5871,2,"PARAMSEQ",2,2) "KRN",8994,5871,2,"PARAMSEQ",3,3) "KRN",8994,5871,2,"PARAMSEQ",4,4) "KRN",8994,5871,3,0) ^8994.03^1^1^3211210^^ "KRN",8994,5871,3,1,0) {"PtCSchReqDisposition":{"IEN":}} "KRN",8994,5872,-1) 0^44 "KRN",8994,5872,0) SDES EDIT APPT #44^APTREQ44EDIT^SDES^2^R^^^^^^1 "KRN",8994,5872,1,0) ^8994.01^1^1^3220113^^ "KRN",8994,5872,1,1,0) EDIT APPOINTMENT REQUEST IN HOSPITAL LOCATION FILE #44 "KRN",8994,5872,2,0) ^8994.02A^9^9 "KRN",8994,5872,2,1,0) ClinicIEN^1^30^1^1 "KRN",8994,5872,2,1,1,0) ^8994.021^2^2^3220113^^^^ "KRN",8994,5872,2,1,1,1,0) IEN point to HOSPTIAL LOCATION file 44 "KRN",8994,5872,2,1,1,2,0) If null, a new entry will be added "KRN",8994,5872,2,2,0) DFN^1^30^1^2 "KRN",8994,5872,2,2,1,0) ^^1^1^3220113^ "KRN",8994,5872,2,2,1,1,0) DFN Pointer to the PATIENT file 2 "KRN",8994,5872,2,3,0) APPTDT^1^30^1^3 "KRN",8994,5872,2,3,1,0) ^8994.021^2^2^3220113^^ "KRN",8994,5872,2,3,1,1,0) Desired Date/time of appointment in ISO8601 extended format (e.g. "KRN",8994,5872,2,3,1,2,0) 2021-12-22T20:30:00) ;vse-2097 "KRN",8994,5872,2,4,0) APPTLENGTH^1^30^0^4 "KRN",8994,5872,2,4,1,0) ^8994.021^1^1^3220113^^ "KRN",8994,5872,2,4,1,1,0) Appointment length in minutes (5 - 120) "KRN",8994,5872,2,5,0) APPTREASON^1^30^0^5 "KRN",8994,5872,2,5,1,0) ^8994.021^1^1^3220113^^^ "KRN",8994,5872,2,5,1,1,0) Reason for Appointment upto 150 characters "KRN",8994,5872,2,6,0) APPTCLERK^1^30^0^6 "KRN",8994,5872,2,6,1,0) ^8994.021^1^1^3220113^^ "KRN",8994,5872,2,6,1,1,0) Originating User name - NAME field in NEW PERSON file 200 "KRN",8994,5872,2,7,0) APPTORIGDT^1^30^0^7 "KRN",8994,5872,2,7,1,0) ^8994.021^2^2^3220113^^^^ "KRN",8994,5872,2,7,1,1,0) Originating Date/time in ISO8601 extended format (e.g. "KRN",8994,5872,2,7,1,2,0) 2021-12-22T20:30:53) ;vse-2097 "KRN",8994,5872,2,8,0) APPTELGCODE^1^30^0^8 "KRN",8994,5872,2,8,1,0) ^8994.021^1^1^3220113^^^ "KRN",8994,5872,2,8,1,1,0) PATIENT ELIGIBILITY "KRN",8994,5872,2,9,0) APPTOBFLAG^1^1^0^9 "KRN",8994,5872,2,9,1,0) ^8994.021^1^1^3220118^^^^ "KRN",8994,5872,2,9,1,1,0) Overbook flag - 1=yes "KRN",8994,5872,2,"B","APPTCLERK",6) "KRN",8994,5872,2,"B","APPTDT",3) "KRN",8994,5872,2,"B","APPTELGCODE",8) "KRN",8994,5872,2,"B","APPTLENGTH",4) "KRN",8994,5872,2,"B","APPTOBFLAG",9) "KRN",8994,5872,2,"B","APPTORIGDT",7) "KRN",8994,5872,2,"B","APPTREASON",5) "KRN",8994,5872,2,"B","ClinicIEN",1) "KRN",8994,5872,2,"B","DFN",2) "KRN",8994,5872,2,"PARAMSEQ",1,1) "KRN",8994,5872,2,"PARAMSEQ",2,2) "KRN",8994,5872,2,"PARAMSEQ",3,3) "KRN",8994,5872,2,"PARAMSEQ",4,4) "KRN",8994,5872,2,"PARAMSEQ",5,5) "KRN",8994,5872,2,"PARAMSEQ",6,6) "KRN",8994,5872,2,"PARAMSEQ",7,7) "KRN",8994,5872,2,"PARAMSEQ",8,8) "KRN",8994,5872,2,"PARAMSEQ",9,9) "KRN",8994,5872,3,0) ^8994.03^2^2^3220113^^ "KRN",8994,5872,3,1,0) Appointment successfully edited in Hospital Location file#44. If failed "KRN",8994,5872,3,2,0) generate Error message. "KRN",8994,5873,-1) 0^29 "KRN",8994,5873,0) SDES GET APPT #44^GETAPPOINTMENTS^SDES^2^R^^^^^^1 "KRN",8994,5873,1,0) ^8994.01^4^4^3220113^ "KRN",8994,5873,1,1,0) GETS ALL APPOINTMENTS FROM THE HOSPITAL LOCATION (#44) FILE FOR "KRN",8994,5873,1,2,0) GIVEN CLINIC WITHIN A GIVE TIME RANGE. "KRN",8994,5873,1,3,0) "KRN",8994,5873,1,4,0) WITHIN A GIVEN DATE/TIME RANGE. "KRN",8994,5873,2,0) ^8994.02A^3^3 "KRN",8994,5873,2,1,0) CLINIC^1^25^1^1 "KRN",8994,5873,2,1,1,0) ^^1^1^3220113^ "KRN",8994,5873,2,1,1,1,0) CLINIC IEN (POINTER TO HOSPITAL LOCATION (#44) FILE) "KRN",8994,5873,2,2,0) STARTDATETIME^1^20^1^2 "KRN",8994,5873,2,2,1,0) ^8994.021^2^2^3220113^^ "KRN",8994,5873,2,2,1,1,0) DATE/TIME TO START SELECTION WITH. IF NO TIME IS GIVEN, THEN WILL "KRN",8994,5873,2,2,1,2,0) DEFAULT TO 1 SECOND AFTER MIDNIGHT. "KRN",8994,5873,2,3,0) ENDDATETIME^1^20^1^3 "KRN",8994,5873,2,3,1,0) ^^2^2^3220113^ "KRN",8994,5873,2,3,1,1,0) DATE/TIME TO END SELECTION WITH. IF NO TIME IS GIVEN WILL DEFAULT TO "KRN",8994,5873,2,3,1,2,0) MIDNIGHT. "KRN",8994,5873,2,"B","CLINIC",1) "KRN",8994,5873,2,"B","ENDDATETIME",3) "KRN",8994,5873,2,"B","STARTDATETIME",2) "KRN",8994,5873,2,"PARAMSEQ",1,1) "KRN",8994,5873,2,"PARAMSEQ",2,2) "KRN",8994,5873,2,"PARAMSEQ",3,3) "KRN",8994,5874,-1) 0^43 "KRN",8994,5874,0) SDES CREATE APPT #44^APTREQ44CRT^SDES^2^R^^^^^^1 "KRN",8994,5874,1,0) ^8994.01^1^1^3220113^ "KRN",8994,5874,1,1,0) CREATE APPOINTMENT IN HOSPITAL LOCATION FILE #44 "KRN",8994,5874,2,0) ^8994.02A^9^9 "KRN",8994,5874,2,1,0) ClinicIEN^1^30^1^1 "KRN",8994,5874,2,1,1,0) ^8994.021^1^1^3220114^^^ "KRN",8994,5874,2,1,1,1,0) IEN point to HOSPTIAL LOCATION file 44 "KRN",8994,5874,2,2,0) DFN^1^30^1^2 "KRN",8994,5874,2,2,1,0) ^^1^1^3220113^ "KRN",8994,5874,2,2,1,1,0) DFN Pointer to the PATIENT file 2 "KRN",8994,5874,2,3,0) APPTDT^1^30^1^3 "KRN",8994,5874,2,3,1,0) ^^2^2^3220114^ "KRN",8994,5874,2,3,1,1,0) Desired Date/time of appointment in ISO8601 "KRN",8994,5874,2,3,1,2,0) extended format (e.g. 2021-12-22T20:30:00) ;vse-2097 "KRN",8994,5874,2,4,0) APPTLENGTH^1^30^1^4 "KRN",8994,5874,2,4,1,0) ^^1^1^3220114^ "KRN",8994,5874,2,4,1,1,0) Appointment length in minutes (5 - 120) "KRN",8994,5874,2,5,0) APPTREASON^1^30^0^5 "KRN",8994,5874,2,5,1,0) ^^1^1^3220114^ "KRN",8994,5874,2,5,1,1,0) Reason for Appointment upto 150 characters "KRN",8994,5874,2,6,0) APPTCLERK^1^30^0^6 "KRN",8994,5874,2,6,1,0) ^^2^2^3220114^ "KRN",8994,5874,2,6,1,1,0) Originating User name - NAME field in NEW PERSON "KRN",8994,5874,2,6,1,2,0) file 200 "KRN",8994,5874,2,7,0) APPTORGDT^1^30^0^7 "KRN",8994,5874,2,7,1,0) ^^2^2^3220114^ "KRN",8994,5874,2,7,1,1,0) Originating Date/time in ISO8601 extended format "KRN",8994,5874,2,7,1,2,0) (e.g. 2021-12-22T20:30:53) "KRN",8994,5874,2,8,0) APPTELGCODE^1^30^0^8 "KRN",8994,5874,2,8,1,0) ^^1^1^3220114^ "KRN",8994,5874,2,8,1,1,0) Eligibility of Visit "KRN",8994,5874,2,9,0) APPTOBFLAG^1^1^0^9 "KRN",8994,5874,2,9,1,0) ^8994.021^1^1^3220118^^^^ "KRN",8994,5874,2,9,1,1,0) (integer) Overbook flag - 1=yes "KRN",8994,5874,2,"B","APPTCLERK",6) "KRN",8994,5874,2,"B","APPTDT",3) "KRN",8994,5874,2,"B","APPTELGCODE",8) "KRN",8994,5874,2,"B","APPTLENGTH",4) "KRN",8994,5874,2,"B","APPTOBFLAG",9) "KRN",8994,5874,2,"B","APPTORGDT",7) "KRN",8994,5874,2,"B","APPTREASON",5) "KRN",8994,5874,2,"B","ClinicIEN",1) "KRN",8994,5874,2,"B","DFN",2) "KRN",8994,5874,2,"PARAMSEQ",1,1) "KRN",8994,5874,2,"PARAMSEQ",2,2) "KRN",8994,5874,2,"PARAMSEQ",3,3) "KRN",8994,5874,2,"PARAMSEQ",4,4) "KRN",8994,5874,2,"PARAMSEQ",5,5) "KRN",8994,5874,2,"PARAMSEQ",6,6) "KRN",8994,5874,2,"PARAMSEQ",7,7) "KRN",8994,5874,2,"PARAMSEQ",8,8) "KRN",8994,5874,2,"PARAMSEQ",9,9) "KRN",8994,5874,3,0) ^^2^2^3220113^ "KRN",8994,5874,3,1,0) CREATE APPOINMENT IN HOSPITAL LOCATION FILE 44. RETURN ERROR MESSAGE IF "KRN",8994,5874,3,2,0) VALIDATION FAILED. "KRN",8994,5875,-1) 0^45 "KRN",8994,5875,0) SDES CANCEL APPT #44^ARCANCEL44^SDES^2^R "KRN",8994,5875,1,0) ^8994.01^3^3^3220119^^^^ "KRN",8994,5875,1,1,0) Cancel Appointment in APPOINTMENT (#1900) multiple of the HOSPITAL "KRN",8994,5875,1,2,0) LOCATION (#44) file. The Appointment is not deleted. The APPOINTMENT "KRN",8994,5875,1,3,0) CANCELLED? (#310) is set to Cancelled. "KRN",8994,5875,2,0) ^8994.02A^3^3 "KRN",8994,5875,2,1,0) SDDFN^1^30^1^1 "KRN",8994,5875,2,1,1,0) ^^1^1^3220117^ "KRN",8994,5875,2,1,1,1,0) DFN pointer to the PATIENT (#2) file. "KRN",8994,5875,2,2,0) SDCLNIEN^1^30^1^2 "KRN",8994,5875,2,2,1,0) ^^1^1^3220117^ "KRN",8994,5875,2,2,1,1,0) IEN pointer to HOSPTIAL LOCATION (#44). "KRN",8994,5875,2,3,0) SDARDTTM^1^22^1^3 "KRN",8994,5875,2,3,1,0) ^^2^2^3220119^ "KRN",8994,5875,2,3,1,1,0) The Date/time of appointment in ISO 8601 extended format. "KRN",8994,5875,2,3,1,2,0) Example: Jan, 11, 2020@20:30:00 = 2020-01-11T20:30:00 "KRN",8994,5875,2,"B","SDARDTTM",3) "KRN",8994,5875,2,"B","SDCLNIEN",2) "KRN",8994,5875,2,"B","SDDFN",1) "KRN",8994,5875,2,"PARAMSEQ",1,1) "KRN",8994,5875,2,"PARAMSEQ",2,2) "KRN",8994,5875,2,"PARAMSEQ",3,3) "KRN",8994,5875,3,0) ^8994.03^1^1^3220119^^^^ "KRN",8994,5875,3,1,0) Success or Error message "MBREQ") 0 "ORD",16,8994) 8994;16;1;;;;RPCE1^XPDIA1;;;RPCDEL^XPDIA1 "ORD",16,8994,0) REMOTE PROCEDURE "ORD",18,19) 19;18;;;OPT^XPDTA;OPTF1^XPDIA;OPTE1^XPDIA;OPTF2^XPDIA;;OPTDEL^XPDIA "ORD",18,19,0) OPTION "PKG",16,-1) 1^1 "PKG",16,0) SCHEDULING^SD^APPOINTMENTS,PROFILES,LETTERS,AMIS REPORTS "PKG",16,22,0) ^9.49I^1^1 "PKG",16,22,1,0) 5.3^2930813^2930930 "PKG",16,22,1,"PAH",1,0) 805^3220222^520881788 "PKG",16,22,1,"PAH",1,1,0) ^^124^124^3220222 "PKG",16,22,1,"PAH",1,1,1,0) VSE-175: Tasks Tab - Help section "PKG",16,22,1,"PAH",1,1,2,0) VSE-191: Pending Appointment Letter - Remediate 508 findings in Pending "PKG",16,22,1,"PAH",1,1,3,0) Appointment Letter form "PKG",16,22,1,"PAH",1,1,4,0) VSE-201: Reports Tab - Remediate 508 findings in Reports Tab form "PKG",16,22,1,"PAH",1,1,5,0) VSE-1941: VistA: SDES RPC to create appointment in HOSPITAL LOCATION "PKG",16,22,1,"PAH",1,1,6,0) file (#44) "PKG",16,22,1,"PAH",1,1,7,0) VSE-1942: VistA: SDES RPC to update/edit appointment in HOSPITAL "PKG",16,22,1,"PAH",1,1,8,0) LOCATION file (#44) "PKG",16,22,1,"PAH",1,1,9,0) VSE-1943: VistA: SDES RPC to read appointment in HOSPITAL LOCATION file "PKG",16,22,1,"PAH",1,1,10,0) (#44) "PKG",16,22,1,"PAH",1,1,11,0) VSE-1944: VistA: SDES RPC to delete appointment in HOSPITAL LOCATION "PKG",16,22,1,"PAH",1,1,12,0) file (#44) "PKG",16,22,1,"PAH",1,1,13,0) VSE-1945: Allow users to update PID when no-showing an appointment "PKG",16,22,1,"PAH",1,1,14,0) VSE-2074: .NET: Allow user to update PID when rescheduling an "PKG",16,22,1,"PAH",1,1,15,0) appointment that was canceled by patient "PKG",16,22,1,"PAH",1,1,16,0) VSE-2107: VistA: Add EAS Tracking Number to all SDES RPCs "PKG",16,22,1,"PAH",1,1,17,0) VSE-2114: .NET GUI: VVS appointments are converting to incorrect time "PKG",16,22,1,"PAH",1,1,18,0) zones. "PKG",16,22,1,"PAH",1,1,19,0) VSE-2223: - VistA: Update SDES Get User Profile RPC to receive SECID "PKG",16,22,1,"PAH",1,1,20,0) rather than VPID "PKG",16,22,1,"PAH",1,1,21,0) VSE-2226: VistA: Updates to support VVS timezone correction "PKG",16,22,1,"PAH",1,1,22,0) VSE-2231: VistA: Update the Insurance Verification Logic in the SDES "PKG",16,22,1,"PAH",1,1,23,0) GET INSURANCE VERIFY REQ RPC. "PKG",16,22,1,"PAH",1,1,24,0) VSE-2333: VistA: RPC SDES CREATE CLINIC defaults clinic start time to "PKG",16,22,1,"PAH",1,1,25,0) Midnight when editing and clinic start time not answered "PKG",16,22,1,"PAH",1,1,26,0) VSE-2264: VistA: Block and Move requires cancel reason. "PKG",16,22,1,"PAH",1,1,27,0) VSE-2333: VistA: RPC SDES CREATE CLINIC defaults clinic start time to "PKG",16,22,1,"PAH",1,1,28,0) Midnight when editing and clinic start time not answered. "PKG",16,22,1,"PAH",1,1,29,0) "PKG",16,22,1,"PAH",1,1,30,0) FILES: "PKG",16,22,1,"PAH",1,1,31,0) ====== "PKG",16,22,1,"PAH",1,1,32,0) RECALL REMINDERS (#403.5) EAS TRACKING NUMBER (#100) - VSE-2107 "PKG",16,22,1,"PAH",1,1,33,0) RECALL REMINDERS REMOVED (#403.56) EAS TRACKING NUMBER (#100) - VSE-2107 "PKG",16,22,1,"PAH",1,1,34,0) SDEC APPOINTMENT (#409.84) EAS TRACKING NUMBER (#100) - VSE-2107 "PKG",16,22,1,"PAH",1,1,35,0) SDEC APPT REQUEST (#409.85) EAS TRACKING NUMBER (#100) - VSE-2107 "PKG",16,22,1,"PAH",1,1,36,0) (#409.85) PID CHANGE ALLOWED (#49) "PKG",16,22,1,"PAH",1,1,37,0) PID HISTORY (#409.854) PID HISTORY (#50) "PKG",16,22,1,"PAH",1,1,38,0) SDEC CONSULT PID HISTORY (#409.87) FULL FILE "PKG",16,22,1,"PAH",1,1,39,0) "PKG",16,22,1,"PAH",1,1,40,0) ROUTINES: "PKG",16,22,1,"PAH",1,1,41,0) ========= "PKG",16,22,1,"PAH",1,1,42,0) SDEC07 - VSE-2107,2074 "PKG",16,22,1,"PAH",1,1,43,0) SDEC08 - VSE-2107 "PKG",16,22,1,"PAH",1,1,44,0) SDES - VSE-2107,VSE-2223,VSE-1943 "PKG",16,22,1,"PAH",1,1,45,0) SDESAPPT - VSE-2107 "PKG",16,22,1,"PAH",1,1,46,0) SDESAPPTDATA - VSE-2097 "PKG",16,22,1,"PAH",1,1,47,0) SDESAPTREQSET - VSE-2097 "PKG",16,22,1,"PAH",1,1,48,0) SDESBLKANDMOVE - VSE-2107,VSE-2264 "PKG",16,22,1,"PAH",1,1,49,0) SDESCANCELAPPT - VSE-2107 "PKG",16,22,1,"PAH",1,1,50,0) SDESCCAVAIL - VSE-2107 "PKG",16,22,1,"PAH",1,1,51,0) SDESCKNSTEP - VSE-2107 "PKG",16,22,1,"PAH",1,1,52,0) SDESCLINICAVAIL - VSE-2107 "PKG",16,22,1,"PAH",1,1,53,0) SDESCLINICSET - VSE-2107,VSE-2333 "PKG",16,22,1,"PAH",1,1,54,0) SDESCLNSETAVAIL - VSE-2107 "PKG",16,22,1,"PAH",1,1,55,0) SDESDISPRECALL - VSE-2107 "PKG",16,22,1,"PAH",1,1,56,0) SDESARCLOSE - VSE-2107 "PKG",16,22,1,"PAH",1,1,57,0) SDESARGET - VSE-2107 "PKG",16,22,1,"PAH",1,1,58,0) SDESGETRECALL - VSE-2107 "PKG",16,22,1,"PAH",1,1,59,0) SDESGETREGA - VSE-2107 "PKG",16,22,1,"PAH",1,1,60,0) SDESGETUD - VSE-2107,VSE-2223 "PKG",16,22,1,"PAH",1,1,61,0) SDESINACTCLINIC - VSE-2107 "PKG",16,22,1,"PAH",1,1,62,0) SDESJSON - VSE-2107,VSE-2223 "PKG",16,22,1,"PAH",1,1,63,0) SDESPATRPC - VSE-2107,VSE-2231 "PKG",16,22,1,"PAH",1,1,64,0) SDESRTVCLN - VSE-2107 "PKG",16,22,1,"PAH",1,1,65,0) SDESUPDRECREQ - VSE-2107 "PKG",16,22,1,"PAH",1,1,66,0) SDECDUZ - VSE-2226 "PKG",16,22,1,"PAH",1,1,67,0) SDECVVS - VSE-2226 "PKG",16,22,1,"PAH",1,1,68,0) SDESVVSJSON - VSE-2226 "PKG",16,22,1,"PAH",1,1,69,0) SDESUTIL - VSE-2107,VSE-2226 "PKG",16,22,1,"PAH",1,1,70,0) SDECDATE - VSE-2226 "PKG",16,22,1,"PAH",1,1,71,0) SDAMUTDT - VSE-2226 "PKG",16,22,1,"PAH",1,1,72,0) SDEC - VSE-2074 "PKG",16,22,1,"PAH",1,1,73,0) SDEC07 - VSE-2074 "PKG",16,22,1,"PAH",1,1,74,0) SDEC08 - VSE-2074 "PKG",16,22,1,"PAH",1,1,75,0) SDEC31 - VSE-2074 "PKG",16,22,1,"PAH",1,1,76,0) SDECAR2 - VSE-2074 "PKG",16,22,1,"PAH",1,1,77,0) SDECAR4 - VSE-2074 "PKG",16,22,1,"PAH",1,1,78,0) SDECCONSJSON - VSE-2074 "PKG",16,22,1,"PAH",1,1,79,0) SDECRECREQ - VSE-2074 "PKG",16,22,1,"PAH",1,1,80,0) SDECAR - VSE-2074 "PKG",16,22,1,"PAH",1,1,81,0) SDESGETCLINAPPT - VSE-1943 "PKG",16,22,1,"PAH",1,1,82,0) "PKG",16,22,1,"PAH",1,1,83,0) "PKG",16,22,1,"PAH",1,1,84,0) REMOTE PROCEDURES: "PKG",16,22,1,"PAH",1,1,85,0) ================== "PKG",16,22,1,"PAH",1,1,86,0) SDES CANCEL APPT - VSE-2107 "PKG",16,22,1,"PAH",1,1,87,0) SDES CANCEL CLIN AVAILABILITY - VSE-2107 "PKG",16,22,1,"PAH",1,1,88,0) SDES CREATE APPT BLK AND MOVE - VSE-2107 "PKG",16,22,1,"PAH",1,1,89,0) SDES CREATE APPT REQ - VSE-2107 "PKG",16,22,1,"PAH",1,1,90,0) SDES CREATE CLIN AVAILABILITY - VSE-2107 "PKG",16,22,1,"PAH",1,1,91,0) SDES CREATE CLINIC - VSE-2107 "PKG",16,22,1,"PAH",1,1,92,0) SDES CREATE RECALL REQ - VSE-2107 "PKG",16,22,1,"PAH",1,1,93,0) SDES DISPOSITION RECALL REQ - VSE-2107 "PKG",16,22,1,"PAH",1,1,94,0) SDES DISPOSITION APPT REQ - VSE-2107 "PKG",16,22,1,"PAH",1,1,95,0) SDES EDIT APPT REQ - VSE-2107 "PKG",16,22,1,"PAH",1,1,96,0) SDES EDIT CHECK-IN STEP - VSE-2107 "PKG",16,22,1,"PAH",1,1,97,0) SDES EDIT CLINIC - VSE-2107 "PKG",16,22,1,"PAH",1,1,98,0) SDES EDIT CLINIC AVAILABILITY - VSE-2107 "PKG",16,22,1,"PAH",1,1,99,0) SDES EDIT RECALL REQ - VSE-2107 "PKG",16,22,1,"PAH",1,1,100,0) SDES GET APPT BY IEN - VSE-2107 "PKG",16,22,1,"PAH",1,1,101,0) SDES GET APPT CHECK-IN STEP - VSE-2107 "PKG",16,22,1,"PAH",1,1,102,0) SDES GET APPT CHECK-IN STEPS - VSE-2107 "PKG",16,22,1,"PAH",1,1,103,0) SDES GET APPT REQ BY IEN - VSE-2107 "PKG",16,22,1,"PAH",1,1,104,0) SDES GET APPT REQ BY PATIENT - VSE-2107 "PKG",16,22,1,"PAH",1,1,105,0) SDES GET APPTS BY CLINIC - VSE-2107 "PKG",16,22,1,"PAH",1,1,106,0) SDES GET APPTS BY PATIENT - VSE-2107 "PKG",16,22,1,"PAH",1,1,107,0) SDES GET APPTS BY RESOURCE - VSE-2107 "PKG",16,22,1,"PAH",1,1,108,0) SDES GET CHECK-IN STEP - VSE-2107 "PKG",16,22,1,"PAH",1,1,109,0) SDES GET CHECK-IN STEPS - VSE-2107 "PKG",16,22,1,"PAH",1,1,110,0) SDES GET CLIN AVAILABILITY - VSE-2107 "PKG",16,22,1,"PAH",1,1,111,0) SDES GET CLINIC INFO - VSE-2107 "PKG",16,22,1,"PAH",1,1,112,0) SDES GET INSURANCE VERIFY REQ - VSE-2107 "PKG",16,22,1,"PAH",1,1,113,0) SDES GET PATIENT REGISTRATION - VSE-2107 "PKG",16,22,1,"PAH",1,1,114,0) SDES GET RECALL BY IEN - VSE-2107 "PKG",16,22,1,"PAH",1,1,115,0) SDES GET RECALLS BY DFN - VSE-2107 "PKG",16,22,1,"PAH",1,1,116,0) SDES GET USRPROFILE - VSE-2107,VSE-2223 "PKG",16,22,1,"PAH",1,1,117,0) SDES INACTIVATE/ZZ CLINIC - VSE-2107 "PKG",16,22,1,"PAH",1,1,118,0) SDES SET APPT CHECK-IN STEP - VSE-2107 "PKG",16,22,1,"PAH",1,1,119,0) SDES SET CHECK-IN STEP - VSE-2107 "PKG",16,22,1,"PAH",1,1,120,0) "PKG",16,22,1,"PAH",1,1,121,0) "PKG",16,22,1,"PAH",1,1,122,0) OPTIONS: "PKG",16,22,1,"PAH",1,1,123,0) ======== "PKG",16,22,1,"PAH",1,1,124,0) SDESRPC - VSE-2107 "QUES","XPF1",0) Y "QUES","XPF1","??") ^D REP^XPDH "QUES","XPF1","A") Shall I write over your |FLAG| File "QUES","XPF1","B") YES "QUES","XPF1","M") D XPF1^XPDIQ "QUES","XPF2",0) Y "QUES","XPF2","??") ^D DTA^XPDH "QUES","XPF2","A") Want my data |FLAG| yours "QUES","XPF2","B") YES "QUES","XPF2","M") D XPF2^XPDIQ "QUES","XPI1",0) YO "QUES","XPI1","??") ^D INHIBIT^XPDH "QUES","XPI1","A") Want KIDS to INHIBIT LOGONs during the install "QUES","XPI1","B") NO "QUES","XPI1","M") D XPI1^XPDIQ "QUES","XPM1",0) PO^VA(200,:EM "QUES","XPM1","??") ^D MG^XPDH "QUES","XPM1","A") Enter the Coordinator for Mail Group '|FLAG|' "QUES","XPM1","B") "QUES","XPM1","M") D XPM1^XPDIQ "QUES","XPO1",0) Y "QUES","XPO1","??") ^D MENU^XPDH "QUES","XPO1","A") Want KIDS to Rebuild Menu Trees Upon Completion of Install "QUES","XPO1","B") NO "QUES","XPO1","M") D XPO1^XPDIQ "QUES","XPZ1",0) Y "QUES","XPZ1","??") ^D OPT^XPDH "QUES","XPZ1","A") Want to DISABLE Scheduled Options, Menu Options, and Protocols "QUES","XPZ1","B") NO "QUES","XPZ1","M") D XPZ1^XPDIQ "QUES","XPZ2",0) Y "QUES","XPZ2","??") ^D RTN^XPDH "QUES","XPZ2","A") Want to MOVE routines to other CPUs "QUES","XPZ2","B") NO "QUES","XPZ2","M") D XPZ2^XPDIQ "RTN") 41 "RTN","SDAMUTDT") 0^32^B46311532^B9921068 "RTN","SDAMUTDT",1,0) SDAMUTDT ;BPOIFO/JFW,TAW-TESTING-Scheduling Encapsulation Utilities ;JAN 13,2022 "RTN","SDAMUTDT",2,0) ;;5.3;Scheduling;**266,805**;13 Aug 1993;Build 9 "RTN","SDAMUTDT",3,0) ; "RTN","SDAMUTDT",4,0) ;***************************************************************** "RTN","SDAMUTDT",5,0) ; CHANGE LOG "RTN","SDAMUTDT",6,0) ; "RTN","SDAMUTDT",7,0) ; DATE PATCH DESCRIPTION "RTN","SDAMUTDT",8,0) ;-------- ---------- ----------------------------------------- "RTN","SDAMUTDT",9,0) ;1/24/06 SD*5.3*413 ROUTINE COMPLETED "RTN","SDAMUTDT",10,0) ;1/13/22 SD^5.3*805 Add FMTISO and ISOTFM to support clinic time zone different from system "RTN","SDAMUTDT",11,0) ; "RTN","SDAMUTDT",12,0) ;***************************************************************** "RTN","SDAMUTDT",13,0) FMTISO(SDFMDT,SDCLINIC) ;convert internal fileman format to extended GMT "RTN","SDAMUTDT",14,0) ;initialize variables "RTN","SDAMUTDT",15,0) ;***************************************************************** "RTN","SDAMUTDT",16,0) ;INPUT SDFMDT - Fileman date/time "RTN","SDAMUTDT",17,0) ; SDCLINIC - OPT IEN from file 44 "RTN","SDAMUTDT",18,0) ;OUTPUT -1 error occurred in translation "RTN","SDAMUTDT",19,0) ; GMT date/time in ISO 8601 extended format (No Errors) "RTN","SDAMUTDT",20,0) ;***************************************************************** "RTN","SDAMUTDT",21,0) N SDDTM,SDGMT,SDTIME,SDOFFSET,HH,MM "RTN","SDAMUTDT",22,0) I +$G(SDFMDT)=0 Q "" "RTN","SDAMUTDT",23,0) S SDDTM=$$FMTHL7^XLFDT(SDFMDT) "RTN","SDAMUTDT",24,0) Q:SDDTM<0 -1 "RTN","SDAMUTDT",25,0) S SDCLINIC=$G(SDCLINIC) "RTN","SDAMUTDT",26,0) ;If clinic offset is differnt from system, adjust SDFMDT "RTN","SDAMUTDT",27,0) ;I SDCLINIC D "RTN","SDAMUTDT",28,0) ;.S SDOFFSET=$$GETOFFSETDIFF(SDFMDT,SDCLINIC) "RTN","SDAMUTDT",29,0) ;.Q:SDOFFSET="" ;Clinic and system are the same "RTN","SDAMUTDT",30,0) ;.S HH=$EXTRACT(SDOFFSET,2,3) "RTN","SDAMUTDT",31,0) ;.S MM=$EXTRACT(SDOFFSET,4,5) "RTN","SDAMUTDT",32,0) ;.I $EXTRACT(SDOFFSET)="-" S HH=-HH,MM=-MM "RTN","SDAMUTDT",33,0) ;.S SDFMDT=$$FMADD^XLFDT(SDFMDT,,HH,MM) "RTN","SDAMUTDT",34,0) ;.S SDDTM=$$FMTHL7^XLFDT(SDFMDT) "RTN","SDAMUTDT",35,0) ;Gextract out date and convert to ISO 8601 extended format "RTN","SDAMUTDT",36,0) S SDGMT=$E(SDDTM,1,4)_"-"_$E(SDDTM,5,6)_"-"_$E(SDDTM,7,8) "RTN","SDAMUTDT",37,0) ;if time is included, extract and convert to ISO 8601 external format "RTN","SDAMUTDT",38,0) I $L(SDDTM)>8 D "RTN","SDAMUTDT",39,0) .S SDTIME=$E(+SDDTM,9,99) "RTN","SDAMUTDT",40,0) .S SDTIME=$$REMOVEOFFSET(SDTIME) "RTN","SDAMUTDT",41,0) .;append hour and min "RTN","SDAMUTDT",42,0) .S SDGMT=SDGMT_"T"_$E(SDTIME,1,2)_":"_$E(SDTIME,3,4) "RTN","SDAMUTDT",43,0) .;include seconds "RTN","SDAMUTDT",44,0) .I $L(SDTIME)>4 S SDGMT=SDGMT_":"_$E(SDTIME,5,6) "RTN","SDAMUTDT",45,0) .S SDGMT=SDGMT_$$GETOFFSET(SDFMDT,SDCLINIC) "RTN","SDAMUTDT",46,0) I SDGMT["-9999" S SDGMT=-1 "RTN","SDAMUTDT",47,0) Q SDGMT "RTN","SDAMUTDT",48,0) ; "RTN","SDAMUTDT",49,0) ISOTFM(SDGMTDT,SDCLINIC) ;convert ISO 8601 extended GMT date/time to fileman format "RTN","SDAMUTDT",50,0) ;initialize variables "RTN","SDAMUTDT",51,0) ;***************************************************************** "RTN","SDAMUTDT",52,0) ;INPUT SDGMTDT - ISO 8601 extended GMT date/time "RTN","SDAMUTDT",53,0) ; SDCLINIC - OPT IEN from file 44 "RTN","SDAMUTDT",54,0) ;OUTPUT -1 error occurred in translation "RTN","SDAMUTDT",55,0) ; FM date/time (No Errors) "RTN","SDAMUTDT",56,0) ;***************************************************************** "RTN","SDAMUTDT",57,0) N SDFM,SDTIME,SDFMDTM,X,Y,%DT,SDFMTMP,POP,TMPFM,TMPDT,SDOFFSET,SDISOOFFSET "RTN","SDAMUTDT",58,0) S (POP,SDOFFSET)="" "RTN","SDAMUTDT",59,0) I +$G(SDGMTDT)=0 Q "" "RTN","SDAMUTDT",60,0) ;pattern match date(/time) for correctness "RTN","SDAMUTDT",61,0) I '$$VALIDISO^SDECDATE(SDGMTDT) Q -1 "RTN","SDAMUTDT",62,0) ;I $P(SDGMTDT,"T",2)="" Q -1 "RTN","SDAMUTDT",63,0) S SDCLINIC=$G(SDCLINIC) "RTN","SDAMUTDT",64,0) ;extract out date, removing punctuation "RTN","SDAMUTDT",65,0) S SDFM=$TR($P(SDGMTDT,"T"),"-") "RTN","SDAMUTDT",66,0) ;set parameters to validate date/time "RTN","SDAMUTDT",67,0) S %DT="TXS" "RTN","SDAMUTDT",68,0) ;extract out time if entered, removing all punctuation except for TZ offset "RTN","SDAMUTDT",69,0) I $P(SDGMTDT,"T",2)'="" D "RTN","SDAMUTDT",70,0) .S SDTIME=$P(SDGMTDT,"T",2) "RTN","SDAMUTDT",71,0) .;Must have a time zone offset "RTN","SDAMUTDT",72,0) .I SDTIME'["Z",SDTIME'["+",SDTIME'["-" S POP=1 Q "RTN","SDAMUTDT",73,0) .;exclude time if 0's else FMTE returns previous date with .24 "RTN","SDAMUTDT",74,0) .S SDTIME=$$REMOVEOFFSET(SDTIME) "RTN","SDAMUTDT",75,0) .S SDTIME=$P(SDTIME,".") ;No ractional seconds "RTN","SDAMUTDT",76,0) .S SDTIME=$TR(SDTIME,":") "RTN","SDAMUTDT",77,0) .I +SDTIME=0 Q "RTN","SDAMUTDT",78,0) .;Get the correct offset "RTN","SDAMUTDT",79,0) .S TMPFM=$$CVTTOFM(SDGMTDT) ;Need a FM format of the ISO date that is passed in "RTN","SDAMUTDT",80,0) .; IF ZULU reset SDGMTDT to match system time "RTN","SDAMUTDT",81,0) .I SDGMTDT["Z"!(SDGMTDT["+0000") S SDOFFSET=$$GETOFFSET(TMPFM,SDCLINIC) "RTN","SDAMUTDT",82,0) .E D "RTN","SDAMUTDT",83,0) ..S SDISOOFFSET=$$GETISOOFFSET(SDGMTDT) "RTN","SDAMUTDT",84,0) ..S SDOFFSET=$$GETOFFSETDIFF(TMPFM,SDCLINIC,SDISOOFFSET) "RTN","SDAMUTDT",85,0) .; "RTN","SDAMUTDT",86,0) .S SDFM=SDFM_SDTIME_SDOFFSET "RTN","SDAMUTDT",87,0) I SDFM["-9999"!(POP) Q -1 "RTN","SDAMUTDT",88,0) ; "RTN","SDAMUTDT",89,0) ;convert date(/time) from HL7 format back to Fileman "RTN","SDAMUTDT",90,0) I SDOFFSET'="" S SDFMDTM=$$HL7TFM^XLFDT(SDFM,"U") "RTN","SDAMUTDT",91,0) I SDOFFSET="" S SDFMDTM=$$HL7TFM^XLFDT(SDFM) "RTN","SDAMUTDT",92,0) Q:SDFMDTM<0 SDFMDTM ;error occurred in conversion "RTN","SDAMUTDT",93,0) ;check validity of date (including leap year check) "RTN","SDAMUTDT",94,0) S X=$$FMTE^XLFDT(SDFMDTM) "RTN","SDAMUTDT",95,0) D ^%DT "RTN","SDAMUTDT",96,0) Q:Y<0 -1 ;date(/time) not valid "RTN","SDAMUTDT",97,0) Q SDFMDTM "RTN","SDAMUTDT",98,0) ; "RTN","SDAMUTDT",99,0) REMOVEOFFSET(TIME) ; "RTN","SDAMUTDT",100,0) S TIME=$P(TIME,"-") "RTN","SDAMUTDT",101,0) S TIME=$P(TIME,"+") "RTN","SDAMUTDT",102,0) S TIME=$P(TIME,"Z") "RTN","SDAMUTDT",103,0) Q TIME "RTN","SDAMUTDT",104,0) GETISOOFFSET(DATE) ; "RTN","SDAMUTDT",105,0) N ISOOFFSET "RTN","SDAMUTDT",106,0) S ISOOFFSET=$P(DATE,"+",2) "RTN","SDAMUTDT",107,0) I ISOOFFSET="" S ISOOFFSET="-"_$P($P(DATE,"T",2),"-",2) "RTN","SDAMUTDT",108,0) Q $TR(ISOOFFSET,":") "RTN","SDAMUTDT",109,0) GETOFFSET(DATE,SDCLINIC) ; "RTN","SDAMUTDT",110,0) N OFFSET "RTN","SDAMUTDT",111,0) S OFFSET="" "RTN","SDAMUTDT",112,0) ;Clinc can be in a different time zone "RTN","SDAMUTDT",113,0) I $G(SDCLINIC) S OFFSET=$$GETTZOFFSET^SDESUTIL(DATE,SDCLINIC) "RTN","SDAMUTDT",114,0) ;get offset for VistA Instance "RTN","SDAMUTDT",115,0) I OFFSET="" S OFFSET=$$GETTZOFFSET^SDESUTIL(DATE) "RTN","SDAMUTDT",116,0) I OFFSET=-1 S OFFSET="BAD OFFSET" "RTN","SDAMUTDT",117,0) Q OFFSET "RTN","SDAMUTDT",118,0) ; "RTN","SDAMUTDT",119,0) GETOFFSETDIFF(DATE,SDCLINIC,SDISOOFFSET) ;Compare offsets and return the difference "RTN","SDAMUTDT",120,0) N SDCLNOFFSET,SDSYSOFFSET,OFFSET,TMPOFFSET "RTN","SDAMUTDT",121,0) S (OFFSET,SDCLNOFFSET)="" "RTN","SDAMUTDT",122,0) S (TMPOFFSET,SDSYSOFFSET)=$$GETOFFSET(DATE) "RTN","SDAMUTDT",123,0) I $G(SDCLINIC) S (TMPOFFSET,SDCLNOFFSET)=$$GETOFFSET(DATE,SDCLINIC) "RTN","SDAMUTDT",124,0) I TMPOFFSET=-1 Q "-9999" "RTN","SDAMUTDT",125,0) ;If called from ISOTFM and ISO offset is different from the Clinic/System offset "RTN","SDAMUTDT",126,0) I $G(SDISOOFFSET)'="",SDISOOFFSET'=TMPOFFSET D "RTN","SDAMUTDT",127,0) .S OFFSET=TMPOFFSET-SDISOOFFSET "RTN","SDAMUTDT",128,0) .I OFFSET?1"-".3N S OFFSET="+0"_$E(OFFSET,2,4) "RTN","SDAMUTDT",129,0) .I OFFSET?3N S OFFSET="-0"_OFFSET "RTN","SDAMUTDT",130,0) .I OFFSET?4N S OFFSET="-"_OFFSET "RTN","SDAMUTDT",131,0) ;If called by FMTISO and the Clinic time zone differs from the System time zone "RTN","SDAMUTDT",132,0) I $G(SDISOOFFSET)="",SDSYSOFFSET'=SDCLNOFFSET D "RTN","SDAMUTDT",133,0) .S OFFSET=SDCLNOFFSET-SDSYSOFFSET "RTN","SDAMUTDT",134,0) .I OFFSET?1"-".3N S OFFSET="-0"_$E(OFFSET,2,4) "RTN","SDAMUTDT",135,0) .I OFFSET?3N S OFFSET="+0"_OFFSET "RTN","SDAMUTDT",136,0) .I OFFSET?4N S OFFSET="+"_OFFSET "RTN","SDAMUTDT",137,0) Q OFFSET "RTN","SDAMUTDT",138,0) ; "RTN","SDAMUTDT",139,0) CVTTOFM(D) ; "RTN","SDAMUTDT",140,0) N X,Y,%DT "RTN","SDAMUTDT",141,0) S %DT="" "RTN","SDAMUTDT",142,0) S X=$P(D,"T") "RTN","SDAMUTDT",143,0) D ^%DT "RTN","SDAMUTDT",144,0) Q Y "RTN","SDAMUTDT",145,0) ; "RTN","SDAMUTDT",146,0) ; "RTN","SDAMUTDT",147,0) FMTGMT(SDFMDT) ;convert internal fileman format to extended GMT "RTN","SDAMUTDT",148,0) ;initialize variables "RTN","SDAMUTDT",149,0) ;***************************************************************** "RTN","SDAMUTDT",150,0) ;INPUT SDFMDT - Fileman date/time "RTN","SDAMUTDT",151,0) ;OUTPUT -1 error occurred in translation "RTN","SDAMUTDT",152,0) ; GMT date/time in ISO 8601 extended format (No Errors) "RTN","SDAMUTDT",153,0) ;***************************************************************** "RTN","SDAMUTDT",154,0) N SDDTM,SDGMT,SDTIME,SDOFFSET "RTN","SDAMUTDT",155,0) S SDDTM=$$FMTHL7^XLFDT(SDFMDT) "RTN","SDAMUTDT",156,0) Q:SDDTM<0 -1 "RTN","SDAMUTDT",157,0) ;extract out date and convert to ISO 8601 extended format "RTN","SDAMUTDT",158,0) S SDGMT=$E(SDDTM,1,4)_"-"_$E(SDDTM,5,6)_"-"_$E(SDDTM,7,8) "RTN","SDAMUTDT",159,0) ;if time is included, extract and convert to ISO 8601 external format "RTN","SDAMUTDT",160,0) I $L(SDDTM)>8 D "RTN","SDAMUTDT",161,0) .S SDTIME=$E(+SDDTM,9,99),SDOFFSET=$$TZ^XLFDT() "RTN","SDAMUTDT",162,0) .;determine if seconds are included in time "RTN","SDAMUTDT",163,0) .I $L(SDTIME)<5 D "RTN","SDAMUTDT",164,0) ..;no seconds included in date/time "RTN","SDAMUTDT",165,0) ..S SDGMT=SDGMT_"T"_$E(SDDTM,9,10)_":"_$E(SDDTM,11,99) "RTN","SDAMUTDT",166,0) .;seconds included in date/time "RTN","SDAMUTDT",167,0) .E S SDGMT=SDGMT_"T"_$E(SDTIME,1,2)_":"_$E(SDTIME,3,4)_":"_$E(SDTIME,5,6)_SDOFFSET "RTN","SDAMUTDT",168,0) Q SDGMT "RTN","SDAMUTDT",169,0) ; "RTN","SDAMUTDT",170,0) GMTTFM(SDGMTDT) ;convert ISO 8601 extended GMT date/time to fileman format "RTN","SDAMUTDT",171,0) ;initialize variables "RTN","SDAMUTDT",172,0) ;***************************************************************** "RTN","SDAMUTDT",173,0) ;INPUT SDGMTDT - ISO 8601 extended GMT date/time "RTN","SDAMUTDT",174,0) ;OUTPUT -1 error occurred in translation "RTN","SDAMUTDT",175,0) ; FM date/time (No Errors) "RTN","SDAMUTDT",176,0) ;***************************************************************** "RTN","SDAMUTDT",177,0) N SDFM,SDTIME,SDOFFSET,SDFMDTM,X,Y,%DT "RTN","SDAMUTDT",178,0) ;get offset for VistA Instance "RTN","SDAMUTDT",179,0) S SDOFFSET=$$TZ^XLFDT() "RTN","SDAMUTDT",180,0) ;pattern match date(/time) for correctness "RTN","SDAMUTDT",181,0) Q:((SDGMTDT["T")&'(SDGMTDT?4N1"-"2N1"-"2N1"T"2N1":"2N.E)) -1 "RTN","SDAMUTDT",182,0) Q:((SDGMTDT'["T")&'(SDGMTDT?4N1"-"2N1"-"2N)) -1 "RTN","SDAMUTDT",183,0) ;extract out date, removing punctuation "RTN","SDAMUTDT",184,0) S SDFM=$E(SDGMTDT,1,4)_$E(SDGMTDT,6,7)_$E(SDGMTDT,9,10) "RTN","SDAMUTDT",185,0) ;set parameters to validate date/time "RTN","SDAMUTDT",186,0) S %DT="TXS" "RTN","SDAMUTDT",187,0) ;extract out time if entered, removing all punctuation except for TZ offset "RTN","SDAMUTDT",188,0) I SDGMTDT>10 D "RTN","SDAMUTDT",189,0) .S SDTIME=$P($E(SDGMTDT,12,99),$E(SDOFFSET,1,1)) "RTN","SDAMUTDT",190,0) .;exclude time if 0's else FMTE returns previous date with .24 "RTN","SDAMUTDT",191,0) .Q:((SDTIME["00:00")!(SDTIME["00:00:00")) "RTN","SDAMUTDT",192,0) .;determine if seconds are included in time "RTN","SDAMUTDT",193,0) .I $L(SDTIME)<6 D "RTN","SDAMUTDT",194,0) ..;no seconds include in date/time "RTN","SDAMUTDT",195,0) ..S SDFM=SDFM_$E(SDGMTDT,12,13)_$E(SDGMTDT,15,99) "RTN","SDAMUTDT",196,0) .;seconds included in date/time "RTN","SDAMUTDT",197,0) .E S SDFM=SDFM_$E(SDTIME,1,2)_$E(SDTIME,4,5)_$E(SDTIME,7,8)_"-"_SDOFFSET "RTN","SDAMUTDT",198,0) ;convert date(/time) from HL7 format back to Fileman "RTN","SDAMUTDT",199,0) S SDFMDTM=$$HL7TFM^XLFDT(SDFM) "RTN","SDAMUTDT",200,0) Q:SDFMDTM<0 SDFMDTM ;error occurred in conversion "RTN","SDAMUTDT",201,0) ;check validity of date (including leap year check) "RTN","SDAMUTDT",202,0) S X=$$FMTE^XLFDT(SDFMDTM) "RTN","SDAMUTDT",203,0) D ^%DT "RTN","SDAMUTDT",204,0) Q:Y<0 -1 ;date(/time) not valid "RTN","SDAMUTDT",205,0) Q SDFMDTM "RTN","SDAMUTDT",206,0) ; "RTN","SDAMUTDT",207,0) SDAPIERR() ; SDAPI Error Messages. "RTN","SDAMUTDT",208,0) ;***************************************************************** "RTN","SDAMUTDT",209,0) ;INPUT N/A "RTN","SDAMUTDT",210,0) ;OUTPUT Extrinsic call returns error message "RTN","SDAMUTDT",211,0) ;***************************************************************** "RTN","SDAMUTDT",212,0) N SDERR S SDERR=$O(^TMP($J,"SDAMA301","")) "RTN","SDAMUTDT",213,0) I SDERR="" Q "" "RTN","SDAMUTDT",214,0) I +SDERR=101 Q "Error 101: The Appointment Database is not currently available. Please try again later." "RTN","SDAMUTDT",215,0) I +SDERR=115 Q "Error 115: Appointment request contains invalid values. Please contact National Help Desk." "RTN","SDAMUTDT",216,0) Q "Error 117: An error has occurred, check the RSA Error Log." "RTN","SDEC") 0^34^B136542757^B136558013 "RTN","SDEC",1,0) SDEC ;ALB/SAT,PC,LAB - VISTA SCHEDULING RPCS ;Jul 15, 2021@10:40 "RTN","SDEC",2,0) ;;5.3;Scheduling;**627,643,642,651,658,665,672,679,686,694,745,756,790,799,805**;Aug 13, 1993;Build 9 "RTN","SDEC",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDEC",4,0) Q "RTN","SDEC",5,0) ; "RTN","SDEC",6,0) ACCGROUP(SDECY) ;EP return active entries from the SDEC ACCESS GROUP file 409.822 "RTN","SDEC",7,0) D ACCGROUP^SDEC45(.SDECY) Q "RTN","SDEC",8,0) ACCGPTYG(SDECY) ;EP Get access group types "RTN","SDEC",9,0) D ACCGPTYG^SDEC15(.SDECY) Q "RTN","SDEC",10,0) ACCTYPE(SDECY) ;EP return active entries from the SDEC ACCESS TYPE file 409.823 "RTN","SDEC",11,0) D ACCTYPE^SDEC45(.SDECY) Q "RTN","SDEC",12,0) ADDACCG(SDECY,SDECVAL) ;EP ADD/EDIT ACCESS GROUP "RTN","SDEC",13,0) D ADDACCG^SDEC21(.SDECY,$G(SDECVAL)) Q "RTN","SDEC",14,0) ADDACCTY(SDECY,SDECVAL) ;EP ADD/EDIT ACCESS TYPE "RTN","SDEC",15,0) D ADDACCTY^SDEC14(.SDECY,$G(SDECVAL)) Q "RTN","SDEC",16,0) ADDAGI(SDECY,SDECIEN,SDECIEN1) ;EP Add access group item - Adds ACCESS GROUP TYPE file entry "RTN","SDEC",17,0) D ADDAGI^SDEC22(.SDECY,$G(SDECIEN),$G(SDECIEN1)) Q "RTN","SDEC",18,0) ADDRES(SDECY,SDECVAL) ;EP ADD/EDIT RESOURCE "RTN","SDEC",19,0) D ADDRES^SDEC16(.SDECY,$G(SDECVAL)) Q "RTN","SDEC",20,0) ADDRESU(SDECY,SDECVAL) ;EP ADD/EDIT RESOURCE USER "RTN","SDEC",21,0) D ADDRESU^SDEC18(.SDECY,$G(SDECVAL)) Q "RTN","SDEC",22,0) ADDRG(SDECY,SDECVAL) ;EP ADD/EDIT RESOURCE GROUP "RTN","SDEC",23,0) D ADDRG^SDEC19(.SDECY,$G(SDECVAL)) Q "RTN","SDEC",24,0) ADDRGI(SDECY,SDECIEN,SDECIEN1) ;EP Adds RESOURCEID SDECIEN1 to RESOURCE GROUP entry SDECIEN "RTN","SDEC",25,0) D ADDRGI^SDEC20(.SDECY,$G(SDECIEN),$G(SDECIEN1)) Q "RTN","SDEC",26,0) ;Remove APBLKALL *745 "RTN","SDEC",27,0) APBLKOV(SDECY,SDECSTART,SDECEND,SDECRES,SDECWI) ;EP APPT BLOCKS OVERLAP "RTN","SDEC",28,0) D APBLKOV^SDEC05(.SDECY,$G(SDECSTART),$G(SDECEND),$G(SDECRES),$G(SDECWI)) Q "RTN","SDEC",29,0) APPADD ;EP ADD NEW APPOINTMENT "RTN","SDEC",30,0) Q ;calls directly to APPADD^SDEC07 "RTN","SDEC",31,0) APPDEL(SDECY,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11) ;EP Cancels appointment *745,756 "RTN","SDEC",32,0) D APPDEL^SDEC08(.SDECY,$G(S1),$G(S2),$G(S3),$G(S4),$G(S5),$G(S6),$G(S7),$G(S8),$G(S9),$G(S10),$G(S11)) Q "RTN","SDEC",33,0) APPIDGET(SDECY,SDID) ;GET SDEC APPOINTMENT ien for given External ID "RTN","SDEC",34,0) D APPIDGET^SDEC55(.SDECY,$G(SDID)) Q "RTN","SDEC",35,0) APPSDGET(SDECY,MAXREC,LASTSUB,SDBEG,SDEND,NOTEFLG,SDRES,DFN,SDID,SDIEN) ;GET appointment data from SDEC APPOINTMENT file 409.84 "RTN","SDEC",36,0) D APPSDGET^SDEC55A(.SDECY,$G(MAXREC),$G(LASTSUB),$G(SDBEG),$G(SDEND),$G(NOTEFLG),$G(SDRES),$G(DFN),$G(SDID),$G(SDIEN)) Q "RTN","SDEC",37,0) APPSLOTS(SDECY,SDCL,SDBEG,SDEND) ;return array of appt slots and availability - RPC "RTN","SDEC",38,0) D APPSLOTS^SDEC57(.SDECY,$G(SDCL),$G(SDBEG),$G(SDEND)) Q "RTN","SDEC",39,0) APPTLETR(SDECY,SDECAPID,LT) ;EP Print Appointment Letter "RTN","SDEC",40,0) D APPTLETR^SDEC40(.SDECY,$G(SDECAPID),$G(LT)) Q "RTN","SDEC",41,0) ;Remove APPTEVLG *745 "RTN","SDEC",42,0) APPTYPES(RET,DFN) ; EP for SDEC APPTYPES - Return all active Appointment types from the APPOINTMENT TYPE file 409.1 "RTN","SDEC",43,0) D APPTYPES^SDECWL(.RET,$G(DFN)) Q "RTN","SDEC",44,0) ARCLOSE(RET,S1,S2,S3,S4,S5) ;Appt Request close "RTN","SDEC",45,0) D BLDARR(.INP,"ARCLOSE+0") ;*745 "RTN","SDEC",46,0) D ARCLOSE^SDECAR(.RET,.INP) Q "RTN","SDEC",47,0) ARCLOSE1(RET,INP) ; Appt Request CLOSE (without ... for VistA calls) ; "RTN","SDEC",48,0) D ARCLOSE^SDECAR(.RET,.INP) Q "RTN","SDEC",49,0) ARDGET(SDECY) ;get values for disposition field of SDEC APPT REQUEST file "RTN","SDEC",50,0) D ARDGET^SDECAR(.SDECY) Q "RTN","SDEC",51,0) ARGET(RET,ARIEN1,MAXREC,SDBEG,SDEND,DFN,LASTSUB,SDTOP,SVCL,DESDT,PRL,SVCR,SCVISIT,CLINIC,ORIGDT) ;EP Appt Request GET "RTN","SDEC",52,0) D ARGET^SDECAR1(.RET,$G(ARIEN1),$G(MAXREC),$G(SDBEG),$G(SDEND),$G(DFN),$G(LASTSUB),$G(SDTOP),$G(SVCL),$G(DESDT),$G(PRL),$G(SVCR),$G(SCVISIT),$G(CLINIC),$G(ORIGDT)) Q "RTN","SDEC",53,0) ARMRTGET(SDECY,ARIEN) ;GET number of entries and values in MRTC CALC PREF DATES "RTN","SDEC",54,0) D ARMRTGET^SDECAR(.SDECY,$G(ARIEN)) Q "RTN","SDEC",55,0) ARMRTSET(SDECY,ARIEN,MRTC) ;SET MRTC CALC PREF DATES dates - clears the multiple and sets the new ones that are passed in "RTN","SDEC",56,0) D ARMRTSET^SDECAR(.SDECY,$G(ARIEN),$G(MRTC)) Q "RTN","SDEC",57,0) AROPEN(RET,ARAPP,ARIEN,ARDDT) ;Appt Request Open/re-open "RTN","SDEC",58,0) D AROPEN^SDECAR(.RET,$G(ARAPP),$G(ARIEN),$G(ARDDT)) Q "RTN","SDEC",59,0) ARPCSET(SDECY,INP,ARIEN) ;SET update patient contacts in SDEC APPT REQUEST file "RTN","SDEC",60,0) D ARPCSET^SDECAR(.SDECY,$G(INP),$G(ARIEN)) Q "RTN","SDEC",61,0) ARSET(RET,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15,S16,S17,S18,S19,S20,S21,S22,S23,S24,S25,S26,S27,S28,S29) ;EP Appt Request Set ; "RTN","SDEC",62,0) D BLDARR(.INP,"ARSET+0") ;*745 "RTN","SDEC",63,0) D ARSET^SDECAR2(.RET,.INP) Q "RTN","SDEC",64,0) ARSET1(RET,INP) ;EP Appt Request Set (without ... for VistA calls) "RTN","SDEC",65,0) D ARSET^SDECAR2(.RET,.INP) Q "RTN","SDEC",66,0) AVADD(SDECY,SDECSTART,SDECEND,SDECTYPID,SDECRES,SDECSLOTS,SDECNOTE) ;EP SET Create entry in SDEC ACCESS BLOCK "RTN","SDEC",67,0) D AVADD^SDEC12(.SDECY,$G(SDECSTART),$G(SDECEND),$G(SDECTYPID),$G(SDECRES),$G(SDECSLOTS),$G(SDECNOTE)) Q "RTN","SDEC",68,0) AVDEL(SDECY,SDECAVID) ;EP Cancel Availability - Deletes Access Block "RTN","SDEC",69,0) D AVDEL^SDEC13(.SDECY,$G(SDECAVID)) Q "RTN","SDEC",70,0) AVDELDT(SDECY,SDECRESD,SDECSTART,SDECEND) ;EP Cancel availability in a date range "RTN","SDEC",71,0) D AVDELDT^SDEC13(.SDECY,$G(SDECRESD),$G(SDECSTART),$G(SDECEND)) Q "RTN","SDEC",72,0) BOOKHLDY(SDECY,SDECCL) ; Returns can book on holiday flag for a clinic. 12/1/17 wtc 679 "RTN","SDEC",73,0) D BOOKHLDY^SDEC32(.SDECY,SDECCL) Q ; "RTN","SDEC",74,0) CANCKOUT(SDECY,SDECAPTID) ;EP Cancel Check Out appointment "RTN","SDEC",75,0) D CANCKOUT^SDEC25(.SDECY,$G(SDECAPTID)) Q "RTN","SDEC",76,0) CANREAS(SDECY,SDECIN) ;EP return active/inactive entries from the CANCELLATION REASONS table 409.2 "RTN","SDEC",77,0) D CANREAS^SDEC45(.SDECY,$G(SDECIN)) Q "RTN","SDEC",78,0) CAP(SDECY,DFN,SDAMEVT,SDT,DVBADA,SDAUTORB,SDCANVET) ; "RTN","SDEC",79,0) D CAP^SDEC58(.SDECY,$G(DFN),$G(SDAMEVT),$G(SDT),$G(DVBADA),$G(SDAUTORB),$G(SDCANVET)) Q "RTN","SDEC",80,0) CGET(SDECY) ;GET active Countries from the COUNTRY CODE file 779.004 "RTN","SDEC",81,0) D CGET^SDEC55(.SDECY) Q "RTN","SDEC",82,0) CHECKIN(SDECY,SDECAPTID,SDECCDT,SDECCC,SDECPRV,SDECROU,SDECVCL,SDECVFM,SDECOG,SDECCR,SDECPCC,SDECWHF) ;EP Check in appointment "RTN","SDEC",83,0) D CHECKIN^SDEC25(.SDECY,$G(SDECAPTID),$G(SDECCDT),$G(SDECCC),$G(SDECPRV),$G(SDECROU),$G(SDECVCL),$G(SDECVFM),$G(SDECOG),$G(SDECCR),$G(SDECPCC),$G(SDECWHF)) Q "RTN","SDEC",84,0) CHECKOUT(SDECY,DFN,SDT,SDCODT,SDECAPTID,VPRV) ;EP Check Out appointment "RTN","SDEC",85,0) D CHECKOUT^SDEC25(.SDECY,$G(DFN),$G(SDT),$G(SDCODT),$G(SDECAPTID),$G(VPRV)) Q "RTN","SDEC",86,0) CLINALL(RET,MAXREC,SDECP) ; EP Return the IEN and NAME for all entries in the SD WL CLINIC LOCATION file "RTN","SDEC",87,0) D CLINALL^SDECWL(.RET,$G(MAXREC),$G(SDECP)) Q "RTN","SDEC",88,0) ;Remove CLINCAN *745 "RTN","SDEC",89,0) CLINDIS(SDECY,SDECCLST,SDECBEG,SDECEND,SDECWI) ;EP Return formatted text output of the Clinic Schedules Report "RTN","SDEC",90,0) D CLINDIS^SDEC47(.SDECY,$G(SDECCLST),$G(SDECBEG),$G(SDECEND),$G(SDECWI)) Q "RTN","SDEC",91,0) CLINDISW(SDECY,SDECCLST,SDECBEG,SDECEND) ;EP Return formatted text output of the Clinic Schedules Report for Walkins "RTN","SDEC",92,0) D CLINDISW^SDEC47(.SDECY,$G(SDECCLST),$G(SDECBEG),$G(SDECEND)) Q "RTN","SDEC",93,0) CLINLET(SDECY,SDECCLST,SDECBEG,SDECEND,SDECWI) ;EP CLINIC LETTERS Appointment data "RTN","SDEC",94,0) D CLINLET^SDEC27(.SDECY,$G(SDECCLST),$G(SDECBEG),$G(SDECEND),$G(SDECWI)) Q "RTN","SDEC",95,0) CLINLETW(SDECY,SDECCLST,SDECBEG,SDECEND) ;EP CLINIC LETTERS WALK-IN Appointment data for Walk-in Appointments only "RTN","SDEC",96,0) D CLINLETW^SDEC27(.SDECY,$G(SDECCLST),$G(SDECBEG),$G(SDECEND)) Q "RTN","SDEC",97,0) CLINPROV(SDECY,SDECCL) ;EP return all providers for a given clinic from the HOSPITAL LOCATION file 44 "RTN","SDEC",98,0) D CLINPROV^SDEC45(.SDECY,$G(SDECCL)) Q "RTN","SDEC",99,0) CLINSET(SDECY,SDNOSLOT,SDIENS,SDECP,SDNOLET,MAXREC) ;EP Returns CLINIC SETUP PARAMETERS for clinics that are active in the HOSPITAL LOCATION file "RTN","SDEC",100,0) D CLINSET^SDEC32(.SDECY,$G(SDNOSLOT),$G(SDIENS),$G(SDECP),$G(SDNOLET),$G(MAXREC)) Q "RTN","SDEC",101,0) CLINSTOP(SDECY,SDP) ;EP CLINIC STOP remote procedure "RTN","SDEC",102,0) D CLINSTOP^SDEC45(.SDECY,$G(SDP)) Q "RTN","SDEC",103,0) COPYAPPT(SDECY,SDECRES,SDEC44,SDECBEG,SDECEND) ;EP Copy appointments from HOSPITAL LOCATION to SDEC RESOURCE "RTN","SDEC",104,0) D COPYAPPT^SDEC29(.SDECY,$G(SDECRES),$G(SDEC44),$G(SDECBEG),$G(SDECEND)) Q "RTN","SDEC",105,0) CPCANC(SDECY,SDECTSK) ;EP Copy Appointment Cancel "RTN","SDEC",106,0) D CPCANC^SDEC29(.SDECY,$G(SDECTSK)) Q "RTN","SDEC",107,0) CPSTAT(SDECY,SDECTSK) ;EP Copy Appointment Status "RTN","SDEC",108,0) D CPSTAT^SDEC29(.SDECY,$G(SDECTSK)) Q "RTN","SDEC",109,0) CRSCHED(SDECY,SDECRES,SDECSTART,SDECEND,SDECWKIN,MAXREC,LASTSUB) ;EP Create Resource Appointment Schedule ;alb/sat 672 "RTN","SDEC",110,0) D CRSCHED^SDEC02(.SDECY,$G(SDECRES),$G(SDECSTART),$G(SDECEND),$G(SDECWKIN),$G(MAXREC),$G(LASTSUB)) Q "RTN","SDEC",111,0) CSLOTSCH(SDECY,SDECRES,SDECSTART,SDECEND,SDECTYPES,SDECSRCH) ;GET Create Assigned Slot Schedule "RTN","SDEC",112,0) D CSLOTSCH^SDEC04(.SDECY,$G(SDECRES),$G(SDECSTART),$G(SDECEND),$G(SDECTYPES),$G(SDECSRCH)) Q "RTN","SDEC",113,0) CURFACG(SDECY,SDECDUZ) ;EP get current division/facility for given user "RTN","SDEC",114,0) D CURFACG^SDEC46(.SDECY,$G(SDECDUZ)) Q "RTN","SDEC",115,0) CVARAPPT(SDECY,SDCL) ;EP IS Clinic Variable Appointment Length "RTN","SDEC",116,0) D CVARAPPT^SDEC37(.SDECY,$G(SDCL)) Q "RTN","SDEC",117,0) DELAG(SDECY,SDECGRP) ;EP Deletes entry having IEN SDECGRP from SDEC ACCESS GROUP file "RTN","SDEC",118,0) D DELAG^SDEC21(.SDECY,$G(SDECGRP)) Q "RTN","SDEC",119,0) DELAGI(SDECY,SDECIEN,SDECIEN1) ;EP Deletes entry having Access Group SDECIEN and Access Type SDECIEN1 the SDEC ACCESS GROUP TYPE file "RTN","SDEC",120,0) D DELAGI^SDEC22(.SDECY,$G(SDECIEN),$G(SDECIEN1)) Q "RTN","SDEC",121,0) DELRESGP(SDECY,SDECGRP) ;EP Deletes entry name SDECGRP from SDEC RESOURCE GROUP file "RTN","SDEC",122,0) D DELRESGP^SDEC19(.SDECY,$G(SDECGRP)) Q "RTN","SDEC",123,0) DELRGI(SDECY,SDECIEN,SDECIEN1) ;EP Deletes entry SDECIEN1 from entry SDECIEN in the SDEC RESOURCE GROUP file "RTN","SDEC",124,0) D DELRGI^SDEC20(.SDECY,$G(SDECIEN),$G(SDECIEN1)) Q "RTN","SDEC",125,0) DELRU(SDECY,SDECIEN) ;EP Delete Resource User from SDEC RESOURCE USER file "RTN","SDEC",126,0) D DELRU^SDEC18(.SDECY,$G(SDECIEN)) Q "RTN","SDEC",127,0) EDITAPPT(SDECY,SDECAPTID,SDECNOTE,SDECLEN) ;EP Edit appointment (only 'note text' and appointment length can be edited) "RTN","SDEC",128,0) D EDITAPPT^SDEC26(.SDECY,$G(SDECAPTID),$G(SDECNOTE),$G(SDECLEN)) Q "RTN","SDEC",129,0) EHRPT(SDECY,SDECWID,SDECDFN) ;EP Raise patient selection event to EHR "RTN","SDEC",130,0) D EHRPT^SDEC30(.SDECY,$G(SDECWID),$G(SDECDFN)) Q "RTN","SDEC",131,0) ETHGET(SDECY) ;GET active Ethnicities from the ETHNICITY file 10.2 "RTN","SDEC",132,0) D ETHGET^SDEC55(.SDECY) Q "RTN","SDEC",133,0) ETHCMGET(SDECY) ;GET values from the RACE AND ETHNICITY COLLECTION METHOD file 10.3 "RTN","SDEC",134,0) D ETHCMGET^SDEC55(.SDECY) Q "RTN","SDEC",135,0) FACLIST(SDECY,DFN) ; Return list of remote facilities for patient "RTN","SDEC",136,0) D PTINQ^SDECPT(.SDECY,$G(DFN)) Q "RTN","SDEC",137,0) FAPPTGET(SDECY,DFN,SDBEG,SDEND,SDANC) ;GET Future appointments for given patient and date range "RTN","SDEC",138,0) D FAPPTGET^SDEC50(.SDECY,$G(DFN),$G(SDBEG),$G(SDEND),$G(SDANC)) Q "RTN","SDEC",139,0) GETFAC(SDECY,SDECDUZ) ;EP Gets all facilities for a user "RTN","SDEC",140,0) D GETFAC^SDEC46(.SDECY,$G(SDECDUZ)) Q "RTN","SDEC",141,0) GETONE(SDECY,SDGMR) ;EP Return data on one consult "RTN","SDEC",142,0) D GETONE^SDEC51(.SDECY,$G(SDGMR)) Q "RTN","SDEC",143,0) GETREGA(SDECRET,DFN) ;EP return basic reg info/demographics for given patient "RTN","SDEC",144,0) D GETREGA^SDEC09(.SDECRET,$G(DFN)) Q "RTN","SDEC",145,0) GETSITES(SDECY) ;return active National VA site names and station numbers "RTN","SDEC",146,0) D GETSITES^SDEC59(.SDECY) Q "RTN","SDEC",147,0) GETVPRV(BGOY,VPRV) ;EP return data from the V PROVIDER file "RTN","SDEC",148,0) D GETVPRV^SDEC44(.BGOY,$G(VPRV)) Q "RTN","SDEC",149,0) HIDE(SDECY) ;Return clinics hidden from display "RTN","SDEC",150,0) D HIDE^SDEC45(.SDECY) Q "RTN","SDEC",151,0) HOLIDAY(SDECY,SDECBD) ;EP return all entries from the HOLIDAY file 40.5 "RTN","SDEC",152,0) D HOLIDAY^SDEC45(.SDECY,$G(SDECBD)) Q "RTN","SDEC",153,0) HOSPLOC(SDECY,SDECP,MAXREC,LSUB) ;EP return HOSPITAL LOCATIONs "RTN","SDEC",154,0) D HOSPLOC^SDEC32(.SDECY,$G(SDECP),$G(MAXREC),$G(LSUB)) Q "RTN","SDEC",155,0) IMHERE(SDECRES) ; "RTN","SDEC",156,0) D IMHERE^SDEC31(.SDECRES) Q "RTN","SDEC",157,0) NETLOC(SDECY,LOCATION) ;GET data from the NETWORK LOCATION file 2005.2 "RTN","SDEC",158,0) D NETLOC^SDEC59(.SDECY,$G(LOCATION)) Q "RTN","SDEC",159,0) NEWPERS(SDECY,SDCLASS,SDPART,MAXREC,LSUB,INACT) ;return entries from the USR CLASS MEMBERSHIP file that have the given USR CLASS (default is PROVIDER) "RTN","SDEC",160,0) D NEWPERS^SDEC45(.SDECY,$G(SDCLASS),$G(SDPART),$G(MAXREC),$G(LSUB),$G(INACT)) Q "RTN","SDEC",161,0) NOSHOPAT(SDECY,DFN,SDCL) ;EP COLLECT NO-SHOW DATA for Patient "RTN","SDEC",162,0) D NOSHOPAT^SDEC37(.SDECY,$G(DFN),$G(SDCL)) Q "RTN","SDEC",163,0) NOSHOW(SDECY,SDECAPTID,SDECNS,USERIEN,SDECDATE) ;EP Sets appointment noshow flag in SDEC APPOINTMENT file "RTN","SDEC",164,0) D NOSHOW^SDEC31(.SDECY,$G(SDECAPTID),$G(SDECNS),$G(USERIEN),$G(SDECDATE)) Q "RTN","SDEC",165,0) OVBOOK(SDECY,SDCL,SDBEG,SDECRES) ;EP RPC - OVERBOOK - CHECK FOR OVERBOOK FOR GIVEN CLINIC, DATE, AND RESOURCE "RTN","SDEC",166,0) D OVBOOK^SDEC07A(.SDECY,$G(SDCL),$G(SDBEG),$G(SDECRES)) Q "RTN","SDEC",167,0) PATAPPTD(SDECY,DFN) ;EP Return the Patient appointment display "RTN","SDEC",168,0) D PATAPPTD^SDEC27(.SDECY,$G(DFN)) Q "RTN","SDEC",169,0) PATAPPTH(SDECY,DFN) ;EP return patient's appointment history for given patient - RPC "RTN","SDEC",170,0) D PATAPPTH^SDEC48(.SDECY,$G(DFN)) Q "RTN","SDEC",171,0) PCSGET(SDECY,SDSVSP) ;GET clinics for a service/specialty (clinic stop) "RTN","SDEC",172,0) D PCSGET^SDEC50(.SDECY,$G(SDSVSP)) Q "RTN","SDEC",173,0) PCSTGET(SDECY,DFN,SDCL,SDBEG,SDEND) ;GET patient clinic status for a clinic for a given time frame - has the patient been seen by the given Clinic in the past 24 months "RTN","SDEC",174,0) D PCSTGET^SDEC50(.SDECY,$G(DFN),$G(SDCL),$G(SDBEG),$G(SDEND)) Q "RTN","SDEC",175,0) PCST2GET(SDECY,DFN,STOP,SDBEG,SDEND) ;GET patient clinic status for a service/specialty (clinic stop) for a given time frame - has the patient been seen any clinics with the given service/specialty (clinic stop) in the past 24 months "RTN","SDEC",176,0) D PCST2GET^SDEC50(.SDECY,$G(DFN),$G(STOP),$G(SDBEG),$G(SDEND)) Q "RTN","SDEC",177,0) PREFGET(SDECY,DFN,INAC) ;EP Get values from SDEC PREFERENCES AND SPECIAL NEEDS file for given patient "RTN","SDEC",178,0) D PREFGET^SDEC49(.SDECY,$G(DFN),$G(INAC)) Q "RTN","SDEC",179,0) PREFGETV(SDECY) ;EP Get all valid PREFERENCE text from SDEC PREFERENCES AND SPECIAL NEEDS file "RTN","SDEC",180,0) D PREFGETV^SDEC49(.SDECY) Q "RTN","SDEC",181,0) PREFSET(SDECY,DFN,PREF,REMARK) ;EP Set values to SDEC PREFERENCES AND SPECIAL NEEDS file ;alb/sat 658 add REMARK "RTN","SDEC",182,0) D PREFSET^SDEC49(.SDECY,$G(DFN),$G(PREF),$G(REMARK)) Q "RTN","SDEC",183,0) PRIV(SDECY,CLINIEN,USER) ;IS this USER in the PRIVILEGED USER multiple for the clinic "RTN","SDEC",184,0) D PRIV^SDEC32(.SDECY,$G(CLINIEN),$G(USER)) Q "RTN","SDEC",185,0) PROVALL(SDECY,SDECCL) ;EP return all providers for a given clinic from the HOSPITAL LOCATION file 44 "RTN","SDEC",186,0) D PROVALL^SDEC45(.SDECY,$G(SDECCL)) Q "RTN","SDEC",187,0) PROVCLIN(SDECY,SDECPRV) ;EP PROVIDER CLINICS remote procedure "RTN","SDEC",188,0) D PROVCLIN^SDEC45(.SDECY,$G(SDECPRV)) Q "RTN","SDEC",189,0) PTINQ(SDECY,DFN) ;GET output from ORWPT PTINQ in DataTable format "RTN","SDEC",190,0) D PTINQ^SDECPT(.SDECY,$G(DFN)) Q "RTN","SDEC",191,0) PTLOOKRS(SDECY,SDECP,SDECC,LASTSUB) ;EP Patient Lookup "RTN","SDEC",192,0) D PTLOOKRS^SDEC28(.SDECY,$G(SDECP),$G(SDECC),$G(LASTSUB)) Q "RTN","SDEC",193,0) PTSET(SDECY,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15,S16,S17,S18,S19,S20,S21,S22,S23,S24,S25,S26,S27,S28,S29,S30,S31,S32) ;SET patient demographics "RTN","SDEC",194,0) D BLDARR(.INP,"PTSET+0") ;*745 "RTN","SDEC",195,0) D PTSET^SDEC53(.SDECY,.INP) Q "RTN","SDEC",196,0) PTSET1(SDECY,INP) ;SET patient demographics (call from debug) "RTN","SDEC",197,0) D PTSET^SDEC53(.SDECY,.INP) Q "RTN","SDEC",198,0) RACEGET(SDECY) ;GET active Race entries from the RACE file 10 "RTN","SDEC",199,0) D RACEGET^SDEC55(.SDECY) Q "RTN","SDEC",200,0) RAISEVNT(SDECY,SDECEVENT,SDECPARAM,SDECSIP,SDECSPT) ;EP RAISE EVENT "RTN","SDEC",201,0) D RAISEVNT^SDEC23(.SDECY,$G(SDECEVENT),$G(SDECPARAM),$G(SDECSIP),$G(SDECSPT)) Q "RTN","SDEC",202,0) ;Removed REBKCLIN *745 "RTN","SDEC",203,0) REBKLIST(SDECY,SDECLIST) ;EP patient appointments used in listing REBOOKED appointments for a list of appointmentIDs. "RTN","SDEC",204,0) D REBKLIST^SDEC34(.SDECY,$G(SDECLIST)) Q "RTN","SDEC",205,0) REBKNEXT(SDECY,SDECDATE,SDECRES,SDECTPID) ;EP find the next ACCESS BLOCK in resource SDECRES after SDECSTART "RTN","SDEC",206,0) D REBKNEXT^SDEC33(.SDECY,$G(SDECDATE),$G(SDECRES),$G(SDECTPID)) Q "RTN","SDEC",207,0) RECIEN(SDECY,RECIEN) ;GET RECALL REMINDERS for given ID "RTN","SDEC",208,0) D RECIEN^SDEC52(.SDECY,$G(RECIEN)) Q "RTN","SDEC",209,0) RECGET(SDECY,DFN,SDBEG,SDEND,MAXREC,LASTSUB,RECIEN,SDSTOP,SDFLAGS,SDCLL) ; GET entries from the RECALL REMINDERS file 403.5 for a given Patient and Recall Date range. ;alb/sat 658 add SDCLL "RTN","SDEC",210,0) D RECGET^SDEC52(.SDECY,$G(DFN),$G(SDBEG),$G(SDEND),$G(MAXREC),$G(LASTSUB),$G(RECIEN),$G(SDSTOP),$G(SDFLAGS),$G(SDCLL)) Q "RTN","SDEC",211,0) RECSET(SDECY,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15) ; SET/EDIT/CANCEL/DELETE an entry to the RECALL REMINDERS file 403.5 "RTN","SDEC",212,0) D BLDARR(.INP,"RECSET+0") ;*745 "RTN","SDEC",213,0) D RECSET^SDEC52A(.SDECY,.INP) Q "RTN","SDEC",214,0) RECSET1(SDECY,INP) ; SET/EDIT/CANCEL/DELETE an entry to the RECALL REMINDERS file 403.5 "RTN","SDEC",215,0) D RECSET^SDEC52A(.SDECY,.INP) Q "RTN","SDEC",216,0) RECDSET(SDECY,RECALLIEN,SDRRFTR,SDCOMM) ; DELETE an entry to the RECALL REMINDERS file 403.5 "RTN","SDEC",217,0) D RECDSET^SDEC52A(.SDECY,$G(RECALLIEN),$G(SDRRFTR),$G(SDCOMM)) Q "RTN","SDEC",218,0) RECAPGET(SDECY) ; GET entries from the RECALL REMINDERS APPT TYPE file 403.51 "RTN","SDEC",219,0) D RECAPGET^SDEC52B(.SDECY) Q "RTN","SDEC",220,0) RECPRGET(SDECY,RECINACT,SDECP,MAXREC,LASTSUB) ;GET entries from the RECALL REMINDERS PROVIDERS file 403.54 "RTN","SDEC",221,0) D RECPRGET^SDEC52B(.SDECY,$G(RECINACT),$G(SDECP),$G(MAXREC),$G(LASTSUB)) Q "RTN","SDEC",222,0) REGEVENT(SDECY,SDECEVENT,SDECIP,SDECPORT) ;EP Called by client to inform server of client's interest in SDECEVENT "RTN","SDEC",223,0) D REGEVENT^SDEC23(.SDECY,$G(SDECEVENT),$G(SDECIP),$G(SDECPORT)) Q "RTN","SDEC",224,0) REP1GET(SDECY,MAXREC,LASTSUB,PNAME) ;GET clinic data for report "RTN","SDEC",225,0) D REP1GET^SDEC56(.SDECY,$G(MAXREC),$G(LASTSUB),$G(PNAME)) Q "RTN","SDEC",226,0) REQGET(SDECY,SDBEG,SDEND,MAXREC,LASTSUB,SDGMR) ; GET entries with an ACTIVITY of RECEIVED, but do not have an ACTIVITY of SCHEDULED from the REQUEST/CONSULTATING file 123 "RTN","SDEC",227,0) D REQGET^SDEC51(.SDECY,$G(SDBEG),$G(SDEND),$G(MAXREC),$G(LASTSUB),$G(SDGMR)) Q "RTN","SDEC",228,0) RESGPUSR(SDECY,SDECDUZ) ;EP GROUP RESOURCE "RTN","SDEC",229,0) D RESGPUSR^SDEC01(.SDECY,$G(SDECDUZ)) Q "RTN","SDEC",230,0) RESGRPUS(SDECY,SDECDUZ) ;EP return ACTIVE resource group names for the given user "RTN","SDEC",231,0) D RESGRPUS^SDEC01(.SDECY,$G(SDECDUZ)) Q "RTN","SDEC",232,0) RESLETRF(SDECY,SDECRES,SDECLT) ;EP Return formatted text output of the Resource's Letter - either "LETTER TEXT" (also used as Reminder Letter), NO SHOW LETTER, or CLINIC CANCELLATION LETTER. "RTN","SDEC",233,0) D RESLETRF^SDEC47(.SDECY,$G(SDECRES),$G(SDECLT)) Q "RTN","SDEC",234,0) RESLETRS(SDECY,SDECLIST,SDLTR,SDNOS,SDCAN) ;EP GET recordset of RESOURCES and associated LETTERS "RTN","SDEC",235,0) D RESLETRS^SDEC35(.SDECY,$G(SDECLIST),$G(SDLTR),$G(SDNOS),$G(SDCAN)) Q "RTN","SDEC",236,0) RESUSER(SDECY,SDRES) ;EP SDEC RESOURCE USER remote procedure returns all entries from the SDEC RESOURCE USER table 409.833 "RTN","SDEC",237,0) D RESUSER^SDEC45(.SDECY,$G(SDRES)) Q "RTN","SDEC",238,0) RESOURCE(SDECY,SDECDUZ,SDACT,SDTYPE,MAXREC,LASTSUBI,SDIEN,SDECP) ;EP Returns ADO Recordset with ALL RESOURCE names "RTN","SDEC",239,0) D RESOURCE^SDEC01A(.SDECY,$G(SDECDUZ),$G(SDACT),$G(SDTYPE),$G(MAXREC),$G(LASTSUBI),$G(SDIEN),$G(SDECP)) Q "RTN","SDEC",240,0) SCHUSR(SDECY) ;EP Return recordset of all users in NEW PERSON having SDECZMENU key "RTN","SDEC",241,0) D SCHUSR^SDEC17(.SDECY) Q "RTN","SDEC",242,0) SEARCHAV(SDECY,SDECRES,SDECSTRT,SDECEND,SDECTYPES,SDECAMPM,SDECWKDY) ;EP Searches availability database "RTN","SDEC",243,0) D SEARCHAV^SDEC24(.SDECY,$G(SDECRES),$G(SDECSTRT),$G(SDECEND),$G(SDECTYPES),$G(SDECAMPM),$G(SDECWKDY)) Q "RTN","SDEC",244,0) SETFAC(SDECY,SDECDUZ,SDECFAC) ;EP SET FACILITY "RTN","SDEC",245,0) D SETFAC^SDEC46(.SDECY,$G(SDECDUZ),$G(SDECFAC)) Q "RTN","SDEC",246,0) SETRBOOK(SDECY,SDECAPPT,SDECDATE) ;EP Sets rebook date into appointment "RTN","SDEC",247,0) D SETRBOOK^SDEC33(.SDECY,$G(SDECAPPT),$G(SDECDATE)) Q "RTN","SDEC",248,0) SPACEBAR(SDECY,SDECDIC,SDECVAL) ;EP Update ^DISV with most recent lookup value SDECVAL from file SDECDIC "RTN","SDEC",249,0) D SPACEBAR^SDEC30(.SDECY,$G(SDECDIC),$G(SDECVAL)) Q "RTN","SDEC",250,0) ;Removed SUMMGET *745 "RTN","SDEC",251,0) SUMMGET2(SDECRET,SDBEG,SDEND,USER) ;Get compiled Audit Report for a given date range "RTN","SDEC",252,0) D SUMMGET2^SDECAUD(.SDECRET,$G(SDBEG),$G(SDEND),$G(USER)) Q "RTN","SDEC",253,0) SUMMAGET(SDECY,SDBEG,SDEND,USER,LSUB,MAXREC) ;get ALL appointments with a cancel status from SDEC APPOINTMENT for given date range and user "RTN","SDEC",254,0) D SUMMAGET^SDEC54A(.SDECY,$G(SDBEG),$G(SDEND),$G(USER),$G(LSUB),$G(MAXREC)) Q "RTN","SDEC",255,0) SUSRINFO(SDECY,SDECDUZ,GUIVERS) ;EP SCHEDULING USER INFO "RTN","SDEC",256,0) ; Added GUI version to parameters to prevent users from using old versions. SD*5.3*694 wtc 8/27/2018 "RTN","SDEC",257,0) D SUSRINFO^SDEC01(.SDECY,$G(SDECDUZ),$G(GUIVERS)) Q "RTN","SDEC",258,0) SVSPALL(RET) ; EP return IEN and NAME for all entries in the SD WL SERVICE/SPECIALTY file "RTN","SDEC",259,0) D SVSPALL^SDECWL(.RET) Q "RTN","SDEC",260,0) SYSSTAT(SDECY) ; EP SYSTEM STATUS "RTN","SDEC",261,0) D SYSSTAT^SDECUTL(.SDECY) Q "RTN","SDEC",262,0) TPBLKOV(SDECY,SDECSTART,SDECEND,SDECRES) ;EP TYPE BLOCKS OVERLAP "RTN","SDEC",263,0) D TPBLKOV^SDEC06(.SDECY,$G(SDECSTART),$G(SDECEND),$G(SDECRES)) Q "RTN","SDEC",264,0) ;Removed UNDOCANA "RTN","SDEC",265,0) UNREGEV(SDECY,SDECEVENT,SDECIP,SDECPORT) ;EP rpc SDE UNREGEV Called by client to Unregister client's interest in SDECEVENT "RTN","SDEC",266,0) D UNREGEV^SDEC23(.SDECY,$G(SDECEVENT),$G(SDECIP),$G(SDECPORT)) Q "RTN","SDEC",267,0) WAITLIST(SDECY,SDECRES) ;EP COLLECT WAITLIST DATA "RTN","SDEC",268,0) D WAITLIST^SDEC36(.SDECY,$G(SDECRES)) Q "RTN","SDEC",269,0) WLCLOSE(RET,SD1,SD2,SD3,SD4) ; Waitlist CLOSE "RTN","SDEC",270,0) D BLDARR(.INP,"WLCLOSE+0") ;*745 "RTN","SDEC",271,0) D WLCLOSE^SDECWL(.RET,.INP) Q "RTN","SDEC",272,0) WLCLOSE1(RET,INP) ; Waitlist CLOSE (without ... for VistA calls) "RTN","SDEC",273,0) D WLCLOSE^SDECWL(.RET,.INP) Q "RTN","SDEC",274,0) WLGET(RET,WLIEN1,MAXREC,SDBEG,SDEND,DFN,LASTSUB,SDTOP,SVCL,DESDT,PRI,SVCR,SCVISIT,CLINIC,ORIGDT) ;EP Waitlist GET ;alb/sat 658 add SVCL-SCVISIT "RTN","SDEC",275,0) D WLGET^SDECWL1(.RET,$G(WLIEN1),$G(MAXREC),$G(SDBEG),$G(SDEND),$G(DFN),$G(LASTSUB),$G(SDTOP),$G(SVCL),$G(DESDT),$G(PRI),$G(SVCR),$G(SCVISIT),$G(CLINIC),$G(ORIGDT)) Q "RTN","SDEC",276,0) WLHIDE(SDECY,DFN,WLCL) ;GET wait list entries in which the associated clinic's 'HIDE FROM DISPLAY?' field is 'YES' "RTN","SDEC",277,0) D WLHIDE^SDECWL3(.SDECY,$G(DFN),$G(WLCL)) Q "RTN","SDEC",278,0) WLOPEN(RET,WLAPP,WLIEN,WLDDT) ;SET Waitlist Open/re-open "RTN","SDEC",279,0) D WLOPEN^SDECWL(.RET,$G(WLAPP),$G(WLIEN),$G(WLDDT)) Q "RTN","SDEC",280,0) WLPCSET(SDECY,INP,WLIEN) ;SET update patient contacts in SD WAIT LIST file "RTN","SDEC",281,0) D WLPCSET^SDECWL(.SDECY,$G(INP),$G(WLIEN)) Q "RTN","SDEC",282,0) WLSET(RET,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15,S16,S17,S18,S19,S20,S21,S22,S23,S24,S25,S26,SD27) ;EP Waitlist Set "RTN","SDEC",283,0) D BLDARR(.INP,"WLSET+0") ;*745 "RTN","SDEC",284,0) D WLSET^SDECWL2(.RET,.INP) Q "RTN","SDEC",285,0) WLSET1(RET,INP) ;EP Waitlist Set (without ... for VistA calls) "RTN","SDEC",286,0) D WLSET^SDECWL2(.RET,.INP) Q "RTN","SDEC",287,0) BLDARR(ARR,TAG) ;array build *745 "RTN","SDEC",288,0) K ARR "RTN","SDEC",289,0) N PM,PNO,I S PM=$P($P($T(@TAG),"(",2),")") S ARR=$L(PM,",")-1 "RTN","SDEC",290,0) F I=1:1:ARR S:$D(@($P(PM,",",I+1))) ARR(I)=@($P(PM,",",I+1)) "RTN","SDEC",291,0) Q ARR "RTN","SDEC07") 0^25^B180328576^B179347370 "RTN","SDEC07",1,0) SDEC07 ;ALB/SAT,PC,MGD - VISTA SCHEDULING RPCS ;Dec 06, 2021@16:25 "RTN","SDEC07",2,0) ;;5.3;Scheduling;**627,642,651,658,665,669,671,672,701,686,740,694,785,788,790,799,801,805**;Aug 13, 1993;Build 9 "RTN","SDEC07",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDEC07",4,0) ; "RTN","SDEC07",5,0) ; Reference to ^GMR(123 is supported by IA #4837 "RTN","SDEC07",6,0) Q "RTN","SDEC07",7,0) APPADD(SDECY,SDECSTART,SDECEND,DFN,SDECRES,SDECLEN,SDECNOTE,SDECATID,SDECCR,SDMRTC,SDDDT,SDREQBY,SDLAB,PROVIEN,SDID,SDAPTYP,SDSVCP,SDSVCPR,SDCL,SDEKG,SDXRAY,APPTYPE,EESTAT,OVB,SDPARENT,SDEL,EAS) ; "RTN","SDEC07",8,0) N SDAPPTYP "RTN","SDEC07",9,0) N SDECERR,SDECIEN,SDECDEP,SDECI,SDECJ,SDECAPPTI,SDECDJ,SDECRESD,SDECRNOD,SDECC,SDECERR,SDECWKIN "RTN","SDEC07",10,0) N SDECNOEV,SDECDEV,SDECDERR,SDECTMP,SAVESTRT,SDAREQ0 "RTN","SDEC07",11,0) N %DT,X,Y,DGQUIET,OBM,RET "RTN","SDEC07",12,0) N SDOE "RTN","SDEC07",13,0) S SDECNOEV=1 ;Don't execute SDEC ADD APPOINTMENT protocol "RTN","SDEC07",14,0) K ^TMP("SDEC07",$J) "RTN","SDEC07",15,0) S SDECERR=0 "RTN","SDEC07",16,0) S SDECI=0 "RTN","SDEC07",17,0) S SDECY="^TMP(""SDEC07"","_$J_")" "RTN","SDEC07",18,0) S ^TMP("SDEC07",$J,SDECI)="I00020APPOINTMENTID^T00020ERRORID"_$C(30) "RTN","SDEC07",19,0) S SDECI=SDECI+1 "RTN","SDEC07",20,0) ;Check input data for errors "RTN","SDEC07",21,0) S SDAPTYP=$G(SDAPTYP) I SDAPTYP="" D ERR(SDECI+1,"SDEC07 Error: Invalid Appointment Type",,0) Q ;SD,740 "RTN","SDEC07",22,0) S SDAREQ0=$G(^SDEC(409.85,+$P(SDAPTYP,"|",2),0)) "RTN","SDEC07",23,0) ; Only check if RTC is closed if request is APPT. 686 12/17/18 WTC "RTN","SDEC07",24,0) I $P(SDAPTYP,"|",1)="A" S SDAREQ0=$G(^SDEC(409.85,+$P(SDAPTYP,"|",2),0)) I $P(SDAREQ0,U,5)="RTC",$P(SDAREQ0,U,17)="C" D ERR(SDECI+1,"SDEC07 Error: This RTC request has been closed.",,0) Q ;SD,740 "RTN","SDEC07",25,0) S SAVESTRT=SDECSTART ;MGH save date/time for consult request "RTN","SDEC07",26,0) ; Change date/time conversion so midnight is handled properly. wtc 694 4/24/18 "RTN","SDEC07",27,0) S SDECSTART=$$NETTOFM^SDECDATE(SDECSTART,"Y") ; "RTN","SDEC07",28,0) I SDECSTART=-1 D ERR(SDECI+1,"SDEC07 Error: Invalid Start Time",,0) Q ;SD,740 "RTN","SDEC07",29,0) S SDECEND=$$NETTOFM^SDECDATE(SDECEND,"Y") ; "RTN","SDEC07",30,0) I SDECEND=-1 D ERR(SDECI+1,"SDEC07 Error: Invalid End Time",,0) Q ;SD,740 "RTN","SDEC07",31,0) I $L(SDECEND,".")=1 D ERR(SDECI+1,"SDEC07 Error: Invalid End Time",,0) Q ;SD,740 "RTN","SDEC07",32,0) I SDECSTART>SDECEND S SDECTMP=SDECEND,SDECEND=SDECSTART,SDECSTART=SDECTMP "RTN","SDEC07",33,0) S DFN=$G(DFN) "RTN","SDEC07",34,0) I DFN="" D ERR(SDECI+1,"SDEC07: Patient ID required.",,0) Q ;SD,740 "RTN","SDEC07",35,0) I '$D(^DPT(DFN,0)) D ERR(SDECI+1,"SDEC07 Error: Invalid Patient ID",,0) Q ;SD,740 "RTN","SDEC07",36,0) L +^DPT(DFN):3 I '$T D ERR(SDECI+1,"Patient is being edited. Try again later.",,0) Q ;alb/sat 665 ;SD,740 "RTN","SDEC07",37,0) ; Reject if another appointment scheduled at same time. "RTN","SDEC07",38,0) I $D(^DPT(DFN,"S",SDECSTART)),$P(^(SDECSTART,0),U,2)'="C",$P(^(0),U,2)'="PC" D ERR(SDECI+1,"Appointment in "_$P(^SC($P(^(0),U,1),0),U,1)_" already scheduled at the same time.",DFN,1) Q ;SD,740 "RTN","SDEC07",39,0) ;Validate Resource "RTN","SDEC07",40,0) S SDECERR=0 K SDECRESD "RTN","SDEC07",41,0) S SDECRES=$G(SDECRES) I SDECRES="" D ERR(SDECI+1,"SDEC07 Error: Invalid Resource ID",DFN,1) Q ;SD,740 "RTN","SDEC07",42,0) I +SDECRES,'$D(^SDEC(409.831,SDECRES,0)) D ERR(SDECI+1,"SDEC07 Error: Invalid Resource ID",DFN,1) Q ;SD,740 "RTN","SDEC07",43,0) I '+SDECRES,'$D(^SDEC(409.831,"B",SDECRES)) D ERR(SDECI+1,"SDEC07 Error: Invalid Resource ID",DFN,1) Q ;SD,740 "RTN","SDEC07",44,0) S SDECRESD=$S(+SDECRES:+SDECRES,1:$O(^SDEC(409.831,"B",SDECRES,0))) "RTN","SDEC07",45,0) S SDECRNOD=$G(^SDEC(409.831,SDECRESD,0)) "RTN","SDEC07",46,0) I SDECRNOD="" D ERR(SDECI+1,"SDEC07 Error: Unable to add appointment -- invalid Resource entry.",DFN,1) Q ;SD,740 "RTN","SDEC07",47,0) ; Check that appointment date is not later than clinic permits or 390 days in future if no limit in clinic file (#44). "RTN","SDEC07",48,0) ; wtc 6/18/18 SD*5.3*701 "RTN","SDEC07",49,0) N PTR44,MAXDAYS S PTR44=$P(SDECRNOD,"^",4),MAXDAYS=390 ; "RTN","SDEC07",50,0) I +PTR44,$D(^SC(PTR44,"SDP")) S MAXDAYS=$P(^("SDP"),"^",2) S:MAXDAYS="" MAXDAYS=390 ; "RTN","SDEC07",51,0) I SDECSTART>$$FMADD^XLFDT($$NOW^XLFDT(),MAXDAYS) D ERR(SDECI+1,"Appointment date too far in the future",DFN,1) Q ;SD,740 "RTN","SDEC07",52,0) S SDECWKIN=0 "RTN","SDEC07",53,0) S SDECATID=$G(SDECATID) "RTN","SDEC07",54,0) I SDECATID="WALKIN" S SDECWKIN=1 "RTN","SDEC07",55,0) I SDECATID'?.N&(SDECATID'="WALKIN") S SDECATID="" "RTN","SDEC07",56,0) ;validate appt length - if passed in, must be 5-120 "RTN","SDEC07",57,0) S SDECLEN=$G(SDECLEN) "RTN","SDEC07",58,0) ;validate MTRC flag (optional) "RTN","SDEC07",59,0) S SDMRTC=$$UP^XLFSTR($G(SDMRTC)) "RTN","SDEC07",60,0) S SDMRTC=$S(SDMRTC="TRUE":1,1:0) "RTN","SDEC07",61,0) ;validate desired date of appt (optional) "RTN","SDEC07",62,0) S SDDDT=$G(SDDDT) "RTN","SDEC07",63,0) I SDDDT'="" S %DT="" S X=$P(SDDDT,"@",1) D ^%DT S SDDDT=Y I Y=-1 S SDDDT="" "RTN","SDEC07",64,0) I SDDDT="",SDECATID'="WALKIN" S SDDDT=$P(SDECSTART,".",1) "RTN","SDEC07",65,0) ;validate requested by "RTN","SDEC07",66,0) S SDREQBY=$$UP^XLFSTR($G(SDREQBY)) "RTN","SDEC07",67,0) I SDREQBY'="" S SDREQBY=$S(SDREQBY="PROVIDER":1,SDREQBY="PATIENT":2,1:0) "RTN","SDEC07",68,0) ;validate lab date/time (optional) "RTN","SDEC07",69,0) S SDLAB=$G(SDLAB) "RTN","SDEC07",70,0) I SDLAB'="" S %DT="T" S X=SDLAB D ^%DT S SDLAB=Y I Y=-1 S SDLAB="" "RTN","SDEC07",71,0) ;validate EKG date/time (optional) "RTN","SDEC07",72,0) S SDEKG=$G(SDEKG) "RTN","SDEC07",73,0) I SDEKG'="" S %DT="T" S X=SDEKG D ^%DT S SDEKG=Y I Y=-1 S SDEKG="" "RTN","SDEC07",74,0) ;validate XRAY date/time (optional) "RTN","SDEC07",75,0) S SDXRAY=$G(SDXRAY) "RTN","SDEC07",76,0) I SDXRAY'="" S %DT="T" S X=SDXRAY D ^%DT S SDXRAY=Y I Y=-1 S SDXRAY="" "RTN","SDEC07",77,0) ;validate provider "RTN","SDEC07",78,0) I '$D(^VA(200,+$G(PROVIEN),0)) S PROVIEN="" "RTN","SDEC07",79,0) S SDID=$G(SDID) "RTN","SDEC07",80,0) ;validate clini101 "RTN","SDEC07",81,0) S SDCL=$G(SDCL) "RTN","SDEC07",82,0) I SDCL'="" I '$D(^SC(SDCL,0)) S SDCL="" "RTN","SDEC07",83,0) I SDCL="" S SDCL=$$GET1^DIQ(409.831,SDECRESD_",",.04,"I") ;clinic ID ;support for single HOSPITAL LOCATION in SDEC RESOURCE "RTN","SDEC07",84,0) S OVB=+$G(OVB) ;alb/sat 665 "RTN","SDEC07",85,0) I 'OVB S OBM=$$OBM1^SDEC57(SDCL,SDECSTART,SDMRTC,,+SDECWKIN) I OBM'="",+OBM'=1 S SDECAPPTID=0 D ERR(SDECI+1,"OBM"_OBM,DFN,1) Q ;alb/sat 658 check if overbook ;alb/sat 665 clear SDECAPPTID ;SD,740 "RTN","SDEC07",86,0) ;validate appt request type (required) "RTN","SDEC07",87,0) S SDAPTYP=$G(SDAPTYP) "RTN","SDEC07",88,0) I SDAPTYP'="" D "RTN","SDEC07",89,0) .I $P(SDAPTYP,"|",1)="E" I '$D(^SDWL(409.3,+$P(SDAPTYP,"|",2),0)) S SDAPTYP="" "RTN","SDEC07",90,0) .I $P(SDAPTYP,"|",1)="R" I '$D(^SD(403.5,+$P(SDAPTYP,"|",2),0)) S SDAPTYP="" "RTN","SDEC07",91,0) .I $P(SDAPTYP,"|",1)="C" I '$D(^GMR(123,+$P(SDAPTYP,"|",2),0)) S SDAPTYP="" ;ICR 4837 "RTN","SDEC07",92,0) .I $P(SDAPTYP,"|",1)="A" I '$D(^SDEC(409.85,+$P(SDAPTYP,"|",2),0)) S SDAPTYP="" "RTN","SDEC07",93,0) I SDCL="" D "RTN","SDEC07",94,0) .S:$P(SDAPTYP,"|",1)="E" SDCL=$$GET1^DIQ(409.3,$P(SDAPTYP,"|",2)_",",13.2,"I") "RTN","SDEC07",95,0) .S:$P(SDAPTYP,"|",1)="R" SDCL=$$GET1^DIQ(403.5,$P(SDAPTYP,"|",2)_",",4.5,"I") "RTN","SDEC07",96,0) .S:$P(SDAPTYP,"|",1)="C" SDCL=$P($G(^GMR(123,+$P(SDAPTYP,"|",2),0)),U,4) ;ICR 4837 ICR states 'Zero node read into variable' "RTN","SDEC07",97,0) .S:$P(SDAPTYP,"|",1)="A" SDCL=$$GET1^DIQ(409.85,$P(SDAPTYP,"|",2)_",",8,"I") "RTN","SDEC07",98,0) I SDCL="" D ERR(SDECI+1,"SDEC07 Error: Invalid clinic ID.",DFN,1) Q ;SD,740 "RTN","SDEC07",99,0) I $$INACTIVE^SDEC32(SDCL) D ERR(SDECI+1,"SDEC07 Error: "_$$GET1^DIQ(44,SDCL_",",.01)_" is an inactive clinic.",DFN,1) Q ;SD,740 "RTN","SDEC07",100,0) ;Reject if consult is not active or pending. SD*5.3*686 "RTN","SDEC07",101,0) I $P(SDAPTYP,"|",1)="C" N CNSLTSTS,NOTOK S CNSLTSTS=$P($G(^GMR(123,+$P(SDAPTYP,"|",2),0)),U,12),NOTOK=0 D Q:NOTOK ; "RTN","SDEC07",102,0) . I CNSLTSTS'=5,CNSLTSTS'=6 D ERR(SDECI+1,"Consult status is not PENDING or ACTIVE. It cannot be scheduled.",DFN,1) S NOTOK=1 Q ;SD,740 "RTN","SDEC07",103,0) ;validate service connected "RTN","SDEC07",104,0) S SDSVCPR=$G(SDSVCPR) "RTN","SDEC07",105,0) I SDSVCPR'="" S:(+SDSVCPR<0)!(+SDSVCPR>100) SDSVCPR="" "RTN","SDEC07",106,0) S SDSVCP=$G(SDSVCP) "RTN","SDEC07",107,0) S SDSVCP=$S(SDSVCP=0:0,SDSVCP="NO":0,SDSVCP=1:1,SDSVCP="YES":1,1:"") "RTN","SDEC07",108,0) ;validate note "RTN","SDEC07",109,0) S SDECNOTE=$G(SDECNOTE) S:SDECNOTE'="" SDECNOTE=$TR($E(SDECNOTE,1,150),"^"," ") ;alb/sat 658 - only use 1st 150 characters "RTN","SDEC07",110,0) ;validate APPTYPE "RTN","SDEC07",111,0) S APPTYPE=$G(APPTYPE) I APPTYPE'="",'$D(^SD(409.1,+APPTYPE,0)) S APPTYPE="" "RTN","SDEC07",112,0) ;validate Patient Status (EESTAT) "RTN","SDEC07",113,0) S EESTAT=$G(EESTAT) "RTN","SDEC07",114,0) I EESTAT="" D "RTN","SDEC07",115,0) .I $P(SDAPTYP,"|",1)="E" S EESTAT=$$GET1^DIQ(409.3,$P(SDAPTYP,"|",2)_",",27,"I") "RTN","SDEC07",116,0) .I $P(SDAPTYP,"|",1)="A" S EESTAT=$$GET1^DIQ(409.3,$P(SDAPTYP,"|",2)_",",.02,"I") "RTN","SDEC07",117,0) S EESTAT=$S(EESTAT="N":"N",EESTAT="NEW":"N",EESTAT="E":"E",EESTAT="ESTABLISHED":"E",1:"") "RTN","SDEC07",118,0) ;validate OVB (overbook) "RTN","SDEC07",119,0) S OVB=+$G(OVB) "RTN","SDEC07",120,0) I 'OVB D "RTN","SDEC07",121,0) .D OVBOOK^SDEC07A(.RET,SDCL,SDECSTART,SDECRES) "RTN","SDEC07",122,0) D "RTN","SDEC07",123,0) .S SDAPPTYP=+APPTYPE "RTN","SDEC07",124,0) .I 'SDAPPTYP D "RTN","SDEC07",125,0) ..I $P(SDAPTYP,"|",1)="E" S SDAPPTYP=$$GET1^DIQ(409.3,+$P(SDAPTYP,"|",2)_",",8.7,"I") "RTN","SDEC07",126,0) ..I $P(SDAPTYP,"|",1)="A" S SDAPPTYP=$$GET1^DIQ(409.85,+$P(SDAPTYP,"|",2)_",",8.7,"I") "RTN","SDEC07",127,0) ..I $P(SDAPTYP,"|",1)="C",+APPTYPE S SDAPPTYP=+APPTYPE "RTN","SDEC07",128,0) .S:'SDAPPTYP SDAPPTYP=$O(^SD(409.1,"B","REGULAR",0)) "RTN","SDEC07",129,0) S EAS=$TR($G(EAS),"^"," ") ;validate EAS Tracking Number "RTN","SDEC07",130,0) I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL(EAS) "RTN","SDEC07",131,0) I +EAS=-1 D ERR(SDECI+1,"SDEC07 Error: Invalid EAS Tracking Number",,0) Q "RTN","SDEC07",132,0) S SDECAPPTID=$$SDECADD(SDECSTART,SDECEND,DFN,SDECRESD,SDECATID,SDDDT,SDID,SDAPTYP,PROVIEN,SDCL,SDECNOTE,SAVESTRT,SDECRES,SDAPPTYP,EESTAT,1,+SDECLEN,EAS) ;alb/sat 665 add SDECLEN "RTN","SDEC07",133,0) I 'SDECAPPTID D ERR(SDECI+1,"SDEC07 Error: Unable to add appointment to SDEC APPOINTMENT file.",DFN,2) Q ;SD,740 "RTN","SDEC07",134,0) ;Lock SDEC node "RTN","SDEC07",135,0) L +^SDEC(409.84,SDECAPPTID):5 I '$T D ERR(SDECI+1,"Another user is working with this patient's record. Please try again later",DFN,1) Q ; Fixed Lock *790 "RTN","SDEC07",136,0) ;Save the appt "RTN","SDEC07",137,0) ; call chart request "RTN","SDEC07",138,0) S SDECDEV="" "RTN","SDEC07",139,0) I SDECATID="WALKIN",$G(SDECCR),$G(SDECDEV)'="" S DGQUIET=1 D WISD^SDECRT(DFN,$P(SDECSTART,"."),"",SDECDEV) "RTN","SDEC07",140,0) I SDECNOTE]"" D SDECWP(SDECAPPTID,SDECNOTE) "RTN","SDEC07",141,0) ;Create appt in VistA ;TODO: have this call APPVISTA^SDEC07B "RTN","SDEC07",142,0) I +SDCL,$D(^SC(SDCL,0)) D I +SDECERR D ERR(SDECI+1,$P(SDECERR,U,2),DFN,2) ;SD,740 "RTN","SDEC07",143,0) . S SDECC("PAT")=DFN "RTN","SDEC07",144,0) . S SDECC("CLN")=SDCL "RTN","SDEC07",145,0) . S SDECC("TYP")=$S(+SDECWKIN:4,SDAPPTYP=1:1,1:3) ;3 for scheduled appts, 4 for walkins "RTN","SDEC07",146,0) . S SDECC("COL")=$S(SDAPPTYP=7:1,1:"") ;collateral visit if appointment type is COLLATERAL OF VET. "RTN","SDEC07",147,0) . S SDECC("APT")=SDAPPTYP "RTN","SDEC07",148,0) . S SDECC("ADT")=SDECSTART "RTN","SDEC07",149,0) . S SDECC("LEN")=SDECLEN "RTN","SDEC07",150,0) . S SDECC("OI")=$E($G(SDECNOTE),1,150) ;File 44 has 150 character limit on OTHER field "RTN","SDEC07",151,0) . S SDECC("OI")=$TR(SDECC("OI"),";"," ") ;No semicolons allowed "RTN","SDEC07",152,0) . S SDECC("OI")=$$STRIP(SDECC("OI")) ;Strip control characters from note "RTN","SDEC07",153,0) . S SDECC("RES")=SDECRESD "RTN","SDEC07",154,0) . S SDECC("USR")=DUZ "RTN","SDEC07",155,0) . S SDECC("MTR")=$G(SDMRTC) "RTN","SDEC07",156,0) . S SDECC("DDT")=SDDDT "RTN","SDEC07",157,0) . S SDECC("REQ")=SDREQBY "RTN","SDEC07",158,0) . S SDECC("LAB")=SDLAB "RTN","SDEC07",159,0) . S SDECC("XRA")=SDXRAY "RTN","SDEC07",160,0) . S SDECC("EKG")=SDEKG "RTN","SDEC07",161,0) . ; OVB: 2: Not an Overbook don't perform OB validation, 1:Overbook, don't perform OB validation, 0:Not an Overbook but perform OB validation "RTN","SDEC07",162,0) . S SDECC("OVB")=$S(OVB=1:1,1:0) "RTN","SDEC07",163,0) . S SDECC("ELG")=SDEL "RTN","SDEC07",164,0) . S:$P(SDAPTYP,"|",1)="C" SDECC("CON")=$P(SDAPTYP,"|",2) "RTN","SDEC07",165,0) . S SDECERR=$$MAKE^SDEC07B(.SDECC) "RTN","SDEC07",166,0) . Q:SDECERR "RTN","SDEC07",167,0) . D AVUPDT^SDEC07C(SDCL,SDECSTART,SDECLEN) "RTN","SDEC07",168,0) . Q "RTN","SDEC07",169,0) ;update wait list "RTN","SDEC07",170,0) I $P(SDAPTYP,"|",1)="E" D EWL^SDEC07A($P(SDAPTYP,"|",2),SDECSTART,SDCL,SDSVCPR,SDSVCP,,SDAPPTYP) ;alb/sat 658 do not pass note "RTN","SDEC07",171,0) ;update appt request "RTN","SDEC07",172,0) I $P(SDAPTYP,"|",1)="A" D "RTN","SDEC07",173,0) .D UPDATE^SDECAR2($P(SDAPTYP,"|",2),SDECSTART,SDCL,SDSVCPR,SDSVCP,,SDAPPTYP,EAS) ;alb/sat 658 do not pass note "RTN","SDEC07",174,0) .I $G(SDMRTC),$G(SDPARENT) D AR433^SDECAR2(SDPARENT,SDECAPPTID_"~"_$P(SDAPTYP,"|",2)) "RTN","SDEC07",175,0) .D:$G(SDPARENT) AR438^SDECAR2($P(SDAPTYP,"|",2),SDPARENT) "RTN","SDEC07",176,0) N SDT S SDT=SDECSTART "RTN","SDEC07",177,0) ;add entry to OUTPATIENT ENCOUNTER file (#409.68) ;alb/sat 672 "RTN","SDEC07",178,0) I $$NOW^XLFDT>SDT,$$NEW^SDPCE(SDT) D "RTN","SDEC07",179,0) .N SDCOED "RTN","SDEC07",180,0) .S SDOE=$$GETAPT^SDVSIT2(DFN,SDT,SDCL) "RTN","SDEC07",181,0) L -^SDEC(409.84,SDECAPPTID) ; Fixed Lock *790 "RTN","SDEC07",182,0) L -^DPT(DFN) "RTN","SDEC07",183,0) S SDECI=SDECI+1 "RTN","SDEC07",184,0) S ^TMP("SDEC07",$J,SDECI)=SDECAPPTID_"^"_$G(SDECDERR)_$C(30) "RTN","SDEC07",185,0) S SDECI=SDECI+1 "RTN","SDEC07",186,0) S ^TMP("SDEC07",$J,SDECI)=$C(31) "RTN","SDEC07",187,0) Q "RTN","SDEC07",188,0) ; "RTN","SDEC07",189,0) ;ADD SDEC APPT ENTRY "RTN","SDEC07",190,0) SDECADD(SDECSTART,SDECEND,DFN,SDECRESD,SDECATID,SDDDT,SDID,SDAPTYP,PROVIEN,SDCL,SDECNOTE,SAVESTRT,SDECRES,SDAPPTYP,EESTAT,SDF,SDECLEN,EAS) ;alb/sat 665 add SDECLEN "RTN","SDEC07",191,0) ;SDF - (optional) flags "RTN","SDEC07",192,0) ; 1. called from GUI (update consult only if called from GUI) "RTN","SDEC07",193,0) ;Returns ien in SDECAPPT or 0 if failed "RTN","SDEC07",194,0) ;called from SDEC APPADD rpc and from VistA via SDM1A "RTN","SDEC07",195,0) ;Create entry in SDEC APPOINTMENT "RTN","SDEC07",196,0) N SDIEN,SDECAPPTID,SDECFDA,SDECIEN,SDECMSG,SL,X,SDDFN,FDA,ERR,REQIEN "RTN","SDEC07",197,0) S SDECSTART=$G(SDECSTART) "RTN","SDEC07",198,0) S SAVESTRT=$G(SAVESTRT),SDECRES=$G(SDECRES) ;MGH save date/time for consult request "RTN","SDEC07",199,0) S DFN=$G(DFN),SDDFN=DFN "RTN","SDEC07",200,0) S SDECRESD=$G(SDECRESD) "RTN","SDEC07",201,0) S SDECATID=$G(SDECATID) "RTN","SDEC07",202,0) S SDDDT=$G(SDDDT) "RTN","SDEC07",203,0) S SDID=$G(SDID) "RTN","SDEC07",204,0) S SDAPTYP=$G(SDAPTYP) "RTN","SDEC07",205,0) S SDAPPTYP=$G(SDAPPTYP) "RTN","SDEC07",206,0) S PROVIEN=$G(PROVIEN) "RTN","SDEC07",207,0) S SDCL=$G(SDCL) "RTN","SDEC07",208,0) S SDECEND=$G(SDECEND) "RTN","SDEC07",209,0) I $P(SDAPTYP,"|",1)="R" D "RTN","SDEC07",210,0) .S PROVIEN=$$GET1^DIQ(403.54,PROVIEN,.01,"I") "RTN","SDEC07",211,0) S SDECLEN=$G(SDECLEN) "RTN","SDEC07",212,0) I SDECLEN="",SDECEND="" S SDECLEN=+$G(^SC(SDCL,"SL")) S:'+SDECLEN SDECLEN=30 S SDECEND=$$FMADD^XLFDT(SDECSTART,,,+SDECLEN) ;no length or end date/time "RTN","SDEC07",213,0) I SDECLEN="",SDECEND'="" S SDECLEN=$$FMDIFF^XLFDT(SDECEND,SDECSTART,2)\60 ;no length "RTN","SDEC07",214,0) I SDECLEN'="",SDECEND="" S SDECEND=$$FMADD^XLFDT(SDECSTART,,,+SDECLEN) ;no end date/time "RTN","SDEC07",215,0) S SDECNOTE=$G(SDECNOTE) "RTN","SDEC07",216,0) S SDF=$G(SDF,0) "RTN","SDEC07",217,0) S EAS=$G(EAS) "RTN","SDEC07",218,0) I PROVIEN="" S PROVIEN=$$GET1^DIQ(44,SDCL_",",16,"I") "RTN","SDEC07",219,0) S SDIEN=$$APPTGET^SDECUTL(DFN,SDECSTART,SDCL) "RTN","SDEC07",220,0) S SDIEN=$S(SDIEN'="":SDIEN_",",1:"+1,") "RTN","SDEC07",221,0) S SDECFDA(409.84,SDIEN,.01)=SDECSTART "RTN","SDEC07",222,0) S SDECFDA(409.84,SDIEN,.02)=SDECEND "RTN","SDEC07",223,0) S SDECFDA(409.84,SDIEN,.03)="@" ;*zeb+22 686 3/20/19 clear data from overlaid appts "RTN","SDEC07",224,0) S SDECFDA(409.84,SDIEN,.04)="@" "RTN","SDEC07",225,0) S SDECFDA(409.84,SDIEN,.05)=DFN "RTN","SDEC07",226,0) S SDECFDA(409.84,SDIEN,.06)=$S(+SDAPPTYP:SDAPPTYP,1:"@") "RTN","SDEC07",227,0) S SDECFDA(409.84,SDIEN,.07)=SDECRESD "RTN","SDEC07",228,0) S SDECFDA(409.84,SDIEN,.08)=$G(DUZ) "RTN","SDEC07",229,0) S SDECFDA(409.84,SDIEN,.09)=$P($$NOW^XLFDT,".",1) "RTN","SDEC07",230,0) S SDECFDA(409.84,SDIEN,.1)="@" "RTN","SDEC07",231,0) S SDECFDA(409.84,SDIEN,.101)="@" "RTN","SDEC07",232,0) S SDECFDA(409.84,SDIEN,.102)="@" "RTN","SDEC07",233,0) S SDECFDA(409.84,SDIEN,.11)="@" "RTN","SDEC07",234,0) S SDECFDA(409.84,SDIEN,.12)="@" "RTN","SDEC07",235,0) S SDECFDA(409.84,SDIEN,.121)="@" "RTN","SDEC07",236,0) S SDECFDA(409.84,SDIEN,.122)="@" "RTN","SDEC07",237,0) S SDECFDA(409.84,SDIEN,.13)=$S(SDECATID="WALKIN":"y",1:"@") "RTN","SDEC07",238,0) S SDECFDA(409.84,SDIEN,.14)="@" "RTN","SDEC07",239,0) S SDECFDA(409.84,SDIEN,.16)=$S(PROVIEN'="":PROVIEN,1:"@") "RTN","SDEC07",240,0) S SDECFDA(409.84,SDIEN,.17)="@" "RTN","SDEC07",241,0) S SDECFDA(409.84,SDIEN,.18)=$S($G(SDECLEN)'="":SDECLEN,1:"@") "RTN","SDEC07",242,0) S SDECFDA(409.84,SDIEN,.2)=SDDDT "RTN","SDEC07",243,0) S SDECFDA(409.84,SDIEN,.21)=$S($G(SDID)'="":SDID,1:"@") "RTN","SDEC07",244,0) S SDECFDA(409.84,SDIEN,.22)=$S(SDAPTYP'="":$P(SDAPTYP,"|",2)_";"_$S($P(SDAPTYP,"|",1)="E":"SDWL(409.3,",$P(SDAPTYP,"|",1)="C":"GMR(123,",$P(SDAPTYP,"|",1)="R":"SD(403.5,",$P(SDAPTYP,"|",1)="A":"SDEC(409.85,",1:""),1:"@") "RTN","SDEC07",245,0) S SDECFDA(409.84,SDIEN,.23)=$S($G(EESTAT)'="":EESTAT,1:"@") "RTN","SDEC07",246,0) S:EAS'="" SDECFDA(409.84,SDIEN,100)=EAS "RTN","SDEC07",247,0) K SDECIEN,SDECMSG "RTN","SDEC07",248,0) D UPDATE^DIE("","SDECFDA","SDECIEN","SDECMSG") "RTN","SDEC07",249,0) ;File appt req PID history "RTN","SDEC07",250,0) I $P(SDAPTYP,"|",1)="A"!($P(SDAPTYP,"|",1)="R") D "RTN","SDEC07",251,0) .S REQIEN=$P(SDAPTYP,"|",2) "RTN","SDEC07",252,0) .I $$LASTPIDCHECK^SDECAR2(REQIEN,SDDDT) D "RTN","SDEC07",253,0) ..S FDA(409.854,"+1,"_REQIEN_",",.01)=$$NOW^XLFDT "RTN","SDEC07",254,0) ..S FDA(409.854,"+1,"_REQIEN_",",1)=SDDDT "RTN","SDEC07",255,0) ..S FDA(409.854,"+1,"_REQIEN_",",2)=$$GET1^DIQ(200,DUZ,.01,"E") "RTN","SDEC07",256,0) ..D UPDATE^DIE(,"FDA",,"ERR") K FDA "RTN","SDEC07",257,0) S SDECAPPTID=$S(SDIEN'="+1,":+SDIEN,1:+$G(SDECIEN(1))) "RTN","SDEC07",258,0) K SDECMSG "RTN","SDEC07",259,0) I SDECNOTE="" D WP^DIE(409.84,$S(+$G(SDECAPPTID):SDECAPPTID_",",1:SDIEN_","),1,"","@","SDECMSG") "RTN","SDEC07",260,0) I SDECNOTE'="" N ARR D WP^SDECUTL(.ARR,SDECNOTE) D WP^DIE(409.84,$S(+$G(SDECAPPTID):SDECAPPTID_",",1:SDIEN_","),1,"","ARR","SDECMSG") "RTN","SDEC07",261,0) I SDECAPPTID'="" D "RTN","SDEC07",262,0) .I $P(SDAPTYP,"|",1)="C",SDF D "RTN","SDEC07",263,0) ..D CONSULTPID^SDEC07PID(SDAPTYP,DFN,PROVIEN,SAVESTRT,SDDDT,SDDFN,SDECNOTE,SDECRES) "RTN","SDEC07",264,0) .; "RTN","SDEC07",265,0) .I $P(SDAPTYP,"|",1)="R" D ; VSE-863 ;6/9/2021 "RTN","SDEC07",266,0) .. N SDCOMM,SDRET,SDRIEN1,SDRRFTR "RTN","SDEC07",267,0) .. S SDRIEN1=$P(SDAPTYP,"|",2) "RTN","SDEC07",268,0) .. S SDCOMM=$$GET1^DIQ(403.5,SDRIEN1,2.5) "RTN","SDEC07",269,0) .. S SDRRFTR="APPT SCHEDULED" ; "7" "RTN","SDEC07",270,0) .. D RECDSET^SDEC52A(.SDRET,SDRIEN1,SDRRFTR,SDCOMM) "RTN","SDEC07",271,0) .; "RTN","SDEC07",272,0) Q SDECAPPTID "RTN","SDEC07",273,0) ; "RTN","SDEC07",274,0) CONSPIDCHECK(SDRIEN1,SDDDT) ; "RTN","SDEC07",275,0) N CHIEN,CHSIEN,OLDPID "RTN","SDEC07",276,0) S CHIEN=$O(^SDEC(409.87,"B",SDRIEN1,0)) "RTN","SDEC07",277,0) S CHSIEN=$O(^SDEC(409.87,CHIEN,1,9999999),-1) "RTN","SDEC07",278,0) S OLDPID=$$GET1^DIQ(409.871,CHSIEN_","_CHIEN_",",1,"I") "RTN","SDEC07",279,0) I OLDPID'=$G(SDDDT) Q 1 "RTN","SDEC07",280,0) Q 0 "RTN","SDEC07",281,0) SDECWP(SDECAPPTID,SDECNOTE) ; "RTN","SDEC07",282,0) ;Add WP field "RTN","SDEC07",283,0) I SDECNOTE]"" S SDECNOTE(.5)=SDECNOTE,SDECNOTE="" "RTN","SDEC07",284,0) I $D(SDECNOTE(0)) S SDECNOTE(.5)=SDECNOTE(0) K SDECNOTE(0) "RTN","SDEC07",285,0) I $D(SDECNOTE(.5)) D "RTN","SDEC07",286,0) . D WP^DIE(409.84,SDECAPPTID_",",1,"","SDECNOTE","SDECMSG") "RTN","SDEC07",287,0) Q "RTN","SDEC07",288,0) ; "RTN","SDEC07",289,0) ADDEVT(DFN,SDECSTART,SDECSC,SDCLA) ;EP "RTN","SDEC07",290,0) ;Called by SDEC ADD APPOINTMENT protocol "RTN","SDEC07",291,0) ;SDECSC=IEN of clinic in ^SC "RTN","SDEC07",292,0) ;SDCLA=IEN for ^SC(SDECSC,"S",SDECSTART,1,SDCLA). Use to get Length & Note "RTN","SDEC07",293,0) ; "RTN","SDEC07",294,0) N SDECNOD,SDECLEN,SDECAPPTID,SDECNODP,SDECWKIN,SDECRES "RTN","SDEC07",295,0) Q:+$G(SDECNOEV) "RTN","SDEC07",296,0) I $D(^SDEC(409.831,"ALOC",SDECSC)) S SDECRES=$O(^SDEC(409.831,"ALOC",SDECSC,0)) "RTN","SDEC07",297,0) Q:'+$G(SDECRES) "RTN","SDEC07",298,0) S SDECNOD=$G(^SC(SDECSC,"S",SDECSTART,1,SDCLA,0)) "RTN","SDEC07",299,0) Q:SDECNOD="" "RTN","SDEC07",300,0) S SDECNODP=$G(^DPT(DFN,"S",SDECSTART,0)) "RTN","SDEC07",301,0) S SDECWKIN="" "RTN","SDEC07",302,0) S:$P(SDECNODP,U,7)=4 SDECWKIN="WALKIN" ;Purpose of Visit field of DPT Appointment subfile "RTN","SDEC07",303,0) S SDECLEN=$P(SDECNOD,U,2) "RTN","SDEC07",304,0) Q:'+SDECLEN "RTN","SDEC07",305,0) S SDECEND=$$FMADD^XLFDT(SDECSTART,0,0,SDECLEN,0) "RTN","SDEC07",306,0) S SDECAPPTID=$$SDECADD(SDECSTART,SDECEND,DFN,SDECRES,SDECWKIN,,,,,SDECSC,,,,,,1,+SDECLEN) ;alb/sat 665 add SDECLEN "RTN","SDEC07",307,0) Q:'+SDECAPPTID "RTN","SDEC07",308,0) S SDECNOTE=$P(SDECNOD,U,4) "RTN","SDEC07",309,0) I SDECNOTE]"" D SDECWP(SDECAPPTID,SDECNOTE) "RTN","SDEC07",310,0) D ADDEVT3(SDECRES) "RTN","SDEC07",311,0) Q "RTN","SDEC07",312,0) ; "RTN","SDEC07",313,0) ADDEVT3(SDECRES) ; "RTN","SDEC07",314,0) ;Call RaiseEvent to notify GUI clients "RTN","SDEC07",315,0) Q "RTN","SDEC07",316,0) ; "RTN","SDEC07",317,0) STRIP(SDECZ) ;Replace control characters with spaces "RTN","SDEC07",318,0) N SDECI "RTN","SDEC07",319,0) F SDECI=1:1:$L(SDECZ) I (32>$A($E(SDECZ,SDECI))) S SDECZ=$E(SDECZ,1,SDECI-1)_" "_$E(SDECZ,SDECI+1,999) "RTN","SDEC07",320,0) Q SDECZ "RTN","SDEC07",321,0) ; "RTN","SDEC07",322,0) ERR(SDECI,SDECERR,DFN,LOCK) ;Error processing SD,740 "RTN","SDEC07",323,0) S DFN=$G(DFN) "RTN","SDEC07",324,0) S SDECI=SDECI+1 "RTN","SDEC07",325,0) S SDECERR=$TR(SDECERR,"^","~") "RTN","SDEC07",326,0) S ^TMP("SDEC07",$J,SDECI)=$G(SDECAPPTID,0)_"^"_SDECERR_$C(30) "RTN","SDEC07",327,0) S SDECI=SDECI+1 "RTN","SDEC07",328,0) S ^TMP("SDEC07",$J,SDECI)=$C(31) "RTN","SDEC07",329,0) I $G(LOCK)=1 L -^DPT(DFN) "RTN","SDEC07",330,0) I $G(LOCK)=2 L -^DPT(DFN) "RTN","SDEC07",331,0) I +$G(SDECAPPTID) L -^SDEC(409.84,SDECAPPTID) "RTN","SDEC07",332,0) Q "RTN","SDEC07",333,0) ; "RTN","SDEC07",334,0) ETRAP ;EP Error trap entry "RTN","SDEC07",335,0) D ^%ZTER "RTN","SDEC07",336,0) I '$D(SDECI) N SDECI S SDECI=999999 "RTN","SDEC07",337,0) S SDECI=SDECI+1 "RTN","SDEC07",338,0) D ERR(SDECI,"SDEC07 Error") "RTN","SDEC07",339,0) Q "RTN","SDEC07",340,0) ERROR ; "RTN","SDEC07",341,0) D ERR1("Error") "RTN","SDEC07",342,0) Q "RTN","SDEC07",343,0) ; "RTN","SDEC07",344,0) ERR1(SDECERR) ;Error processing "RTN","SDEC07",345,0) S SDECI=SDECI+1 "RTN","SDEC07",346,0) S ^TMP("SDEC07",$J,SDECI)=SDECERR_$C(30) "RTN","SDEC07",347,0) S SDECI=SDECI+1 "RTN","SDEC07",348,0) S ^TMP("SDEC07",$J,SDECI)=$C(31) "RTN","SDEC07",349,0) Q "RTN","SDEC07PID") 0^43^B3154294^n/a "RTN","SDEC07PID",1,0) SDEC07PID ;ALB/BLB - VISTA SCHEDULING ;Jul 15, 2021@10:40 "RTN","SDEC07PID",2,0) ;;5.3;Scheduling;**805**;Aug 13, 1993;Build 9 "RTN","SDEC07PID",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDEC07PID",4,0) CONSULTPID(SDAPTYP,DFN,PROVIEN,SAVESTRT,SDDDT,SDDFN,SDECNOTE,SDECRES) ; "RTN","SDEC07PID",5,0) N SDRIEN1,CFDA,ERRMSG,NCIEN,CSFDA,CSIEN,CSSIEN,CONSPIDIEN "RTN","SDEC07PID",6,0) S SDRIEN1=$P(SDAPTYP,"|",2) "RTN","SDEC07PID",7,0) D REQSET^SDEC07A($P(SDAPTYP,"|",2),PROVIEN,"",1,"",SDECNOTE,SAVESTRT,SDECRES,SDDFN) ;MGH added 3 parameters to this call "RTN","SDEC07PID",8,0) ; File full consult pid history entry "RTN","SDEC07PID",9,0) S CONSPIDIEN=$O(^SDEC(409.87,"B",SDRIEN1,0)) "RTN","SDEC07PID",10,0) I '$D(^SDEC(409.87,"B",SDRIEN1)) D "RTN","SDEC07PID",11,0) .S CFDA(409.87,"+1,",.01)=SDRIEN1 "RTN","SDEC07PID",12,0) .S CFDA(409.87,"+1,",.02)=DFN "RTN","SDEC07PID",13,0) .D UPDATE^DIE("","CFDA","NCIEN","ERRMSG") K CFDA "RTN","SDEC07PID",14,0) .I $D(ERRMSG) Q "RTN","SDEC07PID",15,0) .S CSFDA(409.871,"+1,"_NCIEN(1)_",",.01)=$$NOW^XLFDT "RTN","SDEC07PID",16,0) .S CSFDA(409.871,"+1,"_NCIEN(1)_",",1)=SDDDT "RTN","SDEC07PID",17,0) .S CSFDA(409.871,"+1,"_NCIEN(1)_",",2)=$$GET1^DIQ(200,DUZ,.01,"E") "RTN","SDEC07PID",18,0) .D UPDATE^DIE("","CSFDA","CSIEN") K CSFDA "RTN","SDEC07PID",19,0) .;File consult pid history subfile only "RTN","SDEC07PID",20,0) I $D(^SDEC(409.87,"B",SDRIEN1)) D "RTN","SDEC07PID",21,0) .I $$CONSPIDCHECK^SDEC07(SDRIEN1,SDDDT) D "RTN","SDEC07PID",22,0) ..S CSFDA(409.871,"+1,"_CONSPIDIEN_",",.01)=$$NOW^XLFDT "RTN","SDEC07PID",23,0) ..S CSFDA(409.871,"+1,"_CONSPIDIEN_",",1)=SDDDT "RTN","SDEC07PID",24,0) ..S CSFDA(409.871,"+1,"_CONSPIDIEN_",",2)=$$GET1^DIQ(200,DUZ,.01,"E") "RTN","SDEC07PID",25,0) ..D UPDATE^DIE("","CSFDA","CSSIEN","ERR") K CSFDA "RTN","SDEC07PID",26,0) Q "RTN","SDEC08") 0^35^B200745537^B186981445 "RTN","SDEC08",1,0) SDEC08 ;ALB/SAT/JSM,WTC,LAB,LEG,RRM - VISTA SCHEDULING RPCS ;Jul 14, 2021@09:30 "RTN","SDEC08",2,0) ;;5.3;Scheduling;**627,651,658,665,722,740,744,694,745,756,774,781,785,790,792,796,797,799,801,805**;Aug 13, 1993;Build 9 "RTN","SDEC08",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDEC08",4,0) ; "RTN","SDEC08",5,0) ; Reference to ^DPT (Patient File) is supported by IA #7030 "RTN","SDEC08",6,0) Q "RTN","SDEC08",7,0) ; "RTN","SDEC08",8,0) APPDEL(SDECY,SDECAPTID,SDECTYP,SDECCR,SDECNOT,SDECDATE,SDUSER,SOURCE,SDF,SDECCMT,NEWPID,EASTRCKNGNMBR) ;Cancels appointment "RTN","SDEC08",9,0) ;SDECAPTID - (required) pointer to SDEC APPOINTMENT file #409.84 "RTN","SDEC08",10,0) ;SDECTYP - (required) appointment Status valid values: "RTN","SDEC08",11,0) ; C=CANCELLED BY CLINIC "RTN","SDEC08",12,0) ; PC=CANCELLED BY PATIENT "RTN","SDEC08",13,0) ;SDECCR - (required) pointer to CANCELLATION REASON File (409.2) "RTN","SDEC08",14,0) ;SDECNOT - (optional) text representing user note "RTN","SDEC08",15,0) ;SDECDATE - (optional) Cancel Date/Time in external format; defaults to NOW "RTN","SDEC08",16,0) ;SDUSER - (optional) User that cancelled appt; defaults to current user "RTN","SDEC08",17,0) ;SOURCE - future enhancment L 1.8 SD*5.3*715 "RTN","SDEC08",18,0) ;SDF - (optional) Flag to determine whether to reopen appointment SD*5.3*745 "RTN","SDEC08",19,0) ;SDECCMT - (optional) List of cancellation comment hash tags (see #409.88) separated by ^ - 756 6/8/2020 wtc "RTN","SDEC08",20,0) ;NEWPID - (optional) Only allowed when cancelling a recall request appointment by patient "RTN","SDEC08",21,0) ;EASTRCKINGNMBR - (optional) Enterprise Appointment Scheduling Tracking Number associated to an appointment. "RTN","SDEC08",22,0) ;Returns error code in recordset field ERRORID "RTN","SDEC08",23,0) ; "RTN","SDEC08",24,0) N SDECNOD,SDECPATID,SDECSTART,DIK,DA,SDECID,SDECI,SDECZ,SDECERR "RTN","SDEC08",25,0) N SDECLOC,SDECLEN,SDECSCIEN,SDECSCIEN1,SDECNOEV,SDECSC1,SDRET "RTN","SDEC08",26,0) N %DT,X,Y,SDECJ ; wtc 756 6/8/2020 added SDECJ "RTN","SDEC08",27,0) I $G(NEWPID)'="" D "RTN","SDEC08",28,0) .S NEWPID=$$NETTOFM^SDECDATE(NEWPID,"N","N") "RTN","SDEC08",29,0) S SDF=$S($G(SDF)=3:3,$G(SDF)=2:2,1:1) ; lab 745 default all flags to 1 except a flag of 2. "RTN","SDEC08",30,0) S SDECNOEV=1 ;Don't execute SDEC CANCEL APPOINTMENT protocol "RTN","SDEC08",31,0) S SDECSCIEN1=0 "RTN","SDEC08",32,0) ; "RTN","SDEC08",33,0) S SDECI=0 "RTN","SDEC08",34,0) S SDECY="^TMP(""SDEC08"","_$J_",""APPDEL"")" "RTN","SDEC08",35,0) K @SDECY "RTN","SDEC08",36,0) S @SDECY@(SDECI)="T00020ERRORID"_$C(30) "RTN","SDEC08",37,0) S SDECI=SDECI+1 "RTN","SDEC08",38,0) ;validate SDEC APPOINTMENT pointer (required) "RTN","SDEC08",39,0) I '$D(^SDEC(409.84,+$G(SDECAPTID),0)) D ADERR(SDECI,.SDECY,"SDEC08: Invalid Appointment ID",+$G(SDECAPTID),0) Q ;BI/SD*5.3*740 added ADERR "RTN","SDEC08",40,0) ;validate appointment status type (required) "RTN","SDEC08",41,0) S SDECTYP=$G(SDECTYP) "RTN","SDEC08",42,0) S SDECTYP=$S(SDECTYP="C":"C",SDECTYP="CANCELLED BY CLINIC":"C",SDECTYP="PC":"PC",SDECTYP="CANCELLED BY PATIENT":"PC",1:"") "RTN","SDEC08",43,0) I SDECTYP="" D ADERR(SDECI,.SDECY,"SDEC08: Invalid status type",+$G(SDECAPTID),0) Q ;BI/SD*5.3*740 added ADERR "RTN","SDEC08",44,0) ;validate CANCELLATION REASON pointer (optional) "RTN","SDEC08",45,0) S SDECCR=$G(SDECCR) "RTN","SDEC08",46,0) I SDECCR'="" I '$D(^SD(409.2,+SDECCR,0)) S SDECCR=$O(^SD(409.2,"B","SDECCR",0)) "RTN","SDEC08",47,0) ;validate SDECNOT "RTN","SDEC08",48,0) S SDECNOT=$TR($G(SDECNOT),"^"," ") ;alb/sat 658 - strip out ^ "RTN","SDEC08",49,0) ; "RTN","SDEC08",50,0) ; Add cancellation comment HASHTAGs from #409.88 to beginning of user note. - 756 wtc 6/8/2020 "RTN","SDEC08",51,0) ; "RTN","SDEC08",52,0) I $G(SDECCMT)'="" F SDECJ=$L(SDECCMT,U):-1:1 S SDECNOT=$P(SDECCMT,U,SDECJ)_"_"_SDECNOT ; Add hashtags in reverse order of receipt so national appear first. wtc 8/19/2020 "RTN","SDEC08",53,0) I $E(SDECNOT,$L(SDECNOT))="_" S SDECNOT=$E(SDECNOT,1,$L(SDECNOT)-1) ; Strip off trailing "_". Happens if not extra note text. "RTN","SDEC08",54,0) ; "RTN","SDEC08",55,0) ;validate cancel date/time "RTN","SDEC08",56,0) S SDECDATE=$G(SDECDATE) "RTN","SDEC08",57,0) ; "RTN","SDEC08",58,0) ; Change date/time conversion so midnight is handled properly. wtc 694 4/24/18 "RTN","SDEC08",59,0) ; "RTN","SDEC08",60,0) ;I SDECDATE'="" S %DT="T" S X=SDECDATE D ^%DT S SDECDATE=Y I Y=-1 S SDECDATE="" "RTN","SDEC08",61,0) I SDECDATE'="" S SDECDATE=$$NETTOFM^SDECDATE(SDECDATE,"Y","N") I SDECDATE=-1 S SDECDATE="" ; wtc 6/18/18 "RTN","SDEC08",62,0) I $G(SDECDATE)="" S SDECDATE=$$NOW^XLFDT "RTN","SDEC08",63,0) ;validate user "RTN","SDEC08",64,0) S SDUSER=$G(SDUSER) "RTN","SDEC08",65,0) I SDUSER'="" I '$D(^VA(200,+SDUSER,0)) S SDUSER="" "RTN","SDEC08",66,0) I SDUSER="" S SDUSER=DUZ "RTN","SDEC08",67,0) ;Delete APPOINTMENT entries "RTN","SDEC08",68,0) S SDECNOD=^SDEC(409.84,SDECAPTID,0) "RTN","SDEC08",69,0) S SDECPATID=$P(SDECNOD,U,5) "RTN","SDEC08",70,0) S SDECSTART=$P(SDECNOD,U) "RTN","SDEC08",71,0) ; "RTN","SDEC08",72,0) ;Lock SDEC node "RTN","SDEC08",73,0) ;changed SDECPATID to SDECAPTID to get APPOINTMENT ID instead of PATIENT ID ; pwc *745 7/16/2020 "RTN","SDEC08",74,0) L +^SDEC(409.84,SDECAPTID):5 I '$T D ADERR(SDECI+1,.SDECY,"Another user is working with this patient's record. Please try again later",+SDECAPTID,0) Q ;BI/SD *5.3*740 "RTN","SDEC08",75,0) ;cancel check-in if walk-in "RTN","SDEC08",76,0) I $P(SDECNOD,U,13)="y" D "RTN","SDEC08",77,0) .S SDRET="" "RTN","SDEC08",78,0) .D CHECKIN^SDEC25(.SDRET,SDECAPTID,"@") "RTN","SDEC08",79,0) ;validate EAS Tracking Number "RTN","SDEC08",80,0) S EASTRCKNGNMBR=$TR($G(EASTRCKNGNMBR),"^"," ") "RTN","SDEC08",81,0) I $L(EASTRCKNGNMBR) S EASTRCKNGNMBR=$$EASVALIDATE^SDESUTIL(EASTRCKNGNMBR) "RTN","SDEC08",82,0) I +EASTRCKNGNMBR=-1 D ADERR(SDECI,.SDECY,"SDEC08: Invalid EAS Tracking Number",+$G(SDECAPTID),0) Q "RTN","SDEC08",83,0) ;cancel SDEC APPOINTMENT record "RTN","SDEC08",84,0) D SDECCAN(SDECAPTID,SDECTYP,SDECCR,SDECNOT,SDECDATE,SDUSER,SDF,$G(NEWPID),EASTRCKNGNMBR) ;*745 "RTN","SDEC08",85,0) ; "RTN","SDEC08",86,0) S SDECSC1=$P(SDECNOD,U,7) ;RESOURCEID "RTN","SDEC08",87,0) I SDECSC1]"",$D(^SDEC(409.831,SDECSC1,0)) D I +$G(SDECZ) S SDECERR=+SDECZ D ADERR(SDECI,.SDECY,$P(SDECZ,U,2),+SDECAPTID,1) Q ;BI/SD*5.3*740 added ADERR ;changed SDECPATID to SDECAPTID - pwc *745 "RTN","SDEC08",88,0) . S SDECNOD=^SDEC(409.831,SDECSC1,0) "RTN","SDEC08",89,0) . S SDECLOC=$P(SDECNOD,U,4) ;HOSPITAL LOCATION "RTN","SDEC08",90,0) . Q:'+SDECLOC "RTN","SDEC08",91,0) . S SDECSCIEN=$$SCIEN^SDECU2(SDECPATID,SDECLOC,SDECSTART) I SDECSCIEN="" D I 'SDECZ Q ;Q:SDECZ "RTN","SDEC08",92,0) .. S SDECERR="SDEC08: Unable to find associated appointment for this patient. " "RTN","SDEC08",93,0) .. S SDECZ=1 I '$D(^SDEC(409.831,SDECSC1,20)) S SDECZ=0 Q "RTN","SDEC08",94,0) .. N SDEC1 S SDEC1=0 "RTN","SDEC08",95,0) .. F S SDEC1=$O(^SDEC(409.831,SDECSC1,20,SDEC1)) Q:'+SDEC1 Q:SDECZ=0 D "RTN","SDEC08",96,0) ... Q:'$D(^SDEC(409.831,SDECSC1,20,SDEC1,0)) "RTN","SDEC08",97,0) ... S SDECLOC=$P(^SDEC(409.831,SDECSC1,20,SDEC1,0),U) "RTN","SDEC08",98,0) ... S SDECSCIEN=$$SCIEN^SDECU2(SDECPATID,SDECLOC,SDECSTART) I +SDECSCIEN S SDECZ=0 Q "RTN","SDEC08",99,0) . S SDECERR="SDEC08: CANCEL^SDEC08 Returned " "RTN","SDEC08",100,0) . I SDECLOC']"" S SDECZ="0^Unable to find associated appointment for this patient." Q "RTN","SDEC08",101,0) . I '$D(^SC(SDECLOC,0)) S SDECZ="0^Unable to find associated appointment for this patient." Q "RTN","SDEC08",102,0) . S SDECNOD=$G(^SC(SDECLOC,"S",SDECSTART,1,+SDECSCIEN,0)) "RTN","SDEC08",103,0) . I SDECNOD="" S SDECZ="0^Unable to find associated appointment for this patient." Q "RTN","SDEC08",104,0) . S SDECLEN=$P(SDECNOD,U,2) "RTN","SDEC08",105,0) . D APCAN^SDEC08A(.SDECZ,SDECLOC,SDECPATID,SDECSTART,SDECAPTID,SDECLEN) "RTN","SDEC08",106,0) . Q:+$G(SDECZ) "RTN","SDEC08",107,0) . D AVUPDT^SDEC08A(SDECLOC,SDECSTART,SDECLEN) ;moved to SDEC08A routine is too big *745 "RTN","SDEC08",108,0) . D AR433D^SDECAR2(SDECAPTID) "RTN","SDEC08",109,0) L -^SDEC(409.84,SDECAPTID) ;changed SDECPATID to SDECAPTID ; pwc *745 "RTN","SDEC08",110,0) S SDECI=SDECI+1 "RTN","SDEC08",111,0) S @SDECY@(SDECI)=""_$C(30) "RTN","SDEC08",112,0) S SDECI=SDECI+1 "RTN","SDEC08",113,0) S @SDECY@(SDECI)=$C(31) "RTN","SDEC08",114,0) Q "RTN","SDEC08",115,0) ; "RTN","SDEC08",116,0) ADERR(SDECI,SDECY,SDECERR,SDECAPTID,LOCK) ;Error processing BI/SD*5.3*740 ;changed SDECPATID to SDECAPTID ; pwc *745 "RTN","SDEC08",117,0) S SDECI=SDECI+1 "RTN","SDEC08",118,0) S SDECERR=$TR(SDECERR,"^","~") "RTN","SDEC08",119,0) S @SDECY@(SDECI)=SDECERR_$C(30) "RTN","SDEC08",120,0) S SDECI=SDECI+1 "RTN","SDEC08",121,0) S @SDECY@(SDECI)=$C(31) "RTN","SDEC08",122,0) I LOCK=1 L -^SDEC(409.84,SDECAPTID) ; changed SDECPATID to SDECAPTID ; pwc *745 "RTN","SDEC08",123,0) Q "RTN","SDEC08",124,0) ; "RTN","SDEC08",125,0) SDECCAN(SDECAPTID,SDECTYP,SDECCR,SDECNOT,SDECDATE,SDUSER,SDF,NEWPID,EASTRCKNGNMBR) ;cancel SDEC APPOINTMENT entry "RTN","SDEC08",126,0) ;SDECAPTID - (required) pointer to SDEC APPOINTMENT file "RTN","SDEC08",127,0) ;SDECTYP - (required) appointment Status valid values: "RTN","SDEC08",128,0) ; C=CANCELLED BY CLINIC "RTN","SDEC08",129,0) ; PC=CANCELLED BY PATIENT "RTN","SDEC08",130,0) ;SDECCR - (required) pointer to CANCELLATION REASON File (409.2) "RTN","SDEC08",131,0) ;SDECNOT - (optional) text representing user note "RTN","SDEC08",132,0) ;SDECDATE - (optional) Cancel Date/Time in fm format; defaults to NOW) ; "RTN","SDEC08",133,0) ;SDF - (optional) flags ;*745 expanded flag explanation "RTN","SDEC08",134,0) ; "1" or null - update consult only. (assumption called from a GUI) "RTN","SDEC08",135,0) ; "01" (two digit) -do not reopen appt (called from cancel in SDAM) "RTN","SDEC08",136,0) ; "2" - close appt request disp code REMOVED/EXTERNAL APP "RTN","SDEC08",137,0) ; "3" - Block & Move don't re-open a Appt Request if a Recall "RTN","SDEC08",138,0) ;NEWPID - (optional) Only allowed when cancelling a recall request appointment by patient "RTN","SDEC08",139,0) ;EASTRCKINGNMBR - (optional) Enterprise Appointment Scheduling Tracking Number associated to an appointment. "RTN","SDEC08",140,0) ; "RTN","SDEC08",141,0) ;Cancel SDEC APPOINTMENT entry "RTN","SDEC08",142,0) N DFN,PROVIEN,Y "RTN","SDEC08",143,0) N SAVESTRT,SDAPTYP,SDCL,SDI,SDIEN,SDECIENS,SDECFDA,SDECMSG,SDECWP,SDRES,SDT ;alb/sat 651 add SAVESTRT and SDRES "RTN","SDEC08",144,0) N DFN40985,IEN40986,PIDCHANGEVERIF,CSFDA,CSSIEN,ERR,CONSIEN,PIDHIEN ;**792 "RTN","SDEC08",145,0) S SDF=$G(SDF,0) "RTN","SDEC08",146,0) S NEWPID=$G(NEWPID) "RTN","SDEC08",147,0) S DFN=$$GET1^DIQ(409.84,SDECAPTID_",",.05,"I") ;alb/sat 658;781 lab added, "I" "RTN","SDEC08",148,0) S SDT=$$GET1^DIQ(409.84,SDECAPTID_",",.01,"I") "RTN","SDEC08",149,0) S SAVESTRT=$$GET1^DIQ(409.84,SDECAPTID_",",.01) ;alb/sat 651 "RTN","SDEC08",150,0) S SDRES=$$GET1^DIQ(409.84,SDECAPTID_",",.07,"I") ;alb/sat 651 "RTN","SDEC08",151,0) S SDECIENS=SDECAPTID_"," "RTN","SDEC08",152,0) S SDECFDA(409.84,SDECIENS,.12)=$S($G(SDECDATE)'="":SDECDATE,1:$$NOW^XLFDT) "RTN","SDEC08",153,0) S SDECFDA(409.84,SDECIENS,.121)=$S($G(SDUSER)'="":SDUSER,1:DUZ) "RTN","SDEC08",154,0) S:$G(SDECCR)'="" SDECFDA(409.84,SDECIENS,.122)=SDECCR "RTN","SDEC08",155,0) S SDECFDA(409.84,SDECIENS,.17)=SDECTYP "RTN","SDEC08",156,0) ;S SDECFDA(409.84,SDECIENS,2)="@" ;patch SD*5.3*796, delete VVS appointment ID if appoinment is cancelled "RTN","SDEC08",157,0) S:$G(EASTRCKNGNMBR)'="" SDECFDA(409.84,SDECIENS,100)=EASTRCKNGNMBR "RTN","SDEC08",158,0) K SDECMSG "RTN","SDEC08",159,0) D FILE^DIE("","SDECFDA","SDECMSG") "RTN","SDEC08",160,0) S SDAPTYP=$$GET1^DIQ(409.84,SDECAPTID_",",.22,"I") "RTN","SDEC08",161,0) I SDF=3,$P(SDAPTYP,";",2)'="SD(403.5," S SDF=0 "RTN","SDEC08",162,0) ;alb/sat 658 modification begin "RTN","SDEC08",163,0) S SDECNOT=$G(SDECNOT) ;,SDECNOT=$E(SDECNOT,1,160) - removed 160 character restriction so entire note is stored in #409.84 - wtc 756 "RTN","SDEC08",164,0) I $L(SDECNOT)>2,'$E(SDF,2) K SDECFDA "RTN","SDEC08",165,0) S SDECFDA(2.98,SDT_","_DFN_",",17)=$E(SDECNOT,1,160) D UPDATE^DIE("","SDECFDA") ; restrict note in #2 to 160 characters - wtc 756 "RTN","SDEC08",166,0) ; VSE-863; 6/6/2021 ; create new "APPT" Request if A "RECALL" Appt is Cancelled "RTN","SDEC08",167,0) I $P(SDAPTYP,";",2)="SD(403.5," D Q "RTN","SDEC08",168,0) .Q:SDF=3 "RTN","SDEC08",169,0) .D RECREQ^SDECRECREQ(.SDECY,SDECAPTID,SDAPTYP,$G(NEWPID),$G(SDECTYP)) "RTN","SDEC08",170,0) ;alb/sat 658 modification end "RTN","SDEC08",171,0) I $P(SDAPTYP,";",2)="GMR(123,",$E(SDF,1),(SDF'=2) D "RTN","SDEC08",172,0) .S SDCL=$$SDCL^SDECUTL(SDECAPTID) "RTN","SDEC08",173,0) .S PROVIEN=$$GET1^DIQ(44,SDCL_",",16,"I") "RTN","SDEC08",174,0) .D REQSET^SDEC07A($P(SDAPTYP,";",1),PROVIEN,"",2,SDECTYP,SDECNOT,SAVESTRT,SDRES) ;651 added SAVESTRT "RTN","SDEC08",175,0) .; File consult PID history "RTN","SDEC08",176,0) .I $G(NEWPID) D "RTN","SDEC08",177,0) ..S CONSIEN=$P(SDAPTYP,";",1) "RTN","SDEC08",178,0) ..S PIDHIEN=$O(^SDEC(409.87,"B",CONSIEN,0)) "RTN","SDEC08",179,0) ..S CSFDA(409.871,"+1,"_PIDHIEN_",",.01)=$$NOW^XLFDT "RTN","SDEC08",180,0) ..S CSFDA(409.871,"+1,"_PIDHIEN_",",1)=$G(NEWPID) "RTN","SDEC08",181,0) ..S CSFDA(409.871,"+1,"_PIDHIEN_",",2)=$$GET1^DIQ(200,SDUSER,.01,"E") "RTN","SDEC08",182,0) ..D UPDATE^DIE("","CSFDA","CSSIEN","ERR") K CSFDA "RTN","SDEC08",183,0) .Q "RTN","SDEC08",184,0) I $P(SDAPTYP,";",2)="SDEC(409.85," D ;update APPT "RTN","SDEC08",185,0) .K SDECFDA,SDECMSG,SDECWP "RTN","SDEC08",186,0) .D:'$E(SDF,2) AROPEN^SDECAR("",SDECAPTID) "RTN","SDEC08",187,0) .S SDIEN=$P(SDAPTYP,";",1) "RTN","SDEC08",188,0) .S SDECFDA(409.85,SDIEN_",",13)="@" "RTN","SDEC08",189,0) .S SDECFDA(409.85,SDIEN_",",13.1)="@" "RTN","SDEC08",190,0) .S SDECFDA(409.85,SDIEN_",",13.2)="@" "RTN","SDEC08",191,0) .S SDECFDA(409.85,SDIEN_",",13.3)="@" "RTN","SDEC08",192,0) .S SDECFDA(409.85,SDIEN_",",13.4)="@" "RTN","SDEC08",193,0) .S SDECFDA(409.85,SDIEN_",",13.5)="@" "RTN","SDEC08",194,0) .S SDECFDA(409.85,SDIEN_",",13.6)="@" "RTN","SDEC08",195,0) .S SDECFDA(409.85,SDIEN_",",13.7)="@" "RTN","SDEC08",196,0) .S SDECFDA(409.85,SDIEN_",",13.8)="@" "RTN","SDEC08",197,0) .S PIDCHANGEVERIF=$S(SDECTYP="C":0,SDECTYP="PC":1,1:"") "RTN","SDEC08",198,0) .S SDECFDA(409.85,SDIEN_",",49)=PIDCHANGEVERIF "RTN","SDEC08",199,0) .S:$G(EASTRCKNGNMBR)'="" SDECFDA(409.85,SDIEN_",",100)=EASTRCKNGNMBR "RTN","SDEC08",200,0) .D UPDATE^DIE("","SDECFDA","ARRET","ERRMSG") "RTN","SDEC08",201,0) .I SDF=2 NEW INP S INP(1)=SDIEN S INP(2)="REMOVED/EXTERNAL APP" S INP(3)=SDUSER S INP(4)=DT D ARCLOSE^SDECAR("",.INP) ;*745 "RTN","SDEC08",202,0) Q "RTN","SDEC08",203,0) ; "RTN","SDEC08",204,0) CANEVT(SDECPAT,SDECSTART,SDECSC) ;EP Called by SDEC CANCEL APPOINTMENT "RTN","SDEC08",205,0) ;when Appt cancelled via PIMS interface. "RTN","SDEC08",206,0) ;Propagates canceL to SDECAPPT & raises refresh event to running GUI clients "RTN","SDEC08",207,0) N SDECFOUND,SDECRES "RTN","SDEC08",208,0) Q:+$G(SDECNOEV) "RTN","SDEC08",209,0) Q:'+$G(SDECSC) "RTN","SDEC08",210,0) S SDECFOUND=0 "RTN","SDEC08",211,0) I $D(^SDEC(409.831,"ALOC",SDECSC)) S SDECRES=$O(^SDEC(409.831,"ALOC",SDECSC,0)) S SDECFOUND=$$CANEVT1(SDECRES,SDECSTART,SDECPAT) "RTN","SDEC08",212,0) I SDECFOUND D CANEVT3(SDECRES) Q "RTN","SDEC08",213,0) Q "RTN","SDEC08",214,0) ; "RTN","SDEC08",215,0) CANEVT1(SDECRES,SDECSTART,SDECPAT) ; "RTN","SDEC08",216,0) ;Get Appt ID in SDECAPT "RTN","SDEC08",217,0) ;If found, call SDECCAN(SDECAPPT) and return 1 "RTN","SDEC08",218,0) ;else return 0 "RTN","SDEC08",219,0) N SDECFOUND,SDECAPPT "RTN","SDEC08",220,0) S SDECFOUND=0 "RTN","SDEC08",221,0) Q:'+SDECRES SDECFOUND "RTN","SDEC08",222,0) Q:'$D(^SDEC(409.84,"ARSRC",SDECRES,SDECSTART)) SDECFOUND "RTN","SDEC08",223,0) S SDECAPPT=0 F S SDECAPPT=$O(^SDEC(409.84,"ARSRC",SDECRES,SDECSTART,SDECAPPT)) Q:'+SDECAPPT D Q:SDECFOUND "RTN","SDEC08",224,0) . S SDECNOD=$G(^SDEC(409.84,SDECAPPT,0)) Q:SDECNOD="" "RTN","SDEC08",225,0) . I $P(SDECNOD,U,5)=SDECPAT,$P(SDECNOD,U,12)="" S SDECFOUND=1 Q "RTN","SDEC08",226,0) I SDECFOUND,+$G(SDECAPPT) D SDECCAN(SDECAPPT,,,,,,1) "RTN","SDEC08",227,0) Q SDECFOUND "RTN","SDEC08",228,0) ; "RTN","SDEC08",229,0) CANEVT3(SDECRES) ; "RTN","SDEC08",230,0) ;Call RaiseEvent to notify GUI clients "RTN","SDEC08",231,0) Q "RTN","SDEC08",232,0) N SDECRESN "RTN","SDEC08",233,0) S SDECRESN=$G(^SDEC(409.831,SDECRES,0)) "RTN","SDEC08",234,0) Q:SDECRESN="" "RTN","SDEC08",235,0) S SDECRESN=$P(SDECRESN,"^") "RTN","SDEC08",236,0) Q "RTN","SDEC08",237,0) ; "RTN","SDEC08",238,0) CANCEL(BSDR) ;EP; called to cancel appt "RTN","SDEC08",239,0) ; Make call using: S ERR=$$CANCEL^SDEC08(.ARRAY) "RTN","SDEC08",240,0) ; "RTN","SDEC08",241,0) ; Input Array - "RTN","SDEC08",242,0) ; BSDR("PAT") = ien of patient file 2 "RTN","SDEC08",243,0) ; BSDR("CLN") = ien of clinic file 44 "RTN","SDEC08",244,0) ; BSDR("TYP") = C for canceled by clinic; PC for patient canceled "RTN","SDEC08",245,0) ; BSDR("ADT") = appointment date and time "RTN","SDEC08",246,0) ; BSDR("CDT") = cancel date and time "RTN","SDEC08",247,0) ; BSDR("USR") = user who canceled appt "RTN","SDEC08",248,0) ; BSDR("CR") = cancel reason - pointer to file 409.2 "RTN","SDEC08",249,0) ; BSDR("NOT") = cancel remarks - optional notes to 160 characters "RTN","SDEC08",250,0) ; "RTN","SDEC08",251,0) ;Output: error status and message "RTN","SDEC08",252,0) ; = 0 or null: everything okay "RTN","SDEC08",253,0) ; = 1^message: error and reason "RTN","SDEC08",254,0) ; "RTN","SDEC08",255,0) I '$D(^DPT(+$G(BSDR("PAT")),0)) Q 1_U_"Patient not on file: "_$G(BSDR("PAT")) "RTN","SDEC08",256,0) I '$D(^SC(+$G(BSDR("CLN")),0)) Q 1_U_"Clinic not on file: "_$G(BSDR("CLN")) "RTN","SDEC08",257,0) I ($G(BSDR("TYP"))'="C"),($G(BSDR("TYP"))'="PC") Q 1_U_"Cancel Status error: "_$G(BSDR("TYP")) "RTN","SDEC08",258,0) I $G(BSDR("ADT"))'?7N1"."1N.N Q 1_U_"Appt Date/Time error: "_$G(BSDR("ADT")) ;PWC allow any time combination of numbers #694 "RTN","SDEC08",259,0) I $G(BSDR("CDT"))'?7N1"."1N.N Q 1_U_"Appt Date/Time error: "_$G(BSDR("ADT")) ;PWC allow any time combination of numbers #694 "RTN","SDEC08",260,0) I '$D(^VA(200,+$G(BSDR("USR")),0)) Q 1_U_"User Who Canceled Appt Error: "_$G(BSDR("USR")) "RTN","SDEC08",261,0) I '$D(^SD(409.2,+$G(BSDR("CR")))) Q 1_U_"Cancel Reason error: "_$G(BSDR("CR")) "RTN","SDEC08",262,0) ; "RTN","SDEC08",263,0) NEW IEN,DIE,DA,DR,SDMODE,HLAPTIEN ;*zeb+1 722 2/21/19 save IEN for canceling appt "RTN","SDEC08",264,0) S IEN=$$SCIEN^SDECU2(BSDR("PAT"),BSDR("CLN"),BSDR("ADT")),HLAPTIEN=IEN "RTN","SDEC08",265,0) I 'IEN Q 1_U_"Error trying to find appointment for cancel: Patient="_BSDR("PAT")_" Clinic="_BSDR("CLN")_" Appt="_BSDR("ADT") "RTN","SDEC08",266,0) ; "RTN","SDEC08",267,0) I $$CI^SDECU2(BSDR("PAT"),BSDR("CLN"),BSDR("ADT"),IEN) Q 1_U_"Patient already checked in; cannot cancel until check-in deleted: Patient="_BSDR("PAT")_" Clinic="_BSDR("CLN")_" Appt="_BSDR("ADT") "RTN","SDEC08",268,0) ; "RTN","SDEC08",269,0) ; remember before status "RTN","SDEC08",270,0) NEW SDATA,DFN,SDT,SDCL,SDDA,SDCPHDL "RTN","SDEC08",271,0) S DFN=BSDR("PAT"),SDT=BSDR("ADT"),SDCL=BSDR("CLN"),SDMODE=2,SDDA=IEN "RTN","SDEC08",272,0) S SDCPHDL=$$HANDLE^SDAMEVT(1),SDATA=SDDA_U_DFN_U_SDT_U_SDCL "RTN","SDEC08",273,0) D BEFORE^SDAMEVT(.SDATA,DFN,SDT,SDCL,SDDA,SDCPHDL) "RTN","SDEC08",274,0) ; "RTN","SDEC08",275,0) ; get user who made appt and date appt made from ^SC "RTN","SDEC08",276,0) ; because data in ^SC will be deleted "RTN","SDEC08",277,0) NEW USER,DATE "RTN","SDEC08",278,0) S USER=$P($G(^SC(SDCL,"S",SDT,1,IEN,0)),U,6) "RTN","SDEC08",279,0) S DATE=$P($G(^SC(SDCL,"S",SDT,1,IEN,0)),U,7) "RTN","SDEC08",280,0) ; "RTN","SDEC08",281,0) ; update file 2 info "RTN","SDEC08",282,0) NEW DIE,DA,DR "RTN","SDEC08",283,0) N SDFDA,SDIEN,SDMSG "RTN","SDEC08",284,0) S SDFDA="SDFDA(2.98,SDT_"",""_DFN_"","")" "RTN","SDEC08",285,0) S @SDFDA@(3)=BSDR("TYP") "RTN","SDEC08",286,0) S @SDFDA@(14)=BSDR("USR") "RTN","SDEC08",287,0) S @SDFDA@(15)=BSDR("CDT") "RTN","SDEC08",288,0) S:+$G(BSDR("CR")) @SDFDA@(16)=BSDR("CR") "RTN","SDEC08",289,0) S:$G(BSDR("NOT"))]"" @SDFDA@(17)=$E(BSDR("NOT"),1,160) "RTN","SDEC08",290,0) S @SDFDA@(19)=USER "RTN","SDEC08",291,0) S @SDFDA@(20)=DATE "RTN","SDEC08",292,0) D UPDATE^DIE("","SDFDA") ; ICR #7030 wtc 756 6/15/2020 "RTN","SDEC08",293,0) N SDPCE "RTN","SDEC08",294,0) S SDPCE=$P($G(^DPT(DFN,"S",SDT,0)),U,20) ; ICR #7030 wtc 756 6/15/2020 "RTN","SDEC08",295,0) D:+SDPCE EN^SDCODEL(SDPCE,2,"","CANCEL") ;remove OUTPATIENT ENCOUNTER link ;*zeb 10/25/18 722 pass in correct SDMODE and delete source "RTN","SDEC08",296,0) S $P(^SC(BSDR("CLN"),"S",BSDR("ADT"),1,HLAPTIEN,0),"^",9)="C" "RTN","SDEC08",297,0) ; call event driver "RTN","SDEC08",298,0) S SDATA=SDDA_U_DFN_U_SDT_U_SDCL "RTN","SDEC08",299,0) D CANCEL^SDAMEVT(.SDATA,DFN,SDT,SDCL,SDDA,SDMODE,SDCPHDL) ;*zeb 10/25/18 722 uncomment to re-enable event driver "RTN","SDEC08",300,0) Q 0 "RTN","SDEC08",301,0) ; "RTN","SDEC08",302,0) UNDOCANA(SDECY,SDECAPTID) ;Undo Cancel Appointment "RTN","SDEC08",303,0) ;UNDOCANA(SDECY,SDECAPTID) external parameter tag in SDEC "RTN","SDEC08",304,0) ;called by SDEC UNCANCEL APPT "RTN","SDEC08",305,0) ; SDECAPTID = ien of appointment in SDEC APPOINTMENT (^SDECAPPT) file 409.84 "RTN","SDEC08",306,0) N SDECDAM,SDECDEC,SDECI,SDECNOD,SDECPATID,SDECSTART,SDECNOTE,SDECWKIN "RTN","SDEC08",307,0) S SDECNOEV=1 ;Don't execute SDEC CANCEL APPOINTMENT protocol ;is this used? "RTN","SDEC08",308,0) ; "RTN","SDEC08",309,0) S SDECI=0 "RTN","SDEC08",310,0) K ^TMP("SDEC",$J) "RTN","SDEC08",311,0) S SDECY="^TMP(""SDEC"","_$J_")" "RTN","SDEC08",312,0) S ^TMP("SDEC",$J,SDECI)="T00020ERRORID"_$C(30) "RTN","SDEC08",313,0) I '+SDECAPTID D ERR(SDECI+1,"Invalid Appointment ID.",+$G(SDECAPTID),0) Q ;BI/SD*5.3*740 "RTN","SDEC08",314,0) I '$D(^SDEC(409.84,SDECAPTID,0)) D ERR(SDECI+1,"Invalid Appointment ID",+SDECAPTID,0) Q ;BI/SD*5.3*740 "RTN","SDEC08",315,0) ;Make sure appointment is cancelled "RTN","SDEC08",316,0) I $$GET1^DIQ(409.84,SDECAPTID_",",.12)="" D ERR(SDECI+1,"Appointment is not Cancelled.",+SDECAPTID,0) Q ;BI/SD*5.3*740 "RTN","SDEC08",317,0) S SDECNOD=^SDEC(409.84,SDECAPTID,0) "RTN","SDEC08",318,0) ;appts cancelled by patient cannot be un-cancelled. /* removed 9/17/2010 */ "RTN","SDEC08",319,0) ;I $P(^DPT($P(SDECNOD,U,5),"S",$P(SDECNOD,U,1),0),U,2)="PC" TROLLBACK D ERR(SDECI+1,"Cancelled by patient appointment cannot be uncancelled.") Q "RTN","SDEC08",320,0) ;get appointment data "RTN","SDEC08",321,0) S SDECNOD=^SDEC(409.84,SDECAPTID,0) "RTN","SDEC08",322,0) S SDECDAM=$P(SDECNOD,U,9) ;date appt made "RTN","SDEC08",323,0) S SDECDEC=$P(SDECNOD,U,8) ;data entry clerk "RTN","SDEC08",324,0) S SDECLEN=$P(SDECNOD,U,18) ;length of appt in minutes "RTN","SDEC08",325,0) ; "RTN","SDEC08",326,0) ; Get entire note from Appointment file. 756 wtc 1/25/2019 "RTN","SDEC08",327,0) ; "RTN","SDEC08",328,0) ;S SDECNOTE=$G(^SDEC(409.84,SDECAPTID,1,1,0)) ;note from SDEC APPOINTMENT "RTN","SDEC08",329,0) S SDECNOTE="" N I F I=1:1 Q:'$D(^SDEC(409.84,SDECAPTID,1,I,0)) S SDECNOTE=SDECNOTE_^(0)_$C(13) ; "RTN","SDEC08",330,0) ; "RTN","SDEC08",331,0) S SDECPATID=$P(SDECNOD,U,5) ;pointer to VA PATIENT file 2 "RTN","SDEC08",332,0) S SDECSC1=$P($G(SDECNOD),U,7) ;resource "RTN","SDEC08",333,0) S SDECSTART=$P(SDECNOD,U) ;appt start time "RTN","SDEC08",334,0) S SDECWKIN=$P($G(SDECNOD),U,13) ;walk-in "RTN","SDEC08",335,0) ;lock SDEC node "RTN","SDEC08",336,0) ; changed line below to use SDECAPTID instead of SDECPATID ; pwc *745 7/16/2020 "RTN","SDEC08",337,0) L +^SDEC(409.84,SDECAPTID):5 I '$T D ERR(SDECI+1,"Another user is working with this patient's record. Please try again later",+SDECAPTID,0) Q ;BI/SD*5.3*740 "RTN","SDEC08",338,0) ;un-cancel SDEC APPOINTMENT "RTN","SDEC08",339,0) D SDECUCAN^SDEC08A(SDECAPTID) ;moved to ^SDEC08A because of XINDEX size *756 PWC "RTN","SDEC08",340,0) I SDECSC1]"",$D(^SDEC(409.831,SDECSC1,0)) D I +$G(SDECZ) S SDECERR=SDECERR_$P(SDECZ,U,2) D ERR(SDECI,SDECERR,+SDECAPTID,1) Q ;BI/SD*5.3*740 ;changed SDECPATID to SDECAPTID - pwc *745 "RTN","SDEC08",341,0) . S SDECLOC="" "RTN","SDEC08",342,0) . S SDECNOD=^SDEC(409.831,SDECSC1,0) "RTN","SDEC08",343,0) . S SDECLOC=$P(SDECNOD,U,4) ;HOSPITAL LOCATION ;support for single HOSPITAL LOCATION in SDEC RESOURCE "RTN","SDEC08",344,0) . I SDECLOC="" S SDECLOC=$$SDCL^SDECUTL(SDECAPTID) ;HOSPITAL LOCATION "RTN","SDEC08",345,0) . Q:'+SDECLOC "RTN","SDEC08",346,0) . ;un-cancel patient appointment and re-instate clinic appointment "RTN","SDEC08",347,0) . S SDECZ="" "RTN","SDEC08",348,0) . D APUCAN^SDEC08A(.SDECZ,SDECLOC,SDECPATID,SDECSTART,SDECDAM,SDECDEC,SDECLEN,SDECNOTE,SDECSC1,SDECWKIN) ;moved to ^SDEC08A because of XINDEX size *756 PWC "RTN","SDEC08",349,0) L -^SDEC(409.84,SDECAPTID) ;changed SDECPATID to SDECAPTID - pwc *745 "RTN","SDEC08",350,0) S SDECI=SDECI+1 "RTN","SDEC08",351,0) S ^TMP("SDEC",$J,SDECI)=""_$C(30) "RTN","SDEC08",352,0) S SDECI=SDECI+1 "RTN","SDEC08",353,0) S ^TMP("SDEC",$J,SDECI)=$C(31) "RTN","SDEC08",354,0) Q "RTN","SDEC08",355,0) ; "RTN","SDEC08",356,0) ERR(SDECI,SDECERR,SDECAPTID,LOCK) ;Error processing BI/SD*5.3*740 added two parameters ;changed SDECPATID to SDECAPTID - pwc *745 "RTN","SDEC08",357,0) S SDECI=SDECI+1 "RTN","SDEC08",358,0) S SDECERR=$TR(SDECERR,"^","~") "RTN","SDEC08",359,0) S ^TMP("SDEC",$J,SDECI)=SDECERR_$C(30) "RTN","SDEC08",360,0) S SDECI=SDECI+1 "RTN","SDEC08",361,0) S ^TMP("SDEC",$J,SDECI)=$C(31) "RTN","SDEC08",362,0) I $G(LOCK)=1 L -^SDEC(409.84,SDECAPTID) ;BI/SD*5.3*740 ;changed SDECPATID to SDECAPTID - pwc *745 "RTN","SDEC08",363,0) Q "RTN","SDEC08",364,0) ; "RTN","SDEC08",365,0) ETRAP ;EP Error trap entry "RTN","SDEC08",366,0) D ^%ZTER "RTN","SDEC08",367,0) I '$D(SDECI) N SDECI S SDECI=999999 "RTN","SDEC08",368,0) S SDECI=SDECI+1 "RTN","SDEC08",369,0) D ERR(SDECI,"SDEC08 Error") "RTN","SDEC08",370,0) Q "RTN","SDEC31") 0^36^B44957325^B42058535 "RTN","SDEC31",1,0) SDEC31 ;ALB/SAT,PC - VISTA SCHEDULING RPCS ;Jul 23, 2021@15:22 "RTN","SDEC31",2,0) ;;5.3;Scheduling;**627,683,717,740,694,792,794,805**;Aug 13, 1993;Build 9 "RTN","SDEC31",3,0) ; "RTN","SDEC31",4,0) Q "RTN","SDEC31",5,0) ; "RTN","SDEC31",6,0) NOSHOW(SDECY,SDECAPTID,SDECNS,USERIEN,SDECDATE) ;Sets appointment noshow flag in SDEC APPOINTMENT file "RTN","SDEC31",7,0) ;NOSHOW(SDECY,SDECAPTID,SDECNS,USERIEN,SDECDATE) external parameter tag is in SDEC "RTN","SDEC31",8,0) ;Called by SDEC NOSHOW "RTN","SDEC31",9,0) ;SDECAPTID - (required) Appointment ID - Pointer to SDEC APPOINTMENT file "RTN","SDEC31",10,0) ;SDECNS - (required) Cancel flag 1=YES (Set NOSHOW); 0=NO (Cancel NOSHOW) "RTN","SDEC31",11,0) ;USERIEN - (optional) User that entered NoShow pointer to NEW PERSON "RTN","SDEC31",12,0) ; default to current user "RTN","SDEC31",13,0) ;SDECDATE - (optional) Date/Time that No-show was entered in external format "RTN","SDEC31",14,0) ; default to NOW. "RTN","SDEC31",15,0) ;Calls CANCEL^SDEC08 to set noshow data in ^DPT <<== NOT TRUE wtc 10/25/18 "RTN","SDEC31",16,0) ;Returns error code in recordset field ERRORID "RTN","SDEC31",17,0) ; "RTN","SDEC31",18,0) N SDECNOD,DFN,SDECSTART,SDECID,SDECI,SDECZ,SDECERR,SDECMSG,SDFDA,SDECIENS,REQTYPE,CONS,CONSULTIEN,PROVIDER,NOTE,DATETIME,RESOURCE,REQSET "RTN","SDEC31",19,0) N SDECNOEV,%DT,X,Y,SDECOE,REQNODE,REQIEN "RTN","SDEC31",20,0) S SDECNOEV=1 ;Don't execute protocol "RTN","SDEC31",21,0) ; "RTN","SDEC31",22,0) S SDECI=0 "RTN","SDEC31",23,0) K ^TMP("SDEC",$J) "RTN","SDEC31",24,0) S SDECY="^TMP(""SDEC"","_$J_")" "RTN","SDEC31",25,0) S ^TMP("SDEC",$J,SDECI)="I00020ERRORID^T00030ERRORTEXT"_$C(30) "RTN","SDEC31",26,0) S SDECI=SDECI+1 "RTN","SDEC31",27,0) ;validate SDEC appointment ID "RTN","SDEC31",28,0) I '+SDECAPTID D ERR(0,"SDEC31: Invalid Appointment ID") Q "RTN","SDEC31",29,0) I '$D(^SDEC(409.84,SDECAPTID,0)) D ERR(0,"SDEC31: Invalid Appointment ID") Q "RTN","SDEC31",30,0) ;validate cancel flag "RTN","SDEC31",31,0) S SDECNS=$G(SDECNS) "RTN","SDEC31",32,0) S SDECNS=$S(SDECNS="YES":1,SDECNS=1:1,SDECNS="NO":0,SDECNS=0:0,1:"") "RTN","SDEC31",33,0) I SDECNS="" D ERR(0,"SDEC31: Invalid No Show value") Q "RTN","SDEC31",34,0) ;validate user IEN (optional) "RTN","SDEC31",35,0) S USERIEN=$G(USERIEN) "RTN","SDEC31",36,0) I USERIEN'="" I '$D(^VA(200,+USERIEN,0)) S USERIEN="" "RTN","SDEC31",37,0) I USERIEN="" S USERIEN=DUZ "RTN","SDEC31",38,0) ;validate cancel date/time (optional) "RTN","SDEC31",39,0) ; "RTN","SDEC31",40,0) ; Change date/time conversion so midnight is handled properly. wtc 694 5/17/18 "RTN","SDEC31",41,0) ; "RTN","SDEC31",42,0) ;S %DT="" S X=$P(SDBEG,"@",1) D ^%DT S SDBEG=Y "RTN","SDEC31",43,0) S SDECDATE=$G(SDECDATE) "RTN","SDEC31",44,0) ;I SDECDATE'="" S %DT="T" S X=SDECDATE D ^%DT S SDECDATE=Y I Y=-1 S SDECDATE="" "RTN","SDEC31",45,0) I SDECDATE'="" S SDECDATE=$$NETTOFM^SDECDATE(SDECDATE,"Y","Y") I SDECDATE=-1 S SDECDATE="" ; "RTN","SDEC31",46,0) I $G(SDECDATE)="" S SDECDATE=$$NOW^XLFDT "RTN","SDEC31",47,0) ; "RTN","SDEC31",48,0) ;Edit SDEC APPOINTMENT entry NOSHOW field "RTN","SDEC31",49,0) S SDECNOD=^SDEC(409.84,SDECAPTID,0) "RTN","SDEC31",50,0) ;I SDECNOD="" D ERR(0,"SDEC31: Invalid Appointment ID") Q "RTN","SDEC31",51,0) S DFN=$P(SDECNOD,U,5) "RTN","SDEC31",52,0) S SDECSTART=$P(SDECNOD,U) "RTN","SDEC31",53,0) ; "RTN","SDEC31",54,0) ;Modify PID CHANGE ALLOWED Field in 409.85 based on whether no-show or cancel no-show "RTN","SDEC31",55,0) S REQNODE=$G(^SDEC(409.84,SDECAPTID,2)) "RTN","SDEC31",56,0) S REQIEN=$P(REQNODE,";") "RTN","SDEC31",57,0) I SDECNS=1 D "RTN","SDEC31",58,0) .S FDA(409.85,REQIEN_",",49)=1 "RTN","SDEC31",59,0) I SDECNS=0 D "RTN","SDEC31",60,0) .S FDA(409.85,REQIEN_",",49)=0 "RTN","SDEC31",61,0) D FILE^DIE(,"FDA","ERR") K FDA "RTN","SDEC31",62,0) ; Event driver "BEFORE" actions - wtc SD*5.3*717 10/25/18 "RTN","SDEC31",63,0) ; "RTN","SDEC31",64,0) N SDATA,SDDA,SDCIHDL,SDECR1,SDECSC1 "RTN","SDEC31",65,0) S SDECR1=$P(SDECNOD,U,7) ;RESOURCEID "RTN","SDEC31",66,0) I SDECR1="" D ERR(0,"SDEC31: Missing resource") Q "RTN","SDEC31",67,0) S SDECNOD=$G(^SDEC(409.831,SDECR1,0)) I SDECNOD="" D ERR(0,"SDEC31: Resource node missing") Q "RTN","SDEC31",68,0) S SDECSC1=$P(SDECNOD,U,4) ;HOSPITAL LOCATION "RTN","SDEC31",69,0) I SDECSC1="" D ERR(0,"SDEC31: No location for resource") Q "RTN","SDEC31",70,0) I '$D(^SC(SDECSC1,0)) D ERR(0,"SDEC31: Location node missing") Q "RTN","SDEC31",71,0) ; "RTN","SDEC31",72,0) S SDDA=$$FIND^SDEC25(DFN,SDECSTART,SDECSC1),SDATA=SDDA_U_DFN_U_SDECSTART_U_SDECSC1,SDCIHDL=$$HANDLE^SDAMEVT(1) "RTN","SDEC31",73,0) D BEFORE^SDAMEVT(.SDATA,DFN,SDECSTART,SDECSC1,SDDA,SDCIHDL) "RTN","SDEC31",74,0) ; "RTN","SDEC31",75,0) ; Process no show "RTN","SDEC31",76,0) ; "RTN","SDEC31",77,0) D SDECNOS(SDECAPTID,SDECNS,USERIEN,SDECDATE) "RTN","SDEC31",78,0) I $D(SDECMSG("DIERR")) S SDECMSG=$G(SDECMSG("DIERR",1,"TEXT",1)) D ERR(0,"SDEC31: "_SDECMSG) Q "RTN","SDEC31",79,0) D APNOSHO(.SDECZ,SDECSC1,DFN,SDECSTART,SDECNS,USERIEN,SDECDATE,SDECAPTID) "RTN","SDEC31",80,0) I +$G(SDECZ) S SDECERR="SDEC31: APNOSHO Returned: "_SDECZ D ERR(0,SDECERR) Q "RTN","SDEC31",81,0) ; "RTN","SDEC31",82,0) ;*zeb+2 683 2/6/18 fix action required in PCE after no-show from GUI "RTN","SDEC31",83,0) S SDECOE=$P($G(^DPT(DFN,"S",SDECSTART,0)),"^",20) "RTN","SDEC31",84,0) I SDECOE D EN^SDCODEL(SDECOE,2,"","NOSHOW") ;*zeb 717 11/13/18 suppress event logging for cancel checkout when no-showing "RTN","SDEC31",85,0) ; "RTN","SDEC31",86,0) ; Event driver "AFTER" actions - wtc SD*5.3*717 10/24/18 "RTN","SDEC31",87,0) ; "RTN","SDEC31",88,0) ;remove undo no-show from grid; /BLB/ "RTN","SDEC31",89,0) ; "RTN","SDEC31",90,0) S REQTYPE=$$GET1^DIQ(409.84,SDECAPTID,.22,"E") "RTN","SDEC31",91,0) I SDECNS=0,REQTYPE="CONSULT" D "RTN","SDEC31",92,0) .S CONS=$$GET1^DIQ(409.84,SDECAPTID,.22,"I"),CONSULTIEN=$P(CONS,";",1) "RTN","SDEC31",93,0) .S PROVIDER=$$GET1^DIQ(409.84,SDECAPTID,.16,"I") "RTN","SDEC31",94,0) .S NOTE=$$GET1^DIQ(409.84,SDECAPTID,1,"E") "RTN","SDEC31",95,0) .S DATETIME=$$GET1^DIQ(409.84,SDECAPTID,.01,"E") "RTN","SDEC31",96,0) .S RESOURCE=$$GET1^DIQ(409.84,SDECAPTID,.07,"I") "RTN","SDEC31",97,0) .D REQSET^SDEC07A(CONSULTIEN,PROVIDER,,1,,NOTE,DATETIME,RESOURCE) "RTN","SDEC31",98,0) ; "RTN","SDEC31",99,0) D AFTER^SDAMEVT(.SDATA,DFN,SDECSTART,SDECSC1,SDDA,SDCIHDL) "RTN","SDEC31",100,0) ; "RTN","SDEC31",101,0) ; Execute event driver. 3=no show (see #409.66), 2=non-interactive - wtc SD*5.3*717 10/25/18 "RTN","SDEC31",102,0) ; "RTN","SDEC31",103,0) D EVT^SDAMEVT(.SDATA,3,2,SDCIHDL) ; "RTN","SDEC31",104,0) ; "RTN","SDEC31",105,0) S SDECI=SDECI+1 "RTN","SDEC31",106,0) S ^TMP("SDEC",$J,SDECI)="1^"_$C(30) "RTN","SDEC31",107,0) S SDECI=SDECI+1 "RTN","SDEC31",108,0) S ^TMP("SDEC",$J,SDECI)=$C(31) "RTN","SDEC31",109,0) Q "RTN","SDEC31",110,0) ; "RTN","SDEC31",111,0) APNOSHO(SDECZ,SDCL,DFN,SDT,SDECNS,USERIEN,SDECCDT,SDAPID) ; "RTN","SDEC31",112,0) ; update file 2 info "RTN","SDEC31",113,0) ;Set noshow for patient DFN in clinic SDCL "RTN","SDEC31",114,0) ;at time SDT "RTN","SDEC31",115,0) N SDECC,%H,SDECIEN,SDRTYP "RTN","SDEC31",116,0) N SDECIENS,SDFDA,SDECMSG,IEN "RTN","SDEC31",117,0) S %H=$H D YMD^%DTC "RTN","SDEC31",118,0) ; "RTN","SDEC31",119,0) S SDECIENS=SDT_","_DFN_"," "RTN","SDEC31",120,0) I +SDECNS D "RTN","SDEC31",121,0) . S SDFDA(2.98,SDECIENS,3)="N" "RTN","SDEC31",122,0) . S SDFDA(2.98,SDECIENS,14)=USERIEN "RTN","SDEC31",123,0) . S SDFDA(2.98,SDECIENS,15)=SDECCDT "RTN","SDEC31",124,0) E D "RTN","SDEC31",125,0) . S SDFDA(2.98,SDECIENS,3)="" "RTN","SDEC31",126,0) . S SDFDA(2.98,SDECIENS,14)="" "RTN","SDEC31",127,0) . S SDFDA(2.98,SDECIENS,15)="" "RTN","SDEC31",128,0) K SDECIEN "RTN","SDEC31",129,0) D UPDATE^DIE("","SDFDA","SDECIEN","SDECMSG") "RTN","SDEC31",130,0) S SDECZ=$G(SDECMSG("DIERR",1,"TEXT",1)) "RTN","SDEC31",131,0) S SDRTYP=$$GET1^DIQ(409.84,SDAPID_",",.22,"I") "RTN","SDEC31",132,0) I $P(SDRTYP,";",2)="GMR(123," D "RTN","SDEC31",133,0) .S IEN=$$SCIEN^SDECU2(DFN,SDCL,SDT) "RTN","SDEC31",134,0) .D NOSHOW^SDCNSLT(SDCL,SDT,DFN,$P(SDRTYP,";",1),IEN) ;,AUTO,NSDIE,NSDA) "RTN","SDEC31",135,0) ; "RTN","SDEC31",136,0) ;for Recall Request APPT NOSHOW ;VSE-1219;**792 "RTN","SDEC31",137,0) I $P(SDRTYP,";",2)="SD(403.5," D RECREQ^SDECRECREQ(.SDECY,SDECAPTID,SDRTYP) "RTN","SDEC31",138,0) Q "RTN","SDEC31",139,0) ; "RTN","SDEC31",140,0) SDECNOS(SDECAPTID,SDECNS,USERIEN,SDECDATE) ; "RTN","SDEC31",141,0) ; "RTN","SDEC31",142,0) N SDFDA,SDECIENS "RTN","SDEC31",143,0) S SDECIENS=SDECAPTID_"," "RTN","SDEC31",144,0) S SDFDA(409.84,SDECIENS,.1)=SDECNS ;NOSHOW "RTN","SDEC31",145,0) S SDFDA(409.84,SDECIENS,.101)=$S(+SDECNS:SDECDATE,1:"") ;NOSHOW DATE "RTN","SDEC31",146,0) S SDFDA(409.84,SDECIENS,.102)=$S(+SDECNS:USERIEN,1:"") ;NOSHOW USER "RTN","SDEC31",147,0) S SDFDA(409.84,SDECIENS,.17)=$S(+SDECNS:"N",1:"") ; Update STATUS SD*5.3*717 wtc 10/25/18 "RTN","SDEC31",148,0) D FILE^DIE("","SDFDA","SDECMSG") "RTN","SDEC31",149,0) ; "RTN","SDEC31",150,0) Q "RTN","SDEC31",151,0) ; "RTN","SDEC31",152,0) NOSEVT(SDECPAT,SDECSTART,SDECSC) ;EP Called by SDEC NOSHOW APPOINTMENT event "RTN","SDEC31",153,0) ;when appointments NOSHOW via PIMS interface. "RTN","SDEC31",154,0) ;Propagates NOSHOW to SDECAPPT and raises refresh event to running GUI clients "RTN","SDEC31",155,0) ; "RTN","SDEC31",156,0) Q:+$G(SDECNOEV) "RTN","SDEC31",157,0) Q:'+$G(SDECSC) "RTN","SDEC31",158,0) ;Q:$G(SDATA("AFTER","STATUS"))["AUTO RE-BOOK" "RTN","SDEC31",159,0) N SDECSTAT,SDECFOUND,SDECRES "RTN","SDEC31",160,0) S SDECSTAT=1 "RTN","SDEC31",161,0) ;S:$G(SDATA("BEFORE","STATUS"))["NO-SHOW" SDECSTAT=0 "RTN","SDEC31",162,0) S SDECFOUND=0 "RTN","SDEC31",163,0) I $D(^SDEC(409.831,"ALOC",SDECSC)) S SDECRES=$O(^SDEC(409.831,"ALOC",SDECSC,0)) S SDECFOUND=$$NOSEVT1(SDECRES,SDECSTART,SDECPAT,SDECSTAT) "RTN","SDEC31",164,0) I SDECFOUND D NOSEVT3(SDECRES) Q "RTN","SDEC31",165,0) Q "RTN","SDEC31",166,0) ; "RTN","SDEC31",167,0) NOSEVT1(SDECRES,SDECSTART,SDECPAT,SDECSTAT) ; "RTN","SDEC31",168,0) ;Get appointment id in SDECAPT "RTN","SDEC31",169,0) ;If found, call SDECNOS(SDECAPPT) and return 1 "RTN","SDEC31",170,0) ;else return 0 "RTN","SDEC31",171,0) N SDECFOUND,SDECAPPT "RTN","SDEC31",172,0) S SDECFOUND=0 "RTN","SDEC31",173,0) Q:'+$G(SDECRES) SDECFOUND "RTN","SDEC31",174,0) Q:'$D(^SDEC(409.84,"ARSRC",SDECRES,SDECSTART)) SDECFOUND "RTN","SDEC31",175,0) S SDECAPPT=0 F S SDECAPPT=$O(^SDEC(409.84,"ARSRC",SDECRES,SDECSTART,SDECAPPT)) Q:'+SDECAPPT D Q:SDECFOUND "RTN","SDEC31",176,0) . S SDECNOD=$G(^SDEC(409.84,SDECAPPT,0)) Q:SDECNOD="" "RTN","SDEC31",177,0) . I $P(SDECNOD,U,5)=SDECPAT,$P(SDECNOD,U,12)="" S SDECFOUND=1 Q "RTN","SDEC31",178,0) I SDECFOUND,+$G(SDECAPPT) D SDECNOS(SDECAPPT,SDECSTAT) "RTN","SDEC31",179,0) Q SDECFOUND "RTN","SDEC31",180,0) ; "RTN","SDEC31",181,0) NOSEVT3(SDECRES) ; "RTN","SDEC31",182,0) ;Call RaiseEvent to notify GUI clients "RTN","SDEC31",183,0) ; "RTN","SDEC31",184,0) Q "RTN","SDEC31",185,0) N SDECRESN "RTN","SDEC31",186,0) S SDECRESN=$G(^SDEC(409.831,SDECRES,0)) "RTN","SDEC31",187,0) Q:SDECRESN="" "RTN","SDEC31",188,0) S SDECRESN=$P(SDECRESN,"^") "RTN","SDEC31",189,0) ;D EVENT^BMXMEVN("SDEC SCHEDULE",SDECRESN) "RTN","SDEC31",190,0) Q "RTN","SDEC31",191,0) ; "RTN","SDEC31",192,0) ; "RTN","SDEC31",193,0) ERR(SDECERID,ERRTXT) ;Error processing "RTN","SDEC31",194,0) S:'+$G(SDECI) SDECI=999999 "RTN","SDEC31",195,0) S SDECI=SDECI+1 "RTN","SDEC31",196,0) S ^TMP("SDEC",$J,SDECI)=SDECERID_"^"_ERRTXT_$C(30) "RTN","SDEC31",197,0) S SDECI=SDECI+1 "RTN","SDEC31",198,0) S ^TMP("SDEC",$J,SDECI)=$C(31) "RTN","SDEC31",199,0) Q "RTN","SDEC31",200,0) ; "RTN","SDEC31",201,0) ETRAP ;EP Error trap entry "RTN","SDEC31",202,0) D ^%ZTER "RTN","SDEC31",203,0) I '$D(SDECI) N SDECI S SDECI=999999 "RTN","SDEC31",204,0) S SDECI=SDECI+1 "RTN","SDEC31",205,0) D ERR(0,"SDEC31 Error") "RTN","SDEC31",206,0) Q "RTN","SDEC31",207,0) ; "RTN","SDEC31",208,0) IMHERE(SDECRES) ;I'm Here "RTN","SDEC31",209,0) ;IMHERE(SDECRES) external parameter tag is in SDEC "RTN","SDEC31",210,0) ;Entry point for SDEC IM HERE remote procedure "RTN","SDEC31",211,0) ; Returns a simple value to client. Used to establish continued existence "RTN","SDEC31",212,0) ; of the client to the server; resets the server READ timeout. "RTN","SDEC31",213,0) S SDECRES=1 "RTN","SDEC31",214,0) Q "RTN","SDEC31",215,0) ; "RTN","SDEC805P") 0^^B2329153^n/a "RTN","SDEC805P",1,0) SDEC805P ;ALB/MGD - SD*5.3*805 Post Init Routine ; Dec 13, 2022@10:21 "RTN","SDEC805P",2,0) ;;5.3;SCHEDULING;**805**;AUG 13, 1993;Build 9 "RTN","SDEC805P",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDEC805P",4,0) ; "RTN","SDEC805P",5,0) D FIND "RTN","SDEC805P",6,0) Q "RTN","SDEC805P",7,0) ; "RTN","SDEC805P",8,0) FIND ;FIND THE IEN FOR "VS GUI NATIONAL" "RTN","SDEC805P",9,0) N SDECDA,SDECDA1 "RTN","SDEC805P",10,0) D MES^XPDUTL("Updating SDEC SETTINGS file (#409.98)") "RTN","SDEC805P",11,0) S SDECDA=0,SDECDA=$O(^SDEC(409.98,"B","VS GUI NATIONAL",SDECDA)) G:$G(SDECDA)="" NOFIND "RTN","SDEC805P",12,0) D VERSION ;update GUI version number and date "RTN","SDEC805P",13,0) Q "RTN","SDEC805P",14,0) VERSION ;SET THE NEW VERSION UPDATE IN SDEC SETTING FILE #409.98 TO 1.7.19 "RTN","SDEC805P",15,0) S DA=SDECDA,DIE=409.98,DR="2///1.7.19;3///"_DT D ^DIE ;update VS GUI NATIONAL "RTN","SDEC805P",16,0) K DIE,DR,DA "RTN","SDEC805P",17,0) S SDECDA1=0,SDECDA1=$O(^SDEC(409.98,"B","VS GUI LOCAL",SDECDA1)) Q:$G(SDECDA1)="" ;get DA for the VS GUI LOCAL "RTN","SDEC805P",18,0) S DA=SDECDA1,DIE=409.98,DR="2///1.7.19;3///"_DT D ^DIE ;update VS GUI LOCAL "RTN","SDEC805P",19,0) K DIE,DR,DA "RTN","SDEC805P",20,0) Q "RTN","SDEC805P",21,0) ; "RTN","SDEC805P",22,0) NOFIND ;"VS GUI NATIONAL" NOT FOUND "RTN","SDEC805P",23,0) D MES^XPDUTL("VS GUI NATIONAL not found in the SDEC SETTINGS file (#409.98)") "RTN","SDEC805P",24,0) Q "RTN","SDECAR") 0^41^B93182894^B93128026 "RTN","SDECAR",1,0) SDECAR ;ALB/SAT,MGD - VISTA SCHEDULING RPCS ;Apr 10, 2020@15:22 "RTN","SDECAR",2,0) ;;5.3;Scheduling;**627,642,671,745,792,797,805**;Aug 13, 1993;Build 9 "RTN","SDECAR",3,0) ; "RTN","SDECAR",4,0) Q "RTN","SDECAR",5,0) ; "RTN","SDECAR",6,0) ARCLOSE(RET,INP) ;Appointment Request Close "RTN","SDECAR",7,0) ;SD*5.3*745 replace external 'INP...' due to XINDEX issue. Parameters are then rolled into the INP "RTN","SDECAR",8,0) ; array. Allow EA as new disposition code. "RTN","SDECAR",9,0) ;ARCLOSE(RET,S1,S2,S3,S4) external parameter tag in SDEC "RTN","SDECAR",10,0) ; INP - Input parameters array "RTN","SDECAR",11,0) ; INP(1) - Request ID - Pointer to SDEC APPT REQUEST file "RTN","SDECAR",12,0) ; INP(2) - Disposition "RTN","SDECAR",13,0) ; INP(3) - User Id - Pointer to NEW PERSON file "RTN","SDECAR",14,0) ; INP(4) - Date Dispositioned in external form "RTN","SDECAR",15,0) N MI,ARDISP,ARDISPBY,ARDISPDT,ARFDA,ARIEN,ARMSG,ARRET "RTN","SDECAR",16,0) S RET="I00020ERRORID^T00256ERRORTEXT"_$C(30) "RTN","SDECAR",17,0) ;validate IEN "RTN","SDECAR",18,0) S ARIEN=$G(INP(1)) I ARIEN="" S RET=RET_"-1^Missing IEN"_$C(30,31) Q "RTN","SDECAR",19,0) ;validate DISPOSITION "RTN","SDECAR",20,0) S ARDISP=$G(INP(2)) "RTN","SDECAR",21,0) I ARDISP="" S RET=RET_"-1^Missing value for DISPOSITION"_$C(30,31) Q "RTN","SDECAR",22,0) ;MC:MRTC PARENT CLOSED "RTN","SDECAR",23,0) ; VSE-1220: Re-mapped the Dispositions to their corresponding pointer value "RTN","SDECAR",24,0) S:ARDISP="DEATH"!(ARDISP="D") ARDISP=1 "RTN","SDECAR",25,0) S:ARDISP="REMOVED/NON-VA CARE"!(ARDISP="NC") ARDISP=2 "RTN","SDECAR",26,0) S:ARDISP="REMOVED/SCHEDULED-ASSIGNED"!(ARDISP="SA") ARDISP=3 "RTN","SDECAR",27,0) S:ARDISP="REMOVED/VA CONTRACT CARE"!(ARDISP="CC") ARDISP=4 "RTN","SDECAR",28,0) S:ARDISP="REMOVED/NO LONGER NECESSARY"!(ARDISP="NN") ARDISP=5 "RTN","SDECAR",29,0) S:ARDISP="ENTERED IN ERROR"!(ARDISP="ER") ARDISP=6 "RTN","SDECAR",30,0) S:ARDISP="TRANSFERRED TO EWL"!(ARDISP="TR") ARDISP=7 "RTN","SDECAR",31,0) S:ARDISP="CHANGED CLINIC"!(ARDISP="CL") ARDISP=8 "RTN","SDECAR",32,0) S:ARDISP="MRTC PARENT CLOSED"!(ARDISP="MC") ARDISP=9 "RTN","SDECAR",33,0) S:ARDISP="REMOVED/EXTERNAL APP"!(ARDISP="EA") ARDISP=10 ;* 745 "RTN","SDECAR",34,0) S:ARDISP="FAILURE TO RESPOND" ARDISP=11 "RTN","SDECAR",35,0) I '+ARDISP!((ARDISP<1)!(ARDISP>11)) D Q "RTN","SDECAR",36,0) .S RET=RET_"-1^Invalid value for DISPOSITION"_$C(30,31) "RTN","SDECAR",37,0) ;validate DISPOSITIONED BY "RTN","SDECAR",38,0) S ARDISPBY=$G(INP(3),DUZ) "RTN","SDECAR",39,0) I '+ARDISPBY S ARDISPBY=$O(^VA(200,"B",ARDISPBY,0)) "RTN","SDECAR",40,0) I '$D(^VA(200,+ARDISPBY,0)) S RET=RET_"-1^Invalid 'DISPOSITIONED BY' user"_$C(30,31) Q "RTN","SDECAR",41,0) ;validate DATE DISPOSITIONED "RTN","SDECAR",42,0) S ARDISPDT=$G(INP(4),DT) I ARDISPDT'="" S %DT="" S X=ARDISPDT D ^%DT S ARDISPDT=Y "RTN","SDECAR",43,0) I Y=-1 S RET=RET_"-1^Invalid 'DATE DISPOSITIONED'"_$C(30,31) Q "RTN","SDECAR",44,0) S ARFDA=$NA(ARFDA($$FNUM,ARIEN_",")) "RTN","SDECAR",45,0) S @ARFDA@(19)=ARDISPDT "RTN","SDECAR",46,0) S @ARFDA@(20)=ARDISPBY "RTN","SDECAR",47,0) S @ARFDA@(21)=ARDISP "RTN","SDECAR",48,0) S @ARFDA@(23)="C" "RTN","SDECAR",49,0) I $G(INP(5))'="" S @ARFDA@(22)=$$NETTOFM^SDECDATE($G(INP(5)),"N","N") "RTN","SDECAR",50,0) D UPDATE^DIE("","ARFDA","ARRET","ARMSG") "RTN","SDECAR",51,0) I $D(ARMSG("DIERR")) D "RTN","SDECAR",52,0) . F MI=1:1:$G(ARMSG("DIERR")) S RET=RET_"-1^"_$G(ARMSG("DIERR",MI,"TEXT",1))_$C(30) "RTN","SDECAR",53,0) S RET=RET_$C(31) "RTN","SDECAR",54,0) I $D(ARMSG("DIERR")) Q "RTN","SDECAR",55,0) ;SEND HL7 TO CPRS IF RTC REQUEST "RTN","SDECAR",56,0) I $P(^SDEC(409.85,ARIEN,0),U,5)="RTC" D "RTN","SDECAR",57,0) .I ARDISP=3 D ARDISP^SDECHL7(ARIEN,"") "RTN","SDECAR",58,0) .I ARDISP=9 D ARDISP^SDECHL7(ARIEN,"") "RTN","SDECAR",59,0) .I ARDISP'=3&(ARDISP'=9) D ARDISP^SDECHL7(ARIEN,1) "RTN","SDECAR",60,0) .I $D(^TMP($J,"REJECT",ARIEN)) D "RTN","SDECAR",61,0) ..S RET="-2^"_^TMP(SDHL7IN("ORDER IEN")) "RTN","SDECAR",62,0) Q "RTN","SDECAR",63,0) ; "RTN","SDECAR",64,0) AROPEN(RET,ARAPP,ARIEN,ARDDT) ;SET Appointment Request Open/re-open "RTN","SDECAR",65,0) ;AROPEN(RET,ARAPP,ARIEN,ARDDT) external parameter tag in SDEC "RTN","SDECAR",66,0) ;INPUT: "RTN","SDECAR",67,0) ; ARAPP - (required if no ARIEN) Appointment ID pointer to SDEC APPOINTMENT file 409.84 "RTN","SDECAR",68,0) ; ARIEN - (required if no ARAPP) Request ID - Pointer to SDEC APPOINTMENT REQUEST file "RTN","SDECAR",69,0) ; ARDDT - (optional) Desired Date of appointment in external format "RTN","SDECAR",70,0) N SDART,SDECI,SDQ,ARFDA,ARMSG,X,Y,%DT "RTN","SDECAR",71,0) S RET="^TMP(""SDECAR"","_$J_",""AROPEN"")" "RTN","SDECAR",72,0) K @RET "RTN","SDECAR",73,0) S (SDECI,SDQ)=0 "RTN","SDECAR",74,0) S @RET@(SDECI)="T00030ERRORID^T00030ERRTEXT"_$C(30) "RTN","SDECAR",75,0) ;validate ARAPP (required if ARIEN not passed it) "RTN","SDECAR",76,0) S ARAPP=$G(ARAPP) "RTN","SDECAR",77,0) I ARAPP'="" I $D(^SDEC(409.84,ARAPP,0)) D "RTN","SDECAR",78,0) .S SDART=$$GET1^DIQ(409.84,ARAPP_",",.22,"I") "RTN","SDECAR",79,0) .I $P(SDART,";",2)'="SDEC(409.85," S SDECI=SDECI+1 S @RET@(SDECI)="-1^Not a Requested appointment."_$C(30),SDQ=1 Q "RTN","SDECAR",80,0) .I $G(ARIEN)'="",ARIEN'=$P(SDART,";",1) S SDECI=SDECI+1 S @RET@(SDECI)="-1^Appointment Request does not match item passed in."_$C(30),SDQ=1 Q "RTN","SDECAR",81,0) .S ARIEN=$P(SDART,";",1) "RTN","SDECAR",82,0) G:SDQ ARX "RTN","SDECAR",83,0) ;validate ARIEN "RTN","SDECAR",84,0) S ARIEN=$G(ARIEN) "RTN","SDECAR",85,0) I ARIEN="" S SDECI=SDECI+1 S @RET@(SDECI)="-1^Appointment Request ID or Appointment ID is required."_$C(30,31) Q "RTN","SDECAR",86,0) I '$D(^SDEC(409.85,ARIEN,0)) S SDECI=SDECI+1 S @RET@(SDECI)="-1^Invalid Appt Request ID."_$C(30,31) Q "RTN","SDECAR",87,0) ;validate ARDDT "RTN","SDECAR",88,0) S ARDDT=$P($G(ARDDT),"@",1) "RTN","SDECAR",89,0) I $G(ARDDT)'="" S %DT="" S X=ARDDT D ^%DT I Y=-1 S SDECI=SDECI+1 S @RET@(SDECI)="-1^Invalid desired date of appointment."_$C(30,31) Q "RTN","SDECAR",90,0) S ARFDA=$NA(ARFDA(409.85,ARIEN_",")) "RTN","SDECAR",91,0) S @ARFDA@(19)="" "RTN","SDECAR",92,0) S @ARFDA@(20)="" "RTN","SDECAR",93,0) S @ARFDA@(21)="" "RTN","SDECAR",94,0) S:ARDDT'="" @ARFDA@(22)=ARDDT "RTN","SDECAR",95,0) ; Only re-open Appt Request for approved Cancellation Reasons VSE-1112 "RTN","SDECAR",96,0) N SDCANRSN "RTN","SDECAR",97,0) S SDCANRSN=$$GET1^DIQ(409.84,ARAPP_",",.122,"I") "RTN","SDECAR",98,0) I "^3^9^10^12^"'[(U_SDCANRSN_U) S @ARFDA@(23)="OPEN" "RTN","SDECAR",99,0) D UPDATE^DIE("E","ARFDA","ARRET","ARMSG") "RTN","SDECAR",100,0) I $D(ARMSG("DIERR")) D "RTN","SDECAR",101,0) . F MI=1:1:$G(ARMSG("DIERR")) S SDECI=SDECI+1 S @RET@(SDECI)="-1^"_$G(ARMSG("DIERR",MI,"TEXT",1))_$C(30) "RTN","SDECAR",102,0) I '$D(ARMSG("DIERR")) S SDECI=SDECI+1 S @RET@(SDECI)="0^"_ARIEN_$C(30) "RTN","SDECAR",103,0) ARX S @RET@(SDECI)=@RET@(SDECI)_$C(31) "RTN","SDECAR",104,0) Q "RTN","SDECAR",105,0) ; "RTN","SDECAR",106,0) FNUM(RET) ;file number "RTN","SDECAR",107,0) S RET=409.85 "RTN","SDECAR",108,0) Q RET "RTN","SDECAR",109,0) ; "RTN","SDECAR",110,0) ARPCSET(SDECY,INP,ARIEN) ;SET update patient contacts in SDEC APPT REQUEST file "RTN","SDECAR",111,0) ;ARSETPC(SDECY,INP,ARIEN) external parameter tag in SDEC "RTN","SDECAR",112,0) ; INP = Patient Contacts separated by :: "RTN","SDECAR",113,0) ; Each :: piece has the following ~~ pieces: (same as theyare passed into SDEC ARLSET) "RTN","SDECAR",114,0) ; 1) = (required) DATE ENTERED external date/time "RTN","SDECAR",115,0) ; 2) = (optional) PC ENTERED BY USER ID or NAME - Pointer to NEW PERSON file or NAME "RTN","SDECAR",116,0) ; 4) = (optional) ACTION - valid values are: "RTN","SDECAR",117,0) ; CALLED MESSAGE LEFT LETTER "RTN","SDECAR",118,0) ; 5) = (optional) PATIENT PHONE Free-Text 4-20 characters "RTN","SDECAR",119,0) ; 6) = NOT USED (optional) Comment 1-160 characters "RTN","SDECAR",120,0) ; ARIEN = (required) pointer to SDEC APPT REQUEST file 409.85 "RTN","SDECAR",121,0) N SDECI,SDTMP,ARMSG1 "RTN","SDECAR",122,0) S SDECY="^TMP(""SDECAR"","_$J_",""ARSETPC"")" "RTN","SDECAR",123,0) K @SDECY "RTN","SDECAR",124,0) S SDECI=0 "RTN","SDECAR",125,0) S @SDECY@(SDECI)="T00030RETURNCODE^T00030TEXT"_$C(30) "RTN","SDECAR",126,0) S ARIEN=$G(ARIEN) "RTN","SDECAR",127,0) I (ARIEN="")!('$D(^SDEC(409.85,ARIEN,0))) D ERR1^SDECERR(-1,"Invalid wait list ID "_ARIEN_".",SDECI,SDECY) Q "RTN","SDECAR",128,0) D AR23^SDECAR2(INP,ARIEN) "RTN","SDECAR",129,0) I $D(ARMSG1) D ERR1^SDECERR(-1,"Error storing patient contacts.",SDECI,SDECY) Q "RTN","SDECAR",130,0) S SDECI=SDECI+1 S @SDECY@(SDECI)="0^SUCCESS"_$C(30,31) "RTN","SDECAR",131,0) Q "RTN","SDECAR",132,0) ; "RTN","SDECAR",133,0) ARDGET(SDECY) ;get values for disposition field of SDEC APPT REQUEST file "RTN","SDECAR",134,0) ;ARDGET(SDECY) external parameter tag is in SDEC "RTN","SDECAR",135,0) ;INPUT: none "RTN","SDECAR",136,0) ;RETURN: "RTN","SDECAR",137,0) ; Successful Return: "RTN","SDECAR",138,0) ; Global array containing a list of the valid DISPOSITION values in which "RTN","SDECAR",139,0) ; each array entry contains the disposition text. "RTN","SDECAR",140,0) ; Caught Exception Return: "RTN","SDECAR",141,0) ; A single entry in the Global Array in the format "-1^" "RTN","SDECAR",142,0) ; "T00020RETURNCODE^T00100TEXT" "RTN","SDECAR",143,0) ; Unexpected Exception Return: "RTN","SDECAR",144,0) ; Handled by the RPC Broker. "RTN","SDECAR",145,0) ; M errors are trapped by the use of M and Kernel error handling. "RTN","SDECAR",146,0) ; The RPC execution stops and the RPC Broker sends the error generated "RTN","SDECAR",147,0) ; text back to the client. "RTN","SDECAR",148,0) N SDI,SDX,SDXI,SDECI,DIERR,SDMSG "RTN","SDECAR",149,0) S SDECI=0 "RTN","SDECAR",150,0) K ^TMP("SDEC",$J) "RTN","SDECAR",151,0) S SDECY="^TMP(""SDEC"","_$J_")" "RTN","SDECAR",152,0) ; data header "RTN","SDECAR",153,0) S @SDECY@(SDECI)="T00030TEXT"_$C(30) "RTN","SDECAR",154,0) S SDX=$$GET1^DID(409.85,21,"","POINTER","","MSG") "RTN","SDECAR",155,0) F SDI=1:1:$L(SDX,";") D "RTN","SDECAR",156,0) .S SDXI=$P(SDX,";",SDI) "RTN","SDECAR",157,0) .Q:SDXI="" "RTN","SDECAR",158,0) .S SDECI=SDECI+1 S @SDECY@(SDECI)=$P(SDXI,":",2)_$C(30) "RTN","SDECAR",159,0) S @SDECY@(SDECI)=@SDECY@(SDECI)_$C(31) "RTN","SDECAR",160,0) Q "RTN","SDECAR",161,0) ; "RTN","SDECAR",162,0) ARMRTGET(SDECY,ARIEN) ;GET number of entries and values in MRTC CALC PREF DATES "RTN","SDECAR",163,0) ;ARMRTGET(SDECY,ARIEN) "RTN","SDECAR",164,0) ;INPUT: "RTN","SDECAR",165,0) ; ARIEN - (required) pointer to SDEC APPT REQUEST file "RTN","SDECAR",166,0) ;RETURN: "RTN","SDECAR",167,0) ; 1st entry contains a count of the number of dates in MRTC CALC PREF DATES "RTN","SDECAR",168,0) ; 2-n entry contains each date "RTN","SDECAR",169,0) N ARDATA,SDC,SDECI,SDI "RTN","SDECAR",170,0) S SDC=0 "RTN","SDECAR",171,0) S SDECI=1 ;save position 1 for count in SDC "RTN","SDECAR",172,0) S SDECY="^TMP(""SDECAR"","_$J_",""ARMRTGET"")" "RTN","SDECAR",173,0) K @SDECY "RTN","SDECAR",174,0) ; data header "RTN","SDECAR",175,0) S @SDECY@(0)="T00030ERRORCODE^T00030MESSAGE"_$C(30) "RTN","SDECAR",176,0) S ARIEN=$G(ARIEN) "RTN","SDECAR",177,0) I ARIEN="" S @SDECY@(1)="-1^SDEC APPT REQUEST id is required." Q "RTN","SDECAR",178,0) I '$D(^SDEC(409.85,+ARIEN,0)) S @SDECY@(1)="-1^Invalid SDEC APPT REQUEST id." Q "RTN","SDECAR",179,0) D GETS^DIQ(409.85,+ARIEN,"43.5*","E","ARDATA") "RTN","SDECAR",180,0) S SDI=0 F S SDI=$O(ARDATA(409.851,SDI)) Q:SDI="" D "RTN","SDECAR",181,0) .S SDC=SDC+1 "RTN","SDECAR",182,0) .S SDECI=SDECI+1 S @SDECY@(SDECI)=ARDATA(409.851,SDI,.01,"E")_$C(30) "RTN","SDECAR",183,0) S @SDECY@(1)=SDC_$C(30) "RTN","SDECAR",184,0) S @SDECY@(SDECI)=@SDECY@(SDECI)_$C(31) "RTN","SDECAR",185,0) Q "RTN","SDECAR",186,0) ; "RTN","SDECAR",187,0) ARMULT(SDECY,ARIEN,MULT) ;SET MULT APPTS MADE multiple in SDEC APPT REQUEST file. All entries are removed and replaced by the values in MULT "RTN","SDECAR",188,0) ;INPUT: "RTN","SDECAR",189,0) ; ARIEN - (required) pointer to SDEC APPT REQUEST file (usualy a parent request) "RTN","SDECAR",190,0) ; MULT - (optional) list of child pointers to SDEC APPOINTMENT and/or "RTN","SDECAR",191,0) ; SDEC APPT REQUEST files separated by pipe "RTN","SDECAR",192,0) ; each pipe piece contains the following ~ pieces: "RTN","SDECAR",193,0) ; 1. (optional) Appointment Id pointer to SDEC APPOINTMENT "RTN","SDECAR",194,0) ; file 409.84 "RTN","SDECAR",195,0) ; 2. (optional) Request Id pointer to SDEC APPT REQUEST "RTN","SDECAR",196,0) ; file 409.85 "RTN","SDECAR",197,0) ;RETURN: "RTN","SDECAR",198,0) ; ERRORCODE^MESSAGE "RTN","SDECAR",199,0) ; "RTN","SDECAR",200,0) N MULT1,SDI "RTN","SDECAR",201,0) S SDECY="^TMP(""SDECAR"","_$J_",""ARMRTSET"")" "RTN","SDECAR",202,0) K @SDECY "RTN","SDECAR",203,0) ; data header "RTN","SDECAR",204,0) S @SDECY@(0)="T00030ERRORCODE^T00030MESSAGE"_$C(30) "RTN","SDECAR",205,0) S ARIEN=$G(ARIEN) "RTN","SDECAR",206,0) I ARIEN="" S @SDECY@(1)="-1^SDEC APPT REQUEST id is required." Q "RTN","SDECAR",207,0) I '$D(^SDEC(409.85,+ARIEN,0)) S @SDECY@(1)="-1^Invalid SDEC APPT REQUEST id." Q "RTN","SDECAR",208,0) S MULT=$G(MULT) "RTN","SDECAR",209,0) D MT1(ARIEN) "RTN","SDECAR",210,0) I MULT="" S @SDECY@(0)=@SDECY@(0)_$C(31) Q ;nothing to do "RTN","SDECAR",211,0) F SDI=1:1:$L(MULT,"|") D "RTN","SDECAR",212,0) .S MULT1=$TR($P(MULT,"|",SDI),"^","~") "RTN","SDECAR",213,0) .D AR433^SDECAR2(ARIEN,MULT1) "RTN","SDECAR",214,0) S @SDECY@(1)="0^SUCCESS"_$C(30,31) "RTN","SDECAR",215,0) Q "RTN","SDECAR",216,0) ARMRTSET(SDECY,ARIEN,MRTC) ;SET MRTC CALC PREF DATES dates - clears the multiple and sets the new ones that are passed into MRTC "RTN","SDECAR",217,0) ;ARMRTSET(SDECY,ARIEN,MRTC) "RTN","SDECAR",218,0) ;INPUT: "RTN","SDECAR",219,0) ; ARIEN - (required) pointer to SDEC APPT REQUEST file "RTN","SDECAR",220,0) ; MRTC - (optional) MRTC calculated preferred dates separated by pipe|: "RTN","SDECAR",221,0) ; Each date can be in external format with no time. "RTN","SDECAR",222,0) ;RETURN: "RTN","SDECAR",223,0) ; ERRORCODE^MESSAGE "RTN","SDECAR",224,0) N SDI,MRTC1 "RTN","SDECAR",225,0) S SDECY="^TMP(""SDECAR"","_$J_",""ARMRTSET"")" "RTN","SDECAR",226,0) K @SDECY "RTN","SDECAR",227,0) ; data header "RTN","SDECAR",228,0) S @SDECY@(0)="T00030ERRORCODE^T00030MESSAGE"_$C(30) "RTN","SDECAR",229,0) S ARIEN=$G(ARIEN) "RTN","SDECAR",230,0) I ARIEN="" S @SDECY@(1)="-1^SDEC APPT REQUEST id is required." Q "RTN","SDECAR",231,0) I '$D(^SDEC(409.85,+ARIEN,0)) S @SDECY@(1)="-1^Invalid SDEC APPT REQUEST id." Q "RTN","SDECAR",232,0) S MRTC=$G(MRTC) "RTN","SDECAR",233,0) I MRTC="" S @SDECY@(1)="0"_$C(30,31) Q ;not an error, just nothing to do "RTN","SDECAR",234,0) D MT(ARIEN) "RTN","SDECAR",235,0) D AR435^SDECAR2(MRTC,ARIEN) "RTN","SDECAR",236,0) S @SDECY@(1)="0"_$C(30,31) "RTN","SDECAR",237,0) Q "RTN","SDECAR",238,0) MT(ARIEN) ; clear out existing MRTC CALC PREF DATES "RTN","SDECAR",239,0) N DA,DIK,SDI "RTN","SDECAR",240,0) S SDI=0 F S SDI=$O(^SDEC(409.85,ARIEN,5,SDI)) Q:SDI'>0 D "RTN","SDECAR",241,0) .S DIK="^SDEC(409.85,"_ARIEN_",5," "RTN","SDECAR",242,0) .S DA=SDI "RTN","SDECAR",243,0) .S DA(1)=ARIEN "RTN","SDECAR",244,0) .D ^DIK "RTN","SDECAR",245,0) Q "RTN","SDECAR",246,0) MT1(ARIEN) ; clear out existing MULT APPTS MADE "RTN","SDECAR",247,0) N DA,DIK,SDI "RTN","SDECAR",248,0) S SDI=0 F S SDI=$O(^SDEC(409.85,ARIEN,2,SDI)) Q:SDI'>0 D "RTN","SDECAR",249,0) .S DIK="^SDEC(409.85,"_ARIEN_",2," "RTN","SDECAR",250,0) .S DA=SDI "RTN","SDECAR",251,0) .S DA(1)=ARIEN "RTN","SDECAR",252,0) .D ^DIK "RTN","SDECAR",253,0) Q "RTN","SDECAR",254,0) ; "RTN","SDECAR",255,0) ARMRTC(RET,ARIEN) ;GET the number of MRTC appointments made for this request "RTN","SDECAR",256,0) ;INPUT: "RTN","SDECAR",257,0) ; ARIEN - (required) pointer to SDEC APPT REQUEST file 409.85 "RTN","SDECAR",258,0) ;RETURN "RTN","SDECAR",259,0) ; Global array with 1 entry containing the count of appointments made under the COUNT header "RTN","SDECAR",260,0) N SDC,SDECI,SDI "RTN","SDECAR",261,0) S RET="^TMP(""SDECAR1"","_$J_",""ARMRTC"")" "RTN","SDECAR",262,0) K @RET "RTN","SDECAR",263,0) S (SDC,SDECI)=0 "RTN","SDECAR",264,0) S ARIEN=$G(ARIEN) "RTN","SDECAR",265,0) I '$D(^SDEC(409.85,ARIEN,0)) S @RET@(1)="-1^Invalid ID"_$C(30,31) Q "RTN","SDECAR",266,0) S @RET@(SDECI)="T00030COUNT"_$C(30) "RTN","SDECAR",267,0) S @RET@(1)=$$MRTC(ARIEN)_$C(30,31) "RTN","SDECAR",268,0) Q "RTN","SDECAR",269,0) MRTC(ARIEN) ; "RTN","SDECAR",270,0) N SDC,SDI "RTN","SDECAR",271,0) S SDC=0 "RTN","SDECAR",272,0) S SDI=0 F S SDI=$O(^SDEC(409.85,ARIEN,2,SDI)) Q:SDI'>0 D "RTN","SDECAR",273,0) .S SDC=SDC+1 "RTN","SDECAR",274,0) Q SDC "RTN","SDECAR",275,0) ; "RTN","SDECAR",276,0) ARAPPT(SDECY,SDAPPT) ;GET appointment request for given SDEC APPOINTMENT id "RTN","SDECAR",277,0) ;INPUT: "RTN","SDECAR",278,0) ; SDAPPT - (required) pointer to SDEC APPOINTMENT file 409.84 "RTN","SDECAR",279,0) ;RETURN "RTN","SDECAR",280,0) ; Global array with 1 entry containing the REQUEST TYPE and IEN of the associated appointment separated by pipe |: "RTN","SDECAR",281,0) ; 1. Request Type - A APPT "RTN","SDECAR",282,0) ; C Consult "RTN","SDECAR",283,0) ; E EWL "RTN","SDECAR",284,0) ; R Recall "RTN","SDECAR",285,0) ; 2. IEN - pointer to either the SDEC APPT REQUEST, REQUEST/CONSULTATION, SD WAIT LIST, or RECALL REMINDERS file "RTN","SDECAR",286,0) ; "RTN","SDECAR",287,0) N SDECI,SDTYP,SDX,SDY "RTN","SDECAR",288,0) S SDECY="^TMP(""SDECAR"","_$J_",""ARAPPT"")" "RTN","SDECAR",289,0) K @SDECY "RTN","SDECAR",290,0) S SDECI=0 "RTN","SDECAR",291,0) S @SDECY@(SDECI)="T00030SDAPTYP"_$C(30) "RTN","SDECAR",292,0) S SDAPPT=$G(SDAPPT) "RTN","SDECAR",293,0) I SDAPPT="" S @SDECY@(1)="-1^SDEC APPOINTMENT id is required."_$C(30,31) Q "RTN","SDECAR",294,0) I '$D(^SDEC(409.84,+SDAPPT,0)) S @SDECY@(1)="-1^Invalid SDEC APPOINTMENT ID."_$C(30,31) Q "RTN","SDECAR",295,0) S SDX=$$GET1^DIQ(409.84,SDAPPT_",",.22,"I") "RTN","SDECAR",296,0) S SDY=$P(SDX,";",2) "RTN","SDECAR",297,0) S SDTYP=$S(SDY="SDWL(409.3,":"E|",SDY="GMR(123,":"C|",SDY="SD(403.5,":"R|",SDY="SDEC(409.85,":"A|",1:"")_$P(SDX,";",1) ;appt request type "RTN","SDECAR",298,0) S SDECI=SDECI+1 S @SDECY@(SDECI)=SDTYP_$C(30,31) "RTN","SDECAR",299,0) Q "RTN","SDECAR",300,0) ; "RTN","SDECAR",301,0) AUDITGET(SDECY,ARIEN) ;GET entries from VS AUDIT field of SDEC APPT REQUEST file 409.85 "RTN","SDECAR",302,0) N ARDATA,SDECI,SDI,SDTMP,SDX "RTN","SDECAR",303,0) S SDECY="^TMP(""SDECAR"","_$J_",""AUDITGET"")" "RTN","SDECAR",304,0) K @SDECY "RTN","SDECAR",305,0) S SDECI=0 "RTN","SDECAR",306,0) S SDTMP="T00030IEN^T00030ID^T00030DATE^T00030USERIEN^T00030USERNAME" "RTN","SDECAR",307,0) S SDTMP=SDTMP_"^T00030CLINIEN^T00030CLINNAME^T00030STOPIEN^T00030STOPNAME" "RTN","SDECAR",308,0) S @SDECY@(SDECI)=SDTMP_$C(30) "RTN","SDECAR",309,0) ;validate ARIEN "RTN","SDECAR",310,0) S ARIEN=$G(ARIEN) "RTN","SDECAR",311,0) I '+$D(^SDEC(409.85,+ARIEN,0)) S @SDECY@(1)="-1^Invalid SDEC APPT REQUEST id."_$C(30,31) Q "RTN","SDECAR",312,0) S SDI=0 F S SDI=$O(^SDEC(409.85,+ARIEN,6,SDI)) Q:SDI'>0 D "RTN","SDECAR",313,0) .K ARDATA "RTN","SDECAR",314,0) .D GETS^DIQ(409.8545,SDI_","_ARIEN_",","**","IE","ARDATA") "RTN","SDECAR",315,0) .S SDX="ARDATA(409.8545,"""_SDI_","_ARIEN_","")" "RTN","SDECAR",316,0) .S SDTMP=ARIEN_U_SDI_U_@SDX@(.01,"E")_U_@SDX@(1,"I")_U_@SDX@(1,"E") "RTN","SDECAR",317,0) .S SDTMP=SDTMP_U_@SDX@(2,"I")_U_@SDX@(2,"E")_U_@SDX@(3,"I")_U_@SDX@(3,"E") "RTN","SDECAR",318,0) .S SDECI=SDECI+1 S @SDECY@(SDECI)=SDTMP_$C(30) "RTN","SDECAR",319,0) S @SDECY@(SDECI)=@SDECY@(SDECI)_$C(31) "RTN","SDECAR",320,0) Q "RTN","SDECAR2") 0^37^B213318205^B204137546 "RTN","SDECAR2",1,0) SDECAR2 ;ALB/SAT/JSM,WTC,LAB - VISTA SCHEDULING RPCS ;Apr 10, 2020@15:22 "RTN","SDECAR2",2,0) ;;5.3;Scheduling;**627,642,658,671,686,694,745,799,805**;Aug 13, 1993;Build 9 "RTN","SDECAR2",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDECAR2",4,0) ; "RTN","SDECAR2",5,0) Q "RTN","SDECAR2",6,0) ; "RTN","SDECAR2",7,0) ARSET(RET,INP) ;Appointment Request Set "RTN","SDECAR2",8,0) ;SD*5.3*745 replace external 'INP...' due to XINDEX issue. Parameters are then rolled into the INP array "RTN","SDECAR2",9,0) ;ARSET(RET,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15,S16,S17,S18,S19,S20,S21,S22,S23,S24,S25,S26,S27,S28,S29) external parameter tag in SDEC "RTN","SDECAR2",10,0) ; INP - Input parameters array "RTN","SDECAR2",11,0) ; INP(1) = (integer) Wait List IEN point to "RTN","SDECAR2",12,0) ; SDEC APPT REQUEST file 409.85. "RTN","SDECAR2",13,0) ; If null, a new entry will be added "RTN","SDECAR2",14,0) ; INP(2) = (text) DFN Pointer to the PATIENT file 2 "RTN","SDECAR2",15,0) ; INP(3) = (date) Originating Date/time in external date form "RTN","SDECAR2",16,0) ; INP(4) = (text) Institution name NAME field from the INSTITUTION file "RTN","SDECAR2",17,0) ; INP(5) = (text) Request Type "RTN","SDECAR2",18,0) ; INP(6) = (text) REQ Specific Clinic name - NAME field in file 44 "RTN","SDECAR2",19,0) ; INP(7) = (text) Originating User name - NAME field in NEW PERSON file 200 "RTN","SDECAR2",20,0) ; INP(8) = (text) Priority - 'ASAP' or 'FUTURE' "RTN","SDECAR2",21,0) ; INP(9) = (text) Request By - 'PROVIDER' or 'PATIENT' "RTN","SDECAR2",22,0) ; INP(10) = (text) Provider name - NAME field in NEW PERSON file200 "RTN","SDECAR2",23,0) ; INP(11) = (date) Desired Date of appointment in external format. "RTN","SDECAR2",24,0) ; INP(12) = (text) comment must be 1-60 characters. "RTN","SDECAR2",25,0) ; INP(13) = (text) ENROLLMENT PRIORITY - Valid Values: GROUP 1-8 "RTN","SDECAR2",26,0) ; INP(14) = (text) MULTIPLE APPOINTMENT RTC NO; YES "RTN","SDECAR2",27,0) ; INP(15) = (integer) MULT APPT RTC INTERVAL integer between 1-365 "RTN","SDECAR2",28,0) ; INP(16) = (integer) MULT APPT NUMBER integer between 1-100 "RTN","SDECAR2",29,0) ; INP(17) = Patient Contacts separated by :: "RTN","SDECAR2",30,0) ; Each :: piece has the following ~~ pieces: "RTN","SDECAR2",31,0) ; 1) = (date) DATE ENTERED external date/time "RTN","SDECAR2",32,0) ; 2) = (text) PC ENTERED BY USER ID or NAME - Pointer toNEW PERSON file or NAME "RTN","SDECAR2",33,0) ; 4) = (optional) ACTION - valid values are: "RTN","SDECAR2",34,0) ; CALLED;MESSAGE LEFT;LETTER "RTN","SDECAR2",35,0) ; 5) = (optional) PATIENT PHONE Free-Text 4-20 characters "RTN","SDECAR2",36,0) ; 6) = NOT USED (optional) Comment 1-160 characters "RTN","SDECAR2",37,0) ; INP(18) = (optional) SERVICE CONNECTED PRIORITY valid values are NO YES "RTN","SDECAR2",38,0) ; INP(19) = (optional) SERVICE CONNECTED PERCENTAGE = numeric 0-100 "RTN","SDECAR2",39,0) ; INP(20) = (optional) MRTC calculated preferred dates separated by pipe |: "RTN","SDECAR2",40,0) ; Each date can be in external format with no time. "RTN","SDECAR2",41,0) ; INP(21) = (optional) CLINIC STOP pointer to CLINIC STOP file 40.7 "RTN","SDECAR2",42,0) ; used to populate the REQ SERVICE/SPECIALTY field in 409.85 "RTN","SDECAR2",43,0) ; INP(22) = (optional) Appointment Type ID pointer to APPOINTMENT TYPE file 409.1 "RTN","SDECAR2",44,0) ; INP(23) = (optional) Patient Status "RTN","SDECAR2",45,0) ; N = NEW "RTN","SDECAR2",46,0) ; E = ESTABLISHED "RTN","SDECAR2",47,0) ; INP(24) = (optional) MULT APPTS MADE "RTN","SDECAR2",48,0) ; list of child pointers to SDEC APPOINTMENT and/orSDEC APPT REQUEST files separated by pipe "RTN","SDECAR2",49,0) ; each pipe piece contains the following ~ pieces: "RTN","SDECAR2",50,0) ; 1. Appointment Id pointer to SDEC APPOINTMENT file 409.84 "RTN","SDECAR2",51,0) ; 2. Request Id pointer to SDEC APPT REQUEST file 409.85 "RTN","SDECAR2",52,0) ; INP(25) = (optional) PARENT REQUEST pointer to SDEC APPT REQUEST file 409.85 "RTN","SDECAR2",53,0) ; INP(26) = (optional) NLT (No later than) [CPRS RTC REQUIREMENT] "RTN","SDECAR2",54,0) ; INP(27) = (optional) PREREQ (Prerequisites) [CPRS RTC REQUIREMENT] "RTN","SDECAR2",55,0) ; INP(28) = (optional) ORDER IEN [CPRS RTC REQUIREMENT] "RTN","SDECAR2",56,0) ; INP(29) = (optional) VAOS GUID <== wtc patch 686 3/21/18 added for VAOS requests "RTN","SDECAR2",57,0) ; "RTN","SDECAR2",58,0) N X,Y,%DT "RTN","SDECAR2",59,0) N DFN,MI,ARAPTYP,ARIEN,ARORIGDT,ARORIGDTI,ARINST,ARINSTI,ARTYPE,ARTEAM,ARPOS,ARSRVSP,ARCLIN "RTN","SDECAR2",60,0) N ARUSER,ARPRIO,ARREQBY,ARPROV,ARDAPTDT,ARCOMM,AREESTAT,AREDT,ARQUIT "RTN","SDECAR2",61,0) N FNUM,FDA,ARNEW,ARRET,ARMSG,ARDATA,ARERR,ARHOSN,AUDF,SDREC "RTN","SDECAR2",62,0) N ARMAI,ARMAN,ARMAR,ARPARENT,ARPATTEL,ARENPRI,ARSTOP,ARSVCCON,ARSVCCOP,PIDHIEN,PIDCHECK "RTN","SDECAR2",63,0) N VAOSGUID ; wtc patch 686 3/21/18 added for VAOS requests "RTN","SDECAR2",64,0) S (ARQUIT,AUDF)=0 "RTN","SDECAR2",65,0) S FNUM=$$FNUM^SDECAR "RTN","SDECAR2",66,0) S RET="I00020ERRORID^T00030ERRORTEXT"_$C(30) "RTN","SDECAR2",67,0) ; Use MERGE instead of SET so we can know if values were actually specified or not. "RTN","SDECAR2",68,0) ; This way, if a value is null, we will delete any previous value, "RTN","SDECAR2",69,0) ; but if it is missing, then we will just ignore it. "RTN","SDECAR2",70,0) M ARIEN=INP(1) "RTN","SDECAR2",71,0) S DFN=$G(INP(2)) "RTN","SDECAR2",72,0) I '+DFN S RET=RET_"-1^Invalid Patient ID."_$C(30,31) Q "RTN","SDECAR2",73,0) I '$D(^DPT(DFN,0)) S RET=RET_"-1^Invalid Patient ID"_$C(30,31) Q "RTN","SDECAR2",74,0) ; "RTN","SDECAR2",75,0) ; Change date conversion to deal with midnight. 5/29/18 wtc patch 694 "RTN","SDECAR2",76,0) ; "RTN","SDECAR2",77,0) S AREDT=$P($G(INP(3)),":",1,2) "RTN","SDECAR2",78,0) S AREDT=$$NETTOFM^SDECDATE(AREDT,$S(AREDT["@":"Y",1:"N")) ; "RTN","SDECAR2",79,0) I AREDT=-1 S RET=RET_"-1^Invalid Origination date."_$C(30,31) Q "RTN","SDECAR2",80,0) S ARORIGDT=$P(AREDT,".",1) "RTN","SDECAR2",81,0) S ARINST=$G(INP(4)) I ARINST'="" D "RTN","SDECAR2",82,0) .I '+ARINST S ARINST=$O(^DIC(4,"B",ARINST,0)) "RTN","SDECAR2",83,0) M ARTYPE=INP(5) "RTN","SDECAR2",84,0) S ARCLIN=$G(INP(6)) "RTN","SDECAR2",85,0) I ARCLIN'="" D "RTN","SDECAR2",86,0) .I +ARCLIN=ARCLIN D "RTN","SDECAR2",87,0) ..I '$D(^SC(+ARCLIN,0)) S RET=RET_"-1^"_ARCLIN_" is an invalid Clinic ID."_$C(30,31) S ARQUIT=1 Q "RTN","SDECAR2",88,0) .I '(+ARCLIN=ARCLIN) D "RTN","SDECAR2",89,0) ..S ARCLIN=$O(^SC("B",ARCLIN,0)) "RTN","SDECAR2",90,0) ..I ARCLIN="" S RET=RET_"-1^"_ARCLIN_" is an invalid Clinic Name."_$C(30,31) S ARQUIT=1 Q "RTN","SDECAR2",91,0) Q:ARQUIT=1 "RTN","SDECAR2",92,0) S ARUSER=$G(INP(7)) "RTN","SDECAR2",93,0) I ARUSER'="" I '+ARUSER S ARUSER=$O(^VA(200,"B",ARUSER,0)) "RTN","SDECAR2",94,0) I ARUSER="" S ARUSER=DUZ "RTN","SDECAR2",95,0) S ARREQBY=$G(INP(9)) I ARREQBY'="" D "RTN","SDECAR2",96,0) .S ARREQBY=$S(ARREQBY="PATIENT":2,ARREQBY="PROVIDER":1,1:"") "RTN","SDECAR2",97,0) S ARPROV=$G(INP(10)) I ARPROV'="" I '+ARPROV S ARPROV=$O(^VA(200,"B",ARPROV,0)) "RTN","SDECAR2",98,0) S ARDAPTDT=INP(11) "RTN","SDECAR2",99,0) S %DT="" S X=$P($G(ARDAPTDT),"@",1) D ^%DT S ARPRIO=$S(Y=$P($$NOW^XLFDT,".",1):"A",1:"F") "RTN","SDECAR2",100,0) S ARDAPTDT=Y "RTN","SDECAR2",101,0) I Y=-1 S ARDAPTDT="" "RTN","SDECAR2",102,0) S (INP(12),ARCOMM)=$TR($G(INP(12)),"^"," ") ;alb/sat 658 "RTN","SDECAR2",103,0) S ARENPRI=$G(INP(13)) D "RTN","SDECAR2",104,0) .S:ARENPRI'="" ARENPRI=$S(ARENPRI="GROUP 1":1,ARENPRI="GROUP 2":2,ARENPRI="GROUP3":3,ARENPRI="GROUP4":4,ARENPRI="GROUP 5":5,ARENPRI="GROUP 6":6,ARENPRI="GROUP 7":7,ARENPRI="GROUP 8":8,1:ARENPRI) "RTN","SDECAR2",105,0) S ARMAR=$G(INP(14)) I ARMAR'="" S ARMAR=$S(ARMAR="YES":1,1:0) "RTN","SDECAR2",106,0) M ARMAI=INP(15) "RTN","SDECAR2",107,0) M ARMAN=INP(16) "RTN","SDECAR2",108,0) S ARSVCCON=$G(INP(18)) S:ARSVCCON'="" ARSVCCON=$S(ARSVCCON="YES":1,1:0) "RTN","SDECAR2",109,0) M ARSVCCOP=INP(19) I $G(ARSVCCOP)'="" S ARSVCCOP=+$G(ARSVCCOP) S:(+ARSVCCOP<0)!(+ARSVCCOP>100) ARSVCCOP="" "RTN","SDECAR2",110,0) S ARSTOP=$G(INP(21)) "RTN","SDECAR2",111,0) I ARSTOP'="",ARCLIN'="" S RET=RET_"-1^Cannot include both Clinic and Service."_$C(30,31) Q "RTN","SDECAR2",112,0) S ARAPTYP=+$G(INP(22)) I +ARAPTYP,'$D(^SD(409.1,ARAPTYP,0)) S ARAPTYP="" "RTN","SDECAR2",113,0) S ARPARENT=+$G(INP(25)) I +ARPARENT,'$D(^SDEC(409.85,+ARPARENT,0)) S ARPARENT="" "RTN","SDECAR2",114,0) S ARNLT=+$G(INP(26)) "RTN","SDECAR2",115,0) S ARPRER=$G(INP(27)) "RTN","SDECAR2",116,0) S ARORDN=+$G(INP(28)) "RTN","SDECAR2",117,0) ;CHECK FOR MISSING NLT,PREREQ,ORDER IEN ON MULTIPLE APPT REQUESTS "RTN","SDECAR2",118,0) I +ARPARENT>0&(+$G(INP(26))=0) D "RTN","SDECAR2",119,0) .S ARNLT=$P($G(^SDEC(409.85,+ARPARENT,7)),U,2) "RTN","SDECAR2",120,0) I +ARPARENT>0&($G(INP(27))="") D "RTN","SDECAR2",121,0) .N PRIEN,PR "RTN","SDECAR2",122,0) .S PRIEN=0 F S PRIEN=$O(^SDEC(409.85,+ARPARENT,8,PRIEN)) Q:PRIEN'>0 D "RTN","SDECAR2",123,0) ..S PR=$P($G(^SDEC(409.85,+ARPARENT,8,PRIEN,0)),"^") Q:PR="" "RTN","SDECAR2",124,0) ..S ARPRER=$S(ARPRER'="":ARPRER_";"_PR,1:PR) "RTN","SDECAR2",125,0) I +ARPARENT>0&(+$G(INP(28))=0) D "RTN","SDECAR2",126,0) .S ARORDN=$P($G(^SDEC(409.85,+ARPARENT,7)),U,1) "RTN","SDECAR2",127,0) ; "RTN","SDECAR2",128,0) S VAOSGUID=$G(INP(29)) ; <== wtc patch 686 3/21/18 added for VAOS requests "RTN","SDECAR2",129,0) S ARIEN=$G(ARIEN) "RTN","SDECAR2",130,0) S ARNEW=ARIEN="" "RTN","SDECAR2",131,0) I ARNEW D "RTN","SDECAR2",132,0) . S AUDF=1 "RTN","SDECAR2",133,0) . S FDA=$NA(FDA(FNUM,"+1,")) "RTN","SDECAR2",134,0) . S @FDA@(.01)=+DFN "RTN","SDECAR2",135,0) . ;This handles the date/time coming in as "8/27/2014 12:00:00 AM" "RTN","SDECAR2",136,0) . S:$G(ARORIGDT)'="" @FDA@(1)=ARORIGDT "RTN","SDECAR2",137,0) . S:$G(ARINST)'="" @FDA@(2)=+ARINST "RTN","SDECAR2",138,0) . ; "RTN","SDECAR2",139,0) . ; Make request type consistent with data dictionary changes. wtc 694 7/24/2018 "RTN","SDECAR2",140,0) . ; "RTN","SDECAR2",141,0) . S:$G(ARTYPE)'="" @FDA@(4)=$S(ARTYPE="APPOINTMENT":"APPT",1:ARTYPE) ; "RTN","SDECAR2",142,0) . S:$G(VAOSGUID)'="" @FDA@(5)=VAOSGUID ; <== wtc patch 686 3/21/18 added for VAOS requests "RTN","SDECAR2",143,0) . S:$G(ARCLIN)'="" @FDA@(8)=+ARCLIN "RTN","SDECAR2",144,0) . S:$G(ARSTOP)'="" @FDA@(8.5)=+ARSTOP "RTN","SDECAR2",145,0) . S:+ARAPTYP @FDA@(8.7)=+ARAPTYP "RTN","SDECAR2",146,0) . S:$G(ARUSER)'="" @FDA@(9)=+ARUSER "RTN","SDECAR2",147,0) . S:$G(AREDT)'="" @FDA@(9.5)=AREDT "RTN","SDECAR2",148,0) . S:$G(ARPRIO)'="" @FDA@(10)=ARPRIO "RTN","SDECAR2",149,0) . S:$G(ARENPRI)'="" @FDA@(10.5)=ARENPRI "RTN","SDECAR2",150,0) . S:$G(ARREQBY)'="" @FDA@(11)=ARREQBY "RTN","SDECAR2",151,0) . S:$G(ARPROV)'="" @FDA@(12)=+ARPROV "RTN","SDECAR2",152,0) . S:$G(ARSVCCOP)'="" @FDA@(14)=ARSVCCOP "RTN","SDECAR2",153,0) . S:$G(ARSVCCON)'="" @FDA@(15)=+ARSVCCON "RTN","SDECAR2",154,0) . S:$G(ARDAPTDT)'="" @FDA@(22)=ARDAPTDT "RTN","SDECAR2",155,0) . S:$G(ARNLT)'="" @FDA@(47)=ARNLT "RTN","SDECAR2",156,0) . D FDAPRER(.FDA,ARPRER,"+1") "RTN","SDECAR2",157,0) . S:$G(ARORDN)'="" @FDA@(46)=ARORDN "RTN","SDECAR2",158,0) . S @FDA@(23)="O" "RTN","SDECAR2",159,0) . S:$G(ARCOMM)'="" @FDA@(25)=ARCOMM "RTN","SDECAR2",160,0) . S:$G(ARMAR)'="" @FDA@(41)=ARMAR "RTN","SDECAR2",161,0) . I +ARMAR,$G(ARMAI)'="" S @FDA@(42)=ARMAI "RTN","SDECAR2",162,0) . I +ARMAR,$G(ARMAN)'="" S @FDA@(43)=ARMAN "RTN","SDECAR2",163,0) . S:$G(INP(23))'="" @FDA@(.02)=$S(INP(23)="N":"N",INP(23)="NEW":"N",INP(23)="E":"E",INP(23)="ESTABLISHED":"E",1:"") "RTN","SDECAR2",164,0) . S:+ARPARENT @FDA@(43.8)=+ARPARENT "RTN","SDECAR2",165,0) . S @FDA@(49)=0 ; setting initial appt req PID change allowed field to no. "RTN","SDECAR2",166,0) E D "RTN","SDECAR2",167,0) . S ARIEN=ARIEN_"," ; Append the comma for both "RTN","SDECAR2",168,0) . K ARDATA,ARERR "RTN","SDECAR2",169,0) . D GETS^DIQ(FNUM,ARIEN,"*","IE","ARDATA","ARERR") "RTN","SDECAR2",170,0) . I $D(ARERR) M ARMSG=ARERR K FDA Q "RTN","SDECAR2",171,0) . S FDA=$NA(FDA(FNUM,ARIEN)) "RTN","SDECAR2",172,0) . I $D(ARORIGDT) D "RTN","SDECAR2",173,0) . . S ARORIGDT=$P(ARORIGDT,"@",1) S %DT="" S X=ARORIGDT D ^%DT S ARORIGDTI=Y "RTN","SDECAR2",174,0) . . I ARORIGDTI'=ARDATA(FNUM,ARIEN,1,"I") S @FDA@(1)=$S(ARORIGDT="":"@",1:ARORIGDT) "RTN","SDECAR2",175,0) . I $D(ARINST),ARINST'=ARDATA(FNUM,ARIEN,2,"I") S @FDA@(2)=+ARINST "RTN","SDECAR2",176,0) . I $D(ARTYPE),ARTYPE'=ARDATA(FNUM,ARIEN,4,"E") S @FDA@(4)=$S(ARTYPE="APPOINTMENT":"APPT",ARTYPE="MOBILE":"MOBILE",1:ARTYPE) "RTN","SDECAR2",177,0) . I $G(VAOSGUID)'="",VAOSGUID'=ARDATA(FNUM,ARIEN,5,"I") S @FDA@(5)=VAOSGUID ; <== wtc patch 686 3/21/18 added for VAOS requests "RTN","SDECAR2",178,0) . I ARCLIN'="",ARCLIN'=ARDATA(FNUM,ARIEN,8,"I") S @FDA@(8)=+ARCLIN,AUDF=1 S:ARDATA(FNUM,ARIEN,8.5,"I")'="" @FDA@(8.5)="@" "RTN","SDECAR2",179,0) . I ARSTOP'="",ARSTOP'=ARDATA(FNUM,ARIEN,8.5,"I") S @FDA@(8.5)=+ARSTOP,AUDF=1 S:ARDATA(FNUM,ARIEN,8,"I")'="" @FDA@(8)="@" "RTN","SDECAR2",180,0) . S:+ARAPTYP @FDA@(8.7)=+ARAPTYP "RTN","SDECAR2",181,0) . I $D(ARUSER),ARUSER'=ARDATA(FNUM,ARIEN,9,"I") S @FDA@(9)=+ARUSER "RTN","SDECAR2",182,0) . I $D(AREDT),AREDT'=$G(ARDATA(FNUM,ARIEN,9.5,"I")) S @FDA@(9.5)=AREDT "RTN","SDECAR2",183,0) . I $D(ARPRIO),ARPRIO'=ARDATA(FNUM,ARIEN,10,"I") S @FDA@(10)=$S(ARPRIO="":"@",1:ARPRIO) "RTN","SDECAR2",184,0) . I $D(ARENPRI),ARENPRI'=ARDATA(FNUM,ARIEN,10.5,"E") S @FDA@(10.5)=ARENPRI "RTN","SDECAR2",185,0) . I $D(ARREQBY),ARREQBY'=ARDATA(FNUM,ARIEN,11,"I") S @FDA@(11)=$S(ARREQBY="":"@",1:ARREQBY) "RTN","SDECAR2",186,0) . I $D(ARPROV),ARPROV'=ARDATA(FNUM,ARIEN,12,"I") S @FDA@(12)=+ARPROV "RTN","SDECAR2",187,0) . I $D(ARSVCCOP),ARSVCCOP'=$G(ARDATA(FNUM,ARIEN,14,"I")) S @FDA@(14)=ARSVCCOP "RTN","SDECAR2",188,0) . I $D(ARSVCCON),ARSVCCON'=ARDATA(FNUM,ARIEN,15,"E") S @FDA@(15)=+ARSVCCON "RTN","SDECAR2",189,0) . I $D(ARDAPTDT),ARDAPTDT'=ARDATA(FNUM,ARIEN,22,"I") S @FDA@(22)=$S(ARDAPTDT="":"@",1:ARDAPTDT) "RTN","SDECAR2",190,0) . I $D(ARCOMM),ARCOMM'=ARDATA(FNUM,ARIEN,25,"I") S @FDA@(25)=$S(ARCOMM="":"@",1:ARCOMM) "RTN","SDECAR2",191,0) . S:$G(ARMAR)'="" @FDA@(41)=ARMAR "RTN","SDECAR2",192,0) . S:$G(ARMAI)'="" @FDA@(42)=ARMAI "RTN","SDECAR2",193,0) . S:$G(ARMAN)'="" @FDA@(43)=ARMAN "RTN","SDECAR2",194,0) . S:$G(ARNLT)'="" @FDA@(47)=ARNLT "RTN","SDECAR2",195,0) . D DELPRER(+ARIEN) "RTN","SDECAR2",196,0) . D FDAPRER(.FDA,ARPRER,+ARIEN) "RTN","SDECAR2",197,0) . S:$G(ARORDN)'="" @FDA@(46)=ARORDN "RTN","SDECAR2",198,0) . S:$G(INP(23))'="" @FDA@(.02)=$S(INP(23)="N":"N",INP(23)="NEW":"N",INP(23)="E":"E",INP(23)="ESTABLISHED":"E",1:"") "RTN","SDECAR2",199,0) . S:+ARPARENT @FDA@(43.8)=+ARPARENT "RTN","SDECAR2",200,0) ; Only call UPDATE^DIE if there are any array entries in FDA "RTN","SDECAR2",201,0) D:$D(FDA)>9 UPDATE^DIE("","FDA","ARRET","ARMSG") "RTN","SDECAR2",202,0) ; Add PID History entry for appt req "RTN","SDECAR2",203,0) I $G(ARIEN) S AREQIEN=$G(ARIEN) I '$G(ARIEN) S AREQIEN=$G(ARRET(1)) "RTN","SDECAR2",204,0) I $G(ARDAPTDT) D "RTN","SDECAR2",205,0) .S ARRET=$G(ARRET(1)) "RTN","SDECAR2",206,0) .I $G(ARIEN) S ARRET=ARIEN S ARRET=$TR(ARRET,",","") S PIDCHECK=$$LASTPIDCHECK(ARRET,ARDAPTDT) "RTN","SDECAR2",207,0) .I $G(PIDCHECK)=0 Q "RTN","SDECAR2",208,0) .S ARUSER=$$GET1^DIQ(200,ARUSER,.01,"E") "RTN","SDECAR2",209,0) .S FDA(409.854,"+1,"_ARRET_",",.01)=$$NOW^XLFDT "RTN","SDECAR2",210,0) .S FDA(409.854,"+1,"_ARRET_",",1)=ARDAPTDT "RTN","SDECAR2",211,0) .S FDA(409.854,"+1,"_ARRET_",",2)=ARUSER "RTN","SDECAR2",212,0) .D UPDATE^DIE(,"FDA","PIDHIEN","ERR") K FDA "RTN","SDECAR2",213,0) I $D(ARMSG) D "RTN","SDECAR2",214,0) . F MI=1:1:$G(ARMSG("DIERR")) S RET=RET_"-1^"_$G(ARMSG("DIERR",MI,"TEXT",1))_$C(30) "RTN","SDECAR2",215,0) . S RET=RET_$C(31) "RTN","SDECAR2",216,0) Q:$D(ARMSG) "RTN","SDECAR2",217,0) S ARINSTI=$P($G(^SDEC(409.85,$S(+ARIEN:ARIEN,1:ARRET(1)),0)),U,3) "RTN","SDECAR2",218,0) I $G(INP(17))'="" D AR23(INP(17),$S(+ARIEN:ARIEN,1:ARRET(1))) ;patient contacts "RTN","SDECAR2",219,0) I +ARMAR,$G(INP(20))'="" D AR435(INP(20),$S(+ARIEN:ARIEN,1:ARRET(1))) ;MRTC CALC PREF DATES "RTN","SDECAR2",220,0) I +AUDF D ARAUD($S(+ARIEN:+ARIEN,1:ARRET(1)),ARCLIN,ARSTOP) ;VS AUDIT "RTN","SDECAR2",221,0) I $G(INP(24))'="" N SDI F SDI=1:1:$L(INP(24),"|") S SDREC=$P(INP(24),"|",SDI) D AR433($S(+ARIEN:+ARIEN,1:ARRET(1)),SDREC) "RTN","SDECAR2",222,0) I +ARPARENT D AR433(+ARPARENT,"~"_$S(+ARIEN:+ARIEN,1:ARRET(1))) "RTN","SDECAR2",223,0) I +$G(ARRET(1)) S RET=RET_ARRET(1)_U_$C(30,31) "RTN","SDECAR2",224,0) E S RET=RET_+ARIEN_U_$C(30,31) "RTN","SDECAR2",225,0) Q "RTN","SDECAR2",226,0) ; "RTN","SDECAR2",227,0) LASTPIDCHECK(AREQIEN,ARDAPTDT) ; checking to see if the last PID in the PID HISTORY multiple is different from incoming value "RTN","SDECAR2",228,0) N LASTPIDIEN,LASTPID "RTN","SDECAR2",229,0) S LASTPIDIEN=$O(^SDEC(409.85,AREQIEN,10,"A"),-1) "RTN","SDECAR2",230,0) S LASTPID=$$GET1^DIQ(409.854,LASTPIDIEN_","_AREQIEN_",",1,"I") "RTN","SDECAR2",231,0) I LASTPID=ARDAPTDT Q 0 "RTN","SDECAR2",232,0) Q 1 "RTN","SDECAR2",233,0) FDAPRER(FDA,ARPRER,ARIEN) ;Setup the FDA array for the PREREQUISITE multiple (#48) "RTN","SDECAR2",234,0) N ASEQ,DELIM,PC,PR "RTN","SDECAR2",235,0) Q:$G(ARPRER)="" "RTN","SDECAR2",236,0) S DELIM=";",ASEQ=80 "RTN","SDECAR2",237,0) F PC=1:1:$L(ARPRER,DELIM) D "RTN","SDECAR2",238,0) .S PR=$P(ARPRER,DELIM,PC) Q:PR="" "RTN","SDECAR2",239,0) .S ASEQ=ASEQ+1,FDA(409.8548,"+"_ASEQ_","_ARIEN_",",.01)=PR "RTN","SDECAR2",240,0) Q "RTN","SDECAR2",241,0) ; "RTN","SDECAR2",242,0) DELPRER(ARIEN) ;Delete all entries in the PREREQUISITE multiple (#48) "RTN","SDECAR2",243,0) N DIK,DA "RTN","SDECAR2",244,0) Q:$G(ARIEN)'=+$G(ARIEN) Q:ARIEN'>0 "RTN","SDECAR2",245,0) S DIK="^SDEC(409.85,"_ARIEN_",8,",DA(1)=ARIEN "RTN","SDECAR2",246,0) S DA=0 F S DA=$O(^SDEC(409.85,ARIEN,8,DA)) Q:DA'>0 D ^DIK "RTN","SDECAR2",247,0) Q "RTN","SDECAR2",248,0) ; "RTN","SDECAR2",249,0) GETPRER(RET,ARIEN) ;Return the values in the PREREQUISITE multiple (#48) "RTN","SDECAR2",250,0) N CC,PR "RTN","SDECAR2",251,0) I $G(^SDEC(409.85,+$G(ARIEN),0))="" S RET="-1^Invalid SDEC APPT REQUEST id "_$G(ARIEN) Q "RTN","SDECAR2",252,0) S RET="" "RTN","SDECAR2",253,0) S CC=0 F S CC=$O(^SDEC(409.85,ARIEN,8,CC)) Q:CC'>0 D "RTN","SDECAR2",254,0) .S PR=$P($G(^SDEC(409.85,ARIEN,8,CC,0)),U,1) Q:PR="" "RTN","SDECAR2",255,0) .S RET=$S(RET'="":RET_U_PR,1:PR) "RTN","SDECAR2",256,0) Q "RTN","SDECAR2",257,0) ; "RTN","SDECAR2",258,0) ARAUD(ARIEN,ARCLIN,ARSTOP,DATE,USER) ;populate VS AUDIT multiple field 45 "RTN","SDECAR2",259,0) ; ARIEN - (required) pointer to SDEC APPT REQUEST file 409.85 "RTN","SDECAR2",260,0) ; ARCLIN - (optional) pointer to HOSPITAL LOCATION file 44 "RTN","SDECAR2",261,0) ; ARSTOP - (optional) pointer to CLINIC STOP file "RTN","SDECAR2",262,0) ; DATE - (optional) date/time in fileman format "RTN","SDECAR2",263,0) N SDFDA,SDP,SDPN "RTN","SDECAR2",264,0) S ARIEN=$G(ARIEN) Q:ARIEN="" "RTN","SDECAR2",265,0) S ARCLIN=$G(ARCLIN) "RTN","SDECAR2",266,0) S ARSTOP=$G(ARSTOP) "RTN","SDECAR2",267,0) S SDP=$O(^SDEC(409.85,ARIEN,6,9999999),-1) "RTN","SDECAR2",268,0) I +SDP S SDPN=^SDEC(409.85,ARIEN,6,SDP,0) I $P(SDPN,U,3)=ARCLIN,$P(SDPN,U,4)=ARSTOP Q "RTN","SDECAR2",269,0) S DATE=$G(DATE) S:DATE="" DATE=$E($$NOW^XLFDT,1,12) "RTN","SDECAR2",270,0) S USER=$G(USER) S:USER="" USER=DUZ "RTN","SDECAR2",271,0) S SDFDA(409.8545,"+1,"_ARIEN_",",.01)=DATE "RTN","SDECAR2",272,0) S SDFDA(409.8545,"+1,"_ARIEN_",",1)=USER "RTN","SDECAR2",273,0) S:ARCLIN'="" SDFDA(409.8545,"+1,"_ARIEN_",",2)=ARCLIN "RTN","SDECAR2",274,0) S:ARSTOP'="" SDFDA(409.8545,"+1,"_ARIEN_",",3)=ARSTOP "RTN","SDECAR2",275,0) D UPDATE^DIE("","SDFDA") "RTN","SDECAR2",276,0) Q "RTN","SDECAR2",277,0) ; "RTN","SDECAR2",278,0) AR433(ARIEN,SDEC) ;set MULT APPTS MADE "RTN","SDECAR2",279,0) ;INPUT: "RTN","SDECAR2",280,0) ; ARIEN = (required) pointer to SDEC APPT REQUEST file 409.85 "RTN","SDECAR2",281,0) ; SDEC = (required) child pointers to SDEC APPOINTMENT and SDEC APPTREQUEST file separated by pipe "RTN","SDECAR2",282,0) ; each pipe piece contains the following ~ pieces: "RTN","SDECAR2",283,0) ; 1. Appointment Id pointer to SDEC APPOINTMENT file 409.84 "RTN","SDECAR2",284,0) ; 2. Request Id pointer to SDEC APPT REQUEST file 409.85 "RTN","SDECAR2",285,0) N SDAPP,SDFDA,SDI,SDIEN "RTN","SDECAR2",286,0) S ARIEN=$G(ARIEN) "RTN","SDECAR2",287,0) Q:'$D(^SDEC(409.85,ARIEN,0)) "RTN","SDECAR2",288,0) S SDEC=$G(SDEC) "RTN","SDECAR2",289,0) F SDI=1:1:$L(SDEC,"|") D "RTN","SDECAR2",290,0) .K SDFDA "RTN","SDECAR2",291,0) .S SDAPP=$P(SDEC,"|",SDI) "RTN","SDECAR2",292,0) .I $P(SDAPP,"~",2)="",$P(SDAPP,"~",1)'="" S $P(SDAPP,"~",2)=$P($$GET1^DIQ(409.84,+SDAPP_",",.22,"I"),";",1) "RTN","SDECAR2",293,0) .Q:$P(SDAPP,"~",2)="" "RTN","SDECAR2",294,0) .S SDIEN=$O(^SDEC(409.85,ARIEN,2,"B",$P(SDAPP,"~",2),0)) "RTN","SDECAR2",295,0) .S SDIEN=$S(SDIEN'="":SDIEN,1:"+1") "RTN","SDECAR2",296,0) .I $D(^SDEC(409.85,+$P(SDAPP,"~",2),0)) S SDFDA(409.852,SDIEN_","_ARIEN_",",.01)=+$P(SDAPP,"~",2) "RTN","SDECAR2",297,0) .I $D(^SDEC(409.84,+$P(SDAPP,"~",1),0)) S SDFDA(409.852,SDIEN_","_ARIEN_",",.02)=+$P(SDAPP,"~",1) "RTN","SDECAR2",298,0) .D:$D(SDFDA) UPDATE^DIE("","SDFDA") "RTN","SDECAR2",299,0) Q "RTN","SDECAR2",300,0) AR433D(SDEC) ;delete MULT APPTS MADE "RTN","SDECAR2",301,0) ;INPUT: "RTN","SDECAR2",302,0) ;SDEC = (required) pointers to SDEC APPOINTMENT file 409.84 separated by pipe "RTN","SDECAR2",303,0) N ARIEN,DFN,DIEN,SDAPP,SDFDA,SDI,SDJ,SDTYP "RTN","SDECAR2",304,0) S SDEC=$G(SDEC) "RTN","SDECAR2",305,0) F SDI=1:1:$L(SDEC,"|") D "RTN","SDECAR2",306,0) .S SDAPP=$P(SDEC,"|",SDI) "RTN","SDECAR2",307,0) .Q:'$D(^SDEC(409.84,SDAPP,0)) "RTN","SDECAR2",308,0) .S DFN=$$GET1^DIQ(409.84,SDAPP_",",.05,"I") "RTN","SDECAR2",309,0) .S SDTYP=$$GET1^DIQ(409.84,SDAPP_",",.22,"I"),DIEN=$P(SDTYP,";",1) "RTN","SDECAR2",310,0) .I $P(SDTYP,";",2)="SDEC(409.85," S ARIEN="" F S ARIEN=$O(^SDEC(409.85,"B",DFN,ARIEN)) Q:ARIEN="" D ; alb/jsm 658 "RTN","SDECAR2",311,0) ..S SDJ="" F S SDJ=$O(^SDEC(409.85,ARIEN,2,"B",DIEN,SDJ)) Q:SDJ="" D "RTN","SDECAR2",312,0) ...S SDFDA(409.852,SDJ_","_ARIEN_",",.01)="@" "RTN","SDECAR2",313,0) ...D UPDATE^DIE("","SDFDA") "RTN","SDECAR2",314,0) Q "RTN","SDECAR2",315,0) AR438(ARIEN,SDPARENT,SDEC) ;set PARENT REQUEST field 43.8; set as child in MULTAPPTS MADE in parent request "RTN","SDECAR2",316,0) N SDFDA "RTN","SDECAR2",317,0) I $G(SDPARENT)'="" S SDFDA(409.85,ARIEN_",",43.8)=SDPARENT D UPDATE^DIE("","SDFDA") "RTN","SDECAR2",318,0) Q "RTN","SDECAR2",319,0) ; "RTN","SDECAR2",320,0) AR435(SDDT,ARIEN) ;set dates into MRTC CALC PREF DATES multiple field 43.5 "RTN","SDECAR2",321,0) ;INPUT: "RTN","SDECAR2",322,0) ; ARIEN - Requested date ID pointer to SDEC REQUESTED APPT file 409.85 "RTN","SDECAR2",323,0) ; SDDT - MRTC calculated preferred dates separated by pipe |: "RTN","SDECAR2",324,0) ; Each date can be in external format with no time. "RTN","SDECAR2",325,0) N SDI,SDJ,SDFDA,X,Y,%DT "RTN","SDECAR2",326,0) F SDI=1:1:$L(SDDT,"|") D "RTN","SDECAR2",327,0) .S %DT="" S X=$P($P(SDDT,"|",SDI),"@",1) D ^%DT S SDJ=Y "RTN","SDECAR2",328,0) .Q:SDJ=-1 "RTN","SDECAR2",329,0) .Q:$O(^SDEC(409.85,ARIEN,5,"B",SDJ,0)) ;don't add duplicates "RTN","SDECAR2",330,0) .S SDFDA(409.851,"+1,"_ARIEN_",",.01)=SDJ "RTN","SDECAR2",331,0) .D UPDATE^DIE("","SDFDA") "RTN","SDECAR2",332,0) Q "RTN","SDECAR2",333,0) ; "RTN","SDECAR2",334,0) WLACT(NAME) ; "RTN","SDECAR2",335,0) N ACTIVE,H "RTN","SDECAR2",336,0) S ACTIVE="" "RTN","SDECAR2",337,0) S H="" F S H=$O(^DIC(40.7,"B",NAME,H)) Q:H="" D Q:ACTIVE'="" "RTN","SDECAR2",338,0) .I $P(^DIC(40.7,H,0),U,3)'="",$P(^DIC(40.7,H,0),U,3)<$$NOW^XLFDT() Q "RTN","SDECAR2",339,0) .S ACTIVE=H "RTN","SDECAR2",340,0) Q ACTIVE "RTN","SDECAR2",341,0) ; "RTN","SDECAR2",342,0) AR23(INP17,ARI) ;Patient Contacts "RTN","SDECAR2",343,0) N STR17,ARASD,ARASDH,ARDATA1,ARERR1,ARI1,ARIENS,ARIENS1,ARRET1,FDA "RTN","SDECAR2",344,0) N ARDT,ARUSR,X,Y,%DT "RTN","SDECAR2",345,0) S ARIENS=ARI_"," "RTN","SDECAR2",346,0) F ARI1=1:1:$L(INP17,"::") D "RTN","SDECAR2",347,0) .S STR17=$P(INP17,"::",ARI1) "RTN","SDECAR2",348,0) .K FDA "RTN","SDECAR2",349,0) . ; Change date conversion to deal with midnight. 5/29/18 wtc patch 694 "RTN","SDECAR2",350,0) . S ARASD=$P($P(STR17,"~~",1),":",1,2),ARASD=$$NETTOFM^SDECDATE(ARASD,"Y") ; "RTN","SDECAR2",351,0) .I (ARASD=-1)!(ARASD="") Q "RTN","SDECAR2",352,0) .S ARDT=$P($P(STR17,"~~",1),":",1,2) "RTN","SDECAR2",353,0) .S ARASDH="" "RTN","SDECAR2",354,0) .S ARIENS1=$S(ARASDH'="":ARASDH,1:"+1")_","_ARIENS "RTN","SDECAR2",355,0) .S FDA=$NA(FDA(409.8544,ARIENS1)) "RTN","SDECAR2",356,0) .I ARASDH'="" D "RTN","SDECAR2",357,0) ..D GETS^DIQ(409.8544,ARIENS1,"*","IE","ARDATA1","ARERR1") "RTN","SDECAR2",358,0) ..I $P(STR17,"~~",1)'="" S @FDA@(.01)=ARDT ;DATE ENTERED external date/time "RTN","SDECAR2",359,0) ..I $P(STR17,"~~",2)'="" S ARUSR=$P(STR17,"~~",2) S @FDA@(2)=$S(ARUSR="":"@",+ARUSR:$P($G(^VA(200,ARUSR,0)),U,1),1:ARUSER) ;PC ENTERED BY USER "RTN","SDECAR2",360,0) ..I $P(STR17,"~~",4)'="" S @FDA@(3)=$P(STR17,"~~",4) ;ACTION C=Called; M=Message Left; L=LETTER "RTN","SDECAR2",361,0) ..I $P(STR17,"~~",5)'="" S @FDA@(4)=$P(STR17,"~~",5) ;PATIENT PHONE "RTN","SDECAR2",362,0) .I ARASDH="" D "RTN","SDECAR2",363,0) ..I $P(STR17,"~~",1)'="" S @FDA@(.01)=ARDT ;DATE ENTERED external date/time "RTN","SDECAR2",364,0) ..I $P(STR17,"~~",2)'="" S ARUSR=$P(STR17,"~~",2) S @FDA@(2)=$S(ARUSR="":"@",+ARUSR:$P($G(^VA(200,ARUSR,0)),U,1),1:ARUSR) ;PC ENTERED BY USER "RTN","SDECAR2",365,0) ..I $P(STR17,"~~",4)'="" S @FDA@(3)=$P(STR17,"~~",4) ;ACTION C=Called; M=Message Left; L=LETTER "RTN","SDECAR2",366,0) ..I $P(STR17,"~~",5)'="" S @FDA@(4)=$P(STR17,"~~",5) ;PATIENT PHONE "RTN","SDECAR2",367,0) .D:$D(@FDA) UPDATE^DIE("E","FDA","ARRET1","ARMSG1") "RTN","SDECAR2",368,0) Q "RTN","SDECAR2",369,0) UPDATE(ARIEN,APPDT,SDCL,SVCP,SVCPR,NOTE,SDAPPTYP,EAS) ;update REQ APPT REQUEST at apointment add "RTN","SDECAR2",370,0) ;INPUT: "RTN","SDECAR2",371,0) ; ARIEN = Appt Request pointer to SD WAIT LIST file 409.85 "RTN","SDECAR2",372,0) ; APPDT = Appointment date/time (Scheduled Date of appt) in fm format "RTN","SDECAR2",373,0) ; SDCL = Clinic ID pointer to HOSPITAL LOCATION file 44 "RTN","SDECAR2",374,0) ; SVCP = Service Connected Percentage numeric 0-100 "RTN","SDECAR2",375,0) ; SVCPR = Service Connected Priority 0:NO 1:YES "RTN","SDECAR2",376,0) ; NOTE = Comment only 1st 60 characters are used "RTN","SDECAR2",377,0) ; SDAPPTYP = (optional) Appointment type ID pointer to APPOINTMENT TYPE file 409.1 "RTN","SDECAR2",378,0) ; EAS = (optional) Enterprise Appointment Scheduling Tracking Number associated to an appointment. "RTN","SDECAR2",379,0) ; "RTN","SDECAR2",380,0) ;all input must be verified by calling routine "RTN","SDECAR2",381,0) N SDDIV,SDFDA,SDSN,SDMSG "RTN","SDECAR2",382,0) S:+$G(SDAPPTYP) SDFDA(409.85,ARIEN_",",8.7)=SDAPPTYP "RTN","SDECAR2",383,0) S SDFDA(409.85,ARIEN_",",13)=APPDT ;SCHEDULED DATEOF APPT = APPDT (SDECSTART) "RTN","SDECAR2",384,0) S SDFDA(409.85,ARIEN_",",13.1)=$P($$NOW^XLFDT,".",1) ;DATE APPT. MADE= TODAY "RTN","SDECAR2",385,0) S SDFDA(409.85,ARIEN_",",13.2)=SDCL ;APPT CLINIC= SDCL (SDECSCD) "RTN","SDECAR2",386,0) S SDFDA(409.85,ARIEN_",",13.3)=$P($G(^SC(SDCL,0)),U,4) ;APPT INSTITUTION = Get from 44 using SDCL "RTN","SDECAR2",387,0) S SDFDA(409.85,ARIEN_",",13.4)=$P($G(^SC(SDCL,0)),U,7) ;APPT STOP CODE= Get from 44 using SDCL "RTN","SDECAR2",388,0) S SDDIV=$P($G(^SC(SDCL,0)),U,15) "RTN","SDECAR2",389,0) S SDSN=$S(SDDIV'="":$P($G(^DG(40.8,SDDIV,0)),U,2),1:"") "RTN","SDECAR2",390,0) S SDFDA(409.85,ARIEN_",",13.6)=SDSN ;APPT STATION NUMBER "RTN","SDECAR2",391,0) S SDFDA(409.85,ARIEN_",",13.7)=DUZ ;APPT CLERK= Current User "RTN","SDECAR2",392,0) S SDFDA(409.85,ARIEN_",",13.8)="R" ;APPT STATUS= R:Scheduled/Kept "RTN","SDECAR2",393,0) S:SVCP'="" SDFDA(409.85,ARIEN_",",14)=SVCP ;SERVICE CONNECTED PERCENTAGE = SVCP (SDSVCP) "RTN","SDECAR2",394,0) S:SVCPR'="" SDFDA(409.85,ARIEN_",",15)=SVCPR ;SERVICE CONNECTED PRIORITY = SVCPR (SDSVCPR) "RTN","SDECAR2",395,0) S:$G(NOTE)'="" SDFDA(409.85,ARIEN_",",25)=NOTE "RTN","SDECAR2",396,0) S:$G(EAS)'="" SDFDA(409.85,ARIEN_",",100)=EAS "RTN","SDECAR2",397,0) D UPDATE^DIE("","SDFDA","","SDMSG") "RTN","SDECAR2",398,0) Q "RTN","SDECAR4") 0^38^B129709695^B127585078 "RTN","SDECAR4",1,0) SDECAR4 ;ALB/TAW - VISTA SCHEDULING RPCS ;June 4, 2021@13:40 "RTN","SDECAR4",2,0) ;;5.3;Scheduling;**784,785,788,805**;Aug 13, 1993;Build 9 "RTN","SDECAR4",3,0) ;;Per VHA Directive 2004-038, this routine should not be modified "RTN","SDECAR4",4,0) ; Reference to ^DPT(DFN,0) in ICR #10035 "RTN","SDECAR4",5,0) ; "RTN","SDECAR4",6,0) Q "RTN","SDECAR4",7,0) ; "RTN","SDECAR4",8,0) ; Get SDEC APPOINTMENT REQUEST for all entries in the user's Institution "RTN","SDECAR4",9,0) ; where the Current Status is not C(losed). "RTN","SDECAR4",10,0) ; "RTN","SDECAR4",11,0) ; This RPC differs from SDEC ARGET in that only appointment specific data is returned. "RTN","SDECAR4",12,0) ; "RTN","SDECAR4",13,0) ; The ARGETPAT and ARGETPATJSON entry points must be kept in sync when passing in "RTN","SDECAR4",14,0) ; new parameters "RTN","SDECAR4",15,0) ; "RTN","SDECAR4",16,0) ARGETPATJSON(RET,DFN) ;Entry point to return JSON "RTN","SDECAR4",17,0) ; SDEC GET PATIENT APPT REQ JSON "RTN","SDECAR4",18,0) ; ARGETPATJSON^SDEC1 "RTN","SDECAR4",19,0) N FILT,APPT,ERR,JSONFLG,JSONERR,COPUNT "RTN","SDECAR4",20,0) S JSONFLG=1,JSONERR="" "RTN","SDECAR4",21,0) D JSONEP "RTN","SDECAR4",22,0) I '$D(APPT("Error")),'$D(APPT("ApptReq")) S APPT("ApptReq")="" ;No appt req for this patient "RTN","SDECAR4",23,0) D BUILDJSON "RTN","SDECAR4",24,0) Q "RTN","SDECAR4",25,0) ; "RTN","SDECAR4",26,0) ARGETIEN(RET,ARIEN) ;Appt Req GET for speific appt IEN "RTN","SDECAR4",27,0) ; SDEC GET PAT APPT REQ BY IEN "RTN","SDECAR4",28,0) ; ARGETIEN^SDEC1 "RTN","SDECAR4",29,0) N FILT,APPT,COUNT,FNUM,DFN,ARDATA,JSONFLG,JSONERR "RTN","SDECAR4",30,0) S JSONFLG=1,JSONERR="" "RTN","SDECAR4",31,0) D INIT "RTN","SDECAR4",32,0) S ARIEN=$G(ARIEN) "RTN","SDECAR4",33,0) I ARIEN="" D ERRLOG^SDESJSON(.APPT,3) "RTN","SDECAR4",34,0) S FNUM=$$FNUM^SDECAR "RTN","SDECAR4",35,0) I ARIEN'="",('$D(^SDEC(409.85,ARIEN))) S ARIEN="" D ERRLOG^SDESJSON(.APPT,4) "RTN","SDECAR4",36,0) I ARIEN D GETS^DIQ(FNUM,ARIEN,"**","IE","ARDATA","ARMSG") ;Get data for all field for this appt req "RTN","SDECAR4",37,0) I $D(ARDATA)>1 D BUILDREC "RTN","SDECAR4",38,0) D BUILDJSON "RTN","SDECAR4",39,0) Q "RTN","SDECAR4",40,0) ; "RTN","SDECAR4",41,0) ARGETPAT(RET,DFN) ;Appt Req GET. "RTN","SDECAR4",42,0) ; SDEC PATIENT APP REQ GET "RTN","SDECAR4",43,0) ; ARGETPAT^SDEC1 "RTN","SDECAR4",44,0) ; "RTN","SDECAR4",45,0) ; RPC Description: "RTN","SDECAR4",46,0) ; Get appointment request details. This is similar to SDEC ARGET but it "RTN","SDECAR4",47,0) ; only returns Appt request specific data. "RTN","SDECAR4",48,0) ; "RTN","SDECAR4",49,0) ; INPUT "RTN","SDECAR4",50,0) ; DFN : [R] Patient ID pointer to PATIENT File (#2) "RTN","SDECAR4",51,0) ; "RTN","SDECAR4",52,0) ; OUTPUT "RTN","SDECAR4",53,0) ; See RPC file "RTN","SDECAR4",54,0) N FILT,APPT,COUNT "RTN","SDECAR4",55,0) ; "RTN","SDECAR4",56,0) JSONEP ; "RTN","SDECAR4",57,0) D INIT "RTN","SDECAR4",58,0) D:'$G(JSONFLG) HDR "RTN","SDECAR4",59,0) I $$VALIDATE()=0 D:'$G(JSONFLG) EXIT Q "RTN","SDECAR4",60,0) D PROCESS "RTN","SDECAR4",61,0) D:'$G(JSONFLG) EXIT "RTN","SDECAR4",62,0) Q "RTN","SDECAR4",63,0) ; "RTN","SDECAR4",64,0) INIT ; Initalize any process specific variables "RTN","SDECAR4",65,0) S COUNT=0 "RTN","SDECAR4",66,0) I '$G(JSONFLG) S RET="^TMP(""SDECAR4"","_$J_")" K ^TMP("SDECAR4",$J) "RTN","SDECAR4",67,0) S FILT("SKIP STAT","C")="" ;Exclude closed requests "RTN","SDECAR4",68,0) S FILT("INDEX")="DFN^"_$G(DFN) "RTN","SDECAR4",69,0) Q "RTN","SDECAR4",70,0) ; "RTN","SDECAR4",71,0) VALIDATE() ;Validata input params "RTN","SDECAR4",72,0) N VALID,DFN,COUNT "RTN","SDECAR4",73,0) S VALID=1 ;Assume all is good "RTN","SDECAR4",74,0) ; "RTN","SDECAR4",75,0) S DFN=$P(FILT("INDEX"),"^",2) "RTN","SDECAR4",76,0) I +DFN<1 S VALID=0 D ERRLOG^SDESJSON(.APPT,1) "RTN","SDECAR4",77,0) I +DFN>0,'$D(^DPT(DFN,0)) S VALID=0 D ERRLOG^SDESJSON(.APPT,2) ;This is a valid DFN "RTN","SDECAR4",78,0) I 'VALID,'$G(JSONFLG) D ERR1^SDECERR(-1,"Invalid Patient ID.",.COUNT,.RET) "RTN","SDECAR4",79,0) ; "RTN","SDECAR4",80,0) Q VALID "RTN","SDECAR4",81,0) ; "RTN","SDECAR4",82,0) PROCESS ; Loop over primary index "RTN","SDECAR4",83,0) N ARIEN,FNUM,COUNT "RTN","SDECAR4",84,0) S FNUM=$$FNUM^SDECAR,COUNT=0 "RTN","SDECAR4",85,0) ; "RTN","SDECAR4",86,0) S ARIEN=0 "RTN","SDECAR4",87,0) F S ARIEN=$O(^SDEC(409.85,"B",+DFN,ARIEN)) Q:ARIEN'>0 D ONEPAT "RTN","SDECAR4",88,0) Q "RTN","SDECAR4",89,0) ; "RTN","SDECAR4",90,0) ONEPAT ; Process one patient "RTN","SDECAR4",91,0) N ARDATA,ARMSG "RTN","SDECAR4",92,0) I $$VALIDIEN()=0 Q ;Is this appt request one that we are looking for "RTN","SDECAR4",93,0) D GETS^DIQ(FNUM,ARIEN,"**","IE","ARDATA","ARMSG") ;Get data for all field for this appt req "RTN","SDECAR4",94,0) D:$D(ARDATA)>1 BUILDREC "RTN","SDECAR4",95,0) Q "RTN","SDECAR4",96,0) ; "RTN","SDECAR4",97,0) VALIDIEN() ;Validate the appointment request "RTN","SDECAR4",98,0) N VALID,ARSTAT "RTN","SDECAR4",99,0) S VALID=1 ;Assume this is a good record "RTN","SDECAR4",100,0) ; Is status for this request on the skip list "RTN","SDECAR4",101,0) I $D(FILT("SKIP STAT")) D "RTN","SDECAR4",102,0) .S ARSTAT=$$GET1^DIQ(409.85,ARIEN_",",23,"I") "RTN","SDECAR4",103,0) .I ARSTAT'="",$D(FILT("SKIP STAT",ARSTAT)) S VALID=0 "RTN","SDECAR4",104,0) I VALID,$$GET1^DIQ(409.85,ARIEN_",",.01,"I")="" S VALID=0 ;Missing DFN "RTN","SDECAR4",105,0) Q VALID "RTN","SDECAR4",106,0) ; "RTN","SDECAR4",107,0) BUILDREC ; Build an output record "RTN","SDECAR4",108,0) N ARSTAT,DFN,SDPS,SDCLY,ARORIGDT,SDI,STR,SDCL,CALLLETTER,I,X,VAR,SUBCNT,SDECLET,SDECALL "RTN","SDECAR4",109,0) N ARINST,ARINSTNM,ARTYPE,VAOSGUID,ARSTOP,ARSTOPN,ARCLIEN,ARCLNAME,APPTYPE,ARUSER,ARUSRNM "RTN","SDECAR4",110,0) N AREDT,ARPRIO,ARENPRI,ARREQBY,ARPROV,ARPROVNM,ARSDOA,ARSDOA,ARDAM,ARCLERK,ARCLERKN,ARASD,ARSDOA "RTN","SDECAR4",111,0) N ARCLERK,ARCLERKN,ARDAM,ARSVCCON,ARDAPTDT,ARCOMM,ARMAR,ARMAI,ARMAN,ARPC,ARDISPD,ARDISPU,ARDISPUN "RTN","SDECAR4",112,0) N APPTPTRS,CHILDREN,ARMRTC,SDPARENT,SDMTRC,CANCHANGEPID "RTN","SDECAR4",113,0) S ARORIGDT=ARDATA(FNUM,ARIEN_",",1,"I") "RTN","SDECAR4",114,0) S ARSTAT=ARDATA(FNUM,ARIEN_",",23,"I") "RTN","SDECAR4",115,0) S DFN=ARDATA(FNUM,ARIEN_",",.01,"I") "RTN","SDECAR4",116,0) S SDPS=ARDATA(FNUM,ARIEN_",",.02,"E") "RTN","SDECAR4",117,0) S SDCL=ARDATA(FNUM,ARIEN_",",8,"I") "RTN","SDECAR4",118,0) S ARINST=ARDATA(FNUM,ARIEN_",",2,"I") "RTN","SDECAR4",119,0) S ARINSTNM=ARDATA(FNUM,ARIEN_",",2,"E") "RTN","SDECAR4",120,0) S ARTYPE=ARDATA(FNUM,ARIEN_",",4,"I") "RTN","SDECAR4",121,0) S ARCLIEN=ARDATA(FNUM,ARIEN_",",8,"I") "RTN","SDECAR4",122,0) S ARSTOP=ARDATA(FNUM,ARIEN_",",8.5,"I") "RTN","SDECAR4",123,0) S ARSTOPN=ARDATA(FNUM,ARIEN_",",8.5,"E") "RTN","SDECAR4",124,0) S ARCLNAME=ARDATA(FNUM,ARIEN_",",8,"E") "RTN","SDECAR4",125,0) S APPTYPE=ARDATA(FNUM,ARIEN_",",8.7,"I") "RTN","SDECAR4",126,0) S ARUSER=ARDATA(FNUM,ARIEN_",",9,"I") "RTN","SDECAR4",127,0) S ARUSRNM=ARDATA(FNUM,ARIEN_",",9,"E") "RTN","SDECAR4",128,0) S AREDT=$G(ARDATA(FNUM,ARIEN_",",9.5,"E")) ;53 "RTN","SDECAR4",129,0) S ARPRIO=ARDATA(FNUM,ARIEN_",",10,"I") "RTN","SDECAR4",130,0) S ARENPRI=ARDATA(FNUM,ARIEN_",",10.5,"E") ;msc/sat "RTN","SDECAR4",131,0) S ARREQBY=ARDATA(FNUM,ARIEN_",",11,"I") "RTN","SDECAR4",132,0) S ARPROV=ARDATA(FNUM,ARIEN_",",12,"I") "RTN","SDECAR4",133,0) S ARPROVNM=ARDATA(FNUM,ARIEN_",",12,"E") "RTN","SDECAR4",134,0) S ARSDOA=ARDATA(FNUM,ARIEN_",",13,"I") ;scheduled date of appt "RTN","SDECAR4",135,0) ; Change date/time conversion so midnight is handled properly. wtc/pwc 694 1/7/2020 "RTN","SDECAR4",136,0) ; "RTN","SDECAR4",137,0) S ARSDOA=$$FMTONET^SDECDATE(ARSDOA,"N") ; "RTN","SDECAR4",138,0) S ARDAM=ARDATA(FNUM,ARIEN_",",13.1,"E") ;date appt. made "RTN","SDECAR4",139,0) S ARCLERK=ARDATA(FNUM,ARIEN_",",13.7,"I") ;appt clerk ien "RTN","SDECAR4",140,0) S ARCLERKN=ARDATA(FNUM,ARIEN_",",13.7,"E") ;appt clerk name "RTN","SDECAR4",141,0) S ARASD="" "RTN","SDECAR4",142,0) S:ARSDOA'="" $P(ARASD,"~~",1)=ARSDOA "RTN","SDECAR4",143,0) S:ARCLERK'="" $P(ARASD,"~~",12)=ARCLERK "RTN","SDECAR4",144,0) S:ARCLERKN'="" $P(ARASD,"~~",13)=ARCLERKN "RTN","SDECAR4",145,0) S:ARDAM'="" $P(ARASD,"~~",17)=ARDAM "RTN","SDECAR4",146,0) S ARSVCCON=ARDATA(FNUM,ARIEN_",",15,"E") "RTN","SDECAR4",147,0) S ARDAPTDT=ARDATA(FNUM,ARIEN_",",22,"I") "RTN","SDECAR4",148,0) S ARCOMM=ARDATA(FNUM,ARIEN_",",25,"I") "RTN","SDECAR4",149,0) S ARMAR=ARDATA(409.85,ARIEN_",",41,"E") "RTN","SDECAR4",150,0) S ARMAI=ARDATA(409.85,ARIEN_",",42,"E") "RTN","SDECAR4",151,0) S ARMAN=ARDATA(409.85,ARIEN_",",43,"E") "RTN","SDECAR4",152,0) S ARPC=$$WLPC^SDECAR1A(.ARDATA,ARIEN) "RTN","SDECAR4",153,0) S ARDISPD=ARDATA(FNUM,ARIEN_",",19,"E") "RTN","SDECAR4",154,0) S ARDISPU=ARDATA(FNUM,ARIEN_",",20,"I") "RTN","SDECAR4",155,0) S ARDISPUN=ARDATA(FNUM,ARIEN_",",20,"E") "RTN","SDECAR4",156,0) S APPTPTRS=$$GETAPPTS^SDECAR1A(ARIEN) "RTN","SDECAR4",157,0) S CHILDREN=$$CHILDREN^SDECAR1A(ARIEN) "RTN","SDECAR4",158,0) S ARMRTC=$$MRTC^SDECAR(ARIEN) "RTN","SDECAR4",159,0) S SDPARENT=ARDATA(FNUM,ARIEN_",",43.8,"I") "RTN","SDECAR4",160,0) S CANCHANGEPID=ARDATA(409.85,ARIEN_",",49,"I") "RTN","SDECAR4",161,0) ;Build string of RTC dates "RTN","SDECAR4",162,0) S (SDI,SDMTRC)="" "RTN","SDECAR4",163,0) F S SDI=$O(ARDATA(409.851,SDI)) Q:SDI="" S SDMTRC=$S(SDMTRC'="":SDMTRC_"|",1:"")_ARDATA(409.851,SDI,.01,"E") "RTN","SDECAR4",164,0) ; 1 2 3 4 5 6 "RTN","SDECAR4",165,0) S STR=DFN_U_ARIEN_U_ARORIGDT_U_ARINST_U_ARINSTNM_U_ARTYPE "RTN","SDECAR4",166,0) ; 7 8 9 10 11 12 13 "RTN","SDECAR4",167,0) S STR=STR_U_ARCLIEN_U_ARCLNAME_U_ARUSER_U_ARUSRNM_U_ARPRIO_U_ARREQBY_U_ARPROV "RTN","SDECAR4",168,0) ; 14 15 16 17 18 19 20 "RTN","SDECAR4",169,0) S STR=STR_U_ARPROVNM_U_ARDAPTDT_U_ARCOMM_U_ARENPRI_U_ARMAR_U_ARMAI_U_ARMAN "RTN","SDECAR4",170,0) ; 21 22 23 24 25 "RTN","SDECAR4",171,0) S STR=STR_U_ARPC_U_ARDISPD_U_ARDISPU_U_ARDISPUN_U_ARSVCCON "RTN","SDECAR4",172,0) ; 26 27 28 29 30 "RTN","SDECAR4",173,0) S STR=STR_U_AREDT_U_SDMTRC_U_ARSTOP_U_ARSTOPN_U_ARASD "RTN","SDECAR4",174,0) ; 31 32 33 34 35 36 "RTN","SDECAR4",175,0) S STR=STR_U_ARMRTC_U_APPTYPE_U_SDPS_U_APPTPTRS_U_CHILDREN_U_SDPARENT "RTN","SDECAR4",176,0) ;# OF CALLS MADE AND DATE LAST LETTER SENT "RTN","SDECAR4",177,0) S CALLLETTER=$$CALLET^SDECAR1A(DFN,ARIEN) "RTN","SDECAR4",178,0) S STR=STR_U_CALLLETTER "RTN","SDECAR4",179,0) ; "RTN","SDECAR4",180,0) S COUNT=$G(COUNT)+1 "RTN","SDECAR4",181,0) I '$G(JSONFLG) S ^TMP("SDECAR4",$J,COUNT)=STR_$C(30) Q "RTN","SDECAR4",182,0) ; "RTN","SDECAR4",183,0) S APPT("ApptReq",COUNT,"PatientIEN")=DFN "RTN","SDECAR4",184,0) S APPT("ApptReq",COUNT,"ApptReqIEN")=ARIEN "RTN","SDECAR4",185,0) S APPT("ApptReq",COUNT,"CreateDateI")=ARORIGDT "RTN","SDECAR4",186,0) S APPT("ApptReq",COUNT,"InstitutionI")=ARINST "RTN","SDECAR4",187,0) S APPT("ApptReq",COUNT,"InstitutionE")=ARINSTNM "RTN","SDECAR4",188,0) S APPT("ApptReq",COUNT,"RequestTypeI")=ARTYPE "RTN","SDECAR4",189,0) S APPT("ApptReq",COUNT,"ReqSpecificClinicI")=ARCLIEN "RTN","SDECAR4",190,0) S APPT("ApptReq",COUNT,"ReqSpecificClinicE")=ARCLNAME "RTN","SDECAR4",191,0) S APPT("ApptReq",COUNT,"OriginatingUserI")=ARUSER "RTN","SDECAR4",192,0) S APPT("ApptReq",COUNT,"OriginatingUserE")=ARUSRNM "RTN","SDECAR4",193,0) S APPT("ApptReq",COUNT,"PriorityI")=ARPRIO "RTN","SDECAR4",194,0) S APPT("ApptReq",COUNT,"RequestedByI")=ARREQBY "RTN","SDECAR4",195,0) S APPT("ApptReq",COUNT,"ProviderI")=ARPROV "RTN","SDECAR4",196,0) S APPT("ApptReq",COUNT,"ProviderE")=ARPROVNM "RTN","SDECAR4",197,0) S APPT("ApptReq",COUNT,"CidPreferredDateOfApptI")=ARDAPTDT "RTN","SDECAR4",198,0) S APPT("ApptReq",COUNT,"CommentsE")=ARCOMM "RTN","SDECAR4",199,0) S APPT("ApptReq",COUNT,"EnrollmentPriorityE")=ARENPRI "RTN","SDECAR4",200,0) S APPT("ApptReq",COUNT,"MultipleAppointmentRtcE")=ARMAR "RTN","SDECAR4",201,0) S APPT("ApptReq",COUNT,"MultApptRtcIntervalE")=ARMAI "RTN","SDECAR4",202,0) S APPT("ApptReq",COUNT,"MultApptNumberE")=ARMAN "RTN","SDECAR4",203,0) S SUBCNT=0 "RTN","SDECAR4",204,0) F I=1:1:$L(ARPC,"::") D "RTN","SDECAR4",205,0) .S VAR=$P(ARPC,"::",I) "RTN","SDECAR4",206,0) .Q:VAR="" "RTN","SDECAR4",207,0) .S SUBCNT=SUBCNT+1 "RTN","SDECAR4",208,0) .S APPT("ApptReq",COUNT,"PatientContact",SUBCNT,"DateEnteredI")=$P(VAR,"~~",1) "RTN","SDECAR4",209,0) .S APPT("ApptReq",COUNT,"PatientContact",SUBCNT,"EnteredByUserI")=$P(VAR,"~~",2) "RTN","SDECAR4",210,0) .S APPT("ApptReq",COUNT,"PatientContact",SUBCNT,"EnteredByUserE")=$P(VAR,"~~",3) "RTN","SDECAR4",211,0) .S APPT("ApptReq",COUNT,"PatientContact",SUBCNT,"ActionE")=$P(VAR,"~~",4) "RTN","SDECAR4",212,0) .S APPT("ApptReq",COUNT,"PatientContact",SUBCNT,"PatientPhoneE")=$P(VAR,"~~",5) "RTN","SDECAR4",213,0) .Q "RTN","SDECAR4",214,0) I '$D(APPT("ApptReq",COUNT,"PatientContact")) S APPT("ApptReq",COUNT,"PatientContact")="" "RTN","SDECAR4",215,0) ; "RTN","SDECAR4",216,0) S APPT("ApptReq",COUNT,"DateDispositionedE")=ARDISPD "RTN","SDECAR4",217,0) S APPT("ApptReq",COUNT,"DispositionedByI")=ARDISPU "RTN","SDECAR4",218,0) S APPT("ApptReq",COUNT,"DispositionedByE")=ARDISPUN "RTN","SDECAR4",219,0) S APPT("ApptReq",COUNT,"ServiceConnectedPriorityE")=ARSVCCON "RTN","SDECAR4",220,0) S APPT("ApptReq",COUNT,"DateTimeEnteredE")=AREDT "RTN","SDECAR4",221,0) S SUBCNT=0 "RTN","SDECAR4",222,0) F I=1:1:$L(SDMTRC,"|") D "RTN","SDECAR4",223,0) .S:$P(SDMTRC,"|",I)'="" APPT("ApptReq",COUNT,"MRTCCalcPrefDates",$I(SUBCNT),"Date")=$P(SDMTRC,"|",I) "RTN","SDECAR4",224,0) I '$D(APPT("ApptReq",COUNT,"MRTCCalcPrefDates")) S APPT("ApptReq",COUNT,"MRTCCalcPrefDates")="" "RTN","SDECAR4",225,0) ; "RTN","SDECAR4",226,0) S APPT("ApptReq",COUNT,"ReqServiceSpecialtyI")=ARSTOP "RTN","SDECAR4",227,0) S APPT("ApptReq",COUNT,"ReqServiceSpecialtyE")=ARSTOPN "RTN","SDECAR4",228,0) S APPT("ApptReq",COUNT,"ScheduledDateOfApptI")=ARSDOA "RTN","SDECAR4",229,0) S APPT("ApptReq",COUNT,"ApptClerkI")=ARCLERK "RTN","SDECAR4",230,0) S APPT("ApptReq",COUNT,"ApptClerkE")=ARCLERKN "RTN","SDECAR4",231,0) S APPT("ApptReq",COUNT,"DateApptMadeE")=ARDAM "RTN","SDECAR4",232,0) S APPT("ApptReq",COUNT,"CountOfRTCs")=ARMRTC ;Count of nodes in 43.3 sub file "RTN","SDECAR4",233,0) S APPT("ApptReq",COUNT,"ReqAppointmentTypeI")=APPTYPE "RTN","SDECAR4",234,0) S APPT("ApptReq",COUNT,"PatientStatusE")=SDPS "RTN","SDECAR4",235,0) S APPT("ApptReq",COUNT,"CanEditPid")=CANCHANGEPID "RTN","SDECAR4",236,0) S SUBCNT=0 "RTN","SDECAR4",237,0) F I=1:1:$L(APPTPTRS,"|") D "RTN","SDECAR4",238,0) .S VAR=$P(APPTPTRS,"|",I) "RTN","SDECAR4",239,0) .S:VAR'="" APPT("ApptReq",COUNT,"MultiAppointmentsI",$I(SUBCNT),"IEN")=VAR "RTN","SDECAR4",240,0) I '$D(APPT("ApptReq",COUNT,"MultiAppointmentsI")) S APPT("ApptReq",COUNT,"MultiAppointmentsI")="" "RTN","SDECAR4",241,0) ; "RTN","SDECAR4",242,0) S SUBCNT=0 "RTN","SDECAR4",243,0) F I=1:1:$L(CHILDREN,"|") D "RTN","SDECAR4",244,0) .S VAR=$P(CHILDREN,"|",I) "RTN","SDECAR4",245,0) .S:VAR'="" APPT("ApptReq",COUNT,"MultiApptRequestsChildI",$I(SUBCNT),"ARIEN")=VAR "RTN","SDECAR4",246,0) I '$D(APPT("ApptReq",COUNT,"MultiApptRequestsChildI")) S APPT("ApptReq",COUNT,"MultiApptRequestsChildI")="" "RTN","SDECAR4",247,0) ; "RTN","SDECAR4",248,0) S APPT("ApptReq",COUNT,"ParentRequestI")=SDPARENT "RTN","SDECAR4",249,0) S APPT("ApptReq",COUNT,"NumberOfCalls")=$P(CALLLETTER,"^",1) "RTN","SDECAR4",250,0) S APPT("ApptReq",COUNT,"DateOfLastLetterSent")=$P(CALLLETTER,"^",2) "RTN","SDECAR4",251,0) Q "RTN","SDECAR4",252,0) ; "RTN","SDECAR4",253,0) HDR ; "RTN","SDECAR4",254,0) N SDRTMP "RTN","SDECAR4",255,0) S SDRTMP="T00030DFN^I00010IEN^D00030ORIGDT" "RTN","SDECAR4",256,0) ; 4 5 6 7 8 "RTN","SDECAR4",257,0) S SDRTMP=SDRTMP_"^T00030INSTIEN^T00030INSTNAME^T00030TYPE^T00030CLINIEN^T00030CLINNAME" "RTN","SDECAR4",258,0) ; 9 10 11 12 13 14 "RTN","SDECAR4",259,0) S SDRTMP=SDRTMP_"^T00030USERIEN^T00030USERNAME^T00030PRIO^T00030REQBY^T00030PROVIEN^T00030PROVNAME" "RTN","SDECAR4",260,0) ; 15 16 17 "RTN","SDECAR4",261,0) S SDRTMP=SDRTMP_"^T00030DAPTDT^T00250COMM^T00030ENROLLMENT_PRIORITY" "RTN","SDECAR4",262,0) ; 18 19 20 "RTN","SDECAR4",263,0) S SDRTMP=SDRTMP_"^T00010MULTIPLE APPOINTMENT RTC^T00010MULT APPT RTC INTERVAL^T00010MULT APPT NUMBER" "RTN","SDECAR4",264,0) ; 21 22 23 24 25 "RTN","SDECAR4",265,0) S SDRTMP=SDRTMP_"^T00100PCONTACT^T00030ARDISPD^T00030ARDISPU^T00030ARDISPUN^T00030WLSVCCON" "RTN","SDECAR4",266,0) ; 26 27 28 29 30 "RTN","SDECAR4",267,0) S SDRTMP=SDRTMP_"^T00030DATE^T00030MTRCDATES^T00030STOPIEN^T00030STOPNAME^T00250APPT_SCHED_DATE" "RTN","SDECAR4",268,0) ; 31 32 33 34 35 36 "RTN","SDECAR4",269,0) S SDRTMP=SDRTMP_"^T00030MRTCCOUNT^T00030APPTYPE^T00030EESTAT^T00030APPTPTRS^T00250CHILDREN^T00030SDPARENT" "RTN","SDECAR4",270,0) S SDRTMP=SDRTMP_"^T00030CPHONE^T00030CLET" "RTN","SDECAR4",271,0) S @RET@(0)=SDRTMP_$C(30) "RTN","SDECAR4",272,0) Q "RTN","SDECAR4",273,0) ; "RTN","SDECAR4",274,0) BUILDJSON ;Convert to JSON "RTN","SDECAR4",275,0) S RET=$G(RET,"RET") "RTN","SDECAR4",276,0) D ENCODE^SDESJSON(.APPT,.RET,.JSONERR) "RTN","SDECAR4",277,0) K ^TMP("SDECAR4",$J) "RTN","SDECAR4",278,0) Q "RTN","SDECAR4",279,0) ; "RTN","SDECAR4",280,0) EXIT ; Any special logic needed for a successful completion "RTN","SDECAR4",281,0) N SDTMP,COUNT "RTN","SDECAR4",282,0) S COUNT=$O(^TMP("SDECAR4",$J,""),-1) "RTN","SDECAR4",283,0) I COUNT="" S ^TMP("SDECAR4",$J,1)=0,COUNT=1 ;No records to return "RTN","SDECAR4",284,0) S SDTMP=^TMP("SDECAR4",$J,COUNT) "RTN","SDECAR4",285,0) S SDTMP=$P(SDTMP,$C(30),1) "RTN","SDECAR4",286,0) S ^TMP("SDECAR4",$J,COUNT)=SDTMP_$C(30,31) "RTN","SDECAR4",287,0) Q "RTN","SDECCONSJSON") 0^39^B37663476^B29675665 "RTN","SDECCONSJSON",1,0) SDECCONSJSON ;ALB/LAB/ANU/MGD - VISTA SCHEDULING RPCS ;APR 12, 2021@14:39 "RTN","SDECCONSJSON",2,0) ;;5.3;Scheduling;**784,785,788,805**;Aug 13, 1993;Build 9 "RTN","SDECCONSJSON",3,0) ; "RTN","SDECCONSJSON",4,0) ; Documented API's and Integration Agreements "RTN","SDECCONSJSON",5,0) ; ------------------------------------------- "RTN","SDECCONSJSON",6,0) ;Reference to ^GMR(123 In ICR #4837 "RTN","SDECCONSJSON",7,0) ;Reference to ^GMR(123.5 In ICR #4557 "RTN","SDECCONSJSON",8,0) ;Reference to ^GMR(123 In ICR #6185 "RTN","SDECCONSJSON",9,0) ;Reference to ^ORD(100.01 In ICR #2638 "RTN","SDECCONSJSON",10,0) ;Reference to $$GETS^DIQ,$$GETS1^DIQ in ICR #2056 "RTN","SDECCONSJSON",11,0) Q "RTN","SDECCONSJSON",12,0) ; "RTN","SDECCONSJSON",13,0) JSONCONSLIST(SDCONJSON,DFN) ;Return a list of ACTIVE or PENDING CONSULTS for patient "RTN","SDECCONSJSON",14,0) ;INPUT - DFN (Date File Number) Pointer to PATIENT (#2) File. "RTN","SDECCONSJSON",15,0) ;RETURN PARMETER: "RTN","SDECCONSJSON",16,0) ; List of consults in ACTIVE or PENDING CPRS STATUS. Data is delimited by carat (^). "RTN","SDECCONSJSON",17,0) ; Field List: "RTN","SDECCONSJSON",18,0) ; (1) Internal IEN "RTN","SDECCONSJSON",19,0) ; (2) Request Type "RTN","SDECCONSJSON",20,0) ; (3) File Entry Date "RTN","SDECCONSJSON",21,0) ; (4) To Service/Specialty "RTN","SDECCONSJSON",22,0) ; (5) Clinic IEN "RTN","SDECCONSJSON",23,0) ; (6) Clinic Name "RTN","SDECCONSJSON",24,0) ; (7) Date of Request "RTN","SDECCONSJSON",25,0) ; (8) URGENCY name or Earliest date "RTN","SDECCONSJSON",26,0) ; (9) Provider IEN "RTN","SDECCONSJSON",27,0) ; (10) Provider Name "RTN","SDECCONSJSON",28,0) ; (11) Service Rendered as in or outpatient "RTN","SDECCONSJSON",29,0) ; (12) Associated Stop Code "RTN","SDECCONSJSON",30,0) ; (13) Prohibited Clinic Flag "RTN","SDECCONSJSON",31,0) ; (14) Clinic indicated Date "RTN","SDECCONSJSON",32,0) ; (15) # of Phone contacts "RTN","SDECCONSJSON",33,0) ; (16) Date of Last Letter "RTN","SDECCONSJSON",34,0) ; (17) Covid Priority "RTN","SDECCONSJSON",35,0) ; "RTN","SDECCONSJSON",36,0) N ACTIVE,PENDING,ERRPOP,ERRMSG,SDECI,SDTMP,SDCONSREC,ERR "RTN","SDECCONSJSON",37,0) S SDECI=$G(SDECI,0),ERR="" "RTN","SDECCONSJSON",38,0) D INIT "RTN","SDECCONSJSON",39,0) D VALIDATE "RTN","SDECCONSJSON",40,0) I ERRPOP D BLDJSON Q "RTN","SDECCONSJSON",41,0) D JSONSELCONS ;select "open" consults "RTN","SDECCONSJSON",42,0) Q "RTN","SDECCONSJSON",43,0) ; "RTN","SDECCONSJSON",44,0) INIT ; initialize values needed "RTN","SDECCONSJSON",45,0) S ACTIVE=$O(^ORD(100.01,"B","ACTIVE",0)) "RTN","SDECCONSJSON",46,0) S PENDING=$O(^ORD(100.01,"B","PENDING",0)) "RTN","SDECCONSJSON",47,0) S ERRPOP=0,SDECI=0,ERRMSG="" "RTN","SDECCONSJSON",48,0) Q "RTN","SDECCONSJSON",49,0) ; "RTN","SDECCONSJSON",50,0) VALIDATE ; validate incoming parameters "RTN","SDECCONSJSON",51,0) ;*Add validation of DFN "RTN","SDECCONSJSON",52,0) I '(+DFN) D "RTN","SDECCONSJSON",53,0) . ;create error message - DFN required "RTN","SDECCONSJSON",54,0) . D ERRLOG^SDESJSON(.SDCONSREC,1) "RTN","SDECCONSJSON",55,0) . S ERRPOP=1 "RTN","SDECCONSJSON",56,0) I $G(DFN)>0,'$D(^DPT(DFN,0)) D "RTN","SDECCONSJSON",57,0) . ;create error - Invalid DFN "RTN","SDECCONSJSON",58,0) . D ERRLOG^SDESJSON(.SDCONSREC,2) "RTN","SDECCONSJSON",59,0) . S ERRPOP=1 "RTN","SDECCONSJSON",60,0) Q "RTN","SDECCONSJSON",61,0) ; "RTN","SDECCONSJSON",62,0) JSONSELCONS ;selection all open consults - those consults in PENDING and ACTIVE status "RTN","SDECCONSJSON",63,0) N SDCONSID,CPRSSTAT,IFCSTAT,CPRSSTAT "RTN","SDECCONSJSON",64,0) S SDCONSID="" "RTN","SDECCONSJSON",65,0) F S SDCONSID=$O(^GMR(123,"F",DFN,SDCONSID)) Q:SDCONSID="" D "RTN","SDECCONSJSON",66,0) .S CPRSSTAT=$$GET1^DIQ(123,SDCONSID,8,"I") "RTN","SDECCONSJSON",67,0) .S IFCSTAT=$$GET1^DIQ(123,SDCONSID,.125,"I") "RTN","SDECCONSJSON",68,0) .I (IFCSTAT'="P")&((CPRSSTAT=ACTIVE)!(CPRSSTAT=PENDING)) D "RTN","SDECCONSJSON",69,0) ..D BLDCONSULTREC "RTN","SDECCONSJSON",70,0) I '$D(SDCONSREC("Consult")) S SDCONSREC("Consult")="" "RTN","SDECCONSJSON",71,0) D BLDJSON "RTN","SDECCONSJSON",72,0) K SDCONSARR "RTN","SDECCONSJSON",73,0) Q "RTN","SDECCONSJSON",74,0) ; "RTN","SDECCONSJSON",75,0) BLDCONSULTREC ;Build a consult record for every consult "RTN","SDECCONSJSON",76,0) N SDCLIEN,SDCLNAME,SDCONLET,SDSTOP,STOP,SIEN,SDTOSVCI,SDCONSARR,SDARRERR,CANCHANGEPID,PID "RTN","SDECCONSJSON",77,0) D GETS^DIQ(123,SDCONSID,".01;.05;1;2;3;5;10;13;14;17","IE","SDCONSARR","SDARRERR") "RTN","SDECCONSJSON",78,0) S SDECI=SDECI+1 "RTN","SDECCONSJSON",79,0) S SDCONSREC("Consult",SDECI,"ConsultIEN")=SDCONSID "RTN","SDECCONSJSON",80,0) S SDCONSREC("Consult",SDECI,"RequestType")=$G(SDCONSARR(123,SDCONSID_",",13,"E")) "RTN","SDECCONSJSON",81,0) S SDCONSREC("Consult",SDECI,"FileEntryDate")=$G(SDCONSARR(123,SDCONSID_",",.01,"I")) "RTN","SDECCONSJSON",82,0) S SDCONSREC("Consult",SDECI,"ToService")=$G(SDCONSARR(123,SDCONSID_",",1,"E")) "RTN","SDECCONSJSON",83,0) ;Need explanation of why for clinic ien and name "RTN","SDECCONSJSON",84,0) S SDCLIEN=$G(SDCONSARR(123,SDCONSID_",",2,"I")) S:SDCLIEN="" SDCLIEN=$G(SDCONSARR(123,SDCONSID_",",.05,"I")) "RTN","SDECCONSJSON",85,0) S SDCLNAME=$G(SDCONSARR(123,SDCONSID_",",2,"E")) S:SDCLNAME="" SDCLNAME=$G(SDCONSARR(123,SDCONSID_",",.05)) "RTN","SDECCONSJSON",86,0) S SDCONSREC("Consult",SDECI,"ClinicIEN")=SDCLIEN "RTN","SDECCONSJSON",87,0) S SDCONSREC("Consult",SDECI,"ClinicName")=SDCLNAME "RTN","SDECCONSJSON",88,0) S SDCONSREC("Consult",SDECI,"DateOfRequest")=$G(SDCONSARR(123,SDCONSID_",",3,"I")) "RTN","SDECCONSJSON",89,0) S SDCONSREC("Consult",SDECI,"UrgencyOrEarliestDate")=$$PRIO^SDEC51A(SDCONSID) "RTN","SDECCONSJSON",90,0) S SDCONSREC("Consult",SDECI,"ProviderIEN")=$G(SDCONSARR(123,SDCONSID_",",10,"I")) "RTN","SDECCONSJSON",91,0) S SDCONSREC("Consult",SDECI,"ProviderName")=$G(SDCONSARR(123,SDCONSID_",",10,"E")) "RTN","SDECCONSJSON",92,0) S SDCONSREC("Consult",SDECI,"ServiceRenderedAs")=$G(SDCONSARR(123,SDCONSID_",",14,"E")) "RTN","SDECCONSJSON",93,0) S SDCONSREC("Consult",SDECI,"ProhibitedClinicFlag")=$S($$GET1^DIQ(44,+SDCLIEN_",",2500,"I")="Y":1,1:0) "RTN","SDECCONSJSON",94,0) I $D(^SDEC(409.87,"B",SDCONSID)) D "RTN","SDECCONSJSON",95,0) .S PID=$$GETPID(SDCONSID) "RTN","SDECCONSJSON",96,0) .S SDCONSREC("Consult",SDECI,"ClinicIndicatedDate")=PID "RTN","SDECCONSJSON",97,0) I '$D(^SDEC(409.87,"B",SDCONSID)) D "RTN","SDECCONSJSON",98,0) .S SDCONSREC("Consult",SDECI,"ClinicIndicatedDate")=$G(SDCONSARR(123,SDCONSID_",",17,"I")) "RTN","SDECCONSJSON",99,0) S SDCONLET=$$CALLCON^SDECAR1A(DFN,SDCONSID) ; # OF CALLS MADE^DATE LAST LETTER SENT "RTN","SDECCONSJSON",100,0) K SDECALL,SDECLET ; Returned from call to $$CALLCON^SDECAR1A "RTN","SDECCONSJSON",101,0) S SDCONSREC("Consult",SDECI,"NumberOfPhoneContact")=$P(SDCONLET,U,1) "RTN","SDECCONSJSON",102,0) S SDCONSREC("Consult",SDECI,"DateOfLastLetter")=$P(SDCONLET,U,2) "RTN","SDECCONSJSON",103,0) S SDCONSREC("Consult",SDECI,"CovidPriority")=$$PRIORITY^SDEC51(SDCONSID) ; Get Covid priority "RTN","SDECCONSJSON",104,0) S CANCHANGEPID=$$CONSCANCELCHECK(SDCONSID,DFN) "RTN","SDECCONSJSON",105,0) S SDCONSREC("Consult",SDECI,"CanEditPid")=CANCHANGEPID "RTN","SDECCONSJSON",106,0) ;build stop code list "RTN","SDECCONSJSON",107,0) S SDSTOP="",STOP="" "RTN","SDECCONSJSON",108,0) S SDTOSVCI=$G(SDCONSARR(123,SDCONSID_",",1,"I")) "RTN","SDECCONSJSON",109,0) I +SDTOSVCI D "RTN","SDECCONSJSON",110,0) .S SIEN=0 F S SIEN=$O(^GMR(123.5,SDTOSVCI,688,SIEN)) Q:'+SIEN D "RTN","SDECCONSJSON",111,0) ..S STOP=$$GET1^DIQ(123.5688,SIEN_","_SDTOSVCI_",",.01,"I") ;ICR 4557 "RTN","SDECCONSJSON",112,0) ..I SDSTOP="" S SDSTOP=STOP "RTN","SDECCONSJSON",113,0) ..E S SDSTOP=SDSTOP_"|"_STOP "RTN","SDECCONSJSON",114,0) S SDCONSREC("Consult",SDECI,"AssociateStopCode")=SDSTOP "RTN","SDECCONSJSON",115,0) Q "RTN","SDECCONSJSON",116,0) ; "RTN","SDECCONSJSON",117,0) GETPID(SDCONSID) ; "RTN","SDECCONSJSON",118,0) N CHIEN,CHSIEN,OLDESTPID "RTN","SDECCONSJSON",119,0) S CHIEN=$O(^SDEC(409.87,"B",SDCONSID,0)) "RTN","SDECCONSJSON",120,0) S CHSIEN=$O(^SDEC(409.87,CHIEN,1,9999999),-1) "RTN","SDECCONSJSON",121,0) S OLDESTPID=$$GET1^DIQ(409.871,CHSIEN_","_CHIEN_",",1,"I") "RTN","SDECCONSJSON",122,0) Q OLDESTPID "RTN","SDECCONSJSON",123,0) CONSCANCELCHECK(SDCONSID,DFN) ;looking for most recent appt linked to this consult and checking if cancelled by patient or clinic "RTN","SDECCONSJSON",124,0) N FOUND,APPTIEN,CANCHANGE "RTN","SDECCONSJSON",125,0) S APPTIEN="",FOUND=0,CANCHANGE=0 "RTN","SDECCONSJSON",126,0) F S APPTIEN=$O(^SDEC(409.84,"CPAT",DFN,APPTIEN),-1) Q:'APPTIEN!(FOUND=1) D "RTN","SDECCONSJSON",127,0) .I $P($$GET1^DIQ(409.84,APPTIEN,.22,"I"),";")=SDCONSID S FOUND=1 D "RTN","SDECCONSJSON",128,0) ..I $$GET1^DIQ(409.84,APPTIEN,.17,"I")="PC" S CANCHANGE=1 "RTN","SDECCONSJSON",129,0) Q CANCHANGE "RTN","SDECCONSJSON",130,0) BLDJSON ; "RTN","SDECCONSJSON",131,0) D ENCODE^SDESJSON(.SDCONSREC,.SDCONJSON,.ERR) "RTN","SDECCONSJSON",132,0) K SDCONSREC "RTN","SDECCONSJSON",133,0) Q "RTN","SDECCONSJSON",134,0) ; "RTN","SDECCONSJSON",135,0) JSONCONSLIST1(SDCONJSON,SDCONSID) ;Return a single ACTIVE or PENDING CONSULT for a patient "RTN","SDECCONSJSON",136,0) ;INPUT - SDCONSID (Consult ID) IEN to REQUEST/CONSULTATION (#123) File. "RTN","SDECCONSJSON",137,0) ;RETURN PARMETER: "RTN","SDECCONSJSON",138,0) ; List of consults in ACTIVE or PENDING CPRS STATUS. Data is delimited by carat (^). "RTN","SDECCONSJSON",139,0) ; Field List: "RTN","SDECCONSJSON",140,0) ; (1) Internal IEN "RTN","SDECCONSJSON",141,0) ; (2) Request Type "RTN","SDECCONSJSON",142,0) ; (3) File Entry Date "RTN","SDECCONSJSON",143,0) ; (4) To Service/Specialty "RTN","SDECCONSJSON",144,0) ; (5) Clinic IEN "RTN","SDECCONSJSON",145,0) ; (6) Clinic Name "RTN","SDECCONSJSON",146,0) ; (7) Date of Request "RTN","SDECCONSJSON",147,0) ; (8) URGENCY name or Earliest date "RTN","SDECCONSJSON",148,0) ; (9) Provider IEN "RTN","SDECCONSJSON",149,0) ; (10) Provider Name "RTN","SDECCONSJSON",150,0) ; (11) Service Rendered as in or outpatient "RTN","SDECCONSJSON",151,0) ; (12) Associated Stop Code "RTN","SDECCONSJSON",152,0) ; (13) Prohibited Clinic Flag "RTN","SDECCONSJSON",153,0) ; (14) Clinic indicated Date "RTN","SDECCONSJSON",154,0) ; (15) # of Phone contacts "RTN","SDECCONSJSON",155,0) ; (16) Date of Last Letter "RTN","SDECCONSJSON",156,0) ; (17) Covid Priority "RTN","SDECCONSJSON",157,0) ; "RTN","SDECCONSJSON",158,0) N ACTIVE,PENDING,ERRPOP,ERRMSG,SDECI,SDTMP,SDCONSREC,DFN,ERR "RTN","SDECCONSJSON",159,0) S SDECI=$G(SDECI,0),ERR="" "RTN","SDECCONSJSON",160,0) D INIT "RTN","SDECCONSJSON",161,0) D VALIDATE1 "RTN","SDECCONSJSON",162,0) I ERRPOP D BLDJSON Q "RTN","SDECCONSJSON",163,0) S DFN=$$GET1^DIQ(123,SDCONSID,.02,"I") "RTN","SDECCONSJSON",164,0) D BLDCONSULTREC "RTN","SDECCONSJSON",165,0) D BLDJSON "RTN","SDECCONSJSON",166,0) K SDCONSARR "RTN","SDECCONSJSON",167,0) Q "RTN","SDECCONSJSON",168,0) ; "RTN","SDECCONSJSON",169,0) VALIDATE1 ; "RTN","SDECCONSJSON",170,0) ; *Add validation of IEN "RTN","SDECCONSJSON",171,0) I '(+SDCONSID) D "RTN","SDECCONSJSON",172,0) . ; create error message - Consultation ID is required "RTN","SDECCONSJSON",173,0) . D ERRLOG^SDESJSON(.SDCONSREC,5) "RTN","SDECCONSJSON",174,0) . S ERRPOP=1 "RTN","SDECCONSJSON",175,0) I $G(SDCONSID)>0,'$D(^GMR(123,SDCONSID,0)) D "RTN","SDECCONSJSON",176,0) . ; create error - Invalid Consult ID "RTN","SDECCONSJSON",177,0) . D ERRLOG^SDESJSON(.SDCONSREC,6) "RTN","SDECCONSJSON",178,0) . S ERRPOP=1 "RTN","SDECCONSJSON",179,0) Q "RTN","SDECDATE") 0^31^B9653243^B3036435 "RTN","SDECDATE",1,0) SDECDATE ; ALB/WTC,TAW - VISTA SCHEDULING - Date Utilities ;JAN 13,2022 "RTN","SDECDATE",2,0) ;;5.3;Scheduling;**694,805**;;Build 9 "RTN","SDECDATE",3,0) ;;Per VHA Directive 2004-038, this routine should not be modified "RTN","SDECDATE",4,0) ; "RTN","SDECDATE",5,0) Q ; "RTN","SDECDATE",6,0) ; "RTN","SDECDATE",7,0) FMTONET(IN,SPACE) ; "RTN","SDECDATE",8,0) ; "RTN","SDECDATE",9,0) ; Convert FileMan format date/time to .NET compatible date "RTN","SDECDATE",10,0) ; "RTN","SDECDATE",11,0) ; IN = FileMan format date "RTN","SDECDATE",12,0) ; SPACE = Y if @ should be converted to a space "RTN","SDECDATE",13,0) ; "RTN","SDECDATE",14,0) N OUT,X,Y,X1 ; "RTN","SDECDATE",15,0) ; "RTN","SDECDATE",16,0) ; If time is midnight, increment date by one and change time to "0000" "RTN","SDECDATE",17,0) ; "RTN","SDECDATE",18,0) I $P(IN,".",2)="24" D G RETURN ; "RTN","SDECDATE",19,0) . S X=$P(IN,".",1),X1=$$FMADD^DILIBF(X,1,0,0,1),X1=$P(X1,".",1) ; "RTN","SDECDATE",20,0) . S OUT=$$FMTE^DILIBF(X1)_"@00:00" ; "RTN","SDECDATE",21,0) ; "RTN","SDECDATE",22,0) ; Other than midnight. "RTN","SDECDATE",23,0) ; "RTN","SDECDATE",24,0) S OUT=$$FMTE^DILIBF(IN) ; "RTN","SDECDATE",25,0) ; "RTN","SDECDATE",26,0) I $G(SPACE)="Y" S OUT=$TR(OUT,"@"," ") ; "RTN","SDECDATE",27,0) ; "RTN","SDECDATE",28,0) RETURN ; "RTN","SDECDATE",29,0) Q OUT ; "RTN","SDECDATE",30,0) ; "RTN","SDECDATE",31,0) NETTOFM(IN,TIME,SECONDS) ; "RTN","SDECDATE",32,0) ; "RTN","SDECDATE",33,0) ; Convert .NET date/time to FileMan format. "RTN","SDECDATE",34,0) ; "RTN","SDECDATE",35,0) ; IN = date/time in external format "RTN","SDECDATE",36,0) ; TIME = time required (Y/N default=Y) "RTN","SDECDATE",37,0) ; SECONDS = seconds permitted (Y/N default=Y) "RTN","SDECDATE",38,0) ; "RTN","SDECDATE",39,0) N OUT,X,Y,X1,TM ; "RTN","SDECDATE",40,0) ; "RTN","SDECDATE",41,0) ; If time is midnight, decrement date by one and change time to 24. "RTN","SDECDATE",42,0) ; "RTN","SDECDATE",43,0) S TM=$P(IN,"@",2) ; May need to add additional checks for correct time depending on how .NET returns date/time. "RTN","SDECDATE",44,0) ; "RTN","SDECDATE",45,0) S %DT="" ; "RTN","SDECDATE",46,0) I $G(TIME)'="N" S %DT=%DT_"R" ; "RTN","SDECDATE",47,0) I $G(TIME)'="N",$G(SECONDS)'="N" S %DT=%DT_"S" ; "RTN","SDECDATE",48,0) ; "RTN","SDECDATE",49,0) I TM="00:00"!(TM="0000") D G RETURN ; "RTN","SDECDATE",50,0) . S X=$P(IN,"@",1),%DT="" D ^%DT S X=$$FMADD^DILIBF(Y,-1,0,0,1),X1=$P(X,".",1) ; "RTN","SDECDATE",51,0) . S OUT=X1_".24" ; "RTN","SDECDATE",52,0) ; "RTN","SDECDATE",53,0) ; Other than midnight "RTN","SDECDATE",54,0) ; "RTN","SDECDATE",55,0) S X=IN D ^%DT S OUT=Y G RETURN "RTN","SDECDATE",56,0) ; "RTN","SDECDATE",57,0) VALIDFMFORMAT(DATE) ;Is DATE a valind FileMan format "RTN","SDECDATE",58,0) ;Return 1=Yes "RTN","SDECDATE",59,0) ; 0=No "RTN","SDECDATE",60,0) N X,Y,%DT "RTN","SDECDATE",61,0) S %DT="T" "RTN","SDECDATE",62,0) I $G(DATE)="" Q 0 "RTN","SDECDATE",63,0) I $$FR^XLFDT(DATE) Q 0 "RTN","SDECDATE",64,0) S X=DATE D ^%DT "RTN","SDECDATE",65,0) I Y=-1 Q 0 "RTN","SDECDATE",66,0) Q 1 "RTN","SDECDATE",67,0) ; "RTN","SDECDATE",68,0) VALIDISO(DATE) ;Is DATE a valid ISO8601 format (e.g., 2022-01-12T13:21) "RTN","SDECDATE",69,0) ; Return "RTN","SDECDATE",70,0) ; 0 = not ISO8601 format "RTN","SDECDATE",71,0) ; 1 = ISO8601 format "RTN","SDECDATE",72,0) N RESULT,SDDATE,SDTIME,SDOFFSET "RTN","SDECDATE",73,0) S (RESULT)=0 "RTN","SDECDATE",74,0) I $G(DATE)="" Q 0 "RTN","SDECDATE",75,0) S SDDATE=$P(DATE,"T") "RTN","SDECDATE",76,0) I SDDATE D "RTN","SDECDATE",77,0) .;Validate date "RTN","SDECDATE",78,0) .; YYYYMMDD, YYYY-MM-DD or YYYY-MM "RTN","SDECDATE",79,0) .I SDDATE?6N Q ;YYYY-MM is not allowed "RTN","SDECDATE",80,0) .S SDDATE=$TR(SDDATE,"-") "RTN","SDECDATE",81,0) .I SDDATE?8N!(SDDATE?6N) S RESULT=1 "RTN","SDECDATE",82,0) ; "RTN","SDECDATE",83,0) S SDTIME=$P(DATE,"T",2) "RTN","SDECDATE",84,0) I RESULT,SDTIME'="" D "RTN","SDECDATE",85,0) .;Validate time (ignore seconds) "RTN","SDECDATE",86,0) .; THH "RTN","SDECDATE",87,0) .; THHMM or THH:MM "RTN","SDECDATE",88,0) .; THHMMSS or THH:MM:SS "RTN","SDECDATE",89,0) .S SDTIME=$$REMOVEOFFSET^SDAMUTDT(SDTIME) "RTN","SDECDATE",90,0) .S SDTIME=$P(SDTIME,".") ;Ignore seconds "RTN","SDECDATE",91,0) .S SDTIME=$TR(SDTIME,":") "RTN","SDECDATE",92,0) .I SDTIME'?6N,SDTIME'?4N,SDTIME'?2N S RESULT=0 Q "RTN","SDECDATE",93,0) .;Validate offset "RTN","SDECDATE",94,0) .; Z "RTN","SDECDATE",95,0) .; + or - followed by HH "RTN","SDECDATE",96,0) .; + or - followed by HHMM or HH:MM "RTN","SDECDATE",97,0) .I $E(DATE,$L(DATE))="Z" S RESULT=1 Q "RTN","SDECDATE",98,0) .S SDOFFSET=$P(SDTIME,"+",2) "RTN","SDECDATE",99,0) .I SDOFFSET'="" D Q "RTN","SDECDATE",100,0) ..I SDOFFSET'?2N,SDOFFSET'?4N S RESULT=0 "RTN","SDECDATE",101,0) .S SDOFFSET=$P(SDTIME,"-",2) "RTN","SDECDATE",102,0) .I SDOFFSET'="" D Q "RTN","SDECDATE",103,0) ..I SDOFFSET'?2N,SDOFFSET'?4N S RESULT=0 "RTN","SDECDATE",104,0) Q RESULT "RTN","SDECDUZ") 0^26^B1197507^B1197507 "RTN","SDECDUZ",1,0) SDECDUZ ;ALB/TAW - Return DUZ data ;Jan 7, 2022 "RTN","SDECDUZ",2,0) ;;5.3;Scheduling;**803,804,805**;Aug 13, 1993;Build 9 "RTN","SDECDUZ",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDECDUZ",4,0) ; "RTN","SDECDUZ",5,0) ; ICR "RTN","SDECDUZ",6,0) ; Reference to ^DIC(4, in #2251 "RTN","SDECDUZ",7,0) ; Reference to ^XTV(8989.3,1,XUS in #1518 "RTN","SDECDUZ",8,0) Q "RTN","SDECDUZ",9,0) DUZSTATIONID(RETURN) ; "RTN","SDECDUZ",10,0) N STATIONID,DATA "RTN","SDECDUZ",11,0) ;#804 change from DUZ(2) to station ID for the default institution "RTN","SDECDUZ",12,0) S STATIONID=$$DEFAULTSTATION() "RTN","SDECDUZ",13,0) I STATIONID'="" S DATA("Station_ID")=STATIONID "RTN","SDECDUZ",14,0) E S DATA("Error",1)="Default Institution not defined" "RTN","SDECDUZ",15,0) D ENCODE^SDESJSON(.DATA,.RETURN) "RTN","SDECDUZ",16,0) Q "RTN","SDECDUZ",17,0) DEFAULTSTATION() ; "RTN","SDECDUZ",18,0) N INST,STATION "RTN","SDECDUZ",19,0) S STATION="" "RTN","SDECDUZ",20,0) S INST=$$GET1^DIQ(8989.3,1,217,"I") ;default inst "RTN","SDECDUZ",21,0) I INST'="" S STATION=$$GET1^DIQ(4,INST,99,"I") ;station num "RTN","SDECDUZ",22,0) Q STATION "RTN","SDECRECREQ") 0^40^B10883727^B8670325 "RTN","SDECRECREQ",1,0) SDECRECREQ ;ALB/SAT/JSM,WTC,LAB,LEG - VISTA SCHEDULING RPCS (SOURCE FROM SDEC08) ;Jul 23, 2021@09:30 "RTN","SDECRECREQ",2,0) ;;5.3;Scheduling;**790,792,805**;Aug 13, 1993;Build 9 "RTN","SDECRECREQ",3,0) ;;Per VHA Directive 2004-038, this routine should not be modified "RTN","SDECRECREQ",4,0) ; "RTN","SDECRECREQ",5,0) ; Reference to ^DPT (Patient File) is supported by IA #7030 "RTN","SDECRECREQ",6,0) Q "RTN","SDECRECREQ",7,0) ; "RTN","SDECRECREQ",8,0) RECREQ(SDECY,SDECAPTID,SDAPTYP,NEWPID,SDECTYP) ;for Recall Requests "RTN","SDECRECREQ",9,0) ; VSE-863; 6/6/2021 ; create new "APPT" Request if A "RECALL" Appt is Cancelled "RTN","SDECRECREQ",10,0) ;I $P(SDAPTYP,";",2)="SD(403.5," D ; RECALL "RTN","SDECRECREQ",11,0) N PTR,SD40350PRV,SD40350REC,SD40354PRV,SD4035IEN,SD409840REC,SD409842REC,SDCLN,SDCLNR,SDPROVNAM,IEN40985,SD409841COM "RTN","SDECRECREQ",12,0) N CANCHANGEPID,PIDH "RTN","SDECRECREQ",13,0) S SD409840REC=^SDEC(409.84,SDECAPTID,0) ; APPT "RTN","SDECRECREQ",14,0) ; Only re-open Appt Request for approved Cancellation Reasons VSE-1112 "RTN","SDECRECREQ",15,0) Q:("^3^9^10^12^"[(U_$P(SD409840REC,U,22)_U)) "RTN","SDECRECREQ",16,0) S SD409842REC=$G(^SDEC(409.84,SDECAPTID,2)) ; REQ record "RTN","SDECRECREQ",17,0) ; start COMMENTS multiple process ;VSE-1218;**792 "RTN","SDECRECREQ",18,0) S SD409841COM=$G(^SDEC(409.84,SDECAPTID,1,1,0)) "RTN","SDECRECREQ",19,0) N I,L,ZZ "RTN","SDECRECREQ",20,0) S L=$L(SD409841COM,$C(13,10)) "RTN","SDECRECREQ",21,0) I L>1 F I=1:1:L S $P(ZZ," | ",I)=$P(SD409841COM,$C(13,10),I) I I=L S:$L(ZZ)>80 ZZ=$E(ZZ,1,77)_"..." S SD409841COM=ZZ "RTN","SDECRECREQ",22,0) ; end COMMENTS multiple process "RTN","SDECRECREQ",23,0) S PTR=$P(SD409842REC,";",1) "RTN","SDECRECREQ",24,0) S SDCLNR=$P(SD409840REC,U,7) "RTN","SDECRECREQ",25,0) S SDCLN=$$GET1^DIQ(409.831,SDCLNR,.04,"I") "RTN","SDECRECREQ",26,0) S SDECFDA(409.85,"+1,",.01)=$P(SD409840REC,U,5) ; DFN "RTN","SDECRECREQ",27,0) S SDECFDA(409.85,"+1,",1)=$P($$NOW^XLFDT,".",1) "RTN","SDECRECREQ",28,0) S SDECFDA(409.85,"+1,",2)=$$GET1^DIQ(44,SDCLN,3,"I") ;INSTIT "RTN","SDECRECREQ",29,0) S SDECFDA(409.85,"+1,",4)="APPT" "RTN","SDECRECREQ",30,0) S SDECFDA(409.85,"+1,",8.7)=$P(SD409840REC,U,6) ; REQ APPT TIME "RTN","SDECRECREQ",31,0) S SDECFDA(409.85,"+1,",.02)=$P(SD409842REC,U,2) ; PAT STATUS "RTN","SDECRECREQ",32,0) S SDECFDA(409.85,"+1,",8)=SDCLN ; REQ SPECIFIC CLINIC "RTN","SDECRECREQ",33,0) S SDECFDA(409.85,"+1,",9)=DUZ ; ORIG USER "RTN","SDECRECREQ",34,0) S SDECFDA(409.85,"+1,",10)="F" ; PRIORITY "RTN","SDECRECREQ",35,0) S SDECFDA(409.85,"+1,",11)=1 ; REQ BY "RTN","SDECRECREQ",36,0) S SDECFDA(409.85,"+1,",12)=$P(SD409840REC,"^",16) ; PROV "RTN","SDECRECREQ",37,0) I $G(NEWPID)="" D "RTN","SDECRECREQ",38,0) .S SDECFDA(409.85,"+1,",22)=$P(SD409840REC,U,20) ; PID "RTN","SDECRECREQ",39,0) I $G(NEWPID)'="" D "RTN","SDECRECREQ",40,0) .S SDECFDA(409.85,"+1,",22)=NEWPID "RTN","SDECRECREQ",41,0) S SDECFDA(409.85,"+1,",23)="O" ; STATUS "RTN","SDECRECREQ",42,0) S SDECFDA(409.85,"+1,",25)=SD409841COM ;VSE-1218;**792 "RTN","SDECRECREQ",43,0) ;**790 corrected REQUEST ptr and added Contact Attempts "RTN","SDECRECREQ",44,0) S CANCHANGEPID=$S($G(SDECTYP)="PC":1,$G(SDECTYP)="C":0,1:"") "RTN","SDECRECREQ",45,0) S SDECFDA(409.85,"+1,",49)=CANCHANGEPID "RTN","SDECRECREQ",46,0) D UPDATE^DIE("","SDECFDA","IEN40985") "RTN","SDECRECREQ",47,0) ;I $G(NEWPID)'="" D "RTN","SDECRECREQ",48,0) I $G(NEWPID)="" S PIDH=$P(SD409840REC,U,20) "RTN","SDECRECREQ",49,0) I $G(NEWPID)'="" S PIDH=$G(NEWPID) "RTN","SDECRECREQ",50,0) S FDA(409.854,"+1,"_IEN40985(1)_",",.01)=$$NOW^XLFDT "RTN","SDECRECREQ",51,0) S FDA(409.854,"+1,"_IEN40985(1)_",",1)=$G(PIDH) "RTN","SDECRECREQ",52,0) S FDA(409.854,"+1,"_IEN40985(1)_",",2)=$$GET1^DIQ(200,DUZ,.01,"E") "RTN","SDECRECREQ",53,0) D UPDATE^DIE(,"FDA","PIDHIEN","ERR") K FDA "RTN","SDECRECREQ",54,0) S IEN40985=IEN40985(1) "RTN","SDECRECREQ",55,0) N REQLINK,DFN40985 "RTN","SDECRECREQ",56,0) D APPREQLINK "RTN","SDECRECREQ",57,0) D CONTACTLINK "RTN","SDECRECREQ",58,0) Q "RTN","SDECRECREQ",59,0) APPREQLINK ; Associate new APPT Req vs. old RECALL Req "RTN","SDECRECREQ",60,0) S DFN40985=$P(SD409840REC,U,5) "RTN","SDECRECREQ",61,0) S REQLINK=IEN40985_";SDEC(409.85," "RTN","SDECRECREQ",62,0) S $P(^SDEC(409.84,SDECAPTID,2),"^",1)=REQLINK "RTN","SDECRECREQ",63,0) Q "RTN","SDECRECREQ",64,0) CONTACTLINK ; update contact attempts "RTN","SDECRECREQ",65,0) N IEN40986,REC409860,REC "RTN","SDECRECREQ",66,0) S IEN40986="",REC=0 "RTN","SDECRECREQ",67,0) F S IEN40986=$O(^SDEC(409.86,"B",DFN40985,IEN40986)) Q:IEN40986=""!(REC=1) D "RTN","SDECRECREQ",68,0) .S REC409860=$G(^SDEC(409.86,IEN40986,0)) "RTN","SDECRECREQ",69,0) .I PTR'=+$P(REC409860,"^",7) Q ; SDEC Req "RTN","SDECRECREQ",70,0) .K SDECFDA "RTN","SDECRECREQ",71,0) .S SDECFDA(409.86,IEN40986_",",2.1)="A" "RTN","SDECRECREQ",72,0) .S SDECFDA(409.86,IEN40986_",",2.2)=$P(^SDEC(409.86,IEN40986,1,0),"^",3)+1 ;**792 ;Main Sequence "RTN","SDECRECREQ",73,0) .S SDECFDA(409.86,IEN40986_",",2.3)=REQLINK "RTN","SDECRECREQ",74,0) .D UPDATE^DIE("","SDECFDA") "RTN","SDECRECREQ",75,0) .S REC=1 "RTN","SDECRECREQ",76,0) Q "RTN","SDECVVS") 0^28^B53522578^B44383755 "RTN","SDECVVS",1,0) SDECVVS ;ALB/RJT,TAW SDEC AND VIDEO VISIT SERVICE (VVS) INTEGRATION ;Jan 7, 2022 "RTN","SDECVVS",2,0) ;;5.3;Scheduling;**781,784,785,788,790,792,800,801,804,805**;;Build 9 "RTN","SDECVVS",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDECVVS",4,0) ; "RTN","SDECVVS",5,0) ; ICR "RTN","SDECVVS",6,0) ; Reference to ^XTV(8989.3,1,XUS in #1518 "RTN","SDECVVS",7,0) Q "RTN","SDECVVS",8,0) ; "RTN","SDECVVS",9,0) GETVVSMAKEINFO(VVSMAKEINFO,PATIENTIEN,CLINICIEN) ;GET INFO TO MAKE A VIDEO VISIT WEB SERVICE (VVS) CALL "RTN","SDECVVS",10,0) ;S BASERETURN="-1" "RTN","SDECVVS",11,0) Q:PATIENTIEN="" "RTN","SDECVVS",12,0) Q:CLINICIEN="" "RTN","SDECVVS",13,0) S (VVSPATIENT,VVSPROVIDER,PROVIDERINFO,VVSSYSTEMINFO)="" "RTN","SDECVVS",14,0) ; "RTN","SDECVVS",15,0) D GETVVSPATIENT(.VVSPATIENT,PATIENTIEN) "RTN","SDECVVS",16,0) D GETDPROIEN(.VVSPROVIDER,CLINICIEN) "RTN","SDECVVS",17,0) D GETPROINFO(.PROVIDERINFO,PROVIDERIEN) "RTN","SDECVVS",18,0) D GETSYSTEMINFO(.VVSSYSTEMINFO,CLINICIEN) "RTN","SDECVVS",19,0) D GETVVSINFO(.VVSMAKEINFO,VVSPATIENT,PROVIDERINFO,VVSSYSTEMINFO) "RTN","SDECVVS",20,0) ; "RTN","SDECVVS",21,0) K PATINFO,PROVIDERIEN,PROVIDERINFO,VVSSYSTEMINFO "RTN","SDECVVS",22,0) Q "RTN","SDECVVS",23,0) ; "RTN","SDECVVS",24,0) GETSPACEBARPRO(VVSPRORETURN) ; "RTN","SDECVVS",25,0) N PROVIDERIEN "RTN","SDECVVS",26,0) I $D(^DISV(DUZ,"^VA(200,")) D "RTN","SDECVVS",27,0) .S PROVIDERIEN=^DISV(DUZ,"^VA(200,") "RTN","SDECVVS",28,0) .D GETPROINFO(.VVSPRORETURN,PROVIDERIEN) "RTN","SDECVVS",29,0) I '$D(^DISV(DUZ,"^VA(200,")),$D(^TMP(DUZ,"SDECPROIEN")) D "RTN","SDECVVS",30,0) .S PROVIDERIEN=^TMP(DUZ,"SDECPROIEN") "RTN","SDECVVS",31,0) .D GETPROINFO(.VVSPRORETURN,PROVIDERIEN) "RTN","SDECVVS",32,0) Q "RTN","SDECVVS",33,0) ; "RTN","SDECVVS",34,0) VVSPROSEARCH(VVSPROVIDERS,SEARCHSTRING) ;SEARCH PROVIDERS AND GET DATA NEEDED TO MAKE VIDEO VISIT SERVICE (VVS) APPOINTMENT "RTN","SDECVVS",35,0) N PROVIDERCOUNT "RTN","SDECVVS",36,0) S VVSPROVIDERS="-1" "RTN","SDECVVS",37,0) S PROVIDERCOUNT=0 "RTN","SDECVVS",38,0) Q:$L(SEARCHSTRING)<2 "RTN","SDECVVS",39,0) N PROVIDERIEN,VVSPROVIDER,PROVIDERNAME,STRINGLENGTH,SDPOP,TERMDATE "RTN","SDECVVS",40,0) S PROVIDERIEN="" "RTN","SDECVVS",41,0) S STRINGLENGTH=$L(SEARCHSTRING) "RTN","SDECVVS",42,0) S PROVIDERNAME=$O(^VA(200,"B",SEARCHSTRING),-1) "RTN","SDECVVS",43,0) I $E(PROVIDERNAME,1,STRINGLENGTH)=SEARCHSTRING D "RTN","SDECVVS",44,0) .S PROVIDERNAME=$O(^VA(200,"B",PROVIDERNAME),-1) "RTN","SDECVVS",45,0) F S PROVIDERNAME=$O(^VA(200,"B",PROVIDERNAME)) Q:PROVIDERNAME=""!($E(PROVIDERNAME,1,STRINGLENGTH)'=SEARCHSTRING) D "RTN","SDECVVS",46,0) .I PROVIDERCOUNT>49 Q "RTN","SDECVVS",47,0) .S (VVSPROVIDER,PROVIDERIEN)="" "RTN","SDECVVS",48,0) .F S PROVIDERIEN=$O(^VA(200,"B",PROVIDERNAME,PROVIDERIEN)) Q:PROVIDERIEN="" D "RTN","SDECVVS",49,0) ..S TERMDATE=$$GET1^DIQ(200,PROVIDERIEN,9.2,"E") "RTN","SDECVVS",50,0) ..S SDPOP=0 "RTN","SDECVVS",51,0) ..I TERMDATE'="" D "RTN","SDECVVS",52,0) ... S:TERMDATE
SDEND S POP=1 Q ;End loop since past the end date "RTN","SDESAPPT",71,0) ..S APPTIEN="" "RTN","SDESAPPT",72,0) ..F S APPTIEN=$O(^SDEC(409.84,"ARSRC",SDRESIEN,APPTDT,APPTIEN)) Q:APPTIEN="" D "RTN","SDESAPPT",73,0) ...D SUMMARY^SDESAPPTDATA(.APPTDATA,APPTIEN) "RTN","SDESAPPT",74,0) ...M SDAPPT("Appt",$I(COUNTER))=APPTDATA "RTN","SDESAPPT",75,0) ...S DFN=$G(SDAPPT("Appt",COUNTER,"DFN")) "RTN","SDESAPPT",76,0) ...S PATIENT="" "RTN","SDESAPPT",77,0) ...D PATIENTIDADDDON^SDESPATIENTDATA(.PATIENT,DFN) "RTN","SDESAPPT",78,0) ...M SDAPPT("Appt",COUNTER,"Patient")=PATIENT "RTN","SDESAPPT",79,0) .I '$D(SDAPPT("Appt")) S SDAPPT("Appt")="" "RTN","SDESAPPT",80,0) D BUILDER "RTN","SDESAPPT",81,0) Q "RTN","SDESAPPT",82,0) APPTBYCLINIC(SDECY,SDCLINICIEN,SDBEG,SDEND,SDEAS) ; "RTN","SDESAPPT",83,0) N POP,APPTIEN,APPTDT,SDAPPT,APPTDATA,COUNTER,JSONERR,DFN,PATIENT,RESTYPE,SDRESIEN "RTN","SDESAPPT",84,0) S (POP,APPTIEN,COUNTER,JSONERR)="" "RTN","SDESAPPT",85,0) K SDECY "RTN","SDESAPPT",86,0) ;Validate input paramaters "RTN","SDESAPPT",87,0) S SDBEG=$G(SDBEG) "RTN","SDESAPPT",88,0) S SDEND=$G(SDEND) "RTN","SDESAPPT",89,0) S POP=$$VALIDATEDT(.SDBEG,.SDEND) "RTN","SDESAPPT",90,0) I $G(SDCLINICIEN)="" S POP=1 D ERRLOG^SDESJSON(.SDAPPT,18) "RTN","SDESAPPT",91,0) I $G(SDCLINICIEN)'="",'$D(^SC(SDCLINICIEN,0)) S POP=1 D ERRLOG^SDESJSON(.SDAPPT,19) "RTN","SDESAPPT",92,0) S SDEAS=$G(SDEAS,"") "RTN","SDESAPPT",93,0) I $L(SDEAS) S SDEAS=$$EASVALIDATE^SDESUTIL(SDEAS) "RTN","SDESAPPT",94,0) I +SDEAS=-1 S POP=1 D ERRLOG^SDESJSON(.SDAPPT,142) "RTN","SDESAPPT",95,0) I 'POP D "RTN","SDESAPPT",96,0) .S SDRESIEN="" "RTN","SDESAPPT",97,0) .F S SDRESIEN=$O(^SDEC(409.831,"ALOC",SDCLINICIEN,SDRESIEN)) Q:SDRESIEN="" D "RTN","SDESAPPT",98,0) ..S RESTYPE=$P($G(^SDEC(409.831,SDRESIEN,0)),"^",11) "RTN","SDESAPPT",99,0) ..I $P(RESTYPE,";",2)'="SC(" Q ;Must be a Hospital Loc "RTN","SDESAPPT",100,0) ..S APPTDT=SDBEG-.0001 "RTN","SDESAPPT",101,0) ..S SDEND=SDEND+.0001 "RTN","SDESAPPT",102,0) ..F S APPTDT=$O(^SDEC(409.84,"ARSRC",SDRESIEN,APPTDT)) Q:APPTDT="" D Q:POP "RTN","SDESAPPT",103,0) ...I SDEND,APPTDT>SDEND S POP=1 Q ;End loop since past the end date "RTN","SDESAPPT",104,0) ...S APPTIEN="" "RTN","SDESAPPT",105,0) ...F S APPTIEN=$O(^SDEC(409.84,"ARSRC",SDRESIEN,APPTDT,APPTIEN)) Q:APPTIEN="" D "RTN","SDESAPPT",106,0) ....D SUMMARY^SDESAPPTDATA(.APPTDATA,APPTIEN) "RTN","SDESAPPT",107,0) ....M SDAPPT("Appt",$I(COUNTER))=APPTDATA "RTN","SDESAPPT",108,0) ....S DFN=$G(SDAPPT("Appt",COUNTER,"DFN")) "RTN","SDESAPPT",109,0) ....S PATIENT="" "RTN","SDESAPPT",110,0) ....D PATIENTIDADDDON^SDESPATIENTDATA(.PATIENT,DFN) "RTN","SDESAPPT",111,0) ....M SDAPPT("Appt",COUNTER,"Patient")=PATIENT "RTN","SDESAPPT",112,0) .I '$D(SDAPPT("Appt")) S SDAPPT("Appt")="" "RTN","SDESAPPT",113,0) D BUILDER "RTN","SDESAPPT",114,0) Q "RTN","SDESAPPT",115,0) ; "RTN","SDESAPPT",116,0) BUILDER ;Convert data to JSON "RTN","SDESAPPT",117,0) N JSONERR "RTN","SDESAPPT",118,0) S JSONERR="" "RTN","SDESAPPT",119,0) D ENCODE^SDESJSON(.SDAPPT,.SDECY,.JSONERR) "RTN","SDESAPPT",120,0) Q "RTN","SDESAPPT",121,0) ; "RTN","SDESAPPT",122,0) VALIDATEDT(FROM,THRU) ; "RTN","SDESAPPT",123,0) N POP "RTN","SDESAPPT",124,0) S POP=0 ;Assume all is good "RTN","SDESAPPT",125,0) I FROM="" S POP=1 D ERRLOG^SDESJSON(.SDAPPT,25) "RTN","SDESAPPT",126,0) I THRU="" S POP=1 D ERRLOG^SDESJSON(.SDAPPT,26) "RTN","SDESAPPT",127,0) I FROM'="" D "RTN","SDESAPPT",128,0) .S FROM=$$NETTOFM^SDECDATE(FROM,"Y") "RTN","SDESAPPT",129,0) .I FROM=-1 S POP=1 D ERRLOG^SDESJSON(.SDAPPT,27) "RTN","SDESAPPT",130,0) I THRU'="" D "RTN","SDESAPPT",131,0) .S THRU=$$NETTOFM^SDECDATE(THRU,"Y") "RTN","SDESAPPT",132,0) .I THRU=-1 S POP=1 D ERRLOG^SDESJSON(.SDAPPT,28) "RTN","SDESAPPT",133,0) I 'POP,THRU,FROM D "RTN","SDESAPPT",134,0) .I FROM>THRU S POP=1 D ERRLOG^SDESJSON(.SDAPPT,29) "RTN","SDESAPPT",135,0) Q POP "RTN","SDESAPPT",136,0) ; "RTN","SDESAPPT",137,0) APPTINDTRANGE(IEN,BEG,END) ; "RTN","SDESAPPT",138,0) ;Function to check if the Appt Sart Date / Time is within the desired date range "RTN","SDESAPPT",139,0) ; "RTN","SDESAPPT",140,0) ; Input "RTN","SDESAPPT",141,0) ; IEN - Internal # from Appointment File (409.84) "RTN","SDESAPPT",142,0) ; BEG - (Optional) Date in FM format "RTN","SDESAPPT",143,0) ; END - (Optional) Date in FM format "RTN","SDESAPPT",144,0) ; Return "RTN","SDESAPPT",145,0) ; 1 = Appointment Start Time is within BEG and END "RTN","SDESAPPT",146,0) ; 0 = Not within the date range "RTN","SDESAPPT",147,0) N INRANGE,APPTDT,FN,IENS,APPTARY,SDMSG,IENS "RTN","SDESAPPT",148,0) S INRANGE=1 ;Assume success "RTN","SDESAPPT",149,0) S FN=409.84,IENS=IEN_"," "RTN","SDESAPPT",150,0) D GETS^DIQ(FN,IEN,".01","I","APPTARY","SDMSG") "RTN","SDESAPPT",151,0) S APPTDT=$G(APPTARY(FN,IENS,.01,"I")) "RTN","SDESAPPT",152,0) I APPTDT=""!($G(SDMSG)) S INRANGE=0 "RTN","SDESAPPT",153,0) I $G(BEG),$G(APPTDT) S:APPTDTEND INRANGE=0 "RTN","SDESAPPT",155,0) Q INRANGE "RTN","SDESAPTREQ44") 0^44^B22239909^n/a "RTN","SDESAPTREQ44",1,0) SDESAPTREQ44 ;ALB/ANU - APPOINTMENT REQUEST CREATE/UPDATE IN FILE44 ;Jan 12, 2022 "RTN","SDESAPTREQ44",2,0) ;;5.3;Scheduling;**805**;Aug 13, 1993;Build 9 "RTN","SDESAPTREQ44",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESAPTREQ44",4,0) ; "RTN","SDESAPTREQ44",5,0) Q "RTN","SDESAPTREQ44",6,0) ; This entry point is used for both the SDES SET APT REQ 44 CREATE and SDES SET APT REQ 44 UPDATE RPCs. "RTN","SDESAPTREQ44",7,0) ; The parameter list for each RPC must be kept in sync. This includes in the Remote Procedure file definition. "RTN","SDESAPTREQ44",8,0) ; "RTN","SDESAPTREQ44",9,0) ARSET(RETURN,ARUPD,ARIEN,DFN,ARDAPTDT,ARLEN,ARRSN,ARUSER,ARODT,PATELG,AROVR) ; Create/Update Appointment Request "RTN","SDESAPTREQ44",10,0) ; INP - Input parameters array "RTN","SDESAPTREQ44",11,0) ; ARUPD = (integer) 1 for Update and 0 for Create Appointment "RTN","SDESAPTREQ44",12,0) ; ARIEN = (integer) IEN point to HOSPTIAL LOCATION file 44 "RTN","SDESAPTREQ44",13,0) ; If null, a new entry will be added "RTN","SDESAPTREQ44",14,0) ; DFN = (text) DFN Pointer to the PATIENT file 2 "RTN","SDESAPTREQ44",15,0) ; ARDAPTDT = (date) Desired Date/time of appointment in ISO8601 extended format (e.g. 2021-12-22T20:30:00) ;vse-2097 "RTN","SDESAPTREQ44",16,0) ; ARLEN = (integer) Appointment length in minutes (5 - 120) "RTN","SDESAPTREQ44",17,0) ; ARRSN = (text) Reason for Appointment upto 150 characters "RTN","SDESAPTREQ44",18,0) ; ARUSER = (text) Originating User name - NAME field in NEW PERSON file 200 "RTN","SDESAPTREQ44",19,0) ; ARODT = (date) Originating Date/time in ISO8601 extended format (e.g. 2021-12-22T20:30:53) ;vse-2097 "RTN","SDESAPTREQ44",20,0) ; PATELG = (text) Eligibility of Visit "RTN","SDESAPTREQ44",21,0) ; AROVR = (integer) Overbook flag - 1=yes "RTN","SDESAPTREQ44",22,0) ; "RTN","SDESAPTREQ44",23,0) N POP,SDAPTREQ,ARORIGDT,AUDF,FNUM "RTN","SDESAPTREQ44",24,0) ; "RTN","SDESAPTREQ44",25,0) D VALIDATE "RTN","SDESAPTREQ44",26,0) I 'POP D "RTN","SDESAPTREQ44",27,0) .I +ARUPD=1 D UPDATE Q "RTN","SDESAPTREQ44",28,0) .I +ARUPD=0 D CREATE Q "RTN","SDESAPTREQ44",29,0) D BUILDER "RTN","SDESAPTREQ44",30,0) Q "RTN","SDESAPTREQ44",31,0) ; "RTN","SDESAPTREQ44",32,0) VALIDATE ; Validate "RTN","SDESAPTREQ44",33,0) ; "RTN","SDESAPTREQ44",34,0) S POP=0,AUDF=0,FNUM=44 "RTN","SDESAPTREQ44",35,0) ; "RTN","SDESAPTREQ44",36,0) ; "RTN","SDESAPTREQ44",37,0) I ARUPD'=1,ARUPD'=0 S SDAPTREQ("Error",1)="Invalid Update Flag." Q "RTN","SDESAPTREQ44",38,0) ; "RTN","SDESAPTREQ44",39,0) ; Clinic IEN "RTN","SDESAPTREQ44",40,0) S ARIEN=$G(ARIEN,"") "RTN","SDESAPTREQ44",41,0) I ARIEN="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,18) Q "RTN","SDESAPTREQ44",42,0) I '$D(^SC(+ARIEN,0)) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,19) Q "RTN","SDESAPTREQ44",43,0) I $$INACTIVE^SDEC32(+ARIEN) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,19) Q "RTN","SDESAPTREQ44",44,0) ; "RTN","SDESAPTREQ44",45,0) ; Patient DFN "RTN","SDESAPTREQ44",46,0) S DFN=$G(DFN,"") "RTN","SDESAPTREQ44",47,0) I DFN="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,1) Q "RTN","SDESAPTREQ44",48,0) I DFN'="",'$D(^DPT(+DFN,0)) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,2) Q "RTN","SDESAPTREQ44",49,0) ; "RTN","SDESAPTREQ44",50,0) ; Desired date/time of appt "RTN","SDESAPTREQ44",51,0) S ARDAPTDT=$G(ARDAPTDT,"") "RTN","SDESAPTREQ44",52,0) I ARDAPTDT="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,57) Q "RTN","SDESAPTREQ44",53,0) S ARDAPTDT=$$GMTTFM^SDAMUTDT(ARDAPTDT) "RTN","SDESAPTREQ44",54,0) I ARDAPTDT=-1 S ARDAPTDT="",POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,58) Q "RTN","SDESAPTREQ44",55,0) I ARUPD=0,ARDAPTDT
120)) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,116) Q "RTN","SDESAPTREQ44",67,0) ; "RTN","SDESAPTREQ44",68,0) ; Appointment Reason "RTN","SDESAPTREQ44",69,0) S ARRSN=$G(ARRSN,"") "RTN","SDESAPTREQ44",70,0) S ARRSN=$TR($G(ARRSN),"^"," ") "RTN","SDESAPTREQ44",71,0) ; "RTN","SDESAPTREQ44",72,0) ; Requesting User "RTN","SDESAPTREQ44",73,0) S ARUSER=$G(ARUSER,"") "RTN","SDESAPTREQ44",74,0) I ARUSER="" S ARUSER=DUZ "RTN","SDESAPTREQ44",75,0) I '$D(^VA(200,+$G(ARUSER),0)) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,44) Q "RTN","SDESAPTREQ44",76,0) ; "RTN","SDESAPTREQ44",77,0) ; Overbook "RTN","SDESAPTREQ44",78,0) S AROVR=$G(AROVR,"") "RTN","SDESAPTREQ44",79,0) I AROVR'="" D "RTN","SDESAPTREQ44",80,0) . I AROVR'=1,AROVR'=0 S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,112) Q "RTN","SDESAPTREQ44",81,0) ; "RTN","SDESAPTREQ44",82,0) ; Patient Eligibility "RTN","SDESAPTREQ44",83,0) S PATELG=$G(PATELG,"") "RTN","SDESAPTREQ44",84,0) I PATELG'="",'$D(^DIC(8,+PATELG,0)) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,143) Q "RTN","SDESAPTREQ44",85,0) ; "RTN","SDESAPTREQ44",86,0) Q "RTN","SDESAPTREQ44",87,0) ; "RTN","SDESAPTREQ44",88,0) CREATE ;Build FDA array to creat a new entry in 44 "RTN","SDESAPTREQ44",89,0) ; add appt to file 44 "RTN","SDESAPTREQ44",90,0) N IEN "RTN","SDESAPTREQ44",91,0) S IEN=$$SCIEN^SDECU2(DFN,ARIEN,ARDAPTDT) "RTN","SDESAPTREQ44",92,0) I IEN S SDAPTREQ("Error",1)="Appointment already exists." Q "RTN","SDESAPTREQ44",93,0) I '$D(^SC(ARIEN,"S",0)) S ^SC(ARIEN,"S",0)="^44.001DA^^" "RTN","SDESAPTREQ44",94,0) I '$D(^SC(ARIEN,"S",ARDAPTDT,0)) S ^SC(ARIEN,"S",ARDAPTDT,0)=ARDAPTDT,^(1,0)="^44.003PA^^" "RTN","SDESAPTREQ44",95,0) K DIC,DA,X,Y,DLAYGO,DD,DO,DINUM "RTN","SDESAPTREQ44",96,0) S DIC="^SC("_ARIEN_",""S"","_ARDAPTDT_",1," "RTN","SDESAPTREQ44",97,0) S DA(2)=ARIEN,DA(1)=ARDAPTDT,X=DFN "RTN","SDESAPTREQ44",98,0) S DIC("DR")="1////"_ARLEN_";3///"_$E($G(ARRSN),1,150)_";7////"_ARUSER_";8////"_ARODT_";30////"_PATELG_$S(+AROVR:";9////O",1:"") "RTN","SDESAPTREQ44",99,0) S DIC("P")="44.003PA",DIC(0)="L",DLAYGO=44.003 "RTN","SDESAPTREQ44",100,0) D FILE^DICN "RTN","SDESAPTREQ44",101,0) I Y<0 S SDAPTREQ("Error",1)="Error in creating Appointment." Q "RTN","SDESAPTREQ44",102,0) S SDAPTREQ("Success")="Appointment is successfully created." "RTN","SDESAPTREQ44",103,0) Q "RTN","SDESAPTREQ44",104,0) ; "RTN","SDESAPTREQ44",105,0) UPDATE ;Find ien for appt in file 44 "RTN","SDESAPTREQ44",106,0) N IEN,SDFDA,SDERR "RTN","SDESAPTREQ44",107,0) S IEN=$$SCIEN^SDECU2(DFN,ARIEN,ARDAPTDT) "RTN","SDESAPTREQ44",108,0) I 'IEN S SDAPTREQ("Error",1)="Error trying to find appointment to update." Q "RTN","SDESAPTREQ44",109,0) S SDFDA(44.003,IEN_","_ARDAPTDT_","_ARIEN_",",1)=ARLEN "RTN","SDESAPTREQ44",110,0) S SDFDA(44.003,IEN_","_ARDAPTDT_","_ARIEN_",",3)=ARRSN "RTN","SDESAPTREQ44",111,0) S SDFDA(44.003,IEN_","_ARDAPTDT_","_ARIEN_",",30)=PATELG "RTN","SDESAPTREQ44",112,0) S SDFDA(44.003,IEN_","_ARDAPTDT_","_ARIEN_",",9)=AROVR "RTN","SDESAPTREQ44",113,0) S SDFDA(44.003,IEN_","_ARDAPTDT_","_ARIEN_",",7)=ARUSER "RTN","SDESAPTREQ44",114,0) S SDFDA(44.003,IEN_","_ARDAPTDT_","_ARIEN_",",8)=ARODT "RTN","SDESAPTREQ44",115,0) K SDERR D UPDATE^DIE("","SDFDA","","SDERR") "RTN","SDESAPTREQ44",116,0) I $D(SDERR) S SDAPTREQ("Error",1)="Error trying to find appointment to update." Q "RTN","SDESAPTREQ44",117,0) S SDAPTREQ("Success")="Appointment is successfully updated." "RTN","SDESAPTREQ44",118,0) Q "RTN","SDESAPTREQ44",119,0) ; "RTN","SDESAPTREQ44",120,0) BUILDER ;Convert data to JSON "RTN","SDESAPTREQ44",121,0) N JSONERR "RTN","SDESAPTREQ44",122,0) S JSONERR="" "RTN","SDESAPTREQ44",123,0) D ENCODE^SDESJSON(.SDAPTREQ,.RETURN,.JSONERR) "RTN","SDESAPTREQ44",124,0) Q "RTN","SDESAPTREQSET") 0^6^B175699985^B172941127 "RTN","SDESAPTREQSET",1,0) SDESAPTREQSET ;ALB/TAW,MGD - APPOINTMENT REQUEST CREATE / UPDATE ;Jan 07, 2022 "RTN","SDESAPTREQSET",2,0) ;;5.3;Scheduling;**794,799,805**;Aug 13, 1993;Build 9 "RTN","SDESAPTREQSET",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESAPTREQSET",4,0) ; "RTN","SDESAPTREQSET",5,0) Q "RTN","SDESAPTREQSET",6,0) ;This entry point is used for both the SDES SET APT REQ CREATE and SDES SET APT REQ UPDATE RPCs. "RTN","SDESAPTREQSET",7,0) ; "RTN","SDESAPTREQSET",8,0) ; The parameter list for each RPC must be kept in sync. This includes in the Remote Procedure file definition. "RTN","SDESAPTREQSET",9,0) ; "RTN","SDESAPTREQSET",10,0) ARSET(RETURN,ARIEN,DFN,AREDT,ARINST,ARTYPE,ARCLIN,ARUSER,ARREQBY,ARPROV,ARDAPTDT,ARCOMM,ARENPRI,ARMAR,ARMAI,AMRAN,ARPATCONT,ARSVCCON,ARSVCCOP,MRTCPREFDT,ARSTOP,ARAPTYP,ARPATSTAT,MULTIAPTMADE,ARPARENT,ARNLT,ARPRER,ARORDN,VAOSGUID,EASTRCKNGNMBR) ; "RTN","SDESAPTREQSET",11,0) ; INP - Input parameters array "RTN","SDESAPTREQSET",12,0) ; ARIEN = (integer) IEN point to SDEC APPT REQUEST file 409.85. "RTN","SDESAPTREQSET",13,0) ; If null, a new entry will be added "RTN","SDESAPTREQSET",14,0) ; DFN = (text) DFN Pointer to the PATIENT file 2 "RTN","SDESAPTREQSET",15,0) ; AREDT = (date) Originating Date/time in external date format "RTN","SDESAPTREQSET",16,0) ; ARINST = (text) Institution name NAME field from the INSTITUTION file "RTN","SDESAPTREQSET",17,0) ; ARTYPE = (text) Appointment Request Type "RTN","SDESAPTREQSET",18,0) ; ARCLIN = (text) REQ Specific Clinic name - NAME field in file 44 "RTN","SDESAPTREQSET",19,0) ; ARUSER = (text) Originating User name - NAME field in NEW PERSON file 200 "RTN","SDESAPTREQSET",20,0) ; ARREQBY = (text) Request By - 'PROVIDER' or 'PATIENT' "RTN","SDESAPTREQSET",21,0) ; ARPROV = (text) Provider name - NAME field in NEW PERSON file 200 "RTN","SDESAPTREQSET",22,0) ; ARDAPTDT = (date) Desired Date of appointment in external date format "RTN","SDESAPTREQSET",23,0) ; ARCOMM = (text) Comment must be 1-60 characters. "RTN","SDESAPTREQSET",24,0) ; ARENPRI = (text) ENROLLMENT PRIORITY - Valid Values are "GROUP 1" through "GROUP 8" "RTN","SDESAPTREQSET",25,0) ; ARMAR = (text) MULTIPLE APPOINTMENT RTC NO; YES "RTN","SDESAPTREQSET",26,0) ; ARMAI = (integer) MULT APPT RTC INTERVAL integer between 1-365 "RTN","SDESAPTREQSET",27,0) ; AMRAN = (integer) MULT APPT NUMBER integer between 1-100 "RTN","SDESAPTREQSET",28,0) ; ARPATCONT = Patient Contacts separated by :: "RTN","SDESAPTREQSET",29,0) ; Each :: piece has the following ~~ pieces: "RTN","SDESAPTREQSET",30,0) ; 1) = (date) DATE ENTERED in external date format "RTN","SDESAPTREQSET",31,0) ; 2) = (text) PC ENTERED BY USER ID or NAME - Pointer toNEW PERSON file or NAME "RTN","SDESAPTREQSET",32,0) ; 4) = (optional) ACTION - valid values are: "RTN","SDESAPTREQSET",33,0) ; CALLED, MESSAGE LEFT or LETTER "RTN","SDESAPTREQSET",34,0) ; 5) = (optional) PATIENT PHONE Free-Text 4-20 characters "RTN","SDESAPTREQSET",35,0) ; 6) = NOT USED (optional) Comment 1-160 characters "RTN","SDESAPTREQSET",36,0) ; ARSVCCON = (optional) SERVICE CONNECTED PRIORITY valid values are NO YES "RTN","SDESAPTREQSET",37,0) ; ARSVCCOP = (optional) SERVICE CONNECTED PERCENTAGE = numeric 0-100 "RTN","SDESAPTREQSET",38,0) ; MRTCPREFDT = (optional) MRTC calculated preferred dates separated by pipe |: "RTN","SDESAPTREQSET",39,0) ; Each date can be in external format with no time "RTN","SDESAPTREQSET",40,0) ; ARSTOP = (optional) CLINIC STOP pointer to CLINIC STOP file 40.7 "RTN","SDESAPTREQSET",41,0) ; used to populate the REQ SERVICE/SPECIALTY field in 409.85 "RTN","SDESAPTREQSET",42,0) ; ARAPTYP = (optional) Appointment Type ID pointer to APPOINTMENT TYPE file 409.1 "RTN","SDESAPTREQSET",43,0) ; ARPATSTAT = (optional) Patient Status N = NEW E = ESTABLISHED "RTN","SDESAPTREQSET",44,0) ; MULTIAPTMADE = (optional) MULT APPTS MADE "RTN","SDESAPTREQSET",45,0) ; List of child pointers to SDEC APPOINTMENT and/orSDEC APPT REQUEST files separated by pipe "RTN","SDESAPTREQSET",46,0) ; each pipe piece contains the following ~ pieces: "RTN","SDESAPTREQSET",47,0) ; 1. Appointment Id pointer to SDEC APPOINTMENT file 409.84 "RTN","SDESAPTREQSET",48,0) ; 2. Request Id pointer to SDEC APPT REQUEST file 409.85 "RTN","SDESAPTREQSET",49,0) ; ARPARENT = (optional) PARENT REQUEST pointer to SDEC APPT REQUEST file 409.85 "RTN","SDESAPTREQSET",50,0) ; ARNLT = (optional) NLT (No later than) [CPRS RTC REQUIREMENT] "RTN","SDESAPTREQSET",51,0) ; ARPRER = (optional) PREREQ (Prerequisites) [CPRS RTC REQUIREMENT] "RTN","SDESAPTREQSET",52,0) ; ARORDN = (optional) ORDER IEN [CPRS RTC REQUIREMENT] "RTN","SDESAPTREQSET",53,0) ; VAOSGUID = (optional) VAOS GUID "RTN","SDESAPTREQSET",54,0) ; EASTRCKNGNMBR = (optional) Enterprise Appointment Scheduling Tracking Number associated to an appointment. "RTN","SDESAPTREQSET",55,0) ; "RTN","SDESAPTREQSET",56,0) N POP,SDAPTREQ,X,Y,%DT,ARORIGDT,ARORIGDTI,FNUM,ARINSTI,ARTEAM,ARPOS,ARSRVSP,MI "RTN","SDESAPTREQSET",57,0) N ARPRIO,AREESTAT,FDA,ARNEW,ARRET,ARMSG,ARDATA,ARERR,ARHOSN,AUDF,SDREC,ARMAN,ARPATTEL "RTN","SDESAPTREQSET",58,0) ; "RTN","SDESAPTREQSET",59,0) D VALIDATE "RTN","SDESAPTREQSET",60,0) I 'POP D "RTN","SDESAPTREQSET",61,0) .I +ARIEN D UPDATE "RTN","SDESAPTREQSET",62,0) .I +ARIEN=0 D CREATE "RTN","SDESAPTREQSET",63,0) .I 'POP D FILE "RTN","SDESAPTREQSET",64,0) D BUILDER "RTN","SDESAPTREQSET",65,0) Q "RTN","SDESAPTREQSET",66,0) ; "RTN","SDESAPTREQSET",67,0) VALIDATE ; "RTN","SDESAPTREQSET",68,0) S (POP,AUDF)=0 "RTN","SDESAPTREQSET",69,0) S FNUM=$$FNUM^SDECAR "RTN","SDESAPTREQSET",70,0) ; "RTN","SDESAPTREQSET",71,0) S ARIEN=$G(ARIEN,"") "RTN","SDESAPTREQSET",72,0) ; If the Update RPC is called and no ARIEN is sent then it will show as -1 "RTN","SDESAPTREQSET",73,0) I ARIEN'="" D "RTN","SDESAPTREQSET",74,0) .I ARIEN=-1 S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,3) Q "RTN","SDESAPTREQSET",75,0) .I '$D(^SDEC(409.85,ARIEN)) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,4) "RTN","SDESAPTREQSET",76,0) ; "RTN","SDESAPTREQSET",77,0) S DFN=$G(DFN,"") "RTN","SDESAPTREQSET",78,0) I ARIEN="" D "RTN","SDESAPTREQSET",79,0) .I DFN="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,1) "RTN","SDESAPTREQSET",80,0) .I DFN'="",'$D(^DPT(DFN,0)) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,2) "RTN","SDESAPTREQSET",81,0) ;Originating Dt/Tm "RTN","SDESAPTREQSET",82,0) S AREDT=$G(AREDT,"") "RTN","SDESAPTREQSET",83,0) I ARIEN="",AREDT="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,48) "RTN","SDESAPTREQSET",84,0) I AREDT'="" S AREDT=$$NETTOFM^SDECDATE($P(AREDT,":",1,2),$S(AREDT["@":"Y",1:"N")) "RTN","SDESAPTREQSET",85,0) I AREDT=-1 S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,49) "RTN","SDESAPTREQSET",86,0) S ARORIGDT=$P(AREDT,".",1) "RTN","SDESAPTREQSET",87,0) ;Instution name "RTN","SDESAPTREQSET",88,0) S ARINST=$G(ARINST,"") "RTN","SDESAPTREQSET",89,0) I ARINST'="" S ARINST=$O(^DIC(4,"B",ARINST,0)) "RTN","SDESAPTREQSET",90,0) ;Appt Request Type "RTN","SDESAPTREQSET",91,0) S ARTYPE=$G(ARTYPE,"") "RTN","SDESAPTREQSET",92,0) S:ARTYPE="APPOINTMENT" ARTYPE="APPT" "RTN","SDESAPTREQSET",93,0) I ARIEN="",ARTYPE="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,60) "RTN","SDESAPTREQSET",94,0) ;Clinic name/number "RTN","SDESAPTREQSET",95,0) S ARCLIN=$G(ARCLIN,"") "RTN","SDESAPTREQSET",96,0) I ARCLIN'="" D "RTN","SDESAPTREQSET",97,0) .I +ARCLIN=ARCLIN D "RTN","SDESAPTREQSET",98,0) ..I '$D(^SC(+ARCLIN,0)) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,19) "RTN","SDESAPTREQSET",99,0) .I +ARCLIN'=ARCLIN D "RTN","SDESAPTREQSET",100,0) ..S ARCLIN=$O(^SC("B",ARCLIN,0)) "RTN","SDESAPTREQSET",101,0) ..I ARCLIN="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,51) "RTN","SDESAPTREQSET",102,0) ;User "RTN","SDESAPTREQSET",103,0) S ARUSER=$G(ARUSER,"") "RTN","SDESAPTREQSET",104,0) I ARUSER'="",'+ARUSER S ARUSER=$O(^VA(200,"B",ARUSER,0)) "RTN","SDESAPTREQSET",105,0) I ARUSER="" S ARUSER=DUZ "RTN","SDESAPTREQSET",106,0) ;Requested by "RTN","SDESAPTREQSET",107,0) S ARREQBY=$G(ARREQBY,"") "RTN","SDESAPTREQSET",108,0) I ARREQBY'="" D "RTN","SDESAPTREQSET",109,0) .S ARREQBY=$S(ARREQBY="PATIENT":2,ARREQBY="PROVIDER":1,1:"") "RTN","SDESAPTREQSET",110,0) I ARIEN="",ARREQBY="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,62) "RTN","SDESAPTREQSET",111,0) ;Provider name "RTN","SDESAPTREQSET",112,0) S ARPROV=$G(ARPROV,"") "RTN","SDESAPTREQSET",113,0) I ARPROV'="" S ARPROV=$O(^VA(200,"B",ARPROV,0)) "RTN","SDESAPTREQSET",114,0) ;Desired date of appt "RTN","SDESAPTREQSET",115,0) S ARDAPTDT=$G(ARDAPTDT,"") "RTN","SDESAPTREQSET",116,0) S ARPRIO="" "RTN","SDESAPTREQSET",117,0) I ARIEN="",ARDAPTDT="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,57) "RTN","SDESAPTREQSET",118,0) I ARDAPTDT'="" D "RTN","SDESAPTREQSET",119,0) .S ARDAPTDT=$$CALLDT($P($G(ARDAPTDT),"@",1)) "RTN","SDESAPTREQSET",120,0) .I ARDAPTDT=-1 S ARDAPTDT="",POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,58) Q "RTN","SDESAPTREQSET",121,0) .I ARIEN="",ARDAPTDT
100) ARSVCCOP="" "RTN","SDESAPTREQSET",144,0) ;MRTC calc pref dates "RTN","SDESAPTREQSET",145,0) ; "RTN","SDESAPTREQSET",146,0) ;Clinic Stop Code "RTN","SDESAPTREQSET",147,0) S ARSTOP=$G(ARSTOP,"") "RTN","SDESAPTREQSET",148,0) I ARIEN="",ARCLIN="",ARSTOP="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,63) "RTN","SDESAPTREQSET",149,0) I ARSTOP'="",ARCLIN'="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,52,"Cannot include both Clinic Name and Clinic Stop.") "RTN","SDESAPTREQSET",150,0) ;Appointment Type # "RTN","SDESAPTREQSET",151,0) S ARAPTYP=+$G(ARAPTYP,"") "RTN","SDESAPTREQSET",152,0) I +ARAPTYP,'$D(^SD(409.1,ARAPTYP,0)) S ARAPTYP="" "RTN","SDESAPTREQSET",153,0) ;Patient Status "RTN","SDESAPTREQSET",154,0) S ARPATSTAT=$G(ARPATSTAT,"") "RTN","SDESAPTREQSET",155,0) I ARPATSTAT'="" S ARPATSTAT=$S(ARPATSTAT="N":"N",ARPATSTAT="NEW":"N",ARPATSTAT="E":"E",ARPATSTAT="ESTABLISHED":"E",1:"") "RTN","SDESAPTREQSET",156,0) ;Multi Apt Made "RTN","SDESAPTREQSET",157,0) ; "RTN","SDESAPTREQSET",158,0) ;Parent Request "RTN","SDESAPTREQSET",159,0) S ARPARENT=+$G(ARPARENT,"") "RTN","SDESAPTREQSET",160,0) I +ARPARENT,'$D(^SDEC(409.85,+ARPARENT,0)) S ARPARENT="" "RTN","SDESAPTREQSET",161,0) ;No Later Than "RTN","SDESAPTREQSET",162,0) S ARNLT=+$G(ARNLT,"") "RTN","SDESAPTREQSET",163,0) I +ARPARENT>0&(+$G(ARNLT)=0) S ARNLT=$P($G(^SDEC(409.85,+ARPARENT,7)),"^",2) "RTN","SDESAPTREQSET",164,0) ;Prerequisit "RTN","SDESAPTREQSET",165,0) S ARPRER=$G(ARPRER,"") "RTN","SDESAPTREQSET",166,0) I +ARPARENT>0&(ARPRER="") D "RTN","SDESAPTREQSET",167,0) .N PRIEN,PR "RTN","SDESAPTREQSET",168,0) .S PRIEN=0 F S PRIEN=$O(^SDEC(409.85,+ARPARENT,8,PRIEN)) Q:PRIEN'>0 D "RTN","SDESAPTREQSET",169,0) ..S PR=$P($G(^SDEC(409.85,+ARPARENT,8,PRIEN,0)),"^") "RTN","SDESAPTREQSET",170,0) ..S:PR'="" ARPRER=$S(ARPRER'="":ARPRER_";"_PR,1:PR) "RTN","SDESAPTREQSET",171,0) ;Order IEN "RTN","SDESAPTREQSET",172,0) S ARORDN=+$G(ARORDN) "RTN","SDESAPTREQSET",173,0) I +ARPARENT>0&(+$G(ARORDN)=0) S ARORDN=$P($G(^SDEC(409.85,+ARPARENT,7)),"^",1) "RTN","SDESAPTREQSET",174,0) ;VAOS ID "RTN","SDESAPTREQSET",175,0) S VAOSGUID=$G(VAOSGUID,"") "RTN","SDESAPTREQSET",176,0) ;validate EAS Tracking Number "RTN","SDESAPTREQSET",177,0) S EASTRCKNGNMBR=$TR($G(EASTRCKNGNMBR),"^"," ") "RTN","SDESAPTREQSET",178,0) I $L(EASTRCKNGNMBR) S EASTRCKNGNMBR=$$EASVALIDATE^SDESUTIL(EASTRCKNGNMBR) "RTN","SDESAPTREQSET",179,0) I +EASTRCKNGNMBR=-1 S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,142) "RTN","SDESAPTREQSET",180,0) Q "RTN","SDESAPTREQSET",181,0) ; "RTN","SDESAPTREQSET",182,0) CREATE ;Build FDA array to creat a new entry in 409.85 "RTN","SDESAPTREQSET",183,0) S AUDF=1 "RTN","SDESAPTREQSET",184,0) S FDA=$NA(FDA(FNUM,"+1,")) "RTN","SDESAPTREQSET",185,0) S @FDA@(.01)=+DFN "RTN","SDESAPTREQSET",186,0) S:$G(ARORIGDT)'="" @FDA@(1)=ARORIGDT "RTN","SDESAPTREQSET",187,0) S:$G(ARINST)'="" @FDA@(2)=+ARINST "RTN","SDESAPTREQSET",188,0) S:$G(ARTYPE)'="" @FDA@(4)=ARTYPE "RTN","SDESAPTREQSET",189,0) S:$G(VAOSGUID)'="" @FDA@(5)=VAOSGUID "RTN","SDESAPTREQSET",190,0) S:$G(ARCLIN)'="" @FDA@(8)=+ARCLIN "RTN","SDESAPTREQSET",191,0) S:$G(ARSTOP)'="" @FDA@(8.5)=+ARSTOP "RTN","SDESAPTREQSET",192,0) S:+ARAPTYP @FDA@(8.7)=+ARAPTYP "RTN","SDESAPTREQSET",193,0) S:$G(ARUSER)'="" @FDA@(9)=+ARUSER "RTN","SDESAPTREQSET",194,0) S:$G(AREDT)'="" @FDA@(9.5)=AREDT "RTN","SDESAPTREQSET",195,0) S:$G(ARPRIO)'="" @FDA@(10)=ARPRIO "RTN","SDESAPTREQSET",196,0) S:$G(ARENPRI)'="" @FDA@(10.5)=ARENPRI "RTN","SDESAPTREQSET",197,0) S:$G(ARREQBY)'="" @FDA@(11)=ARREQBY "RTN","SDESAPTREQSET",198,0) S:$G(ARPROV)'="" @FDA@(12)=+ARPROV "RTN","SDESAPTREQSET",199,0) S:$G(ARSVCCOP)'="" @FDA@(14)=ARSVCCOP "RTN","SDESAPTREQSET",200,0) S:$G(ARSVCCON)'="" @FDA@(15)=+ARSVCCON "RTN","SDESAPTREQSET",201,0) S:$G(ARDAPTDT)'="" @FDA@(22)=ARDAPTDT "RTN","SDESAPTREQSET",202,0) S:$G(ARNLT)'="" @FDA@(47)=ARNLT "RTN","SDESAPTREQSET",203,0) S:EASTRCKNGNMBR'="" @FDA@(100)=EASTRCKNGNMBR "RTN","SDESAPTREQSET",204,0) D FDAPRER(.FDA,ARPRER,"+1") "RTN","SDESAPTREQSET",205,0) S:$G(ARORDN)'="" @FDA@(46)=ARORDN "RTN","SDESAPTREQSET",206,0) S @FDA@(23)="O" "RTN","SDESAPTREQSET",207,0) S:$G(ARCOMM)'="" @FDA@(25)=ARCOMM "RTN","SDESAPTREQSET",208,0) S:$G(ARMAR)'="" @FDA@(41)=ARMAR "RTN","SDESAPTREQSET",209,0) I +ARMAR,$G(ARMAI)'="" S @FDA@(42)=ARMAI "RTN","SDESAPTREQSET",210,0) I +ARMAR,$G(ARMAN)'="" S @FDA@(43)=ARMAN "RTN","SDESAPTREQSET",211,0) S:ARPATSTAT'="" @FDA@(.02)=ARPATSTAT "RTN","SDESAPTREQSET",212,0) S:+ARPARENT @FDA@(43.8)=+ARPARENT "RTN","SDESAPTREQSET",213,0) Q "RTN","SDESAPTREQSET",214,0) ; "RTN","SDESAPTREQSET",215,0) UPDATE ; "RTN","SDESAPTREQSET",216,0) S ARIEN=ARIEN_"," ; Append the comma for both "RTN","SDESAPTREQSET",217,0) K ARDATA,ARERR "RTN","SDESAPTREQSET",218,0) D GETS^DIQ(FNUM,ARIEN,"*","IE","ARDATA","ARERR") "RTN","SDESAPTREQSET",219,0) I $D(ARERR) D Q "RTN","SDESAPTREQSET",220,0) .S POP=1 "RTN","SDESAPTREQSET",221,0) .K FDA "RTN","SDESAPTREQSET",222,0) .F MI=1:1:$G(ARERR("DIERR")) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,48,$G(ARERR("DIERR",MI,"TEXT",1))) "RTN","SDESAPTREQSET",223,0) S FDA=$NA(FDA(FNUM,ARIEN)) "RTN","SDESAPTREQSET",224,0) I ARORIGDT'="" D "RTN","SDESAPTREQSET",225,0) .S ARORIGDT=$P(ARORIGDT,"@",1) S ARORIGDTI=$$CALLDT(ARORIGDT) "RTN","SDESAPTREQSET",226,0) .I ARORIGDTI'=ARDATA(FNUM,ARIEN,1,"I") S @FDA@(1)=$S(ARORIGDT="":"@",1:ARORIGDT) "RTN","SDESAPTREQSET",227,0) I ARINST'="",ARINST'=ARDATA(FNUM,ARIEN,2,"I") S @FDA@(2)=+ARINST "RTN","SDESAPTREQSET",228,0) I ARTYPE'="",ARTYPE'=ARDATA(FNUM,ARIEN,4,"I") S @FDA@(4)=ARTYPE "RTN","SDESAPTREQSET",229,0) I VAOSGUID'="",VAOSGUID'=ARDATA(FNUM,ARIEN,5,"I") S @FDA@(5)=VAOSGUID "RTN","SDESAPTREQSET",230,0) I ARCLIN'="",ARCLIN'=ARDATA(FNUM,ARIEN,8,"I") S @FDA@(8)=+ARCLIN,AUDF=1 S:ARDATA(FNUM,ARIEN,8.5,"I")'="" @FDA@(8.5)="@" "RTN","SDESAPTREQSET",231,0) I ARSTOP'="",ARSTOP'=ARDATA(FNUM,ARIEN,8.5,"I") S @FDA@(8.5)=+ARSTOP,AUDF=1 S:ARDATA(FNUM,ARIEN,8,"I")'="" @FDA@(8)="@" "RTN","SDESAPTREQSET",232,0) S:+ARAPTYP @FDA@(8.7)=+ARAPTYP "RTN","SDESAPTREQSET",233,0) I ARUSER'="",ARUSER'=ARDATA(FNUM,ARIEN,9,"I") S @FDA@(9)=+ARUSER "RTN","SDESAPTREQSET",234,0) I AREDT'="",AREDT'=$G(ARDATA(FNUM,ARIEN,9.5,"I")) S @FDA@(9.5)=AREDT "RTN","SDESAPTREQSET",235,0) I ARPRIO'="",ARPRIO'=ARDATA(FNUM,ARIEN,10,"I") S @FDA@(10)=$S(ARPRIO="":"@",1:ARPRIO) "RTN","SDESAPTREQSET",236,0) I ARENPRI'="",ARENPRI'=ARDATA(FNUM,ARIEN,10.5,"I") S @FDA@(10.5)=ARENPRI "RTN","SDESAPTREQSET",237,0) I ARREQBY'="",ARREQBY'=ARDATA(FNUM,ARIEN,11,"I") S @FDA@(11)=$S(ARREQBY="":"@",1:ARREQBY) "RTN","SDESAPTREQSET",238,0) I ARPROV'="",ARPROV'=ARDATA(FNUM,ARIEN,12,"I") S @FDA@(12)=+ARPROV "RTN","SDESAPTREQSET",239,0) I ARSVCCOP'="",ARSVCCOP'=$G(ARDATA(FNUM,ARIEN,14,"I")) S @FDA@(14)=ARSVCCOP "RTN","SDESAPTREQSET",240,0) I ARSVCCON'="",ARSVCCON'=ARDATA(FNUM,ARIEN,15,"I") S @FDA@(15)=+ARSVCCON "RTN","SDESAPTREQSET",241,0) I ARDAPTDT'="",ARDAPTDT'=ARDATA(FNUM,ARIEN,22,"I") S @FDA@(22)=$S(ARDAPTDT="":"@",1:ARDAPTDT) "RTN","SDESAPTREQSET",242,0) I ARCOMM'="",ARCOMM'=ARDATA(FNUM,ARIEN,25,"I") S @FDA@(25)=$S(ARCOMM="":"@",1:ARCOMM) "RTN","SDESAPTREQSET",243,0) S:ARMAR'="" @FDA@(41)=ARMAR "RTN","SDESAPTREQSET",244,0) S:ARMAI'="" @FDA@(42)=ARMAI "RTN","SDESAPTREQSET",245,0) S:ARMAN'="" @FDA@(43)=ARMAN "RTN","SDESAPTREQSET",246,0) S:ARNLT'="" @FDA@(47)=ARNLT "RTN","SDESAPTREQSET",247,0) S:EASTRCKNGNMBR'="" @FDA@(100)=EASTRCKNGNMBR "RTN","SDESAPTREQSET",248,0) D DELPRER(+ARIEN) "RTN","SDESAPTREQSET",249,0) D FDAPRER(.FDA,ARPRER,+ARIEN) "RTN","SDESAPTREQSET",250,0) S:ARORDN'="" @FDA@(46)=ARORDN "RTN","SDESAPTREQSET",251,0) S:ARPATSTAT'="" @FDA@(.02)=ARPATSTAT "RTN","SDESAPTREQSET",252,0) S:+ARPARENT @FDA@(43.8)=+ARPARENT "RTN","SDESAPTREQSET",253,0) Q "RTN","SDESAPTREQSET",254,0) ; "RTN","SDESAPTREQSET",255,0) DELPRER(ARIEN) ;Delete all entries in the PREREQUISITE multiple (#48) "RTN","SDESAPTREQSET",256,0) N DIK,DA "RTN","SDESAPTREQSET",257,0) Q:$G(ARIEN)'=+$G(ARIEN) Q:ARIEN'>0 "RTN","SDESAPTREQSET",258,0) S DIK="^SDEC(409.85,"_ARIEN_",8,",DA(1)=ARIEN "RTN","SDESAPTREQSET",259,0) S DA=0 F S DA=$O(^SDEC(409.85,ARIEN,8,DA)) Q:DA'>0 D ^DIK "RTN","SDESAPTREQSET",260,0) Q "RTN","SDESAPTREQSET",261,0) ; "RTN","SDESAPTREQSET",262,0) FDAPRER(FDA,ARPRER,ARIEN) ;Setup the FDA array for the PREREQUISITE multiple (#48) "RTN","SDESAPTREQSET",263,0) N ASEQ,DELIM,PC,PR "RTN","SDESAPTREQSET",264,0) Q:$G(ARPRER)="" "RTN","SDESAPTREQSET",265,0) S DELIM=";",ASEQ=80 "RTN","SDESAPTREQSET",266,0) F PC=1:1:$L(ARPRER,DELIM) D "RTN","SDESAPTREQSET",267,0) .S PR=$P(ARPRER,DELIM,PC) Q:PR="" "RTN","SDESAPTREQSET",268,0) .S ASEQ=ASEQ+1,FDA(409.8548,"+"_ASEQ_","_ARIEN_",",.01)=PR "RTN","SDESAPTREQSET",269,0) Q "RTN","SDESAPTREQSET",270,0) ; "RTN","SDESAPTREQSET",271,0) FILE ;Perform file update "RTN","SDESAPTREQSET",272,0) ; Only call UPDATE^DIE if there are any array entries in FDA "RTN","SDESAPTREQSET",273,0) D:$D(FDA)>9 UPDATE^DIE("","FDA","ARRET","ARMSG") "RTN","SDESAPTREQSET",274,0) I $D(ARMSG) D Q "RTN","SDESAPTREQSET",275,0) . F MI=1:1:$G(ARMSG("DIERR")) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,48,$G(ARMSG("DIERR",MI,"TEXT",1))) "RTN","SDESAPTREQSET",276,0) ; "RTN","SDESAPTREQSET",277,0) N IEN "RTN","SDESAPTREQSET",278,0) S IEN=$S(+ARIEN:+ARIEN,1:ARRET(1)) "RTN","SDESAPTREQSET",279,0) S ARINSTI=$P($G(^SDEC(409.85,IEN,0)),U,3) "RTN","SDESAPTREQSET",280,0) I $G(ARPATCONT)'="" D AR23(ARPATCONT,IEN) ;patient contacts "RTN","SDESAPTREQSET",281,0) I +ARMAR,$G(MRTCPREFDT)'="" D AR435(MRTCPREFDT,IEN) ;MRTC CALC PREF DATES "RTN","SDESAPTREQSET",282,0) I +AUDF D ARAUD(IEN,ARCLIN,ARSTOP) ;VS AUDIT "RTN","SDESAPTREQSET",283,0) I $G(MULTIAPTMADE)'="" D "RTN","SDESAPTREQSET",284,0) .N SDI "RTN","SDESAPTREQSET",285,0) .F SDI=1:1:$L(MULTIAPTMADE,"|") S SDREC=$P(MULTIAPTMADE,"|",SDI) D AR433(IEN,SDREC) "RTN","SDESAPTREQSET",286,0) I +ARPARENT D AR433(+ARPARENT,"~"_IEN) "RTN","SDESAPTREQSET",287,0) ; "RTN","SDESAPTREQSET",288,0) I +$G(ARRET(1)) S SDAPTREQ("AptReqCreate","IEN")=IEN "RTN","SDESAPTREQSET",289,0) E S SDAPTREQ("AptReqUpdate","IEN")=IEN "RTN","SDESAPTREQSET",290,0) Q "RTN","SDESAPTREQSET",291,0) ; "RTN","SDESAPTREQSET",292,0) ARAUD(ARIEN,ARCLIN,ARSTOP,DATE,USER) ;populate VS AUDIT multiple field 45 "RTN","SDESAPTREQSET",293,0) ; ARIEN - (required) pointer to SDEC APPT REQUEST file 409.85 "RTN","SDESAPTREQSET",294,0) ; ARCLIN - (optional) pointer to HOSPITAL LOCATION file 44 "RTN","SDESAPTREQSET",295,0) ; ARSTOP - (optional) pointer to CLINIC STOP file "RTN","SDESAPTREQSET",296,0) ; DATE - (optional) date/time in fileman format "RTN","SDESAPTREQSET",297,0) N SDFDA,SDP,SDPN "RTN","SDESAPTREQSET",298,0) S ARIEN=$G(ARIEN) Q:ARIEN="" "RTN","SDESAPTREQSET",299,0) S ARCLIN=$G(ARCLIN) "RTN","SDESAPTREQSET",300,0) S ARSTOP=$G(ARSTOP) "RTN","SDESAPTREQSET",301,0) S SDP=$O(^SDEC(409.85,ARIEN,6,9999999),-1) "RTN","SDESAPTREQSET",302,0) I +SDP S SDPN=^SDEC(409.85,ARIEN,6,SDP,0) I $P(SDPN,U,3)=ARCLIN,$P(SDPN,U,4)=ARSTOP Q "RTN","SDESAPTREQSET",303,0) S DATE=$G(DATE) S:DATE="" DATE=$E($$NOW^XLFDT,1,12) "RTN","SDESAPTREQSET",304,0) S USER=$G(USER) S:USER="" USER=DUZ "RTN","SDESAPTREQSET",305,0) S SDFDA(409.8545,"+1,"_ARIEN_",",.01)=DATE "RTN","SDESAPTREQSET",306,0) S SDFDA(409.8545,"+1,"_ARIEN_",",1)=USER "RTN","SDESAPTREQSET",307,0) S:ARCLIN'="" SDFDA(409.8545,"+1,"_ARIEN_",",2)=ARCLIN "RTN","SDESAPTREQSET",308,0) S:ARSTOP'="" SDFDA(409.8545,"+1,"_ARIEN_",",3)=ARSTOP "RTN","SDESAPTREQSET",309,0) D UPDATE^DIE("","SDFDA") "RTN","SDESAPTREQSET",310,0) Q "RTN","SDESAPTREQSET",311,0) ; "RTN","SDESAPTREQSET",312,0) AR433(ARIEN,SDEC) ;set MULT APPTS MADE "RTN","SDESAPTREQSET",313,0) ;INPUT: "RTN","SDESAPTREQSET",314,0) ; ARIEN = (required) pointer to SDEC APPT REQUEST file 409.85 "RTN","SDESAPTREQSET",315,0) ; SDEC = (required) child pointers to SDEC APPOINTMENT and SDEC APPTREQUEST file separated by pipe "RTN","SDESAPTREQSET",316,0) ; each pipe piece contains the following ~ pieces: "RTN","SDESAPTREQSET",317,0) ; 1. Appointment Id pointer to SDEC APPOINTMENT file 409.84 "RTN","SDESAPTREQSET",318,0) ; 2. Request Id pointer to SDEC APPT REQUEST file 409.85 "RTN","SDESAPTREQSET",319,0) N SDAPP,SDFDA,SDI,SDIEN "RTN","SDESAPTREQSET",320,0) S ARIEN=$G(ARIEN) "RTN","SDESAPTREQSET",321,0) Q:'$D(^SDEC(409.85,ARIEN,0)) "RTN","SDESAPTREQSET",322,0) S SDEC=$G(SDEC) "RTN","SDESAPTREQSET",323,0) F SDI=1:1:$L(SDEC,"|") D "RTN","SDESAPTREQSET",324,0) .K SDFDA "RTN","SDESAPTREQSET",325,0) .S SDAPP=$P(SDEC,"|",SDI) "RTN","SDESAPTREQSET",326,0) .I $P(SDAPP,"~",2)="",$P(SDAPP,"~",1)'="" S $P(SDAPP,"~",2)=$P($$GET1^DIQ(409.84,+SDAPP_",",.22,"I"),";",1) "RTN","SDESAPTREQSET",327,0) .Q:$P(SDAPP,"~",2)="" "RTN","SDESAPTREQSET",328,0) .S SDIEN=$O(^SDEC(409.85,ARIEN,2,"B",$P(SDAPP,"~",2),0)) "RTN","SDESAPTREQSET",329,0) .S SDIEN=$S(SDIEN'="":SDIEN,1:"+1") "RTN","SDESAPTREQSET",330,0) .I $D(^SDEC(409.85,+$P(SDAPP,"~",2),0)) S SDFDA(409.852,SDIEN_","_ARIEN_",",.01)=+$P(SDAPP,"~",2) "RTN","SDESAPTREQSET",331,0) .I $D(^SDEC(409.84,+$P(SDAPP,"~",1),0)) S SDFDA(409.852,SDIEN_","_ARIEN_",",.02)=+$P(SDAPP,"~",1) "RTN","SDESAPTREQSET",332,0) .D:$D(SDFDA) UPDATE^DIE("","SDFDA") "RTN","SDESAPTREQSET",333,0) Q "RTN","SDESAPTREQSET",334,0) ; "RTN","SDESAPTREQSET",335,0) AR435(SDDT,ARIEN) ;set dates into MRTC CALC PREF DATES multiple field 43.5 "RTN","SDESAPTREQSET",336,0) ;INPUT: "RTN","SDESAPTREQSET",337,0) ; ARIEN - Requested date ID pointer to SDEC REQUESTED APPT file 409.85 "RTN","SDESAPTREQSET",338,0) ; SDDT - MRTC calculated preferred dates separated by pipe |: "RTN","SDESAPTREQSET",339,0) ; Each date can be in external format with no time. "RTN","SDESAPTREQSET",340,0) N SDI,SDJ,SDFDA,TMPDT "RTN","SDESAPTREQSET",341,0) F SDI=1:1:$L(SDDT,"|") D "RTN","SDESAPTREQSET",342,0) .S TMPDT=$P($P(SDDT,"|",SDI),"@",1) "RTN","SDESAPTREQSET",343,0) .S SDJ=$$CALLDT(TMPDT) "RTN","SDESAPTREQSET",344,0) .Q:SDJ=-1 "RTN","SDESAPTREQSET",345,0) .Q:$O(^SDEC(409.85,ARIEN,5,"B",SDJ,0)) ;don't add duplicates "RTN","SDESAPTREQSET",346,0) .S SDFDA(409.851,"+1,"_ARIEN_",",.01)=SDJ "RTN","SDESAPTREQSET",347,0) .D UPDATE^DIE("","SDFDA") "RTN","SDESAPTREQSET",348,0) Q "RTN","SDESAPTREQSET",349,0) ; "RTN","SDESAPTREQSET",350,0) AR23(INP17,ARI) ;Patient Contacts "RTN","SDESAPTREQSET",351,0) N STR17,ARASD,ARASDH,ARDATA1,ARERR1,ARI1,ARIENS,ARIENS1,ARRET1,FDA,ARMSG1 "RTN","SDESAPTREQSET",352,0) N ARDT,ARUSR "RTN","SDESAPTREQSET",353,0) S ARIENS=ARI_"," "RTN","SDESAPTREQSET",354,0) F ARI1=1:1:$L(INP17,"::") D "RTN","SDESAPTREQSET",355,0) .S STR17=$P(INP17,"::",ARI1) "RTN","SDESAPTREQSET",356,0) .K FDA "RTN","SDESAPTREQSET",357,0) .; "RTN","SDESAPTREQSET",358,0) .; Change date conversion to deal with midnight. 5/29/18 wtc patch 694 "RTN","SDESAPTREQSET",359,0) .; "RTN","SDESAPTREQSET",360,0) .S ARASD=$P($P(STR17,"~~",1),":",1,2) "RTN","SDESAPTREQSET",361,0) .S ARASD=$$NETTOFM^SDECDATE(ARASD,"Y") "RTN","SDESAPTREQSET",362,0) .I (ARASD=-1)!(ARASD="") Q "RTN","SDESAPTREQSET",363,0) .S ARDT=$P($P(STR17,"~~",1),":",1,2) "RTN","SDESAPTREQSET",364,0) .S ARASDH="" "RTN","SDESAPTREQSET",365,0) .S ARIENS1=$S(ARASDH'="":ARASDH,1:"+1")_","_ARIENS "RTN","SDESAPTREQSET",366,0) .S FDA=$NA(FDA(409.8544,ARIENS1)) "RTN","SDESAPTREQSET",367,0) .I ARASDH'="" D "RTN","SDESAPTREQSET",368,0) ..D GETS^DIQ(409.8544,ARIENS1,"*","IE","ARDATA1","ARERR1") "RTN","SDESAPTREQSET",369,0) ..I $P(STR17,"~~",1)'="" S @FDA@(.01)=ARDT ;DATE ENTERED external date/time "RTN","SDESAPTREQSET",370,0) ..I $P(STR17,"~~",2)'="" S ARUSR=$P(STR17,"~~",2) S @FDA@(2)=$S(ARUSR="":"@",+ARUSR:$P($G(^VA(200,ARUSR,0)),U,1),1:ARUSER) ;PC ENTERED BY USER "RTN","SDESAPTREQSET",371,0) ..I $P(STR17,"~~",4)'="" S @FDA@(3)=$P(STR17,"~~",4) ;ACTION C=Called; M=Message Left; L=LETTER "RTN","SDESAPTREQSET",372,0) ..I $P(STR17,"~~",5)'="" S @FDA@(4)=$P(STR17,"~~",5) ;PATIENT PHONE "RTN","SDESAPTREQSET",373,0) .I ARASDH="" D "RTN","SDESAPTREQSET",374,0) ..I $P(STR17,"~~",1)'="" S @FDA@(.01)=ARDT ;DATE ENTERED external date/time "RTN","SDESAPTREQSET",375,0) ..I $P(STR17,"~~",2)'="" S ARUSR=$P(STR17,"~~",2) S @FDA@(2)=$S(ARUSR="":"@",+ARUSR:$P($G(^VA(200,ARUSR,0)),U,1),1:ARUSR) ;PC ENTERED BY USER "RTN","SDESAPTREQSET",376,0) ..I $P(STR17,"~~",4)'="" S @FDA@(3)=$P(STR17,"~~",4) ;ACTION C=Called; M=Message Left; L=LETTER "RTN","SDESAPTREQSET",377,0) ..I $P(STR17,"~~",5)'="" S @FDA@(4)=$P(STR17,"~~",5) ;PATIENT PHONE "RTN","SDESAPTREQSET",378,0) .D:$D(@FDA) UPDATE^DIE("E","FDA","ARRET1","ARMSG1") "RTN","SDESAPTREQSET",379,0) Q "RTN","SDESAPTREQSET",380,0) CALLDT(X) ; "RTN","SDESAPTREQSET",381,0) N Y,%DT "RTN","SDESAPTREQSET",382,0) S %DT="" D ^%DT "RTN","SDESAPTREQSET",383,0) Q Y "RTN","SDESAPTREQSET",384,0) ; "RTN","SDESAPTREQSET",385,0) BUILDER ;Convert data to JSON "RTN","SDESAPTREQSET",386,0) N JSONERR "RTN","SDESAPTREQSET",387,0) S JSONERR="" "RTN","SDESAPTREQSET",388,0) D ENCODE^SDESJSON(.SDAPTREQ,.RETURN,.JSONERR) "RTN","SDESAPTREQSET",389,0) Q "RTN","SDESARCLOSE") 0^7^B8714831^B7891139 "RTN","SDESARCLOSE",1,0) SDESARCLOSE ;ALB/BLB,MGD - VISTA SCHEDULING RPCS ;Jan 7, 2022@11:19 "RTN","SDESARCLOSE",2,0) ;;5.3;Scheduling;**794,799,805**;Aug 13, 1993;Build 9 "RTN","SDESARCLOSE",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESARCLOSE",4,0) ; Reference to ^DPT(DFN,0) in ICR #10035 "RTN","SDESARCLOSE",5,0) ; "RTN","SDESARCLOSE",6,0) DISPOSITION(RETURN,ARIEN,DISP,DISPBY,DISPDT,EASTRCKNGNMBR) ;Disposition an appt req "RTN","SDESARCLOSE",7,0) ;Input "RTN","SDESARCLOSE",8,0) ; IEN - Request ID - Pointer to SDEC APPT REQUEST file "RTN","SDESARCLOSE",9,0) ; DISP - Disposition "RTN","SDESARCLOSE",10,0) ; DISPBY - User Id - Pointer to NEW PERSON file "RTN","SDESARCLOSE",11,0) ; DISPDT - Date Dispositioned in external form "RTN","SDESARCLOSE",12,0) ; EASTRCKNGNMBR - (optional) Enterprise Appointment Scheduling Tracking Number associated to an appointment. "RTN","SDESARCLOSE",13,0) N SDAPTREQ,POP,ARFDA,ARRET,ARMSG,X,MI,%DT "RTN","SDESARCLOSE",14,0) I $G(ARIEN)="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,3) "RTN","SDESARCLOSE",15,0) I $G(ARIEN)'="",'$D(^SDEC(409.85,ARIEN)) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,4) "RTN","SDESARCLOSE",16,0) I $G(DISP)="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,42) "RTN","SDESARCLOSE",17,0) ; Re-mapped the Dispositions to their corresponding pointer value "RTN","SDESARCLOSE",18,0) I $G(DISP)'="" D "RTN","SDESARCLOSE",19,0) .S:DISP="DEATH" DISP=1 "RTN","SDESARCLOSE",20,0) .S:DISP="REMOVED/NON-VA CARE" DISP=2 "RTN","SDESARCLOSE",21,0) .S:DISP="REMOVED/SCHEDULED-ASSIGNED" DISP=3 "RTN","SDESARCLOSE",22,0) .S:DISP="REMOVED/VA CONTRACT CARE" DISP=4 "RTN","SDESARCLOSE",23,0) .S:DISP="REMOVED/NO LONGER NECESSARY" DISP=5 "RTN","SDESARCLOSE",24,0) .S:DISP="ENTERED IN ERROR" DISP=6 "RTN","SDESARCLOSE",25,0) .S:DISP="TRANSFERRED TO EWL" DISP=7 "RTN","SDESARCLOSE",26,0) .S:DISP="CHANGED CLINIC" DISP=8 "RTN","SDESARCLOSE",27,0) .S:DISP="MRTC PARENT CLOSED" DISP=9 "RTN","SDESARCLOSE",28,0) .S:DISP="REMOVED/EXTERNAL APP" DISP=10 ;* 745 "RTN","SDESARCLOSE",29,0) .S:DISP="FAILURE TO RESPOND" DISP=11 "RTN","SDESARCLOSE",30,0) I $G(DISP)'="" D "RTN","SDESARCLOSE",31,0) .I '+DISP!((DISP<1)!(DISP>11)) D "RTN","SDESARCLOSE",32,0) ..S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,43) "RTN","SDESARCLOSE",33,0) ;validate DISPOSITIONED BY "RTN","SDESARCLOSE",34,0) I $G(DISPBY)="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,53) "RTN","SDESARCLOSE",35,0) I $G(DISPBY)'="",'$D(^VA(200,+DISPBY,0)) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,54) "RTN","SDESARCLOSE",36,0) ;validate DATE DISPOSITIONED "RTN","SDESARCLOSE",37,0) I $G(DISPDT)'="" N Y S %DT="" S X=DISPDT D ^%DT S DISPDT=Y D "RTN","SDESARCLOSE",38,0) .I Y=-1 S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,55) "RTN","SDESARCLOSE",39,0) I $G(DISPDT)="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,56) "RTN","SDESARCLOSE",40,0) ;validate EAS Tracking Number "RTN","SDESARCLOSE",41,0) S EASTRCKNGNMBR=$TR($G(EASTRCKNGNMBR),"^"," ") "RTN","SDESARCLOSE",42,0) I $L(EASTRCKNGNMBR) S EASTRCKNGNMBR=$$EASVALIDATE^SDESUTIL(EASTRCKNGNMBR) "RTN","SDESARCLOSE",43,0) I +EASTRCKNGNMBR=-1 S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,142) "RTN","SDESARCLOSE",44,0) ; "RTN","SDESARCLOSE",45,0) I '$G(POP) D "RTN","SDESARCLOSE",46,0) .S ARFDA=$NA(ARFDA(409.85,ARIEN_",")) "RTN","SDESARCLOSE",47,0) .S @ARFDA@(19)=DISPDT "RTN","SDESARCLOSE",48,0) .S @ARFDA@(20)=DISPBY "RTN","SDESARCLOSE",49,0) .S @ARFDA@(21)=DISP "RTN","SDESARCLOSE",50,0) .S @ARFDA@(23)="C" "RTN","SDESARCLOSE",51,0) .S @ARFDA@(100)=EASTRCKNGNMBR "RTN","SDESARCLOSE",52,0) .D UPDATE^DIE("","ARFDA","ARRET","ARMSG") "RTN","SDESARCLOSE",53,0) .I '$D(ARMSG) D "RTN","SDESARCLOSE",54,0) ..S SDAPTREQ("ApptReqDisposition","FilingSuccess")=1 "RTN","SDESARCLOSE",55,0) .I $D(ARMSG("DIERR")) D "RTN","SDESARCLOSE",56,0) ..S POP=1 "RTN","SDESARCLOSE",57,0) ..F MI=1:1:$G(ARMSG("DIERR")) D ERRLOG^SDESJSON(.SDAPTREQ,47,$G(ARMSG("DIERR",MI,"TEXT",1))) "RTN","SDESARCLOSE",58,0) .;SEND HL7 TO CPRS IF RTC REQUEST "RTN","SDESARCLOSE",59,0) .I '$G(POP),$P(^SDEC(409.85,ARIEN,0),U,5)="RTC" D "RTN","SDESARCLOSE",60,0) ..I DISP=3!(DISP=9) D ARDISP^SDECHL7(ARIEN,"") "RTN","SDESARCLOSE",61,0) ..I DISP'=3&(DISP'=9) D ARDISP^SDECHL7(ARIEN,1) "RTN","SDESARCLOSE",62,0) ..I $D(^TMP($J,"REJECT",ARIEN)) D "RTN","SDESARCLOSE",63,0) ...S POP=1,X=$G(^TMP(SDHL7IN("ORDER IEN"))) "RTN","SDESARCLOSE",64,0) ...D ERRLOG^SDESJSON(.SDAPTREQ,47,X) "RTN","SDESARCLOSE",65,0) D BUILDER "RTN","SDESARCLOSE",66,0) Q "RTN","SDESARCLOSE",67,0) BUILDER ;Convert data to JSON "RTN","SDESARCLOSE",68,0) N JSONERR "RTN","SDESARCLOSE",69,0) S JSONERR="" "RTN","SDESARCLOSE",70,0) D ENCODE^SDESJSON(.SDAPTREQ,.RETURN,.JSONERR) "RTN","SDESARCLOSE",71,0) Q "RTN","SDESARGET") 0^8^B98126417^B93986949 "RTN","SDESARGET",1,0) SDESARGET ;ALB/BLB,MGD - VISTA SCHEDULING RPCS ;Jan 07, 2021@14:12 "RTN","SDESARGET",2,0) ;;5.3;Scheduling;**794,799,805**;Aug 13, 1993;Build 9 "RTN","SDESARGET",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESARGET",4,0) ; Reference to ^DPT(DFN,0) in ICR #10035 "RTN","SDESARGET",5,0) ; "RTN","SDESARGET",6,0) Q "RTN","SDESARGET",7,0) ; "RTN","SDESARGET",8,0) ; Get SDEC APPOINTMENT REQUEST for all entries in the user's Institution "RTN","SDESARGET",9,0) ; where the Current Status is not C(losed). "RTN","SDESARGET",10,0) ; "RTN","SDESARGET",11,0) ; This RPC differs from SDEC ARGET in that only appointment specific data is returned. "RTN","SDESARGET",12,0) ; "RTN","SDESARGET",13,0) ; The ARGETPAT and ARGETPATJSON entry points must be kept in sync when passing in "RTN","SDESARGET",14,0) ; new parameters "RTN","SDESARGET",15,0) ; "RTN","SDESARGET",16,0) ARGETPATJSON(RET,DFN,SDEAS) ;Entry point to return JSON "RTN","SDESARGET",17,0) ; SDEC GET PATIENT APPT REQ JSON "RTN","SDESARGET",18,0) ; ARGETPATJSON^SDEC1 "RTN","SDESARGET",19,0) N FILT,APPT,ERR,JSONFLG,JSONERR,COPUNT "RTN","SDESARGET",20,0) S JSONFLG=1,JSONERR="" "RTN","SDESARGET",21,0) S SDEAS=$G(SDEAS,"") "RTN","SDESARGET",22,0) I $L(SDEAS) S SDEAS=$$EASVALIDATE^SDESUTIL(SDEAS) "RTN","SDESARGET",23,0) I +SDEAS=-1 D ERRLOG^SDESJSON(.APPT,142),BUILDJSON Q "RTN","SDESARGET",24,0) D JSONEP "RTN","SDESARGET",25,0) I '$D(APPT("Error")),'$D(APPT("ApptReq")) S APPT("ApptReq")="" ;No appt req for this patient "RTN","SDESARGET",26,0) D BUILDJSON "RTN","SDESARGET",27,0) Q "RTN","SDESARGET",28,0) ; "RTN","SDESARGET",29,0) ARGETIENJSON(RET,ARIEN,SDEAS) ;Appt Req GET for speific appt IEN "RTN","SDESARGET",30,0) ; SDEC GET PAT APPT REQ BY IEN "RTN","SDESARGET",31,0) ; ARGETIEN^SDEC1 "RTN","SDESARGET",32,0) N FILT,APPT,COUNT,FNUM,DFN,ARDATA,JSONFLG,JSONERR "RTN","SDESARGET",33,0) S JSONFLG=1,JSONERR="" "RTN","SDESARGET",34,0) D INIT "RTN","SDESARGET",35,0) S ARIEN=$G(ARIEN) "RTN","SDESARGET",36,0) I ARIEN="" D ERRLOG^SDESJSON(.APPT,3) "RTN","SDESARGET",37,0) S SDEAS=$G(SDEAS,"") "RTN","SDESARGET",38,0) I $L(SDEAS) S SDEAS=$$EASVALIDATE^SDESUTIL(SDEAS) "RTN","SDESARGET",39,0) I +SDEAS=-1 D ERRLOG^SDESJSON(.APPT,142),BUILDJSON Q "RTN","SDESARGET",40,0) S FNUM=$$FNUM^SDECAR "RTN","SDESARGET",41,0) I ARIEN'="",('$D(^SDEC(409.85,ARIEN))) S ARIEN="" D ERRLOG^SDESJSON(.APPT,4) "RTN","SDESARGET",42,0) I ARIEN D GETS^DIQ(FNUM,ARIEN,"**","IE","ARDATA","ARMSG") ;Get data for all field for this appt req "RTN","SDESARGET",43,0) I $D(ARDATA)>1 D BUILDREC(.ARDATA) "RTN","SDESARGET",44,0) D BUILDJSON "RTN","SDESARGET",45,0) Q "RTN","SDESARGET",46,0) ; "RTN","SDESARGET",47,0) JSONEP ; "RTN","SDESARGET",48,0) D INIT "RTN","SDESARGET",49,0) I $$VALIDATE()=0 D:'$G(JSONFLG) EXIT Q "RTN","SDESARGET",50,0) D PROCESS "RTN","SDESARGET",51,0) Q "RTN","SDESARGET",52,0) ; "RTN","SDESARGET",53,0) INIT ; Initalize any process specific variables "RTN","SDESARGET",54,0) S COUNT=0 "RTN","SDESARGET",55,0) S FILT("SKIP STAT","C")="" ;Exclude closed requests "RTN","SDESARGET",56,0) S FILT("INDEX")="DFN^"_$G(DFN) "RTN","SDESARGET",57,0) Q "RTN","SDESARGET",58,0) ; "RTN","SDESARGET",59,0) VALIDATE() ;Validata input params "RTN","SDESARGET",60,0) N VALID,DFN,COUNT "RTN","SDESARGET",61,0) S VALID=1 ;Assume all is good "RTN","SDESARGET",62,0) ; "RTN","SDESARGET",63,0) S DFN=$P(FILT("INDEX"),"^",2) "RTN","SDESARGET",64,0) I +DFN<1 S VALID=0 D ERRLOG^SDESJSON(.APPT,1) "RTN","SDESARGET",65,0) I +DFN>0,'$D(^DPT(DFN,0)) S VALID=0 D ERRLOG^SDESJSON(.APPT,2) ;This is a valid DFN "RTN","SDESARGET",66,0) I 'VALID,'$G(JSONFLG) D ERR1^SDECERR(-1,"Invalid Patient ID.",.COUNT,.RET) "RTN","SDESARGET",67,0) ; "RTN","SDESARGET",68,0) Q VALID "RTN","SDESARGET",69,0) ; "RTN","SDESARGET",70,0) PROCESS ; Loop over primary index "RTN","SDESARGET",71,0) N ARIEN,FNUM,COUNT "RTN","SDESARGET",72,0) S FNUM=$$FNUM^SDECAR,COUNT=0 "RTN","SDESARGET",73,0) ; "RTN","SDESARGET",74,0) S ARIEN=0 "RTN","SDESARGET",75,0) F S ARIEN=$O(^SDEC(409.85,"B",+DFN,ARIEN)) Q:ARIEN'>0 D ONEPAT "RTN","SDESARGET",76,0) Q "RTN","SDESARGET",77,0) ; "RTN","SDESARGET",78,0) ONEPAT ; Process one patient "RTN","SDESARGET",79,0) N ARDATA,ARMSG "RTN","SDESARGET",80,0) I $$VALIDIEN()=0 Q ;Is this appt request one that we are looking for "RTN","SDESARGET",81,0) D GETS^DIQ(FNUM,ARIEN,"**","IE","ARDATA","ARMSG") ;Get data for all field for this appt req "RTN","SDESARGET",82,0) D:$D(ARDATA)>1 BUILDREC(.ARDATA) "RTN","SDESARGET",83,0) Q "RTN","SDESARGET",84,0) ; "RTN","SDESARGET",85,0) VALIDIEN() ;Validate the appointment request "RTN","SDESARGET",86,0) N VALID,ARSTAT "RTN","SDESARGET",87,0) S VALID=1 ;Assume this is a good record "RTN","SDESARGET",88,0) ; Is status for this request on the skip list "RTN","SDESARGET",89,0) I $D(FILT("SKIP STAT")) D "RTN","SDESARGET",90,0) .S ARSTAT=$$GET1^DIQ(409.85,ARIEN_",",23,"I") "RTN","SDESARGET",91,0) .I ARSTAT'="",$D(FILT("SKIP STAT",ARSTAT)) S VALID=0 "RTN","SDESARGET",92,0) I VALID,$$GET1^DIQ(409.85,ARIEN_",",.01,"I")="" S VALID=0 ;Missing DFN "RTN","SDESARGET",93,0) Q VALID "RTN","SDESARGET",94,0) ; "RTN","SDESARGET",95,0) BUILDREC(ARDATA) ; Build an output record "RTN","SDESARGET",96,0) ; Input - ARDATA = array containing data from SDEC APPT REQUEST file (#409.85) "RTN","SDESARGET",97,0) N ARSTAT,DFN,SDPS,SDCLY,ARORIGDT,SDI,STR,SDCL,CALLLETTER,I,X,VAR,SUBCNT,SDECLET,SDECALL "RTN","SDESARGET",98,0) N ARINST,ARINSTNM,ARTYPE,VAOSGUID,ARSTOP,ARSTOPN,ARCLIEN,ARCLNAME,APPTYPE,ARUSER,ARUSRNM "RTN","SDESARGET",99,0) N AREDT,ARPRIO,ARENPRI,ARREQBY,ARPROV,ARPROVNM,ARSDOA,ARSDOA,ARDAM,ARCLERK,ARCLERKN,ARASD,ARSDOA "RTN","SDESARGET",100,0) N ARCLERK,ARCLERKN,ARDAM,ARSVCCON,ARDAPTDT,ARCOMM,ARMAR,ARMAI,ARMAN,ARPC,ARDISPD,ARDISPU,ARDISPUN "RTN","SDESARGET",101,0) N APPTPTRS,CHILDREN,ARMRTC,SDPARENT,SDMTRC,AREAS "RTN","SDESARGET",102,0) N I,L,ZZ "RTN","SDESARGET",103,0) S ARORIGDT=ARDATA(FNUM,ARIEN_",",1,"I") "RTN","SDESARGET",104,0) S ARSTAT=ARDATA(FNUM,ARIEN_",",23,"I") "RTN","SDESARGET",105,0) S DFN=ARDATA(FNUM,ARIEN_",",.01,"I") "RTN","SDESARGET",106,0) S SDPS=ARDATA(FNUM,ARIEN_",",.02,"E") "RTN","SDESARGET",107,0) S SDCL=ARDATA(FNUM,ARIEN_",",8,"I") "RTN","SDESARGET",108,0) S ARINST=ARDATA(FNUM,ARIEN_",",2,"I") "RTN","SDESARGET",109,0) S ARINSTNM=ARDATA(FNUM,ARIEN_",",2,"E") "RTN","SDESARGET",110,0) S ARTYPE=ARDATA(FNUM,ARIEN_",",4,"I") "RTN","SDESARGET",111,0) S ARCLIEN=ARDATA(FNUM,ARIEN_",",8,"I") "RTN","SDESARGET",112,0) S ARSTOP=ARDATA(FNUM,ARIEN_",",8.5,"I") "RTN","SDESARGET",113,0) S ARSTOPN=ARDATA(FNUM,ARIEN_",",8.5,"E") "RTN","SDESARGET",114,0) S ARCLNAME=ARDATA(FNUM,ARIEN_",",8,"E") "RTN","SDESARGET",115,0) S APPTYPE=ARDATA(FNUM,ARIEN_",",8.7,"I") "RTN","SDESARGET",116,0) S ARUSER=ARDATA(FNUM,ARIEN_",",9,"I") "RTN","SDESARGET",117,0) S ARUSRNM=ARDATA(FNUM,ARIEN_",",9,"E") "RTN","SDESARGET",118,0) S AREDT=$G(ARDATA(FNUM,ARIEN_",",9.5,"E")) ;53 "RTN","SDESARGET",119,0) S ARPRIO=ARDATA(FNUM,ARIEN_",",10,"I") "RTN","SDESARGET",120,0) S ARENPRI=ARDATA(FNUM,ARIEN_",",10.5,"E") ;msc/sat "RTN","SDESARGET",121,0) S ARREQBY=ARDATA(FNUM,ARIEN_",",11,"I") "RTN","SDESARGET",122,0) S ARPROV=ARDATA(FNUM,ARIEN_",",12,"I") "RTN","SDESARGET",123,0) S ARPROVNM=ARDATA(FNUM,ARIEN_",",12,"E") "RTN","SDESARGET",124,0) S ARSDOA=ARDATA(FNUM,ARIEN_",",13,"I") ;scheduled date of appt "RTN","SDESARGET",125,0) ; Change date/time conversion so midnight is handled properly. wtc/pwc 694 1/7/2020 "RTN","SDESARGET",126,0) ; "RTN","SDESARGET",127,0) S ARSDOA=$$FMTONET^SDECDATE(ARSDOA,"N") ; "RTN","SDESARGET",128,0) S ARDAM=ARDATA(FNUM,ARIEN_",",13.1,"E") ;date appt. made "RTN","SDESARGET",129,0) S ARCLERK=ARDATA(FNUM,ARIEN_",",13.7,"I") ;appt clerk ien "RTN","SDESARGET",130,0) S ARCLERKN=ARDATA(FNUM,ARIEN_",",13.7,"E") ;appt clerk name "RTN","SDESARGET",131,0) S ARASD="" "RTN","SDESARGET",132,0) S:ARSDOA'="" $P(ARASD,"~~",1)=ARSDOA "RTN","SDESARGET",133,0) S:ARCLERK'="" $P(ARASD,"~~",12)=ARCLERK "RTN","SDESARGET",134,0) S:ARCLERKN'="" $P(ARASD,"~~",13)=ARCLERKN "RTN","SDESARGET",135,0) S:ARDAM'="" $P(ARASD,"~~",17)=ARDAM "RTN","SDESARGET",136,0) S ARSVCCON=ARDATA(FNUM,ARIEN_",",15,"E") "RTN","SDESARGET",137,0) S ARDAPTDT=ARDATA(FNUM,ARIEN_",",22,"I") "RTN","SDESARGET",138,0) ;VSE-1218; start process mult lines of comments "RTN","SDESARGET",139,0) S ARCOMM=ARDATA(FNUM,ARIEN_",",25,"I") "RTN","SDESARGET",140,0) S ARMAR=ARDATA(409.85,ARIEN_",",41,"E") "RTN","SDESARGET",141,0) S ARMAI=ARDATA(409.85,ARIEN_",",42,"E") "RTN","SDESARGET",142,0) S ARMAN=ARDATA(409.85,ARIEN_",",43,"E") "RTN","SDESARGET",143,0) S ARPC=$$WLPC^SDECAR1A(.ARDATA,ARIEN) "RTN","SDESARGET",144,0) S ARDISPD=ARDATA(FNUM,ARIEN_",",19,"E") "RTN","SDESARGET",145,0) S ARDISPU=ARDATA(FNUM,ARIEN_",",20,"I") "RTN","SDESARGET",146,0) S ARDISPUN=ARDATA(FNUM,ARIEN_",",20,"E") "RTN","SDESARGET",147,0) S AREAS=ARDATA(FNUM,ARIEN_",",100,"E") ; EAS tracking number added with patch SD*5.3*799 "RTN","SDESARGET",148,0) S APPTPTRS=$$GETAPPTS^SDECAR1A(ARIEN) "RTN","SDESARGET",149,0) S CHILDREN=$$CHILDREN^SDECAR1A(ARIEN) "RTN","SDESARGET",150,0) S ARMRTC=$$MRTC^SDECAR(ARIEN) "RTN","SDESARGET",151,0) S SDPARENT=ARDATA(FNUM,ARIEN_",",43.8,"I") "RTN","SDESARGET",152,0) ;Build string of RTC dates "RTN","SDESARGET",153,0) S (SDI,SDMTRC)="" "RTN","SDESARGET",154,0) F S SDI=$O(ARDATA(409.851,SDI)) Q:SDI="" S SDMTRC=$S(SDMTRC'="":SDMTRC_"|",1:"")_ARDATA(409.851,SDI,.01,"E") "RTN","SDESARGET",155,0) ;# OF CALLS MADE AND DATE LAST LETTER SENT "RTN","SDESARGET",156,0) S CALLLETTER=$$CALLET^SDECAR1A(DFN,ARIEN) "RTN","SDESARGET",157,0) ; "RTN","SDESARGET",158,0) S COUNT=$G(COUNT)+1 "RTN","SDESARGET",159,0) ; "RTN","SDESARGET",160,0) S APPT("ApptReq",COUNT,"PatientIEN")=DFN "RTN","SDESARGET",161,0) S APPT("ApptReq",COUNT,"ApptReqIEN")=ARIEN "RTN","SDESARGET",162,0) S APPT("ApptReq",COUNT,"CreateDateI")=ARORIGDT "RTN","SDESARGET",163,0) S APPT("ApptReq",COUNT,"InstitutionI")=ARINST "RTN","SDESARGET",164,0) S APPT("ApptReq",COUNT,"InstitutionE")=ARINSTNM "RTN","SDESARGET",165,0) S APPT("ApptReq",COUNT,"RequestTypeI")=ARTYPE "RTN","SDESARGET",166,0) S APPT("ApptReq",COUNT,"ReqSpecificClinicI")=ARCLIEN "RTN","SDESARGET",167,0) S APPT("ApptReq",COUNT,"ReqSpecificClinicE")=ARCLNAME "RTN","SDESARGET",168,0) S APPT("ApptReq",COUNT,"OriginatingUserI")=ARUSER "RTN","SDESARGET",169,0) S APPT("ApptReq",COUNT,"OriginatingUserE")=ARUSRNM "RTN","SDESARGET",170,0) S APPT("ApptReq",COUNT,"PriorityI")=ARPRIO "RTN","SDESARGET",171,0) S APPT("ApptReq",COUNT,"RequestedByI")=ARREQBY "RTN","SDESARGET",172,0) S APPT("ApptReq",COUNT,"ProviderI")=ARPROV "RTN","SDESARGET",173,0) S APPT("ApptReq",COUNT,"ProviderE")=ARPROVNM "RTN","SDESARGET",174,0) S APPT("ApptReq",COUNT,"CidPreferredDateOfApptI")=ARDAPTDT "RTN","SDESARGET",175,0) S APPT("ApptReq",COUNT,"CommentsE")=ARCOMM "RTN","SDESARGET",176,0) S APPT("ApptReq",COUNT,"EnrollmentPriorityE")=ARENPRI "RTN","SDESARGET",177,0) S APPT("ApptReq",COUNT,"MultipleAppointmentRtcE")=ARMAR "RTN","SDESARGET",178,0) S APPT("ApptReq",COUNT,"MultApptRtcIntervalE")=ARMAI "RTN","SDESARGET",179,0) S APPT("ApptReq",COUNT,"MultApptNumberE")=ARMAN "RTN","SDESARGET",180,0) S APPT("ApptReq",COUNT,"EASTrackingNumberE")=AREAS "RTN","SDESARGET",181,0) S SUBCNT=0 "RTN","SDESARGET",182,0) F I=1:1:$L(ARPC,"::") D "RTN","SDESARGET",183,0) .S VAR=$P(ARPC,"::",I) "RTN","SDESARGET",184,0) .Q:VAR="" "RTN","SDESARGET",185,0) .S SUBCNT=SUBCNT+1 "RTN","SDESARGET",186,0) .S APPT("ApptReq",COUNT,"PatientContact",SUBCNT,"DateEnteredI")=$P(VAR,"~~",1) "RTN","SDESARGET",187,0) .S APPT("ApptReq",COUNT,"PatientContact",SUBCNT,"EnteredByUserI")=$P(VAR,"~~",2) "RTN","SDESARGET",188,0) .S APPT("ApptReq",COUNT,"PatientContact",SUBCNT,"EnteredByUserE")=$P(VAR,"~~",3) "RTN","SDESARGET",189,0) .S APPT("ApptReq",COUNT,"PatientContact",SUBCNT,"ActionE")=$P(VAR,"~~",4) "RTN","SDESARGET",190,0) .S APPT("ApptReq",COUNT,"PatientContact",SUBCNT,"PatientPhoneE")=$P(VAR,"~~",5) "RTN","SDESARGET",191,0) .Q "RTN","SDESARGET",192,0) I '$D(APPT("ApptReq",COUNT,"PatientContact")) S APPT("ApptReq",COUNT,"PatientContact")="" "RTN","SDESARGET",193,0) ; "RTN","SDESARGET",194,0) S APPT("ApptReq",COUNT,"DateDispositionedE")=ARDISPD "RTN","SDESARGET",195,0) S APPT("ApptReq",COUNT,"DispositionedByI")=ARDISPU "RTN","SDESARGET",196,0) S APPT("ApptReq",COUNT,"DispositionedByE")=ARDISPUN "RTN","SDESARGET",197,0) S APPT("ApptReq",COUNT,"ServiceConnectedPriorityE")=ARSVCCON "RTN","SDESARGET",198,0) S APPT("ApptReq",COUNT,"DateTimeEnteredE")=AREDT "RTN","SDESARGET",199,0) S SUBCNT=0 "RTN","SDESARGET",200,0) F I=1:1:$L(SDMTRC,"|") D "RTN","SDESARGET",201,0) .S:$P(SDMTRC,"|",I)'="" APPT("ApptReq",COUNT,"MRTCCalcPrefDates",$I(SUBCNT),"Date")=$P(SDMTRC,"|",I) "RTN","SDESARGET",202,0) I '$D(APPT("ApptReq",COUNT,"MRTCCalcPrefDates")) S APPT("ApptReq",COUNT,"MRTCCalcPrefDates")="" "RTN","SDESARGET",203,0) ; "RTN","SDESARGET",204,0) S APPT("ApptReq",COUNT,"ReqServiceSpecialtyI")=ARSTOP "RTN","SDESARGET",205,0) S APPT("ApptReq",COUNT,"ReqServiceSpecialtyE")=ARSTOPN "RTN","SDESARGET",206,0) S APPT("ApptReq",COUNT,"ScheduledDateOfApptI")=ARSDOA "RTN","SDESARGET",207,0) S APPT("ApptReq",COUNT,"ApptClerkI")=ARCLERK "RTN","SDESARGET",208,0) S APPT("ApptReq",COUNT,"ApptClerkE")=ARCLERKN "RTN","SDESARGET",209,0) S APPT("ApptReq",COUNT,"DateApptMadeE")=ARDAM "RTN","SDESARGET",210,0) S APPT("ApptReq",COUNT,"CountOfRTCs")=ARMRTC ;Count of nodes in 43.3 sub file "RTN","SDESARGET",211,0) S APPT("ApptReq",COUNT,"ReqAppointmentTypeI")=APPTYPE "RTN","SDESARGET",212,0) S APPT("ApptReq",COUNT,"PatientStatusE")=SDPS "RTN","SDESARGET",213,0) S SUBCNT=0 "RTN","SDESARGET",214,0) F I=1:1:$L(APPTPTRS,"|") D "RTN","SDESARGET",215,0) .S VAR=$P(APPTPTRS,"|",I) "RTN","SDESARGET",216,0) .S:VAR'="" APPT("ApptReq",COUNT,"MultiAppointmentsI",$I(SUBCNT),"IEN")=VAR "RTN","SDESARGET",217,0) I '$D(APPT("ApptReq",COUNT,"MultiAppointmentsI")) S APPT("ApptReq",COUNT,"MultiAppointmentsI")="" "RTN","SDESARGET",218,0) ; "RTN","SDESARGET",219,0) S SUBCNT=0 "RTN","SDESARGET",220,0) F I=1:1:$L(CHILDREN,"|") D "RTN","SDESARGET",221,0) .S VAR=$P(CHILDREN,"|",I) "RTN","SDESARGET",222,0) .S:VAR'="" APPT("ApptReq",COUNT,"MultiApptRequestsChildI",$I(SUBCNT),"ARIEN")=VAR "RTN","SDESARGET",223,0) I '$D(APPT("ApptReq",COUNT,"MultiApptRequestsChildI")) S APPT("ApptReq",COUNT,"MultiApptRequestsChildI")="" "RTN","SDESARGET",224,0) ; "RTN","SDESARGET",225,0) S APPT("ApptReq",COUNT,"ParentRequestI")=SDPARENT "RTN","SDESARGET",226,0) S APPT("ApptReq",COUNT,"NumberOfCalls")=$P(CALLLETTER,"^",1) "RTN","SDESARGET",227,0) S APPT("ApptReq",COUNT,"DateOfLastLetterSent")=$P(CALLLETTER,"^",2) "RTN","SDESARGET",228,0) Q "RTN","SDESARGET",229,0) ; "RTN","SDESARGET",230,0) BUILDJSON ;Convert to JSON "RTN","SDESARGET",231,0) S RET=$G(RET,"RET") "RTN","SDESARGET",232,0) D ENCODE^SDESJSON(.APPT,.RET,.JSONERR) "RTN","SDESARGET",233,0) K ^TMP("SDECAR4",$J) "RTN","SDESARGET",234,0) Q "RTN","SDESARGET",235,0) ; "RTN","SDESARGET",236,0) EXIT ; Any special logic needed for a successful completion "RTN","SDESARGET",237,0) N SDTMP,COUNT "RTN","SDESARGET",238,0) S COUNT=$O(^TMP("SDECAR4",$J,""),-1) "RTN","SDESARGET",239,0) I COUNT="" S ^TMP("SDECAR4",$J,1)=0,COUNT=1 ;No records to return "RTN","SDESARGET",240,0) S SDTMP=^TMP("SDECAR4",$J,COUNT) "RTN","SDESARGET",241,0) S SDTMP=$P(SDTMP,$C(30),1) "RTN","SDESARGET",242,0) S ^TMP("SDECAR4",$J,COUNT)=SDTMP_$C(30,31) "RTN","SDESARGET",243,0) Q "RTN","SDESBLKANDMOVE") 0^9^B161097023^B158970139 "RTN","SDESBLKANDMOVE",1,0) SDESBLKANDMOVE ;ALB/MGD/TAW - BLOCK AND MOVE ;Jan 21, 2022 "RTN","SDESBLKANDMOVE",2,0) ;;5.3;Scheduling;**797,799,800,801,803,804,805**;Aug 13, 1993;Build 9 "RTN","SDESBLKANDMOVE",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESBLKANDMOVE",4,0) ; "RTN","SDESBLKANDMOVE",5,0) ; Reference to ^HOLIDAY is supported by IA #10038 "RTN","SDESBLKANDMOVE",6,0) ; Reference to ^VA(200 is supported by IA #10060 "RTN","SDESBLKANDMOVE",7,0) ; "RTN","SDESBLKANDMOVE",8,0) APPTBLOCKMOVE(RETURN,APPTIEN,TORES,TODTNET,EASTRCKNGNMBR) ; "RTN","SDESBLKANDMOVE",9,0) N POP,SDAPPT,TODTFM,FROMRES,APPTARY,FN,SDECAPPTIENS,NEWAPPTIEN,TODTFMEND,TOTIMESCALE,SDTOCLIEN,CLINBEG,SDDUZ "RTN","SDESBLKANDMOVE",10,0) N FROMDTFM,FROMDTNET,TIMESCALEDIFF,SDSLOT2BLK,FROMTIMESCALE,SDORGCLIEN,TOENDDTFM "RTN","SDESBLKANDMOVE",11,0) N ENDDTFM,SDSEGMENTS,APPTLENGTH,SDPID,SDDATA44SLFROM,SDDATA44SLTO,CLINBEGFROM,CLINBEGTO,OVB "RTN","SDESBLKANDMOVE",12,0) S (POP,NEWAPPTIEN,TIMESCALEDIFF)=0,TODTFMEND="" "RTN","SDESBLKANDMOVE",13,0) D VALIDATEINPUT "RTN","SDESBLKANDMOVE",14,0) I 'POP D LOADAPPTDATA "RTN","SDESBLKANDMOVE",15,0) I 'POP D SLOTCOUNT "RTN","SDESBLKANDMOVE",16,0) I 'POP D VALIDATE "RTN","SDESBLKANDMOVE",17,0) I 'POP D COMPARETIMESCALE "RTN","SDESBLKANDMOVE",18,0) I 'POP D CHKAVAILABILITY^SDESBLKANDMOVE1(TORES,SDTOCLIEN,TODTNET,"T",TODTFM) "RTN","SDESBLKANDMOVE",19,0) I 'POP D CHKAVAILABILITY^SDESBLKANDMOVE1(FROMRES,SDORGCLIEN,FROMDTNET,"F",FROMDTFM) "RTN","SDESBLKANDMOVE",20,0) I 'POP D TOOVBCHECK^SDESBLKANDMOVE1(SDTOCLIEN,TODTFM,.APPTARY,FN,SDECAPPTIENS,.POP,.SDAPPT,.OVB) "RTN","SDESBLKANDMOVE",21,0) I 'POP D APPDEL "RTN","SDESBLKANDMOVE",22,0) I 'POP D "RTN","SDESBLKANDMOVE",23,0) .I APPTLENGTH=TOTIMESCALE D APPADD(APPTIEN,TODTFM,APPTLENGTH,TORES,TOENDDTFM) "RTN","SDESBLKANDMOVE",25,0) I 'POP D PREBLOCK^SDESBLKANDMOVE1(FROMDTFM,FROMTIMESCALE,FROMRES,SDORGCLIEN,SDDATA44SLFROM,.SDSEGMENTS) "RTN","SDESBLKANDMOVE",26,0) I 'POP D "RTN","SDESBLKANDMOVE",27,0) .I NEWAPPTIEN S SDAPPT("BlockAndMove","NewAppointmentIEN")=NEWAPPTIEN "RTN","SDESBLKANDMOVE",28,0) .E D ERRLOG^SDESJSON(.SDAPPT) ;This should not happen but..force unknown error "RTN","SDESBLKANDMOVE",29,0) K ^TMP("SDEC57",$J) "RTN","SDESBLKANDMOVE",30,0) D BUILDER^SDESBLKANDMOVE1 "RTN","SDESBLKANDMOVE",31,0) Q "RTN","SDESBLKANDMOVE",32,0) ; "RTN","SDESBLKANDMOVE",33,0) VALIDATEINPUT ;Validate input parameters from the APPTBLOCKMOVE entry point "RTN","SDESBLKANDMOVE",34,0) S APPTIEN=$G(APPTIEN) "RTN","SDESBLKANDMOVE",35,0) I APPTIEN="" S POP=1 D ERRLOG^SDESJSON(.SDAPPT,3) "RTN","SDESBLKANDMOVE",36,0) I APPTIEN'="",'$D(^SDEC(409.84,APPTIEN,0)) S POP=1 D ERRLOG^SDESJSON(.SDAPPT,4) "RTN","SDESBLKANDMOVE",37,0) ; "RTN","SDESBLKANDMOVE",38,0) S TORES=$G(TORES) "RTN","SDESBLKANDMOVE",39,0) I TORES="" S POP=1 D ERRLOG^SDESJSON(.SDAPPT,69) "RTN","SDESBLKANDMOVE",40,0) I TORES'="",'$D(^SDEC(409.831,TORES,0)) S POP=1 D ERRLOG^SDESJSON(.SDAPPT,70) "RTN","SDESBLKANDMOVE",41,0) ; "RTN","SDESBLKANDMOVE",42,0) S TODTNET=$G(TODTNET) "RTN","SDESBLKANDMOVE",43,0) I TODTNET="" S POP=1 D ERRLOG^SDESJSON(.SDAPPT,76) "RTN","SDESBLKANDMOVE",44,0) I TODTNET'="" D "RTN","SDESBLKANDMOVE",45,0) .S TODTFM=$$NETTOFM^SDECDATE(TODTNET) "RTN","SDESBLKANDMOVE",46,0) .I TODTFM=-1 S POP=1 D ERRLOG^SDESJSON(.SDAPPT,77) Q "RTN","SDESBLKANDMOVE",47,0) .I $P(TODTFM,".")
TOTIMESCALE S POP=1 D ERRLOG^SDESJSON(.SDAPPT,74) Q "RTN","SDESBLKANDMOVE",118,0) ; Check for clinics being multiples "RTN","SDESBLKANDMOVE",119,0) I TOTIMESCALE#FROMTIMESCALE'=0 S POP=1 D ERRLOG^SDESJSON(.SDAPPT,124,"Destination clinic not a multiple of Originating clinic") "RTN","SDESBLKANDMOVE",120,0) Q "RTN","SDESBLKANDMOVE",121,0) ; "RTN","SDESBLKANDMOVE",122,0) SDSEGMENTS ; Build local array of slots with SCHEDULE and EVALUATE nodes "RTN","SDESBLKANDMOVE",123,0) N FRSTTMFMADJ,TOENDTMFMADJ,SDSEGSTTIM,SDSEGENDTIM,PADFROMDTFM,PADENDDTFM,CLINID "RTN","SDESBLKANDMOVE",124,0) ; "RTN","SDESBLKANDMOVE",125,0) ; Adjust new appt end time when moving a 60 min appt into a 30 min appt slot "RTN","SDESBLKANDMOVE",126,0) S APPTLENGTH=$$FMDIFF^XLFDT(ENDDTFM,FROMDTFM,2)/60 ;actual length current appt in min "RTN","SDESBLKANDMOVE",127,0) I APPTLENGTH'>0 S POP=1 D ERRLOG^SDESJSON(.SDAPPT,124,"Invalid appointment length calculation") Q "RTN","SDESBLKANDMOVE",128,0) I APPTLENGTH>TOTIMESCALE S TOENDDTFM=$$FMADD^XLFDT(TODTFM,0,0,APPTLENGTH,0) ;Appt end time at the Destination clinic "RTN","SDESBLKANDMOVE",129,0) I TOENDDTFM=-1!($P(TODTFM,".",1)'=$P(TOENDDTFM,".",1)) S POP=1 D ERRLOG^SDESJSON(.SDAPPT,124,"New appointment crosses midnight") Q "RTN","SDESBLKANDMOVE",130,0) ; "RTN","SDESBLKANDMOVE",131,0) ; Init vars for the Destination clinic & appointment "RTN","SDESBLKANDMOVE",132,0) S PADFROMDTFM=$$PADFMTIME^SDESUTIL($P(TODTFM,".",2)) "RTN","SDESBLKANDMOVE",133,0) S PADENDDTFM=$$PADFMTIME^SDESUTIL($P(TOENDDTFM,".",2)) "RTN","SDESBLKANDMOVE",134,0) S FRSTTMFMADJ=$P($$FMADD^XLFDT(TODTFM,0,0,1,0),".",2) "RTN","SDESBLKANDMOVE",135,0) S FRSTTMFMADJ=$$PADFMTIME^SDESUTIL(FRSTTMFMADJ) "RTN","SDESBLKANDMOVE",136,0) S TOENDTMFMADJ=$P($$FMADD^XLFDT(TOENDDTFM,0,0,1,0),".",2) "RTN","SDESBLKANDMOVE",137,0) S TOENDTMFMADJ=$$PADFMTIME^SDESUTIL(TOENDTMFMADJ) "RTN","SDESBLKANDMOVE",138,0) S CLINID="T" ; To Clinic "RTN","SDESBLKANDMOVE",139,0) ; Load To clinic segments from T node of the Hospital Location file "RTN","SDESBLKANDMOVE",140,0) D SEGARRAY(SDTOCLIEN,TOTIMESCALE,TODTFM,CLINBEGTO,CLINID) "RTN","SDESBLKANDMOVE",141,0) Q:POP "RTN","SDESBLKANDMOVE",142,0) ; Determine the evaluation start time "RTN","SDESBLKANDMOVE",143,0) S SDSEGSTTIM=$O(SDSEGMENTS(SDTOCLIEN,CLINID,"SCHEDULE",+FRSTTMFMADJ),-1) "RTN","SDESBLKANDMOVE",144,0) ; Would we ever have an appt prior to the defined clinic start time??? "RTN","SDESBLKANDMOVE",145,0) I SDSEGSTTIM="" S POP=1 D ERRLOG^SDESJSON(.SDAPPT,124,"Prior to start of destination clinic") Q "RTN","SDESBLKANDMOVE",146,0) ; Appt start time = segment start time "RTN","SDESBLKANDMOVE",147,0) I +PADFROMDTFM=SDSEGSTTIM S SDSEGMENTS(SDTOCLIEN,CLINID,"EVALUATE")=SDSEGSTTIM "RTN","SDESBLKANDMOVE",148,0) ; Appt starts within the segment. Segment 8-8:30 Appt starts at 8:15 "RTN","SDESBLKANDMOVE",149,0) I +PADFROMDTFM>SDSEGSTTIM,(+PADFROMDTFM=+SDSEGMENTS(SDTOCLIEN,CLINID,"SCHEDULE",SDSEGSTTIM) S SDSEGMENTS(SDTOCLIEN,CLINID,"EVALUATE")=+PADFROMDTFM "RTN","SDESBLKANDMOVE",152,0) ; Determine the evaluation end time "RTN","SDESBLKANDMOVE",153,0) S SDSEGENDTIM=$O(SDSEGMENTS(SDTOCLIEN,CLINID,"SCHEDULE",+TOENDTMFMADJ),-1) "RTN","SDESBLKANDMOVE",154,0) I SDSEGENDTIM="" S POP=1 D ERRLOG^SDESJSON(.SDAPPT,124,"Can't find slot end time in Originating clinic for evaluation") Q "RTN","SDESBLKANDMOVE",155,0) ; Appt end time fall within the segment "RTN","SDESBLKANDMOVE",156,0) I +PADENDDTFM>SDSEGENDTIM,+PADENDDTFM<=+SDSEGMENTS(SDTOCLIEN,CLINID,"SCHEDULE",SDSEGENDTIM) S $P(SDSEGMENTS(SDTOCLIEN,CLINID,"EVALUATE"),U,2)=+SDSEGMENTS(SDTOCLIEN,CLINID,"SCHEDULE",SDSEGENDTIM) "RTN","SDESBLKANDMOVE",157,0) ; Appt end time > Segment end time "RTN","SDESBLKANDMOVE",158,0) I +PADENDDTFM>=+SDSEGMENTS(SDTOCLIEN,CLINID,"SCHEDULE",SDSEGENDTIM) S $P(SDSEGMENTS(SDTOCLIEN,CLINID,"EVALUATE"),U,2)=+PADENDDTFM "RTN","SDESBLKANDMOVE",159,0) ; Appt end time = Segment end time "RTN","SDESBLKANDMOVE",160,0) I +PADENDDTFM=SDSEGENDTIM S $P(SDSEGMENTS(SDTOCLIEN,CLINID,"EVALUATE"),U,2)=+PADENDDTFM "RTN","SDESBLKANDMOVE",161,0) ; "RTN","SDESBLKANDMOVE",162,0) ; If additional time needs to be blocked at the originating clinic to account for moving from a 30 min clinic "RTN","SDESBLKANDMOVE",163,0) ; to a 60 min clinic. "RTN","SDESBLKANDMOVE",164,0) I FROMTIMESCALEENDDTFM S ENDDTFM=TOENDDTFM "RTN","SDESBLKANDMOVE",167,0) ; "RTN","SDESBLKANDMOVE",168,0) ; Init variables for the Originating clinic and appointment "RTN","SDESBLKANDMOVE",169,0) S PADFROMDTFM=$$PADFMTIME^SDESUTIL($P(FROMDTFM,".",2)) "RTN","SDESBLKANDMOVE",170,0) S FRSTTMFMADJ=$P($$FMADD^XLFDT(FROMDTFM,0,0,1,0),".",2) ;increment by 1 min "RTN","SDESBLKANDMOVE",171,0) S FRSTTMFMADJ=$$PADFMTIME^SDESUTIL(FRSTTMFMADJ) "RTN","SDESBLKANDMOVE",172,0) S PADENDDTFM=$$PADFMTIME^SDESUTIL($P(ENDDTFM,".",2)) "RTN","SDESBLKANDMOVE",173,0) S TOENDTMFMADJ=$P($$FMADD^XLFDT(ENDDTFM,0,0,1,0),".",2) ;increment by 1 min "RTN","SDESBLKANDMOVE",174,0) S TOENDTMFMADJ=$$PADFMTIME^SDESUTIL(TOENDTMFMADJ) "RTN","SDESBLKANDMOVE",175,0) S CLINID="F" ; From Clinic "RTN","SDESBLKANDMOVE",176,0) ; Load From clinic segments from T node of the Hospital Location file "RTN","SDESBLKANDMOVE",177,0) D SEGARRAY(SDORGCLIEN,FROMTIMESCALE,FROMDTFM,CLINBEGFROM,CLINID) "RTN","SDESBLKANDMOVE",178,0) Q:POP "RTN","SDESBLKANDMOVE",179,0) ; Determine the evaluation start time "RTN","SDESBLKANDMOVE",180,0) S SDSEGSTTIM=$O(SDSEGMENTS(SDORGCLIEN,CLINID,"SCHEDULE",+FRSTTMFMADJ),-1) "RTN","SDESBLKANDMOVE",181,0) ; Would we ever have an appt prior to the defined clinic start time??? "RTN","SDESBLKANDMOVE",182,0) I SDSEGSTTIM="" S POP=1 D ERRLOG^SDESJSON(.SDAPPT,124,"Can't find slot begin time in originating clinic for evaluation") Q "RTN","SDESBLKANDMOVE",183,0) ; Appt start time = segment start time "RTN","SDESBLKANDMOVE",184,0) I +PADFROMDTFM=SDSEGSTTIM S SDSEGMENTS(SDORGCLIEN,CLINID,"EVALUATE")=SDSEGSTTIM "RTN","SDESBLKANDMOVE",185,0) ; Appt starts within the segment. Segment 8-8:30 Appt starts at 8:15 "RTN","SDESBLKANDMOVE",186,0) I +PADFROMDTFM>SDSEGSTTIM,(+PADFROMDTFM=+SDSEGMENTS(SDORGCLIEN,CLINID,"SCHEDULE",SDSEGSTTIM) S SDSEGMENTS(SDORGCLIEN,CLINID,"EVALUATE")=+PADFROMDTFM "RTN","SDESBLKANDMOVE",189,0) ; Determine the evaluation end time "RTN","SDESBLKANDMOVE",190,0) S SDSEGENDTIM=$O(SDSEGMENTS(SDORGCLIEN,CLINID,"SCHEDULE",+TOENDTMFMADJ),-1) "RTN","SDESBLKANDMOVE",191,0) I SDSEGENDTIM="" S POP=1 D ERRLOG^SDESJSON(.SDAPPT,124,"Can't find slot end time in originating clinic for evaluation") Q "RTN","SDESBLKANDMOVE",192,0) ; Appt end time fall within the segment "RTN","SDESBLKANDMOVE",193,0) I +PADENDDTFM>SDSEGENDTIM,+PADENDDTFM<=+SDSEGMENTS(SDORGCLIEN,CLINID,"SCHEDULE",SDSEGENDTIM) S $P(SDSEGMENTS(SDORGCLIEN,CLINID,"EVALUATE"),U,2)=+SDSEGMENTS(SDORGCLIEN,CLINID,"SCHEDULE",SDSEGENDTIM) "RTN","SDESBLKANDMOVE",194,0) ; Appt end time > Segment end time "RTN","SDESBLKANDMOVE",195,0) I +PADENDDTFM>=+SDSEGMENTS(SDORGCLIEN,CLINID,"SCHEDULE",SDSEGENDTIM) S $P(SDSEGMENTS(SDORGCLIEN,CLINID,"EVALUATE"),U,2)=+PADENDDTFM "RTN","SDESBLKANDMOVE",196,0) ; Appt end time = Segment end time "RTN","SDESBLKANDMOVE",197,0) I +PADENDDTFM=SDSEGENDTIM S $P(SDSEGMENTS(SDORGCLIEN,CLINID,"EVALUATE"),U,2)=+PADENDDTFM "RTN","SDESBLKANDMOVE",198,0) Q "RTN","SDESBLKANDMOVE",199,0) ; "RTN","SDESBLKANDMOVE",200,0) SEGARRAY(CLIEN,TIMESCALE,FROMDTFM,CLINBEG,CLINID) ; Create local array to hold segments for validation comparisons "RTN","SDESBLKANDMOVE",201,0) N PATRNIEN,SDDOW,SDINDX,SDENDTIME,SDSLDATA,STOP,TINDX,I "RTN","SDESBLKANDMOVE",202,0) S PATRNIEN=$P(FROMDTFM,".",1) "RTN","SDESBLKANDMOVE",203,0) I '$D(^SC(CLIEN,"T",PATRNIEN,0)) D Q:PATRNIEN'>0 "RTN","SDESBLKANDMOVE",204,0) .S SDDOW=$$DOW^XLFDT(PATRNIEN,1) "RTN","SDESBLKANDMOVE",205,0) .F S PATRNIEN=$O(^SC(CLIEN,"T",PATRNIEN),-1) Q:PATRNIEN=0 Q:$$DOW^XLFDT(PATRNIEN,1)=SDDOW "RTN","SDESBLKANDMOVE",206,0) .I PATRNIEN'>0 S POP=1 D ERRLOG^SDESJSON(.SDAPPT,124,"Availability definition not found") "RTN","SDESBLKANDMOVE",207,0) ; Loop to find start time definition "RTN","SDESBLKANDMOVE",208,0) S SDINDX=0 "RTN","SDESBLKANDMOVE",209,0) F S SDINDX=$O(^SC(CLIEN,"T",PATRNIEN,2,SDINDX)) Q:'SDINDX D "RTN","SDESBLKANDMOVE",210,0) .S SDSLDATA=^SC(CLIEN,"T",PATRNIEN,2,SDINDX,0) "RTN","SDESBLKANDMOVE",211,0) .S SDENDTIME=$$FMADD^XLFDT(DT_"."_$P(SDSLDATA,U,1),,,TIMESCALE) "RTN","SDESBLKANDMOVE",212,0) .S SDSEGMENTS(CLIEN,CLINID,"SCHEDULE",+$P(SDSLDATA,U,1))=+$$PADFMTIME^SDESUTIL($P(SDENDTIME,".",2))_"^"_$P(SDSLDATA,U,2) "RTN","SDESBLKANDMOVE",213,0) ; Check and build Teal area "RTN","SDESBLKANDMOVE",214,0) S SDINDX=0 "RTN","SDESBLKANDMOVE",215,0) S SDINDX=$O(SDSEGMENTS(CLIEN,CLINID,"SCHEDULE",SDINDX)) "RTN","SDESBLKANDMOVE",216,0) Q:SDINDX=CLINBEG "RTN","SDESBLKANDMOVE",217,0) S STOP="" "RTN","SDESBLKANDMOVE",218,0) F I=1:1 D Q:STOP "RTN","SDESBLKANDMOVE",219,0) .S TINDX=$$FMADD^XLFDT(DT_"."_$$PADLENGTH^SDESUTIL(SDINDX,"0",4,"F"),,,-TIMESCALE) "RTN","SDESBLKANDMOVE",220,0) .I $P(TINDX,".",1)'=DT S STOP=1 Q "RTN","SDESBLKANDMOVE",221,0) .I $P(TINDX,".",2)=24 D Q "RTN","SDESBLKANDMOVE",222,0) ..S STOP=1,SDSEGMENTS(CLIEN,CLINID,"SCHEDULE",0)=SDINDX_"^-" "RTN","SDESBLKANDMOVE",223,0) .S TINDX=+$$PADFMTIME^SDESUTIL($P(TINDX,".",2)) "RTN","SDESBLKANDMOVE",224,0) .I +TINDX<=CLINBEG S STOP=1,TINDX=CLINBEG "RTN","SDESBLKANDMOVE",225,0) .S SDSEGMENTS(CLIEN,CLINID,"SCHEDULE",+TINDX)=SDINDX_"^-" "RTN","SDESBLKANDMOVE",226,0) .S SDINDX=+TINDX "RTN","SDESBLKANDMOVE",227,0) Q "RTN","SDESBLKANDMOVE",228,0) ; "RTN","SDESBLKANDMOVE",229,0) SLOTCOUNT ; "RTN","SDESBLKANDMOVE",230,0) ; Verifying that we don't have more than the max allowable slots defined for the period of time we are reviewing "RTN","SDESBLKANDMOVE",231,0) I $$IDTIMESLOT^SDESBLKANDMOVE1(SDORGCLIEN,1,"F") S POP=1 D ERRLOG^SDESJSON(.SDAPPT,124,"More than 1 appointment slot in Originating clinic") Q:POP "RTN","SDESBLKANDMOVE",232,0) Q "RTN","SDESBLKANDMOVE",233,0) ; "RTN","SDESBLKANDMOVE",234,0) APPDEL ;Call APPDEL RPC to cancel the current appointment "RTN","SDESBLKANDMOVE",235,0) ;Input: "RTN","SDESBLKANDMOVE",236,0) ; SDECAPPTIEN [REQ] - IEN of appointment to cancel "RTN","SDESBLKANDMOVE",237,0) ;Assume: "RTN","SDESBLKANDMOVE",238,0) ; SDAPPT - Array of data returned by the RPC "RTN","SDESBLKANDMOVE",239,0) ;Output: "RTN","SDESBLKANDMOVE",240,0) ; Any errors logged by call to APPDEL RPC "RTN","SDESBLKANDMOVE",241,0) N RET,TEXT,SDCANRSN,SDUSRNOTE,SDCANDT,SDAPTYP,SDF "RTN","SDESBLKANDMOVE",242,0) S SDCANRSN=$$FIND1^DIC(409.2,,"B","BLOCK AND MOVE","","","SDERR") "RTN","SDESBLKANDMOVE",243,0) I 'SDCANRSN S SDCANRSN="" "RTN","SDESBLKANDMOVE",244,0) S SDF="" "RTN","SDESBLKANDMOVE",245,0) S SDAPTYP=$G(APPTARY(FN,SDECAPPTIENS,.22,"I")) "RTN","SDESBLKANDMOVE",246,0) I $P(SDAPTYP,";",2)="SD(403.5," S SDF=3 "RTN","SDESBLKANDMOVE",247,0) D APPDEL^SDEC08(.RET,APPTIEN,"C",SDCANRSN,,,,,SDF,,,$G(EASTRCKNGNMBR)) "RTN","SDESBLKANDMOVE",248,0) S TEXT=$G(^TMP("SDEC08",$J,"APPDEL",1)) "RTN","SDESBLKANDMOVE",249,0) S TEXT=$P(TEXT,$C(30)) "RTN","SDESBLKANDMOVE",250,0) I TEXT'="" D "RTN","SDESBLKANDMOVE",251,0) .S POP=1 D ERRLOG^SDESJSON(.SDAPPT,52,TEXT,"APPDEL^SDESAPPTSET") "RTN","SDESBLKANDMOVE",252,0) K ^TMP("SDEC08",$J) "RTN","SDESBLKANDMOVE",253,0) Q "RTN","SDESBLKANDMOVE",254,0) ; "RTN","SDESBLKANDMOVE",255,0) APPADD(SDECAPPTIEN,SDECSTART,SDECLEN,SDECRES,SDECEND) ;entry point before calling APPADD^SDEC07 "RTN","SDESBLKANDMOVE",256,0) ;Input: "RTN","SDESBLKANDMOVE",257,0) ; SDECAPPTIEN [REQ] - The IEN from SDEC APPOINTMENT File #409.84 "RTN","SDESBLKANDMOVE",258,0) ; SDECSTART [REQ] - The internal format of Appointment Start Time "RTN","SDESBLKANDMOVE",259,0) ; SDECLEN [REQ] - Appointment length based on Time Scale from 409.831 "RTN","SDESBLKANDMOVE",260,0) ; SDECRES [REQ] - The IEN from SDEC RESOURCE File #409.831. "RTN","SDESBLKANDMOVE",261,0) ; SDECEND [REQ] - Appointment end dt/tm in FM format "RTN","SDESBLKANDMOVE",262,0) ; "RTN","SDESBLKANDMOVE",263,0) ;Assume: "RTN","SDESBLKANDMOVE",264,0) ; APPTARY - Array of data from 409.84 for SDECAPPTIEN "RTN","SDESBLKANDMOVE",265,0) ; SDAPPT - Array of data returned by the RPC "RTN","SDESBLKANDMOVE",266,0) ; "RTN","SDESBLKANDMOVE",267,0) ;Output: "RTN","SDESBLKANDMOVE",268,0) ; Errors logged by call to APPADD or set NEWAPPTIEN "RTN","SDESBLKANDMOVE",269,0) ; "RTN","SDESBLKANDMOVE",270,0) N SDRET,SDDFN,SDECNOTE,SDECATID,SDECCR,SDDDT,SDAPTYP,SDCL,SDEL,SDECY "RTN","SDESBLKANDMOVE",271,0) K ^TMP("SDEC07",$J) "RTN","SDESBLKANDMOVE",272,0) S SDDFN=$G(APPTARY(FN,SDECAPPTIENS,.05,"I")) ;Patient ID/DFN "RTN","SDESBLKANDMOVE",273,0) S SDCL=$P($G(^SDEC(409.831,+SDECRES,0)),U,4) ;Clinic IEN pointer to HOSPITAL LOCATION file 44 "RTN","SDESBLKANDMOVE",274,0) ;S SDECEND=$$FMADD^XLFDT(SDECSTART,,,+SDECLEN) ;Appointment end time if SDECEND passed in as NULL "RTN","SDESBLKANDMOVE",275,0) S SDECNOTE=$G(APPTARY(FN,SDECAPPTIENS,1,1)) ;Note "RTN","SDESBLKANDMOVE",276,0) S SDECATID=$G(APPTARY(FN,SDECAPPTIENS,.13,"E")) ;WALKIN - WALKIN flag y=YES; n=NO default to NO "RTN","SDESBLKANDMOVE",277,0) I SDECATID=""!(SDECATID="NO") S SDECATID=$P($G(^DPT(SDDFN,"S",SDECSTART,0)),U,7) ;get the purpose of visit in the patient file if NULL in file 409.84 "RTN","SDESBLKANDMOVE",278,0) S SDECATID=$S(SDECATID="YES"!(SDECATID=4):"WALKIN",1:SDECATID) "RTN","SDESBLKANDMOVE",279,0) S SDECCR=$S(SDECATID="WALKIN":0,1:1) ;routing slip "RTN","SDESBLKANDMOVE",280,0) S SDDDT=$G(APPTARY(FN,SDECAPPTIENS,.02,"I")) ;desired date of appointment "RTN","SDESBLKANDMOVE",281,0) S SDAPTYP=$G(APPTARY(FN,SDECAPPTIENS,.22,"E")) ;Appointment Request Type "RTN","SDESBLKANDMOVE",282,0) S SDAPTYP=$S(SDAPTYP="APPT":"A",SDAPTYP="RECALL":"R",SDAPTYP="CONSULT":"C",SDAPTYP="EWL":"E",1:"") "RTN","SDESBLKANDMOVE",283,0) S SDAPTYP=SDAPTYP_"|"_$P(APPTARY(FN,SDECAPPTIENS,.22,"I"),";") "RTN","SDESBLKANDMOVE",284,0) S SDEL=$P($G(^DPT(SDDFN,.36)),U,1) ;Current Eligibility Code "RTN","SDESBLKANDMOVE",285,0) K SDECY "RTN","SDESBLKANDMOVE",286,0) D APPADD^SDEC07(.SDECY,$$FMTE^XLFDT(SDECSTART),$$FMTE^XLFDT(SDECEND),SDDFN,SDECRES,SDECLEN,$G(SDECNOTE),SDECATID,,,SDPID,,,,,SDAPTYP,,,SDCL,,,,,OVB,,SDEL,$G(EASTRCKNGNMBR)) ;ADD NEW APPOINTMENT "RTN","SDESBLKANDMOVE",287,0) ; "RTN","SDESBLKANDMOVE",288,0) N CNTR,ERROR "RTN","SDESBLKANDMOVE",289,0) S ERROR="" "RTN","SDESBLKANDMOVE",290,0) S CNTR=$O(^TMP("SDEC07",$J,0)) "RTN","SDESBLKANDMOVE",291,0) I CNTR S ERROR=$G(^TMP("SDEC07",$J,CNTR)) "RTN","SDESBLKANDMOVE",292,0) S ERROR=$$CTRL^XMXUTIL1(ERROR) "RTN","SDESBLKANDMOVE",293,0) I $P(ERROR,"^",2)'="" D "RTN","SDESBLKANDMOVE",294,0) .S POP=1 "RTN","SDESBLKANDMOVE",295,0) .D ERRLOG^SDESJSON(.SDAPPT,52,$P(ERROR,"^",2),"APPADD^SDESAPPTSET") "RTN","SDESBLKANDMOVE",296,0) E D "RTN","SDESBLKANDMOVE",297,0) .S NEWAPPTIEN=$P(ERROR,"^",1) "RTN","SDESBLKANDMOVE",298,0) .I $E(SDAPTYP,1)="R",$G(APPTARY(FN,SDECAPPTIENS,.22,"I"))'="" D "RTN","SDESBLKANDMOVE",299,0) ..N SDBM "RTN","SDESBLKANDMOVE",300,0) ..S SDBM(409.84,NEWAPPTIEN_",",.22)=$G(APPTARY(FN,SDECAPPTIENS,.22,"I")) "RTN","SDESBLKANDMOVE",301,0) ..D UPDATE^DIE("","SDBM","SDERR") "RTN","SDESBLKANDMOVE",302,0) ; "RTN","SDESBLKANDMOVE",303,0) K ^TMP("SDEC07",$J) "RTN","SDESBLKANDMOVE",304,0) Q "RTN","SDESCANCELAPPT") 0^24^B6224069^B5796653 "RTN","SDESCANCELAPPT",1,0) SDESCANCELAPPT ;ALB/BLB,ANU,MGD - VISTA SCHEDULING RPCS ;JAN 6, 2022@13:01 "RTN","SDESCANCELAPPT",2,0) ;;5.3;Scheduling;**801,804,805**;Aug 13, 1993;Build 9 "RTN","SDESCANCELAPPT",3,0) ;;Per VHA Directive 6402, this routine should not be modified; "RTN","SDESCANCELAPPT",4,0) ; "RTN","SDESCANCELAPPT",5,0) CANCELAPPT(SDECY,APPTIEN,STATUS,CANREAS,USER,EAS) ; "RTN","SDESCANCELAPPT",6,0) ;APPTIEN - (required) pointer to SDEC APPOINTMENT file "RTN","SDESCANCELAPPT",7,0) ;STATUS - (required) appointment Status valid values: "RTN","SDESCANCELAPPT",8,0) ; C=CANCELLED BY CLINIC "RTN","SDESCANCELAPPT",9,0) ; PC=CANCELLED BY PATIENT "RTN","SDESCANCELAPPT",10,0) ;CANREAS - (required) pointer to cancel reason file "RTN","SDESCANCELAPPT",11,0) ;USER - (optional) DUZ of user cancelling appt "RTN","SDESCANCELAPPT",12,0) ;EAS - (optional) EAS Tracking Number "RTN","SDESCANCELAPPT",13,0) N FDA,ERROR,SDAPPT,DATETIME "RTN","SDESCANCELAPPT",14,0) S ERROR=0 "RTN","SDESCANCELAPPT",15,0) I $G(APPTIEN)="" D ERRLOG^SDESJSON(.SDAPPT,14) S ERROR=1 ; missing appt IEN "RTN","SDESCANCELAPPT",16,0) I $G(APPTIEN)'="",'$D(^SDEC(409.84,APPTIEN,0)) D ERRLOG^SDESJSON(.SDAPPT,15) S ERROR=1 ; invalid appt IEN "RTN","SDESCANCELAPPT",17,0) S DATETIME=$$NOW^XLFDT "RTN","SDESCANCELAPPT",18,0) I $G(STATUS)="" D ERRLOG^SDESJSON(.SDAPPT,38) S ERROR=1 ; missing status "RTN","SDESCANCELAPPT",19,0) I $G(STATUS)'="" D "RTN","SDESCANCELAPPT",20,0) .I $G(STATUS)'="C",$G(STATUS)'="PC" D ERRLOG^SDESJSON(.SDAPPT,30) S ERROR=1 ; invalid cancel status "RTN","SDESCANCELAPPT",21,0) I USER'="" I '$D(^VA(200,+USER,0)) S USER="" "RTN","SDESCANCELAPPT",22,0) I $G(USER)="" S USER=$G(DUZ) "RTN","SDESCANCELAPPT",23,0) I $G(CANREAS)="" D ERRLOG^SDESJSON(.SDAPPT,128) S ERROR=1 ; missing cancellation reason "RTN","SDESCANCELAPPT",24,0) I $G(CANREAS)'="",'$D(^SD(409.2,CANREAS,0)) D ERRLOG^SDESJSON(.SDAPPT,129) S ERROR=1 ; invalid cancellation reason "RTN","SDESCANCELAPPT",25,0) S EAS=$G(EAS,"") "RTN","SDESCANCELAPPT",26,0) I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL(EAS) "RTN","SDESCANCELAPPT",27,0) I +EAS=-1 D ERRLOG^SDESJSON(.SDAPPT,142) S ERROR=1 "RTN","SDESCANCELAPPT",28,0) ; "RTN","SDESCANCELAPPT",29,0) I '$G(ERROR) D "RTN","SDESCANCELAPPT",30,0) .S FDA(409.84,APPTIEN_",",.12)=$G(DATETIME) "RTN","SDESCANCELAPPT",31,0) .S FDA(409.84,APPTIEN_",",.121)=$G(DUZ) "RTN","SDESCANCELAPPT",32,0) .S FDA(409.84,APPTIEN_",",.17)=$G(STATUS) "RTN","SDESCANCELAPPT",33,0) .;SD*5.3*804 - Not delete VVS ID when called from SDES CANCEL APPT RPC "RTN","SDESCANCELAPPT",34,0) .;S FDA(409.84,APPTIEN_",",2)="@" ;patch SD*5.3*796, delete VVS appointment ID if appoinment is cancelled "RTN","SDESCANCELAPPT",35,0) .S FDA(409.84,APPTIEN_",",.122)=$G(CANREAS) "RTN","SDESCANCELAPPT",36,0) .S FDA(409.84,APPTIEN_",",100)=$G(EAS) "RTN","SDESCANCELAPPT",37,0) .D FILE^DIE(,"FDA","ERR") "RTN","SDESCANCELAPPT",38,0) .S SDAPPT("CancelAppt","Success")=1 "RTN","SDESCANCELAPPT",39,0) D BUILDER "RTN","SDESCANCELAPPT",40,0) Q "RTN","SDESCANCELAPPT",41,0) ; "RTN","SDESCANCELAPPT",42,0) BUILDER ;Convert data to JSON "RTN","SDESCANCELAPPT",43,0) N JSONERR "RTN","SDESCANCELAPPT",44,0) S JSONERR="" "RTN","SDESCANCELAPPT",45,0) D ENCODE^SDESJSON(.SDAPPT,.SDECY,.JSONERR) "RTN","SDESCANCELAPPT",46,0) Q "RTN","SDESCANCELAPPT44") 0^42^B5182587^n/a "RTN","SDESCANCELAPPT44",1,0) SDESCANCELAPPT44 ;ALB/MGD - CANCEL APPOINTMENT REQUEST IN FILE 44 ;Jan 19, 2022 "RTN","SDESCANCELAPPT44",2,0) ;;5.3;Scheduling;**805**;Aug 13, 1993;Build 9 "RTN","SDESCANCELAPPT44",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESCANCELAPPT44",4,0) ; "RTN","SDESCANCELAPPT44",5,0) Q "RTN","SDESCANCELAPPT44",6,0) ; RPC: SDES CANCEL APPT #44 "RTN","SDESCANCELAPPT44",7,0) ARCANCEL44(RETURN,SDDFN,SDCLNIEN,SDARDTTM) ; Cancel Appointment Request in #44 (VSE-1944) "RTN","SDESCANCELAPPT44",8,0) ; INP - Input parameters array "RTN","SDESCANCELAPPT44",9,0) ; SDDFN = (Req) DFN Pointer to the PATIENT file #2 "RTN","SDESCANCELAPPT44",10,0) ; SDCLNIEN = (Req) IEN of Clinic in HOSPITAL LOCATION #44 "RTN","SDESCANCELAPPT44",11,0) ; SDARDTTM = (Req) Date/Time of Appointment in ISO 8601 extended format (e.g. 2022-01-19T20:15:44) "RTN","SDESCANCELAPPT44",12,0) ; "RTN","SDESCANCELAPPT44",13,0) N POP,SDIEN,SDAPTREQ "RTN","SDESCANCELAPPT44",14,0) S POP=0 "RTN","SDESCANCELAPPT44",15,0) ; "RTN","SDESCANCELAPPT44",16,0) D VALIDATE "RTN","SDESCANCELAPPT44",17,0) I 'POP D UPDATE "RTN","SDESCANCELAPPT44",18,0) D BUILDER "RTN","SDESCANCELAPPT44",19,0) Q "RTN","SDESCANCELAPPT44",20,0) ; "RTN","SDESCANCELAPPT44",21,0) VALIDATE ; "RTN","SDESCANCELAPPT44",22,0) S POP=0 "RTN","SDESCANCELAPPT44",23,0) ; "RTN","SDESCANCELAPPT44",24,0) ; Patient DFN "RTN","SDESCANCELAPPT44",25,0) S SDDFN=$G(SDDFN,"") "RTN","SDESCANCELAPPT44",26,0) I SDDFN="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,1) Q "RTN","SDESCANCELAPPT44",27,0) I SDDFN'="",'$D(^DPT(+SDDFN,0)) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,2) Q "RTN","SDESCANCELAPPT44",28,0) ; "RTN","SDESCANCELAPPT44",29,0) ; Clinic IEN "RTN","SDESCANCELAPPT44",30,0) S SDCLNIEN=$G(SDCLNIEN,"") "RTN","SDESCANCELAPPT44",31,0) I SDCLNIEN="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,18) Q "RTN","SDESCANCELAPPT44",32,0) I '$D(^SC(+SDCLNIEN,0)) S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,19) Q "RTN","SDESCANCELAPPT44",33,0) ; "RTN","SDESCANCELAPPT44",34,0) ; Date/time of appt "RTN","SDESCANCELAPPT44",35,0) S SDARDTTM=$G(SDARDTTM,"") "RTN","SDESCANCELAPPT44",36,0) I SDARDTTM="" S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,76) Q "RTN","SDESCANCELAPPT44",37,0) S SDARDTTM=$$GMTTFM^SDAMUTDT(SDARDTTM) "RTN","SDESCANCELAPPT44",38,0) I SDARDTTM=-1 S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,77) Q "RTN","SDESCANCELAPPT44",39,0) S SDIEN=$$SCIEN^SDECU2(SDDFN,SDCLNIEN,SDARDTTM) "RTN","SDESCANCELAPPT44",40,0) I 'SDIEN S POP=1 D ERRLOG^SDESJSON(.SDAPTREQ,52,"No Appt Found in File #44 for this Patient Date/Time") Q "RTN","SDESCANCELAPPT44",41,0) Q "RTN","SDESCANCELAPPT44",42,0) ; "RTN","SDESCANCELAPPT44",43,0) UPDATE ;Update Appointment for Cancellation "RTN","SDESCANCELAPPT44",44,0) N SDFDA,SDERR "RTN","SDESCANCELAPPT44",45,0) S SDFDA(44.003,SDIEN_","_SDARDTTM_","_SDCLNIEN_",",310)="C" "RTN","SDESCANCELAPPT44",46,0) K SDERR D UPDATE^DIE("","SDFDA","","SDERR") "RTN","SDESCANCELAPPT44",47,0) I $D(SDERR) S SDAPTREQ("Error",1)="Error trying to cancel Appointment in File #44." Q "RTN","SDESCANCELAPPT44",48,0) S SDAPTREQ("Success")="Appointment is successfully updated." "RTN","SDESCANCELAPPT44",49,0) Q "RTN","SDESCANCELAPPT44",50,0) ; "RTN","SDESCANCELAPPT44",51,0) BUILDER ;Convert data to JSON "RTN","SDESCANCELAPPT44",52,0) N JSONERR "RTN","SDESCANCELAPPT44",53,0) S JSONERR="" "RTN","SDESCANCELAPPT44",54,0) D ENCODE^SDESJSON(.SDAPTREQ,.RETURN,.JSONERR) "RTN","SDESCANCELAPPT44",55,0) Q "RTN","SDESCCAVAIL") 0^10^B43467402^B41159275 "RTN","SDESCCAVAIL",1,0) SDESCCAVAIL ;ALB/MGD - VISTA SCHEDULING RPCS CANCEL CLINIC AVAILABILITY ; Jan 25, 2022@16:57 "RTN","SDESCCAVAIL",2,0) ;;5.3;Scheduling;**800,805**;Aug 13, 1993;Build 9 "RTN","SDESCCAVAIL",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESCCAVAIL",4,0) ; "RTN","SDESCCAVAIL",5,0) ;Global References Supported by ICR# Type "RTN","SDESCCAVAIL",6,0) ;----------------- ----------------- ---------- "RTN","SDESCCAVAIL",7,0) ; ^TMP($J SACC 2.3.2.5.1 "RTN","SDESCCAVAIL",8,0) ; "RTN","SDESCCAVAIL",9,0) ;External References "RTN","SDESCCAVAIL",10,0) ;------------------- "RTN","SDESCCAVAIL",11,0) ; ^%DT 10003 Supported "RTN","SDESCCAVAIL",12,0) ; $$FIND1^DIC 2051 Supported "RTN","SDESCCAVAIL",13,0) ; $$GET1^DIQ 2056 Supported "RTN","SDESCCAVAIL",14,0) ; "RTN","SDESCCAVAIL",15,0) Q ;No Direct Call "RTN","SDESCCAVAIL",16,0) ; "RTN","SDESCCAVAIL",17,0) CANCLAVAIL(SDCLNJSON,SDCLNIEN,SDESCANDATE,SDESSTRTIM,SDESENDTIM,SDCANREM,SDEAS) ;Called from RPC: SDES CANCEL CLINIC AVAILABILITY "RTN","SDESCCAVAIL",18,0) ; This RPC cancels Clinic availability within a given timeframe for a given clinic. "RTN","SDESCCAVAIL",19,0) ; Input: "RTN","SDESCCAVAIL",20,0) ; SDCLNSREC [required] - Success or Error message "RTN","SDESCCAVAIL",21,0) ; SDCLNIEN [required] - The Internal Entry Number (IEN) from the HOSPITAL LOCATION File #44 "RTN","SDESCCAVAIL",22,0) ; SDESCANDATE [required] - The Cancel Date in FM format "RTN","SDESCCAVAIL",23,0) ; SDESSTRTIM [required] - Starting Time in FM format "RTN","SDESCCAVAIL",24,0) ; SDESENDTIM [required] - Ending Time in FM format "RTN","SDESCCAVAIL",25,0) ; SDCANREM [required] - Cancellation Remarks "RTN","SDESCCAVAIL",26,0) ; SDEAS [optional] - Enterprise Appointment Scheduling (EAS) Tracking Number associated to an appointment. "RTN","SDESCCAVAIL",27,0) ; "RTN","SDESCCAVAIL",28,0) N ERRPOP,ERR,ERRMSG,SDECI,SC,SD,SL,SI,STARTDAY,SDTIME,FR,ST,SDHTO,TO,SDDFR "RTN","SDESCCAVAIL",29,0) N A,DA,DFN,DH,I,FR,NOAP,P,SDCNT,SDDATA0,X,Y,%,SDCLNSREC "RTN","SDESCCAVAIL",30,0) D INIT "RTN","SDESCCAVAIL",31,0) D VALIDATE "RTN","SDESCCAVAIL",32,0) I ERRPOP D BLDJSON Q "RTN","SDESCCAVAIL",33,0) D CANCLNAVA "RTN","SDESCCAVAIL",34,0) S SDCLNSREC("Success")="Clinic Availability is successfully cancelled." "RTN","SDESCCAVAIL",35,0) D BLDJSON "RTN","SDESCCAVAIL",36,0) Q "RTN","SDESCCAVAIL",37,0) ; "RTN","SDESCCAVAIL",38,0) INIT ; initialize values needed "RTN","SDESCCAVAIL",39,0) S SDECI=0 "RTN","SDESCCAVAIL",40,0) S SDECI=$G(SDECI,0),ERR="" "RTN","SDESCCAVAIL",41,0) S ERRPOP=0,ERRMSG="" "RTN","SDESCCAVAIL",42,0) S SC=SDCLNIEN "RTN","SDESCCAVAIL",43,0) S SD=SDESCANDATE "RTN","SDESCCAVAIL",44,0) Q "RTN","SDESCCAVAIL",45,0) ; "RTN","SDESCCAVAIL",46,0) VALIDATE ; validate incoming parameters "RTN","SDESCCAVAIL",47,0) I SDCLNIEN="" D ERRLOG^SDESJSON(.SDCLNSREC,18) S ERRPOP=1 Q "RTN","SDESCCAVAIL",48,0) I '$D(^SC(SDCLNIEN,0)) D ERRLOG^SDESJSON(.SDCLNSREC,19) S ERRPOP=1 Q "RTN","SDESCCAVAIL",49,0) ; "RTN","SDESCCAVAIL",50,0) S SL=^SC(SDCLNIEN,"SL") "RTN","SDESCCAVAIL",51,0) S I=SDCANREM "RTN","SDESCCAVAIL",52,0) S %=$P(SL,U,6),SI=$S(%="":4,%<3:4,%:%,1:4) "RTN","SDESCCAVAIL",53,0) S %=$P($G(SL),U,3) ;Hour clinic display begins from file 44 "RTN","SDESCCAVAIL",54,0) I %="" S %=8 "RTN","SDESCCAVAIL",55,0) S STARTDAY=$S($L(%):%,1:8) "RTN","SDESCCAVAIL",56,0) D NOW^%DTC "RTN","SDESCCAVAIL",57,0) S SDTIME=% "RTN","SDESCCAVAIL",58,0) D TC(SDESSTRTIM) "RTN","SDESCCAVAIL",59,0) I Y=-1 S SDCLNSREC("Error",1)="Start time is Invalid" S ERRPOP=1 Q "RTN","SDESCCAVAIL",60,0) S FR=Y,ST=% "RTN","SDESCCAVAIL",61,0) D TC(SDESENDTIM) "RTN","SDESCCAVAIL",62,0) I Y=-1 S SDCLNSREC("Error",1)="End time is Invalid" S ERRPOP=1 Q "RTN","SDESCCAVAIL",63,0) S SDHTO=X,TO=Y,SDDFR=TO-FR "RTN","SDESCCAVAIL",64,0) S NOAP=1 "RTN","SDESCCAVAIL",65,0) I SD="" S SDCLNSREC("Error",1)="Cancel Date is Invalid" S ERRPOP=1 Q "RTN","SDESCCAVAIL",66,0) ; "RTN","SDESCCAVAIL",67,0) ; Clinic does not meet on that day "RTN","SDESCCAVAIL",68,0) I '$F(^SC(SC,"ST",SD,1),"[") S SDCLNSREC("Error",1)="CLINIC DOES NOT MEET ON THAT DAY" S ERRPOP=1 Q "RTN","SDESCCAVAIL",69,0) ; "RTN","SDESCCAVAIL",70,0) ; Loss of workload credit "RTN","SDESCCAVAIL",71,0) I $$COED^SDC4(SC,FR,TO,1) S SDCLNSREC("Error",1)="Not Allowed to cancel availability as at least one appointment has been checked out" S ERRPOP=1 Q "RTN","SDESCCAVAIL",72,0) ; "RTN","SDESCCAVAIL",73,0) ; Clinic is inactive "RTN","SDESCCAVAIL",74,0) K SDRE,SDIN,SDRE1 I $D(^SC(SC,"I")) S SDIN=+^("I"),SDRE=+$P(^("I"),"^",2),Y=SDRE D:Y DTS^SDUTL S SDRE1=$S(SDRE:" to "_Y,1:"") "RTN","SDESCCAVAIL",75,0) I $S('$D(SDIN):0,SDIN'>0!(SDIN>SD):0,SDRE'>SD&(SDRE):0,1:1) D "RTN","SDESCCAVAIL",76,0) .S SDCLNSREC("Error",1)="Clinic is inactive "_$S('SDRE:"as of ",1:"from ") S Y=SDIN D DTS^SDUTL S SDCLNSREC=SDCLNSREC_Y_SDRE1 "RTN","SDESCCAVAIL",77,0) .S ERRPOP=1 "RTN","SDESCCAVAIL",78,0) ; "RTN","SDESCCAVAIL",79,0) ;validate EAS "RTN","SDESCCAVAIL",80,0) S SDEAS=$G(SDEAS,"") "RTN","SDESCCAVAIL",81,0) I $L(SDEAS) S SDEAS=$$EASVALIDATE^SDESUTIL(SDEAS) "RTN","SDESCCAVAIL",82,0) I +SDEAS=-1 S SDCLNSREC("Error",1)="EAS passed in, but is not valid" S ERRPOP=1 "RTN","SDESCCAVAIL",83,0) Q "RTN","SDESCCAVAIL",84,0) ; "RTN","SDESCCAVAIL",85,0) BLDJSON ; "RTN","SDESCCAVAIL",86,0) D ENCODE^SDESJSON(.SDCLNSREC,.SDCLNJSON,.ERR) "RTN","SDESCCAVAIL",87,0) K SDCLNSREC "RTN","SDESCCAVAIL",88,0) Q "RTN","SDESCCAVAIL",89,0) ; "RTN","SDESCCAVAIL",90,0) CANCLNAVA ; "RTN","SDESCCAVAIL",91,0) N SDATA,SDCNHDL ; for evt dvr "RTN","SDESCCAVAIL",92,0) I '$D(^SC(SC,"SDCAN",0)) S ^SC(SC,"SDCAN",0)="^44.05D^"_FR_"^1" G SKIP "RTN","SDESCCAVAIL",93,0) S A=^SC(SC,"SDCAN",0),SDCNT=$P(A,"^",4),^SC(SC,"SDCAN",0)=$P(A,"^",1,2)_"^"_FR_"^"_(SDCNT+1) "RTN","SDESCCAVAIL",94,0) SKIP ; "RTN","SDESCCAVAIL",95,0) S ^SC(SC,"SDCAN",FR,0)=FR_"^"_SDHTO "RTN","SDESCCAVAIL",96,0) S NOAP=$S($O(^SC(SC,"S",(FR-.0001)))'>0:1,$O(^SC(SC,"S",(FR-.0001)))>TO:1,1:0) "RTN","SDESCCAVAIL",97,0) I 'NOAP S NOAP=$S($O(^SC(SC,"S",+$O(^SC(SC,"S",(FR-.0001))),0))="MES":1,1:0) "RTN","SDESCCAVAIL",98,0) S ^SC(SC,"S",FR,0)=FR "RTN","SDESCCAVAIL",99,0) S ^SC(SC,"S",FR,"MES")="CANCELLED UNTIL "_X_$S(I?.P:"",1:" ("_I_")") "RTN","SDESCCAVAIL",100,0) S ^SC(SC,"ST",SD,"CAN")=^SC(SC,"ST",SD,1) "RTN","SDESCCAVAIL",101,0) S I=^SC(SC,"ST",SD,1),I=I_$J("",%-$L(I)),Y="" "RTN","SDESCCAVAIL",102,0) I $G(SDDFR)<100,$L(I)<77 S I=I_" " ;SD*5.3*758 - pad 4 empty spaces needed for blocks < 60 minutes "RTN","SDESCCAVAIL",103,0) F X=0:2:% D "RTN","SDESCCAVAIL",104,0) .S DH=$E(I,X+SI+SI) "RTN","SDESCCAVAIL",105,0) .S P=$S(X0 D "RTN","SDESCCAVAIL",118,0) .I '$D(^SC(SC,"S",FR,1,SDI,0)) I $D(^("C")) S J=FR,J2=SDI D DELETE^SDC1 K J,J2 Q ;SD*5.3*545 delete corrupt node "RTN","SDESCCAVAIL",119,0) .I '+$G(^SC(SC,"S",FR,1,SDI,0)) S J=FR,J2=SDI D DELETE^SDC1 K J,J2 Q ;SD*5.3*545 if DFN is missing delete record "RTN","SDESCCAVAIL",120,0) .Q:$P(^SC(SC,"S",FR,1,SDI,0),"^",9)="C" ;SD*5.3*758 - Quit processing if appointment already canceled. "RTN","SDESCCAVAIL",121,0) .S DFN=+^SC(SC,"S",FR,1,SDI,0),SDCNHDL=$$HANDLE^SDAMEVT(1) "RTN","SDESCCAVAIL",122,0) .D BEFORE^SDAMEVT(.SDATA,DFN,FR,SC,SDI,SDCNHDL) "RTN","SDESCCAVAIL",123,0) .S $P(^SC(SC,"S",FR,1,SDI,0),"^",9)="C" "RTN","SDESCCAVAIL",124,0) .S:$D(^DPT(DFN,"S",FR,0)) NODE=^(0) ;added SD/523 "RTN","SDESCCAVAIL",125,0) .Q:$P(NODE,U,1)'=SC ;added SD/523 "RTN","SDESCCAVAIL",126,0) .S ^DPT("ASDCN",SC,FR,DFN)="" "RTN","SDESCCAVAIL",127,0) .S SDSC=SC,SDTTM=FR,SDPL=SDI,TDH=DH,TMPD=SDCANREM D CANCEL^SDCNSLT S DH=TDH ;SD/478 "RTN","SDESCCAVAIL",128,0) .I $D(^DPT(DFN,"S",FR,0)),$P(^(0),"^",2)'["C" S $P(^(0),"^",2)="C",$P(^(0),"^",12)=DUZ,$P(^(0),"^",14)=SDTIME,DH=DH+1,TDH=DH,DIE="^DPT(DFN,"_"""S"""_",",DR="17///^S X=SDCANREM",DA=FR D ^DIE S DH=TDH D MORE "RTN","SDESCCAVAIL",129,0) .D SDEC^SDCNP0(DFN,FR,SC,"C","",$G(SDCANREM),SDTIME,DUZ) ;alb/sat 627 "RTN","SDESCCAVAIL",130,0) G C "RTN","SDESCCAVAIL",131,0) Q "RTN","SDESCCAVAIL",132,0) ; "RTN","SDESCCAVAIL",133,0) MORE ; "RTN","SDESCCAVAIL",134,0) I $D(^SC("ARAD",SC,FR,DFN)) S ^(DFN)="N" "RTN","SDESCCAVAIL",135,0) N SDV1 "RTN","SDESCCAVAIL",136,0) S SDIV=$S($P(^SC(SC,0),"^",15)]"":$P(^(0),"^",15),1:" 1"),SDV1=$S(SDIV:SDIV,1:+$O(^DG(40.8,0))) I $D(^DPT("ASDPSD","C",SDIV,SC,FR,DFN)) K ^(DFN) "RTN","SDESCCAVAIL",137,0) ; SD*724 - set SDPL with value from SDI "RTN","SDESCCAVAIL",138,0) S SDH=DH,SDTTM=FR,SDSC=SC,SDPL=SDI,SDRT="D" D RT^SDUTL "RTN","SDESCCAVAIL",139,0) S DH=SDH K SDH D CK1,EVT "RTN","SDESCCAVAIL",140,0) K SD1,SDIV,SDPL,SDRT,SDSC,SDTTM,SDX Q "RTN","SDESCCAVAIL",141,0) CK1 ; "RTN","SDESCCAVAIL",142,0) S SDX=0 F SD1=FR\1:0 S SD1=$O(^DPT(DFN,"S",SD1)) Q:'SD1!((SD1\1)'=(FR\1)) I $P(^(SD1,0),"^",2)'["C",$P(^(0),"^",2)'["N" S SDX=1 Q "RTN","SDESCCAVAIL",143,0) Q:SDX F SD1=2,4 I $D(^SC("AAS",SD1,FR\1,DFN)) S SDX=1 Q "RTN","SDESCCAVAIL",144,0) Q:SDX IF $D(^SCE(+$$EXAE^SDOE(DFN,FR\1,FR\1),0)) S SDX=1 "RTN","SDESCCAVAIL",145,0) Q:SDX K ^DPT("ASDPSD","B",SDIV,FR\1,DFN) Q "RTN","SDESCCAVAIL",146,0) ; "RTN","SDESCCAVAIL",147,0) EVT ; -- separate tag if need to NEW vars "RTN","SDESCCAVAIL",148,0) ; -- cancel event "RTN","SDESCCAVAIL",149,0) N FR,I,SDTIME,DH,SC "RTN","SDESCCAVAIL",150,0) D CANCEL^SDAMEVT(.SDATA,DFN,SDTTM,SDSC,SDPL,0,SDCNHDL) K SDATA,SDCNHDL "RTN","SDESCCAVAIL",151,0) Q "RTN","SDESCCAVAIL",152,0) ; "RTN","SDESCCAVAIL",153,0) TC(TIME) ; "RTN","SDESCCAVAIL",154,0) N %DT "RTN","SDESCCAVAIL",155,0) I $L(TIME)=3 S TIME="0"_TIME "RTN","SDESCCAVAIL",156,0) S X=TIME_"0000",X=$E(X,1,4) "RTN","SDESCCAVAIL",157,0) S X=$$FMTE^XLFDT(SD)_"@"_X,%DT="TE" "RTN","SDESCCAVAIL",158,0) D ^%DT "RTN","SDESCCAVAIL",159,0) I Y<0!(X["?") Q "RTN","SDESCCAVAIL",160,0) S X=$E($P(Y_"0000",".",2),1,4),%=$E(X,3,4),%=X\100-STARTDAY*SI+(%*SI\60)*2 "RTN","SDESCCAVAIL",161,0) I %<0!(%>72) S Y=-1 "RTN","SDESCCAVAIL",162,0) Q "RTN","SDESCKNSTEP") 0^11^B63763776^B53138846 "RTN","SDESCKNSTEP",1,0) SDESCKNSTEP ;ALB/BLB,TAW,MGD - VISTA SCHEDULING RPCS ;Jan 10, 2022@13:04 "RTN","SDESCKNSTEP",2,0) ;;5.3;Scheduling;**788,790,792,800,805**;Aug 13, 1993;Build 9 "RTN","SDESCKNSTEP",3,0) ;;Per VHA Directive 2004-038, this routine should not be modified; "RTN","SDESCKNSTEP",4,0) Q "RTN","SDESCKNSTEP",5,0) SETAPPTCKNSTEP(SDECY,IEN,STATUS,EAS) ; File check-in status and date/time in 409.843,.01/1 "RTN","SDESCKNSTEP",6,0) N STATPOINTER,SIEN,DATETIME,FDA,SDCHECKIN "RTN","SDESCKNSTEP",7,0) I '$G(IEN) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,14),BUILDER Q "RTN","SDESCKNSTEP",8,0) I '$D(^SDEC(409.84,IEN,0)) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,15),BUILDER Q ;invalid appt IEN "RTN","SDESCKNSTEP",9,0) I $G(STATUS)="" S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,38),BUILDER Q "RTN","SDESCKNSTEP",10,0) I '$D(^SDEC(409.842,STATUS,0)) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,37),BUILDER Q "RTN","SDESCKNSTEP",11,0) I $$GET1^DIQ(409.84,IEN,.17,"E")="C" S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,31),BUILDER Q ;appt status is "C" (canceled) "RTN","SDESCKNSTEP",12,0) S EAS=$TR($G(EAS),"^"," ") "RTN","SDESCKNSTEP",13,0) I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL(EAS) "RTN","SDESCKNSTEP",14,0) I +EAS=-1 S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,142),BUILDER Q "RTN","SDESCKNSTEP",15,0) S SIEN=0,STATPOINTER=0 "RTN","SDESCKNSTEP",16,0) F S SIEN=$O(^SDEC(409.84,IEN,3,SIEN)) Q:'SIEN!(STATPOINTER=STATUS) D "RTN","SDESCKNSTEP",17,0) .S STATPOINTER=$$GET1^DIQ(409.843,SIEN_","_IEN_",",.01,"I") "RTN","SDESCKNSTEP",18,0) I STATPOINTER=STATUS S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,32),BUILDER Q ; duplicate status entry, will not file "RTN","SDESCKNSTEP",19,0) S DATETIME=$$NOW^XLFDT "RTN","SDESCKNSTEP",20,0) S FDA(409.843,"+1,"_IEN_",",.01)=STATUS "RTN","SDESCKNSTEP",21,0) S FDA(409.843,"+1,"_IEN_",",1)=DATETIME "RTN","SDESCKNSTEP",22,0) D UPDATE^DIE(,"FDA",,"ERR") K FDA "RTN","SDESCKNSTEP",23,0) S FDA(409.84,IEN_",",100)=$G(EAS) "RTN","SDESCKNSTEP",24,0) D FILE^DIE(,"FDA") K FDA "RTN","SDESCKNSTEP",25,0) I '$D(ERR) D Q "RTN","SDESCKNSTEP",26,0) .S SDCHECKIN("ApptCheckInSteps","FilingSuccess")=1 D BUILDER "RTN","SDESCKNSTEP",27,0) .I STATUS=6 D "RTN","SDESCKNSTEP",28,0) ..D CHECKIN(IEN) "RTN","SDESCKNSTEP",29,0) I $D(ERR) D ERRLOG^SDESJSON(.SDCHECKIN,36) D BUILDER "RTN","SDESCKNSTEP",30,0) Q "RTN","SDESCKNSTEP",31,0) ; "RTN","SDESCKNSTEP",32,0) CHECKIN(IEN) ; "RTN","SDESCKNSTEP",33,0) S DATETIME=$$NOW^XLFDT,DATETIME=$$FMTE^XLFDT(DATETIME) "RTN","SDESCKNSTEP",34,0) D CHECKIN^SDEC25(.SDECY,IEN,DATETIME,,,"FALSE",,"FALSE",,,"FALSE","FALSE") "RTN","SDESCKNSTEP",35,0) Q "RTN","SDESCKNSTEP",36,0) ; "RTN","SDESCKNSTEP",37,0) GETAPPTCKNSTEP(SDECY,IEN,STATUS,EAS) ; Get check-in status associated appointment IEN and passed in status "RTN","SDESCKNSTEP",38,0) N SDCHECKIN,SIEN,STATPOINTER,STAT,DATETIME "RTN","SDESCKNSTEP",39,0) I '$G(IEN) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,14),BUILDER Q "RTN","SDESCKNSTEP",40,0) I $G(STATUS)="" S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,38),BUILDER Q "RTN","SDESCKNSTEP",41,0) I '$D(^SDEC(409.84,IEN,0)) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,15),BUILDER Q ;invalid appt IEN "RTN","SDESCKNSTEP",42,0) S EAS=$G(EAS,"") "RTN","SDESCKNSTEP",43,0) I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL(EAS) "RTN","SDESCKNSTEP",44,0) I +EAS=-1 D ERRLOG^SDESJSON(.SDCHECKIN,142),BUILDER Q "RTN","SDESCKNSTEP",45,0) ; "RTN","SDESCKNSTEP",46,0) S SIEN=0 "RTN","SDESCKNSTEP",47,0) F S SIEN=$O(^SDEC(409.84,IEN,3,SIEN)) Q:'SIEN D "RTN","SDESCKNSTEP",48,0) .S STATPOINTER=$$GET1^DIQ(409.843,SIEN_","_IEN_",",.01,"I") "RTN","SDESCKNSTEP",49,0) .I STATPOINTER'=STATUS Q ; no match "RTN","SDESCKNSTEP",50,0) .S STAT=$$GET1^DIQ(409.842,STATPOINTER,.01,"E") "RTN","SDESCKNSTEP",51,0) .S DATETIME=$$GET1^DIQ(409.843,SIEN_","_IEN_",",1,"E"),DATETIME=$$FMTE^XLFDT(DATETIME) "RTN","SDESCKNSTEP",52,0) .S EAS=$$GET1^DIQ(409.84,IEN,100,"E") "RTN","SDESCKNSTEP",53,0) .D CKNBUILDER(STATPOINTER,STAT,DATETIME,"GETAPPTCKNSTEP") "RTN","SDESCKNSTEP",54,0) I '$D(SDCHECKIN("ApptCheckInSteps")) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,30) ;no status match found, will not pass back status "RTN","SDESCKNSTEP",55,0) D BUILDER "RTN","SDESCKNSTEP",56,0) Q "RTN","SDESCKNSTEP",57,0) GETAPPTCKNSTEPS(SDECY,IEN,EAS) ; Get a list of checkin statuses associated with an appointment IEN "RTN","SDESCKNSTEP",58,0) N SDCHECKIN,SIEN,STATPOINTER,STAT,DATETIME,NUM "RTN","SDESCKNSTEP",59,0) I '$G(IEN) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,14),BUILDER Q "RTN","SDESCKNSTEP",60,0) I '$D(^SDEC(409.84,IEN,0)) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,15),BUILDER Q ;invalid appt IEN "RTN","SDESCKNSTEP",61,0) S EAS=$G(EAS,"") "RTN","SDESCKNSTEP",62,0) I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL(EAS) "RTN","SDESCKNSTEP",63,0) I +EAS=-1 D ERRLOG^SDESJSON(.SDCHECKIN,142),BUILDER Q "RTN","SDESCKNSTEP",64,0) S SIEN=0,NUM=0 "RTN","SDESCKNSTEP",65,0) F S SIEN=$O(^SDEC(409.84,IEN,3,SIEN)) Q:'SIEN D "RTN","SDESCKNSTEP",66,0) .S NUM=NUM+1 "RTN","SDESCKNSTEP",67,0) .S STATPOINTER=$$GET1^DIQ(409.843,SIEN_","_IEN_",",.01,"I") "RTN","SDESCKNSTEP",68,0) .S STAT=$$GET1^DIQ(409.842,STATPOINTER,.01,"E") "RTN","SDESCKNSTEP",69,0) .S DATETIME=$$GET1^DIQ(409.843,SIEN_","_IEN_",",1,"E"),DATETIME=$$FMTE^XLFDT(DATETIME) "RTN","SDESCKNSTEP",70,0) .S EAS=$$GET1^DIQ(409.84,IEN,100,"E") "RTN","SDESCKNSTEP",71,0) .D CKNBUILDER(STATPOINTER,STAT,DATETIME,"GETAPPTCKNSTEPS") "RTN","SDESCKNSTEP",72,0) .D BUILDER "RTN","SDESCKNSTEP",73,0) I '$D(SDCHECKIN("ApptCheckInSteps")) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,33),BUILDER Q ;no statuses found, will not pass back list "RTN","SDESCKNSTEP",74,0) Q "RTN","SDESCKNSTEP",75,0) SETCKNSTEP(SDECY,STATUS,EAS) ;create new status entry in check-in step status file "RTN","SDESCKNSTEP",76,0) N FDA,SDCHECKIN,IEN,ENTRY "RTN","SDESCKNSTEP",77,0) I $G(STATUS)="" S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,38),BUILDER Q "RTN","SDESCKNSTEP",78,0) I $L(STATUS)<3!($L(STATUS)>30) S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,39),BUILDER Q "RTN","SDESCKNSTEP",79,0) I STATUS'?.E1A.E S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,41),BUILDER Q "RTN","SDESCKNSTEP",80,0) S EAS=$G(EAS,"") "RTN","SDESCKNSTEP",81,0) I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL(EAS) "RTN","SDESCKNSTEP",82,0) I +EAS=-1 D ERRLOG^SDESJSON(.SDCHECKIN,142),BUILDER Q "RTN","SDESCKNSTEP",83,0) S IEN=0,ENTRY="" "RTN","SDESCKNSTEP",84,0) F S IEN=$O(^SDEC(409.842,IEN)) Q:'IEN!(STATUS=ENTRY) D "RTN","SDESCKNSTEP",85,0) .S ENTRY=$$GET1^DIQ(409.842,IEN,.01,"E") "RTN","SDESCKNSTEP",86,0) I STATUS=ENTRY S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,32),BUILDER Q ; duplicate status entry, will not file "RTN","SDESCKNSTEP",87,0) S FDA(409.842,"+1,",.01)=STATUS "RTN","SDESCKNSTEP",88,0) D UPDATE^DIE(,"FDA",,"ERR") K FDA,ERR "RTN","SDESCKNSTEP",89,0) I '$D(ERR) S SDCHECKIN("CheckInSteps",0,"FilingSuccess")=1 D BUILDER Q "RTN","SDESCKNSTEP",90,0) I $D(ERR) D ERRLOG^SDESJSON(.SDCHECKIN,34),BUILDER "RTN","SDESCKNSTEP",91,0) Q "RTN","SDESCKNSTEP",92,0) EDITCKNSTEP(SDECY,IEN,STATUS,EAS) ; edit entry in check-in step status file "RTN","SDESCKNSTEP",93,0) N FDA,SDCHECKIN,ENTRY,SIEN "RTN","SDESCKNSTEP",94,0) I '$G(IEN) S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,40),BUILDER Q "RTN","SDESCKNSTEP",95,0) I $G(STATUS)="" S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,38),BUILDER Q "RTN","SDESCKNSTEP",96,0) I STATUS'="@",$L(STATUS)<3!($L(STATUS)>30) S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,39),BUILDER Q "RTN","SDESCKNSTEP",97,0) I STATUS'="@",STATUS'?.E1A.E S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,41),BUILDER Q "RTN","SDESCKNSTEP",98,0) I '$D(^SDEC(409.842,IEN,0)) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,37),BUILDER Q "RTN","SDESCKNSTEP",99,0) S EAS=$G(EAS,"") "RTN","SDESCKNSTEP",100,0) I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL(EAS) "RTN","SDESCKNSTEP",101,0) I +EAS=-1 D ERRLOG^SDESJSON(.SDCHECKIN,142),BUILDER Q "RTN","SDESCKNSTEP",102,0) ; "RTN","SDESCKNSTEP",103,0) S SIEN=0,ENTRY="" "RTN","SDESCKNSTEP",104,0) F S SIEN=$O(^SDEC(409.842,SIEN)) Q:'SIEN!(STATUS=ENTRY) D "RTN","SDESCKNSTEP",105,0) .S ENTRY=$$GET1^DIQ(409.842,SIEN,.01,"E") "RTN","SDESCKNSTEP",106,0) I STATUS=ENTRY S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,32),BUILDER Q ; duplicate status entry, will not file "RTN","SDESCKNSTEP",107,0) S FDA(409.842,IEN_",",.01)=STATUS "RTN","SDESCKNSTEP",108,0) D FILE^DIE(,"FDA","ERR") K FDA "RTN","SDESCKNSTEP",109,0) I '$D(ERR) S SDCHECKIN("CheckInSteps",0,"FilingSuccess")=1 D BUILDER Q "RTN","SDESCKNSTEP",110,0) I $D(ERR) D ERRLOG^SDESJSON(.SDCHECKIN,35),BUILDER "RTN","SDESCKNSTEP",111,0) Q "RTN","SDESCKNSTEP",112,0) GETCKNSTEP(SDECY,IEN,EAS) ;get status from check-in step status file "RTN","SDESCKNSTEP",113,0) N SDCHECKIN,STATUS "RTN","SDESCKNSTEP",114,0) I '$G(IEN) S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,40),BUILDER Q "RTN","SDESCKNSTEP",115,0) S EAS=$G(EAS,"") "RTN","SDESCKNSTEP",116,0) I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL(EAS) "RTN","SDESCKNSTEP",117,0) I +EAS=-1 D ERRLOG^SDESJSON(.SDCHECKIN,142),BUILDER Q "RTN","SDESCKNSTEP",118,0) S STATUS=$$GET1^DIQ(409.842,IEN,.01,"E") "RTN","SDESCKNSTEP",119,0) D CKNBUILDER(IEN,STATUS,"","GETCKNSTEP") "RTN","SDESCKNSTEP",120,0) I $G(STATUS)="" S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,37),BUILDER Q "RTN","SDESCKNSTEP",121,0) D BUILDER "RTN","SDESCKNSTEP",122,0) Q "RTN","SDESCKNSTEP",123,0) GETCKNSTEPS(SDECY,EAS) ; "RTN","SDESCKNSTEP",124,0) N SDCHECKIN,IEN,NUM "RTN","SDESCKNSTEP",125,0) S EAS=$G(EAS,"") "RTN","SDESCKNSTEP",126,0) I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL(EAS) "RTN","SDESCKNSTEP",127,0) I +EAS=-1 D ERRLOG^SDESJSON(.SDCHECKIN,142),BUILDER Q "RTN","SDESCKNSTEP",128,0) S IEN=0,NUM=0 "RTN","SDESCKNSTEP",129,0) F S IEN=$O(^SDEC(409.842,IEN)) Q:'IEN D "RTN","SDESCKNSTEP",130,0) .S NUM=NUM+1 "RTN","SDESCKNSTEP",131,0) .S STATUS=$$GET1^DIQ(409.842,IEN,.01,"E") "RTN","SDESCKNSTEP",132,0) .D CKNBUILDER(IEN,STATUS,"","GETCKNSTEPS") "RTN","SDESCKNSTEP",133,0) .D BUILDER "RTN","SDESCKNSTEP",134,0) Q "RTN","SDESCKNSTEP",135,0) BUILDER ; "RTN","SDESCKNSTEP",136,0) D ENCODE^XLFJSON("SDCHECKIN","SDECY","ERR") "RTN","SDESCKNSTEP",137,0) Q "RTN","SDESCKNSTEP",138,0) CKNBUILDER(IEN,STATUS,DATETIME,TAG) ; "RTN","SDESCKNSTEP",139,0) ;single appt check-in step "RTN","SDESCKNSTEP",140,0) I $G(TAG)="GETAPPTCKNSTEP" D "RTN","SDESCKNSTEP",141,0) .S SDCHECKIN("ApptCheckInSteps","IEN")=$G(IEN) "RTN","SDESCKNSTEP",142,0) .S SDCHECKIN("ApptCheckInSteps","Status")=$G(STATUS) "RTN","SDESCKNSTEP",143,0) .S SDCHECKIN("ApptCheckInSteps","DateTime")=$G(DATETIME) "RTN","SDESCKNSTEP",144,0) .S SDCHECKIN("ApptCheckInSteps","EASTrackingNumber")=$G(EAS) "RTN","SDESCKNSTEP",145,0) I $G(TAG)="GETAPPTCKNSTEP",$D(SDCHECKIN("ApptCheckInSteps")) Q "RTN","SDESCKNSTEP",146,0) ;list of appt check-in steps "RTN","SDESCKNSTEP",147,0) I $G(TAG)="GETAPPTCKNSTEPS" D "RTN","SDESCKNSTEP",148,0) .S SDCHECKIN("ApptCheckInSteps",NUM,"IEN")=$G(IEN) "RTN","SDESCKNSTEP",149,0) .S SDCHECKIN("ApptCheckInSteps",NUM,"Status")=$G(STAT) "RTN","SDESCKNSTEP",150,0) .S SDCHECKIN("ApptCheckInSteps",NUM,"DateTime")=$G(DATETIME) "RTN","SDESCKNSTEP",151,0) .S SDCHECKIN("ApptCheckInSteps",1,"EASTrackingNumber")=$G(EAS) "RTN","SDESCKNSTEP",152,0) I $G(TAG)="GETAPPTCKNSTEPS",$D(SDCHECKIN("ApptCheckInSteps")) Q "RTN","SDESCKNSTEP",153,0) ;single check-in step "RTN","SDESCKNSTEP",154,0) I $G(TAG)="GETCKNSTEP" D "RTN","SDESCKNSTEP",155,0) .S SDCHECKIN("CheckInSteps","IEN")=$G(IEN) "RTN","SDESCKNSTEP",156,0) .S SDCHECKIN("CheckInSteps",0,"Status")=STATUS "RTN","SDESCKNSTEP",157,0) I $G(TAG)="GETCKNSTEP",$D(SDCHECKIN("CheckInSteps")) Q "RTN","SDESCKNSTEP",158,0) ;list of check-in steps "RTN","SDESCKNSTEP",159,0) I $G(TAG)="GETCKNSTEPS" D "RTN","SDESCKNSTEP",160,0) .S SDCHECKIN("CheckInSteps",NUM,"IEN")=$G(IEN) "RTN","SDESCKNSTEP",161,0) .S SDCHECKIN("CheckInSteps",NUM,"Status")=STATUS "RTN","SDESCKNSTEP",162,0) I $G(TAG)="GETCKNSTEPS",$D(SDCHECKIN("CheckInSteps")) Q "RTN","SDESCKNSTEP",163,0) Q "RTN","SDESCKNSTEP",164,0) ; "RTN","SDESCKNSTEP",165,0) HASCKNSTEP(IEN,STATUS) ; "RTN","SDESCKNSTEP",166,0) ; Function will confirm if a STATUS is on the Appointment IEN "RTN","SDESCKNSTEP",167,0) ; IEN - IEN from SDEC Appointment "RTN","SDESCKNSTEP",168,0) ; STATUS - IEN from SDEC CHECK-IN STEP STATUS "RTN","SDESCKNSTEP",169,0) N SIEN,RET "RTN","SDESCKNSTEP",170,0) S (SIEN,RET)=0 "RTN","SDESCKNSTEP",171,0) F S SIEN=$O(^SDEC(409.84,IEN,3,SIEN)) Q:'SIEN D Q:RET "RTN","SDESCKNSTEP",172,0) .I STATUS=$P($G(^SDEC(409.84,IEN,3,SIEN,0)),"^",1) S RET=1 "RTN","SDESCKNSTEP",173,0) Q RET "RTN","SDESCKNSTEP",174,0) ; "RTN","SDESCKNSTEP",175,0) LASTCKNSTEP(IEN) ; "RTN","SDESCKNSTEP",176,0) ; Function will return the last Check In Step on the Appointment IEN "RTN","SDESCKNSTEP",177,0) ; IEN - IEN from SDEC Appointment "RTN","SDESCKNSTEP",178,0) N SIEN,RET,STEP "RTN","SDESCKNSTEP",179,0) S (SIEN,RET)="" "RTN","SDESCKNSTEP",180,0) S SIEN=$O(^SDEC(409.84,IEN,3,9999999999),-1) "RTN","SDESCKNSTEP",181,0) IF +SIEN S STEP=$P($G(^SDEC(409.84,IEN,3,SIEN,0)),"^",1),RET=$$GET1^DIQ(409.842,STEP,.01,"E") "RTN","SDESCKNSTEP",182,0) Q RET "RTN","SDESCLINICAVAIL") 0^12^B24322500^B22975441 "RTN","SDESCLINICAVAIL",1,0) SDESCLINICAVAIL ;ALB/RRM,MGD - VISTA SCHEDULING RPCS GET CLINIC AVAILABILITY ; Jan 07, 2022@13:08 "RTN","SDESCLINICAVAIL",2,0) ;;5.3;Scheduling;**800,805**;Aug 13, 1993;Build 9 "RTN","SDESCLINICAVAIL",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESCLINICAVAIL",4,0) ; "RTN","SDESCLINICAVAIL",5,0) ;Global References Supported by ICR# Type "RTN","SDESCLINICAVAIL",6,0) ;----------------- ----------------- ---------- "RTN","SDESCLINICAVAIL",7,0) ; ^TMP($J SACC 2.3.2.5.1 "RTN","SDESCLINICAVAIL",8,0) ; "RTN","SDESCLINICAVAIL",9,0) ;External References "RTN","SDESCLINICAVAIL",10,0) ;------------------- "RTN","SDESCLINICAVAIL",11,0) ; ^%DT 10003 Supported "RTN","SDESCLINICAVAIL",12,0) ; $$FIND1^DIC 2051 Supported "RTN","SDESCLINICAVAIL",13,0) ; $$GET1^DIQ 2056 Supported "RTN","SDESCLINICAVAIL",14,0) ; "RTN","SDESCLINICAVAIL",15,0) Q ;No Direct Call "RTN","SDESCLINICAVAIL",16,0) ; "RTN","SDESCLINICAVAIL",17,0) GETCLAVAILABLTY(RETURN,CLINICIEN,SDESSTART,SDESENDDATE,SDEAS) ;Called from RPC: SDES GET CLINIC AVAILABILITY "RTN","SDESCLINICAVAIL",18,0) ; This RPC returns available appointment slots within a given timeframe for a given clinic in JSON format. "RTN","SDESCLINICAVAIL",19,0) ; Input: "RTN","SDESCLINICAVAIL",20,0) ; RETURN [required] - This is where the retrieve data is stored in JSON format "RTN","SDESCLINICAVAIL",21,0) ; CLINICIEN [required] - The Internal Entry Number (IEN) from the HOSPITAL LOCATION File #44 "RTN","SDESCLINICAVAIL",22,0) ; SDESSTART [required] - The Start Date mm/dd/yyyy in external format to search from "RTN","SDESCLINICAVAIL",23,0) ; SDESENDDATE [required] - The End Date mm/dd/yyyy in external format to search to "RTN","SDESCLINICAVAIL",24,0) ; SDEAS [optional] - Enterprise Appointment Scheduling (EAS) Tracking Number associated to an appointment. "RTN","SDESCLINICAVAIL",25,0) ; "RTN","SDESCLINICAVAIL",26,0) N SDGETCLAVL,SDCLNAME,ERROR,SDCLRESIEN,SDTMPARY "RTN","SDESCLINICAVAIL",27,0) S ERROR=0 "RTN","SDESCLINICAVAIL",28,0) K RETURN,SDGETCLAVL ;always clear returned data array to ensure a new array of data are returned "RTN","SDESCLINICAVAIL",29,0) D VALINPUT ;validate input parameters "RTN","SDESCLINICAVAIL",30,0) I 'ERROR D "RTN","SDESCLINICAVAIL",31,0) . K SDTMPARY "RTN","SDESCLINICAVAIL",32,0) . S SDTMPARY=$NA(^TMP($J,"CLNCAVAIL")) "RTN","SDESCLINICAVAIL",33,0) . K @SDTMPARY "RTN","SDESCLINICAVAIL",34,0) . D GETSLOTS^SDEC57(SDTMPARY,SDCLRESIEN,SDESSTART,SDESENDDATE) "RTN","SDESCLINICAVAIL",35,0) . D BUILDDATA "RTN","SDESCLINICAVAIL",36,0) . K @SDTMPARY "RTN","SDESCLINICAVAIL",37,0) D BUILDJSON "RTN","SDESCLINICAVAIL",38,0) K SDGETCLAVL "RTN","SDESCLINICAVAIL",39,0) Q "RTN","SDESCLINICAVAIL",40,0) ; "RTN","SDESCLINICAVAIL",41,0) VALINPUT ;validate input parameters "RTN","SDESCLINICAVAIL",42,0) N SDERR,EFLAG,SFLAG "RTN","SDESCLINICAVAIL",43,0) S (SFLAG,EFLAG)=0 "RTN","SDESCLINICAVAIL",44,0) ;validate CLINIC IEN "RTN","SDESCLINICAVAIL",45,0) I $G(CLINICIEN)="" D ERRLOG^SDESJSON(.SDGETCLAVL,67) S ERROR=1 ;clinic cannot be blank "RTN","SDESCLINICAVAIL",46,0) I +$G(CLINICIEN)>0 D "RTN","SDESCLINICAVAIL",47,0) . S SDCLNAME=$$GET1^DIQ(44,CLINICIEN_",",.01,"I") ;retrieve the clinic name "RTN","SDESCLINICAVAIL",48,0) . I SDCLNAME="" D ERRLOG^SDESJSON(.SDGETCLAVL,80) S ERROR=1 Q ;clinic IEN not found "RTN","SDESCLINICAVAIL",49,0) . S SDCLRESIEN=$$FIND1^DIC(409.831,"","MX",SDCLNAME,"","","SDERR") ;retrieve the resource IEN for the clinic "RTN","SDESCLINICAVAIL",50,0) . I $D(SDERR) D ERRLOG^SDESJSON(.SDGETCLAVL,70) S ERROR=1 ;invalid clinic resource id "RTN","SDESCLINICAVAIL",51,0) E D ERRLOG^SDESJSON(.SDGETCLAVL,52,"Invalid Clinic IEN") S ERROR=1 "RTN","SDESCLINICAVAIL",52,0) ;validate start date "RTN","SDESCLINICAVAIL",53,0) I $G(SDESSTART)="" D ERRLOG^SDESJSON(.SDGETCLAVL,9) S ERROR=1 ;missing begin date "RTN","SDESCLINICAVAIL",54,0) I +$G(SDESSTART)>0 D "RTN","SDESCLINICAVAIL",55,0) . S SDESSTART=$$EX2INTDT($P(SDESSTART,"@",1)) ;convert external format to internal format "RTN","SDESCLINICAVAIL",56,0) . S SFLAG=1 "RTN","SDESCLINICAVAIL",57,0) . I +SDESSTART<1 D ERRLOG^SDESJSON(.SDGETCLAVL,11) S ERROR=1 Q ;invalid begin date "RTN","SDESCLINICAVAIL",58,0) . I +SDESSTART
0 D "RTN","SDESCLINICAVAIL",63,0) . S SDESENDDATE=$$EX2INTDT($P(SDESENDDATE,"@",1)) ;convert external format to internal format "RTN","SDESCLINICAVAIL",64,0) . S EFLAG=1 "RTN","SDESCLINICAVAIL",65,0) . I +SDESENDDATE<1 D ERRLOG^SDESJSON(.SDGETCLAVL,12) S ERROR=1 Q ;invalid end date "RTN","SDESCLINICAVAIL",66,0) . I +SDESENDDATE<+SDESSTART D ERRLOG^SDESJSON(.SDGETCLAVL,13) S ERROR=1 Q ;end date cannot be in the past "RTN","SDESCLINICAVAIL",67,0) E D ERRLOG^SDESJSON(.SDGETCLAVL,12) S ERROR=1 ;invalid end date "RTN","SDESCLINICAVAIL",68,0) I SFLAG,EFLAG D "RTN","SDESCLINICAVAIL",69,0) . I SDESSTART=SDESENDDATE D ERRLOG^SDESJSON(.SDGETCLAVL,52,"Start and End Date cannot be less than a day") S ERROR=1 "RTN","SDESCLINICAVAIL",70,0) ; validate EAS "RTN","SDESCLINICAVAIL",71,0) S SDEAS=$G(SDEAS,"") "RTN","SDESCLINICAVAIL",72,0) I $L(SDEAS) S SDEAS=$$EASVALIDATE^SDESUTIL(SDEAS) "RTN","SDESCLINICAVAIL",73,0) I +SDEAS=-1 D ERRLOG^SDESJSON(.SDGETCLAVL,142) S ERROR=1 "RTN","SDESCLINICAVAIL",74,0) Q "RTN","SDESCLINICAVAIL",75,0) ; "RTN","SDESCLINICAVAIL",76,0) EX2INTDT(X) ; Receives date in external format, returns internal format "RTN","SDESCLINICAVAIL",77,0) N %DT,Y "RTN","SDESCLINICAVAIL",78,0) I ($L(X," ")=2),(X?1.2N1P1.2N1P1.2N1" "1.2N.E) S X=$TR(X," ","@") "RTN","SDESCLINICAVAIL",79,0) S %DT="TSP" D ^%DT "RTN","SDESCLINICAVAIL",80,0) Q Y "RTN","SDESCLINICAVAIL",81,0) ; "RTN","SDESCLINICAVAIL",82,0) BUILDDATA ;retrieve clinic availability data "RTN","SDESCLINICAVAIL",83,0) N SDP1,SDP2,SDP3,SDP4,SDSTRTDT,SDENDDT,SDSLOTS,SDSTOPTM,SDSTRTTM,SDTOTAL,II "RTN","SDESCLINICAVAIL",84,0) I $O(@SDTMPARY@(""))="" D ERRLOG^SDESJSON(.SDGETCLAVL,126) Q "RTN","SDESCLINICAVAIL",85,0) S SDTOTAL=@SDTMPARY@("CNT") "RTN","SDESCLINICAVAIL",86,0) F II=1:1:SDTOTAL D "RTN","SDESCLINICAVAIL",87,0) . S SDP1=$P(@SDTMPARY@(II),U,2) ;start date "RTN","SDESCLINICAVAIL",88,0) . S SDP2=$P(@SDTMPARY@(II),U,3) ;end date "RTN","SDESCLINICAVAIL",89,0) . S SDP3=+$P(@SDTMPARY@(II),U,4) ;open slots available "RTN","SDESCLINICAVAIL",90,0) . S SDP4=$P(@SDTMPARY@(II),U,5) ;access type (1=available, 2=not available, 3=cancelled) "RTN","SDESCLINICAVAIL",91,0) . ; "RTN","SDESCLINICAVAIL",92,0) . S SDSTRTDT=$P(SDP1,".") ;start date - remove the time "RTN","SDESCLINICAVAIL",93,0) . S SDENDDT=$P(SDP2,".") ;end date - remove the time "RTN","SDESCLINICAVAIL",94,0) . S SDSTRTTM=$E($P(SDP1_"0000",".",2),1,4) ;start time "RTN","SDESCLINICAVAIL",95,0) . S SDSTOPTM=$E($P(SDP2_"0000",".",2),1,4) ;stop time "RTN","SDESCLINICAVAIL",96,0) . S SDSLOTS=$P(@SDTMPARY@(II),U,4) "RTN","SDESCLINICAVAIL",97,0) . S SDSLOTS=$S(SDSLOTS=" ":"",1:SDSLOTS) "RTN","SDESCLINICAVAIL",98,0) . S SDSLOTS=$S(SDP4=2:"",SDP4=3:"X",1:SDSLOTS) "RTN","SDESCLINICAVAIL",99,0) . S SDGETCLAVL($J,"SDESCLINICAVAIL",II)=SDSTRTDT_U_SDSTRTTM_U_SDSTOPTM_U_SDSLOTS "RTN","SDESCLINICAVAIL",100,0) Q "RTN","SDESCLINICAVAIL",101,0) ; "RTN","SDESCLINICAVAIL",102,0) BUILDJSON ;Convert data to JSON "RTN","SDESCLINICAVAIL",103,0) N JSONERR "RTN","SDESCLINICAVAIL",104,0) S JSONERR="" "RTN","SDESCLINICAVAIL",105,0) D ENCODE^SDESJSON(.SDGETCLAVL,.RETURN,.JSONERR) "RTN","SDESCLINICAVAIL",106,0) Q "RTN","SDESCLINICSET") 0^13^B165828222^B162040270 "RTN","SDESCLINICSET",1,0) SDESCLINICSET ;ALB/TAW,MGD - CLINIC CREATE AND UPDATE ;Jan 07, 2022 "RTN","SDESCLINICSET",2,0) ;;5.3;Scheduling;**799,805**;Aug 13, 1993;Build 9 "RTN","SDESCLINICSET",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESCLINICSET",4,0) ; "RTN","SDESCLINICSET",5,0) ; ICR: "RTN","SDESCLINICSET",6,0) ; 7024, 2295 - Medical Cednter Division file 40.8 "RTN","SDESCLINICSET",7,0) ; "RTN","SDESCLINICSET",8,0) ; SDNAME - [TEXT, REQ] Clinic Name "RTN","SDESCLINICSET",9,0) ; SDABR - [TEXT] ABBREVIATION "RTN","SDESCLINICSET",10,0) ; SDPATNAME - [TEXT] PATIENT FRIENDLY NAME "RTN","SDESCLINICSET",11,0) ; SDMEETATFAC - [Y/N] CLINIC MEETS AT THIS FACILITY? (Default = Y) "RTN","SDESCLINICSET",12,0) ; SDPATSCHED - [Y/N, REQ] ALLOW DIRECT PATIENT SCHEDULING? "RTN","SDESCLINICSET",13,0) ; SDDISPAPPT - [Y/N, REQ] DISPLAY CLIN APPT TO PATIENTS? "RTN","SDESCLINICSET",14,0) ; SDSERVICE - [Set of codes, REQ] SERVICE "RTN","SDESCLINICSET",15,0) ; SDNONCOUNT - [Y/N, REQ] NON-COUNT CLINIC? (Y OR N) "RTN","SDESCLINICSET",16,0) ; SDDIVSION - [File 40.8] DIVISION "RTN","SDESCLINICSET",17,0) ; SDSTOPCODE - [File 40.7, REQ] STOP CODE NUMBER "RTN","SDESCLINICSET",18,0) ; SDAPPTTYP - [File 409.1] DEFAULT APPOINTMENT TYPE "RTN","SDESCLINICSET",19,0) ; SDINPATMED - [Y/N] ADMINISTER INPATIENT MEDS? "RTN","SDESCLINICSET",20,0) ; SDPHONE - [TEXT] TELEPHONE "RTN","SDESCLINICSET",21,0) ; SDREQXRAY - [Y/N] REQUIRE X-RAY FILMS? "RTN","SDESCLINICSET",22,0) ; SDREQPROFILE - [Y/N] REQUIRE ACTION PROFILES? "RTN","SDESCLINICSET",23,0) ; SDNOSHOWLET - [File 407.5] NO SHOW LETTER "RTN","SDESCLINICSET",24,0) ; SDPREAPTLET - [File 407.5] PRE-APPOINTMENT LETTER "RTN","SDESCLINICSET",25,0) ; SDCANLET - [File 407.5] CLINIC CANCELLATION LETTER "RTN","SDESCLINICSET",26,0) ; SDAPTCANLET - [File 407.5] APPT. CANCELLATION LETTER "RTN","SDESCLINICSET",27,0) ; SDINOUTTIME - [Y/N] ASK FOR CHECK IN/OUT TIME "RTN","SDESCLINICSET",28,0) ; SDPROVIDER - [File 200] PROVIDER "RTN","SDESCLINICSET",29,0) ; SDPRACTIONER - [Y/N] DEFAULT TO PC PRACTITIONER? "RTN","SDESCLINICSET",30,0) ; SDDIAG - [file 80] DIAGNOSIS "RTN","SDESCLINICSET",31,0) ; SDWORKLOAD - [Y/N] WORKLOAD VALIDATION AT CHK OUT "RTN","SDESCLINICSET",32,0) ; SDALLOWNOSHW - [NUM, REQ] ALLOWABLE CONSECUTIVE NO-SHOWS "RTN","SDESCLINICSET",33,0) ; SDMACFUTBOOK - [NUM, REQ] MAX # DAYS FOR FUTURE BOOKING "RTN","SDESCLINICSET",34,0) ; SDSCHEDHOLIDAY - [Y/N] SCHEDULE ON HOLIDAYS? "RTN","SDESCLINICSET",35,0) ; SDCREDITSTOP - [File 40.7] CREDIT STOP CODE "RTN","SDESCLINICSET",36,0) ; SDNOACCESS - [Y/N] PROHIBIT ACCESS TO CLINIC? "RTN","SDESCLINICSET",37,0) ; SDLOCATION - [TEXT] PHYSICAL LOCATION "RTN","SDESCLINICSET",38,0) ; SDPRINCLINIC - [File 44] PRINCIPAL Clinic "RTN","SDESCLINICSET",39,0) ; SDOVBDAYMAX - [NUM, REQ] OVERBOOKS/DAY MAXIMUM "RTN","SDESCLINICSET",40,0) ; SDSPECINSTRU - [TEXT] SPECIAL INSTRUCTIONS "RTN","SDESCLINICSET",41,0) ; SDECHECKIN - [Y/N] E-CHECKIN ALLOWED "RTN","SDESCLINICSET",42,0) ; SDPRECJECKIN - [Y/N] PRE-CHECKIN ALLOWED NO "RTN","SDESCLINICSET",43,0) ; SDLENGTHOFAPT - [NUM, REQ] LENGTH OF APP'T "RTN","SDESCLINICSET",44,0) ; SDVARAPTLNG - [TEXT] VARIABLE APP'NTMENT LENGTH "RTN","SDESCLINICSET",45,0) ; SDINCPERHR - [NUM, REQ] DISPLAY INCRUMENTS PER HOUR "RTN","SDESCLINICSET",46,0) ; SDSTARTHR - [NUM] HOUR CLINIC DISPLAY BEGINS (Default = 8) "RTN","SDESCLINICSET",47,0) ; SDEAS - [TEXT OPT] Enterprise Appointment Scheduling (EAS) Tracking Number associated to an appointment. "RTN","SDESCLINICSET",48,0) ; "RTN","SDESCLINICSET",49,0) CLINICSET(RETURN,P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,P16,P17,P18,P19,P20,P21,P22,P23,P24,P25,P26,P27,P28,P29,P30,P31,P32,P33,P34,P35,P36,P37,P38,P39,P40) ; "RTN","SDESCLINICSET",50,0) N SDCLINIC,SDNAME,SDABR,SDPATNAME,SDMEETATFAC,SDPATSCHED,SDDISPAPPT,SDSERVICE,SDNONCOUNT,SDDIVSION,SDSTOPCODE,SDAPPTTYP,SDIEN "RTN","SDESCLINICSET",51,0) N SDINPATMED,SDPHONE,SDREQXRAY,SDREQPROFILE,SDNOSHOWLET,SDPREAPTLET,SDCANLET,SDAPTCANLET,SDINOUTTIME,SDPROVIDER,SDPRACTIONER "RTN","SDESCLINICSET",52,0) N SDDIAG,SDWORKLOAD,SDALLOWNOSHW,SDMAXFUTBOOK,SDSTTMAUTOBOOK,SDMAXDAYREBOOK,SDSCHEDHOLIDAY,SDCREDITSTOP,SDNOACCESS,SDFHRCLINBEGIN "RTN","SDESCLINICSET",53,0) N SDLOCATION,SDPRINCLINIC,SDOVBDAYMAX,SDSPECINSTRU,SDECHECKIN,SDPRECHECKIN,SDLENGTHOFAPT,SDVARAPTLNG,POP,SDINCPERHR,DEFAULTNEW "RTN","SDESCLINICSET",54,0) N I,PROV,PROVIDER,DIAG,DIAGNOSIS,INSTRUCTION,SPECIALINSTRUCT,PROVDATA,DEFAULT,KEY,DIAGDATA,DEFAULT,DEFAULTCNT,DEFAULTFLAG,ACTION "RTN","SDESCLINICSET",55,0) N DEFAULTCNT2,DEFALUTREMOVE,X,PRIVUSER,PRIVLIAGEDUSER,MI,SDSTARTHR,ERR,FDA,SDEAS "RTN","SDESCLINICSET",56,0) S POP=0 "RTN","SDESCLINICSET",57,0) I P0="" D "RTN","SDESCLINICSET",58,0) .D VALIDATE(0) "RTN","SDESCLINICSET",59,0) .I 'POP D CREATE "RTN","SDESCLINICSET",60,0) I P0'="" D "RTN","SDESCLINICSET",61,0) .D VALIDATE(1) "RTN","SDESCLINICSET",62,0) .I 'POP D UPDATE "RTN","SDESCLINICSET",63,0) I 'POP D SAVE^SDESCLINICSET2(.POP,SDIEN,.FDA,.SDCLINIC,.PROVIDER,.DIAGNOSIS,.SPECIALINSTRUCT,.PRIVLIAGEDUSER) "RTN","SDESCLINICSET",64,0) D BUILDER "RTN","SDESCLINICSET",65,0) Q "RTN","SDESCLINICSET",66,0) ; "RTN","SDESCLINICSET",67,0) VALIDATE(EDIT) ; "RTN","SDESCLINICSET",68,0) S SDIEN=$G(P0) "RTN","SDESCLINICSET",69,0) I SDIEN'="" D "RTN","SDESCLINICSET",70,0) .; If the Update RPC is called and no SDIEN is sent then it will show as -1 "RTN","SDESCLINICSET",71,0) .I SDIEN=-1 D ERRLOG(18) Q "RTN","SDESCLINICSET",72,0) .I '$D(^SC(SDIEN,0)) D ERRLOG(19) "RTN","SDESCLINICSET",73,0) ; "RTN","SDESCLINICSET",74,0) S SDNAME=$G(P1) "RTN","SDESCLINICSET",75,0) I SDNAME="@" S SDNAME="" ;Can't remove the name "RTN","SDESCLINICSET",76,0) I 'EDIT,SDNAME="" D ERRLOG(50) "RTN","SDESCLINICSET",77,0) I SDNAME'="",$D(^SC("B",$E(SDNAME,1,30))) D ERRLOG(51,"Name already in use") "RTN","SDESCLINICSET",78,0) ; "RTN","SDESCLINICSET",79,0) S SDABR=$G(P2) "RTN","SDESCLINICSET",80,0) ; "RTN","SDESCLINICSET",81,0) S SDPATNAME=$G(P3) "RTN","SDESCLINICSET",82,0) ; "RTN","SDESCLINICSET",83,0) S SDMEETATFAC=$G(P4) "RTN","SDESCLINICSET",84,0) I 'EDIT,SDMEETATFAC="" S SDMEETATFAC="Y" ;Default to Y "RTN","SDESCLINICSET",85,0) I '$$CHECKYN(SDMEETATFAC) D ERRLOG(87) "RTN","SDESCLINICSET",86,0) ; "RTN","SDESCLINICSET",87,0) S SDPATSCHED=$G(P5) "RTN","SDESCLINICSET",88,0) I SDPATSCHED="@" S SDPATSCHED="" ;Can't remove a required field "RTN","SDESCLINICSET",89,0) I 'EDIT,SDPATSCHED="" D ERRLOG(88) "RTN","SDESCLINICSET",90,0) I '$$CHECKYN(SDPATSCHED) D ERRLOG(89) "RTN","SDESCLINICSET",91,0) ; "RTN","SDESCLINICSET",92,0) S SDDISPAPPT=$G(P6) "RTN","SDESCLINICSET",93,0) I SDDISPAPPT="@" S SDDISPAPPT="" ;Can'ty remove a required field "RTN","SDESCLINICSET",94,0) I 'EDIT,SDDISPAPPT="" D ERRLOG(90) "RTN","SDESCLINICSET",95,0) I '$$CHECKYN(SDDISPAPPT) D ERRLOG(91) "RTN","SDESCLINICSET",96,0) ; "RTN","SDESCLINICSET",97,0) S SDSERVICE=$G(P7) "RTN","SDESCLINICSET",98,0) I SDSERVICE="@" S SDSERVICE="" ;Can't remove a reuired field "RTN","SDESCLINICSET",99,0) I 'EDIT,SDSERVICE="" D ERRLOG(92) "RTN","SDESCLINICSET",100,0) S SDSERVICE=$E(SDSERVICE) "RTN","SDESCLINICSET",101,0) S:SDSERVICE="N" SDSERVICE=0 "RTN","SDESCLINICSET",102,0) I SDSERVICE'="@",SDSERVICE'="",'$F("^M^S^P^R^N^0^","^"_SDSERVICE_"^") D ERRLOG(93) "RTN","SDESCLINICSET",103,0) ; "RTN","SDESCLINICSET",104,0) S SDNONCOUNT=$G(P8) "RTN","SDESCLINICSET",105,0) I SDNONCOUNT="@" S SDNONCOUNT="" ;Can't remove a reqired field "RTN","SDESCLINICSET",106,0) I 'EDIT,SDNONCOUNT="" D ERRLOG(94) "RTN","SDESCLINICSET",107,0) I '$$CHECKYN(SDNONCOUNT) D ERRLOG(95) "RTN","SDESCLINICSET",108,0) ; "RTN","SDESCLINICSET",109,0) S SDDIVSION=$G(P9) "RTN","SDESCLINICSET",110,0) I 'EDIT,SDDIVSION="" S SDDIVSION=$$GET1^DIQ(40.8,"1,",.01,"I") ;Default "RTN","SDESCLINICSET",111,0) I SDDIVSION'="",SDDIVSION'="@" D "RTN","SDESCLINICSET",112,0) .I +SDDIVSION,$D(^DG(40.8,SDDIVSION,0)) Q "RTN","SDESCLINICSET",113,0) .S SDDIVSION=$O(^DG(40.8,"B",$E(SDDIVSION,1,30),""),-1) "RTN","SDESCLINICSET",114,0) .I 'SDDIVSION D ERRLOG(97) "RTN","SDESCLINICSET",115,0) ; "RTN","SDESCLINICSET",116,0) S SDSTOPCODE=$G(P10) "RTN","SDESCLINICSET",117,0) I SDSTOPCODE="@" S SDSTOPCODE="" ;Can't remove a required field "RTN","SDESCLINICSET",118,0) I 'EDIT,SDSTOPCODE="" D ERRLOG(98) "RTN","SDESCLINICSET",119,0) I SDSTOPCODE'="",SDSTOPCODE'="@" D "RTN","SDESCLINICSET",120,0) .I +SDSTOPCODE,$D(^DIC(40.7,SDSTOPCODE,0)) Q "RTN","SDESCLINICSET",121,0) .S SDSTOPCODE=$O(^DIC(40.7,"B",$E(SDSTOPCODE,1,30),""),-1) "RTN","SDESCLINICSET",122,0) .I 'SDSTOPCODE D ERRLOG(99) "RTN","SDESCLINICSET",123,0) ; "RTN","SDESCLINICSET",124,0) S SDAPPTTYP=$G(P11) "RTN","SDESCLINICSET",125,0) I 'EDIT,SDAPPTTYP="" S SDAPPTTYP="REGULAR" "RTN","SDESCLINICSET",126,0) I SDAPPTTYP'="",SDAPPTTYP'="@" D "RTN","SDESCLINICSET",127,0) .I +SDAPPTTYP,$D(^SD(409.1,SDAPPTTYP,0)) Q "RTN","SDESCLINICSET",128,0) .S SDAPPTTYP=$O(^SD(409.1,"B",$E(SDAPPTTYP,1,30),""),-1) "RTN","SDESCLINICSET",129,0) .I 'SDAPPTTYP D ERRLOG(83) "RTN","SDESCLINICSET",130,0) ; "RTN","SDESCLINICSET",131,0) S SDINPATMED=$G(P12) "RTN","SDESCLINICSET",132,0) I 'EDIT,SDINPATMED'="Y" S SDINPATMED="" ;Default "RTN","SDESCLINICSET",133,0) I '$$CHECKYN(SDINPATMED) D ERRLOG(122) "RTN","SDESCLINICSET",134,0) I SDINPATMED'="@",SDINPATMED'="Y" S SDINPATMED="" "RTN","SDESCLINICSET",135,0) I EDIT,SDINPATMED="" S SDINPATMED="@" "RTN","SDESCLINICSET",136,0) S SDINPATMED=$$YNTOBOOL^SDESCLINICSET2(SDINPATMED) "RTN","SDESCLINICSET",137,0) ; "RTN","SDESCLINICSET",138,0) S SDPHONE=$G(P13) "RTN","SDESCLINICSET",139,0) ; "RTN","SDESCLINICSET",140,0) S SDREQXRAY=$G(P14) "RTN","SDESCLINICSET",141,0) I 'EDIT,SDREQXRAY'="Y" S SDREQXRAY="" ;Default "RTN","SDESCLINICSET",142,0) I '$$CHECKYN(SDREQXRAY) D ERRLOG(123) "RTN","SDESCLINICSET",143,0) I SDREQXRAY'="@",SDREQXRAY'="Y" S SDREQXRAY="" "RTN","SDESCLINICSET",144,0) I EDIT,SDREQXRAY="" S SDREQXRAY="@" "RTN","SDESCLINICSET",145,0) ; "RTN","SDESCLINICSET",146,0) S SDREQPROFILE=$G(P15) "RTN","SDESCLINICSET",147,0) I 'EDIT,SDREQPROFILE="" S SDREQPROFILE="Y" ;Default "RTN","SDESCLINICSET",148,0) I '$$CHECKYN(SDREQPROFILE) D ERRLOG(100) "RTN","SDESCLINICSET",149,0) S SDREQPROFILE=$$YNTOBOOL^SDESCLINICSET2(SDREQPROFILE) "RTN","SDESCLINICSET",150,0) I SDREQPROFILE?1N S SDREQPROFILE='SDREQPROFILE ;Because this field is defined oddly where 1=No and 0=Yes "RTN","SDESCLINICSET",151,0) ; "RTN","SDESCLINICSET",152,0) S SDNOSHOWLET=$G(P16) "RTN","SDESCLINICSET",153,0) S SDNOSHOWLET=$$LETTERIEN^SDESCLINICSET2(SDNOSHOWLET,"No show") "RTN","SDESCLINICSET",154,0) ; "RTN","SDESCLINICSET",155,0) S SDPREAPTLET=$G(P17) "RTN","SDESCLINICSET",156,0) S SDPREAPTLET=$$LETTERIEN^SDESCLINICSET2(SDPREAPTLET,"Pre appointment") "RTN","SDESCLINICSET",157,0) ; "RTN","SDESCLINICSET",158,0) S SDCANLET=$G(P18) "RTN","SDESCLINICSET",159,0) S SDCANLET=$$LETTERIEN^SDESCLINICSET2(SDCANLET,"Clinic cancellation") "RTN","SDESCLINICSET",160,0) ; "RTN","SDESCLINICSET",161,0) S SDAPTCANLET=$G(P19) "RTN","SDESCLINICSET",162,0) S SDAPTCANLET=$$LETTERIEN^SDESCLINICSET2(SDAPTCANLET,"Appointment cancellation") "RTN","SDESCLINICSET",163,0) ; "RTN","SDESCLINICSET",164,0) S SDINOUTTIME=$G(P20) "RTN","SDESCLINICSET",165,0) I '$$CHECKYN(SDINOUTTIME) D ERRLOG(101) "RTN","SDESCLINICSET",166,0) S SDINOUTTIME=$$YNTOBOOL^SDESCLINICSET2(SDINOUTTIME) "RTN","SDESCLINICSET",167,0) ; "RTN","SDESCLINICSET",168,0) ; Provider IEN or # | Action "RTN","SDESCLINICSET",169,0) ; "RTN","SDESCLINICSET",170,0) ; Action = @ means remove this provider "RTN","SDESCLINICSET",171,0) ; Adtion = D means set this provider as the default "RTN","SDESCLINICSET",172,0) ; Action = @D means remove the default flag from the provider "RTN","SDESCLINICSET",173,0) ; "RTN","SDESCLINICSET",174,0) ; Remove default flag ; Delet provider ; Add or update provider and set as default ; Add provider "RTN","SDESCLINICSET",175,0) ; Provider|@D ; Provider|@ ; Provider|D ; Provider "RTN","SDESCLINICSET",176,0) ; "RTN","SDESCLINICSET",177,0) ; EX: SMITH,JANE|@D;JAMES,JIM|;MACEY,MARY|@;ROBERTS,TIM "RTN","SDESCLINICSET",178,0) ; "RTN","SDESCLINICSET",179,0) S SDPROVIDER=$G(P21) "RTN","SDESCLINICSET",180,0) D:SDPROVIDER'="" VALIDATEPROV^SDESCLINICSET2(SDPROVIDER,.PROVIDER,SDIEN) "RTN","SDESCLINICSET",181,0) ; "RTN","SDESCLINICSET",182,0) S SDPRACTIONER=$G(P22) "RTN","SDESCLINICSET",183,0) I '$$CHECKYN(SDPRACTIONER) D ERRLOG(102) "RTN","SDESCLINICSET",184,0) S SDPRACTIONER=$$YNTOBOOL^SDESCLINICSET2(SDPRACTIONER) "RTN","SDESCLINICSET",185,0) ; "RTN","SDESCLINICSET",186,0) ; Diagnisis IEN or # | Action "RTN","SDESCLINICSET",187,0) ; "RTN","SDESCLINICSET",188,0) ; Action = @ means remove this diagnosos "RTN","SDESCLINICSET",189,0) ; Adtion = D means set this diagnosis as the default "RTN","SDESCLINICSET",190,0) ; Action = @D means remove the default flag from the diagnosis "RTN","SDESCLINICSET",191,0) ; "RTN","SDESCLINICSET",192,0) ; Remove default flag ; Delet Diagnosis ; Add or update Diagnosis and set as default ; Add diagnosos "RTN","SDESCLINICSET",193,0) ; Diagnosis|@D ; Diagnosis|@ ; Diagnosis|D ; Diagnosis "RTN","SDESCLINICSET",194,0) ; "RTN","SDESCLINICSET",195,0) S SDDIAG=$G(P23) "RTN","SDESCLINICSET",196,0) D:SDDIAG'="" VALIDATEDIAG^SDESCLINICSET2(SDDIAG,.DIAGNOSIS,SDIEN) "RTN","SDESCLINICSET",197,0) ; "RTN","SDESCLINICSET",198,0) S SDWORKLOAD=$G(P24) "RTN","SDESCLINICSET",199,0) I '$$CHECKYN(SDWORKLOAD) D ERRLOG(103) "RTN","SDESCLINICSET",200,0) S SDWORKLOAD=$$YNTOBOOL^SDESCLINICSET2(SDWORKLOAD) "RTN","SDESCLINICSET",201,0) ; "RTN","SDESCLINICSET",202,0) S SDALLOWNOSHW=$G(P25) "RTN","SDESCLINICSET",203,0) I SDALLOWNOSHW="@" S SDALLOWNOSHW="" ;Can't remove a required field "RTN","SDESCLINICSET",204,0) I 'EDIT,SDALLOWNOSHW="" D ERRLOG(104) "RTN","SDESCLINICSET",205,0) I SDALLOWNOSHW'="" D "RTN","SDESCLINICSET",206,0) .S SDALLOWNOSHW=SDALLOWNOSHW\1 "RTN","SDESCLINICSET",207,0) .I SDALLOWNOSHW>999 D ERRLOG(105) "RTN","SDESCLINICSET",208,0) ; "RTN","SDESCLINICSET",209,0) S SDMAXFUTBOOK=$G(P26) "RTN","SDESCLINICSET",210,0) I SDMAXFUTBOOK="@" S SDMAXFUTBOOK="" ;Can't remove a required field "RTN","SDESCLINICSET",211,0) I 'EDIT,SDMAXFUTBOOK="" D ERRLOG(106) "RTN","SDESCLINICSET",212,0) I SDMAXFUTBOOK'="" D "RTN","SDESCLINICSET",213,0) .S SDMAXFUTBOOK=SDMAXFUTBOOK\1 "RTN","SDESCLINICSET",214,0) .I SDMAXFUTBOOK>999!(+SDMAXFUTBOOK<11) D ERRLOG(107) "RTN","SDESCLINICSET",215,0) ; "RTN","SDESCLINICSET",216,0) S SDSCHEDHOLIDAY=$G(P27) "RTN","SDESCLINICSET",217,0) I SDSCHEDHOLIDAY'="@",SDSCHEDHOLIDAY'="Y" S SDSCHEDHOLIDAY="" "RTN","SDESCLINICSET",218,0) I EDIT,SDSCHEDHOLIDAY="" S SDSCHEDHOLIDAY="@" "RTN","SDESCLINICSET",219,0) ; "RTN","SDESCLINICSET",220,0) S SDCREDITSTOP=$G(P28) "RTN","SDESCLINICSET",221,0) I SDCREDITSTOP'="",SDCREDITSTOP'="@" D "RTN","SDESCLINICSET",222,0) .I +SDCREDITSTOP,$D(^DIC(40.7,SDCREDITSTOP,0)) Q "RTN","SDESCLINICSET",223,0) .S SDCREDITSTOP=$O(^DIC(40.7,"B",$E(SDCREDITSTOP,1,30),""),-1) "RTN","SDESCLINICSET",224,0) .I 'SDCREDITSTOP D ERRLOG(109) "RTN","SDESCLINICSET",225,0) ; "RTN","SDESCLINICSET",226,0) ;When setting the clinic as Prohibit Access, a list of prevliaged users can be passed in. "RTN","SDESCLINICSET",227,0) ; "RTN","SDESCLINICSET",228,0) ; ex: Y;DOE,JANE;SMITH,JOHN|@ "RTN","SDESCLINICSET",229,0) S SDNOACCESS=$G(P29) "RTN","SDESCLINICSET",230,0) D:SDNOACCESS'="" VALIDATEPPRIVUSR^SDESCLINICSET2(.SDNOACCESS,.PRIVLIAGEDUSER) "RTN","SDESCLINICSET",231,0) ; "RTN","SDESCLINICSET",232,0) S SDLOCATION=$G(P30) "RTN","SDESCLINICSET",233,0) ; "RTN","SDESCLINICSET",234,0) S SDPRINCLINIC=$G(P31) "RTN","SDESCLINICSET",235,0) I SDPRINCLINIC'="@",SDPRINCLINIC'="" D "RTN","SDESCLINICSET",236,0) .I +SDPRINCLINIC,$D(^SC(SDPRINCLINIC,0)) Q "RTN","SDESCLINICSET",237,0) .S SDPRINCLINIC=$O(^SC("B",$E(SDPRINCLINIC,1,30),""),-1) "RTN","SDESCLINICSET",238,0) .I SDPRINCLINIC="" D ERRLOG(110) "RTN","SDESCLINICSET",239,0) ; "RTN","SDESCLINICSET",240,0) S SDOVBDAYMAX=$G(P32) "RTN","SDESCLINICSET",241,0) I SDOVBDAYMAX="@" S SDOVBDAYMAX="" ;Can't remove a required field "RTN","SDESCLINICSET",242,0) I 'EDIT,SDOVBDAYMAX="" D ERRLOG(111) "RTN","SDESCLINICSET",243,0) I SDOVBDAYMAX'="" D "RTN","SDESCLINICSET",244,0) .S SDOVBDAYMAX=SDOVBDAYMAX\1 "RTN","SDESCLINICSET",245,0) .I SDOVBDAYMAX>9999 D ERRLOG(112) "RTN","SDESCLINICSET",246,0) ; "RTN","SDESCLINICSET",247,0) ;Delimited list of free test (MAX 80 chars) per delimited piece. "RTN","SDESCLINICSET",248,0) ;ex: Instruction 1;Instruction 2 "RTN","SDESCLINICSET",249,0) S SDSPECINSTRU=$G(P33) "RTN","SDESCLINICSET",250,0) D:SDSPECINSTRU'="" VALIDATESI^SDESCLINICSET2(SDSPECINSTRU,.SPECIALINSTRUCT) "RTN","SDESCLINICSET",251,0) ; "RTN","SDESCLINICSET",252,0) S SDECHECKIN=$G(P34) "RTN","SDESCLINICSET",253,0) I 'EDIT,SDECHECKIN="" S SDECHECKIN="N" ;default "RTN","SDESCLINICSET",254,0) I '$$CHECKYN(SDECHECKIN) D ERRLOG(113) "RTN","SDESCLINICSET",255,0) S SDECHECKIN=$$YNTOBOOL^SDESCLINICSET2(SDECHECKIN) "RTN","SDESCLINICSET",256,0) ; "RTN","SDESCLINICSET",257,0) S SDPRECHECKIN=$G(P35) "RTN","SDESCLINICSET",258,0) I 'EDIT,SDPRECHECKIN="" S SDPRECHECKIN="N" ;default "RTN","SDESCLINICSET",259,0) I '$$CHECKYN(SDPRECHECKIN) D ERRLOG(114) "RTN","SDESCLINICSET",260,0) S SDPRECHECKIN=$$YNTOBOOL^SDESCLINICSET2(SDPRECHECKIN) "RTN","SDESCLINICSET",261,0) ; "RTN","SDESCLINICSET",262,0) S SDLENGTHOFAPT=$G(P36) "RTN","SDESCLINICSET",263,0) I SDLENGTHOFAPT="@" S SDLENGTHOFAPT="" ;Can't remove a required field "RTN","SDESCLINICSET",264,0) I 'EDIT,SDLENGTHOFAPT="" D ERRLOG(115) "RTN","SDESCLINICSET",265,0) I SDLENGTHOFAPT'="@",SDLENGTHOFAPT'="" D "RTN","SDESCLINICSET",266,0) .S SDLENGTHOFAPT=SDLENGTHOFAPT\1 "RTN","SDESCLINICSET",267,0) .I SDLENGTHOFAPT<10!(SDLENGTHOFAPT>240) D ERRLOG(116) "RTN","SDESCLINICSET",268,0) ; "RTN","SDESCLINICSET",269,0) S SDVARAPTLNG=$G(P37) "RTN","SDESCLINICSET",270,0) I SDVARAPTLNG="Y" S SDVARAPTLNG="V" "RTN","SDESCLINICSET",271,0) E S:SDVARAPTLNG'="@" SDVARAPTLNG="" "RTN","SDESCLINICSET",272,0) I EDIT,SDVARAPTLNG="" S SDVARAPTLNG="@" "RTN","SDESCLINICSET",273,0) ; "RTN","SDESCLINICSET",274,0) S SDINCPERHR=$G(P38) "RTN","SDESCLINICSET",275,0) I SDINCPERHR="@" S SDINCPERHR="" ;Can't remove a require field "RTN","SDESCLINICSET",276,0) I 'EDIT,SDINCPERHR="" D ERRLOG(117) "RTN","SDESCLINICSET",277,0) I SDINCPERHR'="@",SDINCPERHR'="" D "RTN","SDESCLINICSET",278,0) .S ERR='$F("^60^30^20^15^10^","^"_SDINCPERHR_"^") "RTN","SDESCLINICSET",279,0) .I ERR S POP=1 D ERRLOG(118) Q "RTN","SDESCLINICSET",280,0) .S SDINCPERHR=60\SDINCPERHR "RTN","SDESCLINICSET",281,0) ; "RTN","SDESCLINICSET",282,0) S SDSTARTHR=$G(P39) "RTN","SDESCLINICSET",283,0) I 'EDIT,SDSTARTHR="" S SDSTARTHR=8 ;default "RTN","SDESCLINICSET",284,0) I SDSTARTHR'="@" D "RTN","SDESCLINICSET",285,0) .I SDSTARTHR'="" S SDSTARTHR=+SDSTARTHR "RTN","SDESCLINICSET",286,0) .I SDSTARTHR>16 D ERRLOG(119) "RTN","SDESCLINICSET",287,0) ; "RTN","SDESCLINICSET",288,0) S SDEAS=$G(P40) "RTN","SDESCLINICSET",289,0) I $L(SDEAS) S SDEAS=$$EASVALIDATE^SDESUTIL(SDEAS) "RTN","SDESCLINICSET",290,0) I +SDEAS=-1 S POP=1 D ERRLOG(142) "RTN","SDESCLINICSET",291,0) Q "RTN","SDESCLINICSET",292,0) ; "RTN","SDESCLINICSET",293,0) ERRLOG(ERNUM,OPTIONALTXT) ; "RTN","SDESCLINICSET",294,0) S POP=1 "RTN","SDESCLINICSET",295,0) D ERRLOG^SDESJSON(.SDCLINIC,$G(ERNUM),$G(OPTIONALTXT)) "RTN","SDESCLINICSET",296,0) Q "RTN","SDESCLINICSET",297,0) ; "RTN","SDESCLINICSET",298,0) CHECKYN(VAR) Q $$CHECKYN^SDESCLINICSET2(VAR) "RTN","SDESCLINICSET",299,0) ; "RTN","SDESCLINICSET",300,0) BUILDER ;Convert data to JSON "RTN","SDESCLINICSET",301,0) N JSONERR "RTN","SDESCLINICSET",302,0) S JSONERR="" "RTN","SDESCLINICSET",303,0) D ENCODE^SDESJSON(.SDCLINIC,.RETURN,.JSONERR) "RTN","SDESCLINICSET",304,0) Q "RTN","SDESCLINICSET",305,0) ; "RTN","SDESCLINICSET",306,0) CREATE ; "RTN","SDESCLINICSET",307,0) N X "RTN","SDESCLINICSET",308,0) S FDA(44,"+1,",.01)=SDNAME "RTN","SDESCLINICSET",309,0) S FDA(44,"+1,",1)=SDABR "RTN","SDESCLINICSET",310,0) S FDA(44,"+1,",2)="C" ;Type "RTN","SDESCLINICSET",311,0) S FDA(44,"+1,",2.1)=$$FIND1^DIC(40.9,,,"CLINIC") ;Type Extension pointer to 40.9 "RTN","SDESCLINICSET",312,0) S FDA(44,"+1,",3.5)=SDDIVSION "RTN","SDESCLINICSET",313,0) S FDA(44,"+1,",8)=SDSTOPCODE "RTN","SDESCLINICSET",314,0) S FDA(44,"+1,",9)=SDSERVICE "RTN","SDESCLINICSET",315,0) S FDA(44,"+1,",10)=SDLOCATION "RTN","SDESCLINICSET",316,0) S FDA(44,"+1,",20)=SDECHECKIN "RTN","SDESCLINICSET",317,0) S FDA(44,"+1,",21)=SDPRECHECKIN "RTN","SDESCLINICSET",318,0) S FDA(44,"+1,",24)=SDINOUTTIME "RTN","SDESCLINICSET",319,0) S FDA(44,"+1,",30)=SDWORKLOAD "RTN","SDESCLINICSET",320,0) S FDA(44,"+1,",60)=SDPATNAME "RTN","SDESCLINICSET",321,0) S FDA(44,"+1,",61)=SDPATSCHED "RTN","SDESCLINICSET",322,0) S FDA(44,"+1,",62)=SDDISPAPPT "RTN","SDESCLINICSET",323,0) S FDA(44,"+1,",99)=SDPHONE "RTN","SDESCLINICSET",324,0) S FDA(44,"+1,",1912)=SDLENGTHOFAPT "RTN","SDESCLINICSET",325,0) S FDA(44,"+1,",1913)=SDVARAPTLNG "RTN","SDESCLINICSET",326,0) S FDA(44,"+1,",1914)=SDSTARTHR "RTN","SDESCLINICSET",327,0) S FDA(44,"+1,",1916)=SDPRINCLINIC "RTN","SDESCLINICSET",328,0) S FDA(44,"+1,",1917)=SDINCPERHR "RTN","SDESCLINICSET",329,0) S FDA(44,"+1,",1918)=SDOVBDAYMAX "RTN","SDESCLINICSET",330,0) S FDA(44,"+1,",1918.5)=SDSCHEDHOLIDAY "RTN","SDESCLINICSET",331,0) S FDA(44,"+1,",2000)=SDREQXRAY "RTN","SDESCLINICSET",332,0) S FDA(44,"+1,",2000.5)=SDREQPROFILE "RTN","SDESCLINICSET",333,0) S FDA(44,"+1,",2001)=SDALLOWNOSHW "RTN","SDESCLINICSET",334,0) S FDA(44,"+1,",2002)=SDMAXFUTBOOK "RTN","SDESCLINICSET",335,0) S FDA(44,"+1,",2500)=SDNOACCESS "RTN","SDESCLINICSET",336,0) S FDA(44,"+1,",2502)=SDNONCOUNT "RTN","SDESCLINICSET",337,0) S FDA(44,"+1,",2503)=SDCREDITSTOP "RTN","SDESCLINICSET",338,0) S FDA(44,"+1,",2504)=SDMEETATFAC "RTN","SDESCLINICSET",339,0) S FDA(44,"+1,",2507)=SDAPPTTYP "RTN","SDESCLINICSET",340,0) S FDA(44,"+1,",2508)=SDNOSHOWLET "RTN","SDESCLINICSET",341,0) S FDA(44,"+1,",2509)=SDPREAPTLET "RTN","SDESCLINICSET",342,0) S FDA(44,"+1,",2510)=SDCANLET "RTN","SDESCLINICSET",343,0) S FDA(44,"+1,",2511)=SDAPTCANLET "RTN","SDESCLINICSET",344,0) S FDA(44,"+1,",2801)=SDPRACTIONER "RTN","SDESCLINICSET",345,0) S FDA(44,"+1,",2802)=SDINPATMED "RTN","SDESCLINICSET",346,0) Q "RTN","SDESCLINICSET",347,0) ; "RTN","SDESCLINICSET",348,0) UPDATE ; "RTN","SDESCLINICSET",349,0) N X "RTN","SDESCLINICSET",350,0) S X=SDIEN "RTN","SDESCLINICSET",351,0) S:SDNAME'="" FDA(44,X_",",.01)=SDNAME "RTN","SDESCLINICSET",352,0) S:SDABR'="" FDA(44,X_",",1)=SDABR "RTN","SDESCLINICSET",353,0) S:SDDIVSION'="" FDA(44,X_",",3.5)=SDDIVSION "RTN","SDESCLINICSET",354,0) S:SDSTOPCODE'="" FDA(44,X_",",8)=SDSTOPCODE "RTN","SDESCLINICSET",355,0) S:SDSERVICE'="" FDA(44,X_",",9)=SDSERVICE "RTN","SDESCLINICSET",356,0) S:SDLOCATION'="" FDA(44,X_",",10)=SDLOCATION "RTN","SDESCLINICSET",357,0) S:SDECHECKIN'="" FDA(44,X_",",20)=SDECHECKIN "RTN","SDESCLINICSET",358,0) S:SDPRECHECKIN'="" FDA(44,X_",",21)=SDPRECHECKIN "RTN","SDESCLINICSET",359,0) S:SDINOUTTIME'="" FDA(44,X_",",24)=SDINOUTTIME "RTN","SDESCLINICSET",360,0) S:SDWORKLOAD'="" FDA(44,X_",",30)=SDWORKLOAD "RTN","SDESCLINICSET",361,0) S:SDPATNAME'="" FDA(44,X_",",60)=SDPATNAME "RTN","SDESCLINICSET",362,0) S:SDPATSCHED'="" FDA(44,X_",",61)=SDPATSCHED "RTN","SDESCLINICSET",363,0) S:SDDISPAPPT'="" FDA(44,X_",",62)=SDDISPAPPT "RTN","SDESCLINICSET",364,0) S:SDPHONE'="" FDA(44,X_",",99)=SDPHONE "RTN","SDESCLINICSET",365,0) S:SDLENGTHOFAPT'="" FDA(44,X_",",1912)=SDLENGTHOFAPT "RTN","SDESCLINICSET",366,0) S:SDVARAPTLNG'="" FDA(44,X_",",1913)=SDVARAPTLNG "RTN","SDESCLINICSET",367,0) S:SDSTARTHR'="" FDA(44,X_",",1914)=SDSTARTHR "RTN","SDESCLINICSET",368,0) S:SDPRINCLINIC'="" FDA(44,X_",",1916)=SDPRINCLINIC "RTN","SDESCLINICSET",369,0) S:SDINCPERHR'="" FDA(44,X_",",1917)=SDINCPERHR "RTN","SDESCLINICSET",370,0) S:SDOVBDAYMAX'="" FDA(44,X_",",1918)=SDOVBDAYMAX "RTN","SDESCLINICSET",371,0) S:SDSCHEDHOLIDAY'="" FDA(44,X_",",1918.5)=SDSCHEDHOLIDAY "RTN","SDESCLINICSET",372,0) S:SDREQXRAY'="" FDA(44,X_",",2000)=SDREQXRAY "RTN","SDESCLINICSET",373,0) S:SDREQPROFILE'="" FDA(44,X_",",2000.5)=SDREQPROFILE "RTN","SDESCLINICSET",374,0) S:SDALLOWNOSHW'="" FDA(44,X_",",2001)=SDALLOWNOSHW "RTN","SDESCLINICSET",375,0) S:SDMAXFUTBOOK'="" FDA(44,X_",",2002)=SDMAXFUTBOOK "RTN","SDESCLINICSET",376,0) S:SDNOACCESS'="" FDA(44,X_",",2500)=SDNOACCESS "RTN","SDESCLINICSET",377,0) S:SDNONCOUNT'="" FDA(44,X_",",2502)=SDNONCOUNT "RTN","SDESCLINICSET",378,0) S:SDCREDITSTOP'="" FDA(44,X_",",2503)=SDCREDITSTOP "RTN","SDESCLINICSET",379,0) S:SDMEETATFAC'="" FDA(44,X_",",2504)=SDMEETATFAC "RTN","SDESCLINICSET",380,0) S:SDAPPTTYP'="" FDA(44,X_",",2507)=SDAPPTTYP "RTN","SDESCLINICSET",381,0) S:SDNOSHOWLET'="" FDA(44,X_",",2508)=SDNOSHOWLET "RTN","SDESCLINICSET",382,0) S:SDPREAPTLET'="" FDA(44,X_",",2509)=SDPREAPTLET "RTN","SDESCLINICSET",383,0) S:SDCANLET'="" FDA(44,X_",",2510)=SDCANLET "RTN","SDESCLINICSET",384,0) S:SDAPTCANLET'="" FDA(44,X_",",2511)=SDAPTCANLET "RTN","SDESCLINICSET",385,0) S:SDPRACTIONER'="" FDA(44,X_",",2801)=SDPRACTIONER "RTN","SDESCLINICSET",386,0) S:SDINPATMED'="" FDA(44,X_",",2802)=SDINPATMED "RTN","SDESCLINICSET",387,0) Q "RTN","SDESCLNSETAVAIL") 0^14^B100206409^B97503931 "RTN","SDESCLNSETAVAIL",1,0) SDESCLNSETAVAIL ;ALB/TAW/MGD - SET CLINIC AVAILABILITY ;Jan 13, 2022@11:36 "RTN","SDESCLNSETAVAIL",2,0) ;;5.3;Scheduling;**800,803,805**;Aug 13, 1993;Build 9 "RTN","SDESCLNSETAVAIL",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESCLNSETAVAIL",4,0) ; "RTN","SDESCLNSETAVAIL",5,0) SETCLINAVAIL(RETURN,SDCLINIC,DATES,TIMES,SLOTS,SDEAS) ;INICSET2(.POP,SDIEN,.FDA,.SDCLINIC,.PROVIDER,.DIAGNOSIS,.SPECIALINSTRUCT,.PRIVLIAGEDUSER) "RTN","SDESCLNSETAVAIL",6,0) ; Input: "RTN","SDESCLNSETAVAIL",7,0) ; SDCLIN - [REQ] Name or IEN from file 44 "RTN","SDESCLNSETAVAIL",8,0) ; DATES - [REQ] String of dates in external or FM format separated by a ; "RTN","SDESCLNSETAVAIL",9,0) ; TIMES - [REQ] String of time frames in military format separated by a ; "RTN","SDESCLNSETAVAIL",10,0) ; ex: 0700-1030;1030-1400 "RTN","SDESCLNSETAVAIL",11,0) ; SLOTS - [REQ] String of integers separated by a ; "RTN","SDESCLNSETAVAIL",12,0) ; The number of TIMES and SLOTS must match "RTN","SDESCLNSETAVAIL",13,0) ; SDEAS - [Optional] - Enterprise Appointment Scheduling (EAS) Tracking Number "RTN","SDESCLNSETAVAIL",14,0) ; "RTN","SDESCLNSETAVAIL",15,0) N POP,SDAVAIL,I,SDDOWNUM,DOWNUM,EOF,SDTOTALSLOTS,SDDISPPERHR,SDCLINSTARTHR,SDSOH,SLT,IEN,SDCLINDATA,SDSLOTS,SDTIME,SDDATE,TMPINDX "RTN","SDESCLNSETAVAIL",16,0) N SDRETURN,APPTCNT "RTN","SDESCLNSETAVAIL",17,0) S (POP,SDTOTALSLOTS,APPTCNT)=0 "RTN","SDESCLNSETAVAIL",18,0) D VALIDATE "RTN","SDESCLNSETAVAIL",19,0) I 'POP D CREATE(SDCLINIC,SDCLINSTARTHR,SLT,SDDOWNUM) "RTN","SDESCLNSETAVAIL",20,0) I 'POP S SDRETURN("ClinicAvailability","Create")="Pattern Filed" "RTN","SDESCLNSETAVAIL",21,0) D BUILDER "RTN","SDESCLNSETAVAIL",22,0) Q "RTN","SDESCLNSETAVAIL",23,0) ; "RTN","SDESCLNSETAVAIL",24,0) VALIDATE ; "RTN","SDESCLNSETAVAIL",25,0) S SDCLINIC=$G(SDCLINIC) "RTN","SDESCLNSETAVAIL",26,0) I SDCLINIC'="",SDCLINIC'?1.N S SDCLINIC=$O(^SC("B",SDCLINIC,"")) "RTN","SDESCLNSETAVAIL",27,0) I SDCLINIC,'$D(^SC(SDCLINIC,0)) D ERRLOG(19) Q "RTN","SDESCLNSETAVAIL",28,0) I SDCLINIC="" D ERRLOG(18) Q "RTN","SDESCLNSETAVAIL",29,0) ; "RTN","SDESCLNSETAVAIL",30,0) S IEN=SDCLINIC_"," "RTN","SDESCLNSETAVAIL",31,0) D GETS^DIQ(44,IEN,"1912;1914;1917;1918.5","IE","SDCLINDATA","SDMSG") "RTN","SDESCLNSETAVAIL",32,0) S SLT=$G(SDCLINDATA(44,IEN,1912,"I")) "RTN","SDESCLNSETAVAIL",33,0) S SDDISPPERHR=$G(SDCLINDATA(44,IEN,1917,"I")) "RTN","SDESCLNSETAVAIL",34,0) S SDCLINSTARTHR=$G(SDCLINDATA(44,IEN,1914,"I"),"") "RTN","SDESCLNSETAVAIL",35,0) I SDCLINSTARTHR="" S SDCLINSTARTHR=8 "RTN","SDESCLNSETAVAIL",36,0) ; "RTN","SDESCLNSETAVAIL",37,0) N STARTTIME,ENDTIME,TMPTIMES "RTN","SDESCLNSETAVAIL",38,0) S TIMES=$G(TIMES) "RTN","SDESCLNSETAVAIL",39,0) S SLOTS=$G(SLOTS) "RTN","SDESCLNSETAVAIL",40,0) I TIMES="" D ERRLOG(52,"Times are missing") "RTN","SDESCLNSETAVAIL",41,0) I SLOTS="" D ERRLOG(52,"Slots are missing") "RTN","SDESCLNSETAVAIL",42,0) I 'POP,$L(TIMES,";")'=$L(SLOTS,";") D ERRLOG(52,"Times and slots mismatch") "RTN","SDESCLNSETAVAIL",43,0) ; "RTN","SDESCLNSETAVAIL",44,0) I $P(DATES,"9999999",2)'="" D ERRLOG(52,"Indefinite date indicator must be last") Q "RTN","SDESCLNSETAVAIL",45,0) ; "RTN","SDESCLNSETAVAIL",46,0) F I=1:1:$L(TIMES,";") Q:POP D "RTN","SDESCLNSETAVAIL",47,0) .S SDTIME=$P(TIMES,";",I) "RTN","SDESCLNSETAVAIL",48,0) .I SDTIME'?4N1"-"4N D ERRLOG(52,"Invalid time format") Q "RTN","SDESCLNSETAVAIL",49,0) .I $P(SDTIME,"-",2)>2400 D ERRLOG(52,"Invalid time format") Q "RTN","SDESCLNSETAVAIL",50,0) .S STARTTIME=$P(SDTIME,"-",1) "RTN","SDESCLNSETAVAIL",51,0) .S ENDTIME=$P(SDTIME,"-",2) "RTN","SDESCLNSETAVAIL",52,0) .I +STARTTIME'<+ENDTIME D ERRLOG(52,"Invalid time format") Q "RTN","SDESCLNSETAVAIL",53,0) .;Do not allow overlapping time frames "RTN","SDESCLNSETAVAIL",54,0) .I $D(TIMES(STARTTIME)) D ERRLOG(52,"Existing entry with same start time") Q "RTN","SDESCLNSETAVAIL",55,0) .; STARTTIME can not fall within the previous segment "RTN","SDESCLNSETAVAIL",56,0) .S TMPINDX=$O(TIMES(STARTTIME),-1) "RTN","SDESCLNSETAVAIL",57,0) .I TMPINDX D Q:POP "RTN","SDESCLNSETAVAIL",58,0) ..S TMPTIMES=TIMES(TMPINDX) "RTN","SDESCLNSETAVAIL",59,0) ..I +$P(TMPTIMES,"-",2)>+STARTTIME D ERRLOG(52,"Start time overlaps existing segment") Q "RTN","SDESCLNSETAVAIL",60,0) .; ENDTIME can not fall within a prior segment "RTN","SDESCLNSETAVAIL",61,0) .S TMPINDX=$O(TIMES(ENDTIME),-1) "RTN","SDESCLNSETAVAIL",62,0) .I TMPINDX D "RTN","SDESCLNSETAVAIL",63,0) ..S TMPTIMES=TIMES(TMPINDX) "RTN","SDESCLNSETAVAIL",64,0) ..;Current start time is = or > than previous end time "RTN","SDESCLNSETAVAIL",65,0) ..I STARTTIME'<+$P(TMPTIMES,"-",2) Q "RTN","SDESCLNSETAVAIL",66,0) ..; ENDTIME falls within and existing segment "RTN","SDESCLNSETAVAIL",67,0) ..I +$P(TMPTIMES,"-",1)<+ENDTIME D ERRLOG(52,"End time overlaps existing segment") Q "RTN","SDESCLNSETAVAIL",68,0) ..; An existing segment falls within STARTTIME and ENDTIME "RTN","SDESCLNSETAVAIL",69,0) ..I +$P(TMPTIMES,"-",2)<+ENDTIME D ERRLOG(52,"End time overlaps existing segment") Q "RTN","SDESCLNSETAVAIL",70,0) .; Is this time segment consistent with slot duration "RTN","SDESCLNSETAVAIL",71,0) .I '$$CHECKDURATION(STARTTIME,ENDTIME,SLT) D ERRLOG(52,"Time span not consistent with appointment length") "RTN","SDESCLNSETAVAIL",72,0) .; "RTN","SDESCLNSETAVAIL",73,0) .S SDSLOTS=+$P(SLOTS,";",I) "RTN","SDESCLNSETAVAIL",74,0) .I SDSLOTS<1!(SDSLOTS>20) D ERRLOG(125) Q "RTN","SDESCLNSETAVAIL",75,0) .S TIMES(STARTTIME)=SDTIME_"^"_SDSLOTS "RTN","SDESCLNSETAVAIL",76,0) .S SDTOTALSLOTS=SDTOTALSLOTS+SDSLOTS "RTN","SDESCLNSETAVAIL",77,0) ; "RTN","SDESCLNSETAVAIL",78,0) I 'POP,$D(TIMES)'>1 D ERRLOG(52,"No valid time segments passed in") "RTN","SDESCLNSETAVAIL",79,0) ;Can't start prior to clinic opening "RTN","SDESCLNSETAVAIL",80,0) I 'POP,+$O(TIMES(""))<(SDCLINSTARTHR*100) D ERRLOG(52,"Appointments can not start prior to clinic opening") "RTN","SDESCLNSETAVAIL",81,0) ; "RTN","SDESCLNSETAVAIL",82,0) S DATES=$G(DATES) "RTN","SDESCLNSETAVAIL",83,0) S SDDATE=$P(DATES,";",1) "RTN","SDESCLNSETAVAIL",84,0) I SDDATE="" D ERRLOG(9) "RTN","SDESCLNSETAVAIL",85,0) I SDDATE'="" D "RTN","SDESCLNSETAVAIL",86,0) .I SDDATE'?7N S SDDATE=$$NETTOFM^SDECDATE(SDDATE,"N","N") "RTN","SDESCLNSETAVAIL",87,0) .I SDDATE'?7N D ERRLOG(11) Q "RTN","SDESCLNSETAVAIL",88,0) .I SDDATE
1 D ERRLOG(52,"No valid dates passed in") Q "RTN","SDESCLNSETAVAIL",93,0) ; "RTN","SDESCLNSETAVAIL",94,0) S EOF=0 "RTN","SDESCLNSETAVAIL",95,0) F I=2:1:$L(DATES,";") D Q:EOF "RTN","SDESCLNSETAVAIL",96,0) .S SDDATE=$P(DATES,";",I) "RTN","SDESCLNSETAVAIL",97,0) .Q:'SDDATE "RTN","SDESCLNSETAVAIL",98,0) .I SDDATE=9999999 S DATES(SDDATE)="",EOF=1 Q ;Indefinitely "RTN","SDESCLNSETAVAIL",99,0) .I SDDATE'?7N S SDDATE=$$NETTOFM^SDECDATE(SDDATE,"N","N") "RTN","SDESCLNSETAVAIL",100,0) .I SDDATE'?7N D ERRLOG(11) Q "RTN","SDESCLNSETAVAIL",101,0) .I SDDATE
59 S M1=M1-60,H1=H1+1 G G4A "RTN","SDESCLNSETAVAIL",178,0) S:M1?1N M1="0"_M1 S:H1?1N H1="0"_H1 "RTN","SDESCLNSETAVAIL",179,0) I (H1_M1)>(H2_M2) Q "RTN","SDESCLNSETAVAIL",180,0) G G4 "RTN","SDESCLNSETAVAIL",181,0) Q "RTN","SDESCLNSETAVAIL",182,0) ; "RTN","SDESCLNSETAVAIL",183,0) G5 ; "RTN","SDESCLNSETAVAIL",184,0) S SDEL=0 "RTN","SDESCLNSETAVAIL",185,0) G:'CNT DEL1:'$D(SDREACT),DEL1:'$D(SDTOP)&$D(SDREACT)&'CNT,C^SDB "RTN","SDESCLNSETAVAIL",186,0) S ^SC(DA,"T",D0,0)=D0,^SC(DA,"T",D0,2,0)="^44.004A^"_CNT_"^"_CNT "RTN","SDESCLNSETAVAIL",187,0) S X=^SC(DA,"T",0),^SC(DA,"T",0)="^44.002D^"_D0_"^"_($P(X,"^",4)+1) "RTN","SDESCLNSETAVAIL",188,0) S DH=SLT*SI\60 "RTN","SDESCLNSETAVAIL",189,0) F ZDX=CNT:0 S ZDX=$O(^SC(DA,"T",D0,2,ZDX)) Q:ZDX="" K ^SC(DA,"T",D0,2,ZDX) "RTN","SDESCLNSETAVAIL",190,0) F X=0:0 S X=$O(^SC(DA,"T",D0,2,X)) Q:X="" D "RTN","SDESCLNSETAVAIL",191,0) .S Y=^SC(DA,"T",D0,2,X,0) "RTN","SDESCLNSETAVAIL",192,0) .F D=1:1:DH S Y(Y#100*SI\60+(Y\100*SI)-(STARTDAY*SI)+D)=$S($P(Y,U,2):$E("123456789jklmnopqrstuvwxyz",$P(Y,U,2)),1:0) "RTN","SDESCLNSETAVAIL",193,0) S (DH,DO,X)="" "RTN","SDESCLNSETAVAIL",194,0) I $D(Y)=1 S SDEL=1 G D "RTN","SDESCLNSETAVAIL",195,0) I $D(HSI) I HSI=1!(HSI=2) D CKSI1 "RTN","SDESCLNSETAVAIL",196,0) F Y=1:1 S DH=$D(Y(Y)),X=X_$S('DH&DO:"]",'DO&DH:"[",Y#SI=1:"|",1:" ")_$S(DH:Y(Y),1:" "),DO=DH I 'DH,$O(Y(Y))="" Q "RTN","SDESCLNSETAVAIL",197,0) ; CHECK WITH DARRYL & ANGELA RELATED TO NEXT LINE "RTN","SDESCLNSETAVAIL",198,0) K Y "RTN","SDESCLNSETAVAIL",199,0) I SI+SI+$L(X)>80 K ^SC(DA,"T",D0) S CNT=0,LT=$G(STIME),SDEL=0 D ERRLOG(52,"Availability string exceeds 80 characters") Q "RTN","SDESCLNSETAVAIL",200,0) G D "RTN","SDESCLNSETAVAIL",201,0) CKSI1 F SDJJ=$O(Y(-1)):$S(HSI=1:4,1:2) Q:SDJJ>41 S:$D(Y(SDJJ)) HY(SDJJ)="" I '$D(Y(SDJJ)) Q:$O(Y(SDJJ))="" S SDJJ=$O(Y(SDJJ-1))-$S(HSI=1:4,1:2) "RTN","SDESCLNSETAVAIL",202,0) F HHY=0:0 S HHY=$O(Y(HHY)) Q:HHY="" I '$D(HY(HHY)) K Y(HHY) "RTN","SDESCLNSETAVAIL",203,0) Q "RTN","SDESCLNSETAVAIL",204,0) ; "RTN","SDESCLNSETAVAIL",205,0) DEL1 S (DH,DO,X)="",SDEL=1 "RTN","SDESCLNSETAVAIL",206,0) D I $D(SDIN),SDIN>D0 S SDRE1=$S(SDRE:SDRE,1:9999999) "RTN","SDESCLNSETAVAIL",207,0) S DH=X,OK=0,CTR=0 "RTN","SDESCLNSETAVAIL",208,0) S SDSOH=$S('$D(^SC(DA,"SL")):0,$P(^SC(DA,"SL"),"^",8)']"":0,1:1) "RTN","SDESCLNSETAVAIL",209,0) F X=D0:0 S X=+$O(^SC(DA,"T",X)) Q:X'>0 D DOW^SDM0 I Y=DOW S Y=X,DO=Y G R "RTN","SDESCLNSETAVAIL",210,0) I X'>0,$D(SDIN),SDIN>D0 D "RTN","SDESCLNSETAVAIL",211,0) .S SDRE1=$S(SDRE=0:9999999,1:SDRE) "RTN","SDESCLNSETAVAIL",212,0) .S X=SDIN "RTN","SDESCLNSETAVAIL",213,0) .F I=0:1:6 D DOW^SDM0 S:Y=DOW OK=1 Q:OK S X1=X,X2=1 D C^%DTC Q:X>SDRE1 "RTN","SDESCLNSETAVAIL",214,0) I OK S Y=X,DO=D0 G R "RTN","SDESCLNSETAVAIL",215,0) S DO=9999999 "RTN","SDESCLNSETAVAIL",216,0) R K OK "RTN","SDESCLNSETAVAIL",217,0) ; CHECK ON AVAILABILITY DATE W D&A THEN REVIEW G1^SDB "RTN","SDESCLNSETAVAIL",218,0) EN1 ; "RTN","SDESCLNSETAVAIL",219,0) S D=D0 "RTN","SDESCLNSETAVAIL",220,0) I 'INDEFINITELY G 1 "RTN","SDESCLNSETAVAIL",221,0) S Y="" "RTN","SDESCLNSETAVAIL",222,0) I '$D(^SC(DA,"T"_DOW,D0,1)) D "RTN","SDESCLNSETAVAIL",223,0) .S Y=+$O(^SC(DA,"T"_DOW,D0)) "RTN","SDESCLNSETAVAIL",224,0) .I Y>D0 S X=^SC(DA,"T"_DOW,Y,1),POP=0 D CHK1 K:'POP ^SC(DA,"T"_DOW,Y) S ^SC(DA,"T"_DOW,D0,1)=X,^SC(DA,"T"_DOW,D0,0)=D0 D TX "RTN","SDESCLNSETAVAIL",225,0) I Y<0,'$D(^SC(DA,"T"_DOW,D0)) S ^SC(DA,"T"_DOW,D0,1)="",^SC(DA,"T"_DOW,D0,0)=D0 D TX "RTN","SDESCLNSETAVAIL",226,0) S ^SC(DA,"T"_DOW,DO,1)=DH,^SC(DA,"T"_DOW,DO,0)=DO D TX "RTN","SDESCLNSETAVAIL",227,0) S X=D0 D B1^SDB1 S MAX=30,SC=DA,SDSTRTDT=SD "RTN","SDESCLNSETAVAIL",228,0) Q:'CNT "RTN","SDESCLNSETAVAIL",229,0) D OVR^SDAUT1 Q:'SDZQ "RTN","SDESCLNSETAVAIL",230,0) Q "RTN","SDESCLNSETAVAIL",231,0) ; "RTN","SDESCLNSETAVAIL",232,0) 1 I SDEL S POP=0 D APPCK I POP D DELERR G OVR "RTN","SDESCLNSETAVAIL",233,0) 11 G:$D(^HOLIDAY(D,0))&('SDSOH) OVR "RTN","SDESCLNSETAVAIL",234,0) S POP=0 "RTN","SDESCLNSETAVAIL",235,0) D:$D(SDIN) CHK2 "RTN","SDESCLNSETAVAIL",236,0) G:POP OVR "RTN","SDESCLNSETAVAIL",237,0) S (POP,SDREB)=0 "RTN","SDESCLNSETAVAIL",238,0) S %=1 "RTN","SDESCLNSETAVAIL",239,0) D APPCK "RTN","SDESCLNSETAVAIL",240,0) I POP D APPERR G:(%-1) OVR S SDREB=1 "RTN","SDESCLNSETAVAIL",241,0) S X=D,DO=X+1,^SC(DA,"ST",X,9)=D,SDREACT=1 "RTN","SDESCLNSETAVAIL",242,0) S:'$D(^SC(DA,"ST",0)) ^SC(DA,"ST",0)="^44.005DA^^" D B1^SDB1 ;SD*567 change set of 9 node to selected date "RTN","SDESCLNSETAVAIL",243,0) OVR ; "RTN","SDESCLNSETAVAIL",244,0) I D#100<22 S D=D+7 S POP=0 D:$D(SDIN) CHK2 Q "RTN","SDESCLNSETAVAIL",245,0) S X1=D,X2=7 D C^%DTC S D=X S POP=0 D:$D(SDIN) CHK2 Q "RTN","SDESCLNSETAVAIL",246,0) ; "RTN","SDESCLNSETAVAIL",247,0) APPCK ;Are there appointments for this time? "RTN","SDESCLNSETAVAIL",248,0) F A=D:0 S A=+$O(^SC(DA,"S",A)) Q:A'>0!(A\1-D) F SDA1=0:0 S SDA1=+$O(^SC(DA,"S",A,1,SDA1)) Q:SDA1'>0 I $P(^SC(DA,"S",A,1,SDA1,0),"^",9)'["C" S POP=1 Q "RTN","SDESCLNSETAVAIL",249,0) Q "RTN","SDESCLNSETAVAIL",250,0) APPERR ; "RTN","SDESCLNSETAVAIL",251,0) N % "RTN","SDESCLNSETAVAIL",252,0) W *7,!,"THERE ARE ALREADY APPOINTMENTS PENDING ON THIS DATE",!,"ARE YOU SURE YOU WANT TO CHANGE THE EXISTING AVAILABILITY" S %=2 D YN^DICN "RTN","SDESCLNSETAVAIL",253,0) I '% W !,"IF YOU SAY YES, THE EXISTING APPOINTMENTS MAY BECOME OVERBOOKS WHEN THE NEW AVAILABILITY IS APPLIED",!,"ANSWER YES OR NO" G APPERR "RTN","SDESCLNSETAVAIL",254,0) Q "RTN","SDESCLNSETAVAIL",255,0) DELERR ; "RTN","SDESCLNSETAVAIL",256,0) S Y=D "RTN","SDESCLNSETAVAIL",257,0) W !,"... " D DT^DIQ W " HAS PENDING APPTS - DELETE AVAILABILITY NOT ALLOWED" Q "RTN","SDESCLNSETAVAIL",258,0) CHK1 Q:'$D(SDIN) "RTN","SDESCLNSETAVAIL",259,0) I Y=SDIN S POP=1 "RTN","SDESCLNSETAVAIL",260,0) Q "RTN","SDESCLNSETAVAIL",261,0) ; "RTN","SDESCLNSETAVAIL",262,0) CHK2 ; "RTN","SDESCLNSETAVAIL",263,0) I SDIND K SDIN Q "RTN","SDESCLNSETAVAIL",264,0) I SDIND S POP=2,D=SDRE,X=D F I=0:1:6 D DOW^SDM0 Q:Y=DOW S X1=D,X2=1 D C^%DTC S D=X "RTN","SDESCLNSETAVAIL",266,0) S Y=SDIN D DTS^SDUTL S Y1=Y,Y=SDRE1 D DTS^SDUTL W:POP=2&('CTR) !!," Clinic is inactive from ",Y1," to ",Y,! S:POP=2 CTR=1 "RTN","SDESCLNSETAVAIL",267,0) Q "RTN","SDESCLNSETAVAIL",268,0) OB ; "RTN","SDESCLNSETAVAIL",269,0) S SDSLOT=$E(STR,$F(STR,ST)-2) "RTN","SDESCLNSETAVAIL",270,0) I SDSLOT?1P,SDSLOT'?1" " S ^SC(DA,"S",DR,1,Y,"OB")="O" K SDSLOT Q "RTN","SDESCLNSETAVAIL",271,0) K ^SC(DA,"S",DR,1,Y,"OB"),SDSLOT "RTN","SDESCLNSETAVAIL",272,0) Q "RTN","SDESCLNSETAVAIL",273,0) TX ; "RTN","SDESCLNSETAVAIL",274,0) S:'$D(^SC(DA,"T"_DOW,0)) ^SC(DA,"T"_DOW,0)="^44.0"_$S(DOW<4:DOW+6,DOW<6:"0"_DOW+4,1:"001")_"A^^" Q "RTN","SDESCLNSETAVAIL",275,0) ; "RTN","SDESCLNSETAVAIL",276,0) ERRLOG(ERNUM,OPTIONALTXT) ; "RTN","SDESCLNSETAVAIL",277,0) S POP=1 "RTN","SDESCLNSETAVAIL",278,0) D ERRLOG^SDESJSON(.SDRETURN,$G(ERNUM),$G(OPTIONALTXT)) "RTN","SDESCLNSETAVAIL",279,0) Q "RTN","SDESCLNSETAVAIL",280,0) BUILDER ;Convert data to JSON "RTN","SDESCLNSETAVAIL",281,0) N JSONERR "RTN","SDESCLNSETAVAIL",282,0) S JSONERR="" "RTN","SDESCLNSETAVAIL",283,0) D ENCODE^SDESJSON(.SDRETURN,.RETURN,.JSONERR) "RTN","SDESCLNSETAVAIL",284,0) Q "RTN","SDESDISPRECALL") 0^15^B11149763^B10506339 "RTN","SDESDISPRECALL",1,0) SDESDISPRECALL ;ALB/KML,MGD - VISTA SCHEDULING RPCS ;JAN 12,2022 "RTN","SDESDISPRECALL",2,0) ;;5.3;Scheduling;**803,805**;Aug 13, 1993;Build 9 "RTN","SDESDISPRECALL",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESDISPRECALL",4,0) Q "RTN","SDESDISPRECALL",5,0) ; "RTN","SDESDISPRECALL",6,0) DISPRECALL(SDECY,RECALLIEN,REASON,COMMENT,EAS) ; add a disposition and DELETE an entry from the RECALL REMINDERS file 403.5 - SDES RECALL rpc "RTN","SDESDISPRECALL",7,0) ;INPUT: "RTN","SDESDISPRECALL",8,0) ; RECALLIEN - (required) IEN pointer to RECALL REMINDERS "RTN","SDESDISPRECALL",9,0) ; REASON - (optional) Recall Disposition used to populate the "RTN","SDESDISPRECALL",10,0) ; DELETE REASON field in the RECALL REMINDERS "RTN","SDESDISPRECALL",11,0) ; REMOVED file 403.56 when an entry is removed "RTN","SDESDISPRECALL",12,0) ; from RECALL REMINDERS file. Valid Values are: "RTN","SDESDISPRECALL",13,0) ; FAILURE TO RESPOND "RTN","SDESDISPRECALL",14,0) ; MOVED "RTN","SDESDISPRECALL",15,0) ; DECEASED "RTN","SDESDISPRECALL",16,0) ; DOESN'T WANT VA SERVICES "RTN","SDESDISPRECALL",17,0) ; RECEIVED CARE AT ANOTHER VA "RTN","SDESDISPRECALL",18,0) ; OTHER "RTN","SDESDISPRECALL",19,0) ; APPT SCHEDULED "RTN","SDESDISPRECALL",20,0) ; COMMENT - (optional) Text to replace the text in the COMMENT "RTN","SDESDISPRECALL",21,0) ; Field 2.5 in RECALL REMINDERS prior to the "RTN","SDESDISPRECALL",22,0) ; delete which moves the data including this "RTN","SDESDISPRECALL",23,0) ; comment to RECALL REMINDERS REMOVED "RTN","SDESDISPRECALL",24,0) ; EAS - (optional) EAS TRACKING NUMBER "RTN","SDESDISPRECALL",25,0) ;RETURN: SDECY "RTN","SDESDISPRECALL",26,0) N SDRECALL,SDRRFTR,PROVIDER,SDFDA,ERROR,NOKEY,SDMSG "RTN","SDESDISPRECALL",27,0) D VALIDATE "RTN","SDESDISPRECALL",28,0) I ERROR D BLDJSON Q "RTN","SDESDISPRECALL",29,0) D EDIT "RTN","SDESDISPRECALL",30,0) S NOKEY=$$KEY(RECALLIEN,PROVIDER) "RTN","SDESDISPRECALL",31,0) I NOKEY D ERRLOG^SDESJSON(.SDRECALL,NOKEY),BLDJSON Q ; cannot move/delete if security key isn't present "RTN","SDESDISPRECALL",32,0) D DELETE "RTN","SDESDISPRECALL",33,0) Q "RTN","SDESDISPRECALL",34,0) ; "RTN","SDESDISPRECALL",35,0) VALIDATE ; "RTN","SDESDISPRECALL",36,0) S ERROR=0 "RTN","SDESDISPRECALL",37,0) S RECALLIEN=$G(RECALLIEN) "RTN","SDESDISPRECALL",38,0) ;check IEN of RECALL REMINDERS (required) "RTN","SDESDISPRECALL",39,0) I RECALLIEN="" D ERRLOG^SDESJSON(.SDRECALL,16) S ERROR=1 "RTN","SDESDISPRECALL",40,0) I '$D(^SD(403.5,+RECALLIEN)) D ERRLOG^SDESJSON(.SDRECALL,17) S ERROR=1 "RTN","SDESDISPRECALL",41,0) ;check disposition (optional) "RTN","SDESDISPRECALL",42,0) S SDRRFTR=$G(REASON) ;refer to the A66201 new-style xref defined 403.5 for detail; SDRRFTR is referenced in DELETE^SDRRISRU "RTN","SDESDISPRECALL",43,0) I SDRRFTR'="" S SDRRFTR=$S(SDRRFTR="FAILURE TO RESPOND":1,SDRRFTR="MOVED":2,SDRRFTR="DECEASED":3,SDRRFTR="DOESN'T WANT VA SERVICES":4,SDRRFTR="RECEIVED CARE AT ANOTHER VA":5,SDRRFTR="OTHER":6,SDRRFTR="APPT SCHEDULED":7,1:"") "RTN","SDESDISPRECALL",44,0) I SDRRFTR="" K SDRRFTR "RTN","SDESDISPRECALL",45,0) ;check provider (required) "RTN","SDESDISPRECALL",46,0) S PROVIDER=$$GET1^DIQ(403.5,RECALLIEN_",",4) ; RECALL provider "RTN","SDESDISPRECALL",47,0) I '$D(^SD(403.54,+PROVIDER)) D ERRLOG^SDESJSON(.SDRECALL,131) S ERROR=1 "RTN","SDESDISPRECALL",48,0) ;validate EAS "RTN","SDESDISPRECALL",49,0) S EAS=$G(EAS,"") "RTN","SDESDISPRECALL",50,0) I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL(EAS) "RTN","SDESDISPRECALL",51,0) I +EAS=-1 D ERRLOG^SDESJSON(.SDRECALL,142) S ERROR=1 "RTN","SDESDISPRECALL",52,0) Q "RTN","SDESDISPRECALL",53,0) ; "RTN","SDESDISPRECALL",54,0) EDIT ; "RTN","SDESDISPRECALL",55,0) ;replace existing comment and EAS tracking number before calling move/delete "RTN","SDESDISPRECALL",56,0) S COMMENT=$G(COMMENT) "RTN","SDESDISPRECALL",57,0) S SDFDA(403.5,RECALLIEN_",",2.5)=$E(COMMENT,1,80) "RTN","SDESDISPRECALL",58,0) S SDFDA(403.5,RECALLIEN_",",100)=$G(EAS) "RTN","SDESDISPRECALL",59,0) D FILE^DIE("","SDFDA") "RTN","SDESDISPRECALL",60,0) K SDFDA "RTN","SDESDISPRECALL",61,0) Q "RTN","SDESDISPRECALL",62,0) ; "RTN","SDESDISPRECALL",63,0) DELETE ;delete and move entry to RECALL REMINDERS REMOVED file (403.56) "RTN","SDESDISPRECALL",64,0) S SDFDA(403.5,RECALLIEN_",",.01)="@" "RTN","SDESDISPRECALL",65,0) D UPDATE^DIE("","SDFDA","SDIEN","SDMSG") "RTN","SDESDISPRECALL",66,0) I $D(SDMSG) D ERRLOG^SDESJSON(.SDRECALL,136,"for IEN "_RECALLIEN) "RTN","SDESDISPRECALL",67,0) I '$D(SDMSG) S SDRECALL("PtCSchReqDisposition","IEN")=RECALLIEN "RTN","SDESDISPRECALL",68,0) D BLDJSON "RTN","SDESDISPRECALL",69,0) Q "RTN","SDESDISPRECALL",70,0) ; "RTN","SDESDISPRECALL",71,0) BLDJSON ; "RTN","SDESDISPRECALL",72,0) N JSONERR "RTN","SDESDISPRECALL",73,0) S JSONERR="" "RTN","SDESDISPRECALL",74,0) D ENCODE^SDESJSON(.SDRECALL,.SDECY,.JSONERR) "RTN","SDESDISPRECALL",75,0) Q "RTN","SDESDISPRECALL",76,0) ; "RTN","SDESDISPRECALL",77,0) KEY(RECALLIEN,RRPROVIEN) ;check that user has the correct SECURITY KEY "RTN","SDESDISPRECALL",78,0) ;INPUT: "RTN","SDESDISPRECALL",79,0) ; RECALLIEN - ien of the entry in RECALL REMINDERS file (403.5) "RTN","SDESDISPRECALL",80,0) ; RRPROVIEN - ien of the entry in the RECALL REMINDERS PROVIDERS file 403.54 "RTN","SDESDISPRECALL",81,0) ;RETURN "RTN","SDESDISPRECALL",82,0) ; 0=User has the correct SECURITY KEY "RTN","SDESDISPRECALL",83,0) ; "-1^" = User does not have the correct SECURITY KEY "RTN","SDESDISPRECALL",84,0) N KEY,RET,VALUE "RTN","SDESDISPRECALL",85,0) S RET=135 "RTN","SDESDISPRECALL",86,0) I RRPROVIEN="" S RET=0 "RTN","SDESDISPRECALL",87,0) I RRPROVIEN'="" D "RTN","SDESDISPRECALL",88,0) . S KEY=$P($G(^SD(403.54,RRPROVIEN,0)),U,7) "RTN","SDESDISPRECALL",89,0) . I KEY="" S RET=0 Q "RTN","SDESDISPRECALL",90,0) . S VALUE=$$LKUP^XPDKEY(KEY) N KY D OWNSKEY^XUSRB(.KY,VALUE,DUZ) "RTN","SDESDISPRECALL",91,0) . I $G(KY(0))'=0 S RET=0 "RTN","SDESDISPRECALL",92,0) Q RET "RTN","SDESGETCLINAPPT") 0^30^B45823175^n/a "RTN","SDESGETCLINAPPT",1,0) SDESGETCLINAPPT ;ALB/LAB - VISTA SCHEDULING READ CLINIC APPOINTMENT ;Jan 11,2022@15:01 "RTN","SDESGETCLINAPPT",2,0) ;;5.3;Scheduling;**805**;Aug 13, 1993;Build 9 "RTN","SDESGETCLINAPPT",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESGETCLINAPPT",4,0) Q "RTN","SDESGETCLINAPPT",5,0) ; "RTN","SDESGETCLINAPPT",6,0) GETAPPOINTMENTS(SDECY,SDCLIN,SDSTDTTM,SDENDDTTM) ;get all appointments for a given clinic for a given datetime range "RTN","SDESGETCLINAPPT",7,0) ; ALERT! This tag should NOT be called directly from outside source. This RPC will be called via an EAS wrapper/layer. "RTN","SDESGETCLINAPPT",8,0) ; INPUT: "RTN","SDESGETCLINAPPT",9,0) ; SDCLIN - Pointer to HOSPITAL LOCATION (#44) FILE "RTN","SDESGETCLINAPPT",10,0) ; SDDTTM - start appointment date time in ISO8601 Time format "RTN","SDESGETCLINAPPT",11,0) ; SDENDDTTM - end appoitnment date time in ISO8601 Time fomat "RTN","SDESGETCLINAPPT",12,0) N APPTREC,SDAPPT,SDSTDT,SDAPPT,SDAPPTNO,SDMSG,SDIEN,NUM,ERR,FOUND,SDENDDT "RTN","SDESGETCLINAPPT",13,0) K SDECY "RTN","SDESGETCLINAPPT",14,0) S NUM=0,FOUND=0 "RTN","SDESGETCLINAPPT",15,0) D VALIDATE ;basic validation just to make sure required fields have been sent "RTN","SDESGETCLINAPPT",16,0) D:+NUM ERRLOG^SDESJSON(.SDECY,NUM) "RTN","SDESGETCLINAPPT",17,0) I '+NUM D "RTN","SDESGETCLINAPPT",18,0) . D CONVERTINPDTS "RTN","SDESGETCLINAPPT",19,0) . Q:+NUM "RTN","SDESGETCLINAPPT",20,0) . F S SDSTDT=$O(^SC(SDCLIN,"S",SDSTDT)) Q:(SDSTDT="")!(SDSTDT>SDENDDT) D "RTN","SDESGETCLINAPPT",21,0) . . S SDAPPTNO=0 "RTN","SDESGETCLINAPPT",22,0) . . F S SDAPPTNO=$O(^SC(SDCLIN,"S",SDSTDT,1,SDAPPTNO)) Q:SDAPPTNO="" D "RTN","SDESGETCLINAPPT",23,0) . . . K SDAPPT,SDMSG "RTN","SDESGETCLINAPPT",24,0) . . . S SDIEN=SDAPPTNO_","_SDSTDT_","_SDCLIN_"," "RTN","SDESGETCLINAPPT",25,0) . . . D GETS^DIQ(44.003,SDIEN,"**","IE","SDAPPT","SDMSG") "RTN","SDESGETCLINAPPT",26,0) . . . D BLDREC "RTN","SDESGETCLINAPPT",27,0) I +NUM D "RTN","SDESGETCLINAPPT",28,0) . S FOUND=1 "RTN","SDESGETCLINAPPT",29,0) . D ERRLOG^SDESJSON(.APPTREC,NUM) "RTN","SDESGETCLINAPPT",30,0) S:'FOUND APPTREC("ClinicApptDate")="" "RTN","SDESGETCLINAPPT",31,0) D BUILDER "RTN","SDESGETCLINAPPT",32,0) Q "RTN","SDESGETCLINAPPT",33,0) ; "RTN","SDESGETCLINAPPT",34,0) VALIDATE ;Validate required fields are sent "RTN","SDESGETCLINAPPT",35,0) I ('+$G(SDCLIN)) S NUM=18 Q "RTN","SDESGETCLINAPPT",36,0) I ('+$G(SDSTDTTM)) S NUM=25 Q "RTN","SDESGETCLINAPPT",37,0) I ('+$G(SDENDDTTM)) S NUM=26 Q "RTN","SDESGETCLINAPPT",38,0) Q "RTN","SDESGETCLINAPPT",39,0) ; "RTN","SDESGETCLINAPPT",40,0) CONVERTINPDTS ;Convert INPUT dates from ISO8601 to Fileman "RTN","SDESGETCLINAPPT",41,0) S SDSTDT=$$ISOTFM^SDAMUTDT(SDSTDTTM,SDCLIN) ;Need to change this to conversion "RTN","SDESGETCLINAPPT",42,0) S:SDSTDT=-1 NUM=27 "RTN","SDESGETCLINAPPT",43,0) Q:NUM "RTN","SDESGETCLINAPPT",44,0) I $L(SDSTDT,".")=1 S SDSTDT=SDSTDT_.0001 "RTN","SDESGETCLINAPPT",45,0) S SDSTDT=$O(^SC(SDCLIN,"S",SDSTDT),-1) "RTN","SDESGETCLINAPPT",46,0) S SDENDDT=$$ISOTFM^SDAMUTDT(SDENDDTTM,SDCLIN) ;need to convert this from ISO8601 based on clinic time zone "RTN","SDESGETCLINAPPT",47,0) S:SDENDDT=-1 NUM=28 "RTN","SDESGETCLINAPPT",48,0) Q:NUM "RTN","SDESGETCLINAPPT",49,0) I $L(SDENDDT,".")=1 S SDENDDT=SDENDDT_.24 "RTN","SDESGETCLINAPPT",50,0) Q "RTN","SDESGETCLINAPPT",51,0) ; "RTN","SDESGETCLINAPPT",52,0) BUILDER ; "RTN","SDESGETCLINAPPT",53,0) D ENCODE^XLFJSON("APPTREC","SDECY","ERR") "RTN","SDESGETCLINAPPT",54,0) Q "RTN","SDESGETCLINAPPT",55,0) ; "RTN","SDESGETCLINAPPT",56,0) BLDREC ; build an appointment record "RTN","SDESGETCLINAPPT",57,0) N DFN "RTN","SDESGETCLINAPPT",58,0) S FOUND=1 "RTN","SDESGETCLINAPPT",59,0) S DFN=SDAPPT(44.003,SDIEN,.01,"I") "RTN","SDESGETCLINAPPT",60,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"AppointmentTime")=$$FMTISO^SDAMUTDT(SDSTDT,SDCLIN) "RTN","SDESGETCLINAPPT",61,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"Patient",DFN,"DFN")=DFN "RTN","SDESGETCLINAPPT",62,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"Patient",DFN,"NAME")=SDAPPT(44.003,SDIEN,.01,"E") "RTN","SDESGETCLINAPPT",63,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"Patient",DFN,"SSN")=SDAPPT(44.003,SDIEN,.09,"I") "RTN","SDESGETCLINAPPT",64,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"Patient",DFN,"Last4")=SDAPPT(44.003,SDIEN,.099,"I") "RTN","SDESGETCLINAPPT",65,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"Patient",DFN,"Street")=SDAPPT(44.003,SDIEN,.11,"I") "RTN","SDESGETCLINAPPT",66,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"AppointmentLength")=SDAPPT(44.003,SDIEN,1,"I") "RTN","SDESGETCLINAPPT",67,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"Patient",DFN,"EnrollmentCode")=SDAPPT(44.003,SDIEN,1.6,"I") "RTN","SDESGETCLINAPPT",68,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"Patient",DFN,"EnrollmentDate")=$$FMTISO^SDAMUTDT(SDAPPT(44.003,SDIEN,1.7,"I")) "RTN","SDESGETCLINAPPT",69,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"XRAY")=SDAPPT(44.003,SDIEN,2,"I") "RTN","SDESGETCLINAPPT",70,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"OtherTests")=SDAPPT(44.003,SDIEN,3,"I") "RTN","SDESGETCLINAPPT",71,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"WardLocation")=SDAPPT(44.003,SDIEN,4,"I") "RTN","SDESGETCLINAPPT",72,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"Status")=SDAPPT(44.003,SDIEN,5,"I") "RTN","SDESGETCLINAPPT",73,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"OtherTravel")=SDAPPT(44.003,SDIEN,6,"I") "RTN","SDESGETCLINAPPT",74,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"DataEntryClerk")=SDAPPT(44.003,SDIEN,7,"E") "RTN","SDESGETCLINAPPT",75,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"DateAppointmentMade")=$$FMTISO^SDAMUTDT(SDAPPT(44.003,SDIEN,8,"I")) "RTN","SDESGETCLINAPPT",76,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"OverbookFlag")=SDAPPT(44.003,SDIEN,9,"I") "RTN","SDESGETCLINAPPT",77,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"PriorXRayResults")=SDAPPT(44.003,SDIEN,10,"I") "RTN","SDESGETCLINAPPT",78,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"Patient",DFN,"CurrentEligibilityCode")=SDAPPT(44.003,SDIEN,10.5,"I") "RTN","SDESGETCLINAPPT",79,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"COLLATERAL")=SDAPPT(44.003,SDIEN,11,"I") "RTN","SDESGETCLINAPPT",80,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"LABTIME")=$$FMTISO^SDAMUTDT(SDAPPT(44.003,SDIEN,12,"I")) "RTN","SDESGETCLINAPPT",81,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"XRAYTIME")=$$FMTISO^SDAMUTDT(SDAPPT(44.003,SDIEN,13,"I")) "RTN","SDESGETCLINAPPT",82,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"EKGTIME")=$$FMTISO^SDAMUTDT(SDAPPT(44.003,SDIEN,14,"I")) "RTN","SDESGETCLINAPPT",83,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"Patient",DFN,"EligbilityOfVisit")=SDAPPT(44.003,SDIEN,30,"I") "RTN","SDESGETCLINAPPT",84,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"ParentRecordRequest")=SDAPPT(44.003,SDIEN,200,"E") "RTN","SDESGETCLINAPPT",85,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"CheckInUser")=SDAPPT(44.003,SDIEN,302,"E") "RTN","SDESGETCLINAPPT",86,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"CheckedOutDate")=$$FMTISO^SDAMUTDT(SDAPPT(44.003,SDIEN,303,"I"),SDCLIN) "RTN","SDESGETCLINAPPT",87,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"CheckOutUser")=SDAPPT(44.003,SDIEN,304,"E") "RTN","SDESGETCLINAPPT",88,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"CheckInEntered")=$$FMTISO^SDAMUTDT(SDAPPT(44.003,SDIEN,305,"I")) "RTN","SDESGETCLINAPPT",89,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"CheckOutEntered")=$$FMTISO^SDAMUTDT(SDAPPT(44.003,SDIEN,306,"I")) "RTN","SDESGETCLINAPPT",90,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"CheckedIn")=$$FMTISO^SDAMUTDT(SDAPPT(44.003,SDIEN,309,"I"),SDCLIN) "RTN","SDESGETCLINAPPT",91,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"AppointmentCancelled")=SDAPPT(44.003,SDIEN,310,"E") "RTN","SDESGETCLINAPPT",92,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"VeteranVideoCallURL")=SDAPPT(44.003,SDIEN,400,"I") "RTN","SDESGETCLINAPPT",93,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"ConsultLink")=SDAPPT(44.003,SDIEN,688,"I") "RTN","SDESGETCLINAPPT",94,0) S APPTREC("ClinicApptDate",SDSTDT,"ClinicApptNumber",SDAPPTNO,"DuplicateApptSameDay")=SDAPPT(44.003,SDIEN,999,"I") "RTN","SDESGETCLINAPPT",95,0) Q "RTN","SDESGETCLINAPPT",96,0) ; "RTN","SDESGETRECALL") 0^16^B49095781^B45237321 "RTN","SDESGETRECALL",1,0) SDESGETRECALL ;ALB/BLB,MGD - VISTA SCHEDULING RPCS ;DEC 29, 2021@14:48 "RTN","SDESGETRECALL",2,0) ;;5.3;Scheduling;**803,805**;Aug 13, 1993;Build 9 "RTN","SDESGETRECALL",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESGETRECALL",4,0) ; "RTN","SDESGETRECALL",5,0) ;Reference is made to ICR #10035 "RTN","SDESGETRECALL",6,0) Q "RTN","SDESGETRECALL",7,0) ; "RTN","SDESGETRECALL",8,0) RECGETLIST(SDECY,DFN,SDEAS) ;Return a list of OPEN recall appointment types for patient "RTN","SDESGETRECALL",9,0) ;INPUT - DFN (Date File Number) Pointer to PATIENT (#2) File. "RTN","SDESGETRECALL",10,0) ; SDEAS - [optional] Enterprise Appointment Scheduling (EAS) Tracking Number associated to an appointment. "RTN","SDESGETRECALL",11,0) ;RETURN PARMETER: "RTN","SDESGETRECALL",12,0) ;List of recalls associated with a given patient "RTN","SDESGETRECALL",13,0) ;Data is delimited by carat (^). "RTN","SDESGETRECALL",14,0) ; Field List: "RTN","SDESGETRECALL",15,0) ; (1) Internal IEN "RTN","SDESGETRECALL",16,0) ; (2) Accession # "RTN","SDESGETRECALL",17,0) ; (3) Comment "RTN","SDESGETRECALL",18,0) ; (4) Fast/Non-Fasting "RTN","SDESGETRECALL",19,0) ; (5) Test/App "RTN","SDESGETRECALL",20,0) ; (6) Provider IEN "RTN","SDESGETRECALL",21,0) ; (7) Provider Name "RTN","SDESGETRECALL",22,0) ; (8) Clinic IEN "RTN","SDESGETRECALL",23,0) ; (9) Clinic Name "RTN","SDESGETRECALL",24,0) ; (10) Length of Appointment "RTN","SDESGETRECALL",25,0) ; (11) Recall Date "RTN","SDESGETRECALL",26,0) ; (12) Recall Date (Per Patient) "RTN","SDESGETRECALL",27,0) ; (13) Date Reminder Sent "RTN","SDESGETRECALL",28,0) ; (14) Second Print "RTN","SDESGETRECALL",29,0) ; (15) Date/Time Recall Added "RTN","SDESGETRECALL",30,0) ; (16) GAF Score "RTN","SDESGETRECALL",31,0) ; (17) Patient Sensitive & Record Access Checks "RTN","SDESGETRECALL",32,0) ; (18) Similar Patient Data "RTN","SDESGETRECALL",33,0) ; (19) Number of Call Attempts "RTN","SDESGETRECALL",34,0) ; (20) Recall Reminders Letter Date "RTN","SDESGETRECALL",35,0) ; "RTN","SDESGETRECALL",36,0) N SDRECALL,IEN,NUM,ERR,IENS,SDESJSONERR "RTN","SDESGETRECALL",37,0) S DFN=$G(DFN),SDESJSONERR=0 "RTN","SDESGETRECALL",38,0) I DFN="" S SDESJSONERR=1 D ERRLOG^SDESJSON(.SDRECALL,1) "RTN","SDESGETRECALL",39,0) S ERR=0,IEN=0,NUM=0 "RTN","SDESGETRECALL",40,0) I DFN'="",'$D(^DPT(DFN,0)) S SDESJSONERR=1 D ERRLOG^SDESJSON(.SDRECALL,2) "RTN","SDESGETRECALL",41,0) S SDEAS=$G(SDEAS,"") "RTN","SDESGETRECALL",42,0) I $L(SDEAS) S SDEAS=$$EASVALIDATE^SDESUTIL(SDEAS) "RTN","SDESGETRECALL",43,0) I +SDEAS=-1 S SDESJSONERR=1 D ERRLOG^SDESJSON(.SDRECALL,142) "RTN","SDESGETRECALL",44,0) I 'SDESJSONERR D "RTN","SDESGETRECALL",45,0) . F S IEN=$O(^SD(403.5,"B",DFN,IEN)) Q:IEN="" D "RTN","SDESGETRECALL",46,0) . . S NUM=NUM+1 "RTN","SDESGETRECALL",47,0) . . D RECDATA(DFN,IEN) "RTN","SDESGETRECALL",48,0) . . D PATDATA(DFN,IEN) "RTN","SDESGETRECALL",49,0) .I '$D(SDRECALL("Recall")) S SDRECALL("Recall")="" "RTN","SDESGETRECALL",50,0) D BUILDER "RTN","SDESGETRECALL",51,0) Q "RTN","SDESGETRECALL",52,0) ; "RTN","SDESGETRECALL",53,0) RECDATA(DFN,IEN) ; "RTN","SDESGETRECALL",54,0) N F,DAPTDT,DATE,DATE1,DATE2,DATE3,RECARY "RTN","SDESGETRECALL",55,0) D GETS^DIQ(403.5,IEN,"**","IE","RECARY","SDMSG") "RTN","SDESGETRECALL",56,0) S F=403.5 "RTN","SDESGETRECALL",57,0) S IENS=IEN_"," "RTN","SDESGETRECALL",58,0) S SDRECALL("Recall",NUM,"RecallIEN")=IEN "RTN","SDESGETRECALL",59,0) S SDRECALL("Recall",NUM,"EASTrackingNumber")=$G(RECARY(F,IENS,100,"E")) "RTN","SDESGETRECALL",60,0) S SDRECALL("Recall",NUM,"Accession")=$G(RECARY(F,IENS,2,"E")) "RTN","SDESGETRECALL",61,0) S SDRECALL("Recall",NUM,"Comment")=$G(RECARY(F,IENS,2.5,"E")) "RTN","SDESGETRECALL",62,0) S SDRECALL("Recall",NUM,"FastingNonFasting")=$G(RECARY(F,IENS,2.6,"I")) "RTN","SDESGETRECALL",63,0) S SDRECALL("Recall",NUM,"ProviderIEN")=$G(RECARY(F,IENS,4,"I")) "RTN","SDESGETRECALL",64,0) S SDRECALL("Recall",NUM,"ProviderName")=$$GET1^DIQ(403.54,SDRECALL("Recall",NUM,"ProviderIEN"),.01,"E") "RTN","SDESGETRECALL",65,0) S SDRECALL("Recall",NUM,"ClinicIEN")=$G(RECARY(F,IENS,4.5,"I")) "RTN","SDESGETRECALL",66,0) S SDRECALL("Recall",NUM,"ClinicName")=$G(RECARY(F,IENS,4.5,"E")) "RTN","SDESGETRECALL",67,0) S SDRECALL("Recall",NUM,"AppointmentLength")=$G(RECARY(F,IENS,4.7,"E")) "RTN","SDESGETRECALL",68,0) S DATE=$G(RECARY(F,IENS,5,"I")) S DATE=$$FMTE^XLFDT(DATE) "RTN","SDESGETRECALL",69,0) S DATE1=$G(RECARY(F,IENS,5.5,"I")) S DATE1=$$FMTE^XLFDT(DATE1) "RTN","SDESGETRECALL",70,0) S DAPTDT=$G(RECARY(F,IENS,6,"I")) S DAPTDT=$$FMTE^XLFDT(DAPTDT) "RTN","SDESGETRECALL",71,0) S DATE2=$G(RECARY(F,IENS,8,"I")) S DATE2=$$FMTE^XLFDT(DATE2) "RTN","SDESGETRECALL",72,0) S DATE3=$G(RECARY(403.5,IENS,7.5,"E")) S DATE3=$$FMTE^XLFDT(DATE3) "RTN","SDESGETRECALL",73,0) S SDRECALL("Recall",NUM,"RecallDate")=DATE "RTN","SDESGETRECALL",74,0) S SDRECALL("Recall",NUM,"RecallDatePerPatient")=DATE1 "RTN","SDESGETRECALL",75,0) S SDRECALL("Recall",NUM,"DateReminderSent")=DAPTDT "RTN","SDESGETRECALL",76,0) S SDRECALL("Recall",NUM,"SecondPrint")=DATE2 "RTN","SDESGETRECALL",77,0) S SDRECALL("Recall",NUM,"DateTimeRecallAdded")=DATE3 "RTN","SDESGETRECALL",78,0) Q "RTN","SDESGETRECALL",79,0) ; "RTN","SDESGETRECALL",80,0) PATDATA(DFN,IEN) ; "RTN","SDESGETRECALL",81,0) N SDREC "RTN","SDESGETRECALL",82,0) S SDRECALL("Recall",NUM,"GAFScore")=$$GAF^SDECU2(DFN) "RTN","SDESGETRECALL",83,0) S SDRECALL("Recall",NUM,"PatientSensitiveRecordAccessChecks")=$$PTSEC^SDECUTL(DFN) "RTN","SDESGETRECALL",84,0) S SDRECALL("Recall",NUM,"SimilarPatientData")=$$SIM^SDECU3(DFN) "RTN","SDESGETRECALL",85,0) S SDREC=$$RECALL^SDECAR1A(DFN,IEN) "RTN","SDESGETRECALL",86,0) S SDRECALL("Recall",NUM,"NumberOfCallAttempts")=$P(SDREC,U) "RTN","SDESGETRECALL",87,0) S SDRECALL("Recall",NUM,"RecallRemindersLetterDate")=$P(SDREC,U,2) "RTN","SDESGETRECALL",88,0) Q "RTN","SDESGETRECALL",89,0) ; "RTN","SDESGETRECALL",90,0) BUILDER ; "RTN","SDESGETRECALL",91,0) D ENCODE^XLFJSON("SDRECALL","SDECY","ERR") "RTN","SDESGETRECALL",92,0) Q "RTN","SDESGETRECALL",93,0) ; "RTN","SDESGETRECALL",94,0) RECGETONE(SDECY,IEN,SDEAS) ;Return a single OPEN recall appointment type in JSON format based on the IEN passed "RTN","SDESGETRECALL",95,0) ;INPUT - IEN (Internal Entry Number) RECALL REMINDERS File (403.5) "RTN","SDESGETRECALL",96,0) ; SDEAS - [optional] Enterprise Appointment Scheduling (EAS) Tracking Number associated to an appointment. "RTN","SDESGETRECALL",97,0) ;RETURN PARAMETER: recall based on IEN being passed "RTN","SDESGETRECALL",98,0) ;Data is delimited by carat (^). "RTN","SDESGETRECALL",99,0) ; Field List: "RTN","SDESGETRECALL",100,0) ; (1) Internal IEN "RTN","SDESGETRECALL",101,0) ; (2) Accession # "RTN","SDESGETRECALL",102,0) ; (3) Comment "RTN","SDESGETRECALL",103,0) ; (4) Fast/Non-Fasting "RTN","SDESGETRECALL",104,0) ; (5) Test/App "RTN","SDESGETRECALL",105,0) ; (6) Provider IEN "RTN","SDESGETRECALL",106,0) ; (7) Provider Name "RTN","SDESGETRECALL",107,0) ; (8) Clinic IEN "RTN","SDESGETRECALL",108,0) ; (9) Clinic Name "RTN","SDESGETRECALL",109,0) ; (10) Length of Appointment "RTN","SDESGETRECALL",110,0) ; (11) Recall Date "RTN","SDESGETRECALL",111,0) ; (12) Recall Date (Per Patient) "RTN","SDESGETRECALL",112,0) ; (13) Date Reminder Sent "RTN","SDESGETRECALL",113,0) ; (14) Second Print "RTN","SDESGETRECALL",114,0) ; (15) Date/Time Recall Added "RTN","SDESGETRECALL",115,0) ; (16) GAF Score "RTN","SDESGETRECALL",116,0) ; (17) Patient Sensitive & Record Access Checks "RTN","SDESGETRECALL",117,0) ; (18) Similar Patient Data "RTN","SDESGETRECALL",118,0) ; (19) Number of Call Attempts "RTN","SDESGETRECALL",119,0) ; (20) Recall Reminders Letter Date "RTN","SDESGETRECALL",120,0) ; "RTN","SDESGETRECALL",121,0) N ERR,NUM,F,IENS,ACCESION,COMM,FASTING,RRAPPTYP,RRPROVIEN,PROVNAME,CLINIEN,SDTMP,NUM,SDECI,DFN,SDESJSONERR "RTN","SDESGETRECALL",122,0) N CLINNAME,APPTLEN,DATE,DATE1,DAPTDT,DATE2,DATE3,MSGTYP,GAF,SENSITIVE,SIMILAR,SDREC,CPHONE,CLET,SDRECALL "RTN","SDESGETRECALL",123,0) S SDESJSONERR=0 "RTN","SDESGETRECALL",124,0) S IEN=$G(IEN) "RTN","SDESGETRECALL",125,0) I IEN="" S SDESJSONERR=1 D ERRLOG^SDESJSON(.SDRECALL,16) "RTN","SDESGETRECALL",126,0) K RETURN "RTN","SDESGETRECALL",127,0) S ERR=0,NUM=0 "RTN","SDESGETRECALL",128,0) I IEN'="",'$D(^SD(403.5,IEN)) S SDESJSONERR=1 D ERRLOG^SDESJSON(.SDRECALL,17) ; send error and quit if patient has no entry in the RECALL REMINDERS File (403.5) "RTN","SDESGETRECALL",129,0) S SDEAS=$G(SDEAS,"") "RTN","SDESGETRECALL",130,0) I $L(SDEAS) S SDEAS=$$EASVALIDATE^SDESUTIL(SDEAS) "RTN","SDESGETRECALL",131,0) I +SDEAS=-1 S SDESJSONERR=1 D ERRLOG^SDESJSON(.SDRECALL,142) "RTN","SDESGETRECALL",132,0) I 'SDESJSONERR D "RTN","SDESGETRECALL",133,0) . D RECDATAONE(IEN) ; build out recall data "RTN","SDESGETRECALL",134,0) . D PATDATAONE(IEN) ; build out required patient data "RTN","SDESGETRECALL",135,0) D BUILDER ; build return "RTN","SDESGETRECALL",136,0) Q "RTN","SDESGETRECALL",137,0) ; "RTN","SDESGETRECALL",138,0) RECDATAONE(IEN) ; "RTN","SDESGETRECALL",139,0) N RECARY "RTN","SDESGETRECALL",140,0) D GETS^DIQ(403.5,IEN,"**","IE","RECARY","SDMSG") "RTN","SDESGETRECALL",141,0) S F=403.5 "RTN","SDESGETRECALL",142,0) S IENS=IEN_"," "RTN","SDESGETRECALL",143,0) S NUM=NUM+1 "RTN","SDESGETRECALL",144,0) S SDRECALL("Recall",NUM,"RecallIEN")=IEN "RTN","SDESGETRECALL",145,0) S SDRECALL("Recall",NUM,"EASTrackingNumber")=$G(RECARY(F,IENS,100,"E")) "RTN","SDESGETRECALL",146,0) S SDRECALL("Recall",NUM,"Accession")=$G(RECARY(F,IENS,2,"E")) "RTN","SDESGETRECALL",147,0) S SDRECALL("Recall",NUM,"Comment")=$G(RECARY(F,IENS,2.5,"E")) "RTN","SDESGETRECALL",148,0) S SDRECALL("Recall",NUM,"FastingNonFasting")=$G(RECARY(F,IENS,2.6,"I")) "RTN","SDESGETRECALL",149,0) S SDRECALL("Recall",NUM,"TestApp")=$G(RECARY(F,IENS,3,"I")) "RTN","SDESGETRECALL",150,0) S SDRECALL("Recall",NUM,"ProviderIEN")=$G(RECARY(F,IENS,4,"I")) "RTN","SDESGETRECALL",151,0) S SDRECALL("Recall",NUM,"ProviderName")=$$GET1^DIQ(403.54,SDRECALL("Recall",NUM,"ProviderIEN"),.01,"E") "RTN","SDESGETRECALL",152,0) S SDRECALL("Recall",NUM,"ClinicIEN")=$G(RECARY(F,IENS,4.5,"I")) "RTN","SDESGETRECALL",153,0) S SDRECALL("Recall",NUM,"ClinicName")=$G(RECARY(F,IENS,4.5,"E")) "RTN","SDESGETRECALL",154,0) S SDRECALL("Recall",NUM,"AppointmentLength")=$G(RECARY(F,IENS,4.7,"E")) "RTN","SDESGETRECALL",155,0) S DATE=$G(RECARY(F,IENS,5,"I")) S DATE=$$FMTE^XLFDT(DATE) "RTN","SDESGETRECALL",156,0) S DATE1=$G(RECARY(F,IENS,5.5,"I")) S DATE1=$$FMTE^XLFDT(DATE1) "RTN","SDESGETRECALL",157,0) S DAPTDT=$G(RECARY(F,IENS,6,"I")) S DAPTDT=$$FMTE^XLFDT(DAPTDT) "RTN","SDESGETRECALL",158,0) S DATE2=$G(RECARY(F,IENS,8,"I")) S DATE2=$$FMTE^XLFDT(DATE2) "RTN","SDESGETRECALL",159,0) S DATE3=$G(RECARY(403.5,IENS,7.5,"E")) S DATE3=$$FMTE^XLFDT(DATE3) "RTN","SDESGETRECALL",160,0) S SDRECALL("Recall",NUM,"RecallDate")=DATE "RTN","SDESGETRECALL",161,0) S SDRECALL("Recall",NUM,"RecallDatePerPatient")=DATE1 "RTN","SDESGETRECALL",162,0) S SDRECALL("Recall",NUM,"DateReminderSent")=DAPTDT "RTN","SDESGETRECALL",163,0) S SDRECALL("Recall",NUM,"SecondPrint")=DATE2 "RTN","SDESGETRECALL",164,0) S SDRECALL("Recall",NUM,"DateTimeRecallAdded")=DATE3 "RTN","SDESGETRECALL",165,0) Q "RTN","SDESGETRECALL",166,0) ; "RTN","SDESGETRECALL",167,0) PATDATAONE(IEN) ; "RTN","SDESGETRECALL",168,0) N SDECALL,SDECLET "RTN","SDESGETRECALL",169,0) S DFN=$$GET1^DIQ(403.5,IEN,.01,"I") "RTN","SDESGETRECALL",170,0) S SDRECALL("Recall",NUM,"GAFScore")=$$GAF^SDECU2(DFN) "RTN","SDESGETRECALL",171,0) S SDRECALL("Recall",NUM,"PatientSensitiveRecordAccessChecks")=$$PTSEC^SDECUTL(DFN) "RTN","SDESGETRECALL",172,0) S SDRECALL("Recall",NUM,"SimilarPatientData")=$$SIM^SDECU3(DFN) "RTN","SDESGETRECALL",173,0) S SDREC=$$RECALL^SDECAR1A(DFN,IEN) "RTN","SDESGETRECALL",174,0) S SDRECALL("Recall",NUM,"NumberOfCallAttempts")=$P(SDREC,U) "RTN","SDESGETRECALL",175,0) S SDRECALL("Recall",NUM,"RecallRemindersLetterDate")=$P(SDREC,U,2) "RTN","SDESGETRECALL",176,0) Q "RTN","SDESGETREGA") 0^3^B79018362^B76533980 "RTN","SDESGETREGA",1,0) SDESGETREGA ;ALB/LAB,TAW,MGD - SD*5.3*799 Get registration info JSON format ; Jan 27, 2022 "RTN","SDESGETREGA",2,0) ;;5.3;SCHEDULING;**799,804,805**;AUG 13, 1993;Build 9 "RTN","SDESGETREGA",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESGETREGA",4,0) ; Documented API's and Integration Agreements "RTN","SDESGETREGA",5,0) ; ------------------------------------------- "RTN","SDESGETREGA",6,0) ; Reference to ^DPT( In ICRs #7030,7029,1476,10035 "RTN","SDESGETREGA",7,0) ; "RTN","SDESGETREGA",8,0) Q "RTN","SDESGETREGA",9,0) ; "RTN","SDESGETREGA",10,0) GETREGA(SDECY,DFN,SDEAS) ;return basic reg info/demographics for given patient in JSON format "RTN","SDESGETREGA",11,0) ;Input Parameter: "RTN","SDESGETREGA",12,0) ; DFN - Patient ID - Pointer to PATIENT file "RTN","SDESGETREGA",13,0) ; SDEAS - [optional] Enterprise Appointment Scheduling (EAS) Tracking Number associated to an appointment. "RTN","SDESGETREGA",14,0) ;Returns: "RTN","SDESGETREGA",15,0) ; json formatted output (need to add) "RTN","SDESGETREGA",16,0) NEW POP,SDINFO,SDDFN,SDPATARR,SDDEMO,PRACE,PRACEN,PETH,PETHN,SDMHP,SDPCP,GAF,GAFR,SDZIP "RTN","SDESGETREGA",17,0) S POP=0 "RTN","SDESGETREGA",18,0) D VALIDATE D:POP BUILDER Q:POP "RTN","SDESGETREGA",19,0) D GETREG "RTN","SDESGETREGA",20,0) D BUILDER "RTN","SDESGETREGA",21,0) Q "RTN","SDESGETREGA",22,0) ; "RTN","SDESGETREGA",23,0) VALIDATE ;validate input Parameter "RTN","SDESGETREGA",24,0) I +DFN=0 S POP=1 D ERRLOG^SDESJSON(.SDINFO,1) Q "RTN","SDESGETREGA",25,0) I '$D(^DPT(DFN,0)) S POP=1 D ERRLOG^SDESJSON(.SDINFO,2) "RTN","SDESGETREGA",26,0) S SDEAS=$G(SDEAS,"") "RTN","SDESGETREGA",27,0) I $L(SDEAS) S SDEAS=$$EASVALIDATE^SDESUTIL(SDEAS) "RTN","SDESGETREGA",28,0) I +SDEAS=-1 S POP=1 D ERRLOG^SDESJSON(.SDINFO,142) "RTN","SDESGETREGA",29,0) Q "RTN","SDESGETREGA",30,0) ; "RTN","SDESGETREGA",31,0) BUILDER ;Convert data to JSON "RTN","SDESGETREGA",32,0) N JSONERR "RTN","SDESGETREGA",33,0) S JSONERR="" "RTN","SDESGETREGA",34,0) D ENCODE^SDESJSON(.SDINFO,.SDECY,.JSONERR) "RTN","SDESGETREGA",35,0) Q "RTN","SDESGETREGA",36,0) ; "RTN","SDESGETREGA",37,0) ASSIGNVALS ;assign values to be used to build output "RTN","SDESGETREGA",38,0) ; assign data values "RTN","SDESGETREGA",39,0) ; "RTN","SDESGETREGA",40,0) S SDDFN=DFN_"," "RTN","SDESGETREGA",41,0) D GETS^DIQ(2,SDDFN,".1;.116;.2203;.2207;.331;.332;.333;.334;.335;.336;.337;.338;.339;.1219;.1151;.1152;.1153;.1154;.1155;.1156;.1173;.1223;.2201;.33011","E","SDPATARR") "RTN","SDESGETREGA",42,0) D PDEMO^SDECU3(.SDDEMO,DFN) "RTN","SDESGETREGA",43,0) D RACELST^SDECU2(DFN,.PRACE,.PRACEN) "RTN","SDESGETREGA",44,0) D ETH^SDECU2(DFN,.PETH,.PETHN) ;get ethnicity "RTN","SDESGETREGA",45,0) S SDMHP=$$START^SCMCMHTC(DFN) ;Return Mental Health Provider "RTN","SDESGETREGA",46,0) S SDPCP=$$OUTPTPR^SDUTL3(DFN) ;Return Primary Care Provider "RTN","SDESGETREGA",47,0) S GAF=$$NEWGAF^SDUTL2(DFN) "RTN","SDESGETREGA",48,0) S GAFR="" "RTN","SDESGETREGA",49,0) S:GAF="" GAF=-1 "RTN","SDESGETREGA",50,0) S $P(GAFR,"|",1)=$S(+GAF:"New GAF Required",1:"No new GAF required") "RTN","SDESGETREGA",51,0) Q "RTN","SDESGETREGA",52,0) ; "RTN","SDESGETREGA",53,0) GETREG ; "RTN","SDESGETREGA",54,0) S SDINFO("Patient","DataFileNumber")=DFN "RTN","SDESGETREGA",55,0) D ASSIGNVALS ;assign all values needed to build SDINFO array "RTN","SDESGETREGA",56,0) ; "RTN","SDESGETREGA",57,0) ;person identification information "RTN","SDESGETREGA",58,0) ; "RTN","SDESGETREGA",59,0) S SDINFO("Patient","Name")=SDDEMO("NAME") "RTN","SDESGETREGA",60,0) S SDINFO("Patient","SocialSecurityNumber")=SDDEMO("SSN") "RTN","SDESGETREGA",61,0) S SDINFO("Patient","DateOfBirth")=SDDEMO("DOB") "RTN","SDESGETREGA",62,0) S SDINFO("Patient","Race","IEN")=$G(PRACE) "RTN","SDESGETREGA",63,0) S SDINFO("Patient","Race","Name")=$G(PRACEN) "RTN","SDESGETREGA",64,0) S SDINFO("Patient","Ethnicity","IEN")=$G(PETH) "RTN","SDESGETREGA",65,0) S SDINFO("Patient","Ethnicity","Name")=$G(PETHN) "RTN","SDESGETREGA",66,0) S SDINFO("Patient","Sex")=SDDEMO("GENDER") "RTN","SDESGETREGA",67,0) S SDINFO("Patient","Security")=$$PTSEC^SDECUTL(DFN) "RTN","SDESGETREGA",68,0) S SDINFO("Patient","Marital")=SDDEMO("PMARITAL") "RTN","SDESGETREGA",69,0) S SDINFO("Patient","Religion")=SDDEMO("PRELIGION") "RTN","SDESGETREGA",70,0) ; "RTN","SDESGETREGA",71,0) ;health information "RTN","SDESGETREGA",72,0) ; "RTN","SDESGETREGA",73,0) S SDINFO("Patient","PrimaryCareProvider")=$P(SDPCP,"^",2) "RTN","SDESGETREGA",74,0) S SDINFO("Patient","ServiceConnected")=SDDEMO("SVCCONN") "RTN","SDESGETREGA",75,0) S SDINFO("Patient","ServiceConnectedPercentage")=SDDEMO("SVCCONNP") "RTN","SDESGETREGA",76,0) S SDINFO("Patient","Ward")=$G(SDPATARR(2,SDDFN,.1,"E")) "RTN","SDESGETREGA",77,0) S SDINFO("Patient","HealthRecordNumber")=SDDEMO("HRN") "RTN","SDESGETREGA",78,0) S SDINFO("Patient","MentalHealthProvider")=$P(SDMHP,"^",2) "RTN","SDESGETREGA",79,0) ; "RTN","SDESGETREGA",80,0) ;flags "RTN","SDESGETREGA",81,0) ; "RTN","SDESGETREGA",82,0) S SDINFO("Patient","FugitiveFlag")=SDDEMO("PF_FFF") "RTN","SDESGETREGA",83,0) S SDINFO("Patient","VeteranCatastrophicallyDisabled")=SDDEMO("PF_VCD") "RTN","SDESGETREGA",84,0) S SDINFO("Patient","NationalFlag")=SDDEMO("PFNATIONAL") "RTN","SDESGETREGA",85,0) S SDINFO("Patient","LocalFlag")=SDDEMO("PFLOCAL") "RTN","SDESGETREGA",86,0) S SDINFO("Patient","EnrollmentSubgroup")=SDDEMO("SUBGRP") "RTN","SDESGETREGA",87,0) S SDINFO("Patient","Category8GFlag")=(SDDEMO("PRIGRP")="GROUP 8")&(SDDEMO("SUBGRP")="g") "RTN","SDESGETREGA",88,0) S SDINFO("Patient","SimilarPatients")=SDDEMO("SIMILAR") "RTN","SDESGETREGA",89,0) S SDINFO("Patient","PriorityGroup")=SDDEMO("PRIGRP") "RTN","SDESGETREGA",90,0) S SDINFO("Patient","GAFRequired")=$G(GAFR) "RTN","SDESGETREGA",91,0) ; "RTN","SDESGETREGA",92,0) ;contact information "RTN","SDESGETREGA",93,0) ; "RTN","SDESGETREGA",94,0) S SDINFO("Patient","Cell")=SDDEMO("PCELL") "RTN","SDESGETREGA",95,0) S SDINFO("Patient","Email")=SDDEMO("PEMAIL") "RTN","SDESGETREGA",96,0) S SDINFO("Patient","HomePhone")=SDDEMO("HPHONE") "RTN","SDESGETREGA",97,0) S SDINFO("Patient","OfficePhone")=SDDEMO("OPHONE") "RTN","SDESGETREGA",98,0) ; "RTN","SDESGETREGA",99,0) ;mail address information "RTN","SDESGETREGA",100,0) ; "RTN","SDESGETREGA",101,0) S SDINFO("Patient","MailingAddress","Street1")=SDDEMO("PADDRES1") "RTN","SDESGETREGA",102,0) S SDINFO("Patient","MailingAddress","Street2")=SDDEMO("PADDRES2") "RTN","SDESGETREGA",103,0) S SDINFO("Patient","MailingAddress","Street3")=SDDEMO("PADDRES3") "RTN","SDESGETREGA",104,0) S SDINFO("Patient","MailingAddress","City")=SDDEMO("PCITY") "RTN","SDESGETREGA",105,0) S SDINFO("Patient","MailingAddress","State")=SDDEMO("PSTATE") "RTN","SDESGETREGA",106,0) S SDINFO("Patient","MailingAddress","County")=SDDEMO("PCOUNTY") "RTN","SDESGETREGA",107,0) S SDINFO("Patient","MailingAddress","Country")=SDDEMO("PCOUNTRY") "RTN","SDESGETREGA",108,0) S SDINFO("Patient","MailingAddress","CountryName")=$G(SDPATARR(2,SDDFN,.1173,"E")) "RTN","SDESGETREGA",109,0) S SDINFO("Patient","MailingAddress","Zip4")=SDDEMO("PZIP+4") "RTN","SDESGETREGA",110,0) S SDINFO("Patient","MailingAddress","Zip")=$G(SDPATARR(2,SDDFN,.116,"E")) "RTN","SDESGETREGA",111,0) S SDINFO("Patient","AddressIndicator")=SDDEMO("BADADD") "RTN","SDESGETREGA",112,0) ; "RTN","SDESGETREGA",113,0) ;Residential Address Info "RTN","SDESGETREGA",114,0) ; "RTN","SDESGETREGA",115,0) S SDINFO("Patient","ResidentialAddress","Address1")=$G(SDPATARR(2,SDDFN,.1151,"E")) "RTN","SDESGETREGA",116,0) S SDINFO("Patient","ResidentialAddress","Address2")=$G(SDPATARR(2,SDDFN,.1152,"E")) "RTN","SDESGETREGA",117,0) S SDINFO("Patient","ResidentialAddress","Address3")=$G(SDPATARR(2,SDDFN,.1153,"E")) "RTN","SDESGETREGA",118,0) S SDINFO("Patient","ResidentialAddress","City")=$G(SDPATARR(2,SDDFN,.1154,"E")) "RTN","SDESGETREGA",119,0) S SDINFO("Patient","ResidentialAddress","State")=$G(SDPATARR(2,SDDFN,.1155,"E")) "RTN","SDESGETREGA",120,0) S SDINFO("Patient","ResidentialAddress","Zip4")=$G(SDPATARR(2,SDDFN,.1156,"E")) "RTN","SDESGETREGA",121,0) ;S SDINFO("Patient","ResidentialAddress","Zip")=$G(SDPATARR(2,SDDFN,.1156,"E")) "RTN","SDESGETREGA",122,0) ; "RTN","SDESGETREGA",123,0) ;Temp Address information "RTN","SDESGETREGA",124,0) ; "RTN","SDESGETREGA",125,0) S SDINFO("Patient","TemporaryAddress","Address1")=SDDEMO("PTADDRESS1") "RTN","SDESGETREGA",126,0) S SDINFO("Patient","TemporaryAddress","Address2")=SDDEMO("PTADDRESS2") "RTN","SDESGETREGA",127,0) S SDINFO("Patient","TemporaryAddress","Address3")=SDDEMO("PTADDRESS3") "RTN","SDESGETREGA",128,0) S SDINFO("Patient","TemporaryAddress","City")=SDDEMO("PTCITY") "RTN","SDESGETREGA",129,0) S SDINFO("Patient","TemporaryAddress","State")=SDDEMO("PTSTATE") "RTN","SDESGETREGA",130,0) S SDINFO("Patient","TemporaryAddress","Zip")=SDDEMO("PTZIP") "RTN","SDESGETREGA",131,0) S SDINFO("Patient","TemporaryAddress","Zip4")=SDDEMO("PTZIP+4") "RTN","SDESGETREGA",132,0) S SDINFO("Patient","TemporaryAddress","Country")=SDDEMO("PTCOUNTRY") "RTN","SDESGETREGA",133,0) S SDINFO("Patient","TemporaryAddress","CountryName")=$G(SDPATARR(2,SDDFN,.1223,"E")) "RTN","SDESGETREGA",134,0) S SDINFO("Patient","TemporaryAddress","County")=SDDEMO("PTCOUNTY") "RTN","SDESGETREGA",135,0) S SDINFO("Patient","TemporaryAddressStart")=SDDEMO("PTSTART") "RTN","SDESGETREGA",136,0) S SDINFO("Patient","TemporaryAddressEnd")=SDDEMO("PTEND") "RTN","SDESGETREGA",137,0) S SDINFO("Patient","TemporaryPhone")=$G(SDPATARR(2,SDDFN,.1219,"E")) "RTN","SDESGETREGA",138,0) ; "RTN","SDESGETREGA",139,0) ;Primary Next Of Kin Information "RTN","SDESGETREGA",140,0) ; "RTN","SDESGETREGA",141,0) S SDINFO("Patient","PrimaryNextOfKin","Name")=SDDEMO("NOK") "RTN","SDESGETREGA",142,0) S SDINFO("Patient","PrimaryNextOfKin","Relationship")=SDDEMO("KREL") "RTN","SDESGETREGA",143,0) S SDINFO("Patient","PrimaryNextOfKin","Phone")=SDDEMO("KPHONE") "RTN","SDESGETREGA",144,0) S SDINFO("Patient","PrimaryNextOfKin","Address","Address")=SDDEMO("KSTREET") "RTN","SDESGETREGA",145,0) S SDINFO("Patient","PrimaryNextOfKin","Address","City")=SDDEMO("KCITY") "RTN","SDESGETREGA",146,0) S SDINFO("Patient","PrimaryNextOfKin","Address","State")=SDDEMO("KSTATE") "RTN","SDESGETREGA",147,0) S SDINFO("Patient","PrimaryNextOfKin","Address","Zip")=SDDEMO("KZIP") "RTN","SDESGETREGA",148,0) S SDINFO("Patient","PrimaryNextOfKin","Address","street2")=SDDEMO("KSTREET2") "RTN","SDESGETREGA",149,0) S SDINFO("Patient","PrimaryyNextOfKin","Address","Street3")=SDDEMO("KSTREET3") "RTN","SDESGETREGA",150,0) S SDINFO("Patient","PrimaryNextOfKin","Address","Zip4")=$G(SDPATARR(2,SDDFN,.2207,"E")) "RTN","SDESGETREGA",151,0) ; "RTN","SDESGETREGA",152,0) ;Secondary Next of Kin Information "RTN","SDESGETREGA",153,0) ; "RTN","SDESGETREGA",154,0) S SDINFO("Patient","SecondaryNextOfKin","Name")=SDDEMO("K2NAME") "RTN","SDESGETREGA",155,0) S SDINFO("Patient","SecondaryNextOfKin","Relationship")=SDDEMO("K2REL") "RTN","SDESGETREGA",156,0) S SDINFO("Patient","SecondaryNextOfKin","Phone")=SDDEMO("K2PHONE") "RTN","SDESGETREGA",157,0) S SDINFO("Patient","SecondaryNextOfKin","Address","Street")=SDDEMO("K2STREET") "RTN","SDESGETREGA",158,0) S SDINFO("Patient","SecondaryNextOfKin","Address","Street2")=SDDEMO("K2STREET2") "RTN","SDESGETREGA",159,0) S SDINFO("Patient","SecondaryNextOfKin","Address","Street3")=SDDEMO("K2STREET3") "RTN","SDESGETREGA",160,0) S SDINFO("Patient","SecondaryNextOfKin","Address","City")=SDDEMO("K2CITY") "RTN","SDESGETREGA",161,0) S SDINFO("Patient","SecondaryNextOfKin","Address","State")=SDDEMO("K2STATE") "RTN","SDESGETREGA",162,0) S SDINFO("Patient","SecondaryNextOfKin","Address","Zip")=SDDEMO("K2ZIP") "RTN","SDESGETREGA",163,0) S SDINFO("Patient","SecondaryNextOfKin","Address","Zip4")=$G(SDPATARR(2,SDDFN,.2203,"E")) "RTN","SDESGETREGA",164,0) ; "RTN","SDESGETREGA",165,0) ; Emergency Contact "RTN","SDESGETREGA",166,0) ; "RTN","SDESGETREGA",167,0) S SDINFO("Patient","EmergencyContact","Name")=$G(SDPATARR(2,SDDFN,.331,"E")) "RTN","SDESGETREGA",168,0) S SDINFO("Patient","EmergencyContact","Relationship")=$G(SDPATARR(2,SDDFN,.332,"E")) "RTN","SDESGETREGA",169,0) S SDINFO("Patient","EmergencyContact","Phone")=$G(SDPATARR(2,SDDFN,.339,"E")) "RTN","SDESGETREGA",170,0) S SDINFO("Patient","EmergencyContact","WorkPhone")=$G(SDPATARR(2,SDDFN,.33011,"E")) "RTN","SDESGETREGA",171,0) S SDINFO("Patient","EmergencyContact","Address","Street")=$G(SDPATARR(2,SDDFN,.333,"E")) "RTN","SDESGETREGA",172,0) S SDINFO("Patient","EmergencyContact","Address","Street2")=$G(SDPATARR(2,SDDFN,.334,"E")) "RTN","SDESGETREGA",173,0) S SDINFO("Patient","EmergencyContact","Address","Street3")=$G(SDPATARR(2,SDDFN,.335,"E")) "RTN","SDESGETREGA",174,0) S SDINFO("Patient","EmergencyContact","Address","City")=$G(SDPATARR(2,SDDFN,.336,"E")) "RTN","SDESGETREGA",175,0) S SDINFO("Patient","EmergencyContact","Address","State")=$G(SDPATARR(2,SDDFN,.337,"E")) "RTN","SDESGETREGA",176,0) S SDINFO("Patient","EmergencyContact","Address","Zip")=$G(SDPATARR(2,SDDFN,.338,"E")) "RTN","SDESGETREGA",177,0) S SDINFO("Patient","EmergencyContact","Address","Zip4")=$G(SDPATARR(2,SDDFN,.2201,"E")) "RTN","SDESGETREGA",178,0) Q "RTN","SDESGETUD") 0^17^B10449662^B9543466 "RTN","SDESGETUD",1,0) SDESGETUD ;ALB/ANU,MGD,TAW - VISTA SCHEDULING RPCS GET USER KEYS AND OPTIONS ; Jan 07, 2022@15:20 "RTN","SDESGETUD",2,0) ;;5.3;Scheduling;**801,805**;Aug 13, 1993;Build 9 "RTN","SDESGETUD",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESGETUD",4,0) ; "RTN","SDESGETUD",5,0) ;Global References Supported by ICR# Type "RTN","SDESGETUD",6,0) ;----------------- ----------------- ---------- "RTN","SDESGETUD",7,0) ; ^TMP($J SACC 2.3.2.5.1 "RTN","SDESGETUD",8,0) ; "RTN","SDESGETUD",9,0) ;External References "RTN","SDESGETUD",10,0) ;------------------- "RTN","SDESGETUD",11,0) ;Reference to $$GETS^DIQ,$$GETS1^DIQ in ICR #2056 "RTN","SDESGETUD",12,0) ;Reference to $$SITE^VASITE in ICR #10112 "RTN","SDESGETUD",13,0) ;Reference to ^%DT in ICR #10003 "RTN","SDESGETUD",14,0) ;Reference to $$FIND1^DIC in ICR #2051 "RTN","SDESGETUD",15,0) ; "RTN","SDESGETUD",16,0) Q ;No Direct Call "RTN","SDESGETUD",17,0) ; "RTN","SDESGETUD",18,0) GETUSRDTL(SDUSRJSON,SDSECID,SDEAS) ;Called from RPC: SDES GET USER PROFILE "RTN","SDESGETUD",19,0) ; This RPC gets User name, Keys and Scheduling Options for a given User. "RTN","SDESGETUD",20,0) ; Input: "RTN","SDESGETUD",21,0) ; SDCLNJSON - [required] - Successs or Error message "RTN","SDESGETUD",22,0) ; SDSECID - [required] - The SECID from the NEW PERSON File #200 "RTN","SDESGETUD",23,0) ; SDEAS - [optional] - Enterprise Appointment Scheduling (EAS) Tracking Number associated to an appointment. "RTN","SDESGETUD",24,0) ; "RTN","SDESGETUD",25,0) N ERRPOP,ERR,ERRMSG,SDECI,SDUSRSREC,SDUSRIEN "RTN","SDESGETUD",26,0) D INIT "RTN","SDESGETUD",27,0) D VALIDATE "RTN","SDESGETUD",28,0) I ERRPOP D BLDJSON Q "RTN","SDESGETUD",29,0) D GETUSRINF "RTN","SDESGETUD",30,0) D BLDJSON "RTN","SDESGETUD",31,0) Q "RTN","SDESGETUD",32,0) ; "RTN","SDESGETUD",33,0) INIT ; initialize values needed "RTN","SDESGETUD",34,0) S SDECI=0 "RTN","SDESGETUD",35,0) S ERR="" "RTN","SDESGETUD",36,0) S ERRPOP=0,ERRMSG="" "RTN","SDESGETUD",37,0) Q "RTN","SDESGETUD",38,0) ; "RTN","SDESGETUD",39,0) VALIDATE ; validate incoming parameters "RTN","SDESGETUD",40,0) I SDSECID="" D ERRLOG^SDESJSON(.SDUSRSREC,130) S ERRPOP=1 Q "RTN","SDESGETUD",41,0) S SDUSRIEN=$$FIND1^DIC(200,,"X",SDSECID,"ASECID",,"SCERR") "RTN","SDESGETUD",42,0) I SDUSRIEN="" D ERRLOG^SDESJSON(.SDUSRSREC,44) S ERRPOP=1 Q "RTN","SDESGETUD",43,0) I '$D(^VA(200,SDUSRIEN,0)) D ERRLOG^SDESJSON(.SDUSRSREC,127) S ERRPOP=1 Q "RTN","SDESGETUD",44,0) S SDEAS=$G(SDEAS,"") "RTN","SDESGETUD",45,0) I $L(SDEAS) S SDEAS=$$EASVALIDATE^SDESUTIL(SDEAS) "RTN","SDESGETUD",46,0) I +SDEAS=-1 D ERRLOG^SDESJSON(.SDUSRSREC,142) S ERRPOP=1 "RTN","SDESGETUD",47,0) Q "RTN","SDESGETUD",48,0) ; "RTN","SDESGETUD",49,0) BLDJSON ; Build JSON format "RTN","SDESGETUD",50,0) D ENCODE^SDESJSON(.SDUSRSREC,.SDUSRJSON,.ERR) "RTN","SDESGETUD",51,0) K SDUSRSREC "RTN","SDESGETUD",52,0) Q "RTN","SDESGETUD",53,0) ; "RTN","SDESGETUD",54,0) GETUSRINF ; Get User Keys and Scheduling Options "RTN","SDESGETUD",55,0) N SDFIELDS,SDDATA,SDMSG,SDX,SDC,SDOPT,SDKEY "RTN","SDESGETUD",56,0) S SDFIELDS=".01;201" "RTN","SDESGETUD",57,0) D GETS^DIQ(200,SDUSRIEN_",",SDFIELDS,"IE","SDDATA","SDMSG") "RTN","SDESGETUD",58,0) S SDECI=SDECI+1 "RTN","SDESGETUD",59,0) S SDUSRSREC("User","Name")=$G(SDDATA(200,SDUSRIEN_",",.01,"E")) ;User Name "RTN","SDESGETUD",60,0) S SDUSRSREC("User","IEN")=SDUSRIEN "RTN","SDESGETUD",61,0) S SDUSRSREC("User","Station ID")=$P($$SITE^VASITE(),"^",3) "RTN","SDESGETUD",62,0) S SDOPT=$G(SDDATA(200,SDUSRIEN_",",201,"E")) "RTN","SDESGETUD",63,0) I $E(SDOPT,1,2)="SD"!$E(SDOPT,1,2)="SC" S SDUSRSREC("User","Primary Menu Option")=SDOPT ;Primary Menu Option "RTN","SDESGETUD",64,0) ; Secondary Options Multiple "RTN","SDESGETUD",65,0) S SDX="",SDC=0 "RTN","SDESGETUD",66,0) S SDFIELDS="203*" "RTN","SDESGETUD",67,0) K SDDATA,SDMSG "RTN","SDESGETUD",68,0) D GETS^DIQ(200,SDUSRIEN_",",SDFIELDS,"E","SDDATA","SDMSG") "RTN","SDESGETUD",69,0) F S SDX=$O(SDDATA(200.03,SDX)) Q:SDX="" D "RTN","SDESGETUD",70,0) . S SDOPT=$G(SDDATA(200.03,SDX,.01,"E")) "RTN","SDESGETUD",71,0) . I (($E(SDOPT,1,2)="SD")!($E(SDOPT,1,2)))="SC" S SDC=SDC+1 S SDUSRSREC("User","Secondary Menu",SDC,"Option")=SDOPT "RTN","SDESGETUD",72,0) ; Security Keys Multiple "RTN","SDESGETUD",73,0) S SDX="",SDC=0 "RTN","SDESGETUD",74,0) S SDFIELDS="51*" "RTN","SDESGETUD",75,0) K SDDATA,SDMSG "RTN","SDESGETUD",76,0) D GETS^DIQ(200,SDUSRIEN_",",SDFIELDS,"E","SDDATA","SDMSG") "RTN","SDESGETUD",77,0) F S SDX=$O(SDDATA(200.051,SDX)) Q:SDX="" D "RTN","SDESGETUD",78,0) . S SDKEY=$G(SDDATA(200.051,SDX,.01,"E")) "RTN","SDESGETUD",79,0) . I (($E(SDKEY,1,2)="SD")!($E(SDKEY,1,2)="SC")) S SDC=SDC+1 S SDUSRSREC("User","Security Key",SDC,"Name")=SDKEY "RTN","SDESGETUD",80,0) I '$D(SDUSRSREC("User")) S SDUSRSREC("User")="" "RTN","SDESGETUD",81,0) Q "RTN","SDESINACTCLINIC") 0^18^B3830394^B3178351 "RTN","SDESINACTCLINIC",1,0) SDESINACTCLINIC ;ALB/ANU,MG - Inactivate Clinic in HOSPITAL LOCATION FILE 44 ;JAN 07, 2022@15:22 "RTN","SDESINACTCLINIC",2,0) ;;5.3;Scheduling;**799,805**;Aug 13, 1993;Build 9 "RTN","SDESINACTCLINIC",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESINACTCLINIC",4,0) ; "RTN","SDESINACTCLINIC",5,0) ; Documented API's and Integration Agreements "RTN","SDESINACTCLINIC",6,0) ; ------------------------------------------- "RTN","SDESINACTCLINIC",7,0) ;Reference to $$GETS^DIQ,$$GETS1^DIQ in ICR #2056 "RTN","SDESINACTCLINIC",8,0) Q "RTN","SDESINACTCLINIC",9,0) ; "RTN","SDESINACTCLINIC",10,0) JSONINACTCLN(SDCINJSON,SDCLINICIEN,SDEAS) ;Inactivate Clinic "RTN","SDESINACTCLINIC",11,0) ;INPUT - SDCLINICIEN (Clinic IEN) "RTN","SDESINACTCLINIC",12,0) ; SDEAS - [optional] Enterprise Appointment Scheduling (EAS) Tracking Number associated to an appointment. "RTN","SDESINACTCLINIC",13,0) ;RETURN PARMETER: "RTN","SDESINACTCLINIC",14,0) ; Status "RTN","SDESINACTCLINIC",15,0) ; "RTN","SDESINACTCLINIC",16,0) N ERRPOP,ERR,ERRMSG "RTN","SDESINACTCLINIC",17,0) D INIT "RTN","SDESINACTCLINIC",18,0) D VALIDATE "RTN","SDESINACTCLINIC",19,0) I ERRPOP D BLDJSON Q "RTN","SDESINACTCLINIC",20,0) D BLDCINREC "RTN","SDESINACTCLINIC",21,0) D BLDJSON "RTN","SDESINACTCLINIC",22,0) Q "RTN","SDESINACTCLINIC",23,0) ; "RTN","SDESINACTCLINIC",24,0) INIT ; initialize values needed "RTN","SDESINACTCLINIC",25,0) S ERR="" "RTN","SDESINACTCLINIC",26,0) S ERRPOP=0,ERRMSG="" "RTN","SDESINACTCLINIC",27,0) Q "RTN","SDESINACTCLINIC",28,0) ; "RTN","SDESINACTCLINIC",29,0) VALIDATE ; validate incoming parameters "RTN","SDESINACTCLINIC",30,0) I $$GET1^DIQ(44,SDCLINICIEN,.01)="" D "RTN","SDESINACTCLINIC",31,0) . ;create error message - Clinic Name/Clinic IEN not found "RTN","SDESINACTCLINIC",32,0) . D ERRLOG^SDESJSON(.SDCINREC,80) "RTN","SDESINACTCLINIC",33,0) . S ERRPOP=1 "RTN","SDESINACTCLINIC",34,0) S SDEAS=$G(SDEAS,"") "RTN","SDESINACTCLINIC",35,0) I $L(SDEAS) S SDEAS=$$EASVALIDATE^SDESUTIL(SDEAS) "RTN","SDESINACTCLINIC",36,0) I +SDEAS=-1 D ERRLOG^SDESJSON(.SDCINREC,142) S ERRPOP=1 "RTN","SDESINACTCLINIC",37,0) Q "RTN","SDESINACTCLINIC",38,0) ; "RTN","SDESINACTCLINIC",39,0) BLDJSON ; "RTN","SDESINACTCLINIC",40,0) D ENCODE^SDESJSON(.SDCINREC,.SDCINJSON,.ERR) "RTN","SDESINACTCLINIC",41,0) K SDCINREC "RTN","SDESINACTCLINIC",42,0) Q "RTN","SDESINACTCLINIC",43,0) ; "RTN","SDESINACTCLINIC",44,0) BLDCINREC ;Inactivate Clinic "RTN","SDESINACTCLINIC",45,0) ; "RTN","SDESINACTCLINIC",46,0) N SDERR,SDFDA,SDCLNNAME "RTN","SDESINACTCLINIC",47,0) S SDCLNNAME="" "RTN","SDESINACTCLINIC",48,0) S SDCLNNAME=$$GET1^DIQ(44,SDCLINICIEN,.01) "RTN","SDESINACTCLINIC",49,0) I $E(SDCLNNAME,1,2)'="ZZ" S SDFDA(44,SDCLINICIEN_",",.01)="ZZ"_$E($$GET1^DIQ(44,SDCLINICIEN,.01),1,28) "RTN","SDESINACTCLINIC",50,0) S SDFDA(44,SDCLINICIEN_",",2505)=DT "RTN","SDESINACTCLINIC",51,0) D UPDATE^DIE("","SDFDA","","SDERR") "RTN","SDESINACTCLINIC",52,0) I $G(SDERR) D ERRLOG^SDESJSON(.SDCINREC,81) Q "RTN","SDESINACTCLINIC",53,0) S SDCINREC("Success")="Clinic is successfully inactivated." "RTN","SDESINACTCLINIC",54,0) Q "RTN","SDESINACTCLINIC",55,0) ; "RTN","SDESJSON") 0^22^B69391825^B68122053 "RTN","SDESJSON",1,0) SDESJSON ;ALB/MGD,ANU,TAW,KML - VISTA SCHEDULING JSON UTILITIES ;Jan 05, 2022 "RTN","SDESJSON",2,0) ;;5.3;Scheduling;**788,794,797,799,800,801,803,805**;Aug 13, 1993;Build 9;Build 2 "RTN","SDESJSON",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESJSON",4,0) Q "RTN","SDESJSON",5,0) ; This routine documents the entry points for the new ??? GUI. "RTN","SDESJSON",6,0) ; "RTN","SDESJSON",7,0) ENCODE(SDESINP,SDESOUT,SDESERR) ; "RTN","SDESJSON",8,0) ; Input: SDESINP = Required: Properly formatted input array to convert to JSON "RTN","SDESJSON",9,0) ; SDESOUT = Required: Name of string to return to Broker "RTN","SDESJSON",10,0) ; SDESERR = Optional: Name of string for error messages. "RTN","SDESJSON",11,0) ; Output: "RTN","SDESJSON",12,0) ; SDESOUT = JSON formatted string "RTN","SDESJSON",13,0) ; SDESERR = Still under development by Kernel "RTN","SDESJSON",14,0) ; "RTN","SDESJSON",15,0) ; Validate Input Parameters "RTN","SDESJSON",16,0) I '$D(SDESINP) D ERRLOG(.SDESINP,52,"Input Data Required.") "RTN","SDESJSON",17,0) D ENCODE^XLFJSON("SDESINP","SDESOUT","SDESERR") "RTN","SDESJSON",18,0) Q "RTN","SDESJSON",19,0) ; "RTN","SDESJSON",20,0) ERRLOG(SDESIN,SDESERRNUM,SDESOPTMSG,SDESRINFO) ; "RTN","SDESJSON",21,0) ; Input: SDESIN = Required: Array name with related data to be logged "RTN","SDESJSON",22,0) ; SDESERRNUM = Required: Error # to return "RTN","SDESJSON",23,0) ; SDESOPTMSG = Optional message string to append to existing error in table "RTN","SDESJSON",24,0) ; SDESRINFO = Optional message string with Routine^Tag info to append to existing error in table "RTN","SDESJSON",25,0) N SDESCNT "RTN","SDESJSON",26,0) S SDESOPTMSG=$G(SDESOPTMSG),SDESRINFO=$G(SDESRINFO) "RTN","SDESJSON",27,0) I '$D(SDESIN) S SDESIN("Error",0)="" "RTN","SDESJSON",28,0) S SDESERRNUM=$G(SDESERRNUM,0) "RTN","SDESJSON",29,0) S SDESCNT=$O(SDESIN("Error",""),-1)+1 "RTN","SDESJSON",30,0) S SDESIN("Error",SDESCNT)=$$ERRLKUP(SDESERRNUM,SDESOPTMSG,SDESRINFO) "RTN","SDESJSON",31,0) K SDESIN("Error",0) "RTN","SDESJSON",32,0) Q "RTN","SDESJSON",33,0) ; "RTN","SDESJSON",34,0) ERRLKUP(SDNUM,SDESOPTMSG,SDESRINFO) ; "RTN","SDESJSON",35,0) N SDERRMSG "RTN","SDESJSON",36,0) S SDERRMSG=$T(ERRTXT+SDNUM+1) "RTN","SDESJSON",37,0) S SDERRMSG=$P(SDERRMSG,U,2) "RTN","SDESJSON",38,0) I SDERRMSG="" S SDERRMSG="Invalid Error Number." "RTN","SDESJSON",39,0) I $G(SDESOPTMSG)'="" D "RTN","SDESJSON",40,0) . ;Strip off $C(30) and $c(31) that are part of non JSON error text "RTN","SDESJSON",41,0) . S SDESOPTMSG=$$CTRL^XMXUTIL1(SDESOPTMSG) "RTN","SDESJSON",42,0) . I $E(SDERRMSG,$L(SDERRMSG))="." S SDERRMSG=$E(SDERRMSG,1,$L(SDERRMSG)-1) "RTN","SDESJSON",43,0) . S SDERRMSG=SDERRMSG_": "_SDESOPTMSG "RTN","SDESJSON",44,0) I $E(SDERRMSG,$L(SDERRMSG))'="." S SDERRMSG=SDERRMSG_"." "RTN","SDESJSON",45,0) ; Add optional Debug info "RTN","SDESJSON",46,0) I SDESRINFO'="" S SDERRMSG=SDERRMSG_" Debug: "_SDESRINFO "RTN","SDESJSON",47,0) Q SDERRMSG "RTN","SDESJSON",48,0) ; "RTN","SDESJSON",49,0) ; Standard Error Messages. Add additional errors as needed. "RTN","SDESJSON",50,0) ; Limit new error messages to 30 characters. "RTN","SDESJSON",51,0) ERRTXT ; "RTN","SDESJSON",52,0) ;;0^No Error Number Provided "RTN","SDESJSON",53,0) ;;1^Missing Patient ID "RTN","SDESJSON",54,0) ;;2^Invalid Patient ID "RTN","SDESJSON",55,0) ;;3^Missing Appointment Request ID "RTN","SDESJSON",56,0) ;;4^Invalid Appointment Request ID "RTN","SDESJSON",57,0) ;;5^Missing Consult Request ID "RTN","SDESJSON",58,0) ;;6^Invalid Consult Request ID "RTN","SDESJSON",59,0) ;;7^No Recalls for this patient "RTN","SDESJSON",60,0) ;;8^No Consults for patient "RTN","SDESJSON",61,0) ;;9^Missing begin date "RTN","SDESJSON",62,0) ;;10^Missing end date "RTN","SDESJSON",63,0) ;;11^Invalid begin date "RTN","SDESJSON",64,0) ;;12^Invalid end date "RTN","SDESJSON",65,0) ;;13^End date prior to begin date "RTN","SDESJSON",66,0) ;;14^Missing Appointment ID "RTN","SDESJSON",67,0) ;;15^Invalid Appointment ID "RTN","SDESJSON",68,0) ;;16^Missing Recall ID "RTN","SDESJSON",69,0) ;;17^Invalid Recall ID "RTN","SDESJSON",70,0) ;;18^Missing Clinic ID "RTN","SDESJSON",71,0) ;;19^Invalid Clinic ID "RTN","SDESJSON",72,0) ;;20^Clinic not defined "RTN","SDESJSON",73,0) ;;21^Missing Check In Date "RTN","SDESJSON",74,0) ;;22^Invalid Check In Date "RTN","SDESJSON",75,0) ;;23^Missing Check Out Date "RTN","SDESJSON",76,0) ;;24^Invalid Check Out Date "RTN","SDESJSON",77,0) ;;25^Missing begin date/time "RTN","SDESJSON",78,0) ;;26^Missing end date/time "RTN","SDESJSON",79,0) ;;27^Invalid begin date/time "RTN","SDESJSON",80,0) ;;28^Invalid end date/time "RTN","SDESJSON",81,0) ;;29^End date/time prior to begin date/time "RTN","SDESJSON",82,0) ;;30^No status match found "RTN","SDESJSON",83,0) ;;31^Appointment status is cancelled "RTN","SDESJSON",84,0) ;;32^Duplicate status entry "RTN","SDESJSON",85,0) ;;33^No statuses available "RTN","SDESJSON",86,0) ;;34^Status not created "RTN","SDESJSON",87,0) ;;35^Status not updated "RTN","SDESJSON",88,0) ;;36^Status not set "RTN","SDESJSON",89,0) ;;37^Status not found "RTN","SDESJSON",90,0) ;;38^No status sent "RTN","SDESJSON",91,0) ;;39^Status is less than 3 characters or greater than 30 characters "RTN","SDESJSON",92,0) ;;40^Missing check-in step ID "RTN","SDESJSON",93,0) ;;41^Status must contain characters "RTN","SDESJSON",94,0) ;;42^Missing Disposition "RTN","SDESJSON",95,0) ;;43^Invalid Disposition "RTN","SDESJSON",96,0) ;;44^Invalid user "RTN","SDESJSON",97,0) ;;45^Missing date "RTN","SDESJSON",98,0) ;;46^Invalid date "RTN","SDESJSON",99,0) ;;47^Failed create/update "RTN","SDESJSON",100,0) ;;48^Missing Origination date/time "RTN","SDESJSON",101,0) ;;49^Invalid Origination date/time "RTN","SDESJSON",102,0) ;;50^Missing Clinic name "RTN","SDESJSON",103,0) ;;51^Invalid Clinic Name "RTN","SDESJSON",104,0) ;;52^Error "RTN","SDESJSON",105,0) ;;53^Missing Provider ID "RTN","SDESJSON",106,0) ;;54^Invalid Provider ID "RTN","SDESJSON",107,0) ;;55^Invalid Disposition Date "RTN","SDESJSON",108,0) ;;56^Missing Disposition Date "RTN","SDESJSON",109,0) ;;57^Missing Desired Date Of Appointment "RTN","SDESJSON",110,0) ;;58^Invalid Desired Date Of Appointment "RTN","SDESJSON",111,0) ;;59^Desired Date of Appt can not be in the past "RTN","SDESJSON",112,0) ;;60^Missing Appointment Request Type "RTN","SDESJSON",113,0) ;;61^Invalid Appointment Request Type "RTN","SDESJSON",114,0) ;;62^Missing Requested By "RTN","SDESJSON",115,0) ;;63^Clinic Name or Clinic Stop is required "RTN","SDESJSON",116,0) ;;64^Search String length is less than 2 characters "RTN","SDESJSON",117,0) ;;65^No Providers found that match Search String "RTN","SDESJSON",118,0) ;;66^Patient IEN cannot be blank "RTN","SDESJSON",119,0) ;;67^Clinic IEN cannot be blank "RTN","SDESJSON",120,0) ;;68^No VVS information found "RTN","SDESJSON",121,0) ;;69^Missing Clinic Resource ID "RTN","SDESJSON",122,0) ;;70^Invalid Clinic Resource ID "RTN","SDESJSON",123,0) ;;71^Date can not be in the past "RTN","SDESJSON",124,0) ;;72^Date can not be in the future "RTN","SDESJSON",125,0) ;;73^Missing Clinic Resource "RTN","SDESJSON",126,0) ;;74^Current appt time span is greater than new appt time span "RTN","SDESJSON",127,0) ;;75^No available appointment slots "RTN","SDESJSON",128,0) ;;76^Missing Appointment date/time "RTN","SDESJSON",129,0) ;;77^Invalid Appointment date/time "RTN","SDESJSON",130,0) ;;78^Appointment must be in a scheduled state "RTN","SDESJSON",131,0) ;;79^Slots for Block & Move not identifiable "RTN","SDESJSON",132,0) ;;80^Clinic Name/Clinic IEN not found "RTN","SDESJSON",133,0) ;;81^Error in inactivating Clinic "RTN","SDESJSON",134,0) ;;82^Invalid Letter "RTN","SDESJSON",135,0) ;;83^Invalid Default appointment type "RTN","SDESJSON",136,0) ;;84^Missing Diagnosis code "RTN","SDESJSON",137,0) ;;85^Invalid Diagnosis code "RTN","SDESJSON",138,0) ;;86^Invalid Privileged user "RTN","SDESJSON",139,0) ;;87^Invalid Clinic meets at this facility "RTN","SDESJSON",140,0) ;;88^Missing Allow direct patient scheduling "RTN","SDESJSON",141,0) ;;89^Invalid Allow direct patient scheduling "RTN","SDESJSON",142,0) ;;90^Missing Display clinic appt to patient "RTN","SDESJSON",143,0) ;;91^Invalid Display clinic appt to patient "RTN","SDESJSON",144,0) ;;92^Missing Service "RTN","SDESJSON",145,0) ;;93^Invalid Service "RTN","SDESJSON",146,0) ;;94^Missing Non-count clinic "RTN","SDESJSON",147,0) ;;95^Invalid Non-count clinic "RTN","SDESJSON",148,0) ;;96^Missing Division "RTN","SDESJSON",149,0) ;;97^Invalid Division "RTN","SDESJSON",150,0) ;;98^Missing Stop Code "RTN","SDESJSON",151,0) ;;99^Invalid Stop Code "RTN","SDESJSON",152,0) ;;100^Invalid Require action profile "RTN","SDESJSON",153,0) ;;101^Invalid Ask for check in/out time "RTN","SDESJSON",154,0) ;;102^Invalid Default to PC practitioner "RTN","SDESJSON",155,0) ;;103^Invalid Workload validation at checkout "RTN","SDESJSON",156,0) ;;104^Missing Allowable consecutive no-shows "RTN","SDESJSON",157,0) ;;105^Invalid Allowable consecutive no-shows "RTN","SDESJSON",158,0) ;;106^Missing Max number days for future booking "RTN","SDESJSON",159,0) ;;107^Invalid Max number days for future booking "RTN","SDESJSON",160,0) ;;108^Missing Credit stop code "RTN","SDESJSON",161,0) ;;109^Invalid Credit stop code "RTN","SDESJSON",162,0) ;;110^Invalid Principal clinic "RTN","SDESJSON",163,0) ;;111^Missing Overbook/day max "RTN","SDESJSON",164,0) ;;112^Invalid Overbook/day max "RTN","SDESJSON",165,0) ;;113^Invalid E-Checkin "RTN","SDESJSON",166,0) ;;114^Invalid Pre-Checkin "RTN","SDESJSON",167,0) ;;115^Missing Length of appointment "RTN","SDESJSON",168,0) ;;116^Invalid Length of appointment "RTN","SDESJSON",169,0) ;;117^Missing Display increments per hour "RTN","SDESJSON",170,0) ;;118^Invalid Display increments per hour "RTN","SDESJSON",171,0) ;;119^Invalid Hour clinic display begins "RTN","SDESJSON",172,0) ;;120^Current default provider must be removed prior to setting new default "RTN","SDESJSON",173,0) ;;121^Current default diagnosis must be removed prior to setting new default "RTN","SDESJSON",174,0) ;;122^Invalid Administer inpatient meds "RTN","SDESJSON",175,0) ;;123^Invalid Require x-ray films "RTN","SDESJSON",176,0) ;;124^Can't Block & Move "RTN","SDESJSON",177,0) ;;125^Invalid number of Appointment slots "RTN","SDESJSON",178,0) ;;126^Availability is not defined for this clinic "RTN","SDESJSON",179,0) ;;127^Missing User "RTN","SDESJSON",180,0) ;;128^Missing Cancellation Reason "RTN","SDESJSON",181,0) ;;129^Invalid Cancellation Reason "RTN","SDESJSON",182,0) ;;130^Missing SECID "RTN","SDESJSON",183,0) ;;131^Invalid Recall Reminders Provider ID "RTN","SDESJSON",184,0) ;;132^Invalid Recall Reminders Appointment Type ID "RTN","SDESJSON",185,0) ;;133^Invalid Recall Date "RTN","SDESJSON",186,0) ;;134^Error updating RECALL REMINDERS file "RTN","SDESJSON",187,0) ;;135^The provider assigned to this recall reminder is assigned a security key which you do not have. Please contact your recall coordinator. "RTN","SDESJSON",188,0) ;;136^Error deleting RECALL REMINDERS entry "RTN","SDESJSON",189,0) ;;137^Missing Recall Reminders Provider ID "RTN","SDESJSON",190,0) ;;138^Invalid Fasting Value "RTN","SDESJSON",191,0) ;;139^Missing Recall Reminders Appointment Type ID "RTN","SDESJSON",192,0) ;;140^Missing Recall Date "RTN","SDESJSON",193,0) ;;141^Missing Fasting value "RTN","SDESJSON",194,0) ;;142^Invalid EAS Tracking Number "RTN","SDESJSON",195,0) ;;143^Invalid Patient Eligibility "RTN","SDESJSON",196,0) Q "RTN","SDESPATRPC") 0^19^B6681657^B6129180 "RTN","SDESPATRPC",1,0) SDESPATRPC ;ALB/TAW,MGD - PATIENT RPCS ;Jan 21, 2022 "RTN","SDESPATRPC",2,0) ;;5.3;Scheduling;**792,804,805**;Aug 13, 1993;Build 9 "RTN","SDESPATRPC",3,0) ; "RTN","SDESPATRPC",4,0) ; IRC # "RTN","SDESPATRPC",5,0) ; "RTN","SDESPATRPC",6,0) Q "RTN","SDESPATRPC",7,0) INSURVERIFYREQ(RETURN,DFN,SDEAS) ; "RTN","SDESPATRPC",8,0) N POP,SDPAT,FLG,SDPAT "RTN","SDESPATRPC",9,0) S (FLG,POP)=0 "RTN","SDESPATRPC",10,0) I $G(DFN)="" S POP=1 D ERRLOG^SDESJSON(.SDPAT,1) "RTN","SDESPATRPC",11,0) I $G(DFN)'="",'$D(^DPT(DFN,0)) S POP=1 D ERRLOG^SDESJSON(.SDPAT,2) "RTN","SDESPATRPC",12,0) S SDEAS=$G(SDEAS,"") "RTN","SDESPATRPC",13,0) I $L(SDEAS) S SDEAS=$$EASVALIDATE^SDESUTIL(SDEAS) "RTN","SDESPATRPC",14,0) I +SDEAS=-1 S POP=1 D ERRLOG^SDESJSON(.SDPAT,142) "RTN","SDESPATRPC",15,0) I 'POP D NEEDVERIFY(.FLG,DFN,180,90) S SDPAT("NeedInsuranceVerification","YesNo")=FLG "RTN","SDESPATRPC",16,0) D BUILDER "RTN","SDESPATRPC",17,0) Q "RTN","SDESPATRPC",18,0) NEEDVERIFY(NEEDVERIFY,DFN,LASTVERFWINDOW,NOCOVWINDOW) ; "RTN","SDESPATRPC",19,0) ; LASTVERFWINDOW - How many days in the past to look for a Last Verified Date "RTN","SDESPATRPC",20,0) ; NOCOVWINDOW - How many days in the past to look for a No Coverage Date "RTN","SDESPATRPC",21,0) ; "RTN","SDESPATRPC",22,0) ; Return "RTN","SDESPATRPC",23,0) ; 1 = Verification needed (Default) "RTN","SDESPATRPC",24,0) ; 0 = Has active insurance or verification started "RTN","SDESPATRPC",25,0) N IENS,SDMSG,PATDATA,BILLPATDATA,NOCOVDT,COVBYHI,SUBIEN,XDT,TMPDT "RTN","SDESPATRPC",26,0) S NEEDVERIFY=1,SUBIEN="" "RTN","SDESPATRPC",27,0) ;Check the Insurance Verification Processor file "RTN","SDESPATRPC",28,0) ; The assumption is that once verification is complete all "RTN","SDESPATRPC",29,0) ; references to the patient are removed. "RTN","SDESPATRPC",30,0) I $D(^IBA(355.33,"C",DFN)) S NEEDVERIFY=0 Q "RTN","SDESPATRPC",31,0) ;Check the Insurance Types (sub file .321) of the Patient File (#2) "RTN","SDESPATRPC",32,0) S SUBIEN=0 "RTN","SDESPATRPC",33,0) F S SUBIEN=$O(^DPT(DFN,.312,SUBIEN)) Q:SUBIEN=""!(NEEDVERIFY=0)!('SUBIEN) D "RTN","SDESPATRPC",34,0) .S IENS=SUBIEN_","_DFN_"," "RTN","SDESPATRPC",35,0) .K PATDATA "RTN","SDESPATRPC",36,0) .D GETS^DIQ(2.312,IENS,"1.03;3","I","PATDATA","SDMSG") "RTN","SDESPATRPC",37,0) .;Check the Insurance Expiration Data is active "RTN","SDESPATRPC",38,0) .S TMPDT=PATDATA(2.312,IENS,3,"I") "RTN","SDESPATRPC",39,0) .I +TMPDT,(+TMPDT120)) APPTLEN="" "RTN","SDESUPDRECREQ",62,0) S RECPPDT=$G(RECPPDT) S RECPPDT=$$NETTOFM^SDECDATE(RECPPDT,"N","N") I RECPPDT=-1 S RECPPDT="" "RTN","SDESUPDRECREQ",63,0) S DAPTDT=$G(DAPTDT) S DAPTDT=$$NETTOFM^SDECDATE(DAPTDT,"N","N") I DAPTDT=-1 S DAPTDT="" "RTN","SDESUPDRECREQ",64,0) S USERIEN=$G(USERIEN) I (USERIEN="")!('$D(^VA(200,+USERIEN))) S USERIEN=DUZ "RTN","SDESUPDRECREQ",65,0) S SECPDT=$G(SECPDT) I SECPDT'="" S SECPDT=$$NETTOFM^SDECDATE(SECPDT,"N","N") I SECPDT=-1 S SECPDT="" ; "RTN","SDESUPDRECREQ",66,0) S EAS=$G(EAS) "RTN","SDESUPDRECREQ",67,0) S SDCMT=$TR($G(SDCMT),"^"," ") "RTN","SDESUPDRECREQ",68,0) Q "RTN","SDESUPDRECREQ",69,0) ; "RTN","SDESUPDRECREQ",70,0) VALIDATE ;validate input paramters "RTN","SDESUPDRECREQ",71,0) N NUM "RTN","SDESUPDRECREQ",72,0) I $G(RECALLIEN)="" S POP=1,NUM=16 D CALLERROR Q "RTN","SDESUPDRECREQ",73,0) I (RECALLIEN'="+1")&('$D(^SD(403.5,+RECALLIEN))) S POP=1,NUM=17 D CALLERROR Q "RTN","SDESUPDRECREQ",74,0) I '+$G(DFN) S POP=1,NUM=1 D CALLERROR Q "RTN","SDESUPDRECREQ",75,0) I '$D(^DPT(+DFN,0)) S POP=1,NUM=2 D CALLERROR Q "RTN","SDESUPDRECREQ",76,0) S FASTING=$G(FASTING) "RTN","SDESUPDRECREQ",77,0) I FASTING="" S POP=1,NUM=141 D CALLERROR Q "RTN","SDESUPDRECREQ",78,0) S FASTING=$S($$UP^XLFSTR(FASTING)="FASTING":"f",$$UP^XLFSTR(FASTING)="NON-FASTING":"n",$$UP^XLFSTR(FASTING)="F":"f",$$UP^XLFSTR(FASTING)="N":"n",FASTING="@":"@",1:138) "RTN","SDESUPDRECREQ",79,0) I FASTING=138 S POP=1,NUM=138 D CALLERROR "RTN","SDESUPDRECREQ",80,0) Q:POP "RTN","SDESUPDRECREQ",81,0) S APPTP=$G(APPTP) I '(+APPTP) s POP=1,NUM=139 D CALLERROR Q "RTN","SDESUPDRECREQ",82,0) I '$D(^SD(403.51,+APPTP)) S POP=1,NUM=132 D CALLERROR Q "RTN","SDESUPDRECREQ",83,0) ;check provider (required) "RTN","SDESUPDRECREQ",84,0) I '+$G(RRPROVIEN) S POP=1,NUM=137 D CALLERROR Q "RTN","SDESUPDRECREQ",85,0) I +RRPROVIEN I '$D(^SD(403.54,+RRPROVIEN)) S POP=1,NUM=131 D CALLERROR Q "RTN","SDESUPDRECREQ",86,0) ;check that user has the correct security key "RTN","SDESUPDRECREQ",87,0) S NUM=$$KEY(RECALLIEN) I NUM S POP=1 D CALLERROR Q "RTN","SDESUPDRECREQ",88,0) ;check Clinic (required) "RTN","SDESUPDRECREQ",89,0) S CLINIEN=$G(CLINIEN) "RTN","SDESUPDRECREQ",90,0) I '+CLINIEN S POP=1,NUM=18 D CALLERROR Q "RTN","SDESUPDRECREQ",91,0) I +CLINIEN I '$D(^SC(+CLINIEN)) S POP=1,NUM=19 D CALLERROR Q "RTN","SDESUPDRECREQ",92,0) ;check Recall Date (required) "RTN","SDESUPDRECREQ",93,0) S DATE=$G(DATE) I DATE="" S POP=1,NUM=140 D CALLERROR Q "RTN","SDESUPDRECREQ",94,0) S DATE=$$NETTOFM^SDECDATE(DATE,"N","N") I DATE=-1 S POP=1,NUM=133 D CALLERROR Q "RTN","SDESUPDRECREQ",95,0) S SDENTDT=$G(SDENTDT) "RTN","SDESUPDRECREQ",96,0) I (SDCREATE)&($G(SDENTDT)'="") S SDENTDT=$$NETTOFM^SDECDATE(SDENTDT,"N","N") "RTN","SDESUPDRECREQ",97,0) I (SDENTDT=-1)!(SDENTDT="") S SDENTDT=DT ; "RTN","SDESUPDRECREQ",98,0) ;validate EAS "RTN","SDESUPDRECREQ",99,0) I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL(EAS) "RTN","SDESUPDRECREQ",100,0) I +EAS=-1 S POP=1,NUM=142 D CALLERROR "RTN","SDESUPDRECREQ",101,0) Q "RTN","SDESUPDRECREQ",102,0) ; "RTN","SDESUPDRECREQ",103,0) CALLERROR ;calls json error logic if error encountered "RTN","SDESUPDRECREQ",104,0) D ERRLOG^SDESJSON(.SDRECREQ,NUM) "RTN","SDESUPDRECREQ",105,0) Q "RTN","SDESUPDRECREQ",106,0) ; "RTN","SDESUPDRECREQ",107,0) BLDREC ;build and file record "RTN","SDESUPDRECREQ",108,0) S SDFDA=$NA(SDFDA(403.5,RECALLIEN_",")) ;recall "RTN","SDESUPDRECREQ",109,0) S SDFDA(403.5,RECALLIEN_",",.01)=DFN "RTN","SDESUPDRECREQ",110,0) S:$G(ACCNO)'="" SDFDA(403.5,RECALLIEN_",",2)=$E(ACCNO,1,25) "RTN","SDESUPDRECREQ",111,0) S:SDCMT'="" SDFDA(403.5,RECALLIEN_",",2.5)=$E(SDCMT,1,80) "RTN","SDESUPDRECREQ",112,0) S SDFDA(403.5,RECALLIEN_",",2.6)=FASTING "RTN","SDESUPDRECREQ",113,0) S SDFDA(403.5,RECALLIEN_",",3)=APPTP "RTN","SDESUPDRECREQ",114,0) S SDFDA(403.5,RECALLIEN_",",4)=RRPROVIEN "RTN","SDESUPDRECREQ",115,0) S SDFDA(403.5,RECALLIEN_",",4.5)=CLINIEN "RTN","SDESUPDRECREQ",116,0) S:APPTLEN'="" SDFDA(403.5,RECALLIEN_",",4.7)=APPTLEN "RTN","SDESUPDRECREQ",117,0) S SDFDA(403.5,RECALLIEN_",",5)=DATE "RTN","SDESUPDRECREQ",118,0) S:RECPPDT'="" SDFDA(403.5,RECALLIEN_",",5.5)=RECPPDT "RTN","SDESUPDRECREQ",119,0) S:DAPTDT'="" SDFDA(403.5,RECALLIEN_",",6)=DAPTDT "RTN","SDESUPDRECREQ",120,0) S SDFDA(403.5,RECALLIEN_",",7)=USERIEN "RTN","SDESUPDRECREQ",121,0) S:SDCREATE SDFDA(403.5,RECALLIEN_",",7.5)=SDENTDT ;only add if creating new record, cannot edit "RTN","SDESUPDRECREQ",122,0) S:SECPDT'="" SDFDA(403.5,RECALLIEN_",",8)=SECPDT "RTN","SDESUPDRECREQ",123,0) S:EAS'="" SDFDA(403.5,RECALLIEN_",",100)=EAS "RTN","SDESUPDRECREQ",124,0) Q "RTN","SDESUPDRECREQ",125,0) ; "RTN","SDESUPDRECREQ",126,0) BLDJSON ;Convert data to JSON "RTN","SDESUPDRECREQ",127,0) N JSONERR "RTN","SDESUPDRECREQ",128,0) S JSONERR="" "RTN","SDESUPDRECREQ",129,0) D ENCODE^SDESJSON(.SDRECREQ,.RETN,.JSONERR) "RTN","SDESUPDRECREQ",130,0) Q "RTN","SDESUPDRECREQ",131,0) ; "RTN","SDESUPDRECREQ",132,0) KEY(RECALLIEN) ;check that user has the correct SECURITY KEY "RTN","SDESUPDRECREQ",133,0) ;INPUT: "RTN","SDESUPDRECREQ",134,0) ; RECALLIEN - Pointer to RECALL REMINDERS file 403.5 "RTN","SDESUPDRECREQ",135,0) ;RETURN "RTN","SDESUPDRECREQ",136,0) ; 0=User has the correct SECURITY KEY "RTN","SDESUPDRECREQ",137,0) ; 135=error number - user does not have correct security keys "RTN","SDESUPDRECREQ",138,0) N KEY,KY,RET,SDPRV,SDFLAG "RTN","SDESUPDRECREQ",139,0) S RET=135 "RTN","SDESUPDRECREQ",140,0) S (SDPRV,KEY,SDFLAG)="" S SDPRV=$P($G(^SD(403.5,+RECALLIEN,0)),U,5) D "RTN","SDESUPDRECREQ",141,0) .I SDPRV="" S RET=0 "RTN","SDESUPDRECREQ",142,0) .I SDPRV'="" S KEY=$P($G(^SD(403.54,SDPRV,0)),U,7) D "RTN","SDESUPDRECREQ",143,0) ..I KEY="" S RET=0 Q "RTN","SDESUPDRECREQ",144,0) ..N VALUE "RTN","SDESUPDRECREQ",145,0) ..S VALUE=$$LKUP^XPDKEY(KEY) K KY D OWNSKEY^XUSRB(.KY,VALUE,DUZ) "RTN","SDESUPDRECREQ",146,0) ..I $G(KY(0))'=0 S RET=0 "RTN","SDESUPDRECREQ",147,0) Q RET "RTN","SDESUPDRECREQ",148,0) ; "RTN","SDESUTIL") 0^29^B15644745^B941046 "RTN","SDESUTIL",1,0) SDESUTIL ;ALB/MGD/TAW - SDES Utilities ;Jan 7, 2022 "RTN","SDESUTIL",2,0) ;;5.3;Scheduling;**801,804,805**;Aug 13, 1993;Build 9 "RTN","SDESUTIL",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESUTIL",4,0) ; "RTN","SDESUTIL",5,0) ; ICR "RTN","SDESUTIL",6,0) ; Reference to ^DIC(4, in #2251 "RTN","SDESUTIL",7,0) ; Reference to ^XTV(8989.3,1,XUS in #1518 "RTN","SDESUTIL",8,0) Q "RTN","SDESUTIL",9,0) ; "RTN","SDESUTIL",10,0) PADCLTIME(TIME) ; "RTN","SDESUTIL",11,0) ; TIME - Time to Pad "RTN","SDESUTIL",12,0) S TIME=$S($G(TIME)'="":TIME,1:8) "RTN","SDESUTIL",13,0) I TIME'?1.2N Q -1 "RTN","SDESUTIL",14,0) S TIME=TIME_"00" "RTN","SDESUTIL",15,0) Q TIME "RTN","SDESUTIL",16,0) ; "RTN","SDESUTIL",17,0) PADFMTIME(TIME) ; "RTN","SDESUTIL",18,0) ; TIME - Time to Pad "RTN","SDESUTIL",19,0) I TIME'?1.4N Q -1 "RTN","SDESUTIL",20,0) S TIME=$E(TIME_"0000",1,4) "RTN","SDESUTIL",21,0) Q TIME "RTN","SDESUTIL",22,0) ; "RTN","SDESUTIL",23,0) PADLENGTH(STRING,CHAR,LENGTH,WHERE) ; "RTN","SDESUTIL",24,0) N PAD,PADST "RTN","SDESUTIL",25,0) I $L(STRING)'40 S SDEAS="-1^EAS Greater Than 40 Characters" "RTN","SDESUTIL",36,0) Q SDEAS "RTN","SDESUTIL",37,0) ; "RTN","SDESUTIL",38,0) ISDATEDST(DATE) ;Does this date use Daylight Savings "RTN","SDESUTIL",39,0) ; DATE - FM format "RTN","SDESUTIL",40,0) ; Return 1 = DATE is considered DST. "RTN","SDESUTIL",41,0) ; 0 = DATE is not DST "RTN","SDESUTIL",42,0) ; -1 = DATE is not FM format "RTN","SDESUTIL",43,0) N YR "RTN","SDESUTIL",44,0) I '$$VALIDFMFORMAT^SDECDATE(DATE) Q -1 "RTN","SDESUTIL",45,0) S YR=$E(DATE,2,3) "RTN","SDESUTIL",46,0) I DATE<$$DSTSTART(YR) Q 0 "RTN","SDESUTIL",47,0) I DATE>$$DSTEND(YR) Q 0 "RTN","SDESUTIL",48,0) Q 1 "RTN","SDESUTIL",49,0) DSTSTART(YR) ;Daylight Savings start date "RTN","SDESUTIL",50,0) ; YR - 2 digit year "RTN","SDESUTIL",51,0) ; Return is the FM date for the FIRST day of DST "RTN","SDESUTIL",52,0) N DSTMONTH,DOW,DSTDT,SUNDAY "RTN","SDESUTIL",53,0) S DSTMONTH="0301" ;March "RTN","SDESUTIL",54,0) S SUNDAY=2 ;second Sunday "RTN","SDESUTIL",55,0) S YR=$G(YR) "RTN","SDESUTIL",56,0) I YR="" S DSTDT=$E(DT,1,3)_DSTMONTH "RTN","SDESUTIL",57,0) E S DSTDT=$E(DT)_YR_DSTMONTH "RTN","SDESUTIL",58,0) S DOW=$$DOW^XLFDT(DSTDT,1) "RTN","SDESUTIL",59,0) I DOW S DSTDT=DSTDT+(SUNDAY*7)-DOW "RTN","SDESUTIL",60,0) Q DSTDT "RTN","SDESUTIL",61,0) DSTEND(YR) ;Daylight Savings END date "RTN","SDESUTIL",62,0) ; YR - 2 digit year "RTN","SDESUTIL",63,0) ; Return is the FM date for the LAST day of DST "RTN","SDESUTIL",64,0) N DSTMONTH,DOW,DSTDT,SUNDAY "RTN","SDESUTIL",65,0) S DSTMONTH="1101" ;March "RTN","SDESUTIL",66,0) S SUNDAY=1 ;first Sunday "RTN","SDESUTIL",67,0) S YR=$G(YR) "RTN","SDESUTIL",68,0) I YR="" S DSTDT=$E(DT,1,3)_DSTMONTH "RTN","SDESUTIL",69,0) E S DSTDT=$E(DT)_YR_DSTMONTH "RTN","SDESUTIL",70,0) S DOW=$$DOW^XLFDT(DSTDT,1) "RTN","SDESUTIL",71,0) I DOW S DSTDT=DSTDT+(SUNDAY*7)-DOW "RTN","SDESUTIL",72,0) Q $$FMADD^XLFDT(DSTDT,-1) "RTN","SDESUTIL",73,0) ; "RTN","SDESUTIL",74,0) TIMEZONEDATA(CLINICIEN) ;Get timezone and offsets "RTN","SDESUTIL",75,0) ; CLINIC - IEN from Hospital Location #44 "RTN","SDESUTIL",76,0) ; If clinic is not passed, use default Facility/Institution "RTN","SDESUTIL",77,0) ; Output: "RTN","SDESUTIL",78,0) ; Returns TimeZone Name ^ TimeZone IEN ^ TimeZone Exception ^ Offset for Standard Time * Offset for DST "RTN","SDESUTIL",79,0) N SDINST,SDDIV,SDTIMEZONEE,SDTIMEZONEI,TIMEZONEEXECPT,X,POP,TIMEFRAMEARY,OFFSET,OFFSETDST,RETURN,TIMEFRAMEIEN "RTN","SDESUTIL",80,0) S (POP,SDINST)="",(OFFSET,OFFSETDST)=-9999 "RTN","SDESUTIL",81,0) I $G(CLINICIEN) D "RTN","SDESUTIL",82,0) .S SDDIV=$$GET1^DIQ(44,CLINICIEN_",",3.5,"I") "RTN","SDESUTIL",83,0) .S:SDDIV SDINST=$$GET1^DIQ(40.8,SDDIV_",",.07,"I") "RTN","SDESUTIL",84,0) I SDINST="" S SDINST=$$GET1^DIQ(8989.3,1,217,"I") "RTN","SDESUTIL",85,0) S SDTIMEZONEE=$$GET1^DIQ(4,SDINST,800,"E") "RTN","SDESUTIL",86,0) S SDTIMEZONEI=$$GET1^DIQ(4,SDINST,800,"I") "RTN","SDESUTIL",87,0) S TIMEZONEEXECPT=$$GET1^DIQ(4,SDINST,802) "RTN","SDESUTIL",88,0) I TIMEZONEEXECPT'=0 S TIMEZONEEXECPT=1 ;1=Use DST 0=Only standard time "RTN","SDESUTIL",89,0) ; "RTN","SDESUTIL",90,0) F X=1:1:3 D Q:POP "RTN","SDESUTIL",91,0) .S TIMEFRAMEIEN=X_","_SDTIMEZONEI_"," "RTN","SDESUTIL",92,0) .D GETS^DIQ(1.711,TIMEFRAMEIEN,".01;.02","IE","TIMEFRAMEARY","SDMSG") ;Data from WORLD TIMEZONE file "RTN","SDESUTIL",93,0) .I '$D(TIMEFRAMEARY(1.711,TIMEFRAMEIEN,.01)) S POP=1 Q "RTN","SDESUTIL",94,0) .I $G(TIMEFRAMEARY(1.711,TIMEFRAMEIEN,.01,"I"))="SST" S OFFSET=$G(TIMEFRAMEARY(1.711,TIMEFRAMEIEN,.02,"E")) "RTN","SDESUTIL",95,0) .I $G(TIMEFRAMEARY(1.711,TIMEFRAMEIEN,.01,"I"))="DST" S OFFSETDST=$G(TIMEFRAMEARY(1.711,TIMEFRAMEIEN,.02,"E")) "RTN","SDESUTIL",96,0) ; "RTN","SDESUTIL",97,0) Q SDTIMEZONEE_"^"_SDTIMEZONEI_"^"_TIMEZONEEXECPT_"^"_OFFSET_"^"_OFFSETDST "RTN","SDESUTIL",98,0) ; "RTN","SDESUTIL",99,0) GETTZOFFSET(SDDATE,SDCLINIC) ;Get Time Zone offset based on clinic and daylight savings "RTN","SDESUTIL",100,0) ; SDCLINIC - OPT - IEN from Hospital Location #44 "RTN","SDESUTIL",101,0) ; SDDATE - REQ - FM fomatted date "RTN","SDESUTIL",102,0) ; Return "RTN","SDESUTIL",103,0) ; If clinic is passed in get Division then Instution "RTN","SDESUTIL",104,0) ; Otherwise get Instution from Kernel System Parameters "RTN","SDESUTIL",105,0) ; Get the Time Zone and Time Zone Exception from the Instution "RTN","SDESUTIL",106,0) N OFFSET,TZINFO "RTN","SDESUTIL",107,0) I '$$VALIDFMFORMAT^SDECDATE(SDDATE) Q "" "RTN","SDESUTIL",108,0) S SDCLINIC=$G(SDCLINIC) "RTN","SDESUTIL",109,0) S TZINFO=$$TIMEZONEDATA(SDCLINIC) "RTN","SDESUTIL",110,0) S OFFSET=$P(TZINFO,"^",4) ;assume non DST "RTN","SDESUTIL",111,0) ; If the Instution uses DST & SDDATE is in the daylight savings period, then sent the DST Offset "RTN","SDESUTIL",112,0) I $P(TZINFO,"^",3)=1 S:$$ISDATEDST(SDDATE) OFFSET=$P(TZINFO,"^",5) "RTN","SDESUTIL",113,0) Q OFFSET "SEC","^DIC",409.87,409.87,0,"AUDIT") @ "SEC","^DIC",409.87,409.87,0,"DD") @ "SEC","^DIC",409.87,409.87,0,"DEL") @ "SEC","^DIC",409.87,409.87,0,"LAYGO") @ "SEC","^DIC",409.87,409.87,0,"RD") @ "SEC","^DIC",409.87,409.87,0,"WR") @ "UP",409.85,409.854,-1) 409.85^10 "UP",409.85,409.854,0) 409.854 "VER") 8.0^22.2 "^DD",403.5,403.5,100,0) EAS TRACKING NUMBER^FJ40a^^1;1^K:$L(X)>40!($L(X)<1) X "^DD",403.5,403.5,100,3) Answer must be 1-40 characters in length. "^DD",403.5,403.5,100,21,0) ^^3^3^3211223^ "^DD",403.5,403.5,100,21,1,0) The EAS tracking number originates from the Enterprise Appointment "^DD",403.5,403.5,100,21,2,0) Scheduling system. This number allows actions performed by a proxy user "^DD",403.5,403.5,100,21,3,0) to be traceable back to the end user. "^DD",403.5,403.5,100,"AUDIT") y "^DD",403.5,403.5,100,"DT") 3211223 "^DD",403.56,403.56,100,0) EAS TRACKING NUMBER^FJ40a^^3;1^K:$L(X)>40!($L(X)<1) X "^DD",403.56,403.56,100,3) Answer must be 1-40 characters in length. "^DD",403.56,403.56,100,21,0) ^^3^3^3211223^ "^DD",403.56,403.56,100,21,1,0) The EAS tracking number originates from the Enterprise Appointment "^DD",403.56,403.56,100,21,2,0) Scheduling system. This number allows actions performed by a proxy user "^DD",403.56,403.56,100,21,3,0) to be traceable back to the end user. "^DD",403.56,403.56,100,"AUDIT") y "^DD",403.56,403.56,100,"DT") 3211223 "^DD",409.84,409.84,100,0) EAS TRACKING NUMBER^FJ40a^^4;1^K:$L(X)>40!($L(X)<1) X "^DD",409.84,409.84,100,3) Answer must be 1-40 characters in length. "^DD",409.84,409.84,100,21,0) ^^3^3^3211223^ "^DD",409.84,409.84,100,21,1,0) The EAS tracking number originates from the Enterprise Appointment "^DD",409.84,409.84,100,21,2,0) Scheduling system. This number allows actions performed by a proxy user "^DD",409.84,409.84,100,21,3,0) to be traceable back to the end user. "^DD",409.84,409.84,100,"AUDIT") y "^DD",409.84,409.84,100,"DT") 3211223 "^DD",409.85,409.85,49,0) PID CHANGE ALLOWED^St11^^0;14^ "^DD",409.85,409.85,49,3) Enter 1 to indicate the PID can be changed, enter 0 to indicate the PID cannot be changed. "^DD",409.85,409.85,49,21,0) ^.001^2^2^3220121^^^ "^DD",409.85,409.85,49,21,1,0) This field will determine if a particular appointment request is "^DD",409.85,409.85,49,21,2,0) authorized to have the PID changed. "^DD",409.85,409.85,49,"DT") 3220121 "^DD",409.85,409.85,50,0) PID HISTORY^409.854DA^^10;0 "^DD",409.85,409.85,50,21,0) ^.001^2^2^3220121^^^^ "^DD",409.85,409.85,50,21,1,0) This Subfile contains the complete history of all PIDs that have been "^DD",409.85,409.85,50,21,2,0) associated with a particular appointment. "^DD",409.85,409.85,100,0) EAS TRACKING NUMBER^FJ40a^^9;1^K:$L(X)>40!($L(X)<1) X "^DD",409.85,409.85,100,3) Answer must be 1-40 characters in length. "^DD",409.85,409.85,100,21,0) ^^3^3^3211223^ "^DD",409.85,409.85,100,21,1,0) The EAS tracking number originates from the Enterprise Appointment "^DD",409.85,409.85,100,21,2,0) Scheduling system. This number allows actions performed by a proxy user "^DD",409.85,409.85,100,21,3,0) to be traceable back to the end user. "^DD",409.85,409.85,100,"AUDIT") y "^DD",409.85,409.85,100,"DT") 3211223 "^DD",409.85,409.854,0) PID HISTORY SUB-FIELD^^2^3 "^DD",409.85,409.854,0,"NM","PID HISTORY") "^DD",409.85,409.854,.01,0) DATE/TIME PID ENTERED^D^^0;1^S %DT="EST" D ^%DT S X=Y K:Y<1 X "^DD",409.85,409.854,.01,1,0) ^.1 "^DD",409.85,409.854,.01,1,1,0) 409.854^B "^DD",409.85,409.854,.01,1,1,1) S ^SDEC(409.85,DA(1),10,"B",$E(X,1,30),DA)="" "^DD",409.85,409.854,.01,1,1,2) K ^SDEC(409.85,DA(1),10,"B",$E(X,1,30),DA) "^DD",409.85,409.854,.01,3) Enter the date/time that the PID was entered. "^DD",409.85,409.854,.01,21,0) ^^1^1^3220120^ "^DD",409.85,409.854,.01,21,1,0) This is the date/time that the PID was entered. "^DD",409.85,409.854,.01,"DT") 3220117 "^DD",409.85,409.854,1,0) PID^D^^0;2^S %DT="E" D ^%DT S X=Y K:Y<1 X "^DD",409.85,409.854,1,3) Enter the PID. "^DD",409.85,409.854,1,21,0) ^.001^1^1^3220121^^ "^DD",409.85,409.854,1,21,1,0) This field contains the new PID that is being added to the PID history. "^DD",409.85,409.854,1,"DT") 3220121 "^DD",409.85,409.854,2,0) ENTERED BY^FJ60^^0;3^K:$L(X)>60!($L(X)<1) X "^DD",409.85,409.854,2,3) Enter the user who updated the PID. Answer must be 1 to 60 characters in length. "^DD",409.85,409.854,2,21,0) ^.001^2^2^3220121^^^^ "^DD",409.85,409.854,2,21,1,0) This field contains the name of the user who updated the PID associated "^DD",409.85,409.854,2,21,2,0) with the appointment request. "^DD",409.85,409.854,2,"DT") 3220121 "^DD",409.87,409.87,0) FIELD^^.02^3 "^DD",409.87,409.87,0,"DT") 3220222 "^DD",409.87,409.87,0,"IX","B",409.87,.01) "^DD",409.87,409.87,0,"NM","SDEC CONSULT PID HISTORY") "^DD",409.87,409.87,0,"VRPK") SD "^DD",409.87,409.87,.01,0) CONSULT IEN^RNJ11,0^^0;1^K:+X'=X!(X>99999999999)!(X<0)!(X?.E1"."1N.N) X "^DD",409.87,409.87,.01,1,0) ^.1 "^DD",409.87,409.87,.01,1,1,0) 409.87^B "^DD",409.87,409.87,.01,1,1,1) S ^SDEC(409.87,"B",$E(X,1,30),DA)="" "^DD",409.87,409.87,.01,1,1,2) K ^SDEC(409.87,"B",$E(X,1,30),DA) "^DD",409.87,409.87,.01,3) Enter the Consult IEN. Type a number between 1 and 99999999999, 0 decimal digits. "^DD",409.87,409.87,.01,21,0) ^.001^2^2^3220121^^^^ "^DD",409.87,409.87,.01,21,1,0) This is the IEN of the Consult from ^GMR(123 that is linked to an "^DD",409.87,409.87,.01,21,2,0) appointment(s) in 409.84. "^DD",409.87,409.87,.01,"DT") 3220121 "^DD",409.87,409.87,.02,0) PATIENT^P2'^DPT(^0;2^Q "^DD",409.87,409.87,.02,1,0) ^.1^^0 "^DD",409.87,409.87,.02,3) Enter the name. "^DD",409.87,409.87,.02,21,0) ^.001^1^1^3220121^^^^ "^DD",409.87,409.87,.02,21,1,0) This is the patient associated with the consult. "^DD",409.87,409.87,.02,"DT") 3220121 "^DD",409.87,409.87,1,0) PID^409.871DA^^1;0 "^DD",409.87,409.87,1,21,0) ^.001^2^2^3220121^^^^ "^DD",409.87,409.87,1,21,1,0) This subfile tracks the PID History of Consults linked to SDEC "^DD",409.87,409.87,1,21,2,0) appointments. "^DD",409.87,409.87,1,"DT") 3220113 "^DD",409.87,409.871,0) PID SUB-FIELD^^2^3 "^DD",409.87,409.871,0,"DT") 3220121 "^DD",409.87,409.871,0,"IX","B",409.871,.01) "^DD",409.87,409.871,0,"NM","PID") "^DD",409.87,409.871,0,"UP") 409.87 "^DD",409.87,409.871,.01,0) DATE/TIME PID ENTERED^D^^0;1^S %DT="EST" D ^%DT S X=Y K:Y<1 X "^DD",409.87,409.871,.01,1,0) ^.1 "^DD",409.87,409.871,.01,1,1,0) 409.871^B "^DD",409.87,409.871,.01,1,1,1) S ^SDEC(409.87,DA(1),1,"B",$E(X,1,30),DA)="" "^DD",409.87,409.871,.01,1,1,2) K ^SDEC(409.87,DA(1),1,"B",$E(X,1,30),DA) "^DD",409.87,409.871,.01,3) Enter the date/time that the PID was updated. "^DD",409.87,409.871,.01,21,0) ^^1^1^3220120^ "^DD",409.87,409.871,.01,21,1,0) This field contains the date/time that the PID was updated. "^DD",409.87,409.871,.01,"DT") 3220120 "^DD",409.87,409.871,1,0) PID^D^^1;1^S %DT="E" D ^%DT S X=Y K:Y<1 X "^DD",409.87,409.871,1,3) Enter the PID. "^DD",409.87,409.871,1,21,0) ^.001^1^1^3220121^^ "^DD",409.87,409.871,1,21,1,0) This field contains the PID date that has been updated. "^DD",409.87,409.871,1,"DT") 3220121 "^DD",409.87,409.871,2,0) ENTERED BY^FJ50^^2;1^K:$L(X)>50!($L(X)<3) X "^DD",409.87,409.871,2,3) Enter the user who added the entry. Answer must be 3 to 50 characters in length. "^DD",409.87,409.871,2,21,0) ^.001^1^1^3220121^^^ "^DD",409.87,409.871,2,21,1,0) This is the user who added the entry. "^DD",409.87,409.871,2,"DT") 3220121 "^DIC",409.87,409.87,0) SDEC CONSULT PID HISTORY^409.87 "^DIC",409.87,409.87,0,"GL") ^SDEC(409.87, "^DIC",409.87,"B","SDEC CONSULT PID HISTORY",409.87) "BLD",12685,6) ^660 **END** **END**