Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BYIMIMM1

BYIMIMM1.m

Go to the documentation of this file.
  1. BYIMIMM1 ;IHS/CIM/THL - IMMUNIZATION DATA EXCHANGE;
  1. ;;2.0;BYIM IMMUNIZATION DATA EXCHANGE;**3,4,5,6,7,8**;JUL 11, 2017;Build 310
  1. ;
  1. ;;CONTINUATION OF BYIMIMM
  1. ;
  1. ;-----
  1. FILE ;ENTER FILE NAME OF IMPORT FILE
  1. K BYIMQUIT
  1. D PATH^BYIMIMM6
  1. I IPATH="" D NOPATH^BYIMIMM6 Q
  1. S DIR(0)="FO^3:50"
  1. S DIR("A",1)="The file from the State Registry must be in the drive/directory: "
  1. S DIR("A",2)=" ** "_IPATH_" **"
  1. S DIR("A")="Enter the name of the file from the State Registry"
  1. W !
  1. D ^DIR
  1. K DIR
  1. I X=""!(X[U) S BYIMQUIT="" Q
  1. S FILE=X
  1. Q
  1. ;-----
  1. IMPORT ;EP;IMMUNIZATION IMPORT
  1. N AUTO,BYIMERR,BYIMJ,BYIMX,DATE,DIC,DIE,DIK,DR,DA,DLAYGO,HRN,IMM,IVDA,JJ,LOC,MSHX,NAME,NUM,PID,SEX,DOB,FACILITY,INHDA,STATUS,T,VALMBCK,VALMCC,VALMCNT,VDATE,X1,X2,YY,ZTQUEUED,DFNCNT,BYIMIMM,IMMCNT,NODFNCNT,NEWIMCNT,ADDIMCNT,MSGCNT,RXACNT
  1. D FILE
  1. Q:$D(BYIMQUIT)
  1. D PATH^BYIMIMM6
  1. I IPATH="" D Q
  1. .W:'$D(ZTQUEUED) !!,"No directory path found."
  1. .H 4
  1. I1 ;EP;FOR AUTO IMPORT MODE
  1. S Y=$$OPEN^%ZISH(IPATH,FILE,"R")
  1. I Y D Q:$D(BYIMQUIT)
  1. .D:'$G(AUTOADD)&'$D(ZTQUEUED)
  1. ..W !!,*7,"Cannot find FILE: ",FILE
  1. ..W !,*7," in DIRECTORY: ",IPATH
  1. .S BYIMQUIT=""
  1. .D PAUSE^BYIMIMM6
  1. D CLOSE^%ZISH()
  1. D:'$G(AUTOIMP)
  1. .W !!,"Import of immunizations of patients from the"
  1. .W !,"State Immunization registry may take several minutes."
  1. .S DIR(0)="YO"
  1. .S DIR("A")="Do you want to proceed"
  1. .S DIR("B")="NO"
  1. .W !
  1. .D ^DIR
  1. .K DIR
  1. .S:Y'=1 BYIMQUIT=""
  1. Q:$D(BYIMQUIT)
  1. D NCNT^BYIMIMM2
  1. D IN(IPATH,FILE)
  1. Q
  1. ;-----
  1. IN(IPATH,FILE) ;EP;TO PROCESS INCOMING FILE
  1. ;IPATH - INBOUND FILE PATH
  1. ;FILE - INBOUND FILE
  1. W:'$G(AUTOIMP) !!,"Please do not interrupt."
  1. S (DFNCNT,NODFNCNT,IMMCNT,NEWIMCNT,BYIMIMM,ADDIMCNT,MSGCNT,RXACNT)=0
  1. D READ(IPATH,FILE)
  1. D S1:$G(AUTOADD)
  1. D LOG^BYIMIMM4(FILE,"I",DFNCNT,RXACNT,NODFNCNT,NEWIMCNT,ADDIMCNT,IPATH)
  1. I '$G(AUTOIMP),'$G(AUTOADD),'$D(ZTQUEUED) D MATCH^BYIMIMM2
  1. D ADDIM
  1. K AUTOIMP,AUTOADD
  1. Q
  1. ;-----
  1. READ(IPATH,FILE) ;PEP pull up a file into the TMP global for display
  1. N Y,X,I,J,OPATH
  1. S MSGCNT=0
  1. S RXACNT=0
  1. S J=1
  1. S Y=$$OPEN^%ZISH(IPATH,FILE,"R")
  1. I Y D Q
  1. .W:'$G(AUTOIMP) !,*7,"CANNOT OPEN (OR ACCESS) FILE '",IPATH,FILE,"'."
  1. .S BYIMQUIT=""
  1. ;THE READ STATEMENT BELOW IS A READ FROM A HOST FILE WHICH REQUIRES A
  1. ;DIRECT READ VS AN FM/DIR CALL SAC EXEMPTION REQUESTED
  1. K ^BYIMTMP($J,"BYIM IMM")
  1. N RX
  1. S RX="R"_" X:"_"DTIME"
  1. F I=1:1 U IO X RX S STATUS=$$STATUS^%ZISH Q:STATUS=1!(STATUS=-1)!(X="") D:"|MSH|PID|RXA|"[("|"_$E(X,1,3)_"|") INSET^BYIMIMM2
  1. D CLOSE^%ZISH()
  1. Q:'$D(^BYIMTMP($J,"BYIM IMM"))
  1. D SET
  1. K ^BYIMTMP($J,"BYIM IMM")
  1. Q
  1. ;-----
  1. SET ;EP;ID PATIENTS AND SET NEW IMMUNIZATIONS
  1. S AUTOADD=$P($G(^BYIMPARA(DUZ(2),0)),U,5)
  1. S INHDA=0
  1. F S INHDA=$O(^BYIMTMP($J,"BYIM IMM",INHDA)) Q:'INHDA D SET1(INHDA)
  1. I $G(OLDDUZ(2)) S Z=2,DUZ(Z)=OLDDUZ(2) K OLDDUZ
  1. Q:'$D(^BYIMXTMP("BYIM"))
  1. D FMINIT
  1. S BYIMCNT=BYIMJ
  1. Q
  1. ;-----
  1. SET1(INHDA) ;EP;TO PROCESS INCOMING HL7 MESSAGE
  1. D ID ;VERIFY PATIENT ID
  1. I $D(BYIMQUIT) K BYIMQUIT Q
  1. S DFNCNT=$G(DFNCNT)+1
  1. D IMM ;CHECK EACH INCOMING IMMUNIZATION
  1. I '$D(ZTQUEUED) U 0 W "/"
  1. Q
  1. ;-----
  1. ID ;ID PATIENT
  1. I $G(OLDDUZ(2)) S Z=2,DUZ(Z)=OLDDUZ(2) K OLDDUZ
  1. N J
  1. S PID=""
  1. S J=0
  1. F S J=$O(^INTHU(INHDA,3,J)) Q:'J!(PID["PID|") I $E(^(J,0),1,4)="PID|" S PID=^(0)
  1. I PID="" S BYIMQUIT="" Q
  1. S PIDX=$P(PID,"|",4)
  1. F J=1:1:$L(PIDX,"~") S X=$P($P(PIDX,"~",J),U) S:$E(X,1,4)="RPMS" X=$E(X,5,99) Q:$L(X)=12
  1. S HRN=+$E(X,7,99)
  1. S FACILITY=$E(X,1,6)
  1. S X=$P(PID,"|",6)
  1. S X=$P(X,U)_","_$P(X,U,2)_$S($P(X,U,3)]"":" "_$P(X,U,3),1:"")
  1. S (NAME,FULLNAME)=X
  1. I FACILITY]"",$O(^AUTTLOC("C",FACILITY,0)) S Z=2,OLDDUZ(Z)=DUZ(2),DUZ(Z)=$O(^AUTTLOC("C",FACILITY,0))
  1. S DOB=$E($P(PID,"|",8),1,8)-17000000
  1. S SEX=$P(PID,"|",9)
  1. S X=HRN
  1. S DIC="^DPT("
  1. S DIC(0)="MZ"
  1. S DIC("S")="I $P(^DPT(+Y,0),U,3)=DOB,$P(^(0),U,2)=SEX"
  1. S AUPNLK("ALL")=""
  1. S AUPNLK("INAC")=""
  1. D ^DIC
  1. K DIC,DINUM,DR,DA,DLAYGO
  1. S:$G(OLDDUZ(2)) Z=2,DUZ(Z)=OLDDUZ(2)
  1. I +Y<1 D
  1. .S X=$P(PID,"|",6)
  1. .S X=$P(X,U)_","_$P(X,U,2)_$S($P(X,U,3)]"":" "_$P(X,U,3),1:"")
  1. .S DIC="^DPT("
  1. .S DIC(0)="MZ"
  1. .S DIC("S")="I $P(^DPT(+Y,0),U,3)=DOB,$P(^(0),U,2)=SEX"
  1. .S AUPNLK("ALL")=""
  1. .S AUPNLK("INAC")=""
  1. .D ^DIC
  1. .K DIC,DINUM,DR,DA,DLAYGO
  1. I +Y<1 D
  1. .S X=$TR($P(PID,"|",6),".","")
  1. .S X=$P(X,U)_","_$P(X,U,2)
  1. .S DIC="^DPT("
  1. .S DIC(0)="MZ"
  1. .S DIC("S")="I $P(^DPT(+Y,0),U,3)=DOB,$P(^(0),U,2)=SEX"
  1. .D ^DIC
  1. .K DIC,DINUM,DR,DA,DLAYGO
  1. I +Y<1 D Q:Y<1
  1. .D DIRECT
  1. .Q:Y>0
  1. .S BYIMQUIT=""
  1. .I $L(FULLNAME),$L(DOB),$L(SEX),'$D(^BYIMPARA("NMNAME",FULLNAME)) D
  1. ..;RECORD NO MATCH PATIENTS
  1. ..S DA(1)=DUZ(2)
  1. ..S DIC="^BYIMPARA("_DUZ(2)_",4,"
  1. ..S DIC(0)="LZ"
  1. ..S X=FULLNAME
  1. ..S DIC("DR")=".02////"_(DOB+17000000)_";.03////"_$E(FILE,7,14)_";.04////"_SEX_";.05////"_$G(MM)_";.06////"_$G(UIF)
  1. ..D FILE^DICN
  1. ..S NODFNCNT=$G(NODFNCNT)+1
  1. ..S Y=-1
  1. S DFN=+Y
  1. I '$D(^AUPNPAT(DFN,41,DUZ(2),0)) D
  1. .K OLDDUZ
  1. .N XX
  1. .S XX=0
  1. .F S XX=$O(^AUPNPAT(DFN,41,XX)) Q:'XX!$G(OLDDUZ(2)) D
  1. ..S Z=2,OLDDUZ(Z)=DUZ(2)
  1. ..S Z=2,DUZ(Z)=XX
  1. ..K BYIMQUIT
  1. .S:'$G(OLDDUZ(2)) BYIMQUIT=""
  1. I $G(^DPT(DFN,.35)) S BYIMQUIT=""
  1. Q
  1. ;-----
  1. DIRECT ;DIRECT FIND OF PATIENT
  1. D DIRECT^BYIMIMM3
  1. Q
  1. ;-----
  1. IMM ;COMPARE INCOMING IMMUNIZATIONS WITH EXISTING IMMUNIZATIONS
  1. N X,Y,Z,ZZ,BYIMY,LOT
  1. S J=2
  1. F S J=$O(^INTHU(INHDA,3,J)) Q:'J S BYIMY=^(J,0) D:$E(BYIMY,1,3)="RXA"
  1. .S Z=$E($P(BYIMY,"|",4),1,8)-17000000
  1. .S Y=+$P($P(BYIMY,"|",6),U)
  1. .Q:Y=999
  1. .Q:'Y!'Z
  1. .S IMMCNT=$G(IMMCNT)+1
  1. .S IMM=Y
  1. .D CONVERT
  1. .S Y=IMM
  1. .S X=$P(BYIMY,"|",12)
  1. .S X=$P(X,U,4)_U_$P(X,U)
  1. .S VOL=+$P(BYIMY,"|",7)
  1. .S:'VOL!(VOL[999) VOL=""
  1. .S LOT=$P(BYIMY,"|",16)
  1. .S MAN=$P($P(BYIMY,"|",18),U,1,2)
  1. .S ^BYIMXTMP("BYIM",DOB,NAME,DFN,Y,Z)=INHDA_U_Z_U_X_U_LOT_U_MAN_U_VOL
  1. .Q:'$O(IMM(0))
  1. .S Y=0
  1. .F S Y=$O(IMM(Y)) Q:'Y D
  1. ..S ^BYIMXTMP("BYIM",DOB,NAME,DFN,Y,Z)=INHDA_U_Z_U_X
  1. S X=0
  1. F S X=$O(^AUPNVIMM("AC",DFN,X)) Q:'X D
  1. .S Y=$G(^AUPNVIMM(X,0))
  1. .S Z=$P($G(^AUPNVSIT(+$P(Y,U,3),0)),".")
  1. .S Y=+Y
  1. .Q:'Y!'Z
  1. .K ^BYIMXTMP("BYIM",DOB,NAME,DFN,Y,Z)
  1. .D KILL^BYIMIMM2
  1. Q
  1. ;-----
  1. DEL ;EP;DEL IMMUNIZATIONS FROM THE STATE REGISTRY LIST
  1. N DEL
  1. S DEL=""
  1. ADD ;EP;ADD NEW IMMUNIZATIONS FROM THE STATE REGISTRY
  1. K BYIMQUIT
  1. D SELECT
  1. I $D(BYIMQUIT) K BYIMQUIT Q
  1. D CLEAR^VALM1
  1. D NEWIMM
  1. BACK S VALMBCK="R"
  1. Q
  1. ;-----
  1. SELECT ;SELECT CHILD TO ADD
  1. I BYIMJ-3=0 D Q
  1. .W !!,"No Immunizations to ",$S('$D(DEL):"Add",1:"Delete"),"..."
  1. .H 3
  1. S DIR(0)="LO^1:"_(BYIMJ-3)
  1. S DIR("A")="Select Immunization(s) to "_$S('$D(DEL):"add to RPMS",1:"delete from the list")
  1. W !
  1. D ^DIR
  1. K DIR
  1. I 'Y S BYIMQUIT="" Q
  1. M BYIMY=Y
  1. Q
  1. ;-----
  1. S1 ;FOR AUTOADD TO SET ADD ARRAY
  1. N X,Y,Z,J
  1. F J=1:1:$G(BYIMJ)-3 S BYIMY(J)=J
  1. NEWIMM ;ADD NEW IMMUNIZATION
  1. K BYIMPAUS
  1. N XX
  1. S XX=""
  1. F S XX=$O(BYIMY(XX)) Q:XX="" D
  1. .S YY=BYIMY(XX)
  1. .F JJ=1:1 S ZZ=$P(YY,",",JJ) Q:ZZ="" D NI1
  1. Q
  1. NI1 ;NEW IMMUNIZATION
  1. K NEWLOT
  1. S NUM=ZZ+3
  1. S (X,BYIMX)=$G(^BYIMTMP($J,"BYIM DISP","DFN",NUM))
  1. Q:$E(X)="*"!(X="")
  1. ;1 = NAME
  1. ;2 = DFN
  1. ;3 = ADMIN DATE
  1. ;4 = CVX CODE
  1. ;5 = IMM IEN
  1. ;6 = LOC
  1. ;7 = DOB
  1. ;8 = LOC2
  1. ;9 = LOT NUM
  1. ;10 = MVX CODE
  1. ;11 = MANUF NAME
  1. ;12 = VOLUME
  1. S NAME=$P(X,U)
  1. S DFN=$P(X,U,2)
  1. S VDATE=$P(X,U,3)
  1. S IMM=$P(X,U,4)
  1. D CONVERT
  1. S IVDA=$P(X,U,5)
  1. S LOC=$P(X,U,6)
  1. S LOC2=$P(X,U,8)
  1. I LOC="",LOC2]"" S LOC=LOC2
  1. S:LOC="" LOC="OTHER"
  1. S DOB=$P(X,U,7)
  1. S LOT=$P(X,U,9)
  1. S LOTDA=""
  1. S MVX=$P(X,U,10)
  1. S MAN=$P(X,U,11)
  1. S VOL=$P(X,U,12)
  1. I LOT]"",IMM]"",MVX]"" D
  1. .I $T(ADDLOT^BIRPC5)]"" D
  1. ..S BYIMDATA=LOT_"|"_IMM_"|"_MVX
  1. ..D ADDLOT^BIRPC5(.BYIMERR,BYIMDATA,.LOTDA)
  1. .I $T(ADDLOT^BIRPC5)="" D
  1. ..D LOT^BYIMIMM4(LOT,MAN,IVDA)
  1. K APCDALVR("APCDAFLG"),BYIMERR
  1. N BYIMDUZ,NEWLOT
  1. I $G(LOTDA),$P($G(^AUTTIML(LOTDA,0)),U,3) S $P(^(0),U,3)=0,NEWLOT=LOTDA
  1. S BYIMDUZ=DUZ
  1. D VISIT:'$D(DEL)
  1. S X="DUZ"
  1. S @X=BYIMDUZ
  1. I $G(NEWLOT) S $P(^AUTTIML(NEWLOT,0),U,3)=1 K NEWLOT
  1. Q:$G(BYIMERR)]""&'$D(DEL)
  1. S X=BYIMX
  1. K ^BYIMXTMP("BYIM",$P(X,U,7),$P(X,U),$P(X,U,2),$P(X,U,4),$P(X,U,3))
  1. K ^BYIMTMP($J,"BYIM IMM","DFN",NUM)
  1. S Z=VDATE
  1. S Y=$O(^AUTTIMM("C",IMM,0))
  1. Q:'Y!'Z
  1. D KILL^BYIMIMM2
  1. Q
  1. ;-----
  1. VISIT ;FIND OR CREATE VISIT
  1. K BYIMDUZ
  1. S BYIMDUZ=DUZ
  1. D DUZ
  1. D LOCIN(LOC)
  1. N P
  1. S P="|"
  1. S BYIMERR=""
  1. S $P(BYIMDATA,P,1)="I"
  1. S $P(BYIMDATA,P,2)=DFN
  1. S $P(BYIMDATA,P,3)=IVDA
  1. S $P(BYIMDATA,P,6)=VDATE_".12"
  1. S $P(BYIMDATA,P,7)=LOCDA
  1. S $P(BYIMDATA,P,8)=$E($S($E(LOC2)?1U&(LOC2'=LOC):LOC2,1:LOC),1,50)
  1. S $P(BYIMDATA,P,9)="E"
  1. S $P(BYIMDATA,P,21)=$G(VOL)
  1. S $P(BYIMDATA,P,23)=DUZ(2)
  1. S $P(BYIMDATA,P,25)=1
  1. D ADDEDIT^BIRPC3(.BYIMERR,BYIMDATA,1)
  1. I $G(OLDDUZ(2)) S Z=2,DUZ(Z)=OLDDUZ(2) K OLDDUZ
  1. I BYIMERR]"" D Q
  1. .K BYIMQUIT
  1. .S:BYIMERR["Lot Number" BYIMERR="**"_$P($G(^AUTTIML(+$G(LOTDA),0)),U)_"** "_BYIMERR
  1. .S BYIMERR=BYIMERR_" - V IMMUNIZATIONN CREATION FAILED"
  1. .S X="DUZ",@X=BYIMDUZ
  1. .N %X,%Y,X,XMB,XMDT,XMDUZ,Y1
  1. .S XMB="BYIM V IMM CREATION FAILED"
  1. .S XMB(1)=$P(^DPT(DFN,0),U)_" (DOB: "_$E($P(^(0),U,3),4,5)_"/"_$E($P(^(0),U,3),6,7)_"/"_$E($P(^(0),U,3),1,3)+17000
  1. .S XMB(2)=IMM_" - "_$P($G(^AUTTIMM(IVDA,0)),U)
  1. .N X
  1. .S X=VDATE
  1. .S XMB(3)=$E(X,4,5)_"/"_$E(X,6,7)_"/"_$E(X,1,3)+1700
  1. .S XMB(4)=BYIMERR
  1. .S XMDUZ=.5
  1. .D ^XMB
  1. .I '$D(ZTQUEUED),$G(BYIMPAUS)'[U D
  1. ..W !!,"Visit not added:"
  1. ..W !,BYIMERR
  1. ..W !!,"Patient.....: ",XMB(1)
  1. ..W !,"Immunization: ",XMB(2)
  1. ..W !,"Visit Date..: ",XMB(3)
  1. ..D PAUSE^BYIMIMM6
  1. S ADDIMCNT=$G(ADDIMCNT)+1
  1. Q:'$G(LOTDA)
  1. D ADDLOT^BYIMIMM6(DFN,IVDA,LOTDA,VDATE)
  1. Q
  1. ;-----
  1. CONVERT ;CONVERT INACTIVE VACCINE TO ACTIVE EQUIVALENT
  1. S:IMM=105 IMM=75,OLDIMM=105
  1. S:IMM=17 IMM=47,OLDIMM=17
  1. S:IMM=31 IMM=83,OLDIMM=31
  1. Q
  1. ;-----
  1. FMINIT ;EP;PUT NEW IMMUNIZATIONS INTO TMP STORAGE FOR
  1. K ^BYIMTMP($J,"BYIM DISP")
  1. N A,B,C,X,Y,Z,J,XXX
  1. S J=3
  1. S DOB=9999999
  1. F S DOB=$O(^BYIMXTMP("BYIM",DOB),-1) Q:'DOB D
  1. .S A=""
  1. .F S A=$O(^BYIMXTMP("BYIM",DOB,A)) Q:A="" D
  1. ..S B=0
  1. ..F S B=$O(^BYIMXTMP("BYIM",DOB,A,B)) Q:'B D
  1. ...S C=0
  1. ...F S C=$O(^BYIMXTMP("BYIM",DOB,A,B,C)) Q:'C D
  1. ....S X=0
  1. ....F S X=$O(^BYIMXTMP("BYIM",DOB,A,B,C,X)) Q:'X S XXX=^(X) D FM
  1. S (BYIMJ,VALMCNT)=J
  1. S NEWIMCNT=J-3
  1. D BACK
  1. Q
  1. ;-----
  1. FM ;SET DISPLAY GLOBAL
  1. S XX=$P(XXX,U,2)
  1. S DATE=$E(XX,4,5)_"/"_$E(XX,6,7)_"/"_(1700+$E(XX,1,3))
  1. S IVDA=+$O(^AUTTIMM("C",C,0))
  1. I 'IVDA S ^BYIMTMP($J,"BYIM TEST","NO IMM CODE: "_C)="" Q
  1. S IMM=$P($G(^AUTTIMM(+IVDA,0)),U,2)
  1. I IMM="" S ^BYIMTMP($J,"BYIM TEST","NO IMM CODE 2: "_IMM)="" Q
  1. S J=J+1
  1. S IMM=IMM_"-"_C
  1. S T=J-3
  1. S $E(T,5)=DOB+17000000
  1. S $E(T,14)=$E(A,1,28)
  1. S $E(T,43)=IMM
  1. S $E(T,60)=$P(XXX,U,5)
  1. S $E(T,71)=DATE
  1. S ^BYIMTMP($J,"BYIM DISP",J,0)=T
  1. S ^BYIMTMP($J,"BYIM DISP","DFN",J)=A_U_B_U_XX_U_C_U_IVDA_U_$P(XXX,U,3)_U_DOB_U_$P(XXX,U,4)_U_$P(XXX,U,5)_U_$P(XXX,U,6)_U_$P(XXX,U,7)_U_$P(XXX,U,8)
  1. ;A = NAME
  1. ;B = DFN
  1. ;XX = ADMIN DATE
  1. ;C = CVX CODE
  1. ;IVDA = IMM IEN
  1. ;$P(XXX,U,3) = LOC
  1. ;DOB = DOB
  1. ;$P(XXX,U,4) = LOC2
  1. ;$P(XXX,U,5) = LOT NUM
  1. ;$P(XXX,U,6) = MVX CODE
  1. ;$P(XXX,U,7) = MANUF NAME
  1. ;$P(XXX,U,8) = VOLUME
  1. S BYIMCNT=+T
  1. Q
  1. ;-----
  1. HDR ;EP;FOR LIST HEADER
  1. S ^BYIMTMP($J,"BYIM DISP",1,0)=" "_$S($G(VALMCNT):" ("_(VALMCNT-3)_")",1:"")_" Immunizations from the State Registry"
  1. S T="NUM"
  1. S $E(T,5)="DOB"
  1. S $E(T,14)="NAME"
  1. S $E(T,43)="IMMUNIZATION-CVX"
  1. S $E(T,60)="LOT NO."
  1. S $E(T,71)="DATE REC'D"
  1. S ^BYIMTMP($J,"BYIM DISP",2,0)=T
  1. S T="---"
  1. S $E(T,5)="--------"
  1. S $E(T,14)="----------------------------"
  1. S $E(T,43)="----------------"
  1. S $E(T,60)="----------"
  1. S $E(T,71)="----------"
  1. S ^BYIMTMP($J,"BYIM DISP",3,0)=T
  1. Q
  1. ;-----
  1. START ;EP;
  1. S BYIMVALM="BYIM STATE IMMUNIZATIONS"
  1. D VALM(BYIMVALM)
  1. Q
  1. VALM(BYIMVALM) ;EP; -- main entry point for list templates
  1. S VALMCC=1 ;1=screen mode, 0=scrolling mode
  1. D TERM^VALM0
  1. D CLEAR^VALM1
  1. D EN^VALM(BYIMVALM)
  1. D CLEAR^VALM1
  1. K ^BYIMTMP($J,"BYIM DISP")
  1. Q
  1. ;-----
  1. PARAM ;EP;TO UPDATE PARAMETERS
  1. N DA,DR,DIC,DIE,BYIMDA
  1. D PADD
  1. Q:DA<1
  1. S DIE="^BYIMPARA("
  1. S DR="[BYIM SET PARAMETERS]"
  1. W @IOF
  1. W !!,"UPDATE Data Exchange Parameters for ",$P(^DIC(4,DA,0),U)
  1. W !
  1. D ^DIE
  1. D PATH^BYIMIMM6
  1. K DIE,DIC,DINUM,DR,DA,DD,DO,DIK,DLAYGO
  1. Q
  1. ;-----
  1. PADD ;EP;TO ADD PARAMETER SITE
  1. K DIE,DIC,DINUM,DR,DA,DD,DO,DIK,DLAYGO
  1. S DIC="^BYIMPARA("
  1. S DIC(0)="AEMLQZ"
  1. S DIC("A")="Select SITE for Data Exchange Parameters: "
  1. S DIC("B")=$P(^DIC(4,DUZ(2),0),U)
  1. W @IOF
  1. W !!,"ADD Data Exchange Parameter Site"
  1. W !
  1. D ^DIC
  1. K DIE,DIC,DINUM,DR,DA,DD,DO,DIK,DLAYGO
  1. S (BYIMDA,DA)=+Y
  1. Q
  1. ;-----
  1. DUZ ;SET DUZ FOR VISIT 'CREATED BY USER'
  1. K DIE,DIC,DINUM,DR,DA,DD,DO,DIK,DLAYGO
  1. N X,Y,Z
  1. S X="USER,IMMUNIZATION INTERFACE"
  1. S Y=$O(^VA(200,"B",X,0))
  1. D:'Y
  1. .S DIC="^VA(200,"
  1. .S DIC(0)="M"
  1. .S DIC("DR")="3////@"
  1. .D FILE^DICN
  1. .K DIE,DIC,DINUM,DR,DA,DD,DO,DIK,DLAYGO
  1. .S Y=+Y
  1. S:Y<1 Y=.5
  1. S X="DUZ",@X=+Y
  1. Q
  1. ;-----
  1. ADDIM ;EP;PROCESS ADDITIONAL IMPORT FILES
  1. N BYIMAS
  1. S BYIMDA=DUZ(2)
  1. S BYIMAS=0
  1. F S BYIMAS=$O(^BYIMPARA(BYIMDA,3,BYIMAS)) Q:'BYIMAS D
  1. .S X=^BYIMPARA(BYIMDA,3,BYIMAS,0)
  1. .S IPATH=$P(X,U,3)
  1. .D ADDIM1
  1. Q
  1. ;-----
  1. ADDIM1 ;PROCESS EACH ADDIONAL IMPORT SITE
  1. I '$G(AUTOIMP) D
  1. .W:'$D(ZTQUEUED) !!,"Processing additional import files."
  1. .W:'$D(ZTQUEUED) !,"Please do not interrupt."
  1. S (DFNCNT,NODFNCNT,IMMCNT,NEWIMCNT,BYIMIMM,ADDIMCNT,MSGCNT,RXACNT)=0
  1. D READ(IPATH,FILE)
  1. D S1:$G(AUTOADD)
  1. D LOG^BYIMIMM4(FILE,"I",DFNCNT,RXACNT,NODFNCNT,NEWIMCNT,ADDIMCNT,IPATH)
  1. I '$G(AUTOIMP),'$G(AUTOADD),'$D(ZTQUEUED) D MATCH^BYIMIMM2
  1. Q
  1. ;-----
  1. LOCIN(LOC) ;PROCESS LOCATION DATA FOR FACILITY NAME OR CODE
  1. S:LOC="" LOC="OTHER"
  1. S LOCDA=0
  1. S LOCDA=$O(^BYIMPARA("RXA",LOC,0))
  1. S:LOCDA LOCDA=$O(^BYIMPARA("RXA",LOC,LOCDA,0))
  1. S:'LOCDA LOCDA=$S($O(^DIC(4,"B",LOC,0)):$O(^DIC(4,"B",LOC,0)),1:$O(^DIC(4,"B","OTHER",0)))
  1. I $P($G(^DIC(4,+LOCDA,0)),U)="OTHER",LOC2]"",$O(^DIC(4,"B",LOC2,0)) S LOCDA=$O(^DIC(4,"B",LOC2,0)),LOC=LOC2
  1. I $P(^DIC(4,+LOCDA,0),U)="OTHER",$P($G(^BISITE($S($G(OLDDUZ(2)):OLDDUZ(2),1:+$G(DUZ(2))),0)),U,3),LOCDA'=$P(^(0),U,3) S LOCDA=$P(^(0),U,3)
  1. Q:$P(^DIC(4,+LOCDA,0),U)'="OTHER"
  1. ;DETERMINE STATE FOR 'OTHER' FACILITY
  1. N X,Y,Z
  1. S X=$P($G(^DIC(4,+$G(DUZ(2)),0)),U,2)
  1. Q:'X
  1. S Z=0
  1. S Y=0
  1. F S Y=$O(^DIC(4,"B","OTHER",Y)) Q:'Y!Z D
  1. .S:$P($G(^DIC(4,Y,0)),U,2)=X Z=Y
  1. S:Z LOCDA=Z
  1. Q
  1. ;