- YSCLTEST ;DALOI/LB/RLM-COLLECT RX AND LAB DATA FOR CLOZAPINE ;10 May 2019 16:19:28
- ;;5.01;MENTAL HEALTH;**18,22,26,47,61,69,74,90,122**;Dec 30, 1994;Build 112
- ; Reference to ^DPT supported by IA #10035
- ; Reference to ^DIC(5 supported by IA #10056
- ; Reference to ^PS(55 supported by IA #787
- ; Reference to ^PSDRUG supported by IA #25
- ; Reference to ^PSRX supported by IA #780
- ; Reference to ^XMD supported by IA #10070
- ; Reference to ^DIC supported by DBIA #2051
- ; Reference to ^%ZTLOAD supported by DBIA #10063
- ; Reference to ^DIQ supported by DBIA #2056
- ; Reference to $$SITE^VASITE supported by DBIA #10112
- ; Reference to ^XLFDT supported by DBIA #10103
- ; Reference to ^%DTC supported by DBIA #10000
- ; Reference to ^%DT supported by DBIA #10003
- ;
- BKGRD ;Normal entry for weekly background job - dates from T-10 to T-3
- Q ; << NCC REMEDIATION - THIS ENTRY POINT IS NOLONGER USED *122/RJS
- S X=DT D DW^%DTC Q:X'=$$GET1^DIQ(603.03,1,2) ;Make the day to run a parameter settable by the server.
- S YSOFF=$S(X="SUNDAY":0,X="MONDAY":1,X="TUESDAY":2,X="WEDNESDAY":3,X="THURSDAY":4,X="FRIDAY":5,X="SATURDAY":6,1:7) Q:YSOFF>6
- S X="T-"_YSOFF D ^%DT S YSCLED=Y,YSCLRET=""
- ;S YSCL=$H#7-2 S:YSCL<1 YSCL=YSCL+7 S X="T-"_(YSCL+7) D ^%DT S YSCLED=Y,YSCLRET="" K YSCL ;Make sure it's a Sunday ending date.
- RUN ; entry from above for normal or below for requeue
- Q ; << NCC REMEDIATION - THIS ENTRY POINT IS NOLONGER USED *122/RJS
- S YSDEBUG=$P(^YSCL(603.03,1,0),"^",3)
- ;I $G(^YSCL(603.02,1,0))'?1.N1"^"1.N G FLERR^YSCLTST3 ;Check for entry in file 603.02, report an error if either entry is missing.
- D DMG^YSCLTST3
- S YSCLSITE=$P($$SITE^VASITE,"^",2)
- K XMY
- S XMY("G.CLOZAPINE ROLL-UP")=""
- I YSDEBUG K XMY S XMY("G.CLOZAPINE DEBUG")=""
- S %DT="T",X="NOW" D ^%DT S YSCLNOW=$P(Y,".",2)
- S XMSUB=$S(YSDEBUG:"DEBUG ",1:"")_"Clozapine lab data started at "_YSCLSITE_" on "_DT_" at "_YSCLNOW,^TMP("YSCL",$J,1,0)=" ",^TMP("YSCL",$J,2,0)="+++ Clozapine data collection started at "_YSCLSITE_" on "_DT_" +++",^TMP("YSCL",$J,3,0)=" "
- S XMTEXT="^TMP(""YSCL"",$J,",XMDUZ="Clozapine MONITOR" D ^XMD
- S $P(^YSCL(603.03,1,0),"^",4)=$$NOW^XLFDT
- ;send MM message when routine started.
- S YSCLLN=0,YSCLLLN=3,X1=$P(YSCLED,"."),X2=-60 D C^%DTC S YSCLM28=X,X1=$P(YSCLED,"."),X2=-28 D C^%DTC S YSCLM7=X,YSCLED=YSCLED+.5 ;28 TO 60 and 14 to 28 6/15/05
- S X1=$P(YSCLED,"."),X2=-180 D C^%DTC S YSCLM180=X
- S X1=$P(YSCLED,"."),X2=-56 D C^%DTC S YSCLM56=X
- S YSCLIF=+$$SITE^VASITE_","
- D GETS^DIQ(4,YSCLIF,"1.01;1.02;1.03;.02;1.04","I","YSCLFF")
- S $P(YSCLDEMO,"^",1)=YSCLFF(4,YSCLIF,1.01,"I")
- S $P(YSCLDEMO,"^",2)=YSCLFF(4,YSCLIF,1.02,"I")
- S $P(YSCLDEMO,"^",3)=YSCLFF(4,YSCLIF,1.03,"I")
- S $P(YSCLDEMO,"^",4)=$P(^DIC(5,YSCLFF(4,YSCLIF,.02,"I"),0),"^",2)
- S $P(YSCLDEMO,"^",5)=YSCLFF(4,YSCLIF,1.04,"I")
- S $P(YSCLDEMO,"^",6)=""
- K J,YSCLF,YSCLFF,YSCLIF,X
- ;YSCLDEMO=street1^street2^city^state(2 letter)^ZIP^phone
- K ^TMP($J),^TMP("YSCL",$J) S (DFN,YSCLIEN)=0
- F K YSCLA S YSCLIEN=$O(^YSCL(603.01,YSCLIEN)),YSCLLD=0 Q:'YSCLIEN S DFN=$P($G(^YSCL(603.01,YSCLIEN,0)),"^",2) S $P(YSSTOP,",",1)=1 Q:$$S^%ZTLOAD D:DFN
- . I $D(^DPT(DFN,0)),$D(^YSCL(603.01,YSCLIEN,0)) S YSCLSAND=$P($G(^YSCL(603.01,YSCLIEN,0)),"^",2),YSCL=^DPT(DFN,0),YSCLX=$E($P($P(YSCL,"^"),",",2))_$E(YSCL)_"^"_$P(YSCL,"^",9) D
- . . S YSCLLAB="" D GET I YSCLLAB]"" D CHECK^YSCLTST1 I YSCLT D LOAD^YSCLTST1
- G TRANSMIT^YSCLTST2
- GET ;prescriptions
- Q:$$S^%ZTLOAD
- N YSARRAY D LIST^DIC(55.03,","_DFN_",",,"I",,,,,,,"YSARRAY")
- S YSCLPHY="",$P(YSCLX,"^",6)=$P(YSCLDEMO,"^",5),$P(YSCLX,"^",11)=$$GET1^DIQ(603.01,YSCLIEN,.01),$P(YSCLX,"^",16)=DT
- ;site zip(p6),registration number (p11), today (p16)
- F YSCL=1:1 Q:'$D(YSARRAY("DILIST",1,YSCL)) S YSCL1=YSARRAY("DILIST",1,YSCL) D
- . D ACTIVE Q:YSACT'=0 S YSDRG=$$GET1^DIQ(52,YSCL1,6,"I") Q:$$GET1^DIQ(50,YSDRG,17.5)'="PSOCLO1"
- . N YSARRAY1 D LIST^DIC(50.02,","_YSDRG_",",3,"I",,,,,,,"YSARRAY1")
- . F YSCL2=1:1 Q:'$D(YSARRAY1("DILIST","ID",YSCL2)) I $G(YSARRAY1("DILIST","ID",YSCL2,3))=1 D Q
- . . S YSCLID=$$GET1^DIQ(52,YSCL1,1,"I") S:YSCLID>$G(YSCLLD) YSCLLD=YSCLID
- . . I YSCLID'>DT,YSCLID'<$G(YSCLM28) S YSCLA(-YSCLID,-YSCL1)="" ;Changed YSCLED to DT RLM
- Q
- ACTIVE ;Test for Active prescriptions
- S YSACT=$$GET1^DIQ(52,YSCL1,100,"I")
- Q
- REXMIT ;Resend Clozapine data
- S X1=YSCLED,X2=-3 D C^%DTC S YSCLED=X,YSCLRET=1,ZTREQ="@" G RUN
- Q
- ABORT ;
- K XMY
- S XMY("G.CLOZAPINE ROLL-UP@")=""
- I YSDEBUG K XMY S XMY("G.CLOZAPINE DEBUG@")=""
- S %DT="T",X="NOW" D ^%DT S YSCLNOW=$P(Y,".",2)
- S YSCLSITE=$P($$SITE^VASITE,"^",2)
- S XMSUB="Clozapine Roll-Up aborted ["_$G(YSSTOP)_"] at "_YSCLSITE_" on "_DT
- S YSTEXT(1,0)=" "
- S YSTEXT(2,0)=$S(YSDEBUG:"DEBUG ",1:"")_"Clozapine Roll-Up aborted ["_$G(YSSTOP)_"] at "_YSCLSITE_" on "_DT_" at "_YSCLNOW,^TMP("YSCL",$J,1,0)=" "
- S XMTEXT="YSTEXT(",XMDUZ="Clozapine MONITOR" D ^XMD
- S ZTSTOP=1 Q
- ZEOR ;YSCLTEST
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HYSCLTEST 4928 printed Mar 13, 2025@21:18:39 Page 2
- YSCLTEST ;DALOI/LB/RLM-COLLECT RX AND LAB DATA FOR CLOZAPINE ;10 May 2019 16:19:28
- +1 ;;5.01;MENTAL HEALTH;**18,22,26,47,61,69,74,90,122**;Dec 30, 1994;Build 112
- +2 ; Reference to ^DPT supported by IA #10035
- +3 ; Reference to ^DIC(5 supported by IA #10056
- +4 ; Reference to ^PS(55 supported by IA #787
- +5 ; Reference to ^PSDRUG supported by IA #25
- +6 ; Reference to ^PSRX supported by IA #780
- +7 ; Reference to ^XMD supported by IA #10070
- +8 ; Reference to ^DIC supported by DBIA #2051
- +9 ; Reference to ^%ZTLOAD supported by DBIA #10063
- +10 ; Reference to ^DIQ supported by DBIA #2056
- +11 ; Reference to $$SITE^VASITE supported by DBIA #10112
- +12 ; Reference to ^XLFDT supported by DBIA #10103
- +13 ; Reference to ^%DTC supported by DBIA #10000
- +14 ; Reference to ^%DT supported by DBIA #10003
- +15 ;
- BKGRD ;Normal entry for weekly background job - dates from T-10 to T-3
- +1 ; << NCC REMEDIATION - THIS ENTRY POINT IS NOLONGER USED *122/RJS
- QUIT
- +2 ;Make the day to run a parameter settable by the server.
- SET X=DT
- DO DW^%DTC
- if X'=$$GET1^DIQ(603.03,1,2)
- QUIT
- +3 SET YSOFF=$SELECT(X="SUNDAY":0,X="MONDAY":1,X="TUESDAY":2,X="WEDNESDAY":3,X="THURSDAY":4,X="FRIDAY":5,X="SATURDAY":6,1:7)
- if YSOFF>6
- QUIT
- +4 SET X="T-"_YSOFF
- DO ^%DT
- SET YSCLED=Y
- SET YSCLRET=""
- +5 ;S YSCL=$H#7-2 S:YSCL<1 YSCL=YSCL+7 S X="T-"_(YSCL+7) D ^%DT S YSCLED=Y,YSCLRET="" K YSCL ;Make sure it's a Sunday ending date.
- RUN ; entry from above for normal or below for requeue
- +1 ; << NCC REMEDIATION - THIS ENTRY POINT IS NOLONGER USED *122/RJS
- QUIT
- +2 SET YSDEBUG=$PIECE(^YSCL(603.03,1,0),"^",3)
- +3 ;I $G(^YSCL(603.02,1,0))'?1.N1"^"1.N G FLERR^YSCLTST3 ;Check for entry in file 603.02, report an error if either entry is missing.
- +4 DO DMG^YSCLTST3
- +5 SET YSCLSITE=$PIECE($$SITE^VASITE,"^",2)
- +6 KILL XMY
- +7 SET XMY("G.CLOZAPINE ROLL-UP")=""
- +8 IF YSDEBUG
- KILL XMY
- SET XMY("G.CLOZAPINE DEBUG")=""
- +9 SET %DT="T"
- SET X="NOW"
- DO ^%DT
- SET YSCLNOW=$PIECE(Y,".",2)
- +10 SET XMSUB=$SELECT(YSDEBUG:"DEBUG ",1:"")_"Clozapine lab data started at "_YSCLSITE_" on "_DT_" at "_YSCLNOW
- SET ^TMP("YSCL",$JOB,1,0)=" "
- SET ^TMP("YSCL",$JOB,2,0)="+++ Clozapine data collection started at "_YSCLSITE_" on "_DT_" +++"
- SET ^TMP("YSCL",$JOB,3,0)=" "
- +11 SET XMTEXT="^TMP(""YSCL"",$J,"
- SET XMDUZ="Clozapine MONITOR"
- DO ^XMD
- +12 SET $PIECE(^YSCL(603.03,1,0),"^",4)=$$NOW^XLFDT
- +13 ;send MM message when routine started.
- +14 ;28 TO 60 and 14 to 28 6/15/05
- SET YSCLLN=0
- SET YSCLLLN=3
- SET X1=$PIECE(YSCLED,".")
- SET X2=-60
- DO C^%DTC
- SET YSCLM28=X
- SET X1=$PIECE(YSCLED,".")
- SET X2=-28
- DO C^%DTC
- SET YSCLM7=X
- SET YSCLED=YSCLED+.5
- +15 SET X1=$PIECE(YSCLED,".")
- SET X2=-180
- DO C^%DTC
- SET YSCLM180=X
- +16 SET X1=$PIECE(YSCLED,".")
- SET X2=-56
- DO C^%DTC
- SET YSCLM56=X
- +17 SET YSCLIF=+$$SITE^VASITE_","
- +18 DO GETS^DIQ(4,YSCLIF,"1.01;1.02;1.03;.02;1.04","I","YSCLFF")
- +19 SET $PIECE(YSCLDEMO,"^",1)=YSCLFF(4,YSCLIF,1.01,"I")
- +20 SET $PIECE(YSCLDEMO,"^",2)=YSCLFF(4,YSCLIF,1.02,"I")
- +21 SET $PIECE(YSCLDEMO,"^",3)=YSCLFF(4,YSCLIF,1.03,"I")
- +22 SET $PIECE(YSCLDEMO,"^",4)=$PIECE(^DIC(5,YSCLFF(4,YSCLIF,.02,"I"),0),"^",2)
- +23 SET $PIECE(YSCLDEMO,"^",5)=YSCLFF(4,YSCLIF,1.04,"I")
- +24 SET $PIECE(YSCLDEMO,"^",6)=""
- +25 KILL J,YSCLF,YSCLFF,YSCLIF,X
- +26 ;YSCLDEMO=street1^street2^city^state(2 letter)^ZIP^phone
- +27 KILL ^TMP($JOB),^TMP("YSCL",$JOB)
- SET (DFN,YSCLIEN)=0
- +28 FOR
- KILL YSCLA
- SET YSCLIEN=$ORDER(^YSCL(603.01,YSCLIEN))
- SET YSCLLD=0
- if 'YSCLIEN
- QUIT
- SET DFN=$PIECE($GET(^YSCL(603.01,YSCLIEN,0)),"^",2)
- SET $PIECE(YSSTOP,",",1)=1
- if $$S^%ZTLOAD
- QUIT
- if DFN
- Begin DoDot:1
- +29 IF $DATA(^DPT(DFN,0))
- IF $DATA(^YSCL(603.01,YSCLIEN,0))
- SET YSCLSAND=$PIECE($GET(^YSCL(603.01,YSCLIEN,0)),"^",2)
- SET YSCL=^DPT(DFN,0)
- SET YSCLX=$EXTRACT($PIECE($PIECE(YSCL,"^"),",",2))_$EXTRACT(YSCL)_"^"_$PIECE(YSCL,"^",9)
- Begin DoDot:2
- +30 SET YSCLLAB=""
- DO GET
- IF YSCLLAB]""
- DO CHECK^YSCLTST1
- IF YSCLT
- DO LOAD^YSCLTST1
- End DoDot:2
- End DoDot:1
- +31 GOTO TRANSMIT^YSCLTST2
- GET ;prescriptions
- +1 if $$S^%ZTLOAD
- QUIT
- +2 NEW YSARRAY
- DO LIST^DIC(55.03,","_DFN_",",,"I",,,,,,,"YSARRAY")
- +3 SET YSCLPHY=""
- SET $PIECE(YSCLX,"^",6)=$PIECE(YSCLDEMO,"^",5)
- SET $PIECE(YSCLX,"^",11)=$$GET1^DIQ(603.01,YSCLIEN,.01)
- SET $PIECE(YSCLX,"^",16)=DT
- +4 ;site zip(p6),registration number (p11), today (p16)
- +5 FOR YSCL=1:1
- if '$DATA(YSARRAY("DILIST",1,YSCL))
- QUIT
- SET YSCL1=YSARRAY("DILIST",1,YSCL)
- Begin DoDot:1
- +6 DO ACTIVE
- if YSACT'=0
- QUIT
- SET YSDRG=$$GET1^DIQ(52,YSCL1,6,"I")
- if $$GET1^DIQ(50,YSDRG,17.5)'="PSOCLO1"
- QUIT
- +7 NEW YSARRAY1
- DO LIST^DIC(50.02,","_YSDRG_",",3,"I",,,,,,,"YSARRAY1")
- +8 FOR YSCL2=1:1
- if '$DATA(YSARRAY1("DILIST","ID",YSCL2))
- QUIT
- IF $GET(YSARRAY1("DILIST","ID",YSCL2,3))=1
- Begin DoDot:2
- +9 SET YSCLID=$$GET1^DIQ(52,YSCL1,1,"I")
- if YSCLID>$GET(YSCLLD)
- SET YSCLLD=YSCLID
- +10 ;Changed YSCLED to DT RLM
- IF YSCLID'>DT
- IF YSCLID'<$GET(YSCLM28)
- SET YSCLA(-YSCLID,-YSCL1)=""
- End DoDot:2
- QUIT
- End DoDot:1
- +11 QUIT
- ACTIVE ;Test for Active prescriptions
- +1 SET YSACT=$$GET1^DIQ(52,YSCL1,100,"I")
- +2 QUIT
- REXMIT ;Resend Clozapine data
- +1 SET X1=YSCLED
- SET X2=-3
- DO C^%DTC
- SET YSCLED=X
- SET YSCLRET=1
- SET ZTREQ="@"
- GOTO RUN
- +2 QUIT
- ABORT ;
- +1 KILL XMY
- +2 SET XMY("G.CLOZAPINE ROLL-UP@")=""
- +3 IF YSDEBUG
- KILL XMY
- SET XMY("G.CLOZAPINE DEBUG@")=""
- +4 SET %DT="T"
- SET X="NOW"
- DO ^%DT
- SET YSCLNOW=$PIECE(Y,".",2)
- +5 SET YSCLSITE=$PIECE($$SITE^VASITE,"^",2)
- +6 SET XMSUB="Clozapine Roll-Up aborted ["_$GET(YSSTOP)_"] at "_YSCLSITE_" on "_DT
- +7 SET YSTEXT(1,0)=" "
- +8 SET YSTEXT(2,0)=$SELECT(YSDEBUG:"DEBUG ",1:"")_"Clozapine Roll-Up aborted ["_$GET(YSSTOP)_"] at "_YSCLSITE_" on "_DT_" at "_YSCLNOW
- SET ^TMP("YSCL",$JOB,1,0)=" "
- +9 SET XMTEXT="YSTEXT("
- SET XMDUZ="Clozapine MONITOR"
- DO ^XMD
- +10 SET ZTSTOP=1
- QUIT
- ZEOR ;YSCLTEST