Released SD*5.3*807 SEQ #661 Extracted from mail message **KIDS**:SD*5.3*807^ **INSTALL NAME** SD*5.3*807 "BLD",12687,0) SD*5.3*807^SCHEDULING^0^3220307^y "BLD",12687,1,0) ^^51^51^3220307^ "BLD",12687,1,1,0) VSE-178: - Tasks Tab - Appointment Calendar "BLD",12687,1,2,0) VSE-179: - Tasks Tab - Calendar Appointment Selected Item "BLD",12687,1,3,0) VSE-182: - .NET: Patient Information - Remediate 508 findings in Patient "BLD",12687,1,4,0) Information form "BLD",12687,1,5,0) VSE-183: - .NET: Patient Eligibility - Remediate 508 findings in Patient "BLD",12687,1,6,0) Eligibility form "BLD",12687,1,7,0) VSE-264: - .NET Discovery: Special Needs/Preferences not updating "BLD",12687,1,8,0) VSE-294: - .NET Discovery: Null Reference Exception when using Trace Log "BLD",12687,1,9,0) Viewer Search "BLD",12687,1,10,0) VSE-1705: - VistA: INC19650386 Issue with Clinic Activation/Reactivation "BLD",12687,1,11,0) Dates "BLD",12687,1,12,0) VSE-2262: - VistA: Create READ RPC for Credit Stop File "BLD",12687,1,13,0) VSE-2263: - VistA: Update SDES GET APPTS BY PATIENT RPC "BLD",12687,1,14,0) VSE-2312: - VistA: Update SDEC GETVVSMAKEINFO JSON to return single "BLD",12687,1,15,0) offset for time zone "BLD",12687,1,16,0) VSE-2315: - .NET: Update front end to use SDEC GETVVSMAKEINFO JSON single "BLD",12687,1,17,0) offset for time zone "BLD",12687,1,18,0) VSE-2319: - VistA: Update SDES GET INSURANCE VERIFY REQ RPC "BLD",12687,1,19,0) VSE-2327: - VistA: Add SDES GET USER INFO to SDECRPC menu option "BLD",12687,1,20,0) VSE-2341: - VistA: Update SDES SET APPT CHECK-IN STEP "BLD",12687,1,21,0) VSE-2350: - VistA: RPCs should return empty array "BLD",12687,1,22,0) VSE-2351: - VistA: Create an SDES RPC to return current patch number "BLD",12687,1,23,0) VSE-2354: - VistA: Create new RPC to get User Profile by DUZ "BLD",12687,1,24,0) VSE-2552: - Block and Move - Expand Entry of New APPT shows incorrect PID "BLD",12687,1,25,0) "BLD",12687,1,26,0) ROUTINES: "BLD",12687,1,27,0) ========= "BLD",12687,1,28,0) SDEC1 - VSE-2312 "BLD",12687,1,29,0) SDEC03 - VSE-1705 "BLD",12687,1,30,0) SDECVVSJSON - VSE-2312 "BLD",12687,1,31,0) SDESAPPT - VSE-2263 "BLD",12687,1,32,0) SDESCKNSTEP - VSE-2341 "BLD",12687,1,33,0) SDESJSON - VSE-2341 "BLD",12687,1,34,0) SDESPATRPC - VSE-2319 "BLD",12687,1,35,0) SDES - VSE-2351;VSE-2262;VSE-2354 "BLD",12687,1,36,0) SDES01C - VSE-2350 "BLD",12687,1,37,0) SDESGETSTOPCODE - VSE-2262 "BLD",12687,1,38,0) SDESPATCHINFO - VSE-2351 "BLD",12687,1,39,0) SDESBLKANDMOVE - VSE-2552 "BLD",12687,1,40,0) "BLD",12687,1,41,0) "BLD",12687,1,42,0) OPTIONS: "BLD",12687,1,43,0) ======== "BLD",12687,1,44,0) SDECRPC "BLD",12687,1,45,0) "BLD",12687,1,46,0) RPCs: "BLD",12687,1,47,0) ===== "BLD",12687,1,48,0) SDEC EDIT PAT PRE-REGISTRATION "BLD",12687,1,49,0) SDEC GETVVSMAKEINFO JSON "BLD",12687,1,50,0) SDES GET STOPCD DETAIL "BLD",12687,1,51,0) SDES GET PATCH NUMBER "BLD",12687,4,0) ^9.64PA^^ "BLD",12687,6) 5^ "BLD",12687,6.3) 5 "BLD",12687,"ABPKG") n "BLD",12687,"INIT") SDEC807P "BLD",12687,"KRN",0) ^9.67PA^1.5^24 "BLD",12687,"KRN",.4,0) .4 "BLD",12687,"KRN",.401,0) .401 "BLD",12687,"KRN",.402,0) .402 "BLD",12687,"KRN",.403,0) .403 "BLD",12687,"KRN",.5,0) .5 "BLD",12687,"KRN",.84,0) .84 "BLD",12687,"KRN",1.5,0) 1.5 "BLD",12687,"KRN",1.6,0) 1.6 "BLD",12687,"KRN",1.61,0) 1.61 "BLD",12687,"KRN",1.62,0) 1.62 "BLD",12687,"KRN",3.6,0) 3.6 "BLD",12687,"KRN",3.8,0) 3.8 "BLD",12687,"KRN",9.2,0) 9.2 "BLD",12687,"KRN",9.8,0) 9.8 "BLD",12687,"KRN",9.8,"NM",0) ^9.68A^15^15 "BLD",12687,"KRN",9.8,"NM",1,0) SDEC03^^0^B17021762 "BLD",12687,"KRN",9.8,"NM",2,0) SDES^^0^B53411184 "BLD",12687,"KRN",9.8,"NM",3,0) SDESGETSTOPCODE^^0^B5904554 "BLD",12687,"KRN",9.8,"NM",4,0) SDESAPPT^^0^B31919483 "BLD",12687,"KRN",9.8,"NM",5,0) SDEC1^^0^B13428022 "BLD",12687,"KRN",9.8,"NM",6,0) SDECVVSJSON^^0^B20003745 "BLD",12687,"KRN",9.8,"NM",7,0) SDESPATRPC^^0^B8227942 "BLD",12687,"KRN",9.8,"NM",8,0) SDESJSON^^0^B69804754 "BLD",12687,"KRN",9.8,"NM",9,0) SDESCKNSTEP^^0^B64223185 "BLD",12687,"KRN",9.8,"NM",10,0) SDESPATCHINFO^^0^B1512849 "BLD",12687,"KRN",9.8,"NM",11,0) SDES01C^^0^B10168681 "BLD",12687,"KRN",9.8,"NM",12,0) SDESGETUDDUZ^^0^B9688277 "BLD",12687,"KRN",9.8,"NM",13,0) SDESRTVCLN^^0^B57735157 "BLD",12687,"KRN",9.8,"NM",14,0) SDECCONSJSON^^0^B38202800 "BLD",12687,"KRN",9.8,"NM",15,0) SDESBLKANDMOVE^^0^B161133376 "BLD",12687,"KRN",9.8,"NM","B","SDEC03",1) "BLD",12687,"KRN",9.8,"NM","B","SDEC1",5) "BLD",12687,"KRN",9.8,"NM","B","SDECCONSJSON",14) "BLD",12687,"KRN",9.8,"NM","B","SDECVVSJSON",6) "BLD",12687,"KRN",9.8,"NM","B","SDES",2) "BLD",12687,"KRN",9.8,"NM","B","SDES01C",11) "BLD",12687,"KRN",9.8,"NM","B","SDESAPPT",4) "BLD",12687,"KRN",9.8,"NM","B","SDESBLKANDMOVE",15) "BLD",12687,"KRN",9.8,"NM","B","SDESCKNSTEP",9) "BLD",12687,"KRN",9.8,"NM","B","SDESGETSTOPCODE",3) "BLD",12687,"KRN",9.8,"NM","B","SDESGETUDDUZ",12) "BLD",12687,"KRN",9.8,"NM","B","SDESJSON",8) "BLD",12687,"KRN",9.8,"NM","B","SDESPATCHINFO",10) "BLD",12687,"KRN",9.8,"NM","B","SDESPATRPC",7) "BLD",12687,"KRN",9.8,"NM","B","SDESRTVCLN",13) "BLD",12687,"KRN",19,0) 19 "BLD",12687,"KRN",19,"NM",0) ^9.68A^2^2 "BLD",12687,"KRN",19,"NM",1,0) SDECRPC^^0 "BLD",12687,"KRN",19,"NM",2,0) SDESRPC^^0 "BLD",12687,"KRN",19,"NM","B","SDECRPC",1) "BLD",12687,"KRN",19,"NM","B","SDESRPC",2) "BLD",12687,"KRN",19.1,0) 19.1 "BLD",12687,"KRN",19.1,"NM",0) ^9.68A^^ "BLD",12687,"KRN",101,0) 101 "BLD",12687,"KRN",101,"NM",0) ^9.68A^^ "BLD",12687,"KRN",409.61,0) 409.61 "BLD",12687,"KRN",771,0) 771 "BLD",12687,"KRN",779.2,0) 779.2 "BLD",12687,"KRN",870,0) 870 "BLD",12687,"KRN",8989.51,0) 8989.51 "BLD",12687,"KRN",8989.52,0) 8989.52 "BLD",12687,"KRN",8994,0) 8994 "BLD",12687,"KRN",8994,"NM",0) ^9.68A^5^5 "BLD",12687,"KRN",8994,"NM",1,0) SDEC EDIT PAT PRE-REGISTRATION^^0 "BLD",12687,"KRN",8994,"NM",2,0) SDES GET STOPCD DETAIL^^0 "BLD",12687,"KRN",8994,"NM",3,0) SDEC GETVVSMAKEINFO JSON^^0 "BLD",12687,"KRN",8994,"NM",4,0) SDES GET PATCH NUMBER^^0 "BLD",12687,"KRN",8994,"NM",5,0) SDES GET USER PROFILE BY DUZ^^0 "BLD",12687,"KRN",8994,"NM","B","SDEC EDIT PAT PRE-REGISTRATION",1) "BLD",12687,"KRN",8994,"NM","B","SDEC GETVVSMAKEINFO JSON",3) "BLD",12687,"KRN",8994,"NM","B","SDES GET PATCH NUMBER",4) "BLD",12687,"KRN",8994,"NM","B","SDES GET STOPCD DETAIL",2) "BLD",12687,"KRN",8994,"NM","B","SDES GET USER PROFILE BY DUZ",5) "BLD",12687,"KRN","B",.4,.4) "BLD",12687,"KRN","B",.401,.401) "BLD",12687,"KRN","B",.402,.402) "BLD",12687,"KRN","B",.403,.403) "BLD",12687,"KRN","B",.5,.5) "BLD",12687,"KRN","B",.84,.84) "BLD",12687,"KRN","B",1.5,1.5) "BLD",12687,"KRN","B",1.6,1.6) "BLD",12687,"KRN","B",1.61,1.61) "BLD",12687,"KRN","B",1.62,1.62) "BLD",12687,"KRN","B",3.6,3.6) "BLD",12687,"KRN","B",3.8,3.8) "BLD",12687,"KRN","B",9.2,9.2) "BLD",12687,"KRN","B",9.8,9.8) "BLD",12687,"KRN","B",19,19) "BLD",12687,"KRN","B",19.1,19.1) "BLD",12687,"KRN","B",101,101) "BLD",12687,"KRN","B",409.61,409.61) "BLD",12687,"KRN","B",771,771) "BLD",12687,"KRN","B",779.2,779.2) "BLD",12687,"KRN","B",870,870) "BLD",12687,"KRN","B",8989.51,8989.51) "BLD",12687,"KRN","B",8989.52,8989.52) "BLD",12687,"KRN","B",8994,8994) "BLD",12687,"QUES",0) ^9.62^^ "BLD",12687,"REQB",0) ^9.611^2^2 "BLD",12687,"REQB",1,0) SD*5.3*658^1 "BLD",12687,"REQB",2,0) SD*5.3*805^1 "BLD",12687,"REQB","B","SD*5.3*658",1) "BLD",12687,"REQB","B","SD*5.3*805",2) "INIT") SDEC807P "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^3220207^^^^ "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) 66148,58559 "KRN",19,2922543,"RPC",0) ^19.05P^289^289 "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,"RPC",289,0) SDES GET USER PROFILE BY DUZ "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^3220208^^^^ "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^45^45 "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,"RPC",43,0) SDES GET STOPCD DETAIL "KRN",19,2922994,"RPC",44,0) SDES GET PATCH NUMBER "KRN",19,2922994,"RPC",45,0) SDES GET USER PROFILE BY DUZ "KRN",19,2922994,"U") CLINICAL SCHEDULING PROCEDURE "KRN",8994,5825,-1) 0^3 "KRN",8994,5825,0) SDEC GETVVSMAKEINFO JSON^JSONVVSMAKEINFO^SDEC1^2^R "KRN",8994,5825,1,0) ^8994.01^2^2^3220128^^^^ "KRN",8994,5825,1,1,0) Get patient info, default provider info, and system info needed to make a "KRN",8994,5825,1,2,0) Video Visit Service (VVS) appointment in JSON format "KRN",8994,5825,2,0) ^8994.02A^4^3 "KRN",8994,5825,2,2,0) PATIENTIEN^1^20^1^1 "KRN",8994,5825,2,2,1,0) ^^1^1^3220128^ "KRN",8994,5825,2,2,1,1,0) PATIENT IEN "KRN",8994,5825,2,3,0) CLINICIEN^1^20^1^2 "KRN",8994,5825,2,3,1,0) ^8994.021^5^5^3220126^^^ "KRN",8994,5825,2,3,1,1,0) CLINIC IEN JSON "KRN",8994,5825,2,3,1,2,0) RETURN PARAMETER DESCRIPTION: "KRN",8994,5825,2,3,1,3,0) RETURN(1)=PATIENT INFO "KRN",8994,5825,2,3,1,4,0) RETURN(2)=DEFAULT PROVIDER INFO "KRN",8994,5825,2,3,1,5,0) RETURN(3)=SYSTEM INFO "KRN",8994,5825,2,4,0) APPTDTTM^1^30^1^3 "KRN",8994,5825,2,4,1,0) ^8994.021^1^1^3220128^^^ "KRN",8994,5825,2,4,1,1,0) APPOINTMENT DATE AND TIME IN .NET FORMAT "KRN",8994,5825,2,"B","APPTDTTM",4) "KRN",8994,5825,2,"B","CLINICIEN",3) "KRN",8994,5825,2,"B","PATIENTIEN",2) "KRN",8994,5825,2,"PARAMSEQ",1,2) "KRN",8994,5825,2,"PARAMSEQ",2,3) "KRN",8994,5825,2,"PARAMSEQ",3,4) "KRN",8994,5825,3,0) ^^4^4^3220128^ "KRN",8994,5825,3,1,0) Appointment date/time in ISO 8601 format "KRN",8994,5825,3,2,0) Patient data "KRN",8994,5825,3,3,0) Provider data "KRN",8994,5825,3,4,0) System (misc) data "KRN",8994,5851,-1) 0^1 "KRN",8994,5851,0) SDEC EDIT PAT PRE-REGISTRATION^PREREG^SDEC1^4^R^0^^0^^^1 "KRN",8994,5851,1,0) ^8994.01^2^2^3220127^^^ "KRN",8994,5851,1,1,0) Updates patient pre-registration and associated files when a Vetlink "KRN",8994,5851,1,2,0) Kiosk pre-register event occurs. "KRN",8994,5851,2,0) ^8994.02A^3^2 "KRN",8994,5851,2,2,0) DFN^1^30^1^1 "KRN",8994,5851,2,2,1,0) ^^1^1^3211012^ "KRN",8994,5851,2,2,1,1,0) DFN of patient associated with pre-registration event "KRN",8994,5851,2,3,0) PRESTAT^1^30^1^2 "KRN",8994,5851,2,3,1,0) ^8994.021^2^2^3220127^^^ "KRN",8994,5851,2,3,1,1,0) Status Code - code that represents the outcome of the pre-registration "KRN",8994,5851,2,3,1,2,0) interview with the patient "KRN",8994,5851,2,"B","DFN",2) "KRN",8994,5851,2,"B","PRESTAT",3) "KRN",8994,5851,2,"PARAMSEQ",1,2) "KRN",8994,5851,2,"PARAMSEQ",2,3) "KRN",8994,5851,3,0) ^8994.03^12^12^3211012^^ "KRN",8994,5851,3,1,0) B = BUSY "KRN",8994,5851,3,2,0) C = CONNECTED "KRN",8994,5851,3,3,0) D = DEATH "KRN",8994,5851,3,4,0) K = CALL BACK "KRN",8994,5851,3,5,0) M =LEFT CALLBACK MESSAGE "KRN",8994,5851,3,6,0) N = NO ANSWER "KRN",8994,5851,3,7,0) P = NO PHONE "KRN",8994,5851,3,8,0) T = DON'T CALL "KRN",8994,5851,3,9,0) U = UNCOOPERATIVE "KRN",8994,5851,3,10,0) V = PREVIOUSLY UPDATED "KRN",8994,5851,3,11,0) W =WRONG NUMBER "KRN",8994,5851,3,12,0) X = CHANGE INFORMATION "KRN",8994,5876,-1) 0^2 "KRN",8994,5876,0) SDES GET STOPCD DETAIL^GETSTOPCODE^SDES^2^R^^^^^^1 "KRN",8994,5876,1,0) ^8994.01^1^1^3220125^^^ "KRN",8994,5876,1,1,0) RPC TO READ FROM CLINIC STOP FILE 40.7 "KRN",8994,5876,2,0) ^8994.02A^1^1 "KRN",8994,5876,2,1,0) CLIN STOPCODE^1^3^1^1 "KRN",8994,5876,2,1,1,0) ^8994.021^1^1^3220125^^^^ "KRN",8994,5876,2,1,1,1,0) CLINIC STOP CODE FROM FILE 40.7 "KRN",8994,5876,2,"B","CLIN STOPCODE",1) "KRN",8994,5876,2,"PARAMSEQ",1,1) "KRN",8994,5876,3,0) ^8994.03^2^2^3220125^^^ "KRN",8994,5876,3,1,0) RETURN CLINIC STOP CODE NAME, IEN, INACTIVE DATE, COST DISTRIBUTION "KRN",8994,5876,3,2,0) CENTER, RESTRICTION TYPE AND RESTRICTION DATE FOR THE GIVEN STOP CODE "KRN",8994,5877,-1) 0^4 "KRN",8994,5877,0) SDES GET PATCH NUMBER^GETPATCHNUM^SDES^2^R^^^0^^^1 "KRN",8994,5877,1,0) ^^2^2^3220202^ "KRN",8994,5877,1,1,0) Returns the last patch and the date it was applied to the software (the "KRN",8994,5877,1,2,0) date it was installed). "KRN",8994,5877,3,0) ^8994.03^2^2^3220202^^^ "KRN",8994,5877,3,1,0) Return contains the latest Scheduling patch number installed on the "KRN",8994,5877,3,2,0) system. "KRN",8994,5878,-1) 0^5 "KRN",8994,5878,0) SDES GET USER PROFILE BY DUZ^GETUSRDTLDUZ^SDES^2^R^^^^^^1 "KRN",8994,5878,1,0) ^8994.01^1^1^3220204^^ "KRN",8994,5878,1,1,0) Create new RPC to get User Profile by DUZ "KRN",8994,5878,2,0) ^8994.02A^2^2 "KRN",8994,5878,2,1,0) USER IEN^1^30^1^1 "KRN",8994,5878,2,1,1,0) ^^1^1^3220204^ "KRN",8994,5878,2,1,1,1,0) USER IEN FROM NEW PERSON FILE #200 "KRN",8994,5878,2,2,0) EASTRCKNGNMBR^1^30^0^2 "KRN",8994,5878,2,2,1,0) ^^3^3^3220204^ "KRN",8994,5878,2,2,1,1,0) The EAS number is the Enterprise Appointment Scheduling Tracking Number "KRN",8994,5878,2,2,1,2,0) associated to an appointment.The EAS system will pass us the EAS number "KRN",8994,5878,2,2,1,3,0) when they call our RPCs. "KRN",8994,5878,2,"B","EASTRCKNGNMBR",2) "KRN",8994,5878,2,"B","USER IEN",1) "KRN",8994,5878,2,"PARAMSEQ",1,1) "KRN",8994,5878,2,"PARAMSEQ",2,2) "KRN",8994,5878,3,0) ^^2^2^3220204^ "KRN",8994,5878,3,1,0) RPC returns the User Details from New Person File #200 when the IEN "KRN",8994,5878,3,2,0) matches and if not gives valid 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) 807^3220307^520881788 "PKG",16,22,1,"PAH",1,1,0) ^^51^51^3220307 "PKG",16,22,1,"PAH",1,1,1,0) VSE-178: - Tasks Tab - Appointment Calendar "PKG",16,22,1,"PAH",1,1,2,0) VSE-179: - Tasks Tab - Calendar Appointment Selected Item "PKG",16,22,1,"PAH",1,1,3,0) VSE-182: - .NET: Patient Information - Remediate 508 findings in Patient "PKG",16,22,1,"PAH",1,1,4,0) Information form "PKG",16,22,1,"PAH",1,1,5,0) VSE-183: - .NET: Patient Eligibility - Remediate 508 findings in Patient "PKG",16,22,1,"PAH",1,1,6,0) Eligibility form "PKG",16,22,1,"PAH",1,1,7,0) VSE-264: - .NET Discovery: Special Needs/Preferences not updating "PKG",16,22,1,"PAH",1,1,8,0) VSE-294: - .NET Discovery: Null Reference Exception when using Trace Log "PKG",16,22,1,"PAH",1,1,9,0) Viewer Search "PKG",16,22,1,"PAH",1,1,10,0) VSE-1705: - VistA: INC19650386 Issue with Clinic Activation/Reactivation "PKG",16,22,1,"PAH",1,1,11,0) Dates "PKG",16,22,1,"PAH",1,1,12,0) VSE-2262: - VistA: Create READ RPC for Credit Stop File "PKG",16,22,1,"PAH",1,1,13,0) VSE-2263: - VistA: Update SDES GET APPTS BY PATIENT RPC "PKG",16,22,1,"PAH",1,1,14,0) VSE-2312: - VistA: Update SDEC GETVVSMAKEINFO JSON to return single "PKG",16,22,1,"PAH",1,1,15,0) offset for time zone "PKG",16,22,1,"PAH",1,1,16,0) VSE-2315: - .NET: Update front end to use SDEC GETVVSMAKEINFO JSON single "PKG",16,22,1,"PAH",1,1,17,0) offset for time zone "PKG",16,22,1,"PAH",1,1,18,0) VSE-2319: - VistA: Update SDES GET INSURANCE VERIFY REQ RPC "PKG",16,22,1,"PAH",1,1,19,0) VSE-2327: - VistA: Add SDES GET USER INFO to SDECRPC menu option "PKG",16,22,1,"PAH",1,1,20,0) VSE-2341: - VistA: Update SDES SET APPT CHECK-IN STEP "PKG",16,22,1,"PAH",1,1,21,0) VSE-2350: - VistA: RPCs should return empty array "PKG",16,22,1,"PAH",1,1,22,0) VSE-2351: - VistA: Create an SDES RPC to return current patch number "PKG",16,22,1,"PAH",1,1,23,0) VSE-2354: - VistA: Create new RPC to get User Profile by DUZ "PKG",16,22,1,"PAH",1,1,24,0) VSE-2552: - Block and Move - Expand Entry of New APPT shows incorrect PID "PKG",16,22,1,"PAH",1,1,25,0) "PKG",16,22,1,"PAH",1,1,26,0) ROUTINES: "PKG",16,22,1,"PAH",1,1,27,0) ========= "PKG",16,22,1,"PAH",1,1,28,0) SDEC1 - VSE-2312 "PKG",16,22,1,"PAH",1,1,29,0) SDEC03 - VSE-1705 "PKG",16,22,1,"PAH",1,1,30,0) SDECVVSJSON - VSE-2312 "PKG",16,22,1,"PAH",1,1,31,0) SDESAPPT - VSE-2263 "PKG",16,22,1,"PAH",1,1,32,0) SDESCKNSTEP - VSE-2341 "PKG",16,22,1,"PAH",1,1,33,0) SDESJSON - VSE-2341 "PKG",16,22,1,"PAH",1,1,34,0) SDESPATRPC - VSE-2319 "PKG",16,22,1,"PAH",1,1,35,0) SDES - VSE-2351;VSE-2262;VSE-2354 "PKG",16,22,1,"PAH",1,1,36,0) SDES01C - VSE-2350 "PKG",16,22,1,"PAH",1,1,37,0) SDESGETSTOPCODE - VSE-2262 "PKG",16,22,1,"PAH",1,1,38,0) SDESPATCHINFO - VSE-2351 "PKG",16,22,1,"PAH",1,1,39,0) SDESBLKANDMOVE - VSE-2552 "PKG",16,22,1,"PAH",1,1,40,0) "PKG",16,22,1,"PAH",1,1,41,0) "PKG",16,22,1,"PAH",1,1,42,0) OPTIONS: "PKG",16,22,1,"PAH",1,1,43,0) ======== "PKG",16,22,1,"PAH",1,1,44,0) SDECRPC "PKG",16,22,1,"PAH",1,1,45,0) "PKG",16,22,1,"PAH",1,1,46,0) RPCs: "PKG",16,22,1,"PAH",1,1,47,0) ===== "PKG",16,22,1,"PAH",1,1,48,0) SDEC EDIT PAT PRE-REGISTRATION "PKG",16,22,1,"PAH",1,1,49,0) SDEC GETVVSMAKEINFO JSON "PKG",16,22,1,"PAH",1,1,50,0) SDES GET STOPCD DETAIL "PKG",16,22,1,"PAH",1,1,51,0) SDES GET PATCH NUMBER "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") 16 "RTN","SDEC03") 0^1^B17021762^B12782184 "RTN","SDEC03",1,0) SDEC03 ;ALB/SAT,LAB - VISTA SCHEDULING RPCS ;JAN 27,2022 "RTN","SDEC03",2,0) ;;5.3;Scheduling;**627,642,658,807**;Aug 13, 1993;Build 5 "RTN","SDEC03",3,0) ; "RTN","SDEC03",4,0) Q "RTN","SDEC03",5,0) ; "RTN","SDEC03",6,0) XR2S(SDECDA) ;build the ARSRC xref for the RESOURCE field of the SDEC APPOINTMENT file "RTN","SDEC03",7,0) ;Format is ^SDEC(409.84,"ARSRC",RESOURCEID,STARTTIME,APPTID) "RTN","SDEC03",8,0) Q:'$D(^SDEC(409.84,SDECDA,0)) "RTN","SDEC03",9,0) N SDECNOD,SDECAPPID,SDECRSID,SDECS "RTN","SDEC03",10,0) S SDECNOD=^SDEC(409.84,SDECDA,0) "RTN","SDEC03",11,0) S SDECAPPID=SDECDA "RTN","SDEC03",12,0) S SDECRSID=$P(SDECNOD,U,7) "RTN","SDEC03",13,0) Q:'+SDECAPPID>0 "RTN","SDEC03",14,0) Q:'+SDECRSID>0 "RTN","SDEC03",15,0) S SDECS=$P(SDECNOD,U) "RTN","SDEC03",16,0) Q:'+SDECS "RTN","SDEC03",17,0) S ^SDEC(409.84,"ARSRC",SDECRSID,SDECS,SDECAPPID)="" "RTN","SDEC03",18,0) Q "RTN","SDEC03",19,0) ; "RTN","SDEC03",20,0) XR2K(SDECA) ;kill the ARSRC xref for the RESOURCE field of the SDEC APPOINTMENT file "RTN","SDEC03",21,0) Q:'$D(^SDEC(409.84,SDECA,0)) "RTN","SDEC03",22,0) N SDECNOD,SDECAPPID,SDECRSID,SDECS "RTN","SDEC03",23,0) S SDECNOD=^SDEC(409.84,SDECA,0) "RTN","SDEC03",24,0) S SDECAPPID=SDECA "RTN","SDEC03",25,0) S SDECRSID=$P(SDECNOD,U,7) "RTN","SDEC03",26,0) S SDECS=$P(SDECNOD,U) "RTN","SDEC03",27,0) Q:'+SDECAPPID>0 "RTN","SDEC03",28,0) Q:'+SDECRSID>0 "RTN","SDEC03",29,0) Q:'+SDECS>0 "RTN","SDEC03",30,0) K ^SDEC(409.84,"ARSRC",SDECRSID,SDECS,SDECAPPID) "RTN","SDEC03",31,0) Q "RTN","SDEC03",32,0) XR4S(SDECDA) ;build ARSCT xref for the STARTTIME field of the SDEC ACCESS BLOCK file "RTN","SDEC03",33,0) ;Format is ^SDEC(409.821,"ARSCT",RESOURCEID,STARTTIME,DA) "RTN","SDEC03",34,0) Q:'$D(^SDEC(409.821,SDECDA,0)) "RTN","SDEC03",35,0) N SDECNOD,SDECR,SDECS "RTN","SDEC03",36,0) S SDECNOD=^SDEC(409.821,SDECDA,0) "RTN","SDEC03",37,0) S SDECR=$P(SDECNOD,U) "RTN","SDEC03",38,0) S SDECS=$P(SDECNOD,U,2) "RTN","SDEC03",39,0) Q:'+SDECR>0 "RTN","SDEC03",40,0) Q:'+SDECS>0 "RTN","SDEC03",41,0) S ^SDEC(409.821,"ARSCT",SDECR,SDECS,SDECDA)="" "RTN","SDEC03",42,0) Q "RTN","SDEC03",43,0) ; "RTN","SDEC03",44,0) XR4K(SDECDA) ;kill ARSCT xref for the STARTTIME field of the SDEC ACCESS BLOCK file "RTN","SDEC03",45,0) Q:'$D(^SDEC(409.821,SDECDA,0)) "RTN","SDEC03",46,0) N SDECNOD,SDECR,SDECS "RTN","SDEC03",47,0) S SDECNOD=^SDEC(409.821,SDECDA,0) "RTN","SDEC03",48,0) S SDECR=$P(SDECNOD,U) "RTN","SDEC03",49,0) S SDECS=$P(SDECNOD,U,2) "RTN","SDEC03",50,0) Q:'+SDECR>0 "RTN","SDEC03",51,0) Q:'+SDECS>0 "RTN","SDEC03",52,0) K ^SDEC(409.821,"ARSCT",SDECR,SDECS,SDECDA) "RTN","SDEC03",53,0) Q "RTN","SDEC03",54,0) ; "RTN","SDEC03",55,0) ;support for single HOSPITAL LOCATION in SDEC RESOURCE "RTN","SDEC03",56,0) XRC1(SDDA) ;computed routine for INACTIVE field in SDEC RESOURCE "RTN","SDEC03",57,0) ;NO = active; YES = inactive "RTN","SDEC03",58,0) N SDNOD,SDTYPR,N21,N25,X,SDCHKDT "RTN","SDEC03",59,0) S X="" "RTN","SDEC03",60,0) S SDNOD=^SDEC(409.831,SDDA,0) "RTN","SDEC03",61,0) S N21=$P(SDNOD,U,7) ;inactive date/time "RTN","SDEC03",62,0) S N25=$P(SDNOD,U,9) ;reactive date/time "RTN","SDEC03",63,0) S SDTYPR=$P(SDNOD,U,11) "RTN","SDEC03",64,0) S SDCHKDT=$$NOW^XLFDT "RTN","SDEC03",65,0) I $P(SDTYPR,";",2)="VA(200," I $$PC^SDEC45($P(SDTYPR,";",1)) S X="YES" D RESDG^SDEC01B(SDDA) Q X ;do not include provider resource if NEW PERSON is not active "RTN","SDEC03",66,0) I (N21="") S X="NO" Q X ;if no inactive date, then resource is not inactive "RTN","SDEC03",67,0) I N21>SDCHKDT S X="NO" Q X ;if inactive > today, then send NO inactive date is in the future "RTN","SDEC03",68,0) ;we now now that inactive date is present and is less than or equal to today. "RTN","SDEC03",69,0) I N25="" S X="YES" D RESDG^SDEC01B(SDDA) Q X ;if there is no reactivation date, resource is inactive "RTN","SDEC03",70,0) I N25>SDCHKDT S X="YES" D RESDG^SDEC01B(SDDA) Q X ;the reactive date is in the future, resource is inactive "RTN","SDEC03",71,0) I N250 D "RTN","SDEC03",104,0) .S SDTYP=$$GET1^DIQ(409.831,SDI_",",.012,"I") "RTN","SDEC03",105,0) .Q:$P(SDTYP,";",2)'="SC(" "RTN","SDEC03",106,0) .S SDFDA(409.831,SDI_",",.01)=SDCLN "RTN","SDEC03",107,0) .D UPDATE^DIE("","SDFDA") "RTN","SDEC03",108,0) Q "RTN","SDEC03",109,0) ; "RTN","SDEC03",110,0) ;alb/sat 658 "RTN","SDEC03",111,0) A44S(SDCL,SDCLA) ;MUMPS xref for ABBREVIATION of file 44 to update SDEC RESOURCE abbreviation if changed in 44 "RTN","SDEC03",112,0) N SDFDA,SDI,SDTYP "RTN","SDEC03",113,0) ;find clinic resource in SDEC RESOURCE "RTN","SDEC03",114,0) S SDI="" F S SDI=$O(^SDEC(409.831,"ALOC",SDCL,SDI)) Q:SDI'>0 D "RTN","SDEC03",115,0) .S SDTYP=$$GET1^DIQ(409.831,SDI_",",.012,"I") "RTN","SDEC03",116,0) .Q:$P(SDTYP,";",2)'="SC(" "RTN","SDEC03",117,0) .S SDFDA(409.831,SDI_",",.011)=SDCLA "RTN","SDEC03",118,0) .D UPDATE^DIE("","SDFDA") "RTN","SDEC03",119,0) Q "RTN","SDEC1") 0^5^B13428022^B13220103 "RTN","SDEC1",1,0) SDEC1 ;ALB/LAB/ANU/TAW - VISTA SCHEDULING RPCS ;JAN 26, 2022 "RTN","SDEC1",2,0) ;;5.3;Scheduling;**774,781,784,785,797,800,803,807**;Aug 13, 1993;Build 5 "RTN","SDEC1",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDEC1",4,0) ; "RTN","SDEC1",5,0) ARGETIEN(RET,IEN) ;RPC: SDEC GET PAT APPT REQ BY IEN "RTN","SDEC1",6,0) D ARGETIEN^SDECAR4(.RET,IEN) Q "RTN","SDEC1",7,0) ARGETPAT(RET,DFN) ;RPC: SDEC PATIENT APPT REQ GET "RTN","SDEC1",8,0) D ARGETPAT^SDECAR4(.RET,DFN) Q "RTN","SDEC1",9,0) ARGETPATJSON(RET,DFN) ;RPC: SDEC APPT REQ GET PATIENT JSON "RTN","SDEC1",10,0) D ARGETPATJSON^SDECAR4(.RET,DFN) Q "RTN","SDEC1",11,0) CONSLIST(SDECY,DFN) ;EP SDEC GET PATIENT CONSULTS "RTN","SDEC1",12,0) D CONSLIST^SDEC51B(.SDECY,DFN) Q ;Return a list of ACTIVE or PENDING CONSULTS for patient "RTN","SDEC1",13,0) CONSULT1(SDECY,IEN) ; This RPC returns the patient Consult associated with a given IEN - SDEC GET PAT CONSULT BY IEN "RTN","SDEC1",14,0) D CONSULT1^SDEC51B(.SDECY,IEN) Q "RTN","SDEC1",15,0) CLGRPLK(SDECY,SRCHAR) ;EP SDEC CLINIC GROUP LOOKUP "RTN","SDEC1",16,0) D CLGRPLK^SDEC63(.SDECY,SRCHAR) Q "RTN","SDEC1",17,0) DISMULT(RTT,CIEN) ; RPC: SDEC CONTACT MULTI-DISPLAY "RTN","SDEC1",18,0) D DISMULT^SDECCON(.RTT,CIEN) Q "RTN","SDEC1",19,0) DELETEVVSID(RETURN,DFN,RESOURCE,APPTDATETIME) ;This RPC deletes Video Visit ID from SDEC APPOINTMENT(#409.84) file "RTN","SDEC1",20,0) D DELETEVVSID^SDECVVS(.RETURN,DFN,RESOURCE,APPTDATETIME) Q "RTN","SDEC1",21,0) DISPLAY(RTU,DFN,CLN,PDT,REQT,SER) ; RPC: SDEC CONTACT DISPLAY "RTN","SDEC1",22,0) D DISPLAY^SDECCON(.RTU,DFN,CLN,PDT,REQT,SER) Q "RTN","SDEC1",23,0) DISPLAY1(RTU,REQT,RIEN) ; RPC: SDEC CONTACT DISPLAY SINGLE "RTN","SDEC1",24,0) D DISPLAY1^SDECCON(.RTU,REQT,RIEN) Q ; RPC: SDEC CONTACT DISPLAY SINGLE "RTN","SDEC1",25,0) DUZSTATIONID(SDECY) ; SDEC GET STATION ID "RTN","SDEC1",26,0) D DUZSTATIONID^SDECDUZ(.SDECY) Q "RTN","SDEC1",27,0) GETPATDEMOG(SDECY,SDECP,SDECC,LASTSUB) ;EP Patient Lookup "LITE"; VSE-664 "RTN","SDEC1",28,0) D GETPATDEMOG^SDEC28L(.SDECY,$G(SDECP),$G(SDECC),$G(LASTSUB)) Q "RTN","SDEC1",29,0) GETPATIENTICN(RETURN,PATIENTIEN) ;GET PATIENT ICN FROM PATIENT IEN (DFN) "RTN","SDEC1",30,0) D GETPATIENTICN^SDECVVS(.RETURN,PATIENTIEN) Q "RTN","SDEC1",31,0) GETSTC(RET,CLIEN) ; RPC: SDEC CONTACT STOP CODE "RTN","SDEC1",32,0) D GETSTC^SDECCON(.RET,CLIEN) Q "RTN","SDEC1",33,0) GETSPACEBARPRO(VVSPRORETURN) ;SPACEBAR RETURN LAST PROVIDER "RTN","SDEC1",34,0) D GETSPACEBARPRO^SDECVVS(.VVSPRORETURN) Q "RTN","SDEC1",35,0) GETVVSMAKEINFO(VVSMAKEINFO,PATIENTIEN,CLINICIEN) ;GET INFO TO MAKE A VIDEO VISIT WEB SERVICE (VVS) CALL "RTN","SDEC1",36,0) D GETVVSMAKEINFO^SDECVVS(.VVSMAKEINFO,PATIENTIEN,CLINICIEN) Q "RTN","SDEC1",37,0) GETWLIEN(RET,APPTIEN) ; "RTN","SDEC1",38,0) D GETWLIEN^SDEC63(.RET,APPTIEN) Q "RTN","SDEC1",39,0) GETVVSID(RETURN,DFN,RESOURCE,APPTDATETIME) ;This RPC returns the Video Visit Service (VVS) ID. "RTN","SDEC1",40,0) D GETVVSID^SDECVVS(.RETURN,DFN,RESOURCE,APPTDATETIME) Q "RTN","SDEC1",41,0) JSONCONSLIST(SDEC,DFN) ;EP RPC: SDEC GET PATIENT CONSULTS JSON "RTN","SDEC1",42,0) D JSONCONSLIST^SDECCONSJSON(.SDEC,DFN) Q "RTN","SDEC1",43,0) JSONCONSLIST1(SDEC,IEN) ;EP RPC: SDEC GET PATIENT CONSULT JSON "RTN","SDEC1",44,0) D JSONCONSLIST1^SDECCONSJSON(.SDEC,IEN) Q "RTN","SDEC1",45,0) NEW(RET,DFN,CLI,DTP,REQT,SRV,DTCON,CONT,COM,DTENT,RIEN) ; RPC: SDEC CONTACT NEW "RTN","SDEC1",46,0) D NEW^SDECCON(.RET,DFN,CLI,DTP,REQT,SRV,DTCON,CONT,COM,DTENT,RIEN) Q "RTN","SDEC1",47,0) PREREG(SDECY,DFN,PRESTAT) ; "RTN","SDEC1",48,0) D PREREG^SDECUPDPATPREREG(.SDECY,DFN,PRESTAT) ;UPDATE PATIENT PRE-REGISTRATION "RTN","SDEC1",49,0) RECGET(SDECY,DFN) ;This RPC returns all open recall requests associated with a patient in a delimited string "RTN","SDEC1",50,0) D RECGET^SDEC52C(.SDECY,DFN) Q "RTN","SDEC1",51,0) RECGETJSON(SDECY,DFN) ; This RPC returns all open recall requests associated with a patient in JSON format "RTN","SDEC1",52,0) D RECGETJSON^SDEC52CJSON(.SDECY,DFN) Q "RTN","SDEC1",53,0) RECGETONE(SDECY,IEN) ; This RPC returns the open recall associated with a given IEN "RTN","SDEC1",54,0) D RECGETONE^SDEC52C(.SDECY,IEN) Q "RTN","SDEC1",55,0) RECGETONEJSON(SDECY,IEN) ; This RPC returns the open recall associated with a given IEN in JSON format "RTN","SDEC1",56,0) D RECGETONEJSON^SDEC52CJSON(.SDECY,IEN) Q "RTN","SDEC1",57,0) RESGRP(SDECY,SDECDUZ,GRPIEN) ;EP SDEC CLINIC GROUP RETURN "RTN","SDEC1",58,0) D RESGRP^SDEC63(.SDECY,SDECDUZ,GRPIEN) Q "RTN","SDEC1",59,0) SAVEVVSID(RETURN,DFN,RESOURCE,APPT,VVSID) ;This RPC saves the VVS appointment ID in the SDEC APPOINTMENT file "RTN","SDEC1",60,0) D SAVEVVSID^SDECVVS(.RETURN,DFN,RESOURCE,APPT,VVSID) Q "RTN","SDEC1",61,0) SEQ(RE1,DF1,CL1,PDATE,RTYPE,SRR) ; RPC: SDEC CONTACT SEQUENCE "RTN","SDEC1",62,0) D SEQ^SDECCON(.RE1,DF1,CL1,PDATE,RTYPE,SRR) Q "RTN","SDEC1",63,0) SEQ1(RTU,REQT,RIEN) ; RPC: SDEC CONTACT SEQUENCE SINGLE "RTN","SDEC1",64,0) D SEQ1^SDECCON(.RTU,REQT,RIEN) Q "RTN","SDEC1",65,0) UPDATE(RTT,IEN,CONDT,CTYPE,COMM,DTEN) ; RPC: SDEC CONTACT UPDATE "RTN","SDEC1",66,0) D UPDATE^SDECCON(.RTT,IEN,CONDT,CTYPE,COMM,DTEN) Q "RTN","SDEC1",67,0) VVSPROSEARCH(VVSPROVIDERS,SEARCHSTRING) ;SEARCH PROVIDERS & GET DATA TO MAKE VIDEO VISIT SERVICE (VVS) APPT "RTN","SDEC1",68,0) D VVSPROSEARCH^SDECVVS(.VVSPROVIDERS,SEARCHSTRING) Q "RTN","SDEC1",69,0) JSONVVSMAKEINFO(VVSMAKEINFO,PATIENTIEN,CLINICIEN,APPTDTTM) ;GET INFO TO MAKE A VIDEO VISIT WEB SERVICE (VVS) CALL "RTN","SDEC1",70,0) D GETVVSMAKEINFO^SDECVVSJSON(.VVSMAKEINFO,PATIENTIEN,CLINICIEN,APPTDTTM) Q "RTN","SDEC1",71,0) JSONVVSPRVSRCH(SDEC,SRCHSTR) ;EP RPC: SDEC SEARCH VVS PROVIDERS JSON "RTN","SDEC1",72,0) D JSONPRVLIST^SDECPRVSRCHJSON(.SDEC,SRCHSTR) Q "RTN","SDEC1",73,0) Q "RTN","SDEC807P") 0^^B2328287^n/a "RTN","SDEC807P",1,0) SDEC807P ;ALB/MGD - SD*5.3*807 Post Init Routine ; Feb 01, 2022@19:11 "RTN","SDEC807P",2,0) ;;5.3;SCHEDULING;**807**;AUG 13, 1993;Build 5 "RTN","SDEC807P",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDEC807P",4,0) ; "RTN","SDEC807P",5,0) D FIND "RTN","SDEC807P",6,0) Q "RTN","SDEC807P",7,0) ; "RTN","SDEC807P",8,0) FIND ;FIND THE IEN FOR "VS GUI NATIONAL" "RTN","SDEC807P",9,0) N SDECDA,SDECDA1 "RTN","SDEC807P",10,0) D MES^XPDUTL("Updating SDEC SETTINGS file (#409.98)") "RTN","SDEC807P",11,0) S SDECDA=0,SDECDA=$O(^SDEC(409.98,"B","VS GUI NATIONAL",SDECDA)) G:$G(SDECDA)="" NOFIND "RTN","SDEC807P",12,0) D VERSION ;update GUI version number and date "RTN","SDEC807P",13,0) Q "RTN","SDEC807P",14,0) VERSION ;SET THE NEW VERSION UPDATE IN SDEC SETTING FILE #409.98 TO 1.7.20 "RTN","SDEC807P",15,0) S DA=SDECDA,DIE=409.98,DR="2///1.7.20;3///"_DT D ^DIE ;update VS GUI NATIONAL "RTN","SDEC807P",16,0) K DIE,DR,DA "RTN","SDEC807P",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","SDEC807P",18,0) S DA=SDECDA1,DIE=409.98,DR="2///1.7.20;3///"_DT D ^DIE ;update VS GUI LOCAL "RTN","SDEC807P",19,0) K DIE,DR,DA "RTN","SDEC807P",20,0) Q "RTN","SDEC807P",21,0) ; "RTN","SDEC807P",22,0) NOFIND ;"VS GUI NATIONAL" NOT FOUND "RTN","SDEC807P",23,0) D MES^XPDUTL("VS GUI NATIONAL not found in the SDEC SETTINGS file (#409.98)") "RTN","SDEC807P",24,0) Q "RTN","SDECCONSJSON") 0^14^B38202800^B37663476 "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,807**;Aug 13, 1993;Build 5 "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) ..I $$GET1^DIQ(409.84,APPTIEN,.1,"I")=1 S CANCHANGE=1 "RTN","SDECCONSJSON",130,0) Q CANCHANGE "RTN","SDECCONSJSON",131,0) BLDJSON ; "RTN","SDECCONSJSON",132,0) D ENCODE^SDESJSON(.SDCONSREC,.SDCONJSON,.ERR) "RTN","SDECCONSJSON",133,0) K SDCONSREC "RTN","SDECCONSJSON",134,0) Q "RTN","SDECCONSJSON",135,0) ; "RTN","SDECCONSJSON",136,0) JSONCONSLIST1(SDCONJSON,SDCONSID) ;Return a single ACTIVE or PENDING CONSULT for a patient "RTN","SDECCONSJSON",137,0) ;INPUT - SDCONSID (Consult ID) IEN to REQUEST/CONSULTATION (#123) File. "RTN","SDECCONSJSON",138,0) ;RETURN PARMETER: "RTN","SDECCONSJSON",139,0) ; List of consults in ACTIVE or PENDING CPRS STATUS. Data is delimited by carat (^). "RTN","SDECCONSJSON",140,0) ; Field List: "RTN","SDECCONSJSON",141,0) ; (1) Internal IEN "RTN","SDECCONSJSON",142,0) ; (2) Request Type "RTN","SDECCONSJSON",143,0) ; (3) File Entry Date "RTN","SDECCONSJSON",144,0) ; (4) To Service/Specialty "RTN","SDECCONSJSON",145,0) ; (5) Clinic IEN "RTN","SDECCONSJSON",146,0) ; (6) Clinic Name "RTN","SDECCONSJSON",147,0) ; (7) Date of Request "RTN","SDECCONSJSON",148,0) ; (8) URGENCY name or Earliest date "RTN","SDECCONSJSON",149,0) ; (9) Provider IEN "RTN","SDECCONSJSON",150,0) ; (10) Provider Name "RTN","SDECCONSJSON",151,0) ; (11) Service Rendered as in or outpatient "RTN","SDECCONSJSON",152,0) ; (12) Associated Stop Code "RTN","SDECCONSJSON",153,0) ; (13) Prohibited Clinic Flag "RTN","SDECCONSJSON",154,0) ; (14) Clinic indicated Date "RTN","SDECCONSJSON",155,0) ; (15) # of Phone contacts "RTN","SDECCONSJSON",156,0) ; (16) Date of Last Letter "RTN","SDECCONSJSON",157,0) ; (17) Covid Priority "RTN","SDECCONSJSON",158,0) ; "RTN","SDECCONSJSON",159,0) N ACTIVE,PENDING,ERRPOP,ERRMSG,SDECI,SDTMP,SDCONSREC,DFN,ERR "RTN","SDECCONSJSON",160,0) S SDECI=$G(SDECI,0),ERR="" "RTN","SDECCONSJSON",161,0) D INIT "RTN","SDECCONSJSON",162,0) D VALIDATE1 "RTN","SDECCONSJSON",163,0) I ERRPOP D BLDJSON Q "RTN","SDECCONSJSON",164,0) S DFN=$$GET1^DIQ(123,SDCONSID,.02,"I") "RTN","SDECCONSJSON",165,0) D BLDCONSULTREC "RTN","SDECCONSJSON",166,0) D BLDJSON "RTN","SDECCONSJSON",167,0) K SDCONSARR "RTN","SDECCONSJSON",168,0) Q "RTN","SDECCONSJSON",169,0) ; "RTN","SDECCONSJSON",170,0) VALIDATE1 ; "RTN","SDECCONSJSON",171,0) ; *Add validation of IEN "RTN","SDECCONSJSON",172,0) I '(+SDCONSID) D "RTN","SDECCONSJSON",173,0) . ; create error message - Consultation ID is required "RTN","SDECCONSJSON",174,0) . D ERRLOG^SDESJSON(.SDCONSREC,5) "RTN","SDECCONSJSON",175,0) . S ERRPOP=1 "RTN","SDECCONSJSON",176,0) I $G(SDCONSID)>0,'$D(^GMR(123,SDCONSID,0)) D "RTN","SDECCONSJSON",177,0) . ; create error - Invalid Consult ID "RTN","SDECCONSJSON",178,0) . D ERRLOG^SDESJSON(.SDCONSREC,6) "RTN","SDECCONSJSON",179,0) . S ERRPOP=1 "RTN","SDECCONSJSON",180,0) Q "RTN","SDECVVSJSON") 0^6^B20003745^B17111301 "RTN","SDECVVSJSON",1,0) SDECVVSJSON ;ALB/TAW - Get Patient, Provider and System Info to make VVS call ;JAN 26, 2022 "RTN","SDECVVSJSON",2,0) ;;5.3;Scheduling;**797,801,804,805,807**;Aug 13, 1993;Build 5 "RTN","SDECVVSJSON",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDECVVSJSON",4,0) ; "RTN","SDECVVSJSON",5,0) ; Documented API's and Integration Agreements "RTN","SDECVVSJSON",6,0) ; ------------------------------------------- "RTN","SDECVVSJSON",7,0) ;Reference to $$GETS^DIQ,$$GETS1^DIQ in ICR #2056 "RTN","SDECVVSJSON",8,0) Q "RTN","SDECVVSJSON",9,0) ; "RTN","SDECVVSJSON",10,0) GETVVSMAKEINFO(SDVVSJSON,PATIENTIEN,CLINICIEN,APPTDTTM) ;GET INFO TO MAKE A VIDEO VISIT WEB SERVICE (VVS) CALL "RTN","SDECVVSJSON",11,0) ;INPUT: "RTN","SDECVVSJSON",12,0) ; PATIENTIEN (Patient IEN) "RTN","SDECVVSJSON",13,0) ; CLINICIEN (Clinic IEN) "RTN","SDECVVSJSON",14,0) ; APPTDTTM - Appointment date and time external format "RTN","SDECVVSJSON",15,0) ; "RTN","SDECVVSJSON",16,0) ;RETURN PARMETER: "RTN","SDECVVSJSON",17,0) ; Field List: "RTN","SDECVVSJSON",18,0) ; (1) Patient Info "RTN","SDECVVSJSON",19,0) ; (2) Default Provider Info "RTN","SDECVVSJSON",20,0) ; (3) System Info "RTN","SDECVVSJSON",21,0) ; "RTN","SDECVVSJSON",22,0) N SDVVSREC,ERRPOP,ERR,ERRMSG,SDESI,VVSPATIENT,VVSPROVIDER,PROVIDERINFO,VVSSYSTEMINFO "RTN","SDECVVSJSON",23,0) D INIT "RTN","SDECVVSJSON",24,0) D VALIDATE "RTN","SDECVVSJSON",25,0) I ERRPOP D BLDJSON Q "RTN","SDECVVSJSON",26,0) D BLDVVSREC "RTN","SDECVVSJSON",27,0) D BLDJSON "RTN","SDECVVSJSON",28,0) ; "RTN","SDECVVSJSON",29,0) K PATINFO,PROVIDERIEN,PROVIDERINFO,VVSSYSTEMINFO "RTN","SDECVVSJSON",30,0) Q "RTN","SDECVVSJSON",31,0) ; "RTN","SDECVVSJSON",32,0) INIT ; initialize values needed "RTN","SDECVVSJSON",33,0) S SDESI=0 "RTN","SDECVVSJSON",34,0) S SDESI=$G(SDESI,0),ERR="" "RTN","SDECVVSJSON",35,0) S (VVSPATIENT,VVSPROVIDER,PROVIDERINFO,VVSSYSTEMINFO)="" "RTN","SDECVVSJSON",36,0) S ERRPOP=0,SDESI=0,ERRMSG="" "RTN","SDECVVSJSON",37,0) Q "RTN","SDECVVSJSON",38,0) ; "RTN","SDECVVSJSON",39,0) VALIDATE ; validate incoming parameters "RTN","SDECVVSJSON",40,0) I PATIENTIEN="" D "RTN","SDECVVSJSON",41,0) . ;create error message - Patient IEN cannot be blank "RTN","SDECVVSJSON",42,0) . D ERRLOG^SDESJSON(.SDVVSREC,66) "RTN","SDECVVSJSON",43,0) . S ERRPOP=1 "RTN","SDECVVSJSON",44,0) I CLINICIEN="" D "RTN","SDECVVSJSON",45,0) . ;create error message - Clinic IEN cannot be blank "RTN","SDECVVSJSON",46,0) . D ERRLOG^SDESJSON(.SDVVSREC,67) "RTN","SDECVVSJSON",47,0) . S ERRPOP=1 "RTN","SDECVVSJSON",48,0) I APPTDTTM="" S ERRPOP=1 D ERRLOG^SDESJSON(.SDVVSREC,76) "RTN","SDECVVSJSON",49,0) I APPTDTTM'="" D "RTN","SDECVVSJSON",50,0) .S APPTDTTM=$$NETTOFM^SDECDATE(APPTDTTM) "RTN","SDECVVSJSON",51,0) .I APPTDTTM=-1 S ERRPOP=1 D ERRLOG^SDESJSON(.SDVVSREC,77) "RTN","SDECVVSJSON",52,0) Q "RTN","SDECVVSJSON",53,0) ; "RTN","SDECVVSJSON",54,0) BLDJSON ; "RTN","SDECVVSJSON",55,0) D ENCODE^SDESJSON(.SDVVSREC,.SDVVSJSON,.ERR) "RTN","SDECVVSJSON",56,0) K SDVVSREC "RTN","SDECVVSJSON",57,0) Q "RTN","SDECVVSJSON",58,0) ; "RTN","SDECVVSJSON",59,0) BLDVVSREC ;Build VVS info "RTN","SDECVVSJSON",60,0) ; "RTN","SDECVVSJSON",61,0) S SDVVSREC("VVSMakeInfo","Appointment","ApptDtTm")=$$FMTISO^SDAMUTDT(APPTDTTM,CLINICIEN) "RTN","SDECVVSJSON",62,0) S VVSPATIENT="" "RTN","SDECVVSJSON",63,0) D GETVVSPATIENT^SDECVVS(.VVSPATIENT,PATIENTIEN) "RTN","SDECVVSJSON",64,0) I VVSPATIENT'="" D "RTN","SDECVVSJSON",65,0) .S SDESI=1 "RTN","SDECVVSJSON",66,0) .S SDVVSREC("VVSMakeInfo","Patient","IEN")=$P(VVSPATIENT,"^",1) "RTN","SDECVVSJSON",67,0) .S SDVVSREC("VVSMakeInfo","Patient","DateOfBirth")=$P(VVSPATIENT,"^",2) "RTN","SDECVVSJSON",68,0) .S SDVVSREC("VVSMakeInfo","Patient","FirstName")=$P(VVSPATIENT,"^",3) "RTN","SDECVVSJSON",69,0) .S SDVVSREC("VVSMakeInfo","Patient","LastName")=$P(VVSPATIENT,"^",4) "RTN","SDECVVSJSON",70,0) .S SDVVSREC("VVSMakeInfo","Patient","SSN")=$P(VVSPATIENT,"^",5) "RTN","SDECVVSJSON",71,0) .S SDVVSREC("VVSMakeInfo","Patient","Email")=$P(VVSPATIENT,"^",6) "RTN","SDECVVSJSON",72,0) .S SDVVSREC("VVSMakeInfo","Patient","HomePhone")=$P(VVSPATIENT,"^",7) "RTN","SDECVVSJSON",73,0) .S SDVVSREC("VVSMakeInfo","Patient","CellPhone")=$P(VVSPATIENT,"^",8) "RTN","SDECVVSJSON",74,0) .S SDVVSREC("VVSMakeInfo","Patient","ICN")=$P(VVSPATIENT,"^",9) "RTN","SDECVVSJSON",75,0) .S SDVVSREC("VVSMakeInfo","Patient","ZipCode")=$P(VVSPATIENT,"^",10) "RTN","SDECVVSJSON",76,0) D GETDPROIEN^SDECVVS(.PROVIDERIEN,CLINICIEN) "RTN","SDECVVSJSON",77,0) D GETPROINFO^SDECVVS(.PROVIDERINFO,PROVIDERIEN) "RTN","SDECVVSJSON",78,0) I PROVIDERINFO'="" D "RTN","SDECVVSJSON",79,0) .S SDESI=1 "RTN","SDECVVSJSON",80,0) .S SDVVSREC("VVSMakeInfo","Provider","IEN")=$P(PROVIDERINFO,"^",1) "RTN","SDECVVSJSON",81,0) .S SDVVSREC("VVSMakeInfo","Provider","Name")=$P(PROVIDERINFO,"^",2) "RTN","SDECVVSJSON",82,0) .S SDVVSREC("VVSMakeInfo","Provider","Email")=$P(PROVIDERINFO,"^",3) "RTN","SDECVVSJSON",83,0) .S SDVVSREC("VVSMakeInfo","Provider","Cell")=$P(PROVIDERINFO,"^",4) "RTN","SDECVVSJSON",84,0) D GETSYSTEMINFO^SDECVVS(.VVSSYSTEMINFO,CLINICIEN) "RTN","SDECVVSJSON",85,0) I VVSSYSTEMINFO'="" D "RTN","SDECVVSJSON",86,0) .S SDESI=1 "RTN","SDECVVSJSON",87,0) .S SDVVSREC("VVSMakeInfo","SystemInfo","StationID")=$P(VVSSYSTEMINFO,"^",1) "RTN","SDECVVSJSON",88,0) .S SDVVSREC("VVSMakeInfo","SystemInfo","FacilityName")=$P(VVSSYSTEMINFO,"^",2) "RTN","SDECVVSJSON",89,0) .S SDVVSREC("VVSMakeInfo","SystemInfo","TimeZone")=$P(VVSSYSTEMINFO,"^",3) "RTN","SDECVVSJSON",90,0) .S SDVVSREC("VVSMakeInfo","SystemInfo","TimeZoneException")=$P(VVSSYSTEMINFO,"^",4) "RTN","SDECVVSJSON",91,0) .S SDVVSREC("VVSMakeInfo","SystemInfo","Offset")=$P(VVSSYSTEMINFO,"^",5) "RTN","SDECVVSJSON",92,0) .S SDVVSREC("VVSMakeInfo","SystemInfo","OffsetDST")=$P(VVSSYSTEMINFO,"^",6) "RTN","SDECVVSJSON",93,0) I '$D(SDVVSREC("VVSMakeInfo")) S SDVVSREC("VVSMakeInfo")="" "RTN","SDECVVSJSON",94,0) ; "RTN","SDECVVSJSON",95,0) I SDESI=0 D "RTN","SDECVVSJSON",96,0) . ;create error message - No VVS info found "RTN","SDECVVSJSON",97,0) . D ERRLOG^SDESJSON(.SDVVSREC,68) "RTN","SDECVVSJSON",98,0) . S ERRPOP=1 "RTN","SDECVVSJSON",99,0) Q "RTN","SDECVVSJSON",100,0) ; "RTN","SDES") 0^2^B53411184^B51321606 "RTN","SDES",1,0) SDES ;ALB/BLB,LAB,KML,MGD,ANU - VISTA SCHEDULING RPCS ;Jan 07, 2021 "RTN","SDES",2,0) ;;5.3;Scheduling;**788,790,792,794,797,799,800,801,803,804,805,807**;Aug 13, 1993;Build 5 "RTN","SDES",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDES",4,0) Q "RTN","SDES",5,0) ; This routine documents the entry points for the new VS GUI version 3.0. "RTN","SDES",6,0) ; "RTN","SDES",7,0) DISPOSITION(RET,ARIEN,DISP,DISPBY,DISPDT,EAS) ;RPC: SDES ARCLOSE "RTN","SDES",8,0) D DISPOSITION^SDESARCLOSE(.RET,$G(ARIEN),$G(DISP),$G(DISPBY),$G(DISPDT),$G(EAS)) Q "RTN","SDES",9,0) ARGETIENJSON(RET,IEN,EAS) ;RPC: SDES GET PAT APPT REQ BY IEN "RTN","SDES",10,0) D ARGETIENJSON^SDESARGET(.RET,IEN,$G(EAS)) Q "RTN","SDES",11,0) ARGETPATJSON(RET,DFN,EAS) ;RPC: SDES PATIENT APPT REQ GET "RTN","SDES",12,0) D ARGETPATJSON^SDESARGET(.RET,DFN,$G(EAS)) Q "RTN","SDES",13,0) APPTBLOCKMOVE(RETURN,APPTIEN,SDRES,APPTDTTM,EAS) ; RPC: SDES CREATE APPT BLK AND MOVE "RTN","SDES",14,0) D APPTBLOCKMOVE^SDESBLKANDMOVE(.RETURN,$G(APPTIEN),$G(SDRES),$G(APPTDTTM),$G(EAS)) Q "RTN","SDES",15,0) APPTBYCLINIC(JSON,CLINICIEN,SDBEG,SDEND,EAS) ;SDES GET APPT BY CLINIC "RTN","SDES",16,0) D APPTBYCLINIC^SDESAPPT(.JSON,$G(CLINICIEN),$G(SDBEG),$G(SDEND),$G(EAS)) Q "RTN","SDES",17,0) APPTBYRESOURCE(JSON,RESIEN,SDBEG,SDEND,EAS) ;SDES GET APPT BY RESOURCE "RTN","SDES",18,0) D APPTBYRESOURCE^SDESAPPT(.JSON,$G(RESIEN),$G(SDBEG),$G(SDEND),$G(EAS)) Q "RTN","SDES",19,0) APPGETJSON(JSON,DFN,SDBEG,SDEND,EAS) ; "RTN","SDES",20,0) D APPGETJSON^SDESAPPT(.JSON,$G(DFN),$G(SDBEG),$G(SDEND),$G(EAS)) Q "RTN","SDES",21,0) APPGETONEJSON(JSON,APPTIEN,EAS) ; "RTN","SDES",22,0) D APPGETONEJSON^SDESAPPT(.JSON,$G(APPTIEN),$G(EAS)) Q "RTN","SDES",23,0) ; Parameter list for APTREQCREATE and APTREQUPDATE *MUST* be kept in sync. "RTN","SDES",24,0) APTREQCREATE(JSON,ARIEN,DFN,AREDT,ARINST,ARTYPE,ARCLIN,ARUSER,ARREQBY,ARPROV,ARDAPTDT,ARCOMM,ARENPRI,ARMAR,ARMAI,AMRAN,ARPATCONT,ARSVCCON,ARSVCCOP,MRTCDT,ARSTOP,ARAPTYP,ARPATSTAT,MULTAPTMDE,ARPARENT,ARNLT,ARPRER,ARORDN,VAOSGUID,EAS) ; "RTN","SDES",25,0) S ARIEN="" ;There will never be an IEN when calling this RPC "RTN","SDES",26,0) D ARSET Q "RTN","SDES",27,0) APTREQUPDATE(JSON,ARIEN,DFN,AREDT,ARINST,ARTYPE,ARCLIN,ARUSER,ARREQBY,ARPROV,ARDAPTDT,ARCOMM,ARENPRI,ARMAR,ARMAI,AMRAN,ARPATCONT,ARSVCCON,ARSVCCOP,MRTCDT,ARSTOP,ARAPTYP,ARPATSTAT,MULTAPTMDE,ARPARENT,ARNLT,ARPRER,ARORDN,VAOSGUID,EAS) ; "RTN","SDES",28,0) S ARIEN=$G(ARIEN,"") "RTN","SDES",29,0) S:ARIEN="" ARIEN=-1 ;Flag missing ARIEN when calling the update RPC "RTN","SDES",30,0) D ARSET Q "RTN","SDES",31,0) ARSET ;Called from APTREQCREATE and APTREQUPDATE tags "RTN","SDES",32,0) S DFN=$G(DFN),AREDT=$G(AREDT),ARINST=$G(ARINST),ARTYPE=$G(ARTYPE),ARCLIN=$G(ARCLIN),ARUSER=$G(ARUSER),ARREQBY=$G(ARREQBY),ARPROV=$G(ARPROV),ARDAPTDT=$G(ARDAPTDT),ARCOMM=$G(ARCOMM),ARENPRI=$G(ARENPRI) "RTN","SDES",33,0) S ARMAR=$G(ARMAR),ARMAI=$G(ARMAI),AMRAN=$G(AMRAN),ARPATCONT=$G(ARPATCONT),ARSVCCON=$G(ARSVCCON),ARSVCCOP=$G(ARSVCCOP),MRTCDT=$G(MRTCDT),ARSTOP=$G(ARSTOP),ARAPTYP=$G(ARAPTYP),ARPATSTAT=$G(ARPATSTAT) "RTN","SDES",34,0) S MULTAPTMDE=$G(MULTAPTMDE),ARPARENT=$G(ARPARENT),ARNLT=$G(ARNLT),ARPRER=$G(ARPRER),ARORDN=$G(ARORDN),VAOSGUID=$G(VAOSGUID) "RTN","SDES",35,0) S EAS=$G(EAS) "RTN","SDES",36,0) ; Because of an SAC limitation on the number of chars per line, addition of more parameters will require "RTN","SDES",37,0) ; this to be changed over to passing an array. "RTN","SDES",38,0) D ARSET^SDESAPTREQSET(.JSON,ARIEN,DFN,AREDT,ARINST,ARTYPE,ARCLIN,ARUSER,ARREQBY,ARPROV,ARDAPTDT,ARCOMM,ARENPRI,ARMAR,ARMAI,AMRAN,ARPATCONT,ARSVCCON,ARSVCCOP,MRTCDT,ARSTOP,ARAPTYP,ARPATSTAT,MULTAPTMDE,ARPARENT,ARNLT,ARPRER,ARORDN,VAOSGUID,EAS) "RTN","SDES",39,0) Q "RTN","SDES",40,0) ; Appointment Request Create/Edit "RTN","SDES",41,0) ; SD*5.3*806 "RTN","SDES",42,0) APTREQ44CRT(JSON,ARIEN,DFN,ARDAPTDT,ARLEN,ARRSN,ARUSER,ARODT,PATELG,AROVB) ; Create Appointment in #44 "RTN","SDES",43,0) N ARUPD "RTN","SDES",44,0) S ARUPD=0 "RTN","SDES",45,0) D ARSET44 "RTN","SDES",46,0) Q "RTN","SDES",47,0) APTREQ44EDIT(JSON,ARIEN,DFN,ARDAPTDT,ARLEN,ARRSN,ARUSER,ARODT,PATELG,AROVB) ; Edit Appointment in #44 "RTN","SDES",48,0) N ARUPD "RTN","SDES",49,0) S ARUPD=1 "RTN","SDES",50,0) D ARSET44 "RTN","SDES",51,0) Q "RTN","SDES",52,0) ARSET44 ; Create/Edit Appointment in #44 "RTN","SDES",53,0) D ARSET^SDESAPTREQ44(.JSON,ARUPD,ARIEN,DFN,ARDAPTDT,ARLEN,ARRSN,ARUSER,ARODT,PATELG,AROVB) "RTN","SDES",54,0) Q "RTN","SDES",55,0) ARCANCEL44(RETURN,SDDFN,SDCLNIEN,SDARDTTM) ; RPC: SDES CANCEL APPT #44 "RTN","SDES",56,0) D ARCANCEL44^SDESCANCELAPPT44(.RETURN,SDDFN,SDCLNIEN,SDARDTTM) Q "RTN","SDES",57,0) ; "RTN","SDES",58,0) CANCELAPPT(SDECY,APPTIEN,STATUS,CANREAS,USER,EAS) ;SDES CANCEL APPT - cancel appointment "RTN","SDES",59,0) D CANCELAPPT^SDESCANCELAPPT(.SDECY,APPTIEN,STATUS,CANREAS,USER,EAS) Q "RTN","SDES",60,0) ; "RTN","SDES",61,0) CHECKIN(JSON,SDECAPTID,SDECCDT,SDECCC,SDECPRV) ;SDES APPT CHECKIN JSON "RTN","SDES",62,0) D CHECKIN^SDES25(.JSON,$G(SDECAPTID),$G(SDECCDT),$G(SDECCC),$G(SDECPRV)) Q "RTN","SDES",63,0) ; "RTN","SDES",64,0) ;The parameter list for the clinic create and set use generic parameter names to ensure we stay in SAC compliance "RTN","SDES",65,0) ;with the length of a single line. "RTN","SDES",66,0) CLINICCREATE(RET,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","SDES",67,0) ;CLINICCREATE(RET,CLINIEN,R1,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) ; "RTN","SDES",68,0) S CLINIEN="" ;There will never be an IEN when calling this RPC "RTN","SDES",69,0) D CLINICSET Q "RTN","SDES",70,0) CLINICEDIT(RET,CLINIEN,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","SDES",71,0) S CLINIEN=$G(CLINIEN,"") "RTN","SDES",72,0) S:CLINIEN="" CLINIEN=-1 ;Flag missing ARIEN when calling the update RPC "RTN","SDES",73,0) D CLINICSET Q "RTN","SDES",74,0) CLINICSET ;Called from CLINICCREATE and CLINICUPDATE tags "RTN","SDES",75,0) S P1=$G(P1),P2=$G(P2),P3=$G(P3),P4=$G(P4),P5=$G(P5),P6=$G(P6),P7=$G(P7),P8=$G(P8),P9=$G(P9),P10=$G(P10),P11=$G(P11),P12=$G(P12),P13=$G(P13),P14=$G(P14),P15=$G(P15),P16=$G(P16),P17=$G(P17) "RTN","SDES",76,0) S P18=$G(P18),P19=$G(P19),P20=$G(P20),P21=$G(P21),P22=$G(P22),P23=$G(P23) "RTN","SDES",77,0) S P24=$G(P24),P25=$G(P25),P26=$G(P26),P27=$G(P27),P28=$G(P28),P29=$G(P29),P30=$G(P30),P31=$G(P31),P32=$G(P32),P33=$G(P33),P34=$G(P34),P35=$G(P35),P36=$G(P36),P37=$G(P37),P38=$G(P38),P39=$G(P39),P40=$G(P40) "RTN","SDES",78,0) D CLINICSET^SDESCLINICSET(.RET,CLINIEN,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","SDES",79,0) Q "RTN","SDES",80,0) ; "RTN","SDES",81,0) CLINICSEARCH(SDECY,SEARCHSTRING) ;Given a search string return a clinic list that matches. "RTN","SDES",82,0) D CLINICSEARCH^SDESSEARCH(.SDECY,SEARCHSTRING) Q "RTN","SDES",83,0) CLINICRSCSEARCH(SDECY,SEARCHSTRING) ;Given a search string return a clinic list that matches. "RTN","SDES",84,0) D CLINICRSC^SDES01C(.SDECY,SEARCHSTRING) Q "RTN","SDES",85,0) GETREGA(SDECY,DFN,EAS) ;SDES GET REGISTRATION INFO "RTN","SDES",86,0) D GETREGA^SDESGETREGA(.SDECY,DFN,$G(EAS)) Q "RTN","SDES",87,0) INSURVERIFYREQ(JSON,DFN,EAS) ;SDES GET INSRUANCE VERIFY REQ "RTN","SDES",88,0) D INSURVERIFYREQ^SDESPATRPC(.JSON,$G(DFN),$G(EAS)) Q "RTN","SDES",89,0) SPACEBAR(SDECY,SDECDIC,SDECVAL) ;EP Update ^DISV with most recent lookup value SDECVAL from file SDECDIC "RTN","SDES",90,0) D SPACEBAR^SDES30(.SDECY,$G(SDECDIC),$G(SDECVAL)) Q "RTN","SDES",91,0) JSONINACTCLN(SDEC,CLINICIEN,EAS) ;EP RPC: SDES INACTIVATE CLINIC "RTN","SDES",92,0) D JSONINACTCLN^SDESINACTCLINIC(.SDEC,CLINICIEN,$G(EAS)) Q "RTN","SDES",93,0) JSONCLNINFO(SDEC,CLINICIEN,EAS) ;EP RPC: SDES GET CLINIC INFO "RTN","SDES",94,0) D JSONCLNINFO^SDESRTVCLN(.SDEC,CLINICIEN,$G(EAS)) Q "RTN","SDES",95,0) SETCLINAVAIL(RETURN,SDCLINIC,DATES,TIMES,SLOTS,SDEAS) ; RPC: SDES SET CLINIC AVAILABILITY "RTN","SDES",96,0) D SETCLINAVAIL^SDESCLNSETAVAIL(.RETURN,SDCLINIC,DATES,TIMES,SLOTS,SDEAS) Q "RTN","SDES",97,0) GETCLNAVAILABLTY(RET,CLINICIEN,SDESSTART,SDESENDDATE,EAS) ;EP RPC: SDES GET CLINIC AVAILABILITY-retrieve clinic availablity in a given timeframe "RTN","SDES",98,0) D GETCLAVAILABLTY^SDESCLINICAVAIL(.RET,CLINICIEN,SDESSTART,SDESENDDATE,$G(EAS)) Q "RTN","SDES",99,0) CANCLNAVAILABLTY(RET,SDCLNIEN,SDESCANDATE,SDESSTRTIM,SDESENDTIM,SDCANREM,SDEAS) ;Called from RPC: SDES CANCEL CLINIC AVAILABILITY "RTN","SDES",100,0) D CANCLAVAIL^SDESCCAVAIL(.RET,SDCLNIEN,SDESCANDATE,SDESSTRTIM,SDESENDTIM,SDCANREM,SDEAS) Q "RTN","SDES",101,0) GETUSRDTL(RET,SDSECID,EAS) ;Called from RPC: SDES GET USER PROFILE "RTN","SDES",102,0) D GETUSRDTL^SDESGETUD(.RET,$G(SDSECID),$G(EAS)) Q "RTN","SDES",103,0) GETUSRDTLDUZ(RET,SDUSRIEN,EAS) ;Called from RPC: SDES GET USER PROFILE BY DUZ "RTN","SDES",104,0) D GETUSRDTL^SDESGETUDDUZ(.RET,$G(SDUSRIEN),$G(EAS)) Q "RTN","SDES",105,0) RECGETLIST(SDECY,DFN,EAS) ; Get recalls based on patient DFN "RTN","SDES",106,0) D RECGETLIST^SDESGETRECALL(.SDECY,DFN,$G(EAS)) Q "RTN","SDES",107,0) RECGETONE(SDECY,IEN,EAS) ; Get recall based on IEN "RTN","SDES",108,0) D RECGETONE^SDESGETRECALL(.SDECY,IEN,$G(EAS)) Q "RTN","SDES",109,0) UPDRECALLREQ(RETN,RECALLIEN,DFN,ACCNO,SDCMT,FASTING,APPTP,RRPROVIEN,CLINIEN,APPTLEN,DATE,RECPPDT,DAPTDT,USERIEN,SECPDT,EAS) ;update recall request "RTN","SDES",110,0) D UPDRECALLREQ^SDESUPDRECREQ(.RETN,$G(RECALLIEN),$G(DFN),$G(ACCNO),$G(SDCMT),$G(FASTING),$G(APPTP),$G(RRPROVIEN),$G(CLINIEN),$G(APPTLEN),$G(DATE),$G(RECPPDT),$G(DAPTDT),$G(USERIEN),$G(SECPDT),$G(EAS)) Q "RTN","SDES",111,0) CREATERECREQ(RETN,DFN,ACCNO,SDCMT,FASTING,APPTP,RRPROVIEN,CLINIEN,APPTLEN,DATE,RECPPDT,DAPTDT,USERIEN,SECPDT,SDENTDT,EAS) ;update recall request "RTN","SDES",112,0) D CREATERECREQ^SDESUPDRECREQ(.RETN,$G(DFN),$G(ACCNO),$G(SDCMT),$G(FASTING),$G(APPTP),$G(RRPROVIEN),$G(CLINIEN),$G(APPTLEN),$G(DATE),$G(RECPPDT),$G(DAPTDT),$G(USERIEN),$G(SECPDT),$G(SDENTDT),$G(EAS)) Q "RTN","SDES",113,0) DISPRECALL(SDECY,RECALLIEN,REASON,COMMENT,EAS) ; for a PtCSch request, set disposition reason and DELETE an entry from the RECALL REMINDERS file 403.5 "RTN","SDES",114,0) D DISPRECALL^SDESDISPRECALL(.SDECY,$G(RECALLIEN),$G(REASON),$G(COMMENT),$G(EAS)) Q "RTN","SDES",115,0) GETAPPOINTMENTS(SDECY,SDCLIN,SDSTDTTM,SDENDDTTM) ;get appointments for clinic out of file 44 "RTN","SDES",116,0) D GETAPPOINTMENTS^SDESGETCLINAPPT(.SDECY,$G(SDCLIN),$G(SDSTDTTM),$G(SDENDDTTM)) "RTN","SDES",117,0) GETSTOPCODE(SDECY,SDSTCD) ;get stop code details out of file 40.7 "RTN","SDES",118,0) D GETSTCDDTL^SDESGETSTOPCODE(.SDECY,$G(SDSTCD)) "RTN","SDES",119,0) GETPATCHNUM(SDECY) ; get latest SD patch number installed on system "RTN","SDES",120,0) D GETPATCHNUM^SDESPATCHINFO(.SDECY) "RTN","SDES",121,0) Q "RTN","SDES01C") 0^11^B10168681^B8699364 "RTN","SDES01C",1,0) SDES01C ;ALB/ANU,TAW - VISTA SCHEDULING RPCS ;FEB 03, 2022 "RTN","SDES01C",2,0) ;;5.3;Scheduling;**790,807**;Aug 13, 1993;Build 5 "RTN","SDES01C",3,0) ;;Per VHA Directive 2004-038, this routine should not be modified "RTN","SDES01C",4,0) ; "RTN","SDES01C",5,0) Q "RTN","SDES01C",6,0) ; "RTN","SDES01C",7,0) CLINICRSC(CLINICLIST,SEARCHSTRING) ;Returns first 50 matching RESOURCE names "RTN","SDES01C",8,0) ; SEARCHSTRING - (Required) Partial name text of at least 3 characters "RTN","SDES01C",9,0) ;RETURN: "RTN","SDES01C",10,0) ; Successful Return: "RTN","SDES01C",11,0) ; a JSON formatted string that contains data from the "RTN","SDES01C",12,0) ; HOSPITAL LOCATION file "RTN","SDES01C",13,0) ; 1. CLINIC IEN - Pointer to the HOSPITAL LOCATION file 44 "RTN","SDES01C",14,0) ; 2. CLINIC NAME - Clinic Name from HOSPITAL LOCATION file 44 "RTN","SDES01C",15,0) ; "RTN","SDES01C",16,0) N SDTYPE,MAXREC,SDACT,CLINICINFO,SDX,SDXT,SDECI,SDECRES,SDRT,SDF,SDECRNOD,SDTYPE,SDHL,SDCN,POP "RTN","SDES01C",17,0) D SDINIT "RTN","SDES01C",18,0) D LOOKUP "RTN","SDES01C",19,0) ;JSON format "RTN","SDES01C",20,0) D ENCODE^SDESJSON(.CLINICINFO,.CLINICLIST) "RTN","SDES01C",21,0) Q "RTN","SDES01C",22,0) ; "RTN","SDES01C",23,0) LOOKUP ; "RTN","SDES01C",24,0) I $L(SEARCHSTRING)<3!($L(SEARCHSTRING)>30) S SEARCHSTRING="",POP=1 D ERRLOG^SDESJSON(.CLINICINFO,52,"Search string must be between 3 and 30 chars") Q "RTN","SDES01C",25,0) ;partial name lookup "RTN","SDES01C",26,0) I SEARCHSTRING'="" D "RTN","SDES01C",27,0) .S SDX=$$GETSUB^SDEC56(SEARCHSTRING) "RTN","SDES01C",28,0) .F S SDX=$O(^SDEC(409.831,"B",SDX)) Q:SDX="" Q:SDX'[SEARCHSTRING D Q:(+MAXREC)&(SDECI'SDEND S POP=1 Q ;End loop since past the end date "RTN","SDESAPPT",74,0) ..S APPTIEN="" "RTN","SDESAPPT",75,0) ..F S APPTIEN=$O(^SDEC(409.84,"ARSRC",SDRESIEN,APPTDT,APPTIEN)) Q:APPTIEN="" D "RTN","SDESAPPT",76,0) ...D SUMMARY^SDESAPPTDATA(.APPTDATA,APPTIEN) "RTN","SDESAPPT",77,0) ...M SDAPPT("Appt",$I(COUNTER))=APPTDATA "RTN","SDESAPPT",78,0) ...S DFN=$G(SDAPPT("Appt",COUNTER,"DFN")) "RTN","SDESAPPT",79,0) ...S PATIENT="" "RTN","SDESAPPT",80,0) ...D PATIENTIDADDDON^SDESPATIENTDATA(.PATIENT,DFN) "RTN","SDESAPPT",81,0) ...M SDAPPT("Appt",COUNTER,"Patient")=PATIENT "RTN","SDESAPPT",82,0) .I '$D(SDAPPT("Appt")) S SDAPPT("Appt")="" "RTN","SDESAPPT",83,0) D BUILDER "RTN","SDESAPPT",84,0) Q "RTN","SDESAPPT",85,0) APPTBYCLINIC(SDECY,SDCLINICIEN,SDBEG,SDEND,SDEAS) ; "RTN","SDESAPPT",86,0) N POP,APPTIEN,APPTDT,SDAPPT,APPTDATA,COUNTER,JSONERR,DFN,PATIENT,RESTYPE,SDRESIEN "RTN","SDESAPPT",87,0) S (POP,APPTIEN,COUNTER,JSONERR)="" "RTN","SDESAPPT",88,0) K SDECY "RTN","SDESAPPT",89,0) ;Validate input paramaters "RTN","SDESAPPT",90,0) S SDBEG=$G(SDBEG) "RTN","SDESAPPT",91,0) S SDEND=$G(SDEND) "RTN","SDESAPPT",92,0) S POP=$$VALIDATEDT(.SDBEG,.SDEND) "RTN","SDESAPPT",93,0) I $G(SDCLINICIEN)="" S POP=1 D ERRLOG^SDESJSON(.SDAPPT,18) "RTN","SDESAPPT",94,0) I $G(SDCLINICIEN)'="",'$D(^SC(SDCLINICIEN,0)) S POP=1 D ERRLOG^SDESJSON(.SDAPPT,19) "RTN","SDESAPPT",95,0) S SDEAS=$G(SDEAS,"") "RTN","SDESAPPT",96,0) I $L(SDEAS) S SDEAS=$$EASVALIDATE^SDESUTIL(SDEAS) "RTN","SDESAPPT",97,0) I +SDEAS=-1 S POP=1 D ERRLOG^SDESJSON(.SDAPPT,142) "RTN","SDESAPPT",98,0) I 'POP D "RTN","SDESAPPT",99,0) .S SDRESIEN="" "RTN","SDESAPPT",100,0) .F S SDRESIEN=$O(^SDEC(409.831,"ALOC",SDCLINICIEN,SDRESIEN)) Q:SDRESIEN="" D "RTN","SDESAPPT",101,0) ..S RESTYPE=$P($G(^SDEC(409.831,SDRESIEN,0)),"^",11) "RTN","SDESAPPT",102,0) ..I $P(RESTYPE,";",2)'="SC(" Q ;Must be a Hospital Loc "RTN","SDESAPPT",103,0) ..S APPTDT=SDBEG-.0001 "RTN","SDESAPPT",104,0) ..S SDEND=SDEND+.0001 "RTN","SDESAPPT",105,0) ..F S APPTDT=$O(^SDEC(409.84,"ARSRC",SDRESIEN,APPTDT)) Q:APPTDT="" D Q:POP "RTN","SDESAPPT",106,0) ...I SDEND,APPTDT>SDEND S POP=1 Q ;End loop since past the end date "RTN","SDESAPPT",107,0) ...S APPTIEN="" "RTN","SDESAPPT",108,0) ...F S APPTIEN=$O(^SDEC(409.84,"ARSRC",SDRESIEN,APPTDT,APPTIEN)) Q:APPTIEN="" D "RTN","SDESAPPT",109,0) ....D SUMMARY^SDESAPPTDATA(.APPTDATA,APPTIEN) "RTN","SDESAPPT",110,0) ....M SDAPPT("Appt",$I(COUNTER))=APPTDATA "RTN","SDESAPPT",111,0) ....S DFN=$G(SDAPPT("Appt",COUNTER,"DFN")) "RTN","SDESAPPT",112,0) ....S PATIENT="" "RTN","SDESAPPT",113,0) ....D PATIENTIDADDDON^SDESPATIENTDATA(.PATIENT,DFN) "RTN","SDESAPPT",114,0) ....M SDAPPT("Appt",COUNTER,"Patient")=PATIENT "RTN","SDESAPPT",115,0) .I '$D(SDAPPT("Appt")) S SDAPPT("Appt")="" "RTN","SDESAPPT",116,0) D BUILDER "RTN","SDESAPPT",117,0) Q "RTN","SDESAPPT",118,0) ; "RTN","SDESAPPT",119,0) BUILDER ;Convert data to JSON "RTN","SDESAPPT",120,0) N JSONERR "RTN","SDESAPPT",121,0) S JSONERR="" "RTN","SDESAPPT",122,0) D ENCODE^SDESJSON(.SDAPPT,.SDECY,.JSONERR) "RTN","SDESAPPT",123,0) Q "RTN","SDESAPPT",124,0) ; "RTN","SDESAPPT",125,0) VALIDATEDT(FROM,THRU) ; "RTN","SDESAPPT",126,0) N POP "RTN","SDESAPPT",127,0) S POP=0 ;Assume all is good "RTN","SDESAPPT",128,0) I FROM="" S POP=1 D ERRLOG^SDESJSON(.SDAPPT,25) "RTN","SDESAPPT",129,0) I THRU="" S POP=1 D ERRLOG^SDESJSON(.SDAPPT,26) "RTN","SDESAPPT",130,0) I FROM'="" D "RTN","SDESAPPT",131,0) .S FROM=$$NETTOFM^SDECDATE(FROM,"Y") "RTN","SDESAPPT",132,0) .I FROM=-1 S POP=1 D ERRLOG^SDESJSON(.SDAPPT,27) "RTN","SDESAPPT",133,0) I THRU'="" D "RTN","SDESAPPT",134,0) .S THRU=$$NETTOFM^SDECDATE(THRU,"Y") "RTN","SDESAPPT",135,0) .I THRU=-1 S POP=1 D ERRLOG^SDESJSON(.SDAPPT,28) "RTN","SDESAPPT",136,0) I 'POP,THRU,FROM D "RTN","SDESAPPT",137,0) .I FROM>THRU S POP=1 D ERRLOG^SDESJSON(.SDAPPT,29) "RTN","SDESAPPT",138,0) Q POP "RTN","SDESAPPT",139,0) ; "RTN","SDESAPPT",140,0) APPTINDTRANGE(IEN,BEG,END) ; "RTN","SDESAPPT",141,0) ;Function to check if the Appt Sart Date / Time is within the desired date range "RTN","SDESAPPT",142,0) ; "RTN","SDESAPPT",143,0) ; Input "RTN","SDESAPPT",144,0) ; IEN - Internal # from Appointment File (409.84) "RTN","SDESAPPT",145,0) ; BEG - (Optional) Date in FM format "RTN","SDESAPPT",146,0) ; END - (Optional) Date in FM format "RTN","SDESAPPT",147,0) ; Return "RTN","SDESAPPT",148,0) ; 1 = Appointment Start Time is within BEG and END "RTN","SDESAPPT",149,0) ; 0 = Not within the date range "RTN","SDESAPPT",150,0) N INRANGE,APPTDT,FN,IENS,APPTARY,SDMSG,IENS "RTN","SDESAPPT",151,0) S INRANGE=1 ;Assume success "RTN","SDESAPPT",152,0) S FN=409.84,IENS=IEN_"," "RTN","SDESAPPT",153,0) D GETS^DIQ(FN,IEN,".01","I","APPTARY","SDMSG") "RTN","SDESAPPT",154,0) S APPTDT=$G(APPTARY(FN,IENS,.01,"I")) "RTN","SDESAPPT",155,0) I APPTDT=""!($G(SDMSG)) S INRANGE=0 "RTN","SDESAPPT",156,0) I $G(BEG),$G(APPTDT) S:APPTDTEND INRANGE=0 "RTN","SDESAPPT",158,0) Q INRANGE "RTN","SDESBLKANDMOVE") 0^15^B161133376^B161097023 "RTN","SDESBLKANDMOVE",1,0) SDESBLKANDMOVE ;ALB/MGD/TAW - BLOCK AND MOVE ;Mar 07, 2022 "RTN","SDESBLKANDMOVE",2,0) ;;5.3;Scheduling;**797,799,800,801,803,804,805,807**;Aug 13, 1993;Build 5 "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","SDESCKNSTEP") 0^9^B64223185^B63763776 "RTN","SDESCKNSTEP",1,0) SDESCKNSTEP ;ALB/BLB,TAW,MGD - VISTA SCHEDULING RPCS ;Jan 28, 2022 "RTN","SDESCKNSTEP",2,0) ;;5.3;Scheduling;**788,790,792,800,805,807**;Aug 13, 1993;Build 5 "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")["CANCEL" 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!(STATUS?1P.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!(STATUS?1P.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",NUM,"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","SDESGETSTOPCODE") 0^3^B5904554^n/a "RTN","SDESGETSTOPCODE",1,0) SDESGETSTOPCODE ;ALB/ANU - VISTA SCHEDULING READ STOP CODE DETAILS ;Jan 25,2022@15:01 "RTN","SDESGETSTOPCODE",2,0) ;;5.3;Scheduling;**807**;Aug 13, 1993;Build 5 "RTN","SDESGETSTOPCODE",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESGETSTOPCODE",4,0) Q "RTN","SDESGETSTOPCODE",5,0) ; "RTN","SDESGETSTOPCODE",6,0) GETSTCDDTL(SDSTCDJSON,SDSTCD) ;get all details of Stop Code from CLINIC STOP file #40.7 "RTN","SDESGETSTOPCODE",7,0) ; INPUT: "RTN","SDESGETSTOPCODE",8,0) ; SDSTCD - Clinic Stop Code "RTN","SDESGETSTOPCODE",9,0) ; "RTN","SDESGETSTOPCODE",10,0) N ERRPOP,ERR,ERRMSG,SDECI,SDSTCDREC,SDSTCDIEN "RTN","SDESGETSTOPCODE",11,0) D INIT "RTN","SDESGETSTOPCODE",12,0) D VALIDATE "RTN","SDESGETSTOPCODE",13,0) I ERRPOP D BLDJSON Q "RTN","SDESGETSTOPCODE",14,0) D GETSTCDINF "RTN","SDESGETSTOPCODE",15,0) D BLDJSON "RTN","SDESGETSTOPCODE",16,0) Q "RTN","SDESGETSTOPCODE",17,0) ; "RTN","SDESGETSTOPCODE",18,0) INIT ; initialize values needed "RTN","SDESGETSTOPCODE",19,0) S SDECI=0,SDSTCDIEN="" "RTN","SDESGETSTOPCODE",20,0) S ERR="" "RTN","SDESGETSTOPCODE",21,0) S ERRPOP=0,ERRMSG="" "RTN","SDESGETSTOPCODE",22,0) Q "RTN","SDESGETSTOPCODE",23,0) ; "RTN","SDESGETSTOPCODE",24,0) VALIDATE ;Validate required fields are sent "RTN","SDESGETSTOPCODE",25,0) I $G(SDSTCD)="" D ERRLOG^SDESJSON(.SDSTCDREC,98) S ERRPOP=1 Q "RTN","SDESGETSTOPCODE",26,0) S SDSTCDIEN=$$FIND1^DIC(40.7,,"X",$G(SDSTCD),"C",,"SDERR") "RTN","SDESGETSTOPCODE",27,0) I $G(SDSTCDIEN)=""!$G(SDSTCDIEN)=0 D ERRLOG^SDESJSON(.SDSTCDREC,99) S ERRPOP=1 Q "RTN","SDESGETSTOPCODE",28,0) Q "RTN","SDESGETSTOPCODE",29,0) ; "RTN","SDESGETSTOPCODE",30,0) GETSTCDINF ; Get Stop Code Information "RTN","SDESGETSTOPCODE",31,0) N SDFIELDS,SDDATA,SDMSG "RTN","SDESGETSTOPCODE",32,0) S SDFIELDS=".01;2;3;4;5;6" "RTN","SDESGETSTOPCODE",33,0) D GETS^DIQ(40.7,SDSTCDIEN_",",SDFIELDS,"IE","SDDATA","SDMSG") "RTN","SDESGETSTOPCODE",34,0) S SDSTCDREC("Stop Code","Name")=$G(SDDATA(40.7,SDSTCDIEN_",",.01,"E")) ;Stop Code Name "RTN","SDESGETSTOPCODE",35,0) S SDSTCDREC("Stop Code","IEN")=SDSTCDIEN ;Stop Code IEN "RTN","SDESGETSTOPCODE",36,0) S SDSTCDREC("Stop Code","Inactive Date")=$$FMTISO^SDAMUTDT($G(SDDATA(40.7,SDSTCDIEN_",",2,"I"))) ;Inactive Date "RTN","SDESGETSTOPCODE",37,0) S SDSTCDREC("Stop Code","Cost Distribution Center")=$G(SDDATA(40.7,SDSTCDIEN_",",4,"E")) ;Cost Distribution Center "RTN","SDESGETSTOPCODE",38,0) S SDSTCDREC("Stop Code","Restriction Type")=$G(SDDATA(40.7,SDSTCDIEN_",",5,"E")) ;Restrication Type "RTN","SDESGETSTOPCODE",39,0) S SDSTCDREC("Stop Code","Restriction Date")=$$FMTISO^SDAMUTDT($G(SDDATA(40.7,SDSTCDIEN_",",6,"I"))) ;Restriction Date "RTN","SDESGETSTOPCODE",40,0) Q "RTN","SDESGETSTOPCODE",41,0) ; "RTN","SDESGETSTOPCODE",42,0) BLDJSON ; Build JSON format "RTN","SDESGETSTOPCODE",43,0) D ENCODE^SDESJSON(.SDSTCDREC,.SDSTCDJSON,.ERR) "RTN","SDESGETSTOPCODE",44,0) K SDUSRSREC "RTN","SDESGETSTOPCODE",45,0) Q "RTN","SDESGETSTOPCODE",46,0) ; "RTN","SDESGETUDDUZ") 0^12^B9688277^n/a "RTN","SDESGETUDDUZ",1,0) SDESGETUDDUZ ;ALB/ANU - VISTA SCHEDULING RPCS GET USER KEYS AND OPTIONS ; Jan 07, 2022@15:20 "RTN","SDESGETUDDUZ",2,0) ;;5.3;Scheduling;**807**;Aug 13, 1993;Build 5 "RTN","SDESGETUDDUZ",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESGETUDDUZ",4,0) ; "RTN","SDESGETUDDUZ",5,0) ;Global References Supported by ICR# Type "RTN","SDESGETUDDUZ",6,0) ;----------------- ----------------- ---------- "RTN","SDESGETUDDUZ",7,0) ; ^TMP($J SACC 2.3.2.5.1 "RTN","SDESGETUDDUZ",8,0) ; "RTN","SDESGETUDDUZ",9,0) ;External References "RTN","SDESGETUDDUZ",10,0) ;------------------- "RTN","SDESGETUDDUZ",11,0) ;Reference to $$GETS^DIQ,$$GETS1^DIQ in ICR #2056 "RTN","SDESGETUDDUZ",12,0) ;Reference to $$SITE^VASITE in ICR #10112 "RTN","SDESGETUDDUZ",13,0) ;Reference to ^%DT in ICR #10003 "RTN","SDESGETUDDUZ",14,0) ;Reference to $$FIND1^DIC in ICR #2051 "RTN","SDESGETUDDUZ",15,0) ; "RTN","SDESGETUDDUZ",16,0) Q ;No Direct Call "RTN","SDESGETUDDUZ",17,0) ; "RTN","SDESGETUDDUZ",18,0) GETUSRDTL(SDUSRJSON,SDUSRIEN,SDEAS) ;Called from RPC: SDES GET USER PROFILE "RTN","SDESGETUDDUZ",19,0) ; This RPC gets User name, Keys and Scheduling Options for a given User. "RTN","SDESGETUDDUZ",20,0) ; Input: "RTN","SDESGETUDDUZ",21,0) ; SDCLNJSON - [required] - Successs or Error message "RTN","SDESGETUDDUZ",22,0) ; SDDUZ - [required] - The IEN from the NEW PERSON File #200 "RTN","SDESGETUDDUZ",23,0) ; SDEAS - [optional] - Enterprise Appointment Scheduling (EAS) Tracking Number associated to an appointment. "RTN","SDESGETUDDUZ",24,0) ; "RTN","SDESGETUDDUZ",25,0) N ERRPOP,ERR,ERRMSG,SDECI,SDUSRSREC "RTN","SDESGETUDDUZ",26,0) D INIT "RTN","SDESGETUDDUZ",27,0) D VALIDATE "RTN","SDESGETUDDUZ",28,0) I ERRPOP D BLDJSON Q "RTN","SDESGETUDDUZ",29,0) D GETUSRINF "RTN","SDESGETUDDUZ",30,0) D BLDJSON "RTN","SDESGETUDDUZ",31,0) Q "RTN","SDESGETUDDUZ",32,0) ; "RTN","SDESGETUDDUZ",33,0) INIT ; initialize values needed "RTN","SDESGETUDDUZ",34,0) S SDECI=0 "RTN","SDESGETUDDUZ",35,0) S ERR="" "RTN","SDESGETUDDUZ",36,0) S ERRPOP=0,ERRMSG="" "RTN","SDESGETUDDUZ",37,0) Q "RTN","SDESGETUDDUZ",38,0) ; "RTN","SDESGETUDDUZ",39,0) VALIDATE ; validate incoming parameters "RTN","SDESGETUDDUZ",40,0) I SDUSRIEN="" D ERRLOG^SDESJSON(.SDUSRSREC,127) S ERRPOP=1 Q "RTN","SDESGETUDDUZ",41,0) I '$D(^VA(200,SDUSRIEN,0)) D ERRLOG^SDESJSON(.SDUSRSREC,44) S ERRPOP=1 Q "RTN","SDESGETUDDUZ",42,0) S SDEAS=$G(SDEAS,"") "RTN","SDESGETUDDUZ",43,0) I $L(SDEAS) S SDEAS=$$EASVALIDATE^SDESUTIL(SDEAS) "RTN","SDESGETUDDUZ",44,0) I +SDEAS=-1 D ERRLOG^SDESJSON(.SDUSRSREC,142) S ERRPOP=1 "RTN","SDESGETUDDUZ",45,0) Q "RTN","SDESGETUDDUZ",46,0) ; "RTN","SDESGETUDDUZ",47,0) BLDJSON ; Build JSON format "RTN","SDESGETUDDUZ",48,0) D ENCODE^SDESJSON(.SDUSRSREC,.SDUSRJSON,.ERR) "RTN","SDESGETUDDUZ",49,0) K SDUSRSREC "RTN","SDESGETUDDUZ",50,0) Q "RTN","SDESGETUDDUZ",51,0) ; "RTN","SDESGETUDDUZ",52,0) GETUSRINF ; Get User Keys and Scheduling Options "RTN","SDESGETUDDUZ",53,0) N SDFIELDS,SDDATA,SDMSG,SDX,SDC,SDOPT,SDKEY "RTN","SDESGETUDDUZ",54,0) S SDFIELDS=".01;201" "RTN","SDESGETUDDUZ",55,0) D GETS^DIQ(200,SDUSRIEN_",",SDFIELDS,"IE","SDDATA","SDMSG") "RTN","SDESGETUDDUZ",56,0) S SDECI=SDECI+1 "RTN","SDESGETUDDUZ",57,0) S SDUSRSREC("User","Name")=$G(SDDATA(200,SDUSRIEN_",",.01,"E")) ;User Name "RTN","SDESGETUDDUZ",58,0) S SDUSRSREC("User","IEN")=SDUSRIEN "RTN","SDESGETUDDUZ",59,0) S SDUSRSREC("User","Station ID")=$P($$SITE^VASITE(),"^",3) "RTN","SDESGETUDDUZ",60,0) S SDOPT=$G(SDDATA(200,SDUSRIEN_",",201,"E")) "RTN","SDESGETUDDUZ",61,0) I $E(SDOPT,1,2)="SD"!$E(SDOPT,1,2)="SC" S SDUSRSREC("User","Primary Menu Option")=SDOPT ;Primary Menu Option "RTN","SDESGETUDDUZ",62,0) ; Secondary Options Multiple "RTN","SDESGETUDDUZ",63,0) S SDX="",SDC=0 "RTN","SDESGETUDDUZ",64,0) S SDFIELDS="203*" "RTN","SDESGETUDDUZ",65,0) K SDDATA,SDMSG "RTN","SDESGETUDDUZ",66,0) D GETS^DIQ(200,SDUSRIEN_",",SDFIELDS,"E","SDDATA","SDMSG") "RTN","SDESGETUDDUZ",67,0) F S SDX=$O(SDDATA(200.03,SDX)) Q:SDX="" D "RTN","SDESGETUDDUZ",68,0) . S SDOPT=$G(SDDATA(200.03,SDX,.01,"E")) "RTN","SDESGETUDDUZ",69,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","SDESGETUDDUZ",70,0) ; Security Keys Multiple "RTN","SDESGETUDDUZ",71,0) S SDX="",SDC=0 "RTN","SDESGETUDDUZ",72,0) S SDFIELDS="51*" "RTN","SDESGETUDDUZ",73,0) K SDDATA,SDMSG "RTN","SDESGETUDDUZ",74,0) D GETS^DIQ(200,SDUSRIEN_",",SDFIELDS,"E","SDDATA","SDMSG") "RTN","SDESGETUDDUZ",75,0) F S SDX=$O(SDDATA(200.051,SDX)) Q:SDX="" D "RTN","SDESGETUDDUZ",76,0) . S SDKEY=$G(SDDATA(200.051,SDX,.01,"E")) "RTN","SDESGETUDDUZ",77,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","SDESGETUDDUZ",78,0) I '$D(SDUSRSREC("User")) S SDUSRSREC("User")="" "RTN","SDESGETUDDUZ",79,0) Q "RTN","SDESJSON") 0^8^B69804754^B69391825 "RTN","SDESJSON",1,0) SDESJSON ;ALB/MGD,ANU,TAW,KML - VISTA SCHEDULING JSON UTILITIES ;FEB 1, 2022 "RTN","SDESJSON",2,0) ;;5.3;Scheduling;**788,794,797,799,800,801,803,805,807**;Aug 13, 1993;Build 5;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 can not begin with a punctuation must contain letters "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","SDESPATCHINFO") 0^10^B1512849^n/a "RTN","SDESPATCHINFO",1,0) SDESPATCHINFO ;ALB/KML - VISTA SCHEDULING RPCS GET CURRENT PATCH NUMBER ; FEB 2, 2022 "RTN","SDESPATCHINFO",2,0) ;;5.3;Scheduling;**807**;Aug 13, 1993;Build 5 "RTN","SDESPATCHINFO",3,0) ;;Per VHA Directive 6402, this routine should not be modified "RTN","SDESPATCHINFO",4,0) ; "RTN","SDESPATCHINFO",5,0) Q ;No Direct Call "RTN","SDESPATCHINFO",6,0) ; RPC: SDES GET PATCH NUMBER "RTN","SDESPATCHINFO",7,0) GETPATCHNUM(RETURN) ; "RTN","SDESPATCHINFO",8,0) ; This RPC returns the latest patch installed on the system "RTN","SDESPATCHINFO",9,0) ; Input/output: "RTN","SDESPATCHINFO",10,0) ; RETURN passed by reference/RETURN latest patch installed on system "RTN","SDESPATCHINFO",11,0) N X,ERR,SDARRAY "RTN","SDESPATCHINFO",12,0) S X=$P($$LAST^XPDUTL("SD"),U),ERR="" ;supported reference IA 10141 "RTN","SDESPATCHINFO",13,0) I X=-1 S SDARRAY("Error",1)="ERROR: the Scheduling software or version does not exist or no patches have been applied." "RTN","SDESPATCHINFO",14,0) E S SDARRAY("Latest SD patch number")=X "RTN","SDESPATCHINFO",15,0) D ENCODE^SDESJSON(.SDARRAY,.RETURN,.ERR) "RTN","SDESPATCHINFO",16,0) Q "RTN","SDESPATRPC") 0^7^B8227942^B6681657 "RTN","SDESPATRPC",1,0) SDESPATRPC ;ALB/TAW,MGD - PATIENT RPCS ;Jan 24, 2022 "RTN","SDESPATRPC",2,0) ;;5.3;Scheduling;**792,804,805,807**;Aug 13, 1993;Build 5 "RTN","SDESPATRPC",3,0) ; "RTN","SDESPATRPC",4,0) ; Reference to ^IBA(355.33 in ICR #6891 "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,INDEXDT,INDEXEND,IBAIEN,IBADATA "RTN","SDESPATRPC",26,0) S NEEDVERIFY=1 "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) S INDEXDT=$$FMADD^XLFDT(DT,1) "RTN","SDESPATRPC",31,0) S INDEXEND=$$FMADD^XLFDT(DT,-LASTVERFWINDOW) "RTN","SDESPATRPC",32,0) F S INDEXDT=$O(^IBA(355.33,"B",INDEXDT),-1) Q:INDEXDT=""!(INDEXDT