RTQ2 ;MJK,JSM/TROY ISC;Scheduling Link; ; 5/21/87  3:09 PM ;
 ;;2.0;Record Tracking;**13,15,21,45**;10/22/91;Build 7
BLD I $D(SDPL) S RTINP=+$P(^RTV(195.9,RTB,0),"^",3)
 E  S RTINP=0
 F RTBLD=0:0 S RTBLD=$O(^RTV(195.9,RTB,"RECS",RTBLD)) Q:'RTBLD  S X=$G(^(RTBLD,0)) I X]"" D
 . I $D(RTINP(RTINP)) Q  ; don't create for inpts
 . I $P($G(^DIC(195.1,+RTINP,4)),"^",3)="n",'$D(^RT("AT",+X,DFN_";DPT(")) Q  ; don't create record, no record exists
 . D BLD1 S RTSD=""
 Q
 ;
BLD1 Q:$S('$D(^DIC(195.2,+X,0)):1,$P(X,"^",2)']"":1,$P(X,"^",2)="n":1,1:0)
 S RTTY=+X,RTTYR(+X)="",RTAPL=+$P(X,"^",3),RTSEL=$C($A($P(X,"^",2))-32)
BLD2 S (L,L1)=0 F I=0:0 S I=$O(^RT("AT",RTTY,RTE,I)) Q:'I  I $D(^RT(I,0)) S:RTSEL["A" RTSD(I)=+RTAPL S:$P(^(0),"^",7)>L L=$P(^(0),"^",7),L1=I
 I 'L1 K RTSHOW D TYPE1^RTDPA1 S RTTY=+RTTY G BLD2
 S:RTSEL["L" RTSD(L1)=+RTAPL
 Q
 ;ent from SD
CREATE Q:'$D(^SC(SDSC,0))  S Y=^(0),RTB=SDSC_";SC(",RTA=+^DIC(195.4,1,$S(SDPL:"MAS",$P(Y,"^",3)="I":"RAD",1:"MAS")) D CHK S Y=+$P(^RTV(195.9,Y,0),"^",12)
 S RTAPPIEN("MAS")=+^DIC(195.4,1,"MAS"),RTAPP("MAS")=$G(^DIC(195.1,RTAPPIEN("MAS"),4))
 S RTAPPIEN("RAD")=+^DIC(195.4,1,"RAD"),RTAPP("RAD")=$G(^DIC(195.1,RTAPPIEN("RAD"),4))
 ;exclude inpatients by app
 K RTINP I SDPL,$D(^DPT(DFN,.1)),^(.1)]"" DO
 .I +RTAPP("MAS") S RTINP(RTAPPIEN("MAS"))=""
 .I +RTAPP("RAD") S RTINP(RTAPPIEN("RAD"))=""
 I $D(RTINP(RTAPPIEN("MAS"))),$D(RTINP(RTAPPIEN("RAD"))) K RTINP Q
 ;
 I '$D(RTCLEX),$D(RTEXCLUD)>9,$D(^DPT(DFN,"S",SDTTM,0)),RTEXCLUD(RTA)[(U_$P(^(0),"^",16)_U) Q
 I $D(^RTV(195.9,Y,0)),$P(^(0),"^")[";SC(",$D(^SC(+^(0),0)) S SDSC=+^RTV(195.9,Y,0),RTB=Y
 I '$D(^SC("ARAD",SDSC,SDTTM,DFN)),$P(^RTV(195.9,RTB,0),"^",14)="n" Q
 S Y=^SC(SDSC,0),RTE=DFN_";DPT(",RTPLTY=1,(RTQDT,X)=SDTTM,RTPN=$P(Y,"^")_" ["_$E(X,4,5)_"/"_$E(X,6,7)_"/"_$E(X,2,3)_"]"
 S X=RTB,A=+RTA K RTA,RTSD,RTDIV D INST1^RTUTL G Q:'$D(RTINST) S RTDIV=RTINST
 G Q:$S('SDPL:0,'$D(^SC(SDSC,"S",SDTTM,1,SDPL,0)):1,DFN'=+^(0):1,$P(^(0),"^",9)["C":1,$D(^("RTR")):1,1:0) D BLD
 I SDPL,'$D(RTSD) F RTBLD=0:0 S RTBLD=$O(^DIC(195.1,RTAPPIEN("MAS"),"MAS",RTBLD)) Q:'RTBLD  I $D(^(RTBLD,0)) S X=^(0) D
 . I $D(RTINP(RTAPPIEN("MAS"))) Q  ; don't create for inpatients
 . I $P(RTAPP("MAS"),"^",3)="n",'$D(^RT("AT",+X,DFN_";DPT(")) Q  ; don't create record, no record exists
 . D BLD1
 I SDPL,$D(^SC("ARAD",SDSC,SDTTM,DFN)),$P(^(DFN),"^")'["N" F RTBLD=0:0 S RTBLD=$O(^DIC(195.1,RTAPPIEN("MAS"),"RAD",RTBLD)) Q:'RTBLD  I $D(^(RTBLD,0)) S X=^(0) D  ; only stored under MAS application
 . I $D(RTINP(RTAPPIEN("RAD"))) Q  ; don't create for inpatients
 . I $P(RTAPP("RAD"),"^",3)="n",'$D(^RT("AT",+X,DFN_";DPT(")) Q  ; don't create record, no record exists
 . D BLD1:'$D(RTTYR(+X))
 D RTSD I $D(RTPAR),SDPL D RTSET^SDUTL
Q K RTINP,RTAPP,RTAPPIEN,RTBLD,RTTYR,RTBKGRD,RTPAR,RTSD,RT,RTSEL
 K A,Z,L,L1,I,RTINST,RTDIV,RTPULL,RTPN,RTTY,RTTYP,RTAPL,RTQ,RTY,RTS,RTQDT,RTB,RTPLTY,RTE D CLOSE^RTUTL Q
 ;
PULL F I=0:0 S I=$O(^RTV(194.2,"B",RTPN,I)) Q:'I  I $D(^RTV(194.2,I,0)),$P(^(0),"^",15)=+RTAPL,$P(^(0),"^",2)=$P(RTQDT,".") Q
 I I S RTPULL=I Q
 S I=$P(^RTV(194.2,0),"^",3)
LOCK S I=I+1 L +^RTV(194.2,I):1 I '$T!$D(^RTV(194.2,I)) L -^RTV(194.2,I) G LOCK
 S ^RTV(194.2,I,0)=RTPN_"^^^^^^^^^^^^^^"_+RTAPL,^RTV(194.2,"B",RTPN,I)="",^RTV(194.2,"AC",+RTAPL,I)="",^(0)=$P(^RTV(194.2,0),"^",1,2)_"^"_I_"^"_($P(^(0),"^",4)+1),^DISV($S($D(DUZ)'[0:DUZ,1:0),"^RTV(194.2,")=I L -^RTV(194.2,I)
 S (DA,RTPULL)=I,DR="[RT PULL LIST]",DIE="^RTV(194.2," D ^DIE K DQ,DE Q
 ;
CANCEL Q:'$D(^RTV(190.1,+RTPAR,0))  S (RTQ,RTPAR)=+RTPAR,RTCAN="I $P(^(0),""^"",6)'=""x"" S DA=RTQ,DIE=""^RTV(190.1,"",DR=""[RT CHANGE REQUEST STATUS]"",RTSTAT=""x"" D ^DIE K DQ,DE" X RTCAN
 F RTQ=0:0 S RTQ=$O(^RTV(190.1,"APAR",RTPAR,RTQ)) Q:'RTQ  I $D(^RTV(190.1,RTQ,0)) X RTCAN
 K RTCAN,RTQ,RTSTAT Q
 ;
RTSD K RTPAR F RT=0:0 S RT=$O(RTSD(RT)) Q:'RT  S RTB=SDSC_";SC(",(RTA,RTAPL)=+RTSD(RT) D CHK K RTA,RTQ D PULL:SDPL,SET^RTQ K:'$D(RTQ) RTSD(RT) I '$D(RTPAR),$D(RTQ) S RTPAR=RTQ
 Q
 ;
CHK S Y=+$O(^RTV(195.9,"ABOR",RTB,RTA,0)) D SET^RTDPA3:'Y S RTB=Y Q
 ;
QUE I SDPL,$P(SDTTM,".")=DT S X="I",RTCLEX="" D SAVE^RTQ3,ASK^RTQ3 K RTESC S:$E(X)'="Y" RTESC="" S X="I" D RESTORE^RTQ3 S X=SDTTM I $D(RTESC) K RTESC,RTCLEX Q
 ;
 I $P(SDTTM,".")'=DT,SDPL,SDRT="A",$P(^DIC(195.4,1,0),"^",5) Q
 ;S SAVX=X
 X ^%ZOSF("UCI") S ZTUCI=Y,ZTRTN="DQ^RTQ2",ZTDTH=$H
 F V="DUZ(0)","SDSC","SDTTM","SDPL","DFN","RTCOM","RTCLEX" I $D(@V) S ZTSAVE(V)=""
 S ZTDESC="MAS/X-RAY Record Request Link",ZTIO=$P(^DIC(195.4,1,0),"^",3) K H,V,ZTSK N X D ^%ZTLOAD Q
 ;
DQ S RTBKGRD="",U="^" K V S X="T",%DT="" D ^%DT S DT=Y
 ;I $P(^DIC(195.4,1,0),"^",5) S SDPL=0
 G CREATE
 ;
 ;
DOC ;
 ;
 ;
 ;
 ;    in: SDSC=clinic#, SDTTM=appt d/t, DFN=patient#
 ;    out: RTPAR=parent request#, RTSD(n)=volumes selected
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HRTQ2   4789     printed  Sep 23, 2025@20:10:50                                                                                                                                                                                                        Page 2
RTQ2      ;MJK,JSM/TROY ISC;Scheduling Link; ; 5/21/87  3:09 PM ;
 +1       ;;2.0;Record Tracking;**13,15,21,45**;10/22/91;Build 7
BLD        IF $DATA(SDPL)
               SET RTINP=+$PIECE(^RTV(195.9,RTB,0),"^",3)
 +1       IF '$TEST
               SET RTINP=0
 +2        FOR RTBLD=0:0
               SET RTBLD=$ORDER(^RTV(195.9,RTB,"RECS",RTBLD))
               if 'RTBLD
                   QUIT 
               SET X=$GET(^(RTBLD,0))
               IF X]""
                   Begin DoDot:1
 +3       ; don't create for inpts
                       IF $DATA(RTINP(RTINP))
                           QUIT 
 +4       ; don't create record, no record exists
                       IF $PIECE($GET(^DIC(195.1,+RTINP,4)),"^",3)="n"
                           IF '$DATA(^RT("AT",+X,DFN_";DPT("))
                               QUIT 
 +5                    DO BLD1
                       SET RTSD=""
                   End DoDot:1
 +6        QUIT 
 +7       ;
BLD1       if $SELECT('$DATA(^DIC(195.2,+X,0))
               QUIT 
 +1        SET RTTY=+X
           SET RTTYR(+X)=""
           SET RTAPL=+$PIECE(X,"^",3)
           SET RTSEL=$CHAR($ASCII($PIECE(X,"^",2))-32)
BLD2       SET (L,L1)=0
           FOR I=0:0
               SET I=$ORDER(^RT("AT",RTTY,RTE,I))
               if 'I
                   QUIT 
               IF $DATA(^RT(I,0))
                   if RTSEL["A"
                       SET RTSD(I)=+RTAPL
                   if $PIECE(^(0),"^",7)>L
                       SET L=$PIECE(^(0),"^",7)
                       SET L1=I
 +1        IF 'L1
               KILL RTSHOW
               DO TYPE1^RTDPA1
               SET RTTY=+RTTY
               GOTO BLD2
 +2        if RTSEL["L"
               SET RTSD(L1)=+RTAPL
 +3        QUIT 
 +4       ;ent from SD
CREATE     if '$DATA(^SC(SDSC,0))
               QUIT 
           SET Y=^(0)
           SET RTB=SDSC_";SC("
           SET RTA=+^DIC(195.4,1,$SELECT(SDPL:"MAS",$PIECE(Y,"^",3)="I":"RAD",1:"MAS"))
           DO CHK
           SET Y=+$PIECE(^RTV(195.9,Y,0),"^",12)
 +1        SET RTAPPIEN("MAS")=+^DIC(195.4,1,"MAS")
           SET RTAPP("MAS")=$GET(^DIC(195.1,RTAPPIEN("MAS"),4))
 +2        SET RTAPPIEN("RAD")=+^DIC(195.4,1,"RAD")
           SET RTAPP("RAD")=$GET(^DIC(195.1,RTAPPIEN("RAD"),4))
 +3       ;exclude inpatients by app
 +4        KILL RTINP
           IF SDPL
               IF $DATA(^DPT(DFN,.1))
                   IF ^(.1)]""
                       Begin DoDot:1
 +5                        IF +RTAPP("MAS")
                               SET RTINP(RTAPPIEN("MAS"))=""
 +6                        IF +RTAPP("RAD")
                               SET RTINP(RTAPPIEN("RAD"))=""
                       End DoDot:1
 +7        IF $DATA(RTINP(RTAPPIEN("MAS")))
               IF $DATA(RTINP(RTAPPIEN("RAD")))
                   KILL RTINP
                   QUIT 
 +8       ;
 +9        IF '$DATA(RTCLEX)
               IF $DATA(RTEXCLUD)>9
                   IF $DATA(^DPT(DFN,"S",SDTTM,0))
                       IF RTEXCLUD(RTA)[(U_$PIECE(^(0),"^",16)_U)
                           QUIT 
 +10       IF $DATA(^RTV(195.9,Y,0))
               IF $PIECE(^(0),"^")[";SC("
                   IF $DATA(^SC(+^(0),0))
                       SET SDSC=+^RTV(195.9,Y,0)
                       SET RTB=Y
 +11       IF '$DATA(^SC("ARAD",SDSC,SDTTM,DFN))
               IF $PIECE(^RTV(195.9,RTB,0),"^",14)="n"
                   QUIT 
 +12       SET Y=^SC(SDSC,0)
           SET RTE=DFN_";DPT("
           SET RTPLTY=1
           SET (RTQDT,X)=SDTTM
           SET RTPN=$PIECE(Y,"^")_" ["_$EXTRACT(X,4,5)_"/"_$EXTRACT(X,6,7)_"/"_$EXTRACT(X,2,3)_"]"
 +13       SET X=RTB
           SET A=+RTA
           KILL RTA,RTSD,RTDIV
           DO INST1^RTUTL
           if '$DATA(RTINST)
               GOTO Q
           SET RTDIV=RTINST
 +14       if $SELECT('SDPL:0,'$DATA(^SC(SDSC,"S",SDTTM,1,SDPL,0)):1,DFN'=+^(0):1,$PIECE(^(0),"^",9)["C":1,$DATA(^("RTR")):1,1:0)
               GOTO Q
           DO BLD
 +15       IF SDPL
               IF '$DATA(RTSD)
                   FOR RTBLD=0:0
                       SET RTBLD=$ORDER(^DIC(195.1,RTAPPIEN("MAS"),"MAS",RTBLD))
                       if 'RTBLD
                           QUIT 
                       IF $DATA(^(RTBLD,0))
                           SET X=^(0)
                           Begin DoDot:1
 +16      ; don't create for inpatients
                               IF $DATA(RTINP(RTAPPIEN("MAS")))
                                   QUIT 
 +17      ; don't create record, no record exists
                               IF $PIECE(RTAPP("MAS"),"^",3)="n"
                                   IF '$DATA(^RT("AT",+X,DFN_";DPT("))
                                       QUIT 
 +18                           DO BLD1
                           End DoDot:1
 +19      ; only stored under MAS application
           IF SDPL
               IF $DATA(^SC("ARAD",SDSC,SDTTM,DFN))
                   IF $PIECE(^(DFN),"^")'["N"
                       FOR RTBLD=0:0
                           SET RTBLD=$ORDER(^DIC(195.1,RTAPPIEN("MAS"),"RAD",RTBLD))
                           if 'RTBLD
                               QUIT 
                           IF $DATA(^(RTBLD,0))
                               SET X=^(0)
                               Begin DoDot:1
 +20      ; don't create for inpatients
                                   IF $DATA(RTINP(RTAPPIEN("RAD")))
                                       QUIT 
 +21      ; don't create record, no record exists
                                   IF $PIECE(RTAPP("RAD"),"^",3)="n"
                                       IF '$DATA(^RT("AT",+X,DFN_";DPT("))
                                           QUIT 
 +22                               if '$DATA(RTTYR(+X))
                                       DO BLD1
                               End DoDot:1
 +23       DO RTSD
           IF $DATA(RTPAR)
               IF SDPL
                   DO RTSET^SDUTL
Q          KILL RTINP,RTAPP,RTAPPIEN,RTBLD,RTTYR,RTBKGRD,RTPAR,RTSD,RT,RTSEL
 +1        KILL A,Z,L,L1,I,RTINST,RTDIV,RTPULL,RTPN,RTTY,RTTYP,RTAPL,RTQ,RTY,RTS,RTQDT,RTB,RTPLTY,RTE
           DO CLOSE^RTUTL
           QUIT 
 +2       ;
PULL       FOR I=0:0
               SET I=$ORDER(^RTV(194.2,"B",RTPN,I))
               if 'I
                   QUIT 
               IF $DATA(^RTV(194.2,I,0))
                   IF $PIECE(^(0),"^",15)=+RTAPL
                       IF $PIECE(^(0),"^",2)=$PIECE(RTQDT,".")
                           QUIT 
 +1        IF I
               SET RTPULL=I
               QUIT 
 +2        SET I=$PIECE(^RTV(194.2,0),"^",3)
LOCK       SET I=I+1
           LOCK +^RTV(194.2,I):1
           IF '$TEST!$DATA(^RTV(194.2,I))
               LOCK -^RTV(194.2,I)
               GOTO LOCK
 +1        SET ^RTV(194.2,I,0)=RTPN_"^^^^^^^^^^^^^^"_+RTAPL
           SET ^RTV(194.2,"B",RTPN,I)=""
           SET ^RTV(194.2,"AC",+RTAPL,I)=""
           SET ^(0)=$PIECE(^RTV(194.2,0),"^",1,2)_"^"_I_"^"_($PIECE(^(0),"^",4)+1)
           SET ^DISV($SELECT($DATA(DUZ)'[0:DUZ,1:0),"^RTV(194.2,")=I
           LOCK -^RTV(194.2,I)
 +2        SET (DA,RTPULL)=I
           SET DR="[RT PULL LIST]"
           SET DIE="^RTV(194.2,"
           DO ^DIE
           KILL DQ,DE
           QUIT 
 +3       ;
CANCEL     if '$DATA(^RTV(190.1,+RTPAR,0))
               QUIT 
           SET (RTQ,RTPAR)=+RTPAR
           SET RTCAN="I $P(^(0),""^"",6)'=""x"" S DA=RTQ,DIE=""^RTV(190.1,"",DR=""[RT CHANGE REQUEST STATUS]"",RTSTAT=""x"" D ^DIE K DQ,DE"
           XECUTE RTCAN
 +1        FOR RTQ=0:0
               SET RTQ=$ORDER(^RTV(190.1,"APAR",RTPAR,RTQ))
               if 'RTQ
                   QUIT 
               IF $DATA(^RTV(190.1,RTQ,0))
                   XECUTE RTCAN
 +2        KILL RTCAN,RTQ,RTSTAT
           QUIT 
 +3       ;
RTSD       KILL RTPAR
           FOR RT=0:0
               SET RT=$ORDER(RTSD(RT))
               if 'RT
                   QUIT 
               SET RTB=SDSC_";SC("
               SET (RTA,RTAPL)=+RTSD(RT)
               DO CHK
               KILL RTA,RTQ
               if SDPL
                   DO PULL
               DO SET^RTQ
               if '$DATA(RTQ)
                   KILL RTSD(RT)
               IF '$DATA(RTPAR)
                   IF $DATA(RTQ)
                       SET RTPAR=RTQ
 +1        QUIT 
 +2       ;
CHK        SET Y=+$ORDER(^RTV(195.9,"ABOR",RTB,RTA,0))
           if 'Y
               DO SET^RTDPA3
           SET RTB=Y
           QUIT 
 +1       ;
QUE        IF SDPL
               IF $PIECE(SDTTM,".")=DT
                   SET X="I"
                   SET RTCLEX=""
                   DO SAVE^RTQ3
                   DO ASK^RTQ3
                   KILL RTESC
                   if $EXTRACT(X)'="Y"
                       SET RTESC=""
                   SET X="I"
                   DO RESTORE^RTQ3
                   SET X=SDTTM
                   IF $DATA(RTESC)
                       KILL RTESC,RTCLEX
                       QUIT 
 +1       ;
 +2        IF $PIECE(SDTTM,".")'=DT
               IF SDPL
                   IF SDRT="A"
                       IF $PIECE(^DIC(195.4,1,0),"^",5)
                           QUIT 
 +3       ;S SAVX=X
 +4        XECUTE ^%ZOSF("UCI")
           SET ZTUCI=Y
           SET ZTRTN="DQ^RTQ2"
           SET ZTDTH=$HOROLOG
 +5        FOR V="DUZ(0)","SDSC","SDTTM","SDPL","DFN","RTCOM","RTCLEX"
               IF $DATA(@V)
                   SET ZTSAVE(V)=""
 +6        SET ZTDESC="MAS/X-RAY Record Request Link"
           SET ZTIO=$PIECE(^DIC(195.4,1,0),"^",3)
           KILL H,V,ZTSK
           NEW X
           DO ^%ZTLOAD
           QUIT 
 +7       ;
DQ         SET RTBKGRD=""
           SET U="^"
           KILL V
           SET X="T"
           SET %DT=""
           DO ^%DT
           SET DT=Y
 +1       ;I $P(^DIC(195.4,1,0),"^",5) S SDPL=0
 +2        GOTO CREATE
 +3       ;
 +4       ;
DOC       ;
 +1       ;
 +2       ;
 +3       ;
 +4       ;    in: SDSC=clinic#, SDTTM=appt d/t, DFN=patient#
 +5       ;    out: RTPAR=parent request#, RTSD(n)=volumes selected