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

BUDDRPC2.m

Go to the documentation of this file.
  1. BUDDRPC2 ; IHS/CMI/LAB - UDS TABLE 6 01 Dec 2016 6:10 PM ;
  1. ;;11.0;IHS/RPMS UNIFORM DATA SYSTEM;;JAN 18, 2017;Build 66
  1. ;
  1. ;
  1. DENT(BUDV) ;EP - when only ADA and CPT codes that are not wildcards (*)
  1. S V=0,G="" F S V=$O(^AUPNVDEN("AD",BUDV,V)) Q:V'=+V!(G]"") D
  1. .S A=$P($G(^AUPNVDEN(V,0)),U)
  1. .Q:'A
  1. .S A=$P($G(^AUTTADA(A,0)),U)
  1. .Q:A=""
  1. .I $D(^BUDDTSC(BUDY,12,"B",A)) S G=A
  1. .Q
  1. I G]"" Q G
  1. S G="" S X=0 F S X=$O(^AUPNVCPT("AD",BUDV,X)) Q:X'=+X!(G]"") D
  1. .S Z=$$VAL^XBDIQ1(9000010.18,X,.01)
  1. .I $D(^BUDDTSC(BUDY,8,"B",Z)) S G=Z
  1. .Q
  1. Q G
  1. L26B(BUDV) ;EP
  1. S G="" S X=0 F S X=$O(^AUPNVCPT("AD",BUDV,X)) Q:X'=+X!(G]"") D
  1. .S Z=$$VAL^XBDIQ1(9000010.18,X,.01)
  1. .I $D(^BUDDTSC(BUDY,8,"B",Z)) S G=Z
  1. .Q
  1. I G]"" Q G
  1. S X=0 F S X=$O(^AUPNVPED("AD",BUDV,X)) Q:X'=+X!(G]"") D
  1. .S Z=$P($G(^AUPNVPED(X,0)),U)
  1. .Q:Z=""
  1. .Q:'$D(^AUTTEDT(Z,0))
  1. .S Z=$P(^AUTTEDT(Z,0),U,2)
  1. .I $D(^BUDDTSC(BUDY,10,"B",Z)) S G=Z
  1. Q G
  1. L26C(BUDV) ;EP
  1. ;I $$CLINIC^APCLV(BUDV,"C")=94 Q "CLINIC 94"
  1. S G="" S X=0 F S X=$O(^AUPNVCPT("AD",BUDV,X)) Q:X'=+X!(G]"") D
  1. .S Z=$$VAL^XBDIQ1(9000010.18,X,.01)
  1. .I $D(^BUDDTSC(BUDY,8,"B",Z)) S G=Z
  1. .Q
  1. I G]"" Q G
  1. S X=0 F S X=$O(^AUPNVPED("AD",BUDV,X)) Q:X'=+X!(G]"") D
  1. .S Z=$P($G(^AUPNVPED(X,0)),U)
  1. .Q:Z=""
  1. .Q:'$D(^AUTTEDT(Z,0))
  1. .S Z=$P(^AUTTEDT(Z,0),U,2)
  1. .I $P(Z,"-",1)="TO" S G=Z Q
  1. .I $P(Z,"-",2)="TO" S G=Z Q
  1. .I $P(Z,"-",2)="SHS" S G=Z Q
  1. .I $E($P(Z,"-",1),1,3)="F17" S G=Z Q
  1. I G]"" Q G
  1. S C=$$CLINIC^APCLV(BUDV,"C")
  1. I C,$D(^BUDDTSC(BUDY,11,"B",C)) Q "CLIN "_C
  1. ;S X=0 F S X=$O(^AUPNVPOV("AD",BUDV,X)) Q:X'=+X!(G]"") D
  1. ;.S Z=$$VAL^XBDIQ1(9000010.07,X,.01)
  1. ;.I Z="305.1" S G="305.1"
  1. Q G
  1. L32(BUDV) ;EP
  1. S V=0,G="" F S V=$O(^AUPNVDEN("AD",BUDV,V)) Q:V'=+V!(G]"") D
  1. .S A=$P($G(^AUPNVDEN(V,0)),U)
  1. .Q:'A
  1. .S A=$P($G(^AUTTADA(A,0)),U)
  1. .Q:A=""
  1. .I $E(A,1,2)=21!($E(A,1,2)=22)!($E(A,1,2)=23)!($E(A,1,2)=24)!($E(A,1,2)=25)!($E(A,1,2)=26)!($E(A,1,2)=27)!($E(A,1,2)=28)!($E(A,1,2)=29) S G=A
  1. .Q
  1. I G]"" Q G
  1. S G="" S X=0 F S X=$O(^AUPNVCPT("AD",BUDV,X)) Q:X'=+X!(G]"") D
  1. .S Z=$$VAL^XBDIQ1(9000010.18,X,.01)
  1. .I $E(Z,1,3)="D21"!($E(Z,1,3)="D22")!($E(Z,1,3)="D23")!($E(Z,1,3)="D24")!($E(Z,1,3)="D25")!($E(Z,1,3)="D26")!($E(Z,1,3)="D27")!($E(Z,1,3)="D28")!($E(Z,1,3)="D29") S G=Z
  1. .Q
  1. Q G
  1. L34(BUDV) ;EP
  1. S V=0,G="" F S V=$O(^AUPNVDEN("AD",BUDV,V)) Q:V'=+V!(G]"") D
  1. .S A=$P($G(^AUPNVDEN(V,0)),U)
  1. .Q:'A
  1. .S A=$P($G(^AUTTADA(A,0)),U)
  1. .Q:A=""
  1. .I $E(A)=3!($E(A)=4)!($E(A)=5)!($E(A)=6)!($E(A)=8) S G=A
  1. .Q
  1. I G]"" Q G
  1. S V=0,G="" F S V=$O(^AUPNVCPT("AD",BUDV,V)) Q:V'=+V!(G]"") D
  1. .S A=$$VAL^XBDIQ1(9000010.18,V,.01)
  1. .I $E(A,1,2)="D3"!($E(A,1,2)="D4")!($E(A,1,2)="D5")!($E(A,1,2)="D6")!($E(A,1,2)="D8") S G=A
  1. .Q
  1. Q G
  1. L26(BUDV) ;EP
  1. I $$AGE^AUPNPAT($P(^AUPNVSIT(BUDV,0),U,5),BUDCCAD)>11 Q ""
  1. S C=$$CLINIC^APCLV(BUDV,"C")
  1. I C,$D(^BUDDTSC(BUDY,11,"B",C)) Q "CLIN "_C
  1. S G="" I T S X=0 F S X=$O(^AUPNVCPT("AD",BUDV,X)) Q:X'=+X!(G]"") D
  1. .S Z=$P(^AUPNVCPT(X,0),U),Z=$P($$CPT^ICPTCOD(Z),U,2)
  1. .I $D(^BUDDTSC(BUDY,8,"B",Z)) S G=Z Q
  1. Q G
  1. L26A(BUDV) ;EP
  1. ;age 9-72 months
  1. S G=""
  1. S A=$$AGE^BUDDUTL2(DFN,2,$$VD^APCLV(BUDV))
  1. I A<9 Q G
  1. I A>72 Q G
  1. S G="" S X=0 F S X=$O(^AUPNVCPT("AD",BUDV,X)) Q:X'=+X!(G]"") D
  1. .S Z=$$VAL^XBDIQ1(9000010.18,X,.01)
  1. .I $D(^BUDDTSC(BUDY,8,"B",Z)) S G=Z
  1. .Q
  1. Q G
  1. L26D(BUDV) ;EP
  1. S G=""
  1. S G="" S X=0 F S X=$O(^AUPNVCPT("AD",BUDV,X)) Q:X'=+X!(G]"") D
  1. .S Z=$$VAL^XBDIQ1(9000010.18,X,.01)
  1. .I $D(^BUDDTSC(BUDY,8,"B",Z)) S G=Z
  1. .Q
  1. Q G
  1. T4 ;EP
  1. D HI
  1. D INS
  1. D MIGRANT
  1. D HOMELESS
  1. D SCHOOL
  1. D VET
  1. Q
  1. SHI(V,LV) ;
  1. S BUDT4V(V)=BUDT4V(V)+1
  1. S BUDT4V(6)=BUDT4V(6)+1
  1. I $G(BUDT4IPP) D
  1. .S ^XTMP("BUDDRPT1",BUDJ,BUDH,"T4IPPL",$G(V),$G(LV),BUDCCOM,BUDSEX,BUDAGE,DFN)=$G(LV)
  1. Q
  1. HI ;
  1. S (BUDNIH,BUDTHI,BUDTHIP)=""
  1. S BUDTHIP=$$VALI^XBDIQ1(9000001,DFN,8701)
  1. I BUDTHIP="" S BUDTHIP="Y"
  1. S BUDNIH=+$$VAL^XBDIQ1(9000001,DFN,.35)
  1. I 'BUDNIH D SHI(5,"Unknown") Q ;can't calculate, no number is household
  1. S BUDTHI=$$VAL^XBDIQ1(9000001,DFN,.36)
  1. I 'BUDTHI D SHI(5,"Unknown") Q
  1. I $E(BUDTHI)="0" D SHI(5,"Unknown") Q
  1. I BUDTHIP="M" S BUDTHI=BUDTHI*12
  1. I BUDTHIP="W" S BUDTHI=BUDTHI*52
  1. I BUDTHIP="B" S BUDTHI=BUDTHI*26
  1. S X=$O(^BUDDIL("B",BUDNIH,0))
  1. S P="",T=""
  1. S S=$$VAL^XBDIQ1(9999999.06,BUDSITE,.16)
  1. I S]"" D G N
  1. .I T="ALASKA" S P=3 Q
  1. .I T="HAWAII" S P=4 Q
  1. .S P=2
  1. S P=2
  1. ;
  1. N ;
  1. S Y=$P(^BUDDIL(X,0),U,P)
  1. S Z=BUDTHI/Y
  1. S Z=Z*100
  1. I Z>200 D SHI(4,"Over 200%") Q
  1. I Z>150.9999999 D SHI(3,"151-200%") Q
  1. I Z>100.9999999 D SHI(2,"101-150%") Q
  1. D SHI(1,"100% and below")
  1. Q
  1. INS ;EP
  1. S BUDHAS=0
  1. S BUDHAS=$$PI(DFN,$$VD^APCLV(BUDLASTV))
  1. I BUDHAS=1 D TINS(BUDAGE,11) Q
  1. S BUDHAS=$$MCR(DFN,$$VD^APCLV(BUDLASTV))
  1. I BUDHAS=1 D Q
  1. .D TINS(BUDAGE,9)
  1. .I $$MCD(DFN,$$VD^APCLV(BUDLASTV),"D") D TINS(BUDAGE,"8.9") Q
  1. .I $$MCD(DFN,$$VD^APCLV(BUDLASTV),"K") D TINS(BUDAGE,"8.9") Q
  1. ;S BUDHAS=$$OPI(DFN,$$VD^APCLV(BUDLASTV),"W")
  1. ;I BUDHAS=1 D TINS(BUDAGE,"10a") Q
  1. S BUDHAS=$$RR^AUPNPAT(DFN,$$VD^APCLV(BUDLASTV))
  1. I BUDHAS=1 D TINS(BUDAGE,"10a") Q
  1. S BUDHAS=$$OPI(DFN,$$VD^APCLV(BUDLASTV))
  1. I BUDHAS=1 D TINS(BUDAGE,"10a") Q
  1. S BUDHAS=$$OPIC(DFN,$$VD^APCLV(BUDLASTV),"K")
  1. I BUDHAS=1 D TINS(BUDAGE,"10b") Q
  1. S BUDHAS=$$MCD(DFN,$$VD^APCLV(BUDLASTV),"D")
  1. I BUDHAS=1 D TINS(BUDAGE,"8a") Q
  1. S BUDHAS=$$MCD(DFN,$$VD^APCLV(BUDLASTV),"K")
  1. I BUDHAS=1 D TINS(BUDAGE,"8b") Q
  1. ;now check workman's comp and 3rd party liability
  1. S BUDHAS=$$WC(DFN,BUDBD,BUDED)
  1. I BUDHAS=1 D TINS(BUDAGE,"11") Q
  1. S BUDHAS=$$TPL(DFN,BUDBD,BUDED)
  1. I BUDHAS=1 D TINS(BUDAGE,"10a") Q
  1. ;now check guarantor file
  1. ;S BUDHAS=$$GUAR(DFN,BUDBD,BUDED)
  1. ;I BUDHAS=1 D TINS(BUDAGE,"7") Q
  1. D TINS(BUDAGE,7)
  1. Q
  1. GUAR(P,BD,ED) ;guarantor
  1. NEW X,Y,Z,A
  1. S A=0,Y=0,A=0
  1. S X=0 F S X=$O(^AUPNGUAR(P,1,X)) Q:X'=+X D
  1. .S Y=0 F S Y=$O(^AUPNGUAR(P,1,X,11,Y)) Q:Y'=+Y D
  1. ..I $P(^AUPNGUAR(P,1,X,11,Y,0),U,1)]"",$P(^(0),U,1)>ED Q
  1. ..I $P(^AUPNGUAR(P,1,X,11,Y,0),U,2)]"",$P(^(0),U,2)<BD Q
  1. ..S A=1
  1. Q A
  1. ;
  1. WC(P,BD,ED) ;EP - workman's comp goes in line 11 per Duane
  1. NEW X,Y,Z,SD
  1. ;find an injury in date range
  1. I '$D(^AUPNWC(P,0)) Q ""
  1. S SD=$$FMADD^XLFDT(BD,-1)
  1. ;
  1. S Y=0 ;no wc
  1. F S SD=$O(^AUPNWC(P,11,"B",SD)) Q:SD'=+SD!(SD>ED) D
  1. .Q:SD>ED
  1. .Q:SD<BD
  1. .S X=0 F S X=$O(^AUPNWC(P,11,"B",SD,X)) Q:X'=+X D
  1. ..I $P(^AUPNWC(P,11,X,0),U,12)]"",$P(^AUPNWC(P,11,X,0),U,12)>ED Q
  1. ..I $P(^AUPNWC(P,11,X,0),U,13)]"",$P(^AUPNWC(P,11,X,0),U,13)<BD Q
  1. ..S Y=1
  1. Q Y
  1. ;
  1. TPL(P,BD,ED) ;EP - workman's comp goes in line 11 per Duane
  1. NEW X,Y,Z,SD
  1. ;find an injury in date range
  1. S SD=$$FMADD^XLFDT(BD,-1)
  1. S Y=0 ;no wc
  1. F S SD=$O(^AUPNTPL(P,1,"B",SD)) Q:SD'=+SD!(SD>ED) D
  1. .S X=0 F S X=$O(^AUPNTPL(P,1,"B",SD,X)) Q:X'=+X D
  1. ..I $P(^AUPNTPL(P,1,X,0),U,4)]"",$P(^AUPNTPL(P,1,X,0),U,4)>ED Q
  1. ..I $P(^AUPNTPL(P,1,X,0),U,5)]"",$P(^AUPNTPL(P,1,X,0),U,5)<BD Q
  1. ..S Y=1
  1. Q Y
  1. ;
  1. TINS(A,P) ;
  1. I P="8.9" S $P(BUDT4V("9a"),U,$S(A<18:1,1:2))=$P(BUDT4V("9a"),U,$S(A<18:1,1:2))+1
  1. I P'=8.9 S $P(BUDT4V(P),U,$S(A<18:1,1:2))=$P(BUDT4V(P),U,$S(A<18:1,1:2))+1
  1. I P'=8.9 S $P(BUDT4V(12),U,$S(A<18:1,1:2))=$P(BUDT4V(12),U,$S(A<18:1,1:2))+1
  1. I P="8a"!(P="8b") S $P(BUDT4V(8),U,$S(A<18:1,1:2))=$P(BUDT4V(8),U,$S(A<18:1,1:2))+1
  1. I P="10a"!(P="10b") S $P(BUDT4V(10),U,$S(A<18:1,1:2))=$P(BUDT4V(10),U,$S(A<18:1,1:2))+1
  1. I $G(BUDT4PMI) D
  1. .I P=7 S T="None/Uninsured"
  1. .I P="8a" S T="Regular Medicaid (Title XIX)",P=8.1
  1. .I P="8b" S T="CHIP Medicaid",P=8.2
  1. .I P="9" S T="Medicare"
  1. .I P="10a" S T="Other Public Insurance Non-CHIP",P=10.1
  1. .I P="10b" S T="Other Public Insurance CHIP",P=10.2
  1. .I P="11" S T="Private Insurance"
  1. .I P="8.9" S T="Dually Eligible"
  1. .S ^XTMP("BUDDRPT1",BUDJ,BUDH,"T4PMIS",$G(P),$G(T),BUDAGE,BUDCCOM,BUDSEX,DFN)=""
  1. Q
  1. ;
  1. MCD(P,D,T) ;EP - Is patient P medicaid eligible on date D.
  1. ; I = IEN.
  1. ; J = Node 11 IEN in ^AUPNMCD.
  1. I '$G(P) Q 0
  1. I '$G(D) Q 0
  1. S T=$G(T)
  1. NEW I,J,Y,Z,N
  1. S Y=0,U="^"
  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 I=0 F S I=$O(^AUPNMCD("B",P,I)) Q:I'=+I D
  1. .Q:'$D(^AUPNMCD(I,11))
  1. .S Z=$P(^AUPNMCD(I,0),U,2)
  1. .;get plan name/INSURER TYPE OF PLAN NAME
  1. .S N=$$VALI^XBDIQ1(9000004,I,.11)
  1. .I N S N=$$VALI^XBDIQ1(9999999.18,N,.21)
  1. .I T="K" Q:N'="K"
  1. .I T="" Q:N="K"
  1. .S J=0 F S J=$O(^AUPNMCD(I,11,J)) Q:J'=+J D
  1. ..Q:J>D
  1. ..I $P(^AUPNMCD(I,11,J,0),U,2)]"",$P(^(0),U,2)<D Q
  1. ..S Y=1
  1. ..Q
  1. .Q
  1. ;
  1. MCDX ;
  1. Q Y
  1. PI(P,D) ;EP - Is patient P private insurance eligible on date D. 1= yes, 0=no.
  1. G PI^BUDDRPC3
  1. OPIC(P,D,T) ;EP - Is patient P private insurance eligible on date D. 1= yes, 0=no.
  1. G OPIC^BUDDRPC3
  1. ;
  1. OPI(P,D,T) ;EP - Is patient P private insurance eligible on date D. 1= yes, 0=no.
  1. G OPI^BUDDRPC3
  1. ;
  1. MCR(P,D) ;EP - Is patient P medicare eligible on date D. 1 = yes, 0 = no.
  1. ; I = IEN in ^AUPNMCR multiple.
  1. I '$G(P) Q 0
  1. I '$G(D) Q 0
  1. NEW I,Y
  1. S Y=0,U="^"
  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 I=0
  1. F S I=$O(^AUPNMCR(P,11,I)) Q:I'=+I D
  1. . Q:$P(^AUPNMCR(P,11,I,0),U)>D
  1. . I $P(^AUPNMCR(P,11,I,0),U,2)]"",$P(^(0),U,2)<D Q
  1. . S Y=1
  1. .Q
  1. MCRX ;
  1. I Y Q Y
  1. ;now check Private insurance for MD, MH, R, M
  1. I '$D(^AUPNPRVT(P,11)) G MCRPIX
  1. I $D(^DPT(P,.35)),$P(^(.35),U)]"",$P(^(.35),U)<D G MCRPIX
  1. S I=0,G=0
  1. F S I=$O(^AUPNPRVT(P,11,I)) Q:I'=+I D
  1. . Q:$P(^AUPNPRVT(P,11,I,0),U)=""
  1. . S X=$P(^AUPNPRVT(P,11,I,0),U) Q:X=""
  1. . I $P($G(^AUTNINS(X,2)),U,1)="MC" S G=1
  1. . I $P($G(^AUTNINS(X,2)),U,1)="MMC" S G=1
  1. . I $P($G(^AUTNINS(X,2)),U,1)="MD" S G=1
  1. . I $P($G(^AUTNINS(X,2)),U,1)="MH" S G=1
  1. . I $P($G(^AUTNINS(X,2)),U,1)="R" S G=1
  1. . I 'G Q
  1. . Q:$P(^AUPNPRVT(P,11,I,0),U,6)>D
  1. . I $P(^AUPNPRVT(P,11,I,0),U,7)]"",$P(^(0),U,7)<D Q
  1. . S Y=1
  1. .Q
  1. MCRPIX ;
  1. Q Y
  1. MIGRANT ;
  1. S M=$$MIG(DFN,$$VD^APCLV(BUDLASTV))
  1. Q:M=""
  1. I $P(M,U,1)="M" S BUDT4V(14)=BUDT4V(14)+1,BUDT4V(16)=BUDT4V(16)+1 D
  1. .Q:'$G(BUDT4CHA)
  1. .S T="Migratory" S ^XTMP("BUDDRPT1",BUDJ,BUDH,"T4CHAR",14,T,BUDCCOM,BUDSEX,BUDAGE,DFN)=""
  1. I $P(M,U,1)="S" S BUDT4V(15)=BUDT4V(15)+1,BUDT4V(16)=BUDT4V(16)+1 D
  1. .Q:'$G(BUDT4CHA)
  1. .S T="Seasonal"
  1. .S ^XTMP("BUDDRPT1",BUDJ,BUDH,"T4CHAR",15,T,BUDCCOM,BUDSEX,BUDAGE,DFN)=""
  1. Q
  1. HOMELESS ;
  1. S H=$$HOMEL(DFN,$$VD^APCLV(BUDLASTV))
  1. I H="" Q
  1. I $P(H,U,1)="H" S BUDT4V(17)=BUDT4V(17)+1,BUDT4V(23)=BUDT4V(23)+1,T="Homeless (Type: Homeless Shelter)",L=17
  1. I $P(H,U,1)="T" S BUDT4V(18)=BUDT4V(18)+1,BUDT4V(23)=BUDT4V(23)+1,T="Homeless (Type: Transitional)",L=18
  1. I $P(H,U,1)="D" S BUDT4V(19)=BUDT4V(19)+1,BUDT4V(23)=BUDT4V(23)+1,T="Homeless (Type: Doubling Up)",L=19
  1. I $P(H,U,1)="S" S BUDT4V(20)=BUDT4V(20)+1,BUDT4V(23)=BUDT4V(23)+1,T="Homeless (Type: Street)",L=20
  1. I $P(H,U,1)="O" S BUDT4V(21)=BUDT4V(21)+1,BUDT4V(23)=BUDT4V(23)+1,T="Homeless (Type: Other)",L=21
  1. I $P(H,U,1)="U" S BUDT4V(22)=BUDT4V(22)+1,BUDT4V(23)=BUDT4V(23)+1,T="Homeless (Type: Unknown)",L=22
  1. S ^XTMP("BUDDRPT1",BUDJ,BUDH,"T4CHAR",L,T,BUDCCOM,BUDSEX,BUDAGE,DFN)=""
  1. Q
  1. VET ;
  1. S V=$$VALI^XBDIQ1(2,DFN,1901)
  1. I V="Y" S T="Veteran" S BUDT4V(25)=BUDT4V(25)+1,^XTMP("BUDDRPT1",BUDJ,BUDH,"T4CHAR",25,T,BUDCCOM,BUDSEX,BUDAGE,DFN)=""
  1. Q
  1. SCHOOL ;IF ALL VISITS ARE CLINIC SCHOOL??
  1. ;if any visit from 356a is clinic school set to yes
  1. NEW X,V,Y,S
  1. S S=""
  1. S X=0 F S X=$O(^TMP($J,"VISITSUDSPT",X)) Q:X'=+X I $$CLINIC^APCLV(X,"C")=22 S S=1
  1. Q:S=""
  1. S BUDT4V(24)=$G(BUDT4V(24))+1
  1. S ^XTMP("BUDDRPT1",BUDJ,BUDH,"T4CHAR",24,"School Based Patient",BUDCCOM,BUDSEX,BUDAGE,DFN)=""
  1. Q
  1. MIG(P,D) ;EP
  1. ;GET LAST VALUE WITH A YES BEFORE END OF TIME PERIOD
  1. I '$O(^AUPNPAT(P,84,0)) Q ""
  1. NEW X,Y,Z,L
  1. S L=""
  1. S X=0 F S X=$O(^AUPNPAT(P,84,"B",X)) Q:X'=+X D
  1. .Q:X>D ;AFTER LAST VISIT
  1. .S Y=0 F S Y=$O(^AUPNPAT(P,84,"B",X,Y)) Q:Y'=+Y D
  1. ..I $P($G(^AUPNPAT(P,84,Y,0)),U,2)="" Q
  1. ..;I $P($G(^AUPNPAT(P,84,Y,0)),U,3)="" Q
  1. ..S L=Y
  1. I L="" Q ""
  1. I $P(^AUPNPAT(P,84,L,0),U,2)="N" Q ""
  1. Q $S($P(^AUPNPAT(P,84,L,0),U,3)]"":$P(^AUPNPAT(P,84,L,0),U,3),1:"")_"^"_$P(^AUPNPAT(P,84,L,0),U,1)
  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 ""
  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 ""
  1. I $P(^AUPNPAT(P,85,L,0),U,2)="N" Q ""
  1. Q $S($P(^AUPNPAT(P,85,L,0),U,3)]"":$P(^AUPNPAT(P,85,L,0),U,3),1:"U")_"^"_$P(^AUPNPAT(P,85,L,0),U,1)