SDES933P ;ALB/BLB - SD*5.3*933 Post Init Routine ; Nov 06, 2025
;;5.3;SCHEDULING;**933**;AUG 13, 1993;Build 2
;;Per VHA Directive 6402, this routine should not be modified
;;
Q
;
EN ;
D TASK
Q
;
TASK ; tasks off process to update the direct patient schedule field in the hospital location file
D MES^XPDUTL("")
D MES^XPDUTL(" SD*5.3*933 Post-Install to create utilization report for off hour clinics.")
D MES^XPDUTL("")
N ZTDESC,ZTRTN,ZTIO,ZTSK,X,ZTDTH,ZTSAVE
S ZTDESC="SD*5.3*933 Post Install Routine Task 1"
D NOW^%DTC
S ZTDTH=$P($H,",",1)_","_86399,ZTIO="",ZTRTN="REPORT^SDES933P",ZTSAVE("*")=""
D ^%ZTLOAD
I $D(ZTSK) D
. D MES^XPDUTL(" >>>Task "_ZTSK_" has been queued.")
. D MES^XPDUTL("")
I '$D(ZTSK) D
. D MES^XPDUTL(" UNABLE TO QUEUE THIS JOB.")
. D MES^XPDUTL(" Please contact the National Help Desk to report this issue.")
Q
REPORT ;
D SLOTS
D MAIL
Q
;
MAIL ;
N STANUM,MESS1,XMTEXT,XMSUB,XMY,XMDUZ,DIFROM,%,D,D0,D1,D2,DG,DIC,DICR,DIW,XMDUN,XMZ
S STANUM=$$KSP^XUPARAM("INST")_","
S STANUM=$$GET1^DIQ(4,STANUM,99)
S MESS1="Station: "_STANUM_" - "
S XMDUZ=DUZ
S XMTEXT="^XTMP(""SDES933P"","
S XMSUB=MESS1_"SD*5.3*933 - Post Install Data Report"
S XMDUZ=.5,XMY(DUZ)="",XMY(XMDUZ)=""
S XMY("BARBER.LORI@DOMAIN.EXT")=""
S XMY("DUNNAM.DAVID@DOMAIN.EXT")=""
S XMY("CRUZ.ORLANDO@DOMAIN.EXT")=""
S XMY("BUTLER.BRANDON@DOMAIN.EXT")=""
D ^XMD
Q
;
SLOTS ;
N CLINICIEN,INCLUDED,STOPCODES,DIVISION,INSTITUTION,STOPCODE,BUCKET,STOPCODEIEN,DAYOFTHEWEK,SLOTS,DATE,SLOTCOUNTS,STOPCODES,SLOTDATETIME
N THIRTY,ONEEIGHTY,THREESIXTYFIVE,TYPE,STATION,MODAL,FISCALYEAR,FISCALQUAR,SERVICE,BUCKET,CURRENTSLOTS,FOUND,MONTH,CLINICNAME
N ORIGINALSLOTS,SCHEDULEDATE,SECONDARY,TDATE,SECONDARYIEN,SLOTCOUNT,SLOTSTART,SUBIEN,TIME,TIMEPERIOD,TOTALSLOTS,UNUSEDSLOTS,USEDSLOTS,FISCALQT
N FISCALYR,RANGE,LASTAPPTDATETIME,TELEHEALTH
;
D POPULATE(.STOPCODES,.INCLUDED,.TELEHEALTH)
S CLINICIEN=0
F S CLINICIEN=$O(INCLUDED(CLINICIEN)) Q:'CLINICIEN D
.S CLINICNAME=$$GET1^DIQ(44,CLINICIEN,.01,"E")
.I $$INACTIVE^SDES2UTIL(CLINICIEN,DT) Q
.;
.S SERVICE=$G(INCLUDED(CLINICIEN))
.S STATION=$$GET1^DIQ(4,$$GET1^DIQ(40.8,$$GET1^DIQ(44,CLINICIEN,3.5,"I"),.07,"I"),99)
.;
.S LASTAPPTDATETIME=$O(^SC(CLINICIEN,"S",99999999999),-1)
.I $G(LASTAPPTDATETIME)="" Q
.I $$FMDIFF^XLFDT(DT,$P(LASTAPPTDATETIME,"."))>30 Q
.;
.S SECONDARY=$$GET1^DIQ(40.7,$$GET1^DIQ(44,CLINICIEN,2503,"I"),1,"E")
.S MODAL="In Person"
.I SECONDARY,$D(TELEHEALTH(SECONDARY)) S MODAL="Telehealth"
.I $$GET1^DIQ(40.7,$$GET1^DIQ(44,CLINICIEN,8,"I"),1,"E")=683 S MODAL="Telehealth"
.;
.K @$NA(^TMP($J,"SLOTSEARCH"))
.D GETSLOTS^SDEC57($NA(^TMP($J,"SLOTSEARCH")),$$GETRES^SDES2UTIL1(CLINICIEN),3231001,DT)
.;
.I '$D(^TMP($J,"SLOTSEARCH")) Q
.;
.S SLOTCOUNT=0
.F S SLOTCOUNT=$O(^TMP($J,"SLOTSEARCH",SLOTCOUNT)) Q:'SLOTCOUNT D
..;
..S SLOTSTART=+$P($G(^TMP($J,"SLOTSEARCH",SLOTCOUNT)),U,2),DATE=$P(SLOTSTART,".")
..S DATE=$P(SLOTSTART,".")
..S SCHEDULEDATE=$S('$D(^SC(CLINICIEN,"T",DATE)):$$GETINDEFSLOTDATE(CLINICIEN,$$FMADD^XLFDT(DATE,1),$$UP^XLFSTR($$DOW^XLFDT(DATE,1))),1:DATE)
..I 'SCHEDULEDATE Q
..;
..S CURRENTSLOTS=$P($G(^TMP($J,"SLOTSEARCH",SLOTCOUNT)),U,4)
..S MONTH=$E(DATE,4,5)
..S FISCALQUAR=$S(MONTH<04:"Fiscal Quarter 2",MONTH<07:"Fiscal Quarter 3",MONTH<10:"Fiscal Quarter 4",1:"Fiscal Quarter 1")
..S FISCALYEAR=20_$S(MONTH<10:$E(DATE,2,3),1:$E(DATE,2,3)+1)
..S RANGE=$E($$DOW^XLFDT(DATE),1,2)_$S($E(SLOTSTART,8,$L(SLOTSTART))<.08:"AM",$E(SLOTSTART,8,$L(SLOTSTART))<.163:"TRAD",1:"PM")
..I RANGE["Sa"!(RANGE["Su") S RANGE=$TR(RANGE,"TRAD","")
..S BUCKET=$S(RANGE["TRAD":"TRAD","MoAM FrAM"[RANGE:"MO/FR/AM","MoPM FrPM"[RANGE:"MO/FR/PM","TuAM WeAM ThAM"[RANGE:"TU/WE/TH/AM","TuPM WePM ThPM"[RANGE:"TU/WE/TH/PM",1:"WEEKEND")
..;
..S SUBIEN=0,SLOTDATETIME=0,FOUND=0
..F S SUBIEN=$O(^SC(CLINICIEN,"T",SCHEDULEDATE,2,SUBIEN)) Q:'SUBIEN!(FOUND=1) D
...;
...I SLOTSTART'=$$HTFM^XLFDT($$FMTH^XLFDT(DATE_"."_$$GET1^DIQ(44.004,SUBIEN_","_SCHEDULEDATE_","_CLINICIEN_",",.01,"I"))) Q
...;
...S ORIGINALSLOTS=$$GET1^DIQ(44.004,SUBIEN_","_SCHEDULEDATE_","_CLINICIEN_",",1,"I")
...S SLOTCOUNTS(STATION,MODAL,FISCALYEAR,FISCALQUAR,SERVICE,BUCKET,"TOTAL SLOTS")=$G(SLOTCOUNTS(STATION,MODAL,FISCALYEAR,FISCALQUAR,SERVICE,BUCKET,"TOTAL SLOTS"))+ORIGINALSLOTS
...S SLOTCOUNTS(STATION,MODAL,FISCALYEAR,FISCALQUAR,SERVICE,BUCKET,"USED SLOTS")=$G(SLOTCOUNTS(STATION,MODAL,FISCALYEAR,FISCALQUAR,SERVICE,BUCKET,"USED SLOTS"))+ORIGINALSLOTS-CURRENTSLOTS
...S SLOTCOUNTS(STATION,MODAL,FISCALYEAR,FISCALQUAR,SERVICE,BUCKET,"UNUSED SLOTS")=$G(SLOTCOUNTS(STATION,MODAL,FISCALYEAR,FISCALQUAR,SERVICE,BUCKET,"TOTAL SLOTS"))-$G(SLOTCOUNTS(STATION,MODAL,FISCALYEAR,FISCALQUAR,SERVICE,BUCKET,"USED SLOTS"))
...S FOUND=1
;
K ^XTMP("SDES933P")
S ^XTMP("SDES933P",0)=$$FMADD^XLFDT(DT,30)_"^"_DT_"^SD*5.3*933"
S COUNT=1
S ^XTMP("SDES933P",COUNT)="**********************************SLOT REPORT**********************************"
S COUNT=COUNT+1
S ^XTMP("SDES933P",COUNT)="Station Number^Modality^Fiscal Year^Fiscal Quarter^Service^Grouping^Total Slots^Used Slots^Unused Slots"
S COUNT=COUNT+1
;
S STATION=0
F S STATION=$O(SLOTCOUNTS(STATION)) Q:'STATION D
.;
.S MODAL=0
.F S MODAL=$O(SLOTCOUNTS(STATION,MODAL)) Q:MODAL="" D
..;
..S FISCALYR=0
..F S FISCALYR=$O(SLOTCOUNTS(STATION,MODAL,FISCALYR)) Q:FISCALYR="" D
...;
...S FISCALQT=0
...F S FISCALQT=$O(SLOTCOUNTS(STATION,MODAL,FISCALYR,FISCALQT)) Q:FISCALQT="" D
....;
....S SERVICE=0
....F S SERVICE=$O(SLOTCOUNTS(STATION,MODAL,FISCALYR,FISCALQT,SERVICE)) Q:SERVICE="" D
.....;
.....S BUCKET=0
.....F S BUCKET=$O(SLOTCOUNTS(STATION,MODAL,FISCALYR,FISCALQT,SERVICE,BUCKET)) Q:BUCKET="" D
......;
......S ^XTMP("SDES933P",COUNT)=STATION_U_MODAL_U_FISCALYR_U_FISCALQT_U_SERVICE_U_BUCKET
......S ^XTMP("SDES933P",COUNT)=^XTMP("SDES933P",COUNT)_U_+SLOTCOUNTS(STATION,MODAL,FISCALYR,FISCALQT,SERVICE,BUCKET,"TOTAL SLOTS")
......S ^XTMP("SDES933P",COUNT)=^XTMP("SDES933P",COUNT)_U_+SLOTCOUNTS(STATION,MODAL,FISCALYR,FISCALQT,SERVICE,BUCKET,"USED SLOTS")
......S ^XTMP("SDES933P",COUNT)=^XTMP("SDES933P",COUNT)_U_+SLOTCOUNTS(STATION,MODAL,FISCALYR,FISCALQT,SERVICE,BUCKET,"UNUSED SLOTS")
......S COUNT=COUNT+1
Q
;
GETINDEFSLOTDATE(CLINICIEN,DATE,TNODE) ;
N INDEFDATE
;
S INDEFDATE=0
F S DATE=$O(^SC(CLINICIEN,"T",DATE),-1) Q:'DATE!($G(INDEFDATE)) I $$DOW^XLFDT(DATE,1)=TNODE,'$D(^SC(CLINICIEN,"OST",DATE)) S INDEFDATE=DATE
Q INDEFDATE
;
POPULATE(STOPCODES,INCLUDED,TELEHEALTH) ;
N STOPCODE,STOPCODEIEN,COUNT,SECONDARIES,SERVICE
;
D GETSTOPCODES(.STOPCODES,.TELEHEALTH)
;
S STOPCODE=0,COUNT=0
F S STOPCODE=$O(STOPCODES(STOPCODE)) Q:'STOPCODE D
.S STOPCODEIEN=$O(^DIC(40.7,"C",STOPCODE,""))
.S SERVICE=$G(STOPCODES(STOPCODE))
.I $$GET1^DIQ(40.7,STOPCODEIEN,5,"E")'="Primary" S SECONDARIES(STOPCODE)=SERVICE
.;
.S CLINICIEN=0
.F S CLINICIEN=$O(^SC("AST",STOPCODEIEN,CLINICIEN)) Q:'CLINICIEN D
..I $E($$GET1^DIQ(44,CLINICIEN,.01),1,2)="ZZ" Q
..S INCLUDED(CLINICIEN)=SERVICE
;
S SECONDARY=0
F S SECONDARY=$O(SECONDARIES(SECONDARY)) Q:'SECONDARY D
.S SECONDARYIEN=$O(^DIC(40.7,"C",SECONDARY,""))
.S SERVICE=$G(SECONDARIES(SECONDARY))
.;
.S CLINICIEN=0
.F S CLINICIEN=$O(^SC("ACST",SECONDARYIEN,CLINICIEN)) Q:'CLINICIEN D
..I $E($$GET1^DIQ(44,CLINICIEN,.01),1,2)="ZZ" Q
..S INCLUDED(CLINICIEN)=$G(SECONDARIES(SECONDARY))
Q
;
GETSTOPCODES(STOPCODES,TELEHEALTH) ;
N MHLTH,OTH,PCARE,REHAB,SPEC
S MHLTH="Mental Health"
S OTH="Other"
S PCARE="Primary Care"
S REHAB="Rehab and Extended Care"
S SPEC="Specialty Care"
S STOPCODES(502)=MHLTH
S STOPCODES(513)=MHLTH
S STOPCODES(523)=MHLTH
S STOPCODES(527)=MHLTH
S STOPCODES(533)=MHLTH
S STOPCODES(534)=MHLTH
S STOPCODES(539)=MHLTH
S STOPCODES(545)=MHLTH
S STOPCODES(550)=MHLTH
S STOPCODES(560)=MHLTH
S STOPCODES(565)=MHLTH
S STOPCODES(566)=MHLTH
S STOPCODES(576)=MHLTH
S STOPCODES(577)=MHLTH
S STOPCODES(579)=MHLTH
S STOPCODES(516)=MHLTH
S STOPCODES(524)=MHLTH
S STOPCODES(535)=MHLTH
S STOPCODES(538)=MHLTH
S STOPCODES(542)=MHLTH
S STOPCODES(546)=MHLTH
S STOPCODES(552)=MHLTH
S STOPCODES(562)=MHLTH
S STOPCODES(564)=MHLTH
S STOPCODES(567)=MHLTH
S STOPCODES(568)=MHLTH
S STOPCODES(574)=MHLTH
S STOPCODES(575)=MHLTH
S STOPCODES(582)=MHLTH
S STOPCODES(583)=MHLTH
S STOPCODES(584)=MHLTH
S STOPCODES(586)=MHLTH
S STOPCODES(587)=MHLTH
S STOPCODES(593)=MHLTH
S STOPCODES(596)=MHLTH
S STOPCODES(597)=MHLTH
S STOPCODES(598)=MHLTH
S STOPCODES(599)=MHLTH
S STOPCODES(105)=OTH
S STOPCODES(108)=OTH
S STOPCODES(109)=OTH
S STOPCODES(110)=OTH
S STOPCODES(111)=OTH
S STOPCODES(115)=OTH
S STOPCODES(148)=OTH
S STOPCODES(150)=OTH
S STOPCODES(151)=OTH
S STOPCODES(153)=OTH
S STOPCODES(703)=OTH
S STOPCODES(103)=OTH
S STOPCODES(107)=OTH
S STOPCODES(118)=OTH
S STOPCODES(120)=OTH
S STOPCODES(125)=OTH
S STOPCODES(135)=OTH
S STOPCODES(139)=OTH
S STOPCODES(142)=OTH
S STOPCODES(147)=OTH
S STOPCODES(158)=OTH
S STOPCODES(159)=OTH
S STOPCODES(160)=OTH
S STOPCODES(165)=OTH
S STOPCODES(166)=OTH
S STOPCODES(167)=OTH
S STOPCODES(168)=OTH
S STOPCODES(169)=OTH
S STOPCODES(182)=OTH
S STOPCODES(183)=OTH
S STOPCODES(184)=OTH
S STOPCODES(192)=OTH
S STOPCODES(231)=OTH
S STOPCODES(317)=OTH
S STOPCODES(321)=OTH
S STOPCODES(332)=OTH
S STOPCODES(336)=OTH
S STOPCODES(339)=OTH
S STOPCODES(347)=OTH
S STOPCODES(351)=OTH
S STOPCODES(354)=OTH
S STOPCODES(355)=OTH
S STOPCODES(356)=OTH
S STOPCODES(371)=OTH
S STOPCODES(418)=OTH
S STOPCODES(419)=OTH
S STOPCODES(421)=OTH
S STOPCODES(427)=OTH
S STOPCODES(428)=OTH
S STOPCODES(429)=OTH
S STOPCODES(432)=OTH
S STOPCODES(434)=OTH
S STOPCODES(435)=OTH
S STOPCODES(439)=OTH
S STOPCODES(441)=OTH
S STOPCODES(443)=OTH
S STOPCODES(449)=OTH
S STOPCODES(457)=OTH
S STOPCODES(474)=OTH
S STOPCODES(499)=OTH
S STOPCODES(504)=OTH
S STOPCODES(507)=OTH
S STOPCODES(508)=OTH
S STOPCODES(509)=OTH
S STOPCODES(510)=OTH
S STOPCODES(511)=OTH
S STOPCODES(514)=OTH
S STOPCODES(522)=OTH
S STOPCODES(528)=OTH
S STOPCODES(529)=OTH
S STOPCODES(530)=OTH
S STOPCODES(531)=OTH
S STOPCODES(536)=OTH
S STOPCODES(540)=OTH
S STOPCODES(555)=OTH
S STOPCODES(556)=OTH
S STOPCODES(559)=OTH
S STOPCODES(569)=OTH
S STOPCODES(591)=OTH
S STOPCODES(592)=OTH
S STOPCODES(602)=OTH
S STOPCODES(603)=OTH
S STOPCODES(604)=OTH
S STOPCODES(606)=OTH
S STOPCODES(607)=OTH
S STOPCODES(608)=OTH
S STOPCODES(611)=OTH
S STOPCODES(651)=OTH
S STOPCODES(652)=OTH
S STOPCODES(656)=OTH
S STOPCODES(669)=OTH
S STOPCODES(674)=OTH
S STOPCODES(680)=OTH
S STOPCODES(683)=OTH
S STOPCODES(684)=OTH
S STOPCODES(685)=OTH
S STOPCODES(686)=OTH
S STOPCODES(690)=OTH
S STOPCODES(697)=OTH
S STOPCODES(706)=OTH
S STOPCODES(707)=OTH
S STOPCODES(714)=OTH
S STOPCODES(718)=OTH
S STOPCODES(720)=OTH
S STOPCODES(721)=OTH
S STOPCODES(801)=OTH
S STOPCODES(802)=OTH
S STOPCODES(999)=OTH
S STOPCODES(180)=OTH
S STOPCODES(181)=OTH
S STOPCODES(403)=OTH
S STOPCODES(404)=OTH
S STOPCODES(407)=OTH
S STOPCODES(408)=OTH
S STOPCODES(424)=OTH
S STOPCODES(322)=PCARE
S STOPCODES(323)=PCARE
S STOPCODES(338)=PCARE
S STOPCODES(348)=PCARE
S STOPCODES(704)=PCARE
S STOPCODES(119)=REHAB
S STOPCODES(121)=REHAB
S STOPCODES(156)=REHAB
S STOPCODES(157)=REHAB
S STOPCODES(170)=REHAB
S STOPCODES(171)=REHAB
S STOPCODES(172)=REHAB
S STOPCODES(173)=REHAB
S STOPCODES(174)=REHAB
S STOPCODES(175)=REHAB
S STOPCODES(176)=REHAB
S STOPCODES(177)=REHAB
S STOPCODES(178)=REHAB
S STOPCODES(190)=REHAB
S STOPCODES(195)=REHAB
S STOPCODES(196)=REHAB
S STOPCODES(197)=REHAB
S STOPCODES(198)=REHAB
S STOPCODES(199)=REHAB
S STOPCODES(201)=REHAB
S STOPCODES(202)=REHAB
S STOPCODES(203)=REHAB
S STOPCODES(204)=REHAB
S STOPCODES(205)=REHAB
S STOPCODES(206)=REHAB
S STOPCODES(209)=REHAB
S STOPCODES(210)=REHAB
S STOPCODES(211)=REHAB
S STOPCODES(212)=REHAB
S STOPCODES(214)=REHAB
S STOPCODES(215)=REHAB
S STOPCODES(216)=REHAB
S STOPCODES(217)=REHAB
S STOPCODES(218)=REHAB
S STOPCODES(220)=REHAB
S STOPCODES(221)=REHAB
S STOPCODES(224)=REHAB
S STOPCODES(225)=REHAB
S STOPCODES(229)=REHAB
S STOPCODES(230)=REHAB
S STOPCODES(240)=REHAB
S STOPCODES(241)=REHAB
S STOPCODES(250)=REHAB
S STOPCODES(318)=REHAB
S STOPCODES(326)=REHAB
S STOPCODES(350)=REHAB
S STOPCODES(352)=REHAB
S STOPCODES(353)=REHAB
S STOPCODES(417)=REHAB
S STOPCODES(423)=REHAB
S STOPCODES(425)=REHAB
S STOPCODES(436)=REHAB
S STOPCODES(437)=REHAB
S STOPCODES(438)=REHAB
S STOPCODES(104)=SPEC
S STOPCODES(106)=SPEC
S STOPCODES(116)=SPEC
S STOPCODES(123)=SPEC
S STOPCODES(124)=SPEC
S STOPCODES(126)=SPEC
S STOPCODES(128)=SPEC
S STOPCODES(145)=SPEC
S STOPCODES(149)=SPEC
S STOPCODES(301)=SPEC
S STOPCODES(302)=SPEC
S STOPCODES(303)=SPEC
S STOPCODES(304)=SPEC
S STOPCODES(305)=SPEC
S STOPCODES(306)=SPEC
S STOPCODES(307)=SPEC
S STOPCODES(308)=SPEC
S STOPCODES(309)=SPEC
S STOPCODES(310)=SPEC
S STOPCODES(311)=SPEC
S STOPCODES(312)=SPEC
S STOPCODES(313)=SPEC
S STOPCODES(314)=SPEC
S STOPCODES(315)=SPEC
S STOPCODES(316)=SPEC
S STOPCODES(324)=SPEC
S STOPCODES(325)=SPEC
S STOPCODES(327)=SPEC
S STOPCODES(328)=SPEC
S STOPCODES(329)=SPEC
S STOPCODES(330)=SPEC
S STOPCODES(333)=SPEC
S STOPCODES(334)=SPEC
S STOPCODES(335)=SPEC
S STOPCODES(337)=SPEC
S STOPCODES(340)=SPEC
S STOPCODES(344)=SPEC
S STOPCODES(345)=SPEC
S STOPCODES(346)=SPEC
S STOPCODES(369)=SPEC
S STOPCODES(372)=SPEC
S STOPCODES(373)=SPEC
S STOPCODES(391)=SPEC
S STOPCODES(392)=SPEC
S STOPCODES(394)=SPEC
S STOPCODES(411)=SPEC
S STOPCODES(420)=SPEC
;
; SET TELEHEALTH AS SUB
;
S TELEHEALTH(527)=1
S TELEHEALTH(545)=1
S TELEHEALTH(579)=1
S TELEHEALTH(542)=1
S TELEHEALTH(546)=1
S TELEHEALTH(584)=1
S TELEHEALTH(597)=1
S TELEHEALTH(111)=1
S TELEHEALTH(148)=1
S TELEHEALTH(103)=1
S TELEHEALTH(147)=1
S TELEHEALTH(169)=1
S TELEHEALTH(182)=1
S TELEHEALTH(371)=1
S TELEHEALTH(428)=1
S TELEHEALTH(441)=1
S TELEHEALTH(528)=1
S TELEHEALTH(530)=1
S TELEHEALTH(536)=1
S TELEHEALTH(611)=1
S TELEHEALTH(686)=1
S TELEHEALTH(718)=1
S TELEHEALTH(181)=1
S TELEHEALTH(424)=1
S TELEHEALTH(338)=1
S TELEHEALTH(178)=1
S TELEHEALTH(199)=1
S TELEHEALTH(216)=1
S TELEHEALTH(221)=1
S TELEHEALTH(224)=1
S TELEHEALTH(225)=1
S TELEHEALTH(229)=1
S TELEHEALTH(326)=1
S TELEHEALTH(425)=1
S TELEHEALTH(324)=1
S TELEHEALTH(325)=1
;Other Telehealth
S TELEHEALTH(645)=1
S TELEHEALTH(693)=1
S TELEHEALTH(189)=1
S TELEHEALTH(646)=1
S TELEHEALTH(694)=1
S TELEHEALTH(695)=1
S TELEHEALTH(696)=1
S TELEHEALTH(683)=1
;
S TELEHEALTH(179)=1
S TELEHEALTH(648)=1
S TELEHEALTH(679)=1
S TELEHEALTH(692)=1
S TELEHEALTH(699)=1
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSDES933P 15064 printed Jan 29, 2026@15:55:03 Page 2
SDES933P ;ALB/BLB - SD*5.3*933 Post Init Routine ; Nov 06, 2025
+1 ;;5.3;SCHEDULING;**933**;AUG 13, 1993;Build 2
+2 ;;Per VHA Directive 6402, this routine should not be modified
+3 ;;
+4 QUIT
+5 ;
EN ;
+1 DO TASK
+2 QUIT
+3 ;
TASK ; tasks off process to update the direct patient schedule field in the hospital location file
+1 DO MES^XPDUTL("")
+2 DO MES^XPDUTL(" SD*5.3*933 Post-Install to create utilization report for off hour clinics.")
+3 DO MES^XPDUTL("")
+4 NEW ZTDESC,ZTRTN,ZTIO,ZTSK,X,ZTDTH,ZTSAVE
+5 SET ZTDESC="SD*5.3*933 Post Install Routine Task 1"
+6 DO NOW^%DTC
+7 SET ZTDTH=$PIECE($HOROLOG,",",1)_","_86399
SET ZTIO=""
SET ZTRTN="REPORT^SDES933P"
SET ZTSAVE("*")=""
+8 DO ^%ZTLOAD
+9 IF $DATA(ZTSK)
Begin DoDot:1
+10 DO MES^XPDUTL(" >>>Task "_ZTSK_" has been queued.")
+11 DO MES^XPDUTL("")
End DoDot:1
+12 IF '$DATA(ZTSK)
Begin DoDot:1
+13 DO MES^XPDUTL(" UNABLE TO QUEUE THIS JOB.")
+14 DO MES^XPDUTL(" Please contact the National Help Desk to report this issue.")
End DoDot:1
+15 QUIT
REPORT ;
+1 DO SLOTS
+2 DO MAIL
+3 QUIT
+4 ;
MAIL ;
+1 NEW STANUM,MESS1,XMTEXT,XMSUB,XMY,XMDUZ,DIFROM,%,D,D0,D1,D2,DG,DIC,DICR,DIW,XMDUN,XMZ
+2 SET STANUM=$$KSP^XUPARAM("INST")_","
+3 SET STANUM=$$GET1^DIQ(4,STANUM,99)
+4 SET MESS1="Station: "_STANUM_" - "
+5 SET XMDUZ=DUZ
+6 SET XMTEXT="^XTMP(""SDES933P"","
+7 SET XMSUB=MESS1_"SD*5.3*933 - Post Install Data Report"
+8 SET XMDUZ=.5
SET XMY(DUZ)=""
SET XMY(XMDUZ)=""
+9 SET XMY("BARBER.LORI@DOMAIN.EXT")=""
+10 SET XMY("DUNNAM.DAVID@DOMAIN.EXT")=""
+11 SET XMY("CRUZ.ORLANDO@DOMAIN.EXT")=""
+12 SET XMY("BUTLER.BRANDON@DOMAIN.EXT")=""
+13 DO ^XMD
+14 QUIT
+15 ;
SLOTS ;
+1 NEW CLINICIEN,INCLUDED,STOPCODES,DIVISION,INSTITUTION,STOPCODE,BUCKET,STOPCODEIEN,DAYOFTHEWEK,SLOTS,DATE,SLOTCOUNTS,STOPCODES,SLOTDATETIME
+2 NEW THIRTY,ONEEIGHTY,THREESIXTYFIVE,TYPE,STATION,MODAL,FISCALYEAR,FISCALQUAR,SERVICE,BUCKET,CURRENTSLOTS,FOUND,MONTH,CLINICNAME
+3 NEW ORIGINALSLOTS,SCHEDULEDATE,SECONDARY,TDATE,SECONDARYIEN,SLOTCOUNT,SLOTSTART,SUBIEN,TIME,TIMEPERIOD,TOTALSLOTS,UNUSEDSLOTS,USEDSLOTS,FISCALQT
+4 NEW FISCALYR,RANGE,LASTAPPTDATETIME,TELEHEALTH
+5 ;
+6 DO POPULATE(.STOPCODES,.INCLUDED,.TELEHEALTH)
+7 SET CLINICIEN=0
+8 FOR
SET CLINICIEN=$ORDER(INCLUDED(CLINICIEN))
if 'CLINICIEN
QUIT
Begin DoDot:1
+9 SET CLINICNAME=$$GET1^DIQ(44,CLINICIEN,.01,"E")
+10 IF $$INACTIVE^SDES2UTIL(CLINICIEN,DT)
QUIT
+11 ;
+12 SET SERVICE=$GET(INCLUDED(CLINICIEN))
+13 SET STATION=$$GET1^DIQ(4,$$GET1^DIQ(40.8,$$GET1^DIQ(44,CLINICIEN,3.5,"I"),.07,"I"),99)
+14 ;
+15 SET LASTAPPTDATETIME=$ORDER(^SC(CLINICIEN,"S",99999999999),-1)
+16 IF $GET(LASTAPPTDATETIME)=""
QUIT
+17 IF $$FMDIFF^XLFDT(DT,$PIECE(LASTAPPTDATETIME,"."))>30
QUIT
+18 ;
+19 SET SECONDARY=$$GET1^DIQ(40.7,$$GET1^DIQ(44,CLINICIEN,2503,"I"),1,"E")
+20 SET MODAL="In Person"
+21 IF SECONDARY
IF $DATA(TELEHEALTH(SECONDARY))
SET MODAL="Telehealth"
+22 IF $$GET1^DIQ(40.7,$$GET1^DIQ(44,CLINICIEN,8,"I"),1,"E")=683
SET MODAL="Telehealth"
+23 ;
+24 KILL @$NAME(^TMP($JOB,"SLOTSEARCH"))
+25 DO GETSLOTS^SDEC57($NAME(^TMP($JOB,"SLOTSEARCH")),$$GETRES^SDES2UTIL1(CLINICIEN),3231001,DT)
+26 ;
+27 IF '$DATA(^TMP($JOB,"SLOTSEARCH"))
QUIT
+28 ;
+29 SET SLOTCOUNT=0
+30 FOR
SET SLOTCOUNT=$ORDER(^TMP($JOB,"SLOTSEARCH",SLOTCOUNT))
if 'SLOTCOUNT
QUIT
Begin DoDot:2
+31 ;
+32 SET SLOTSTART=+$PIECE($GET(^TMP($JOB,"SLOTSEARCH",SLOTCOUNT)),U,2)
SET DATE=$PIECE(SLOTSTART,".")
+33 SET DATE=$PIECE(SLOTSTART,".")
+34 SET SCHEDULEDATE=$SELECT('$DATA(^SC(CLINICIEN,"T",DATE)):$$GETINDEFSLOTDATE(CLINICIEN,$$FMADD^XLFDT(DATE,1),$$UP^XLFSTR($$DOW^XLFDT(DATE,1))),1:DATE)
+35 IF 'SCHEDULEDATE
QUIT
+36 ;
+37 SET CURRENTSLOTS=$PIECE($GET(^TMP($JOB,"SLOTSEARCH",SLOTCOUNT)),U,4)
+38 SET MONTH=$EXTRACT(DATE,4,5)
+39 SET FISCALQUAR=$SELECT(MONTH<04:"Fiscal Quarter 2",MONTH<07:"Fiscal Quarter 3",MONTH<10:"Fiscal Quarter 4",1:"Fiscal Quarter 1")
+40 SET FISCALYEAR=20_$SELECT(MONTH<10:$EXTRACT(DATE,2,3),1:$EXTRACT(DATE,2,3)+1)
+41 SET RANGE=$EXTRACT($$DOW^XLFDT(DATE),1,2)_$SELECT($EXTRACT(SLOTSTART,8,$LENGTH(SLOTSTART))<.08:"AM",$EXTRACT(SLOTSTART,8,$LENGTH(SLOTSTART))<.163:"TRAD",1:"PM")
+42 IF RANGE["Sa"!(RANGE["Su")
SET RANGE=$TRANSLATE(RANGE,"TRAD","")
+43 SET BUCKET=$SELECT(RANGE["TRAD":"TRAD","MoAM FrAM"[RANGE:"MO/FR/AM","MoPM FrPM"[RANGE:"MO/FR/PM","TuAM WeAM ThAM"[RANGE:"TU/WE/TH/AM","TuPM WePM ThPM"[RANGE:"TU/WE/TH/PM",1:"WEEKEND")
+44 ;
+45 SET SUBIEN=0
SET SLOTDATETIME=0
SET FOUND=0
+46 FOR
SET SUBIEN=$ORDER(^SC(CLINICIEN,"T",SCHEDULEDATE,2,SUBIEN))
if 'SUBIEN!(FOUND=1)
QUIT
Begin DoDot:3
+47 ;
+48 IF SLOTSTART'=$$HTFM^XLFDT($$FMTH^XLFDT(DATE_"."_$$GET1^DIQ(44.004,SUBIEN_","_SCHEDULEDATE_","_CLINICIEN_",",.01,"I")))
QUIT
+49 ;
+50 SET ORIGINALSLOTS=$$GET1^DIQ(44.004,SUBIEN_","_SCHEDULEDATE_","_CLINICIEN_",",1,"I")
+51 SET SLOTCOUNTS(STATION,MODAL,FISCALYEAR,FISCALQUAR,SERVICE,BUCKET,"TOTAL SLOTS")=$GET(SLOTCOUNTS(STATION,MODAL,FISCALYEAR,FISCALQUAR,SERVICE,BUCKET,"TOTAL SLOTS"))+ORIGINALSLOTS
+52 SET SLOTCOUNTS(STATION,MODAL,FISCALYEAR,FISCALQUAR,SERVICE,BUCKET,"USED SLOTS")=$GET(SLOTCOUNTS(STATION,MODAL,FISCALYEAR,FISCALQUAR,SERVICE,BUCKET,"USED SLOTS"))+ORIGINALSLOTS-CURRENTSLOTS
+53 SET SLOTCOUNTS(STATION,MODAL,FISCALYEAR,FISCALQUAR,SERVICE,BUCKET,"UNUSED SLOTS")=$GET(SLOTCOUNTS(STATION,MODAL,FISCALYEAR,FISCALQUAR,SERVICE,BUCKET,"TOTAL SLOTS"))-$GET(SLOTCOUNTS(STATION,MODAL,FISCALYEAR,FISCALQUAR,SER
VICE,BUCKET,"USED SLOTS"))
+54 SET FOUND=1
End DoDot:3
End DoDot:2
End DoDot:1
+55 ;
+56 KILL ^XTMP("SDES933P")
+57 SET ^XTMP("SDES933P",0)=$$FMADD^XLFDT(DT,30)_"^"_DT_"^SD*5.3*933"
+58 SET COUNT=1
+59 SET ^XTMP("SDES933P",COUNT)="**********************************SLOT REPORT**********************************"
+60 SET COUNT=COUNT+1
+61 SET ^XTMP("SDES933P",COUNT)="Station Number^Modality^Fiscal Year^Fiscal Quarter^Service^Grouping^Total Slots^Used Slots^Unused Slots"
+62 SET COUNT=COUNT+1
+63 ;
+64 SET STATION=0
+65 FOR
SET STATION=$ORDER(SLOTCOUNTS(STATION))
if 'STATION
QUIT
Begin DoDot:1
+66 ;
+67 SET MODAL=0
+68 FOR
SET MODAL=$ORDER(SLOTCOUNTS(STATION,MODAL))
if MODAL=""
QUIT
Begin DoDot:2
+69 ;
+70 SET FISCALYR=0
+71 FOR
SET FISCALYR=$ORDER(SLOTCOUNTS(STATION,MODAL,FISCALYR))
if FISCALYR=""
QUIT
Begin DoDot:3
+72 ;
+73 SET FISCALQT=0
+74 FOR
SET FISCALQT=$ORDER(SLOTCOUNTS(STATION,MODAL,FISCALYR,FISCALQT))
if FISCALQT=""
QUIT
Begin DoDot:4
+75 ;
+76 SET SERVICE=0
+77 FOR
SET SERVICE=$ORDER(SLOTCOUNTS(STATION,MODAL,FISCALYR,FISCALQT,SERVICE))
if SERVICE=""
QUIT
Begin DoDot:5
+78 ;
+79 SET BUCKET=0
+80 FOR
SET BUCKET=$ORDER(SLOTCOUNTS(STATION,MODAL,FISCALYR,FISCALQT,SERVICE,BUCKET))
if BUCKET=""
QUIT
Begin DoDot:6
+81 ;
+82 SET ^XTMP("SDES933P",COUNT)=STATION_U_MODAL_U_FISCALYR_U_FISCALQT_U_SERVICE_U_BUCKET
+83 SET ^XTMP("SDES933P",COUNT)=^XTMP("SDES933P",COUNT)_U_+SLOTCOUNTS(STATION,MODAL,FISCALYR,FISCALQT,SERVICE,BUCKET,"TOTAL SLOTS")
+84 SET ^XTMP("SDES933P",COUNT)=^XTMP("SDES933P",COUNT)_U_+SLOTCOUNTS(STATION,MODAL,FISCALYR,FISCALQT,SERVICE,BUCKET,"USED SLOTS")
+85 SET ^XTMP("SDES933P",COUNT)=^XTMP("SDES933P",COUNT)_U_+SLOTCOUNTS(STATION,MODAL,FISCALYR,FISCALQT,SERVICE,BUCKET,"UNUSED SLOTS")
+86 SET COUNT=COUNT+1
End DoDot:6
End DoDot:5
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+87 QUIT
+88 ;
GETINDEFSLOTDATE(CLINICIEN,DATE,TNODE) ;
+1 NEW INDEFDATE
+2 ;
+3 SET INDEFDATE=0
+4 FOR
SET DATE=$ORDER(^SC(CLINICIEN,"T",DATE),-1)
if 'DATE!($GET(INDEFDATE))
QUIT
IF $$DOW^XLFDT(DATE,1)=TNODE
IF '$DATA(^SC(CLINICIEN,"OST",DATE))
SET INDEFDATE=DATE
+5 QUIT INDEFDATE
+6 ;
POPULATE(STOPCODES,INCLUDED,TELEHEALTH) ;
+1 NEW STOPCODE,STOPCODEIEN,COUNT,SECONDARIES,SERVICE
+2 ;
+3 DO GETSTOPCODES(.STOPCODES,.TELEHEALTH)
+4 ;
+5 SET STOPCODE=0
SET COUNT=0
+6 FOR
SET STOPCODE=$ORDER(STOPCODES(STOPCODE))
if 'STOPCODE
QUIT
Begin DoDot:1
+7 SET STOPCODEIEN=$ORDER(^DIC(40.7,"C",STOPCODE,""))
+8 SET SERVICE=$GET(STOPCODES(STOPCODE))
+9 IF $$GET1^DIQ(40.7,STOPCODEIEN,5,"E")'="Primary"
SET SECONDARIES(STOPCODE)=SERVICE
+10 ;
+11 SET CLINICIEN=0
+12 FOR
SET CLINICIEN=$ORDER(^SC("AST",STOPCODEIEN,CLINICIEN))
if 'CLINICIEN
QUIT
Begin DoDot:2
+13 IF $EXTRACT($$GET1^DIQ(44,CLINICIEN,.01),1,2)="ZZ"
QUIT
+14 SET INCLUDED(CLINICIEN)=SERVICE
End DoDot:2
End DoDot:1
+15 ;
+16 SET SECONDARY=0
+17 FOR
SET SECONDARY=$ORDER(SECONDARIES(SECONDARY))
if 'SECONDARY
QUIT
Begin DoDot:1
+18 SET SECONDARYIEN=$ORDER(^DIC(40.7,"C",SECONDARY,""))
+19 SET SERVICE=$GET(SECONDARIES(SECONDARY))
+20 ;
+21 SET CLINICIEN=0
+22 FOR
SET CLINICIEN=$ORDER(^SC("ACST",SECONDARYIEN,CLINICIEN))
if 'CLINICIEN
QUIT
Begin DoDot:2
+23 IF $EXTRACT($$GET1^DIQ(44,CLINICIEN,.01),1,2)="ZZ"
QUIT
+24 SET INCLUDED(CLINICIEN)=$GET(SECONDARIES(SECONDARY))
End DoDot:2
End DoDot:1
+25 QUIT
+26 ;
GETSTOPCODES(STOPCODES,TELEHEALTH) ;
+1 NEW MHLTH,OTH,PCARE,REHAB,SPEC
+2 SET MHLTH="Mental Health"
+3 SET OTH="Other"
+4 SET PCARE="Primary Care"
+5 SET REHAB="Rehab and Extended Care"
+6 SET SPEC="Specialty Care"
+7 SET STOPCODES(502)=MHLTH
+8 SET STOPCODES(513)=MHLTH
+9 SET STOPCODES(523)=MHLTH
+10 SET STOPCODES(527)=MHLTH
+11 SET STOPCODES(533)=MHLTH
+12 SET STOPCODES(534)=MHLTH
+13 SET STOPCODES(539)=MHLTH
+14 SET STOPCODES(545)=MHLTH
+15 SET STOPCODES(550)=MHLTH
+16 SET STOPCODES(560)=MHLTH
+17 SET STOPCODES(565)=MHLTH
+18 SET STOPCODES(566)=MHLTH
+19 SET STOPCODES(576)=MHLTH
+20 SET STOPCODES(577)=MHLTH
+21 SET STOPCODES(579)=MHLTH
+22 SET STOPCODES(516)=MHLTH
+23 SET STOPCODES(524)=MHLTH
+24 SET STOPCODES(535)=MHLTH
+25 SET STOPCODES(538)=MHLTH
+26 SET STOPCODES(542)=MHLTH
+27 SET STOPCODES(546)=MHLTH
+28 SET STOPCODES(552)=MHLTH
+29 SET STOPCODES(562)=MHLTH
+30 SET STOPCODES(564)=MHLTH
+31 SET STOPCODES(567)=MHLTH
+32 SET STOPCODES(568)=MHLTH
+33 SET STOPCODES(574)=MHLTH
+34 SET STOPCODES(575)=MHLTH
+35 SET STOPCODES(582)=MHLTH
+36 SET STOPCODES(583)=MHLTH
+37 SET STOPCODES(584)=MHLTH
+38 SET STOPCODES(586)=MHLTH
+39 SET STOPCODES(587)=MHLTH
+40 SET STOPCODES(593)=MHLTH
+41 SET STOPCODES(596)=MHLTH
+42 SET STOPCODES(597)=MHLTH
+43 SET STOPCODES(598)=MHLTH
+44 SET STOPCODES(599)=MHLTH
+45 SET STOPCODES(105)=OTH
+46 SET STOPCODES(108)=OTH
+47 SET STOPCODES(109)=OTH
+48 SET STOPCODES(110)=OTH
+49 SET STOPCODES(111)=OTH
+50 SET STOPCODES(115)=OTH
+51 SET STOPCODES(148)=OTH
+52 SET STOPCODES(150)=OTH
+53 SET STOPCODES(151)=OTH
+54 SET STOPCODES(153)=OTH
+55 SET STOPCODES(703)=OTH
+56 SET STOPCODES(103)=OTH
+57 SET STOPCODES(107)=OTH
+58 SET STOPCODES(118)=OTH
+59 SET STOPCODES(120)=OTH
+60 SET STOPCODES(125)=OTH
+61 SET STOPCODES(135)=OTH
+62 SET STOPCODES(139)=OTH
+63 SET STOPCODES(142)=OTH
+64 SET STOPCODES(147)=OTH
+65 SET STOPCODES(158)=OTH
+66 SET STOPCODES(159)=OTH
+67 SET STOPCODES(160)=OTH
+68 SET STOPCODES(165)=OTH
+69 SET STOPCODES(166)=OTH
+70 SET STOPCODES(167)=OTH
+71 SET STOPCODES(168)=OTH
+72 SET STOPCODES(169)=OTH
+73 SET STOPCODES(182)=OTH
+74 SET STOPCODES(183)=OTH
+75 SET STOPCODES(184)=OTH
+76 SET STOPCODES(192)=OTH
+77 SET STOPCODES(231)=OTH
+78 SET STOPCODES(317)=OTH
+79 SET STOPCODES(321)=OTH
+80 SET STOPCODES(332)=OTH
+81 SET STOPCODES(336)=OTH
+82 SET STOPCODES(339)=OTH
+83 SET STOPCODES(347)=OTH
+84 SET STOPCODES(351)=OTH
+85 SET STOPCODES(354)=OTH
+86 SET STOPCODES(355)=OTH
+87 SET STOPCODES(356)=OTH
+88 SET STOPCODES(371)=OTH
+89 SET STOPCODES(418)=OTH
+90 SET STOPCODES(419)=OTH
+91 SET STOPCODES(421)=OTH
+92 SET STOPCODES(427)=OTH
+93 SET STOPCODES(428)=OTH
+94 SET STOPCODES(429)=OTH
+95 SET STOPCODES(432)=OTH
+96 SET STOPCODES(434)=OTH
+97 SET STOPCODES(435)=OTH
+98 SET STOPCODES(439)=OTH
+99 SET STOPCODES(441)=OTH
+100 SET STOPCODES(443)=OTH
+101 SET STOPCODES(449)=OTH
+102 SET STOPCODES(457)=OTH
+103 SET STOPCODES(474)=OTH
+104 SET STOPCODES(499)=OTH
+105 SET STOPCODES(504)=OTH
+106 SET STOPCODES(507)=OTH
+107 SET STOPCODES(508)=OTH
+108 SET STOPCODES(509)=OTH
+109 SET STOPCODES(510)=OTH
+110 SET STOPCODES(511)=OTH
+111 SET STOPCODES(514)=OTH
+112 SET STOPCODES(522)=OTH
+113 SET STOPCODES(528)=OTH
+114 SET STOPCODES(529)=OTH
+115 SET STOPCODES(530)=OTH
+116 SET STOPCODES(531)=OTH
+117 SET STOPCODES(536)=OTH
+118 SET STOPCODES(540)=OTH
+119 SET STOPCODES(555)=OTH
+120 SET STOPCODES(556)=OTH
+121 SET STOPCODES(559)=OTH
+122 SET STOPCODES(569)=OTH
+123 SET STOPCODES(591)=OTH
+124 SET STOPCODES(592)=OTH
+125 SET STOPCODES(602)=OTH
+126 SET STOPCODES(603)=OTH
+127 SET STOPCODES(604)=OTH
+128 SET STOPCODES(606)=OTH
+129 SET STOPCODES(607)=OTH
+130 SET STOPCODES(608)=OTH
+131 SET STOPCODES(611)=OTH
+132 SET STOPCODES(651)=OTH
+133 SET STOPCODES(652)=OTH
+134 SET STOPCODES(656)=OTH
+135 SET STOPCODES(669)=OTH
+136 SET STOPCODES(674)=OTH
+137 SET STOPCODES(680)=OTH
+138 SET STOPCODES(683)=OTH
+139 SET STOPCODES(684)=OTH
+140 SET STOPCODES(685)=OTH
+141 SET STOPCODES(686)=OTH
+142 SET STOPCODES(690)=OTH
+143 SET STOPCODES(697)=OTH
+144 SET STOPCODES(706)=OTH
+145 SET STOPCODES(707)=OTH
+146 SET STOPCODES(714)=OTH
+147 SET STOPCODES(718)=OTH
+148 SET STOPCODES(720)=OTH
+149 SET STOPCODES(721)=OTH
+150 SET STOPCODES(801)=OTH
+151 SET STOPCODES(802)=OTH
+152 SET STOPCODES(999)=OTH
+153 SET STOPCODES(180)=OTH
+154 SET STOPCODES(181)=OTH
+155 SET STOPCODES(403)=OTH
+156 SET STOPCODES(404)=OTH
+157 SET STOPCODES(407)=OTH
+158 SET STOPCODES(408)=OTH
+159 SET STOPCODES(424)=OTH
+160 SET STOPCODES(322)=PCARE
+161 SET STOPCODES(323)=PCARE
+162 SET STOPCODES(338)=PCARE
+163 SET STOPCODES(348)=PCARE
+164 SET STOPCODES(704)=PCARE
+165 SET STOPCODES(119)=REHAB
+166 SET STOPCODES(121)=REHAB
+167 SET STOPCODES(156)=REHAB
+168 SET STOPCODES(157)=REHAB
+169 SET STOPCODES(170)=REHAB
+170 SET STOPCODES(171)=REHAB
+171 SET STOPCODES(172)=REHAB
+172 SET STOPCODES(173)=REHAB
+173 SET STOPCODES(174)=REHAB
+174 SET STOPCODES(175)=REHAB
+175 SET STOPCODES(176)=REHAB
+176 SET STOPCODES(177)=REHAB
+177 SET STOPCODES(178)=REHAB
+178 SET STOPCODES(190)=REHAB
+179 SET STOPCODES(195)=REHAB
+180 SET STOPCODES(196)=REHAB
+181 SET STOPCODES(197)=REHAB
+182 SET STOPCODES(198)=REHAB
+183 SET STOPCODES(199)=REHAB
+184 SET STOPCODES(201)=REHAB
+185 SET STOPCODES(202)=REHAB
+186 SET STOPCODES(203)=REHAB
+187 SET STOPCODES(204)=REHAB
+188 SET STOPCODES(205)=REHAB
+189 SET STOPCODES(206)=REHAB
+190 SET STOPCODES(209)=REHAB
+191 SET STOPCODES(210)=REHAB
+192 SET STOPCODES(211)=REHAB
+193 SET STOPCODES(212)=REHAB
+194 SET STOPCODES(214)=REHAB
+195 SET STOPCODES(215)=REHAB
+196 SET STOPCODES(216)=REHAB
+197 SET STOPCODES(217)=REHAB
+198 SET STOPCODES(218)=REHAB
+199 SET STOPCODES(220)=REHAB
+200 SET STOPCODES(221)=REHAB
+201 SET STOPCODES(224)=REHAB
+202 SET STOPCODES(225)=REHAB
+203 SET STOPCODES(229)=REHAB
+204 SET STOPCODES(230)=REHAB
+205 SET STOPCODES(240)=REHAB
+206 SET STOPCODES(241)=REHAB
+207 SET STOPCODES(250)=REHAB
+208 SET STOPCODES(318)=REHAB
+209 SET STOPCODES(326)=REHAB
+210 SET STOPCODES(350)=REHAB
+211 SET STOPCODES(352)=REHAB
+212 SET STOPCODES(353)=REHAB
+213 SET STOPCODES(417)=REHAB
+214 SET STOPCODES(423)=REHAB
+215 SET STOPCODES(425)=REHAB
+216 SET STOPCODES(436)=REHAB
+217 SET STOPCODES(437)=REHAB
+218 SET STOPCODES(438)=REHAB
+219 SET STOPCODES(104)=SPEC
+220 SET STOPCODES(106)=SPEC
+221 SET STOPCODES(116)=SPEC
+222 SET STOPCODES(123)=SPEC
+223 SET STOPCODES(124)=SPEC
+224 SET STOPCODES(126)=SPEC
+225 SET STOPCODES(128)=SPEC
+226 SET STOPCODES(145)=SPEC
+227 SET STOPCODES(149)=SPEC
+228 SET STOPCODES(301)=SPEC
+229 SET STOPCODES(302)=SPEC
+230 SET STOPCODES(303)=SPEC
+231 SET STOPCODES(304)=SPEC
+232 SET STOPCODES(305)=SPEC
+233 SET STOPCODES(306)=SPEC
+234 SET STOPCODES(307)=SPEC
+235 SET STOPCODES(308)=SPEC
+236 SET STOPCODES(309)=SPEC
+237 SET STOPCODES(310)=SPEC
+238 SET STOPCODES(311)=SPEC
+239 SET STOPCODES(312)=SPEC
+240 SET STOPCODES(313)=SPEC
+241 SET STOPCODES(314)=SPEC
+242 SET STOPCODES(315)=SPEC
+243 SET STOPCODES(316)=SPEC
+244 SET STOPCODES(324)=SPEC
+245 SET STOPCODES(325)=SPEC
+246 SET STOPCODES(327)=SPEC
+247 SET STOPCODES(328)=SPEC
+248 SET STOPCODES(329)=SPEC
+249 SET STOPCODES(330)=SPEC
+250 SET STOPCODES(333)=SPEC
+251 SET STOPCODES(334)=SPEC
+252 SET STOPCODES(335)=SPEC
+253 SET STOPCODES(337)=SPEC
+254 SET STOPCODES(340)=SPEC
+255 SET STOPCODES(344)=SPEC
+256 SET STOPCODES(345)=SPEC
+257 SET STOPCODES(346)=SPEC
+258 SET STOPCODES(369)=SPEC
+259 SET STOPCODES(372)=SPEC
+260 SET STOPCODES(373)=SPEC
+261 SET STOPCODES(391)=SPEC
+262 SET STOPCODES(392)=SPEC
+263 SET STOPCODES(394)=SPEC
+264 SET STOPCODES(411)=SPEC
+265 SET STOPCODES(420)=SPEC
+266 ;
+267 ; SET TELEHEALTH AS SUB
+268 ;
+269 SET TELEHEALTH(527)=1
+270 SET TELEHEALTH(545)=1
+271 SET TELEHEALTH(579)=1
+272 SET TELEHEALTH(542)=1
+273 SET TELEHEALTH(546)=1
+274 SET TELEHEALTH(584)=1
+275 SET TELEHEALTH(597)=1
+276 SET TELEHEALTH(111)=1
+277 SET TELEHEALTH(148)=1
+278 SET TELEHEALTH(103)=1
+279 SET TELEHEALTH(147)=1
+280 SET TELEHEALTH(169)=1
+281 SET TELEHEALTH(182)=1
+282 SET TELEHEALTH(371)=1
+283 SET TELEHEALTH(428)=1
+284 SET TELEHEALTH(441)=1
+285 SET TELEHEALTH(528)=1
+286 SET TELEHEALTH(530)=1
+287 SET TELEHEALTH(536)=1
+288 SET TELEHEALTH(611)=1
+289 SET TELEHEALTH(686)=1
+290 SET TELEHEALTH(718)=1
+291 SET TELEHEALTH(181)=1
+292 SET TELEHEALTH(424)=1
+293 SET TELEHEALTH(338)=1
+294 SET TELEHEALTH(178)=1
+295 SET TELEHEALTH(199)=1
+296 SET TELEHEALTH(216)=1
+297 SET TELEHEALTH(221)=1
+298 SET TELEHEALTH(224)=1
+299 SET TELEHEALTH(225)=1
+300 SET TELEHEALTH(229)=1
+301 SET TELEHEALTH(326)=1
+302 SET TELEHEALTH(425)=1
+303 SET TELEHEALTH(324)=1
+304 SET TELEHEALTH(325)=1
+305 ;Other Telehealth
+306 SET TELEHEALTH(645)=1
+307 SET TELEHEALTH(693)=1
+308 SET TELEHEALTH(189)=1
+309 SET TELEHEALTH(646)=1
+310 SET TELEHEALTH(694)=1
+311 SET TELEHEALTH(695)=1
+312 SET TELEHEALTH(696)=1
+313 SET TELEHEALTH(683)=1
+314 ;
+315 SET TELEHEALTH(179)=1
+316 SET TELEHEALTH(648)=1
+317 SET TELEHEALTH(679)=1
+318 SET TELEHEALTH(692)=1
+319 SET TELEHEALTH(699)=1
+320 QUIT
+321 ;