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 Oct 16, 2024@18:14:40 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 ;