YSCLTST5 ;HINOI/RSJ-TRANSMISSION DATA FOR CLOZAPINE ORDERS ;7 May 2020 17:31:44
 ;;5.01;MENTAL HEALTH;**122,154,149**;Dec 30, 1994;Build 72
 ; Reference to $$SITE^VASITE supported by IA #10112
 ; Reference to ^DPT supported by IA #10035
 ; Reference to ^PS(55 supported by IA #787
 ; Reference to ^PS(59 supported by IA #783
 ; Reference to ^VA(200 supported by IA #10060
 ; Reference to ^LAB(60 supported by IA #333
 ; Reference to ^DIC supported by DBIA #2051
 ; Reference to ^DIE supported by DBIA #2053
 ; Reference to ^DIQ supported by DBIA #2056
 ; Reference to ^DIR supported by DBIA #10026
 ; Reference to ^VADPT supported by DBIA #10061
 ; Reference to ^XLFDT supported by DBIA #10103
 ; Reference to ^%ZTLOAD supported by DBIA #10063
 ; Reference to ^%DTC supported by DBIA #10000
 ; Reference to ^%DT supported by DBIA #10003
 ;
 Q
INPSND ; Build inpatient clozapine data for transmision
 N PSJPAT,PSJIOF,YCLSCNTR,PSGTIM,X,X1,X2 S YSCLRET="",PSJPAT=DFN,PSJIOF=IOF,YCLSCNTR=0
 D XTMPZRO
 S:'$G(^XTMP("YSCLTRN",DT)) ^XTMP("YSCLTRN",DT)=0
 D DMG,DMG1,GETINP,INPCHK
 I YSCLT D LOAD
 S DFN=PSJPAT,IOF=PSJIOF
 K ^TMP("YSCL",$J),^TMP("YSCLL",$J),^TMP($J)
 Q
DMG ; Called by YSCLDIS
 Q:'DFN
 N PSDFN
 S YSDEBUG=$$GET1^DIQ(603.03,1,3,"I"),PSDFN=DFN    ;$P(^YSCL(603.03,1,0),"^",3)
 K ^TMP($J),^TMP("YSCL",$J) S (YSCLIEN,YSCLLN)=0,YSCLNO=20
 N ARRAY D LIST^DIC(603.01,,1,"I",,,DFN,"C",,,"ARRAY")
 S YSCLIEN=$G(ARRAY("DILIST",2,1)) Q:'YSCLIEN
 S $P(YSSTOP,",",8)=8 Q:$$S^%ZTLOAD
 I $L($$GET1^DIQ(2,DFN,.01)) S YSCLC=ARRAY("DILIST","ID",1,.01) D GET
 ; YS*5.01*174 removed SETs to ^XTMP("YSCLDEM")
 ;
 S DFN=PSDFN
 Q
DMG1 ; GATHER FACILITY INFORMATION
 S YSCLLN=0,YSCLLLN=3,(X1,YSCLED)=DT,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
 Q
GET ; GATHER PATIENT DEMOGRAPHICS
 S $P(YSSTOP,",",9)=9 Q:$$S^%ZTLOAD
 Q:'$L($$GET1^DIQ(55,DFN,53))  ; Don't try to transmit if no pharmacy record
 Q:$$GET1^DIQ(55,DFN,56,"I")   ; Don't retransmit demographics.
 Q:$D(^TMP("YSCLL",$J,DFN))
 S ^TMP("YSCLL",$J,DFN)=1
 S YSCLP=$$GET1^DIQ(55,DFN,57,"I"),YSCLDEA=$$GET1^DIQ(200,YSCLP,53.2),YSCLP=$$GET1^DIQ(200,YSCLP,.01)
 D DEM^VADPT,ADD^VADPT S YSCL=$G(YSCLC)_"^"_$E($P(VADM(1),",",2))_$E(VADM(1))_"^"_$P(VADM(3),"^")_"^"_$P(VADM(2),"^")_"^"_$P(VADM(5),"^")_"^"_VAPA(6)_"^"_DT
 D
 . S YSRACE="*"
 . S YSRC=0 F  S YSRC=$O(VADM(11,YSRC)) Q:'YSRC  S YSRACE=YSRACE_+VADM(11,YSRC)_"-"_+VADM(11,YSRC,1)_","
 . S YSRACE=YSRACE_"~"
 . S YSRC=0 F  S YSRC=$O(VADM(12,YSRC)) Q:'YSRC  S YSRACE=YSRACE_+VADM(12,YSRC)_"-"_+VADM(12,YSRC,1)_","
 S YSCL=YSCL_"^"_YSRACE_"^"_YSCLP_"^"_YSCLDEA
 ; YSCLJ contains a ZIP code
 N ARRAY59 D LIST^DIC(59,,"1;.05",,,,,,,,"ARRAY59")
 S YSCLJ="" F  S YSCLJ=$O(ARRAY59("DILIST","ID",YSCLJ)) Q:'YSCLJ  I ARRAY59("DILIST","ID",YSCLJ,1)'="" S YSCLJ=ARRAY59("DILIST","ID",YSCLJ,.05) Q
 S YSCL=YSCL_"^"_YSCLJ
 ;registration number^initials^dob^ssn^sex^zip^today^race^physician^dea^zip code (hosp)
 S YSCLLN=YSCLLN+1,^TMP($J,YSCLLN,0)=YSCL
 I VADM(5)=""!(VAPA(6)="")!('VADM(11))!('VADM(12)) D  ;RLM RACETEST
 . S ^TMP("YSCL",$J,YSCLNO,0)=$P(VADM(2),"^",1)_"   "_VADM(1)
 . S:VADM(5)="" ^TMP("YSCL",$J,YSCLNO,0)=^TMP("YSCL",$J,YSCLNO,0)_" (SEX)"
 . S:VAPA(6)="" ^TMP("YSCL",$J,YSCLNO,0)=^TMP("YSCL",$J,YSCLNO,0)_" (ZIP)"
 . S:'VADM(12) ^TMP("YSCL",$J,YSCLNO,0)=^TMP("YSCL",$J,YSCLNO,0)_" (RACE, NEW FORMAT)"
 . S:'VADM(11) ^TMP("YSCL",$J,YSCLNO,0)=^TMP("YSCL",$J,YSCLNO,0)_" (ETHNICITY)"
 . S YSCLNO=YSCLNO+1
 . S ^TMP("YSCLL",$J,DFN)=0 ; leave unmarked pending demographic data
 . I ('VADM(11))!('VADM(12)) D
 . . S ^TMP("YSCL",$J,YSCLNO,0)="NOTE: Race and Ethnicity may be entered if permission is obtained in the informed consent",YSCLNO=YSCLNO+1
 . . S ^TMP("YSCL",$J,YSCLNO,0)="document. See VHA Directive 99-035.",YSCLNO=YSCLNO+1
 ;
 Q
GETINP ;Inpatient Medications
 Q:$$S^%ZTLOAD  D DEM^VADPT
 S YSCLX=$E($P(VADM(1),",",2))_$E(VADM(1))_"^"_$P(VADM(2),"^")
 S YSCLPHY="",$P(YSCLX,"^",6)=$P(YSCLDEMO,"^",5),$P(YSCLX,"^",11)=$G(YSCLC),$P(YSCLX,"^",16)=DT
 ;site zip(p6),registration number (p11), today (p16)
 S YSSTRT=$$GET1^DIQ(55.06,+PSGORD_","_DFN,10,"I"),YSSTOP=$$GET1^DIQ(55.06,+PSGORD_","_DFN,34,"I")
 ;S YSSTRT=$P($G(^PS(55,DFN,5,+PSGORD,2)),"^",2),YSSTOP=$P($G(^PS(55,DFN,5,+PSGORD,2)),"^",4)
 S PSJOR=$$GET1^DIQ(55.06,+PSGORD_","_DFN,66) ;$P($G(^PS(55,DFN,5,+PSGORD,0)),"^",21)
 Q
INPCHK ;for data to send
 S YSCLT=0,YSCLWBC=0
 S $P(YSSTOP,",",3)=3 Q:$$S^%ZTLOAD
 K PNM,SEX,DOB,AGE,SSN D DEM^VADPT I 'VAERR S PNM=VADM(1),SEX=$P(VADM(5),U),DOB=$P(VADM(3),U),AGE=VADM(4),SSN=$P(VADM(2),U)
 I $G(PSGSD)=0,$$GET1^DIQ(55,DFN,54,"I")="P" Q  ;no transmit for pretreatment
 I $G(PSGSD),$G(PSGSD)<YSCLM180 Q  ;Don't report if over 6 months old.
 S YSCL=$O(YSCLA("")) I 'YSCL D LAB^YSCLTST1 S YSCLT=1  ;Q  ;get latest WBC results even if no script.
 S YSCLT=1,YSCLRXPR=$$GET1^DIQ(55.06,+PSGORD_","_DFN,1,"I") ;we've got provider
 N PSJWRD,PSJDIV,PSJINST S PSJWRD=$$GET1^DIQ(55.06,+PSGORD_","_DFN,68,"I")
 S:'PSJWRD PSJWRD=$$GET1^DIQ(5506,+PSGORD_","_DFN,9,"I")
 I PSJWRD S PSJINST=$$GET1^DIQ(42,PSJWRD,44,"I") I PSJINST S PSJDIV=$$GET1^DIQ(44,PSJINST,3,"I")
 S YSCLD=$G(PSJDIV) I YSCLD S $P(YSCLX,"^",10)=$$GET1^DIQ(4,YSCLD,52),$P(YSCLX,"^",12)=YSCLD
 ;site DEA# (p10), site pointer (p12)
 ;here if active
 I $$GET1^DIQ(55,DFN,54,"I")="A" S $P(YSCLX,"^",5)="A" ;force active
 S $P(YSCLX,"^",13)=1,$P(YSCLX,"^",9)=PSGLI\1
 I '$L($$GET1^DIQ(55.06,+PSGORD_","_DFN,301)),$G(^TMP("PSJCOM",$J,+$G(PSGORD),"SAND")) D
 .S DIE="^PS(55,"_DFN_",5,",DA(1)=DFN,DA=+PSGORD,DR="301////"_^TMP("PSJCOM",$J,+PSGORD,"SAND") D ^DIE
 S $P(YSCLX,"^",8)=+$$GET1^DIQ(55.06,+PSGORD_","_DFN,301)
 ;status(p5),dosage(p8),rx count(p13),issue date(p9)
 S YSCLLO=$O(^PS(53.8,"A",+$G(PSJOR),0)) I YSCLLO D
 .S $P(YSCLX,"^",14)=$$GET1^DIQ(53.8,YSCLLO,4,"I")
 .S:$P(YSCLX,"^",14)=9 $P(YSCLX,"^",14)=94
 .S $P(YSCLX,"^",15)=$$GET1^DIQ(53.8,YSCLLO,3)       ;$P(^VA(200,YSCLLO,0),"^")
 ;lockout reason (p14), approving official (p15)
 S $P(YSSTOP,",",4)=4 Q:$$S^%ZTLOAD
 S YSCLPHY=$$GET1^DIQ(200,+YSCLRXPR,.01),$P(YSCLX,"^",7)=$$GET1^DIQ(200,+YSCLRXPR,53.2)  ;,YSCLPHY=$P(YSCLPHY,"^")
 ; add if prescription on same day for different drug and different dose
 S $P(YSCLX,"^",21)=$$GET1^DIQ(50,+PSGDN,31)  ;$P(^PSDRUG(+PSGDN,2),"^",4) ;Add NDC to string
 S YCLSCNTR=YCLSCNTR+1
 I $D(^XTMP("YSCLTRN",DT,DFN,PSGLI)) D
 .S PSGTIM=PSGLI+.000001,PSHLI1=PSGTIM
 .I $D(^XTMP("YSCLTRN",DT,DFN,PSGTIM)) D
 ..S PSHLI2=0 F  S PSHLI2=$O(^XTMP("YSCLTRN",DT,DFN,PSHLI2)) Q:'PSHLI2  D
 ...I $P(PSHLI2,".",1)=$P(PSGTIM,".",1) D
 ....I $P(PSHLI2,".",2)<$P(PSGTIM,".",2)!($P(PSHLI2,".",2)=$P(PSGTIM,".",2)) S (PSHLI1,PSGTIM)=PSHLI2+.000001
 I $G(PSGTIM) N PSGLI S (PSGLI,PSGLI1)=PSGTIM
 S ^XTMP("YSCLTRN",DT,DFN,PSGLI,0)=0_"^I^"_PSJOR
 S ^XTMP("YSCLTRN",DT,DFN,PSGLI,YCLSCNTR)=YSCLX
 Q
LOAD ;
 S $P(YSSTOP,",",6)=6 Q:$$S^%ZTLOAD
 I YSCLWBC="",YSCLLD<YSCLM28 Q
 ; don't send for pretest or older that 28 days
 S YSCLNSTE=$P(YSCLX,"^",12)
 S YSCLNST1=$P($$SITE^VASITE,"^",2),YSCLNSTE=$P($$SITE^VASITE,"^",3)
 S YSCLLN=YSCLLN+1,$P(YSCLX,"^",18)=YSCLRET,^TMP($J,YSCLLN,0)=YSCLX,YSCLLN=YSCLLN+1,^TMP($J,YSCLLN,0)=YSCLPHY_"^"_YSCLDEMO_"^"_YSCLNSTE_"^"_YSCLNST1
 I $G(PSGLI1) N PSGLI S PSGLI=PSGLI1
Z2 I $D(^TMP($J,YSCLLN,0)) D
 .S YCLSCNTR=YCLSCNTR+1,^XTMP("YSCLTRN",DT,DFN,PSGLI,YCLSCNTR)=^TMP($J,YSCLLN,0)
 ;site number and name
 S YSCLLLN=YSCLLLN+1,^TMP("YSCL",$J,YSCLLLN,0)=$P(^DPT(DFN,0),"^",9)_"   "_$P(^(0),"^")_"  (R) "_$S($P(YSCLX,"^",13)="":"NO RX   ",1:$$FMTE^XLFDT($P(YSCLX,"^",9),"D"))_" (W) "
 S ^TMP("YSCL",$J,YSCLLLN,0)=^TMP("YSCL",$J,YSCLLLN,0)_$S($P(YSCLX,"^",3)="":"NO WBC   ",1:$$FMTE^XLFDT($P(YSCLX,"^",3),"D"))_" (N) "_$S($P(YSCLX,"^",20)="":"NO NEUT  ",1:$$FMTE^XLFDT($P(YSCLX,"^",19),"D")) ;Q
 I $D(^TMP("YSCL",$J)) D
 .S YCLSCNTR=YCLSCNTR+1,^XTMP("YSCLTRN",DT,DFN,PSGLI,YCLSCNTR)=$G(^TMP("YSCL",$J,YSCLLLN,0)) K PSGLI1
 ;9the piece for issue date, 16th piece for WBC date ;RLM 06/16/05
 S ^XTMP("YSCLTRN",DT,0)=+$G(^XTMP("YSCLTRN",DT,0))+1
 Q
DOSE ; GET DOSE
 N YSCLPS55,YSCLPTR,YSCLDFN,YSCLDOSE
 S YSCLPS55=+$$GET1^DIQ(100,+PSJOR,33),PSJDOSE=0,YSCLDFN=DFN    ;+$G(^OR(100,+PSJOR,4))
 S YSCLDOSE=$$GET1^DIQ(55.06,YSCLPS55_","_DFN,120)
 N ARRAY D LIST^DIC(55.07,","_YSCLPS55_","_DFN_",",.02,"I",,,,,,,"ARRAY")
 F YSCLPTR=1:1 Q:'$D(ARRAY("DILIST","ID",YSCLPTR))  D
 .S PSJDOSE=PSJDOSE+(ARRAY("DILIST","ID",YSCLPTR,.02)*YSCLDOSE)
 .D FRQ S PSJDOSE=PSJDOSE*PSJFRQ
 Q
FRQ ; GET ADMIN FREQUENCY
 N PSJDI
 S PSJFRQ(0)=+$$GET1^DIQ(55.06,YSCLPS55_","_YSCLDFN_",",42)
 I 'PSJFRQ(0) D   ;Get administration times
 .S PSJFRQ=+$$GET1^DIQ(55.06,YSCLPS55_","_YSCLDFN_",",41)
 .I $$GET1^DIQ(55.06,YSCLPS55_","_YSCLDFN_",",26)["@" D  ; CHECK FOR @ IN DAY OF WEEK SCHEDULE
 .. S PSJFRQ(0)=1440/$L(PSJFRQ,"-") Q                  ; THEN CALCULATE CORRECT FRUENCY
 . Q:+$G(PSJFRQ(0))
 . I '$L($TR(PSJFRQ,"0123456789-")) Q          ; no good - we have non numeric characters
 . F PSJDI=1:1:$L(PSJFRQ,"-") I $P(PSJFRQ,"-",PSJDI)]"" D      ; If we have data in the piece
 .. I $L($P(PSJFRQ,"-",PSJDI))>2,$L($P(PSJFRQ,"-",PSJDI))<5                                         ;
 .. E  S PSJFRQ="" Q                                        ; only allow 3 or 4 digits
 .. I $L($P(PSJFRQ,"-",PSJDI))=4 D  Q
 ... I $E($P(PSJFRQ,"-",PSJDI),3,4)<60,$E($P(PSJFRQ,"-",PSJDI),1,2)<25 S PSJFRQ(0)=1+PSJFRQ(0) Q
 ... S PSJFRQ="" Q                                          ; Out of range
 .. I $L($P(PSJFRQ,"-",PSJDI))=3,$E($P(PSJFRQ,"-",PSJDI),2,3)<60 S PSJFRQ(0)=1+PSJFRQ(0) Q
 .. S PSJFRQ="" Q                                     ; Out of range
 S:PSJFRQ(0)=0 PSJFRQ(0)=1440
 S PSJFRQ=1440/PSJFRQ(0)
 Q
XMIT ;
 D START^YSCLDIS ; CHECK FOR CLOZAPINE PATIENTS TO BE DISCONTINUED, DISCONTIUNE THEM, SEND MESSAGE TO NCCC
 D DEMOG^YSCLTST9  ;transmit demographic data to RUCL server
 N YSCLDT,YSCLTRDT ;D NOW^%DTC S YSCLDT=%-1
 S YSCLLST=$P($G(^XTMP("YSCLDEM",0)),"^",4),YSCLTRDT=$P(YSCLLST,".",1)
REXMIT ;
 N YSCLDT S %DT="T",X="N-1" D ^%DT S YSCLDT=Y  ;D NOW^%DTC S YSCLDT=%-1
 I $O(^XTMP("YSCLDEM",YSCLTRDT)) D
 .;/RBN Begin modification for retransmit
 .I $G(YSCLREX) N DT S DT=YSCLEDDT
 .;/RBN End modification for retransmit
 .N DFN,PSDFN,VA,VACNTRY,VADM,VAERR,VAPA,XMDUN,XMDUZ,XMZ,Y,YSCL,YSCLDEA,YSCLGL,YSCLJ,YSCLEND
 .N YSCLLN,YSCLORD,YSCLP,YSCLX,YSRACE,YSRC,YSDEBUG,YSCLIEN,YSSTOP,YSCLC,YSCLCNTR,YSCLNO
 .F  S YSCLTRDT=$O(^XTMP("YSCLDEM",YSCLTRDT)) Q:'YSCLTRDT!(YSCLTRDT'<DT)  D
 ..S YSDEBUG=$$GET1^DIQ(603.03,1,3,"I")  ;$P(^YSCL(603.03,1,0),"^",3)
 ..K ^TMP($J),^TMP("YSCL",$J),^TMP("YSCLL",$J) S (YSCLIEN,YSCLLN)=0,YSCLNO=20
 ..S YSCLCNTR=0,YSCLC=""  ; set YSCLC, may not get value from FM call
 ..S DFN=0 F  S DFN=$O(^XTMP("YSCLDEM",YSCLTRDT,DFN)) Q:'DFN  D
 ...S YSCLIEN=$O(^YSCL(603.01,"C",DFN,0)) Q:'YSCLIEN
 ...S $P(YSSTOP,",",8)=8 Q:$$S^%ZTLOAD
 ...I $L($$GET1^DIQ(2,DFN,.01)) S YSCLC=$$GET1^DIQ(603.01,YSCLIEN,.01) D GET
 ...S ^XTMP("YSCLDEM",YSCLTRDT,DFN,0)=1,YSCLCNTR=YSCLCNTR+1
 ..D TRANSMIT^YSCLTST3:YSCLLN
 ..S ^XTMP("YSCLDEM",YSCLTRDT)=YSCLCNTR
 ..K ^TMP("YSCLL",$J),^TMP("YSCL",$J)
 . D XTMPZRO S $P(^XTMP("YSCLDEM",0),"^",4)=YSCLDT
 ;
 S YSCLCT=4,YSCLCNTR=1
 ;RBN Modification for retransmit
 ; ajf added plus to the set command for YSCLTRDT ; defect 1262531
 I '$G(YSCLREX) S YSCLTRDT=+$P($P($G(^XTMP("YSCLTRN",0)),U,4),"."),YSCLEND=DT
 E  S YSCLTRDT=YSCLSTDT,YSCLEND=YSCLEDDT
 ;RBN End modification for retransmit
 I $O(^XTMP("YSCLTRN",YSCLTRDT)) D
 .F  S YSCLTRDT=$O(^XTMP("YSCLTRN",YSCLTRDT)) Q:'YSCLTRDT!(YSCLTRDT'<YSCLEND)  D
 ..S YSCLCNTR=1
 ..D ORDBLD
 ..S YSCLLN=$G(^XTMP("YSCLTRN",YSCLTRDT,0)) D TRANSMIT^YSCLTST2
 ..I $G(YSCLREX) S DT=YSCLEDDT
 ..S ^XTMP("YSCLTRN",YSCLTRDT)=1
 ..K ^TMP("YSCLL",$J),^TMP("YSCL",$J)
 .S $P(^XTMP("YSCLTRN",0),U,4)=YSCLDT
 Q
 ;
ORDBLD ;
 N YSCLDFN,YSCLCNT ;,YSCLCT
 S YSCLDFN=0 F  S YSCLDFN=$O(^XTMP("YSCLTRN",YSCLTRDT,YSCLDFN)) Q:'YSCLDFN  D
 .S YSCLORD=0 F  S YSCLORD=$O(^XTMP("YSCLTRN",YSCLTRDT,YSCLDFN,YSCLORD)) Q:'YSCLORD!(YSCLORD>DT)  D
 ..S YSCLCNT=0 F  S YSCLCNT=$O(^XTMP("YSCLTRN",YSCLTRDT,YSCLDFN,YSCLORD,YSCLCNT)) Q:'YSCLCNT  D
 ...S:YSCLCNT=1 ^TMP($J,YSCLCNTR,0)=$G(^XTMP("YSCLTRN",YSCLTRDT,YSCLDFN,YSCLORD,YSCLCNT)),^TMP($J,YSCLCNTR,0)=$G(^XTMP("YSCLTRN",YSCLTRDT,YSCLDFN,YSCLORD,YSCLCNT)),YSCLCNTR=YSCLCNTR+1
 ...S:YSCLCNT=2 ^TMP($J,YSCLCNTR,0)=$G(^XTMP("YSCLTRN",YSCLTRDT,YSCLDFN,YSCLORD,YSCLCNT)),^TMP($J,YSCLCNTR,0)=$G(^XTMP("YSCLTRN",YSCLTRDT,YSCLDFN,YSCLORD,YSCLCNT)),YSCLCNTR=YSCLCNTR+1
 ...S:YSCLCNT=3 ^TMP("YSCL",$J,YSCLCT,0)=$G(^XTMP("YSCLTRN",YSCLTRDT,YSCLDFN,YSCLORD,YSCLCNT)),YSCLCT=YSCLCT+1
 Q
 ;
REX ; Alternate retransmit
  ; First get the date range to be resent
  N DA,DATE,DFN,DIR,DTRUT,YSCLREX,X,Y,YSCLCT,YSCLDT,YSCLLN,YSCLTRDT,YSCLEDDT,YSCLSTDT
  K ^TMP($J),^TMP("YSCL")
  S DIR(0)="D"
  S DIR("A")="Enter the starting date"
  S DIR("?",1)="Enter the starting date of the orders you want"
  S DIR("?")="to retransmit"
  D ^DIR
  I $D(DIRUT) W !,"Aborting retransmit",! Q
  S YSCLSTDT=Y
  K Y
  S DIR("A")="Enter the ending date"
  S DIR("?",1)="Enter the ending date of the orders you want"
  S DIR("?")="to retransmit"
  D ^DIR
  I $D(DIRUT) W !,"Aborting retransmit",! Q
  S YSCLEDDT=Y
  S X1=YSCLEDDT,X2=YSCLSTDT D ^%DTC I X<0 W !,"The ending date cannot be before the start date!",! G REX
  ;
  ;D NOW^%DTC S YSCLDT=%-1
  S YSCLREX=1
  S X1=YSCLSTDT,X2=-1 D C^%DTC S YSCLSTDT=X
  S YSCLTRDT=YSCLSTDT,X1=YSCLEDDT,X2=1 D C^%DTC S YSCLEDDT=X
  D REXMIT
  Q
XTMPZRO ; YS*5.01*154
 N J,C
 S C=$G(^XTMP("YSCLTRN",0)),J=$$FMADD^XLFDT($$DT^XLFDT,366)  ; keep for one year
 S $P(C,U)=J,$P(C,U,2)=$$NOW^XLFDT,$P(C,U,3)="CLOZAPINE DATA TRANSMISSION"
 S ^XTMP("YSCLTRN",0)=C
 Q
 ;
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HYSCLTST5   14343     printed  Sep 23, 2025@19:50:02                                                                                                                                                                                                   Page 2
YSCLTST5  ;HINOI/RSJ-TRANSMISSION DATA FOR CLOZAPINE ORDERS ;7 May 2020 17:31:44
 +1       ;;5.01;MENTAL HEALTH;**122,154,149**;Dec 30, 1994;Build 72
 +2       ; Reference to $$SITE^VASITE supported by IA #10112
 +3       ; Reference to ^DPT supported by IA #10035
 +4       ; Reference to ^PS(55 supported by IA #787
 +5       ; Reference to ^PS(59 supported by IA #783
 +6       ; Reference to ^VA(200 supported by IA #10060
 +7       ; Reference to ^LAB(60 supported by IA #333
 +8       ; Reference to ^DIC supported by DBIA #2051
 +9       ; Reference to ^DIE supported by DBIA #2053
 +10      ; Reference to ^DIQ supported by DBIA #2056
 +11      ; Reference to ^DIR supported by DBIA #10026
 +12      ; Reference to ^VADPT supported by DBIA #10061
 +13      ; Reference to ^XLFDT supported by DBIA #10103
 +14      ; Reference to ^%ZTLOAD supported by DBIA #10063
 +15      ; Reference to ^%DTC supported by DBIA #10000
 +16      ; Reference to ^%DT supported by DBIA #10003
 +17      ;
 +18       QUIT 
INPSND    ; Build inpatient clozapine data for transmision
 +1        NEW PSJPAT,PSJIOF,YCLSCNTR,PSGTIM,X,X1,X2
           SET YSCLRET=""
           SET PSJPAT=DFN
           SET PSJIOF=IOF
           SET YCLSCNTR=0
 +2        DO XTMPZRO
 +3        if '$GET(^XTMP("YSCLTRN",DT))
               SET ^XTMP("YSCLTRN",DT)=0
 +4        DO DMG
           DO DMG1
           DO GETINP
           DO INPCHK
 +5        IF YSCLT
               DO LOAD
 +6        SET DFN=PSJPAT
           SET IOF=PSJIOF
 +7        KILL ^TMP("YSCL",$JOB),^TMP("YSCLL",$JOB),^TMP($JOB)
 +8        QUIT 
DMG       ; Called by YSCLDIS
 +1        if 'DFN
               QUIT 
 +2        NEW PSDFN
 +3       ;$P(^YSCL(603.03,1,0),"^",3)
           SET YSDEBUG=$$GET1^DIQ(603.03,1,3,"I")
           SET PSDFN=DFN
 +4        KILL ^TMP($JOB),^TMP("YSCL",$JOB)
           SET (YSCLIEN,YSCLLN)=0
           SET YSCLNO=20
 +5        NEW ARRAY
           DO LIST^DIC(603.01,,1,"I",,,DFN,"C",,,"ARRAY")
 +6        SET YSCLIEN=$GET(ARRAY("DILIST",2,1))
           if 'YSCLIEN
               QUIT 
 +7        SET $PIECE(YSSTOP,",",8)=8
           if $$S^%ZTLOAD
               QUIT 
 +8        IF $LENGTH($$GET1^DIQ(2,DFN,.01))
               SET YSCLC=ARRAY("DILIST","ID",1,.01)
               DO GET
 +9       ; YS*5.01*174 removed SETs to ^XTMP("YSCLDEM")
 +10      ;
 +11       SET DFN=PSDFN
 +12       QUIT 
DMG1      ; GATHER FACILITY INFORMATION
 +1       ;28 TO 60 and 14 to 28 6/15/05
           SET YSCLLN=0
           SET YSCLLLN=3
           SET (X1,YSCLED)=DT
           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
 +2        SET X1=$PIECE(YSCLED,".")
           SET X2=-180
           DO C^%DTC
           SET YSCLM180=X
 +3        SET X1=$PIECE(YSCLED,".")
           SET X2=-56
           DO C^%DTC
           SET YSCLM56=X
 +4        SET YSCLIF=+$$SITE^VASITE_","
 +5        DO GETS^DIQ(4,YSCLIF,"1.01;1.02;1.03;.02;1.04","I","YSCLFF")
 +6        SET $PIECE(YSCLDEMO,"^",1)=YSCLFF(4,YSCLIF,1.01,"I")
 +7        SET $PIECE(YSCLDEMO,"^",2)=YSCLFF(4,YSCLIF,1.02,"I")
 +8        SET $PIECE(YSCLDEMO,"^",3)=YSCLFF(4,YSCLIF,1.03,"I")
 +9        SET $PIECE(YSCLDEMO,"^",4)=$PIECE(^DIC(5,YSCLFF(4,YSCLIF,.02,"I"),0),"^",2)
 +10       SET $PIECE(YSCLDEMO,"^",5)=YSCLFF(4,YSCLIF,1.04,"I")
 +11       SET $PIECE(YSCLDEMO,"^",6)=""
 +12       KILL J,YSCLF,YSCLFF,YSCLIF,X
 +13       QUIT 
GET       ; GATHER PATIENT DEMOGRAPHICS
 +1        SET $PIECE(YSSTOP,",",9)=9
           if $$S^%ZTLOAD
               QUIT 
 +2       ; Don't try to transmit if no pharmacy record
           if '$LENGTH($$GET1^DIQ(55,DFN,53))
               QUIT 
 +3       ; Don't retransmit demographics.
           if $$GET1^DIQ(55,DFN,56,"I")
               QUIT 
 +4        if $DATA(^TMP("YSCLL",$JOB,DFN))
               QUIT 
 +5        SET ^TMP("YSCLL",$JOB,DFN)=1
 +6        SET YSCLP=$$GET1^DIQ(55,DFN,57,"I")
           SET YSCLDEA=$$GET1^DIQ(200,YSCLP,53.2)
           SET YSCLP=$$GET1^DIQ(200,YSCLP,.01)
 +7        DO DEM^VADPT
           DO ADD^VADPT
           SET YSCL=$GET(YSCLC)_"^"_$EXTRACT($PIECE(VADM(1),",",2))_$EXTRACT(VADM(1))_"^"_$PIECE(VADM(3),"^")_"^"_$PIECE(VADM(2),"^")_"^"_$PIECE(VADM(5),"^")_"^"_VAPA(6)_"^"_DT
 +8        Begin DoDot:1
 +9            SET YSRACE="*"
 +10           SET YSRC=0
               FOR 
                   SET YSRC=$ORDER(VADM(11,YSRC))
                   if 'YSRC
                       QUIT 
                   SET YSRACE=YSRACE_+VADM(11,YSRC)_"-"_+VADM(11,YSRC,1)_","
 +11           SET YSRACE=YSRACE_"~"
 +12           SET YSRC=0
               FOR 
                   SET YSRC=$ORDER(VADM(12,YSRC))
                   if 'YSRC
                       QUIT 
                   SET YSRACE=YSRACE_+VADM(12,YSRC)_"-"_+VADM(12,YSRC,1)_","
           End DoDot:1
 +13       SET YSCL=YSCL_"^"_YSRACE_"^"_YSCLP_"^"_YSCLDEA
 +14      ; YSCLJ contains a ZIP code
 +15       NEW ARRAY59
           DO LIST^DIC(59,,"1;.05",,,,,,,,"ARRAY59")
 +16       SET YSCLJ=""
           FOR 
               SET YSCLJ=$ORDER(ARRAY59("DILIST","ID",YSCLJ))
               if 'YSCLJ
                   QUIT 
               IF ARRAY59("DILIST","ID",YSCLJ,1)'=""
                   SET YSCLJ=ARRAY59("DILIST","ID",YSCLJ,.05)
                   QUIT 
 +17       SET YSCL=YSCL_"^"_YSCLJ
 +18      ;registration number^initials^dob^ssn^sex^zip^today^race^physician^dea^zip code (hosp)
 +19       SET YSCLLN=YSCLLN+1
           SET ^TMP($JOB,YSCLLN,0)=YSCL
 +20      ;RLM RACETEST
           IF VADM(5)=""!(VAPA(6)="")!('VADM(11))!('VADM(12))
               Begin DoDot:1
 +21               SET ^TMP("YSCL",$JOB,YSCLNO,0)=$PIECE(VADM(2),"^",1)_"   "_VADM(1)
 +22               if VADM(5)=""
                       SET ^TMP("YSCL",$JOB,YSCLNO,0)=^TMP("YSCL",$JOB,YSCLNO,0)_" (SEX)"
 +23               if VAPA(6)=""
                       SET ^TMP("YSCL",$JOB,YSCLNO,0)=^TMP("YSCL",$JOB,YSCLNO,0)_" (ZIP)"
 +24               if 'VADM(12)
                       SET ^TMP("YSCL",$JOB,YSCLNO,0)=^TMP("YSCL",$JOB,YSCLNO,0)_" (RACE, NEW FORMAT)"
 +25               if 'VADM(11)
                       SET ^TMP("YSCL",$JOB,YSCLNO,0)=^TMP("YSCL",$JOB,YSCLNO,0)_" (ETHNICITY)"
 +26               SET YSCLNO=YSCLNO+1
 +27      ; leave unmarked pending demographic data
                   SET ^TMP("YSCLL",$JOB,DFN)=0
 +28               IF ('VADM(11))!('VADM(12))
                       Begin DoDot:2
 +29                       SET ^TMP("YSCL",$JOB,YSCLNO,0)="NOTE: Race and Ethnicity may be entered if permission is obtained in the informed consent"
                           SET YSCLNO=YSCLNO+1
 +30                       SET ^TMP("YSCL",$JOB,YSCLNO,0)="document. See VHA Directive 99-035."
                           SET YSCLNO=YSCLNO+1
                       End DoDot:2
               End DoDot:1
 +31      ;
 +32       QUIT 
GETINP    ;Inpatient Medications
 +1        if $$S^%ZTLOAD
               QUIT 
           DO DEM^VADPT
 +2        SET YSCLX=$EXTRACT($PIECE(VADM(1),",",2))_$EXTRACT(VADM(1))_"^"_$PIECE(VADM(2),"^")
 +3        SET YSCLPHY=""
           SET $PIECE(YSCLX,"^",6)=$PIECE(YSCLDEMO,"^",5)
           SET $PIECE(YSCLX,"^",11)=$GET(YSCLC)
           SET $PIECE(YSCLX,"^",16)=DT
 +4       ;site zip(p6),registration number (p11), today (p16)
 +5        SET YSSTRT=$$GET1^DIQ(55.06,+PSGORD_","_DFN,10,"I")
           SET YSSTOP=$$GET1^DIQ(55.06,+PSGORD_","_DFN,34,"I")
 +6       ;S YSSTRT=$P($G(^PS(55,DFN,5,+PSGORD,2)),"^",2),YSSTOP=$P($G(^PS(55,DFN,5,+PSGORD,2)),"^",4)
 +7       ;$P($G(^PS(55,DFN,5,+PSGORD,0)),"^",21)
           SET PSJOR=$$GET1^DIQ(55.06,+PSGORD_","_DFN,66)
 +8        QUIT 
INPCHK    ;for data to send
 +1        SET YSCLT=0
           SET YSCLWBC=0
 +2        SET $PIECE(YSSTOP,",",3)=3
           if $$S^%ZTLOAD
               QUIT 
 +3        KILL PNM,SEX,DOB,AGE,SSN
           DO DEM^VADPT
           IF 'VAERR
               SET PNM=VADM(1)
               SET SEX=$PIECE(VADM(5),U)
               SET DOB=$PIECE(VADM(3),U)
               SET AGE=VADM(4)
               SET SSN=$PIECE(VADM(2),U)
 +4       ;no transmit for pretreatment
           IF $GET(PSGSD)=0
               IF $$GET1^DIQ(55,DFN,54,"I")="P"
                   QUIT 
 +5       ;Don't report if over 6 months old.
           IF $GET(PSGSD)
               IF $GET(PSGSD)<YSCLM180
                   QUIT 
 +6       ;Q  ;get latest WBC results even if no script.
           SET YSCL=$ORDER(YSCLA(""))
           IF 'YSCL
               DO LAB^YSCLTST1
               SET YSCLT=1
 +7       ;we've got provider
           SET YSCLT=1
           SET YSCLRXPR=$$GET1^DIQ(55.06,+PSGORD_","_DFN,1,"I")
 +8        NEW PSJWRD,PSJDIV,PSJINST
           SET PSJWRD=$$GET1^DIQ(55.06,+PSGORD_","_DFN,68,"I")
 +9        if 'PSJWRD
               SET PSJWRD=$$GET1^DIQ(5506,+PSGORD_","_DFN,9,"I")
 +10       IF PSJWRD
               SET PSJINST=$$GET1^DIQ(42,PSJWRD,44,"I")
               IF PSJINST
                   SET PSJDIV=$$GET1^DIQ(44,PSJINST,3,"I")
 +11       SET YSCLD=$GET(PSJDIV)
           IF YSCLD
               SET $PIECE(YSCLX,"^",10)=$$GET1^DIQ(4,YSCLD,52)
               SET $PIECE(YSCLX,"^",12)=YSCLD
 +12      ;site DEA# (p10), site pointer (p12)
 +13      ;here if active
 +14      ;force active
           IF $$GET1^DIQ(55,DFN,54,"I")="A"
               SET $PIECE(YSCLX,"^",5)="A"
 +15       SET $PIECE(YSCLX,"^",13)=1
           SET $PIECE(YSCLX,"^",9)=PSGLI\1
 +16       IF '$LENGTH($$GET1^DIQ(55.06,+PSGORD_","_DFN,301))
               IF $GET(^TMP("PSJCOM",$JOB,+$GET(PSGORD),"SAND"))
                   Begin DoDot:1
 +17                   SET DIE="^PS(55,"_DFN_",5,"
                       SET DA(1)=DFN
                       SET DA=+PSGORD
                       SET DR="301////"_^TMP("PSJCOM",$JOB,+PSGORD,"SAND")
                       DO ^DIE
                   End DoDot:1
 +18       SET $PIECE(YSCLX,"^",8)=+$$GET1^DIQ(55.06,+PSGORD_","_DFN,301)
 +19      ;status(p5),dosage(p8),rx count(p13),issue date(p9)
 +20       SET YSCLLO=$ORDER(^PS(53.8,"A",+$GET(PSJOR),0))
           IF YSCLLO
               Begin DoDot:1
 +21               SET $PIECE(YSCLX,"^",14)=$$GET1^DIQ(53.8,YSCLLO,4,"I")
 +22               if $PIECE(YSCLX,"^",14)=9
                       SET $PIECE(YSCLX,"^",14)=94
 +23      ;$P(^VA(200,YSCLLO,0),"^")
                   SET $PIECE(YSCLX,"^",15)=$$GET1^DIQ(53.8,YSCLLO,3)
               End DoDot:1
 +24      ;lockout reason (p14), approving official (p15)
 +25       SET $PIECE(YSSTOP,",",4)=4
           if $$S^%ZTLOAD
               QUIT 
 +26      ;,YSCLPHY=$P(YSCLPHY,"^")
           SET YSCLPHY=$$GET1^DIQ(200,+YSCLRXPR,.01)
           SET $PIECE(YSCLX,"^",7)=$$GET1^DIQ(200,+YSCLRXPR,53.2)
 +27      ; add if prescription on same day for different drug and different dose
 +28      ;$P(^PSDRUG(+PSGDN,2),"^",4) ;Add NDC to string
           SET $PIECE(YSCLX,"^",21)=$$GET1^DIQ(50,+PSGDN,31)
 +29       SET YCLSCNTR=YCLSCNTR+1
 +30       IF $DATA(^XTMP("YSCLTRN",DT,DFN,PSGLI))
               Begin DoDot:1
 +31               SET PSGTIM=PSGLI+.000001
                   SET PSHLI1=PSGTIM
 +32               IF $DATA(^XTMP("YSCLTRN",DT,DFN,PSGTIM))
                       Begin DoDot:2
 +33                       SET PSHLI2=0
                           FOR 
                               SET PSHLI2=$ORDER(^XTMP("YSCLTRN",DT,DFN,PSHLI2))
                               if 'PSHLI2
                                   QUIT 
                               Begin DoDot:3
 +34                               IF $PIECE(PSHLI2,".",1)=$PIECE(PSGTIM,".",1)
                                       Begin DoDot:4
 +35                                       IF $PIECE(PSHLI2,".",2)<$PIECE(PSGTIM,".",2)!($PIECE(PSHLI2,".",2)=$PIECE(PSGTIM,".",2))
                                               SET (PSHLI1,PSGTIM)=PSHLI2+.000001
                                       End DoDot:4
                               End DoDot:3
                       End DoDot:2
               End DoDot:1
 +36       IF $GET(PSGTIM)
               NEW PSGLI
               SET (PSGLI,PSGLI1)=PSGTIM
 +37       SET ^XTMP("YSCLTRN",DT,DFN,PSGLI,0)=0_"^I^"_PSJOR
 +38       SET ^XTMP("YSCLTRN",DT,DFN,PSGLI,YCLSCNTR)=YSCLX
 +39       QUIT 
LOAD      ;
 +1        SET $PIECE(YSSTOP,",",6)=6
           if $$S^%ZTLOAD
               QUIT 
 +2        IF YSCLWBC=""
               IF YSCLLD<YSCLM28
                   QUIT 
 +3       ; don't send for pretest or older that 28 days
 +4        SET YSCLNSTE=$PIECE(YSCLX,"^",12)
 +5        SET YSCLNST1=$PIECE($$SITE^VASITE,"^",2)
           SET YSCLNSTE=$PIECE($$SITE^VASITE,"^",3)
 +6        SET YSCLLN=YSCLLN+1
           SET $PIECE(YSCLX,"^",18)=YSCLRET
           SET ^TMP($JOB,YSCLLN,0)=YSCLX
           SET YSCLLN=YSCLLN+1
           SET ^TMP($JOB,YSCLLN,0)=YSCLPHY_"^"_YSCLDEMO_"^"_YSCLNSTE_"^"_YSCLNST1
 +7        IF $GET(PSGLI1)
               NEW PSGLI
               SET PSGLI=PSGLI1
Z2         IF $DATA(^TMP($JOB,YSCLLN,0))
               Begin DoDot:1
 +1                SET YCLSCNTR=YCLSCNTR+1
                   SET ^XTMP("YSCLTRN",DT,DFN,PSGLI,YCLSCNTR)=^TMP($JOB,YSCLLN,0)
               End DoDot:1
 +2       ;site number and name
 +3        SET YSCLLLN=YSCLLLN+1
           SET ^TMP("YSCL",$JOB,YSCLLLN,0)=$PIECE(^DPT(DFN,0),"^",9)_"   "_$PIECE(^(0),"^")_"  (R) "_$SELECT($PIECE(YSCLX,"^",13)="":"NO RX   ",1:$$FMTE^XLFDT($PIECE(YSCLX,"^",9),"D"))_" (W) "
 +4       ;Q
           SET ^TMP("YSCL",$JOB,YSCLLLN,0)=^TMP("YSCL",$JOB,YSCLLLN,0)_$SELECT($PIECE(YSCLX,"^",3)="":"NO WBC   ",1:$$FMTE^XLFDT($PIECE(YSCLX,"^",3),"D"))_" (N) "_$SELECT($PIECE(YSCLX,"^",20)="":"NO NEUT  ",1:$$FMTE^XLFDT($PIECE(YSCLX,"^",19),"D"))
 +5        IF $DATA(^TMP("YSCL",$JOB))
               Begin DoDot:1
 +6                SET YCLSCNTR=YCLSCNTR+1
                   SET ^XTMP("YSCLTRN",DT,DFN,PSGLI,YCLSCNTR)=$GET(^TMP("YSCL",$JOB,YSCLLLN,0))
                   KILL PSGLI1
               End DoDot:1
 +7       ;9the piece for issue date, 16th piece for WBC date ;RLM 06/16/05
 +8        SET ^XTMP("YSCLTRN",DT,0)=+$GET(^XTMP("YSCLTRN",DT,0))+1
 +9        QUIT 
DOSE      ; GET DOSE
 +1        NEW YSCLPS55,YSCLPTR,YSCLDFN,YSCLDOSE
 +2       ;+$G(^OR(100,+PSJOR,4))
           SET YSCLPS55=+$$GET1^DIQ(100,+PSJOR,33)
           SET PSJDOSE=0
           SET YSCLDFN=DFN
 +3        SET YSCLDOSE=$$GET1^DIQ(55.06,YSCLPS55_","_DFN,120)
 +4        NEW ARRAY
           DO LIST^DIC(55.07,","_YSCLPS55_","_DFN_",",.02,"I",,,,,,,"ARRAY")
 +5        FOR YSCLPTR=1:1
               if '$DATA(ARRAY("DILIST","ID",YSCLPTR))
                   QUIT 
               Begin DoDot:1
 +6                SET PSJDOSE=PSJDOSE+(ARRAY("DILIST","ID",YSCLPTR,.02)*YSCLDOSE)
 +7                DO FRQ
                   SET PSJDOSE=PSJDOSE*PSJFRQ
               End DoDot:1
 +8        QUIT 
FRQ       ; GET ADMIN FREQUENCY
 +1        NEW PSJDI
 +2        SET PSJFRQ(0)=+$$GET1^DIQ(55.06,YSCLPS55_","_YSCLDFN_",",42)
 +3       ;Get administration times
           IF 'PSJFRQ(0)
               Begin DoDot:1
 +4                SET PSJFRQ=+$$GET1^DIQ(55.06,YSCLPS55_","_YSCLDFN_",",41)
 +5       ; CHECK FOR @ IN DAY OF WEEK SCHEDULE
                   IF $$GET1^DIQ(55.06,YSCLPS55_","_YSCLDFN_",",26)["@"
                       Begin DoDot:2
 +6       ; THEN CALCULATE CORRECT FRUENCY
                           SET PSJFRQ(0)=1440/$LENGTH(PSJFRQ,"-")
                           QUIT 
                       End DoDot:2
 +7                if +$GET(PSJFRQ(0))
                       QUIT 
 +8       ; no good - we have non numeric characters
                   IF '$LENGTH($TRANSLATE(PSJFRQ,"0123456789-"))
                       QUIT 
 +9       ; If we have data in the piece
                   FOR PSJDI=1:1:$LENGTH(PSJFRQ,"-")
                       IF $PIECE(PSJFRQ,"-",PSJDI)]""
                           Begin DoDot:2
 +10      ;
                               IF $LENGTH($PIECE(PSJFRQ,"-",PSJDI))>2
                                   IF $LENGTH($PIECE(PSJFRQ,"-",PSJDI))<5
 +11      ; only allow 3 or 4 digits
                              IF '$TEST
                                   SET PSJFRQ=""
                                   QUIT 
 +12                           IF $LENGTH($PIECE(PSJFRQ,"-",PSJDI))=4
                                   Begin DoDot:3
 +13                                   IF $EXTRACT($PIECE(PSJFRQ,"-",PSJDI),3,4)<60
                                           IF $EXTRACT($PIECE(PSJFRQ,"-",PSJDI),1,2)<25
                                               SET PSJFRQ(0)=1+PSJFRQ(0)
                                               QUIT 
 +14      ; Out of range
                                       SET PSJFRQ=""
                                       QUIT 
                                   End DoDot:3
                                   QUIT 
 +15                           IF $LENGTH($PIECE(PSJFRQ,"-",PSJDI))=3
                                   IF $EXTRACT($PIECE(PSJFRQ,"-",PSJDI),2,3)<60
                                       SET PSJFRQ(0)=1+PSJFRQ(0)
                                       QUIT 
 +16      ; Out of range
                               SET PSJFRQ=""
                               QUIT 
                           End DoDot:2
               End DoDot:1
 +17       if PSJFRQ(0)=0
               SET PSJFRQ(0)=1440
 +18       SET PSJFRQ=1440/PSJFRQ(0)
 +19       QUIT 
XMIT      ;
 +1       ; CHECK FOR CLOZAPINE PATIENTS TO BE DISCONTINUED, DISCONTIUNE THEM, SEND MESSAGE TO NCCC
           DO START^YSCLDIS
 +2       ;transmit demographic data to RUCL server
           DO DEMOG^YSCLTST9
 +3       ;D NOW^%DTC S YSCLDT=%-1
           NEW YSCLDT,YSCLTRDT
 +4        SET YSCLLST=$PIECE($GET(^XTMP("YSCLDEM",0)),"^",4)
           SET YSCLTRDT=$PIECE(YSCLLST,".",1)
REXMIT    ;
 +1       ;D NOW^%DTC S YSCLDT=%-1
           NEW YSCLDT
           SET %DT="T"
           SET X="N-1"
           DO ^%DT
           SET YSCLDT=Y
 +2        IF $ORDER(^XTMP("YSCLDEM",YSCLTRDT))
               Begin DoDot:1
 +3       ;/RBN Begin modification for retransmit
 +4                IF $GET(YSCLREX)
                       NEW DT
                       SET DT=YSCLEDDT
 +5       ;/RBN End modification for retransmit
 +6                NEW DFN,PSDFN,VA,VACNTRY,VADM,VAERR,VAPA,XMDUN,XMDUZ,XMZ,Y,YSCL,YSCLDEA,YSCLGL,YSCLJ,YSCLEND
 +7                NEW YSCLLN,YSCLORD,YSCLP,YSCLX,YSRACE,YSRC,YSDEBUG,YSCLIEN,YSSTOP,YSCLC,YSCLCNTR,YSCLNO
 +8                FOR 
                       SET YSCLTRDT=$ORDER(^XTMP("YSCLDEM",YSCLTRDT))
                       if 'YSCLTRDT!(YSCLTRDT'<DT)
                           QUIT 
                       Begin DoDot:2
 +9       ;$P(^YSCL(603.03,1,0),"^",3)
                           SET YSDEBUG=$$GET1^DIQ(603.03,1,3,"I")
 +10                       KILL ^TMP($JOB),^TMP("YSCL",$JOB),^TMP("YSCLL",$JOB)
                           SET (YSCLIEN,YSCLLN)=0
                           SET YSCLNO=20
 +11      ; set YSCLC, may not get value from FM call
                           SET YSCLCNTR=0
                           SET YSCLC=""
 +12                       SET DFN=0
                           FOR 
                               SET DFN=$ORDER(^XTMP("YSCLDEM",YSCLTRDT,DFN))
                               if 'DFN
                                   QUIT 
                               Begin DoDot:3
 +13                               SET YSCLIEN=$ORDER(^YSCL(603.01,"C",DFN,0))
                                   if 'YSCLIEN
                                       QUIT 
 +14                               SET $PIECE(YSSTOP,",",8)=8
                                   if $$S^%ZTLOAD
                                       QUIT 
 +15                               IF $LENGTH($$GET1^DIQ(2,DFN,.01))
                                       SET YSCLC=$$GET1^DIQ(603.01,YSCLIEN,.01)
                                       DO GET
 +16                               SET ^XTMP("YSCLDEM",YSCLTRDT,DFN,0)=1
                                   SET YSCLCNTR=YSCLCNTR+1
                               End DoDot:3
 +17                       if YSCLLN
                               DO TRANSMIT^YSCLTST3
 +18                       SET ^XTMP("YSCLDEM",YSCLTRDT)=YSCLCNTR
 +19                       KILL ^TMP("YSCLL",$JOB),^TMP("YSCL",$JOB)
                       End DoDot:2
 +20               DO XTMPZRO
                   SET $PIECE(^XTMP("YSCLDEM",0),"^",4)=YSCLDT
               End DoDot:1
 +21      ;
 +22       SET YSCLCT=4
           SET YSCLCNTR=1
 +23      ;RBN Modification for retransmit
 +24      ; ajf added plus to the set command for YSCLTRDT ; defect 1262531
 +25       IF '$GET(YSCLREX)
               SET YSCLTRDT=+$PIECE($PIECE($GET(^XTMP("YSCLTRN",0)),U,4),".")
               SET YSCLEND=DT
 +26      IF '$TEST
               SET YSCLTRDT=YSCLSTDT
               SET YSCLEND=YSCLEDDT
 +27      ;RBN End modification for retransmit
 +28       IF $ORDER(^XTMP("YSCLTRN",YSCLTRDT))
               Begin DoDot:1
 +29               FOR 
                       SET YSCLTRDT=$ORDER(^XTMP("YSCLTRN",YSCLTRDT))
                       if 'YSCLTRDT!(YSCLTRDT'<YSCLEND)
                           QUIT 
                       Begin DoDot:2
 +30                       SET YSCLCNTR=1
 +31                       DO ORDBLD
 +32                       SET YSCLLN=$GET(^XTMP("YSCLTRN",YSCLTRDT,0))
                           DO TRANSMIT^YSCLTST2
 +33                       IF $GET(YSCLREX)
                               SET DT=YSCLEDDT
 +34                       SET ^XTMP("YSCLTRN",YSCLTRDT)=1
 +35                       KILL ^TMP("YSCLL",$JOB),^TMP("YSCL",$JOB)
                       End DoDot:2
 +36               SET $PIECE(^XTMP("YSCLTRN",0),U,4)=YSCLDT
               End DoDot:1
 +37       QUIT 
 +38      ;
ORDBLD    ;
 +1       ;,YSCLCT
           NEW YSCLDFN,YSCLCNT
 +2        SET YSCLDFN=0
           FOR 
               SET YSCLDFN=$ORDER(^XTMP("YSCLTRN",YSCLTRDT,YSCLDFN))
               if 'YSCLDFN
                   QUIT 
               Begin DoDot:1
 +3                SET YSCLORD=0
                   FOR 
                       SET YSCLORD=$ORDER(^XTMP("YSCLTRN",YSCLTRDT,YSCLDFN,YSCLORD))
                       if 'YSCLORD!(YSCLORD>DT)
                           QUIT 
                       Begin DoDot:2
 +4                        SET YSCLCNT=0
                           FOR 
                               SET YSCLCNT=$ORDER(^XTMP("YSCLTRN",YSCLTRDT,YSCLDFN,YSCLORD,YSCLCNT))
                               if 'YSCLCNT
                                   QUIT 
                               Begin DoDot:3
 +5                                if YSCLCNT=1
                                       SET ^TMP($JOB,YSCLCNTR,0)=$GET(^XTMP("YSCLTRN",YSCLTRDT,YSCLDFN,YSCLORD,YSCLCNT))
                                       SET ^TMP($JOB,YSCLCNTR,0)=$GET(^XTMP("YSCLTRN",YSCLTRDT,YSCLDFN,YSCLORD,YSCLCNT))
                                       SET YSCLCNTR=YSCLCNTR+1
 +6                                if YSCLCNT=2
                                       SET ^TMP($JOB,YSCLCNTR,0)=$GET(^XTMP("YSCLTRN",YSCLTRDT,YSCLDFN,YSCLORD,YSCLCNT))
                                       SET ^TMP($JOB,YSCLCNTR,0)=$GET(^XTMP("YSCLTRN",YSCLTRDT,YSCLDFN,YSCLORD,YSCLCNT))
                                       SET YSCLCNTR=YSCLCNTR+1
 +7                                if YSCLCNT=3
                                       SET ^TMP("YSCL",$JOB,YSCLCT,0)=$GET(^XTMP("YSCLTRN",YSCLTRDT,YSCLDFN,YSCLORD,YSCLCNT))
                                       SET YSCLCT=YSCLCT+1
                               End DoDot:3
                       End DoDot:2
               End DoDot:1
 +8        QUIT 
 +9       ;
REX       ; Alternate retransmit
 +1       ; First get the date range to be resent
 +2        NEW DA,DATE,DFN,DIR,DTRUT,YSCLREX,X,Y,YSCLCT,YSCLDT,YSCLLN,YSCLTRDT,YSCLEDDT,YSCLSTDT
 +3        KILL ^TMP($JOB),^TMP("YSCL")
 +4        SET DIR(0)="D"
 +5        SET DIR("A")="Enter the starting date"
 +6        SET DIR("?",1)="Enter the starting date of the orders you want"
 +7        SET DIR("?")="to retransmit"
 +8        DO ^DIR
 +9        IF $DATA(DIRUT)
               WRITE !,"Aborting retransmit",!
               QUIT 
 +10       SET YSCLSTDT=Y
 +11       KILL Y
 +12       SET DIR("A")="Enter the ending date"
 +13       SET DIR("?",1)="Enter the ending date of the orders you want"
 +14       SET DIR("?")="to retransmit"
 +15       DO ^DIR
 +16       IF $DATA(DIRUT)
               WRITE !,"Aborting retransmit",!
               QUIT 
 +17       SET YSCLEDDT=Y
 +18       SET X1=YSCLEDDT
           SET X2=YSCLSTDT
           DO ^%DTC
           IF X<0
               WRITE !,"The ending date cannot be before the start date!",!
               GOTO REX
 +19      ;
 +20      ;D NOW^%DTC S YSCLDT=%-1
 +21       SET YSCLREX=1
 +22       SET X1=YSCLSTDT
           SET X2=-1
           DO C^%DTC
           SET YSCLSTDT=X
 +23       SET YSCLTRDT=YSCLSTDT
           SET X1=YSCLEDDT
           SET X2=1
           DO C^%DTC
           SET YSCLEDDT=X
 +24       DO REXMIT
 +25       QUIT 
XTMPZRO   ; YS*5.01*154
 +1        NEW J,C
 +2       ; keep for one year
           SET C=$GET(^XTMP("YSCLTRN",0))
           SET J=$$FMADD^XLFDT($$DT^XLFDT,366)
 +3        SET $PIECE(C,U)=J
           SET $PIECE(C,U,2)=$$NOW^XLFDT
           SET $PIECE(C,U,3)="CLOZAPINE DATA TRANSMISSION"
 +4        SET ^XTMP("YSCLTRN",0)=C
 +5        QUIT 
 +6       ;