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

BGP9CU.m

Go to the documentation of this file.
  1. BGP9CU ; IHS/CMI/LAB - calc CMS measures 26 Sep 2004 11:28 AM 04 May 2008 2:38 PM ;
  1. ;;9.0;IHS CLINICAL REPORTING;**1**;JUL 01, 2009
  1. ;
  1. CHESTXRY(P,BDATE,EDATE,BGPY) ;EP
  1. K BGPY
  1. I '$G(P) Q ""
  1. I $G(EDATE)="" Q ""
  1. I $G(BDATE)="" S BDATE=$$FMADD^XLFDT(EDATE,-365)
  1. NEW C,BD,ED,X,Y,D,G,V,I
  1. S C=0
  1. ;go through visits in a date range for this patient, check cpts
  1. S ED=(9999999-EDATE)-1,BD=9999999-BDATE,G=0
  1. S T=$O(^ATXAX("B","BGP CMS CHEST XRAY CPT",0))
  1. I 'T W BGPBOMB
  1. F S ED=$O(^AUPNVSIT("AA",P,ED)) Q:ED=""!($P(ED,".")>BD) D
  1. .S V=0 F S V=$O(^AUPNVSIT("AA",P,ED,V)) Q:V'=+V D
  1. ..Q:'$D(^AUPNVSIT(V,0))
  1. ..S X=0 F S X=$O(^AUPNVCPT("AD",V,X)) Q:X'=+X D
  1. ...I $$ICD^ATXCHK($P(^AUPNVCPT(X,0),U),T,1) S C=C+1,BGPY(ED,C)=$$DATE^BGP9UTL(9999999-$P(ED,"."))_" "_$P($$CPT^ICPTCOD($P(^AUPNVCPT(X,0),U),(9999999-$P(ED,"."))),U,2)_" "_$P($$CPT^ICPTCOD($P(^AUPNVCPT(X,0),U),(9999999-$P(ED,"."))),U,3)
  1. ..;now go through v rads
  1. ..S X=0 F S X=$O(^AUPNVRAD("AD",V,X)) Q:X'=+X D
  1. ...S I=$P(^AUPNVRAD(X,0),U) Q:I="" S I=$P($G(^RAMIS(71,I,0)),U,9) Q:I=""
  1. ...I $$ICD^ATXCHK(I,T,1) S C=C+1,BGPY(ED,C)=$$DATE^BGP9UTL(9999999-$P(ED,"."))_" "_$P($$CPT^ICPTCOD(I,(9999999-$P(ED,"."))),U,2)_" "_$P($$CPT^ICPTCOD(I,(9999999-$P(ED,"."))),U,3)_" Impression: "_$P($G(^AUPNVRAD(X,11)),U,1)
  1. ..; now v tran
  1. ..S X=0 F S X=$O(^AUPNVTC("AD",V,X)) Q:X'=+X D
  1. ...S I=$P(^AUPNVTC(X,0),U,7)
  1. ...Q:I=""
  1. ...I $$ICD^ATXCHK(I,T,1) S C=C+1,BGPY(ED,C)=$$DATE^BGP9UTL(9999999-$P(ED,"."))_" "_$P($$CPT^ICPTCOD(I,(9999999-$P(ED,"."))),U,2)_" "_$P($$CPT^ICPTCOD(I,(9999999-$P(ED,"."))),U,3)
  1. ..;now check V PROCEDURE
  1. ..S T=$O(^ATXAX("B","BGP CMS CHEST XRAY PROC",0))
  1. ..I 'T W BGPBOMB
  1. ..S X=0 F S X=$O(^AUPNVPRC("AD",V,X)) Q:X'=+X D
  1. ...I $$ICD^ATXCHK($P(^AUPNVPRC(X,0),U),T,0) S C=C+1,BGPY(ED,C)=$$DATE^BGP9UTL(9999999-$P(ED,"."))_" "_$P($$ICDOP^ICDCODE($P(^AUPNVPRC(X,0),U),(9999999-$P(ED,"."))),U,2)_" "_$$VAL^XBDIQ1(9000010.08,X,.04)
  1. ..;now check V POV
  1. ..S X=0 F S X=$O(^AUPNVPOV("AD",V,X)) Q:X'=+X D
  1. ...S I=$P($G(^AUPNVPOV(X,0)),U)
  1. ...Q:'I
  1. ...I $P($$ICDDX^ICDCODE(I),U,2)="V72.5",$$UP^XLFSTR($$VAL^XBDIQ1(9000010.07,X,.04))["CHEST" S C=C+1,BGPY(ED,C)=$$DATE^BGP9UTL(9999999-$P(ED,"."))_" "_$P($$ICDDX^ICDCODE(I,(9999999-$P(ED,"."))),U,2)_" "_$$VAL^XBDIQ1(9000010.07,X,.04)
  1. ...Q
  1. ..Q
  1. .Q
  1. Q
  1. ;
  1. CTSCAN(P,BDATE,EDATE,BGPY) ;EP
  1. K BGPY
  1. I '$G(P) Q ""
  1. I $G(EDATE)="" Q ""
  1. I $G(BDATE)="" S BDATE=$$FMADD^XLFDT(EDATE,-365)
  1. NEW C,BD,ED,X,Y,D,G,V,I
  1. S C=0
  1. ;go through visits in a date range for this patient, check cpts
  1. S ED=(9999999-EDATE)-1,BD=9999999-BDATE,G=0
  1. S T=$O(^ATXAX("B","BGP CMS CT SCAN CPT",0))
  1. I 'T W BGPBOMB
  1. F S ED=$O(^AUPNVSIT("AA",P,ED)) Q:ED=""!($P(ED,".")>BD) D
  1. .S V=0 F S V=$O(^AUPNVSIT("AA",P,ED,V)) Q:V'=+V D
  1. ..Q:'$D(^AUPNVSIT(V,0))
  1. ..S X=0 F S X=$O(^AUPNVCPT("AD",V,X)) Q:X'=+X D
  1. ...I $$ICD^ATXCHK($P(^AUPNVCPT(X,0),U),T,1) S C=C+1,BGPY(ED,C)=$$DATE^BGP9UTL(9999999-$P(ED,"."))_" "_$P($$CPT^ICPTCOD($P(^AUPNVCPT(X,0),U),(9999999-$P(ED,"."))),U,2)_" "_$P($$CPT^ICPTCOD($P(^AUPNVCPT(X,0),U),(9999999-$P(ED,"."))),U,3)
  1. ..;now go through v rads
  1. ..S X=0 F S X=$O(^AUPNVRAD("AD",V,X)) Q:X'=+X D
  1. ...S I=$P(^AUPNVRAD(X,0),U) Q:I="" S I=$P($G(^RAMIS(71,I,0)),U,9) Q:I=""
  1. ...I $$ICD^ATXCHK(I,T,1) S C=C+1,BGPY(ED,C)=$$DATE^BGP9UTL(9999999-$P(ED,"."))_" "_$P($$CPT^ICPTCOD(I,(9999999-$P(ED,"."))),U,2)_" "_$P($$CPT^ICPTCOD(I,(9999999-$P(ED,"."))),U,3)_" Impression: "_$P($G(^AUPNVRAD(X,11)),U,1)
  1. ..; now v tran
  1. ..S X=0 F S X=$O(^AUPNVTC("AD",V,X)) Q:X'=+X D
  1. ...S I=$P(^AUPNVTC(X,0),U,7)
  1. ...Q:I=""
  1. ...I $$ICD^ATXCHK(I,T,1) S C=C+1,BGPY(ED,C)=$$DATE^BGP9UTL(9999999-$P(ED,"."))_" "_$P($$CPT^ICPTCOD(I,(9999999-$P(ED,"."))),U,2)_" "_$P($$CPT^ICPTCOD(I,(9999999-$P(ED,"."))),U,3)
  1. ..;now check V PROCEDURE
  1. ..S T=$O(^ATXAX("B","BGP CMS CT SCAN PROC",0))
  1. ..I 'T W BGPBOMB
  1. ..S X=0 F S X=$O(^AUPNVPRC("AD",V,X)) Q:X'=+X D
  1. ...I $$ICD^ATXCHK($P(^AUPNVPRC(X,0),U),T,0) S C=C+1,BGPY(ED,C)=$$DATE^BGP9UTL(9999999-$P(ED,"."))_" "_$P($$ICDOP^ICDCODE($P(^AUPNVPRC(X,0),U),(9999999-$P(ED,"."))),U,2)_" "_$$VAL^XBDIQ1(9000010.08,X,.04)
  1. .Q
  1. Q
  1. ;
  1. ABGPO(P,BD,ED,BGPY) ;EP
  1. ;get all O2 measurements on or after admission date
  1. NEW BGPC,X,N,E,Y,T,D,C,BGPLT,L,J
  1. S BGPC=0
  1. K BGPG S Y="BGPG(",X=P_"^ALL MEAS O2;DURING "_$$FMTE^XLFDT(BD)_"-"_$$FMTE^XLFDT(ED) S E=$$START1^APCLDF(X,Y)
  1. S X=0 F S X=$O(BGPG(X)) Q:X'=+X S Y=+$P(BGPG(X),U,4) D
  1. .S N=$P(^AUPNVMSR(Y,0),U,4)
  1. .S BGPC=BGPC+1,BGPY(BGPC)="MEASUREMENT O2: "_$$DATE^BGP9UTL($P(BGPG(X),U))_" value: "_N
  1. .Q
  1. ;now check for cpts
  1. S T=$O(^ATXAX("B","BGP CMS ABG CPTS",0))
  1. S X=0 F S X=$O(^AUPNVCPT("AC",P,X)) Q:X'=+X D
  1. .Q:'$D(^AUPNVCPT(X,0))
  1. .S C=$P(^AUPNVCPT(X,0),U)
  1. .Q:'$$ICD^ATXCHK(C,T,1)
  1. .S D=$P(^AUPNVCPT(X,0),U,3),D=$P($P($G(^AUPNVSIT(D,0)),U),".")
  1. .Q:D<BD
  1. .Q:D>ED
  1. .S BGPC=BGPC+1,BGPY(BGPC)="CPT: "_$P($$CPT^ICPTCOD(C),U,2)_" "_$P($$CPT^ICPTCOD(C,D),U,3)_" "_$$DATE^BGP9UTL(D)
  1. .Q
  1. ;now check v tran
  1. S T=$O(^ATXAX("B","BGP CMS ABG CPTS",0))
  1. S X=0 F S X=$O(^AUPNVTC("AC",P,X)) Q:X'=+X D
  1. .Q:'$D(^AUPNVTC(X,0))
  1. .S C=$P(^AUPNVTC(X,0),U,7)
  1. .Q:C=""
  1. .Q:'$$ICD^ATXCHK(C,T,1)
  1. .S D=$P(^AUPNVTC(X,0),U,3),D=$P($P($G(^AUPNVSIT(D,0)),U),".")
  1. .Q:D<BD
  1. .Q:D>ED
  1. .S BGPC=BGPC+1,BGPY(BGPC)="TRAN CODE CPT: "_$P($$CPT^ICPTCOD(C),U,2)_" "_$P($$CPT^ICPTCOD(C,D),U,3)_" "_$$DATE^BGP9UTL(D)
  1. .Q
  1. ;now check for lab tests
  1. S T=$O(^ATXAX("B","BGP CMS ABG LOINC",0))
  1. S BGPLT=$O(^ATXLAB("B","BGP CMS ABG TESTS",0))
  1. S B=9999999-BD,E=9999999-ED S D=E-1 F S D=$O(^AUPNVLAB("AE",P,D)) Q:D'=+D!(D>B) D
  1. .S L=0 F S L=$O(^AUPNVLAB("AE",P,D,L)) Q:L'=+L D
  1. ..S X=0 F S X=$O(^AUPNVLAB("AE",P,D,L,X)) Q:X'=+X D
  1. ...Q:'$D(^AUPNVLAB(X,0))
  1. ...I BGPLT,$P(^AUPNVLAB(X,0),U),$D(^ATXLAB(BGPLT,21,"B",$P(^AUPNVLAB(X,0),U))) S BGPC=BGPC+1,BGPY(BGPC)="LAB: "_$$VAL^XBDIQ1(9000010.09,X,.01)_" "_$$DATE^BGP9UTL((9999999-D))_" value: "_$P(^AUPNVLAB(X,0),U,4) Q
  1. ...Q:'T
  1. ...S J=$P($G(^AUPNVLAB(X,11)),U,13) Q:J=""
  1. ...Q:'$$LOINC^BGP9D21(J,T)
  1. ...S BGPC=BGPC+1,BGPY(BGPC)="LAB: "_$$VAL^XBDIQ1(9000010.09,X,.01)_" "_$$DATE^BGP9UTL((9999999-D))_" value: "_$P(^AUPNVLAB(X,0),U,4)
  1. ...Q
  1. Q
  1. ADMDX(H,T) ;EP
  1. S T=$O(^ATXAX("B",T,0))
  1. I 'T Q ""
  1. NEW I
  1. S I=$P($G(^AUPNVINP(H,0)),U,12)
  1. I '$$ICD^ATXCHK(I,T,9) Q ""
  1. Q 1_U_$P($$ICDDX^ICDCODE(I),U,2)
  1. ;
  1. ERPNEU(P,BDATE,EDATE,T) ;EP - did patient have an er visit from bdate to edate without a DX in taxonomy T?
  1. S T=$O(^ATXAX("B",T,0))
  1. I 'T Q ""
  1. NEW BGPG,A,B,E,G,X,I,BGPC
  1. K BGPG,BGPY
  1. S BGPC=0
  1. S A="BGPG(",B=P_"^ALL VISITS;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE),E=$$START1^APCLDF(B,A)
  1. I '$D(BGPG(1)) Q "0^Patient had no ER Visit"
  1. K BGPC S X=0,(G,E,B)="" F S X=$O(BGPG(X)) Q:X'=+X S V=$P(BGPG(X),U,5) D
  1. .Q:'$D(^AUPNVSIT(V,0))
  1. .Q:'$P(^AUPNVSIT(V,0),U,9)
  1. .Q:$P(^AUPNVSIT(V,0),U,11)
  1. .Q:$$CLINIC^APCLV(V,"C")'=30
  1. .S B=1,BGPC(V)=""
  1. I 'B Q "0^Patient had no ER Visit"
  1. S (V,G,E)="" F S V=$O(BGPC(V)) Q:V=""!(E) D
  1. .S A=0,G="" F S A=$O(^AUPNVPOV("AD",V,A)) Q:A'=+A D
  1. ..S I=$P($G(^AUPNVPOV(A,0)),U) Q:'I
  1. ..I $$ICD^ATXCHK(I,T,9) S E=1 Q
  1. .I 'E S G=0_U_"ER Visit: "_$$DATE^BGP9UTL($P($P(^AUPNVSIT(V,0),U),"."))
  1. I E Q "1^No"
  1. Q G
  1. ;
  1. PNEUMODX(V) ;EP
  1. NEW C,T,X,G,I,C
  1. S C=$$PRIMPOV^APCLV(V,"I")
  1. I C="" Q "" ;no primary dx
  1. S T=$O(^ATXAX("B","BGP CMS PNEUMONIA DXS",0))
  1. I $$ICD^ATXCHK(C,T,9) Q $P($$ICDDX^ICDCODE(C),U,2)_" (Primary) "_$$PRIMPOV^APCLV(V,"N") ;primary dx of pneumonia
  1. ;PRIMARY of resp failure and seconday of pneumonia
  1. S T=$O(^ATXAX("B","BGP CMS SEPTI/RESP FAIL DXS",0))
  1. I '$$ICD^ATXCHK(C,T,9) Q "" ;resp failure not primary pov
  1. S C=$P($$ICDDX^ICDCODE(C),U,2)_" (Primary) "_$$PRIMPOV^APCLV(V,"N")
  1. S T=$O(^ATXAX("B","BGP CMS PNEUMONIA DXS",0))
  1. S (X,G)="" F S X=$O(^AUPNVPOV("AD",V,X)) Q:X'=+X!(G]"") D
  1. .Q:'$D(^AUPNVPOV(X,0))
  1. .Q:$P(^AUPNVPOV(X,0),U,12)="P"
  1. .S I=$P(^AUPNVPOV(X,0),U)
  1. .Q:'$$ICD^ATXCHK(I,T,9)
  1. .S G=$P($$ICDDX^ICDCODE(I),U,2)_" (Secondary) "_$$VAL^XBDIQ1(9000010.07,X,.04)
  1. .Q
  1. I G]"" Q C_U_G
  1. Q ""
  1. ;
  1. LVADEX(P,BD,ED) ;EP
  1. NEW X
  1. S X=$$LASTPRC^BGP9UTL1(P,"BGP LVAD/HEART TRANSPLANT PROC",BD,ED)
  1. Q X
  1. ;
  1. HFDX(V) ;EP
  1. NEW C,T
  1. S C=$$PRIMPOV^APCLV(V,"I")
  1. I C="" Q 0 ;no primary dx
  1. S T=$O(^ATXAX("B","BGP CMS HEART FAILURE DXS",0))
  1. I 'T Q
  1. Q $$ICD^ATXCHK(C,T,9)
  1. ;
  1. COMFORT(P,BDATE,EDATE) ;EP - any V66.7 on this visit? or during hospital stay?
  1. NEW X
  1. S X=$$LASTDXI^BGP9UTL1(DFN,"V66.7",BDATE,EDATE)
  1. I X="" Q ""
  1. Q $P(X,U,2)_" "_$$DATE^BGP9UTL($P(X,U,3))
  1. ;
  1. DODA(V,H) ;EP was discharge day of or day after admission
  1. I $G(V)="" Q 0
  1. I $G(H)="" Q 0
  1. I $P($P(^AUPNVSIT(V,0),U),".")=$P($P(^AUPNVINP(H,0),U),".") Q 1
  1. NEW X
  1. S X=$$FMADD^XLFDT($P($P(^AUPNVSIT(V,0),U),"."),1)
  1. I X=$P($P(^AUPNVINP(H,0),U),".") Q 1
  1. Q 0
  1. ;
  1. DDA(V,H) ;EP - was patient discharged on the day of arrival
  1. I $G(V)="" Q 0
  1. I $G(H)="" Q 0
  1. I $P($P(^AUPNVSIT(V,0),U),".")=$P($P(^AUPNVINP(H,0),U),".") Q 1
  1. Q 0
  1. ;
  1. DEATHAMA(H) ;EP was discharge death or AMA?
  1. NEW X
  1. S X=$P(^AUPNVINP(H,0),U,6)
  1. I X="" Q 0
  1. S X=$P($G(^DG(405.1,X,"IHS")),U,1)
  1. I X=3 Q 1
  1. I X=4 Q 1
  1. I X=5 Q 1
  1. I X=6 Q 1
  1. I X=7 Q 1
  1. Q 0
  1. ;
  1. REGDSCH(H) ;EP
  1. NEW X
  1. S X=$P(^AUPNVINP(H,0),U,6)
  1. I X="" Q 0
  1. S X=$P($G(^DG(405.1,X,"IHS")),U,1)
  1. I X=1 Q 1
  1. Q 0
  1. ;
  1. AMA(H,D) ;EP
  1. NEW X
  1. I $P($P($G(^AUPNVINP(H,0)),U),".")=D Q 0
  1. S X=$P(^AUPNVINP(H,0),U,6)
  1. I X="" Q 0
  1. S X=$P($G(^DG(405.1,X,"IHS")),U,1)
  1. I X=3 Q 1
  1. Q 0
  1. ;
  1. AMIDX(V) ;EP - AMI DX?
  1. NEW C,T
  1. S C=$$PRIMPOV^APCLV(V,"I")
  1. I C="" Q 0 ;no primary dx
  1. S T=$O(^ATXAX("B","BGP CMS AMI DXS",0))
  1. I 'T Q
  1. Q $$ICD^ATXCHK(C,T,9)
  1. ;
  1. EXPIRED(H,D) ;
  1. NEW X
  1. I $P($P($G(^AUPNVINP(H,0)),U),".")=D Q 0
  1. S X=$P(^AUPNVINP(H,0),U,6)
  1. I X="" Q 0
  1. S X=$P($G(^DG(405.1,X,"IHS")),U,1)
  1. I X=4!(X=5)!(X=6)!(X=7) Q 1
  1. Q 0
  1. ;
  1. DSCH(H) ;EP - RETURN DSCH DATE IN INTERNAL FORMAT
  1. Q $P($P(^AUPNVINP(H,0),U),".")
  1. ;
  1. TRANSIN(H) ;EP
  1. NEW X
  1. S X=$P(^AUPNVINP(H,0),U,7)
  1. I X="" Q 0
  1. S X=$P($G(^DG(405.1,X,"IHS")),U,1)
  1. I X=2!(X=3) Q 1
  1. Q 0
  1. ;
  1. TRANS(H) ;EP - was this a transfer out?
  1. NEW X
  1. S X=$P(^AUPNVINP(H,0),U,6)
  1. I X="" Q 0
  1. S X=$P($G(^DG(405.1,X,"IHS")),U,1)
  1. I X=2 Q 1
  1. Q 0
  1. ;
  1. CTR(X,Y) ;EP - Center X in a field Y wide.
  1. Q $J("",$S($D(Y):Y,1:80)-$L(X)\2)_X
  1. ;----------
  1. EOP ;EP - End of page.
  1. Q:$E(IOST)'="C"
  1. Q:$D(ZTQUEUED)!'(IOT="TRM")!$D(IO("S"))
  1. NEW DIR
  1. K DIRUT,DFOUT,DLOUT,DTOUT,DUOUT
  1. S DIR(0)="E" D ^DIR
  1. Q
  1. ;----------
  1. USR() ;EP - Return name of current user from ^VA(200.
  1. Q $S($G(DUZ):$S($D(^VA(200,DUZ,0)):$P(^(0),U),1:"UNKNOWN"),1:"DUZ UNDEFINED OR 0")
  1. ;----------
  1. ;
  1. GETMEDS(P,BGPMBD,BGPMED,TAX1,TAX2,TAX3,EXP,ADM,BGPDNAME,BGPC,LAST) ;EP
  1. K ^TMP($J,"MEDS")
  1. S LAST=$G(LAST)
  1. NEW BGPC1,T,T1,T2,X,Y,G,D,C,BGPZ
  1. S BGPDNAME=$G(BGPDNAME)
  1. S BGPC1=0 K BGPZ
  1. S Y="^TMP($J,""MEDS"",",X=P_"^ALL MED;DURING "_$$FMTE^XLFDT(BGPMBD)_"-"_$$FMTE^XLFDT(BGPMED) S E=$$START1^APCLDF(X,Y)
  1. S T="" I TAX1]"" S T=$O(^ATXAX("B",TAX1,0))
  1. S T1="" I TAX2]"" S T1=$O(^ATXAX("B",TAX2,0))
  1. S T2="" I TAX3]"" S T2=$O(^ATXAX("B",TAX3,0))
  1. S X=0 F S X=$O(^TMP($J,"MEDS",X)) Q:X'=+X S Y=+$P(^TMP($J,"MEDS",X),U,4) D
  1. .Q:'$D(^AUPNVMED(Y,0))
  1. .S G=0
  1. .S D=$P(^AUPNVMED(Y,0),U)
  1. .S C=$P($G(^PSDRUG(D,0)),U,2)
  1. .I C]"",T2,$D(^ATXAX(T2,21,"B",C)) S G=1
  1. .S C=$P($G(^PSDRUG(D,2)),U,4)
  1. .I C]"",T1,$D(^ATXAX(T1,21,"B",C)) S G=1
  1. .I T,$D(^ATXAX(T,21,"B",D)) S G=1
  1. .I BGPDNAME]"",$P(^PSDRUG(D,0),U)[BGPDNAME S G=1
  1. .Q:'G
  1. .I $G(EXP) Q:$$EXP(Y,ADM)
  1. .I G=1 D
  1. ..S N=$P(^TMP($J,"MEDS",X),U,2)_" "_$P(^AUPNVMED(Y,0),U,5)_" qty: "_$P(^AUPNVMED(Y,0),U,6)_" days: "_$P(^AUPNVMED(Y,0),U,7)_" "_$$DATE^BGP7UTL($P(^TMP($J,"MEDS",X),U))
  1. ..I $P(^AUPNVMED(Y,0),U,8)]"" S N=N_" D/C "_$$DATE^BGP9UTL($P(^AUPNVMED(Y,0),U,8))
  1. ..S BGPZ($P(^TMP($J,"MEDS",X),U,2),(9999999-$P(^TMP($J,"MEDS",X),U)))=N
  1. .Q
  1. I 'LAST D
  1. .S N="" F S N=$O(BGPZ(N)) Q:N="" D
  1. ..S D=0,D=$O(BGPZ(N,D)) I '$D(BGPY("B",N,D)) S BGPC=BGPC+1,BGPY(BGPC)=BGPZ(N,D),BGPY("B",N,D)=""
  1. I LAST D
  1. .S N="" F S N=$O(BGPZ(N)) Q:N="" D
  1. ..S D=0,D=$O(BGPZ(N,D)) S BGPY(D)=BGPZ(N,D)
  1. ..S X=$O(BGPY(0)) S X=BGPY(X)
  1. ..K BGPY
  1. ..S BGPY=X
  1. Q
  1. EXP(Y,ADM) ;
  1. NEW G,V,N,Z,E
  1. S G=0 ;not expired
  1. S N=$P($G(^AUPNVMED(Y,0)),U,7) ;DAYS SUPPLY
  1. S V=$P(^AUPNVMED(Y,0),U,3)
  1. S Z=$S($D(^PSRX("APCC",Y)):$O(^(Y,0)),1:0) I Z D
  1. .S E=$P($G(^PSRX(Z,2)),U,6)
  1. .I E<ADM S G=1 ;prescription expired prior to admission date
  1. I $$FMADD^XLFDT($P($P(^AUPNVSIT(V,0),U),"."),N)<ADM S G=1
  1. Q G
  1. DSCHINST(P,BDATE,EDATE) ;EP - discharge instructions
  1. ;patient ed code HF-DCHL
  1. NEW BGPG,X,Y,T,D,%,E
  1. S Y="BGPG("
  1. S X=P_"^ALL EDUC;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,Y)
  1. I '$D(BGPG) Q ""
  1. S (X,D)=0,%="",T="" F S X=$O(BGPG(X)) Q:X'=+X!(%]"") D
  1. .S T=$P(^AUPNVPED(+$P(BGPG(X),U,4),0),U)
  1. .Q:'T
  1. .Q:'$D(^AUTTEDT(T,0))
  1. .S E=$P(^AUTTEDT(T,0),U,2)
  1. .I E="HF-DCHL" S %=$P(^AUTTEDT(T,0),U,1)_" "_$$DATE^BGP9UTL($P(BGPG(X),U)) Q
  1. Q %