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

APCLVLU1.m

Go to the documentation of this file.
  1. APCLVLU1 ; IHS/CMI/LAB - GEN RETR UTILITIES ; 27 Aug 2014 10:52 AM
  1. ;;2.0;IHS PCC SUITE;**2,4,5,7,11,20,21**;MAY 14, 2009;Build 34
  1. RACESCR ;
  1. NEW Y,Z
  1. K Z
  1. D LIST^DIC(2.02,","_DFN_",","@;.01E","P",,,,,,,"Z")
  1. S Y=0 F S Y=$O(Z("DILIST",Y)) Q:Y="" S X($P(Z("DILIST",Y,0),U,1))=""
  1. Q
  1. RACEPRT ;
  1. NEW Z,Y
  1. D LIST^DIC(2.02,","_DFN_",","@;.01E","P",,,,,,,"Z")
  1. S Y=0 F S Y=$O(Z("DILIST",Y)) Q:Y="" D
  1. .;S APCLPCNT=APCLPCNT+1
  1. .S X($P(Z("DILIST",Y,0),U,1))=""
  1. .S APCLPCNT=APCLPCNT+1,APCLPRNM(APCLPCNT)=$P(Z("DILIST",Y,0),U,2)
  1. .S APCLPRNM(APCLPCNT,"I")=$P(Z("DILIST",Y,0),U,1)
  1. .Q
  1. Q
  1. MCR ;MCR display all current medicare data
  1. NEW APCLMIFN
  1. I '$D(^DPT(P,0)) G MCRX
  1. I $P(^DPT(P,0),U,19) G MCRX
  1. I '$D(^AUPNPAT(P,0)) G MCRX
  1. I '$D(^AUPNMCR(P,11)) G MCRX
  1. I $D(^DPT(P,.35)),$P(^(.35),U)]"",$P(^(.35),U)<D G MCRX
  1. S APCLMIFN=0 F S APCLMIFN=$O(^AUPNMCR(P,11,APCLMIFN)) Q:APCLMIFN'=+APCLMIFN D
  1. .Q:$P(^AUPNMCR(P,11,APCLMIFN,0),U)>D
  1. .I $P(^AUPNMCR(P,11,APCLMIFN,0),U,2)]"",$P(^(0),U,2)<D Q
  1. .S APCLPCNT=APCLPCNT+1,APCLPRNM(APCLPCNT)=$$GETMCR^AGUTL(P)_" ["_$S($P(^AUPNMCR(P,0),U,4)]"":$P(^AUTTMCS($P(^AUPNMCR(P,0),U,4),0),U),1:"-")_"]" ;IHS/CMI/LAB PATCH 21 NMCI
  1. .S APCLPCNT=APCLPCNT+1,Y=$P(^AUPNMCR(DFN,11,APCLMIFN,0),U),Z=$P(^(0),U,2),APCLPRNM(APCLPCNT)=$E(Y,4,5)_"/"_$E(Y,6,7)_"/"_$E(Y,2,3)_"-" I Z]"" S APCLPRNM(APCLPCNT)=APCLPRNM(APCLPCNT)_$E(Z,4,5)_"/"_$E(Z,6,7)_"/"_$E(Z,2,3)
  1. .Q
  1. MCRX ;
  1. K Y,Z
  1. Q
  1. ;
  1. MCD ;EP
  1. NEW APCLMIFN,APCLNIFN
  1. I '$D(^DPT(P,0)) G MCDX
  1. I $P(^DPT(P,0),U,19) G MCDX
  1. I '$D(^AUPNPAT(P,0)) G MCDX
  1. I $D(^DPT(P,.35)),$P(^(.35),U)]"",$P(^(.35),U)<D G MCDX
  1. S APCLMIFN=0 F S APCLMIFN=$O(^AUPNMCD("B",P,APCLMIFN)) Q:APCLMIFN'=+APCLMIFN D
  1. .Q:'$D(^AUPNMCD(APCLMIFN,11))
  1. .S APCLNIFN=0 F S APCLNIFN=$O(^AUPNMCD(APCLMIFN,11,APCLNIFN)) Q:APCLNIFN'=+APCLNIFN D
  1. ..Q:APCLNIFN>D
  1. ..I $P(^AUPNMCD(APCLMIFN,11,APCLNIFN,0),U,2)]"",$P(^(0),U,2)<D Q
  1. ..S APCLPCNT=APCLPCNT+1,APCLPRNM(APCLPCNT)=$P(^AUPNMCD(APCLMIFN,0),U,3)_"/"_$S($P(^AUPNMCD(APCLMIFN,0),U,2)]"":$P(^AUTNINS($P(^AUPNMCD(APCLMIFN,0),U,2),0),U),1:"<>")
  1. ..S APCLPCNT=APCLPCNT+1,Y=$P(^AUPNMCD(APCLMIFN,11,APCLNIFN,0),U),Z=$P(^(0),U,2),APCLPRNM(APCLPCNT)=$E(Y,4,5)_"/"_$E(Y,6,7)_"/"_$E(Y,2,3)_"-" I Z]"" S APCLPRNM(APCLPCNT)=APCLPRNM(APCLPCNT)_$E(Z,4,5)_"/"_$E(Z,6,7)_"/"_$E(Z,2,3)
  1. ..Q
  1. .Q
  1. ;
  1. MCDX ;
  1. Q
  1. ;
  1. PI ;EP
  1. NEW APCLMIFN,APCLFLG
  1. I '$D(^DPT(P,0)) G PIX
  1. I $P(^DPT(P,0),U,19) G PIX
  1. I '$D(^AUPNPAT(P,0)) G PIX
  1. I '$D(^AUPNPRVT(P,11)) G PIX
  1. I $D(^DPT(P,.35)),$P(^(.35),U)]"",$P(^(.35),U)<D G PIX
  1. S APCLMIFN=0 F S APCLMIFN=$O(^AUPNPRVT(P,11,APCLMIFN)) Q:APCLMIFN'=+APCLMIFN D
  1. .Q:$P(^AUPNPRVT(P,11,APCLMIFN,0),U)=""
  1. .S APCLNAME=$P(^AUPNPRVT(DFN,11,APCLMIFN,0),U) Q:APCLNAME=""
  1. .Q:$P(^AUTNINS(APCLNAME,0),U)["AHCCCS"
  1. .Q:$P(^AUPNPRVT(P,11,APCLMIFN,0),U,6)>D
  1. .I $P(^AUPNPRVT(P,11,APCLMIFN,0),U,7)]"",$P(^(0),U,7)<D Q
  1. .S APCLPCNT=APCLPCNT+1,APCLPRNM(APCLPCNT)=$P(^AUTNINS($P(^AUPNPRVT(P,11,APCLMIFN,0),U),0),U)
  1. .S APCLPCNT=APCLPCNT+1,Y=$P(^AUPNPRVT(DFN,11,APCLMIFN,0),U,6),Z=$P(^(0),U,7),APCLPRNM(APCLPCNT)=$E(Y,4,5)_"/"_$E(Y,6,7)_"/"_$E(Y,2,3)_"-" I Z]"" S APCLPRNM(APCLPCNT)=APCLPRNM(APCLPCNT)_$E(Z,4,5)_"/"_$E(Z,6,7)_"/"_$E(Z,2,3)
  1. .Q
  1. PIX ;
  1. Q
  1. PIV ;EP
  1. NEW APCLMIFN,APCLFLG
  1. I '$D(^DPT(P,0)) G PIX
  1. I $P(^DPT(P,0),U,19) G PIX
  1. I '$D(^AUPNPAT(P,0)) G PIX
  1. I '$D(^AUPNPRVT(P,11)) G PIX
  1. I $D(^DPT(P,.35)),$P(^(.35),U)]"",$P(^(.35),U)<D G PIX
  1. S APCLMIFN=0 F S APCLMIFN=$O(^AUPNPRVT(P,11,APCLMIFN)) Q:APCLMIFN'=+APCLMIFN D
  1. .Q:$P(^AUPNPRVT(P,11,APCLMIFN,0),U)=""
  1. .S APCLNAME=$P(^AUPNPRVT(DFN,11,APCLMIFN,0),U) Q:APCLNAME=""
  1. .Q:$P(^AUTNINS(APCLNAME,0),U)["AHCCCS"
  1. .Q:$P(^AUPNPRVT(P,11,APCLMIFN,0),U,6)>D
  1. .I $P(^AUPNPRVT(P,11,APCLMIFN,0),U,7)]"",$P(^(0),U,7)<D Q
  1. .S APCLPRNT=$P(^AUPNPRVT(P,11,APCLMIFN,0),U,9) I APCLPRNT]"" S APCLPRNT=$$FMTE^XLFDT(APCLPRNT,"2D")
  1. .Q
  1. PIVX ;
  1. Q
  1. ;
  1. ML ;EP - set up mailing address print array
  1. S APCLPCNT=0 K APCLPRNM
  1. F X=1:1:3 S Y=$P($G(^DPT(DFN,.11)),U,X) I Y]"" S APCLPCNT=APCLPCNT+1,APCLPRNM(APCLPCNT)=Y
  1. S X=$P($G(^DPT(DFN,.11)),U,4)_", "
  1. S Y="",Y=$P($G(^DPT(DFN,.11)),U,5) I Y S Y=$P(^DIC(5,Y,0),U)
  1. S X=X_$S(Y]"":Y,1:" ")
  1. S X=X_" "_$P($G(^DPT(DFN,.11)),U,6)
  1. S APCLPCNT=APCLPCNT+1,APCLPRNM(APCLPCNT)=X
  1. Q
  1. ;
  1. BILLNUM(V) ;EP - given visit ien (V), return bill #
  1. ;from ABMDBILL
  1. I '$G(V) Q ""
  1. I '$D(^AUPNVSIT(V)) Q ""
  1. NEW D,X,B
  1. S (D,X)=0,B="" F S D=$O(^ABMDBILL(D)) Q:D'=+D D
  1. .S X=0 F S X=$O(^ABMDBILL(D,"AV",V,X)) Q:X'=+X S B=$P(^ABMDBILL(D,X,0),"^")
  1. .Q
  1. Q B
  1. ;
  1. PSCLS ;EP
  1. S A=0 F S A=$O(^AUPNVPRV("AD",APCLVIEN,A)) Q:A'=+A S P=$P(^AUPNVPRV(A,0),U),Z=$S($P(^DD(9000010.06,.01,0),U,2)[200:$$PROVCLS^XBFUNC1(P),1:$P(^DIC(7,$P(^DIC(6,P,0),U,4),0),U)) D
  1. .S APCLPCNT=APCLPCNT+1,APCLPRNM(APCLPCNT)=Z
  1. .S APCLPRNM(APCLPCNT,"I")=$S($P(^DD(9000010.06,.01,0),U,2)[200:$P($G(^VA(200,P,"PS")),U,5),1:$P(^DIC(6,P,0),U,4))
  1. .Q
  1. Q
  1. PSAFFL ;
  1. S A=0 F S A=$O(^AUPNVPRV("AD",APCLVIEN,A)) Q:A'=+A S P=$P(^AUPNVPRV(A,0),U),Z=$S($P(^DD(9000010.06,.01,0),U,2)[200:$$PROVAFFL^XBFUNC1(P),1:$P($G(^DIC(6,P,9999999)),U)) D
  1. .S APCLPCNT=APCLPCNT+1,APCLPRNM(APCLPCNT)=Z
  1. .S APCLPRNM(APCLPCNT,"I")=$S($P(^DD(9000010.06,.01,0),U,2)[200:$P($G(^VA(200,P,9999999)),U,1),1:$P($G(^DIC(6,P,9999999)),U))
  1. .Q
  1. Q
  1. EDPD ;EP
  1. N AY,P S AY=0 F S AY=$O(^AUPNVPED("AD",APCLVIEN,AY)) Q:AY'=+AY S P=$P(^AUPNVPED(AY,0),U,5) I P D
  1. .S Z=$S($P(^DD(9000010.16,.05,0),U,2)[200:$$PROVCLS^XBFUNC1(P),1:$P(^DIC(7,$P(^DIC(6,P,0),U,4),0),U)) S APCLPCNT=APCLPCNT+1,APCLPRNM(APCLPCNT)=Z
  1. .S APCLPRNM(APCLPCNT,"I")=$S($P(^DD(9000010.16,.05,0),U,2)[200:$P($G(^VA(200,P,"PS")),U,5),1:$P($G(^DIC(6,P,0)),U,4))
  1. Q
  1. LABLOINC ;
  1. NEW A,B,C,D,J
  1. K X
  1. S A=0
  1. S APCLSPEC=""
  1. F S A=$O(^AUPNVLAB("AD",APCLVIEN,A)) Q:A'=+A!$D(X) D
  1. .S B=$P($G(^AUPNVLAB(A,0)),U)
  1. .Q:'B
  1. .Q:'$D(^LAB(60,B,0))
  1. .I $D(APCLLABT("LAB",B)) S X(1)=1,X=1 Q
  1. .S J=$P($G(^AUPNVLAB(B,11)),U,13) Q:J=""
  1. .Q:'$$LOINC(J)
  1. .S X(1)=1,X=1
  1. .Q
  1. Q
  1. LOINC(Q) ;EP - is loinc code Q in apcllabt
  1. NEW %
  1. S %=$P($G(^LAB(95.3,Q,9999999)),U,2)
  1. I %]"",$D(APCLLABT("LOINC",%)) Q 1
  1. S %=$P($G(^LAB(95.3,Q,0)),U)_"-"_$P($G(^LAB(95.3,Q,0)),U,15)
  1. I $D(APCLLABT("LOINC",%)) Q 1
  1. Q ""
  1. WC(R) ;EP - return waist circumference on this visit
  1. NEW %,M,V
  1. S %=0,V="" F S %=$O(^AUPNVMSR("AD",R,%)) Q:%'=+% D
  1. .Q:'$D(^AUPNVMSR(%,0))
  1. .Q:$P($G(^AUPNVMSR(%,2)),U,1)
  1. .S M=$P(^AUPNVMSR(%,0),U)
  1. .I M="" Q
  1. .S M=$P($G(^AUTTMSR(M,0)),U)
  1. .Q:M'="WC"
  1. .S V=$P(^AUPNVMSR(%,0),U,4)
  1. .Q
  1. Q V
  1. PBMIG(P) ;EP - calculate BMI for VGEN/PGEN
  1. NEW %,H,W,D
  1. S %=$$PBMI^APCLV(P,DT)
  1. I $P(%,U)="" Q ""
  1. I $P(%,U,8)["WARNING" Q "" ;ht or wt is too old
  1. S H=$P(%,U,3)
  1. S W=$P(%,U,6)
  1. S D=H
  1. I W>H S D=W
  1. S B=$P(%,U,1),B=$J(B,6,2),B=$$STRIP^XLFSTR(B," ")
  1. Q B_" as of "_$E(D,4,5)_"/"_$E(D,6,7)_"/"_$E(D,2,3)
  1. ;
  1. FAMHXTL ;EP - called from pgen translation logic
  1. K R
  1. S Y=$O(^APCLVRPT(APCLRPT,11,APCLI,11,0)) S Z=$P($P(^APCLVRPT(APCLRPT,11,APCLI,11,Y,0),U),"-"),R=$P($P(^APCLVRPT(APCLRPT,11,APCLI,11,Y,0),U),"-",2)
  1. W !,"Family History diagnoses including ",$S(Z:$P(^ICD9(Z,0),U),1:"ANY DIAGNOSIS")," for the following relationships: "
  1. I R="" W "ANY relationship." S X="",APCLQ=1 Q
  1. S X=0 F S X=$O(^APCLVRPT(APCLRPT,11,APCLI,11,X)) Q:X'=+X S R($P($P(^APCLVRPT(APCLRPT,11,APCLI,11,X,0),U),"-",2))=""
  1. S X=0 F S X=$O(R(X)) Q:X'=+X W $P(^AUTTRLSH(X,0),U),"; "
  1. K R
  1. S X="",APCLQ=""
  1. Q
  1. FAMHX ;EP - called from pgen item
  1. ;find all family history items that match diagnosis and relationship
  1. ;if 1st diagnosis is blank then select ANY diagnosis that follows null
  1. NEW D,R,I,G,S,Z,Y
  1. K X
  1. S X=""
  1. S Y=0,G="" F S Y=$O(^AUPNFH("AC",DFN,Y)) Q:Y'=+Y!(G) D
  1. .S I=$P(^AUPNFH(Y,0),U,1)
  1. .S R=$P(^AUPNFH(Y,0),U,9)
  1. .Q:R=""
  1. .S R=$P(^AUPNFHR(R,0),U,1)
  1. .;do you want this diagnosis? if so set D=1
  1. .S D=0,S=0,Z=0 F S Z=$O(^APCLVRPT(APCLRPT,11,APCLI,11,Z)) Q:Z'=+Z!(G) D
  1. ..I $P($P(^APCLVRPT(APCLRPT,11,APCLI,11,Z,0),U),"-")="" S D=1
  1. ..I $P($P(^APCLVRPT(APCLRPT,11,APCLI,11,Z,0),U),"-")=I S D=1
  1. ..I $P($P(^APCLVRPT(APCLRPT,11,APCLI,11,Z,0),U),"-",2)=R S S=1
  1. ..I $P($P(^APCLVRPT(APCLRPT,11,APCLI,11,Z,0),U),"-",2)="" S S=1
  1. ..I D,S S G=1
  1. I G S X=1,X(1)=""
  1. Q
  1. APPTS ;EP - called from pgen item
  1. ;find all appts for this patient that match, if have at least 1 then use the patient
  1. NEW D,R,I,G,S,Z,Y,B,E,C,N,P
  1. K C
  1. S G=0
  1. S Y=$O(^APCLVRPT(APCLRPT,11,APCLI,11,0))
  1. S B=$P(^APCLVRPT(APCLRPT,11,APCLI,11,Y,0),U),E=$P(^APCLVRPT(APCLRPT,11,APCLI,11,Y,0),U,2),C=$P(^APCLVRPT(APCLRPT,11,APCLI,11,Y,0),U,3,99999)
  1. F R=1:1 S Y=$P(C,U,R) Q:Y="" S C(Y)=""
  1. S S=$$FMADD^XLFDT(B,-1)_".9999" F S S=$O(^DPT(DFN,"S",S)) Q:'S!(G)!($P(S,".")>E) D
  1. .S N=^DPT(DFN,"S",S,0)
  1. .Q:"CP"[$E($P(N,U,2)_" ")
  1. .Q:$P(N,U,7)=4 ;skip unscheduled
  1. .S P=+N
  1. .I $O(C(0)),'$D(C(P)) Q ;not a clinic of interest
  1. .S G=1
  1. I G S X=1,X(1)=""
  1. Q
  1. ;
  1. APPTPRT ;EP - called from pgen item
  1. ;find all pending (non walkin, non chart request) appts for this patient
  1. NEW D,R,I,G,S,Z,Y,B,E,C,N,P
  1. S S=$$FMADD^XLFDT(DT,-1)_".9999" F S S=$O(^DPT(DFN,"S",S)) Q:'S D
  1. .S N=^DPT(DFN,"S",S,0)
  1. .Q:"CP"[$E($P(N,U,2)_" ")
  1. .Q:$P(N,U,7)=4 ;skip unscheduled
  1. .S A="am"
  1. .S T=$E($P(S,".",2)_"000",1,4) S:T>1159 A="pm" S:T>1300 T=T-1200 S:$L(T)=3 T=" "_T S:$E(T)="0" T=" "_$E(T,2,4) S T=$E(T,1,2)_":"_$E(T,3,4)
  1. .S D=$$DATE($P(S,".",1))_" "_T_A
  1. .S C=$P(^SC($P(N,U),0),U)
  1. .S APCLPCNT=APCLPCNT+1
  1. .S APCLPRNM(APCLPCNT)=D_" in "_C
  1. Q
  1. ;
  1. DATE(D) ;EP
  1. I $G(D)="" Q "-"
  1. Q $E(D,4,5)_"/"_$E(D,6,7)_"/"_(1700+$E(D,1,3))
  1. ;
  1. APPTTL ;EP - called from pgen translation logic for appointments
  1. NEW R,B,E,C,Y,Z
  1. S (R,B,E,C,Y,Z)=""
  1. S Y=$O(^APCLVRPT(APCLRPT,11,APCLI,11,0))
  1. S B=$P(^APCLVRPT(APCLRPT,11,APCLI,11,Y,0),U),E=$P(^APCLVRPT(APCLRPT,11,APCLI,11,Y,0),U,2),C=$P(^APCLVRPT(APCLRPT,11,APCLI,11,Y,0),U,3,99999)
  1. W " Date range: ",$$FMTE^XLFDT(B)," - ",$$FMTE^XLFDT(E)," for:"
  1. I C="" W !?15,"ANY (All) Appointment Clinics" S X="" Q
  1. F R=1:1 S Y=$P(C,U,R) Q:Y="" S Z=$P(^SC(44,Y,0),U,1)_";"
  1. W !?5,Z
  1. S X=""
  1. Q
  1. PLDOOTL ;EP - called from pgen translation logic for PL DOO
  1. NEW R,B,E,C,Y,Z
  1. S (R,B,E,C,Y,Z)=""
  1. S Y=$O(^APCLVRPT(APCLRPT,11,APCLI,11,0))
  1. S B=$P(^APCLVRPT(APCLRPT,11,APCLI,11,Y,0),U),E=$P(^APCLVRPT(APCLRPT,11,APCLI,11,Y,0),U,2)
  1. W " Date range: ",$$FMTE^XLFDT(B)," - ",$$FMTE^XLFDT(E)
  1. I '$D(APCLPDOO) W !?15,"for ANY (All) Diagnoses" S X="" Q
  1. W !?15,"for a set of diagnoses including: "
  1. S R=$O(APCLPDOO(R))
  1. W $P(^ICD9(R,0),U)
  1. S X=""
  1. Q
  1. PLDOOPRT ;EP - called from pgen item
  1. NEW A,B,C,D,E
  1. S (A,B,C,D,E)=""
  1. S A=0 F S A=$O(^AUPNPROB("AC",DFN,A)) Q:A'=+A D
  1. .Q:$P(^AUPNPROB(A,0),U,12)="D"
  1. .S D=$$DATE($P(^AUPNPROB(A,0),U,13))
  1. .I $D(APCLPDOO),'$D(APCLPDOO($P(^AUPNPROB(A,0),U,1))) Q
  1. .S E=$$VAL^XBDIQ1(9000011,A,.01)
  1. .S C="",C=D,$E(C,11)=" dx: "_E
  1. .S APCLPCNT=APCLPCNT+1
  1. .S APCLPRNM(APCLPCNT)=C
  1. .Q
  1. Q
  1. PLDOOS ;EP - called from pgen item
  1. ;find all DOO for this patient that match, if have at least 1 then use the patient
  1. NEW D,R,I,G,S,Z,Y,B,E,C,N,P
  1. K C
  1. S G=0
  1. S Y=$O(^APCLVRPT(APCLRPT,11,APCLI,11,0))
  1. S B=$P(^APCLVRPT(APCLRPT,11,APCLI,11,Y,0),U),E=$P(^APCLVRPT(APCLRPT,11,APCLI,11,Y,0),U,2)
  1. S S=0 F S S=$O(^AUPNPROB("AC",DFN,S)) Q:'S!(G) D
  1. .Q:'$D(^AUPNPROB(S,0))
  1. .Q:$P(^AUPNPROB(S,0),U,12)="D"
  1. .S D=$P($G(^AUPNPROB(S,0)),U,13)
  1. .Q:D=""
  1. .I $D(APCLPDOO),'$D(APCLPDOO($P(^AUPNPROB(S,0),U))) Q ;not a DX of interest
  1. .Q:D<B
  1. .Q:D>E
  1. .S G=1
  1. I G S X=1,X(1)=""
  1. Q
  1. ;
  1. ADMPROV(V,F) ;EP - called from vgen
  1. I '$G(V) Q ""
  1. I '$D(^AUPNVSIT(V,0)) Q ""
  1. I $P(^AUPNVSIT(V,0),U,7)'="H" Q ""
  1. S F=$G(F)
  1. I F="" S F="I"
  1. NEW A,M,X
  1. S A=$O(^DGPM("AVISIT",V,0))
  1. I A="" Q ""
  1. S M=0,X="" F S M=$O(^DGPM("CA",A,M)) Q:M'=+M!(X) D
  1. .Q:$P(^DGPM(M,0),U,2)'=6
  1. .S X=$P($G(^DGPM(M,"IHS")),U,2)
  1. .Q
  1. Q $S(X="":"",F="I":X,1:$P(^VA(200,X,0),U))
  1. IMMREGS(P,D,F) ;EP - called to get imm reg status on date D
  1. I '$G(P) Q ""
  1. I '$G(D) S D=DT
  1. I '$D(^BIP(P,0)) Q "" ;not on imm reg
  1. S F=$G(F)
  1. I F="" S F="I"
  1. NEW S
  1. S S=$P(^BIP(P,0),"^",8)
  1. I S="" Q $S(F="I":"A",1:"ACTIVE")
  1. I S>D Q $S(F="I":"A",1:"ACTIVE")
  1. Q $S(F="I":"I",1:"INACTIVE")
  1. VAUDITOR(V,F) ;EP - returns the last person who marked the visit as reviewed/complete
  1. ;if visit is not reviewed/complete returns a null
  1. I $G(V)=""
  1. S F=$G(F)
  1. I F="" S F="I"
  1. I '$D(^AUPNVSIT(V,0)) Q ""
  1. I $P(^AUPNVSIT(V,0),U,11) Q "" ;deleted
  1. I $P($G(^AUPNVSIT(V,11)),U,11)'="R" Q "" ;visit was not reviewed/audited
  1. NEW X,Y,A,L
  1. K Y
  1. S A=""
  1. S X=0 F S X=$O(^AUPNVCA("AD",V,X)) Q:X'=+X D
  1. .Q:'$D(^AUPNVCA(X,0))
  1. .Q:$P(^AUPNVCA(X,0),U,4)'="R"
  1. .S Y($P(^AUPNVCA(X,0),U,1))=X
  1. I '$D(Y) Q ""
  1. ;get last one
  1. S X=0 F S X=$O(Y(X)) Q:X'=+X S L=Y(X)
  1. S Y=$P(^AUPNVCA(L,0),U,5)
  1. I F="I" Q Y
  1. I F="E" Q $P(^VA(200,Y,0),U)
  1. Q ""
  1. HOMELP(P,D) ;EP
  1. ;GET LAST VALUE WITH A YES BEFORE END OF TIME PERIOD
  1. I '$O(^AUPNPAT(P,85,0)) Q "NOT RECORDED"
  1. NEW X,Y,Z,L
  1. S L=""
  1. S X=0 F S X=$O(^AUPNPAT(P,85,"B",X)) Q:X'=+X D
  1. .Q:X>D
  1. .S Y=0 F S Y=$O(^AUPNPAT(P,85,"B",X,Y)) Q:Y'=+Y D
  1. ..I $P($G(^AUPNPAT(P,85,Y,0)),U,2)="" Q
  1. ..S L=Y
  1. I L="" Q "NOT RECORDED"
  1. I $P(^AUPNPAT(P,85,L,0),U,2)="N" Q "NOT HOMELESS"
  1. S Z=""
  1. S Z=$$DATE^APCLVLU($P(^AUPNPAT(P,85,L,0),U,1))_" HOMELESS "
  1. Q Z
  1. HOMEL(P,D) ;EP
  1. ;GET LAST VALUE WITH A YES BEFORE END OF TIME PERIOD
  1. I '$O(^AUPNPAT(P,85,0)) Q "R"
  1. S L=""
  1. S X=0 F S X=$O(^AUPNPAT(P,85,"B",X)) Q:X'=+X D
  1. .Q:X>D
  1. .S Y=0 F S Y=$O(^AUPNPAT(P,85,"B",X,Y)) Q:Y'=+Y D
  1. ..I $P($G(^AUPNPAT(P,85,Y,0)),U,2)="" Q
  1. ..S L=Y
  1. I L="" Q "R"
  1. I $P(^AUPNPAT(P,85,L,0),U,2)="N" Q "N"
  1. Q "H"