BGP0D3 ; IHS/CMI/LAB - measure 11 17 Oct 2008 12:40 PM ;
;;10.0;IHS CLINICAL REPORTING;**1**;JUN 18, 2010
;
;
I10 ;EP
S (BGPN1,BGPN2,BGPN3,BGPN4,BGPN5,BGPN6,BGPN7,BGPD1,BGPD2,BGPD3,BGPD4,BGPD5,BGPD6,BGPD7)=0
S (BGPSEAL,BGPSEALD)=""
K BGPSEALS,BGPSELDS
D SEAL^BGP0D3A(DFN,BGPBDATE,BGPEDATE)
I $P(BGPSEAL,U,2)]"" S BGPN5=$P(BGPSEAL,U,1) G I101
S BGPN1=$P(BGPSEAL,U)
I BGPAGEB<12 S BGPN2=BGPN1
I BGPAGEB>11,BGPAGEB<19 S BGPN3=BGPN1
I BGPAGEB>18 S BGPN4=BGPN1
I101 ;
;get new sealant definition 2010 gpra dev
I BGPAGEB>5,BGPAGEB<16 S BGPD7=1 S BGPSEALD=$$SEALDEV^BGP0D3A(DFN,BGPBDATE,BGPEDATE) I BGPSEALD S BGPN7=1
S BGPVALUE="UP|||"_+BGPN1_" sealants"
I 'BGPN1,BGPN5 S BGPVALUE=BGPVALUE_": "_$$DATE^BGP0UTL($P(BGPSEAL,U,2))_" "_$P(BGPSEAL,U,3)
I BGPN1 S BGPVALUE=BGPVALUE_": " S X=0 F S X=$O(BGPSEALS(X)) Q:X'=+X S D=0 F S D=$O(BGPSEALS(X,D)) Q:D'=+D S BGPVALUE=BGPVALUE_$S(X=1:"",1:"; ")_$$DATE^BGP0UTL(D)_" "_BGPSEALS(X,D)
I BGPD7 S BGPVALUD=$S(BGPD7:"UP6-15",1:"")_"|||" I BGPN7 S BGPVALUD=BGPVALUD_" "_$P(BGPSEALD,U,2)
K BGPSEAL,BGPSEALD
Q
I11 ;EP
S (BGPN1,BGPN2,BGPN3,BGPN4,BGPN5,BGPD1,BGPD2)=0
I '$G(BGPACTUP) S BGPSTOP=1 Q
I BGPACTUP S BGPD1=1
S BGPFLUOR=$$TF^BGP0D3A(DFN,BGPBDATE,BGPEDATE)
I $P(BGPFLUOR,U,3)["Refused" S BGPN2=1 G I111
S BGPN1=$P(BGPFLUOR,U)
I BGPN1>4 S BGPN1=4
I BGPAGEB>1,BGPAGEB<16 S BGPD2=1,BGPN3=$S(BGPN1:1,1:0)
;I BGPD1,'BGPD2 S BGPD3=1
I111 ;
S BGPVALUE="UP|||"_+BGPN1_" topical fluoride" I +BGPN1 S BGPVALUE=BGPVALUE_": " F X=2:1:5 I $P(BGPFLUOR,U,X)]"" S BGPVALUE=BGPVALUE_$S(X>2:"; ",1:"")_$$DATE^BGP0UTL($P($P(BGPFLUOR,U,X),"|",1))_" "_$P($P(BGPFLUOR,U,X),"|",2)
I BGPN2 S BGPVALUE=BGPVALUE_": "_$$DATE^BGP0UTL($P(BGPFLUOR,U,2))_" "_$P(BGPFLUOR,U,3)
S BGPVALUD="UP 2-15|||"_+BGPN1_" topical fluoride" I +BGPN1 S BGPVALUD=BGPVALUD_": " F X=2:1:5 I $P(BGPFLUOR,U,X)]"" S BGPVALUD=BGPVALUD_$S(X>2:"; ",1:"")_$$DATE^BGP0UTL($P($P(BGPFLUOR,U,X),"|",1))_" "_$P($P(BGPFLUOR,U,X),"|",2)
K ^TMP($J,"A"),BGPFLUOR
Q
I12 ;EP
S (BGPN1,BGPN2,BGPN3,BGPN4,BGPN7,BGPD1,BGPD2,BGPD3,BGPD4,BGPD5,BGPD6,BGPD7)=0
I BGPAGEB>49,BGPACTUP S BGPD5=1
I BGPAGEB>49,BGPAGEB<65,BGPACTUP S BGPD6=1
I BGPAGEB>64,BGPACTUP S BGPD7=1
I BGPDMD2 S BGPD4=1
I BGPAGEB>49,BGPACTCL S BGPD1=1
I BGPAGEB>49,BGPAGEB<65,BGPACTCL S BGPD2=1
I BGPAGEB>64,BGPACTCL S BGPD3=1
I '(BGPD1+BGPD2+BGPD3+BGPD4+BGPD5+BGPD6+BGPD7) S BGPSTOP=1 Q
S BGPVALUE=$$FLU(DFN,,BGPEDATE) ;set to date of flu shot
I $P(BGPVALUE,U,3)=1 S BGPN1=1
I $P(BGPVALUE,U,3)=2 S BGPN2=1
I $P(BGPVALUE,U,3)=3 S BGPN3=1,BGPN1=1
I BGPN1,'BGPN2 S BGPN7=1
S BGPDV=""
I BGPRTYPE=4 S BGPDV=$S(BGPD5:"UP",1:"") D
.I BGPD1 S BGPDV=BGPDV_$S(BGPDV]"":",AC",1:"AC")
.I BGPD4 S BGPDV=BGPDV_$S(BGPDV]"":",AD",1:"AD")
I BGPRTYPE=1 S BGPDV=$S(BGPD3!(BGPD2):"AC",1:"") I BGPD4 S BGPDV=BGPDV_$S(BGPDV]"":";AD",1:"AD")
I BGPRTYPE=3!(BGPRTYPE=8) S BGPDV="AC"
I BGPRTYPE=7 S BGPDV="AD"
S BGPVALUE=BGPDV_"|||"_$$DATE^BGP0UTL($P(BGPVALUE,U,1))_" "_$P(BGPVALUE,U,2)
K BGPLFLU,BGPDV
Q
I13 ;EP
S (BGPN1,BGPN2,BGPN3,BGPN4,BGPN5,BGPN6,BGPN7,BGPD1,BGPD2,BGPD3)=0
I BGPAGEB>64,BGPACTUP S BGPD3=1
I BGPDMD2 S BGPD2=1
I BGPAGEB>64,BGPACTCL S BGPD1=1
I '(BGPD1+BGPD2+BGPD3) S BGPSTOP=1 Q
I BGPRTYPE=3,'BGPD1 S BGPSTOP=1 Q
PN ;EP - called from elder
S BGPVALUE=$$PNEU^BGP0D31(DFN,$$DOB^AUPNPAT(DFN),BGPEDATE) ;set to date of PNEU shot
;I BGPVALUE]"" S BGPN1=1
I $P(BGPVALUE,U,3)=1!($P(BGPVALUE,U,3)=3) S BGPN1=1
I $P(BGPVALUE,U,3)=2 S BGPN2=1 ;REF
I $P(BGPVALUE,U,3)=3 S BGPN3=1 ;NMI
S BGPVAL=$$PNEU^BGP0D31(DFN,$$FMADD^XLFDT(BGPEDATE,-(5*365)),BGPEDATE)
I $P(BGPVAL,U,3)=1!($P(BGPVAL,U,3)=3) S BGPN4=1 ;HAD IN PAST 5 YEARS SO "UP TO DATE"
I $P(BGPVAL,U,3)=2 S BGPN5=1
I $P(BGPVAL,U,3)=3 S BGPN6=1
S BGPN7=0 I BGPAGEB>65 S BGPN7=$$PNEU^BGP0D31(DFN,$$FMADD^XLFDT($$DOB^AUPNPAT(DFN),+(65*365)),BGPEDATE) I $P(BGPN7,U,3)=1!($P(BGPN7,U,3)=3) S BGPN4=1 ;over 65 and had one after 65
I BGPAGEB<65,BGPN1 S BGPN4=1 ;anyone under and had 1 ever
S BGPDV=""
I BGPRTYPE=4 S BGPDV=$S(BGPD3:"UP",1:"") D
.I BGPD1 S BGPDV=BGPDV_$S(BGPDV]"":",AC",1:"AC")
.I BGPD2 S BGPDV=BGPDV_$S(BGPDV]"":",AD",1:"AD")
I BGPRTYPE=1 S BGPDV=$S(BGPD1:"AC",1:"") I BGPD2 S BGPDV=BGPDV_$S(BGPDV]"":",AD",1:"AD")
I BGPRTYPE=7 S BGPDV="AD"
I BGPRTYPE=3!(BGPRTYPE=5) S BGPVALUE="AC"_"|||"_$$DATE^BGP0UTL($P(BGPVALUE,U,1))_" "_$P(BGPVALUE,U,2) I 1
E S BGPVALUE=BGPDV_"|||"_$$DATE^BGP0UTL($P(BGPVALUE,U,1))_" "_$P(BGPVALUE,U,2)_$S(BGPVALUE]"":" (ever)",1:"")_" "_$$DATE^BGP0UTL($P(BGPVAL,U,1))_" "_$P(BGPVAL,U,2)_$S(BGPVAL]"":" (past 5 yrs)",1:"")
K BGPLPNU
Q
I15 ;EP
K BGPN1,BGPN2,BGPN3,BGPN4,BGPVALUE,BGPPAP,BGPI7,BGPI7DA,BGPI7DB
S BGPI7DA=0,BGPI7DB=0,BGPI7DC=0,BGPN1=0,BGPN2=0,BGPN3=0
S BGPI7=$$DEN7(DFN,BGPAGEB,BGPAGEE,BGPSEX,BGPEDATE)
I BGPACTUP,BGPI7 S BGPI7DA=1
I BGPACTCL,BGPI7 S BGPI7DB=1
I BGPACTCL,BGPI7,BGPAGEB>23,BGPAGEE<65 S BGPI7DC=1
I 'BGPI7DA,'BGPI7DB,'BGPI7DC S BGPSTOP=1 Q ;not in either denom so quit
S BGPPAP=$$PAP(DFN,BGPEDATE,3)
S BGPN1=0 I $P(BGPPAP,U)=1 S BGPN1=1
I $P(BGPPAP,U,3)="ref" S BGPN2=1
I BGPN1,'BGPN2 S BGPN3=1
I BGPRTYPE'=3 S BGPVALUE=$S(BGPI7DA:"UP",1:"")_$S(BGPI7DB:",AC",1:"")_"|||"_$$DATE^BGP0UTL($P(BGPPAP,U,2))_" "_$P(BGPPAP,U,3)
I BGPRTYPE=3 S BGPVALUE="AC|||"_$$DATE^BGP0UTL($P(BGPPAP,U,2))_" "_$P(BGPPAP,U,3)
K BGPLPAP
Q
;
FLU(P,BD,ED,FORE) ;EP
NEW BGPG,BGPLFLU,EDATE,X,E,%,I,T,J,V,G,D,R
K BGPG
S BGPLFLU=""
I $G(BD)="" S BD=$$FMADD^XLFDT(ED,-365)
S EDATE=$$FMTE^XLFDT(ED),BDATE=$$FMTE^XLFDT(BD)
S X=P_"^LAST IMM 88;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(X,"BGPG(")
I $D(BGPG(1)) S BGPLFLU=$P(BGPG(1),U)_U_"Imm 88"
S X=P_"^LAST IMM 111;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(X,"BGPG(")
I $D(BGPG(1)),$P(BGPLFLU,U)<$P(BGPG(1),U) S BGPLFLU=$P(BGPG(1),U)_U_"Imm 111"
S X=P_"^LAST IMM 15;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(X,"BGPG(")
I $D(BGPG(1)),$P(BGPLFLU,U)<$P(BGPG(1),U) S BGPLFLU=$P(BGPG(1),U)_U_"Imm 15"
S X=P_"^LAST IMM 16;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(X,"BGPG(")
I $D(BGPG(1)),$P(BGPLFLU,U)<$P(BGPG(1),U) S BGPLFLU=$P(BGPG(1),U)_U_"Imm 16"
S X=P_"^LAST IMM 135;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(X,"BGPG(")
I $D(BGPG(1)),$P(BGPLFLU,U)<$P(BGPG(1),U) S BGPLFLU=$P(BGPG(1),U)_U_"Imm 135"
K BGPG S %=P_"^LAST DX V04.8;DURING "_BDATE_"-"_EDATE,E=$$START1^APCLDF(%,"BGPG(")
I $D(BGPG(1)) I $P(BGPLFLU,U)<$P(BGPG(1),U,1) S BGPLFLU=$P(BGPG(1),U,1)_U_"V04.8"
K BGPG S %=P_"^LAST DX V04.81;DURING "_BDATE_"-"_EDATE,E=$$START1^APCLDF(%,"BGPG(")
I $D(BGPG(1)) D
.S T=$O(^ATXAX("B","SURVEILLANCE CPT H1N1",0))
.S X=0 F S X=$O(BGPG(X)) Q:X'=+X D
..S V=$P(BGPG(X),U,5)
..S G=0
..S J=0 F S J=$O(^AUPNVCPT("AD",V,J)) Q:J'=+J S I=$P(^AUPNVCPT(J,0),U,1) I $$ICD^ATXCHK(I,T,1)!($$H1(I)) S G=1
..Q:G=1
..I $P(BGPLFLU,U)<$P(BGPG(X),U,1) S BGPLFLU=$P(BGPG(1),U,1)_U_"V04.81"
K BGPG S %=P_"^LAST DX V06.6;DURING "_BDATE_"-"_EDATE,E=$$START1^APCLDF(%,"BGPG(")
I $D(BGPG(1)) D
.S T=$O(^ATXAX("B","SURVEILLANCE CPT H1N1",0))
.S X=0 F S X=$O(BGPG(X)) Q:X'=+X D
..S V=$P(BGPG(X),U,5)
..S G=0
..S J=0 F S J=$O(^AUPNVCPT("AD",V,J)) Q:J'=+J S I=$P(^AUPNVCPT(J,0),U,1) I $$ICD^ATXCHK(I,T,1)!($$H1(I)) S G=1
..Q:G=1
..I $P(BGPLFLU,U)<$P(BGPG(X),U,1) S BGPLFLU=$P(BGPG(1),U,1)_U_"V06.06"
S T=$O(^ATXAX("B","BGP CPT FLU",0))
I T D I X]"" I $P(BGPLFLU,U)<X S BGPLFLU=$P(X,U)_U_"CPT "_$P(X,U,2)
.S X=$$CPT^BGP0DU(P,,ED,T,5) I X]"" Q
.S X=$$TRAN^BGP0DU(P,,ED,T,5)
I BGPLFLU]"" Q BGPLFLU_U_1
;contraindication new in 8.0
F BGPZ=15,16,88,111,135 S X=$$FLCONT(P,BGPZ,$$DOB^AUPNPAT(P),ED) Q:X]""
I X]"" Q X_U_3
;NMI refusal
S G=$$NMIREF^BGP0UTL1(P,9999999.14,$O(^AUTTIMM("C",88,0)),$$DOB^AUPNPAT(P),ED)
I $P(G,U)=1 Q $P(G,U,2)_U_"NMI Refusal"_U_3
S G=$$NMIREF^BGP0UTL1(P,9999999.14,$O(^AUTTIMM("C",111,0)),$$DOB^AUPNPAT(P),ED)
I $P(G,U)=1 Q $P(G,U,2)_U_"NMI Refusal"_U_3
S G=$$NMIREF^BGP0UTL1(P,9999999.14,$O(^AUTTIMM("C",15,0)),$$DOB^AUPNPAT(P),ED)
I $P(G,U)=1 Q $P(G,U,2)_U_"NMI Refusal"_U_3
S G=$$NMIREF^BGP0UTL1(P,9999999.14,$O(^AUTTIMM("C",16,0)),$$DOB^AUPNPAT(P),ED)
I $P(G,U)=1 Q $P(G,U,2)_U_"NMI Refusal"_U_3
S G=$$NMIREF^BGP0UTL1(P,9999999.14,$O(^AUTTIMM("C",135,0)),$$DOB^AUPNPAT(P),ED)
I $P(G,U)=1 Q $P(G,U,2)_U_"NMI Refusal"_U_3
I $G(FORE) Q ""
S G=$$REFUSAL^BGP0UTL1(P,9999999.14,$O(^AUTTIMM("C",88,0)),$$FMADD^XLFDT(ED,-365),ED)
I $P(G,U)=1 Q $P(G,U,2)_U_"Refused"_U_2
S G=$$REFUSAL^BGP0UTL1(P,9999999.14,$O(^AUTTIMM("C",111,0)),$$FMADD^XLFDT(ED,-365),ED)
I $P(G,U)=1 Q $P(G,U,2)_U_"Refused"_U_2
S G=$$REFUSAL^BGP0UTL1(P,9999999.14,$O(^AUTTIMM("C",15,0)),$$FMADD^XLFDT(ED,-365),ED)
I $P(G,U)=1 Q $P(G,U,2)_U_"Refused"_U_2
S G=$$REFUSAL^BGP0UTL1(P,9999999.14,$O(^AUTTIMM("C",16,0)),$$FMADD^XLFDT(ED,-365),ED)
I $P(G,U)=1 Q $P(G,U,2)_U_"Refused"_U_2
S G=$$REFUSAL^BGP0UTL1(P,9999999.14,$O(^AUTTIMM("C",135,0)),$$FMADD^XLFDT(ED,-365),ED)
I $P(G,U)=1 Q $P(G,U,2)_U_"Refused"_U_2
S (X,G)=0,Y=$O(^AUTTIMM("C",88,0)) F S X=$O(^BIPC("AC",P,Y,X)) Q:X'=+X!(G) D
.S R=$P(^BIPC(X,0),U,3)
.Q:R=""
.Q:'$D(^BICONT(R,0))
.Q:$P(^BICONT(R,0),U,1)'["Refusal"
.S D=$P(^BIPC(X,0),U,4)
.Q:D=""
.Q:$P(^BIPC(X,0),U,4)<BD
.Q:$P(^BIPC(X,0),U,4)>ED
.S G=1
I G Q $P(G,U,2)_U_"Refused Imm pkg"_U_2
S (X,G)=0,Y=$O(^AUTTIMM("C",111,0)) I Y F S X=$O(^BIPC("AC",P,Y,X)) Q:X'=+X!(G) D
.S R=$P(^BIPC(X,0),U,3)
.Q:R=""
.Q:'$D(^BICONT(R,0))
.Q:$P(^BICONT(R,0),U,1)'["Refusal"
.S D=$P(^BIPC(X,0),U,4)
.Q:D=""
.Q:$P(^BIPC(X,0),U,4)<BD
.Q:$P(^BIPC(X,0),U,4)>ED
.S G=1
I G Q $P(G,U,2)_U_"Refused Imm pkg"_U_2
S (X,G)=0,Y=$O(^AUTTIMM("C",15,0)) I Y F S X=$O(^BIPC("AC",P,Y,X)) Q:X'=+X!(G) D
.S R=$P(^BIPC(X,0),U,3)
.Q:R=""
.Q:'$D(^BICONT(R,0))
.Q:$P(^BICONT(R,0),U,1)'["Refusal"
.S D=$P(^BIPC(X,0),U,4)
.Q:D=""
.Q:$P(^BIPC(X,0),U,4)<BD
.Q:$P(^BIPC(X,0),U,4)>ED
.S G=1
I G Q $P(G,U,2)_U_"Refused Imm pkg"_U_2
S (X,G)=0,Y=$O(^AUTTIMM("C",16,0)) I Y F S X=$O(^BIPC("AC",P,Y,X)) Q:X'=+X!(G) D
.S R=$P(^BIPC(X,0),U,3)
.Q:R=""
.Q:'$D(^BICONT(R,0))
.Q:$P(^BICONT(R,0),U,1)'["Refusal"
.S D=$P(^BIPC(X,0),U,4)
.Q:D=""
.Q:$P(^BIPC(X,0),U,4)<BD
.Q:$P(^BIPC(X,0),U,4)>ED
.S G=1
I G Q $P(G,U,2)_U_"Refused Imm pkg"_U_2
S (X,G)=0,Y=$O(^AUTTIMM("C",135,0)) I Y F S X=$O(^BIPC("AC",P,Y,X)) Q:X'=+X!(G) D
.S R=$P(^BIPC(X,0),U,3)
.Q:R=""
.Q:'$D(^BICONT(R,0))
.Q:$P(^BICONT(R,0),U,1)'["Refusal"
.S D=$P(^BIPC(X,0),U,4)
.Q:D=""
.Q:$P(^BIPC(X,0),U,4)<BD
.Q:$P(^BIPC(X,0),U,4)>ED
.S G=1
I G Q $P(G,U,2)_U_"Refused Imm pkg"_U_2
Q ""
FLCONT(P,C,BD,ED) ;EP
NEW X,G,Y,R,D
S X=0,G="",Y=$O(^AUTTIMM("C",C,0)) I Y F S X=$O(^BIPC("AC",P,Y,X)) Q:X'=+X!(G) D
.S R=$P(^BIPC(X,0),U,3)
.Q:R=""
.Q:'$D(^BICONT(R,0))
.S D=$P(^BIPC(X,0),U,4)
.Q:D=""
.Q:$P(^BIPC(X,0),U,4)<BD
.Q:$P(^BIPC(X,0),U,4)>ED
.I $P(^BICONT(R,0),U,1)="Egg Allergy" S G=D_U_"Contraindication: Egg Allergy"
.I $P(^BICONT(R,0),U,1)="Anaphylaxis" S G=D_U_"Contraindication: Anaphylaxis"
Q G
BI() ;
Q $S($O(^AUTTIMM(0))>100:1,1:0)
DEN7(P,AGEB,AGEE,SEX,EDATE) ;EP
I SEX'="F" Q 0
I AGEB<21 Q 0
I AGEE>64 Q 0
I $$HYSTER(P,EDATE) Q 0
Q 1
H1(I) ;
I $P($G(^ICPT(I,0)),U,1)=90664 Q 1
I $P($G(^ICPT(I,0)),U,1)=90666 Q 1
I $P($G(^ICPT(I,0)),U,1)=90667 Q 1
I $P($G(^ICPT(I,0)),U,1)=90668 Q 1
Q ""
PAP(P,EDATE,YEARS,REFUSAL) ;EP
K BGPC
S BGPC=""
S BGPLPAP=""
S BDATE=$$FMADD^XLFDT(EDATE,-(365*YEARS))
S T=$O(^ATXAX("B","BGP PAP LOINC CODES",0))
S BGPLT=$O(^ATXLAB("B","BGP PAP SMEAR TAX",0))
S B=9999999-BDATE,E=9999999-EDATE S D=E-1 F S D=$O(^AUPNVLAB("AE",P,D)) Q:D'=+D!(D>B)!(BGPC]"") D
.S L=0 F S L=$O(^AUPNVLAB("AE",P,D,L)) Q:L'=+L!(BGPC]"") D
..S X=0 F S X=$O(^AUPNVLAB("AE",P,D,L,X)) Q:X'=+X!(BGPC]"") D
...Q:'$D(^AUPNVLAB(X,0))
...S Z=$P(^AUPNVLAB(X,0),U),Z=$P($G(^LAB(60,Z,0)),U) I Z="PAP SMEAR" S BGPC="1^"_(9999999-D)_"^Lab" Q
...I BGPLT,$P(^AUPNVLAB(X,0),U),$D(^ATXLAB(BGPLT,21,"B",$P(^AUPNVLAB(X,0),U))) S BGPC="1^"_(9999999-D)_"^Lab" Q
...Q:'T
...S J=$P($G(^AUPNVLAB(X,11)),U,13) Q:J=""
...Q:'$$LOINC(J,T)
...S BGPC="1^"_(9999999-D)_"^Lab-loinc" Q
...Q
S BGPLPAP=BGPC
K BGP
S T="BGP PAP SMEAR DXS"
I BGPRTYPE=3 S T="BGP HEDIS PAP SMEAR DXS"
S X=$$LASTDX^BGP0UTL1(P,T,BDATE,EDATE) I X,$P(BGPLPAP,U,2)<$P(X,U,3) S BGPLPAP="1^"_$P(X,U,3)_"^"_$P(X,U,2)
K BGP S %=P_"^LAST PROCEDURE 91.46;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE),E=$$START1^APCLDF(%,"BGP(")
I $D(BGP(1)),$P(BGPLPAP,U,2)<$P(BGP(1),U,1) S BGPLPAP="1^"_$P(BGP(1),U)_"^91.46"
S T=$O(^ATXAX("B","BGP CPT PAP",0))
I T D I X]"",$P(BGPLPAP,U,2)<$P(X,U,1) S BGPLPAP="1^"_$P(X,U)_"^"_$P(X,U,2)
.S X=$$CPT^BGP0DU(P,$$FMADD^XLFDT(EDATE,-(YEARS*365)),EDATE,T,5) I X]"" Q
.S X=$$TRAN^BGP0DU(P,$$FMADD^XLFDT(EDATE,-(YEARS*365)),EDATE,T,5)
S T="PAP SMEAR",T=$O(^BWPN("B",T,0))
I T D I X]"",$P(BGPLPAP,U,2)<X S BGPLPAP="1^"_X_"^WH"
.S X=$$WH^BGP0DU(P,$$FMADD^XLFDT(EDATE,-(YEARS*365)),EDATE,T,3)
I BGPLPAP]"" Q BGPLPAP
I $G(REFUSAL) Q "" ;no refusals counted
S T=$$REFUSAL^BGP0UTL1(P,60,$O(^LAB(60,"B","PAP SMEAR",0)),$$FMADD^XLFDT(EDATE,-365),EDATE)
I T Q "1^"_$P(T,U,2)_"^ref"
S BGPLT=$O(^ATXLAB("B","BGP PAP SMEAR TAX",0))
I 'BGPLT Q 0
S X=0,T="" F S X=$O(^ATXLAB(BGPLT,21,X)) Q:X'=+X!($P(T,U)=1) D
.S T=""
.S Y=$P(^ATXLAB(BGPLT,21,X,0),U)
.Q:'Y
.S T=$$REFUSAL^BGP0UTL1(P,60,Y,$$FMADD^XLFDT(EDATE,-365),EDATE)
I T Q 1_"^"_$P(T,U,2)_"^ref"
Q ""
LOINC(A,B) ;
NEW %
S %=$P($G(^LAB(95.3,A,9999999)),U,2)
I %]"",$D(^ATXAX(B,21,"B",%)) Q 1
S %=$P($G(^LAB(95.3,A,0)),U)_"-"_$P($G(^LAB(95.3,A,0)),U,15)
I $D(^ATXAX(B,21,"B",%)) Q 1
Q ""
HYSTER(P,EDATE) ;EP
I '$G(P) Q ""
S X=$$LASTPRC^BGP0UTL1(P,"BGP HYSTERECTOMY PROCEDURES",$$DOB^AUPNPAT(P),EDATE)
I X Q 1
S T="HYSTERECTOMY",T=$O(^BWPN("B",T,0))
I T D I X]"" Q 1
.S X=$$WH^BGP0DU(P,$$DOB^AUPNPAT(P),EDATE,T,2)
S T=$O(^ATXAX("B","BGP HYSTERECTOMY CPTS",0))
I T D I X]"" Q 1
.S X=$$CPT^BGP0DU(P,$P(^DPT(P,0),U,3),EDATE,T,3) I X]"" Q
.S X=$$TRAN^BGP0DU(P,$P(^DPT(P,0),U,3),EDATE,T,3)
S X=$$LASTDX^BGP0UTL1(P,"BGP HYSTERECTOMY DXS",$$DOB^AUPNPAT(P),EDATE)
I X Q 1
Q ""
BGP0D3 ; IHS/CMI/LAB - measure 11 17 Oct 2008 12:40 PM ;
+1 ;;10.0;IHS CLINICAL REPORTING;**1**;JUN 18, 2010
+2 ;
+3 ;
I10 ;EP
+1 SET (BGPN1,BGPN2,BGPN3,BGPN4,BGPN5,BGPN6,BGPN7,BGPD1,BGPD2,BGPD3,BGPD4,BGPD5,BGPD6,BGPD7)=0
+2 SET (BGPSEAL,BGPSEALD)=""
+3 KILL BGPSEALS,BGPSELDS
+4 DO SEAL^BGP0D3A(DFN,BGPBDATE,BGPEDATE)
+5 IF $PIECE(BGPSEAL,U,2)]""
SET BGPN5=$PIECE(BGPSEAL,U,1)
GOTO I101
+6 SET BGPN1=$PIECE(BGPSEAL,U)
+7 IF BGPAGEB<12
SET BGPN2=BGPN1
+8 IF BGPAGEB>11
IF BGPAGEB<19
SET BGPN3=BGPN1
+9 IF BGPAGEB>18
SET BGPN4=BGPN1
I101 ;
+1 ;get new sealant definition 2010 gpra dev
+2 IF BGPAGEB>5
IF BGPAGEB<16
SET BGPD7=1
SET BGPSEALD=$$SEALDEV^BGP0D3A(DFN,BGPBDATE,BGPEDATE)
IF BGPSEALD
SET BGPN7=1
+3 SET BGPVALUE="UP|||"_+BGPN1_" sealants"
+4 IF 'BGPN1
IF BGPN5
SET BGPVALUE=BGPVALUE_": "_$$DATE^BGP0UTL($PIECE(BGPSEAL,U,2))_" "_$PIECE(BGPSEAL,U,3)
+5 IF BGPN1
SET BGPVALUE=BGPVALUE_": "
SET X=0
FOR
SET X=$ORDER(BGPSEALS(X))
IF X'=+X
QUIT
SET D=0
FOR
SET D=$ORDER(BGPSEALS(X,D))
IF D'=+D
QUIT
SET BGPVALUE=BGPVALUE_$SELECT(X=1:"",1:"; ")_$$DATE^BGP0UTL(D)_" "_BGPSEALS(X,D)
+6 IF BGPD7
SET BGPVALUD=$SELECT(BGPD7:"UP6-15",1:"")_"|||"
IF BGPN7
SET BGPVALUD=BGPVALUD_" "_$PIECE(BGPSEALD,U,2)
+7 KILL BGPSEAL,BGPSEALD
+8 QUIT
I11 ;EP
+1 SET (BGPN1,BGPN2,BGPN3,BGPN4,BGPN5,BGPD1,BGPD2)=0
+2 IF '$GET(BGPACTUP)
SET BGPSTOP=1
QUIT
+3 IF BGPACTUP
SET BGPD1=1
+4 SET BGPFLUOR=$$TF^BGP0D3A(DFN,BGPBDATE,BGPEDATE)
+5 IF $PIECE(BGPFLUOR,U,3)["Refused"
SET BGPN2=1
GOTO I111
+6 SET BGPN1=$PIECE(BGPFLUOR,U)
+7 IF BGPN1>4
SET BGPN1=4
+8 IF BGPAGEB>1
IF BGPAGEB<16
SET BGPD2=1
SET BGPN3=$SELECT(BGPN1:1,1:0)
+9 ;I BGPD1,'BGPD2 S BGPD3=1
I111 ;
+1 SET BGPVALUE="UP|||"_+BGPN1_" topical fluoride"
IF +BGPN1
SET BGPVALUE=BGPVALUE_": "
FOR X=2:1:5
IF $PIECE(BGPFLUOR,U,X)]""
SET BGPVALUE=BGPVALUE_$SELECT(X>2:"; ",1:"")_$$DATE^BGP0UTL($PIECE($PIECE(BGPFLUOR,U,X),"|",1))_" "_$PIECE($PIECE(BGPFLUOR,U,X),"|",2)
+2 IF BGPN2
SET BGPVALUE=BGPVALUE_": "_$$DATE^BGP0UTL($PIECE(BGPFLUOR,U,2))_" "_$PIECE(BGPFLUOR,U,3)
+3 SET BGPVALUD="UP 2-15|||"_+BGPN1_" topical fluoride"
IF +BGPN1
SET BGPVALUD=BGPVALUD_": "
FOR X=2:1:5
IF $PIECE(BGPFLUOR,U,X)]""
SET BGPVALUD=BGPVALUD_$SELECT(X>2:"; ",1:"")_$$DATE^BGP0UTL($PIECE($PIECE(BGPFLUOR,U,X),"|",1))_" "_$PIECE($PIECE(BGPFLUOR,U,X),"|",2)
+4 KILL ^TMP($JOB,"A"),BGPFLUOR
+5 QUIT
I12 ;EP
+1 SET (BGPN1,BGPN2,BGPN3,BGPN4,BGPN7,BGPD1,BGPD2,BGPD3,BGPD4,BGPD5,BGPD6,BGPD7)=0
+2 IF BGPAGEB>49
IF BGPACTUP
SET BGPD5=1
+3 IF BGPAGEB>49
IF BGPAGEB<65
IF BGPACTUP
SET BGPD6=1
+4 IF BGPAGEB>64
IF BGPACTUP
SET BGPD7=1
+5 IF BGPDMD2
SET BGPD4=1
+6 IF BGPAGEB>49
IF BGPACTCL
SET BGPD1=1
+7 IF BGPAGEB>49
IF BGPAGEB<65
IF BGPACTCL
SET BGPD2=1
+8 IF BGPAGEB>64
IF BGPACTCL
SET BGPD3=1
+9 IF '(BGPD1+BGPD2+BGPD3+BGPD4+BGPD5+BGPD6+BGPD7)
SET BGPSTOP=1
QUIT
+10 ;set to date of flu shot
SET BGPVALUE=$$FLU(DFN,,BGPEDATE)
+11 IF $PIECE(BGPVALUE,U,3)=1
SET BGPN1=1
+12 IF $PIECE(BGPVALUE,U,3)=2
SET BGPN2=1
+13 IF $PIECE(BGPVALUE,U,3)=3
SET BGPN3=1
SET BGPN1=1
+14 IF BGPN1
IF 'BGPN2
SET BGPN7=1
+15 SET BGPDV=""
+16 IF BGPRTYPE=4
SET BGPDV=$SELECT(BGPD5:"UP",1:"")
Begin DoDot:1
+17 IF BGPD1
SET BGPDV=BGPDV_$SELECT(BGPDV]"":",AC",1:"AC")
+18 IF BGPD4
SET BGPDV=BGPDV_$SELECT(BGPDV]"":",AD",1:"AD")
End DoDot:1
+19 IF BGPRTYPE=1
SET BGPDV=$SELECT(BGPD3!(BGPD2):"AC",1:"")
IF BGPD4
SET BGPDV=BGPDV_$SELECT(BGPDV]"":";AD",1:"AD")
+20 IF BGPRTYPE=3!(BGPRTYPE=8)
SET BGPDV="AC"
+21 IF BGPRTYPE=7
SET BGPDV="AD"
+22 SET BGPVALUE=BGPDV_"|||"_$$DATE^BGP0UTL($PIECE(BGPVALUE,U,1))_" "_$PIECE(BGPVALUE,U,2)
+23 KILL BGPLFLU,BGPDV
+24 QUIT
I13 ;EP
+1 SET (BGPN1,BGPN2,BGPN3,BGPN4,BGPN5,BGPN6,BGPN7,BGPD1,BGPD2,BGPD3)=0
+2 IF BGPAGEB>64
IF BGPACTUP
SET BGPD3=1
+3 IF BGPDMD2
SET BGPD2=1
+4 IF BGPAGEB>64
IF BGPACTCL
SET BGPD1=1
+5 IF '(BGPD1+BGPD2+BGPD3)
SET BGPSTOP=1
QUIT
+6 IF BGPRTYPE=3
IF 'BGPD1
SET BGPSTOP=1
QUIT
PN ;EP - called from elder
+1 ;set to date of PNEU shot
SET BGPVALUE=$$PNEU^BGP0D31(DFN,$$DOB^AUPNPAT(DFN),BGPEDATE)
+2 ;I BGPVALUE]"" S BGPN1=1
+3 IF $PIECE(BGPVALUE,U,3)=1!($PIECE(BGPVALUE,U,3)=3)
SET BGPN1=1
+4 ;REF
IF $PIECE(BGPVALUE,U,3)=2
SET BGPN2=1
+5 ;NMI
IF $PIECE(BGPVALUE,U,3)=3
SET BGPN3=1
+6 SET BGPVAL=$$PNEU^BGP0D31(DFN,$$FMADD^XLFDT(BGPEDATE,-(5*365)),BGPEDATE)
+7 ;HAD IN PAST 5 YEARS SO "UP TO DATE"
IF $PIECE(BGPVAL,U,3)=1!($PIECE(BGPVAL,U,3)=3)
SET BGPN4=1
+8 IF $PIECE(BGPVAL,U,3)=2
SET BGPN5=1
+9 IF $PIECE(BGPVAL,U,3)=3
SET BGPN6=1
+10 ;over 65 and had one after 65
SET BGPN7=0
IF BGPAGEB>65
SET BGPN7=$$PNEU^BGP0D31(DFN,$$FMADD^XLFDT($$DOB^AUPNPAT(DFN),+(65*365)),BGPEDATE)
IF $PIECE(BGPN7,U,3)=1!($PIECE(BGPN7,U,3)=3)
SET BGPN4=1
+11 ;anyone under and had 1 ever
IF BGPAGEB<65
IF BGPN1
SET BGPN4=1
+12 SET BGPDV=""
+13 IF BGPRTYPE=4
SET BGPDV=$SELECT(BGPD3:"UP",1:"")
Begin DoDot:1
+14 IF BGPD1
SET BGPDV=BGPDV_$SELECT(BGPDV]"":",AC",1:"AC")
+15 IF BGPD2
SET BGPDV=BGPDV_$SELECT(BGPDV]"":",AD",1:"AD")
End DoDot:1
+16 IF BGPRTYPE=1
SET BGPDV=$SELECT(BGPD1:"AC",1:"")
IF BGPD2
SET BGPDV=BGPDV_$SELECT(BGPDV]"":",AD",1:"AD")
+17 IF BGPRTYPE=7
SET BGPDV="AD"
+18 IF BGPRTYPE=3!(BGPRTYPE=5)
SET BGPVALUE="AC"_"|||"_$$DATE^BGP0UTL($PIECE(BGPVALUE,U,1))_" "_$PIECE(BGPVALUE,U,2)
IF 1
+19 IF '$TEST
SET BGPVALUE=BGPDV_"|||"_$$DATE^BGP0UTL($PIECE(BGPVALUE,U,1))_" "_$PIECE(BGPVALUE,U,2)_$SELECT(BGPVALUE]"":" (ever)",1:"")_" "_$$DATE^BGP0UTL($PIECE(BGPVAL,U,1))_" "_$PIECE(BGPVAL,U,2)_$SELECT(BGPVAL]"":" (past 5 yrs)",1:"")
+20 KILL BGPLPNU
+21 QUIT
I15 ;EP
+1 KILL BGPN1,BGPN2,BGPN3,BGPN4,BGPVALUE,BGPPAP,BGPI7,BGPI7DA,BGPI7DB
+2 SET BGPI7DA=0
SET BGPI7DB=0
SET BGPI7DC=0
SET BGPN1=0
SET BGPN2=0
SET BGPN3=0
+3 SET BGPI7=$$DEN7(DFN,BGPAGEB,BGPAGEE,BGPSEX,BGPEDATE)
+4 IF BGPACTUP
IF BGPI7
SET BGPI7DA=1
+5 IF BGPACTCL
IF BGPI7
SET BGPI7DB=1
+6 IF BGPACTCL
IF BGPI7
IF BGPAGEB>23
IF BGPAGEE<65
SET BGPI7DC=1
+7 ;not in either denom so quit
IF 'BGPI7DA
IF 'BGPI7DB
IF 'BGPI7DC
SET BGPSTOP=1
QUIT
+8 SET BGPPAP=$$PAP(DFN,BGPEDATE,3)
+9 SET BGPN1=0
IF $PIECE(BGPPAP,U)=1
SET BGPN1=1
+10 IF $PIECE(BGPPAP,U,3)="ref"
SET BGPN2=1
+11 IF BGPN1
IF 'BGPN2
SET BGPN3=1
+12 IF BGPRTYPE'=3
SET BGPVALUE=$SELECT(BGPI7DA:"UP",1:"")_$SELECT(BGPI7DB:",AC",1:"")_"|||"_$$DATE^BGP0UTL($PIECE(BGPPAP,U,2))_" "_$PIECE(BGPPAP,U,3)
+13 IF BGPRTYPE=3
SET BGPVALUE="AC|||"_$$DATE^BGP0UTL($PIECE(BGPPAP,U,2))_" "_$PIECE(BGPPAP,U,3)
+14 KILL BGPLPAP
+15 QUIT
+16 ;
FLU(P,BD,ED,FORE) ;EP
+1 NEW BGPG,BGPLFLU,EDATE,X,E,%,I,T,J,V,G,D,R
+2 KILL BGPG
+3 SET BGPLFLU=""
+4 IF $GET(BD)=""
SET BD=$$FMADD^XLFDT(ED,-365)
+5 SET EDATE=$$FMTE^XLFDT(ED)
SET BDATE=$$FMTE^XLFDT(BD)
+6 SET X=P_"^LAST IMM 88;DURING "_BDATE_"-"_EDATE
SET E=$$START1^APCLDF(X,"BGPG(")
+7 IF $DATA(BGPG(1))
SET BGPLFLU=$PIECE(BGPG(1),U)_U_"Imm 88"
+8 SET X=P_"^LAST IMM 111;DURING "_BDATE_"-"_EDATE
SET E=$$START1^APCLDF(X,"BGPG(")
+9 IF $DATA(BGPG(1))
IF $PIECE(BGPLFLU,U)<$PIECE(BGPG(1),U)
SET BGPLFLU=$PIECE(BGPG(1),U)_U_"Imm 111"
+10 SET X=P_"^LAST IMM 15;DURING "_BDATE_"-"_EDATE
SET E=$$START1^APCLDF(X,"BGPG(")
+11 IF $DATA(BGPG(1))
IF $PIECE(BGPLFLU,U)<$PIECE(BGPG(1),U)
SET BGPLFLU=$PIECE(BGPG(1),U)_U_"Imm 15"
+12 SET X=P_"^LAST IMM 16;DURING "_BDATE_"-"_EDATE
SET E=$$START1^APCLDF(X,"BGPG(")
+13 IF $DATA(BGPG(1))
IF $PIECE(BGPLFLU,U)<$PIECE(BGPG(1),U)
SET BGPLFLU=$PIECE(BGPG(1),U)_U_"Imm 16"
+14 SET X=P_"^LAST IMM 135;DURING "_BDATE_"-"_EDATE
SET E=$$START1^APCLDF(X,"BGPG(")
+15 IF $DATA(BGPG(1))
IF $PIECE(BGPLFLU,U)<$PIECE(BGPG(1),U)
SET BGPLFLU=$PIECE(BGPG(1),U)_U_"Imm 135"
+16 KILL BGPG
SET %=P_"^LAST DX V04.8;DURING "_BDATE_"-"_EDATE
SET E=$$START1^APCLDF(%,"BGPG(")
+17 IF $DATA(BGPG(1))
IF $PIECE(BGPLFLU,U)<$PIECE(BGPG(1),U,1)
SET BGPLFLU=$PIECE(BGPG(1),U,1)_U_"V04.8"
+18 KILL BGPG
SET %=P_"^LAST DX V04.81;DURING "_BDATE_"-"_EDATE
SET E=$$START1^APCLDF(%,"BGPG(")
+19 IF $DATA(BGPG(1))
Begin DoDot:1
+20 SET T=$ORDER(^ATXAX("B","SURVEILLANCE CPT H1N1",0))
+21 SET X=0
FOR
SET X=$ORDER(BGPG(X))
IF X'=+X
QUIT
Begin DoDot:2
+22 SET V=$PIECE(BGPG(X),U,5)
+23 SET G=0
+24 SET J=0
FOR
SET J=$ORDER(^AUPNVCPT("AD",V,J))
IF J'=+J
QUIT
SET I=$PIECE(^AUPNVCPT(J,0),U,1)
IF $$ICD^ATXCHK(I,T,1)!($$H1(I))
SET G=1
+25 IF G=1
QUIT
+26 IF $PIECE(BGPLFLU,U)<$PIECE(BGPG(X),U,1)
SET BGPLFLU=$PIECE(BGPG(1),U,1)_U_"V04.81"
End DoDot:2
End DoDot:1
+27 KILL BGPG
SET %=P_"^LAST DX V06.6;DURING "_BDATE_"-"_EDATE
SET E=$$START1^APCLDF(%,"BGPG(")
+28 IF $DATA(BGPG(1))
Begin DoDot:1
+29 SET T=$ORDER(^ATXAX("B","SURVEILLANCE CPT H1N1",0))
+30 SET X=0
FOR
SET X=$ORDER(BGPG(X))
IF X'=+X
QUIT
Begin DoDot:2
+31 SET V=$PIECE(BGPG(X),U,5)
+32 SET G=0
+33 SET J=0
FOR
SET J=$ORDER(^AUPNVCPT("AD",V,J))
IF J'=+J
QUIT
SET I=$PIECE(^AUPNVCPT(J,0),U,1)
IF $$ICD^ATXCHK(I,T,1)!($$H1(I))
SET G=1
+34 IF G=1
QUIT
+35 IF $PIECE(BGPLFLU,U)<$PIECE(BGPG(X),U,1)
SET BGPLFLU=$PIECE(BGPG(1),U,1)_U_"V06.06"
End DoDot:2
End DoDot:1
+36 SET T=$ORDER(^ATXAX("B","BGP CPT FLU",0))
+37 IF T
Begin DoDot:1
+38 SET X=$$CPT^BGP0DU(P,,ED,T,5)
IF X]""
QUIT
+39 SET X=$$TRAN^BGP0DU(P,,ED,T,5)
End DoDot:1
IF X]""
IF $PIECE(BGPLFLU,U)<X
SET BGPLFLU=$PIECE(X,U)_U_"CPT "_$PIECE(X,U,2)
+40 IF BGPLFLU]""
QUIT BGPLFLU_U_1
+41 ;contraindication new in 8.0
+42 FOR BGPZ=15,16,88,111,135
SET X=$$FLCONT(P,BGPZ,$$DOB^AUPNPAT(P),ED)
IF X]""
QUIT
+43 IF X]""
QUIT X_U_3
+44 ;NMI refusal
+45 SET G=$$NMIREF^BGP0UTL1(P,9999999.14,$ORDER(^AUTTIMM("C",88,0)),$$DOB^AUPNPAT(P),ED)
+46 IF $PIECE(G,U)=1
QUIT $PIECE(G,U,2)_U_"NMI Refusal"_U_3
+47 SET G=$$NMIREF^BGP0UTL1(P,9999999.14,$ORDER(^AUTTIMM("C",111,0)),$$DOB^AUPNPAT(P),ED)
+48 IF $PIECE(G,U)=1
QUIT $PIECE(G,U,2)_U_"NMI Refusal"_U_3
+49 SET G=$$NMIREF^BGP0UTL1(P,9999999.14,$ORDER(^AUTTIMM("C",15,0)),$$DOB^AUPNPAT(P),ED)
+50 IF $PIECE(G,U)=1
QUIT $PIECE(G,U,2)_U_"NMI Refusal"_U_3
+51 SET G=$$NMIREF^BGP0UTL1(P,9999999.14,$ORDER(^AUTTIMM("C",16,0)),$$DOB^AUPNPAT(P),ED)
+52 IF $PIECE(G,U)=1
QUIT $PIECE(G,U,2)_U_"NMI Refusal"_U_3
+53 SET G=$$NMIREF^BGP0UTL1(P,9999999.14,$ORDER(^AUTTIMM("C",135,0)),$$DOB^AUPNPAT(P),ED)
+54 IF $PIECE(G,U)=1
QUIT $PIECE(G,U,2)_U_"NMI Refusal"_U_3
+55 IF $GET(FORE)
QUIT ""
+56 SET G=$$REFUSAL^BGP0UTL1(P,9999999.14,$ORDER(^AUTTIMM("C",88,0)),$$FMADD^XLFDT(ED,-365),ED)
+57 IF $PIECE(G,U)=1
QUIT $PIECE(G,U,2)_U_"Refused"_U_2
+58 SET G=$$REFUSAL^BGP0UTL1(P,9999999.14,$ORDER(^AUTTIMM("C",111,0)),$$FMADD^XLFDT(ED,-365),ED)
+59 IF $PIECE(G,U)=1
QUIT $PIECE(G,U,2)_U_"Refused"_U_2
+60 SET G=$$REFUSAL^BGP0UTL1(P,9999999.14,$ORDER(^AUTTIMM("C",15,0)),$$FMADD^XLFDT(ED,-365),ED)
+61 IF $PIECE(G,U)=1
QUIT $PIECE(G,U,2)_U_"Refused"_U_2
+62 SET G=$$REFUSAL^BGP0UTL1(P,9999999.14,$ORDER(^AUTTIMM("C",16,0)),$$FMADD^XLFDT(ED,-365),ED)
+63 IF $PIECE(G,U)=1
QUIT $PIECE(G,U,2)_U_"Refused"_U_2
+64 SET G=$$REFUSAL^BGP0UTL1(P,9999999.14,$ORDER(^AUTTIMM("C",135,0)),$$FMADD^XLFDT(ED,-365),ED)
+65 IF $PIECE(G,U)=1
QUIT $PIECE(G,U,2)_U_"Refused"_U_2
+66 SET (X,G)=0
SET Y=$ORDER(^AUTTIMM("C",88,0))
FOR
SET X=$ORDER(^BIPC("AC",P,Y,X))
IF X'=+X!(G)
QUIT
Begin DoDot:1
+67 SET R=$PIECE(^BIPC(X,0),U,3)
+68 IF R=""
QUIT
+69 IF '$DATA(^BICONT(R,0))
QUIT
+70 IF $PIECE(^BICONT(R,0),U,1)'["Refusal"
QUIT
+71 SET D=$PIECE(^BIPC(X,0),U,4)
+72 IF D=""
QUIT
+73 IF $PIECE(^BIPC(X,0),U,4)<BD
QUIT
+74 IF $PIECE(^BIPC(X,0),U,4)>ED
QUIT
+75 SET G=1
End DoDot:1
+76 IF G
QUIT $PIECE(G,U,2)_U_"Refused Imm pkg"_U_2
+77 SET (X,G)=0
SET Y=$ORDER(^AUTTIMM("C",111,0))
IF Y
FOR
SET X=$ORDER(^BIPC("AC",P,Y,X))
IF X'=+X!(G)
QUIT
Begin DoDot:1
+78 SET R=$PIECE(^BIPC(X,0),U,3)
+79 IF R=""
QUIT
+80 IF '$DATA(^BICONT(R,0))
QUIT
+81 IF $PIECE(^BICONT(R,0),U,1)'["Refusal"
QUIT
+82 SET D=$PIECE(^BIPC(X,0),U,4)
+83 IF D=""
QUIT
+84 IF $PIECE(^BIPC(X,0),U,4)<BD
QUIT
+85 IF $PIECE(^BIPC(X,0),U,4)>ED
QUIT
+86 SET G=1
End DoDot:1
+87 IF G
QUIT $PIECE(G,U,2)_U_"Refused Imm pkg"_U_2
+88 SET (X,G)=0
SET Y=$ORDER(^AUTTIMM("C",15,0))
IF Y
FOR
SET X=$ORDER(^BIPC("AC",P,Y,X))
IF X'=+X!(G)
QUIT
Begin DoDot:1
+89 SET R=$PIECE(^BIPC(X,0),U,3)
+90 IF R=""
QUIT
+91 IF '$DATA(^BICONT(R,0))
QUIT
+92 IF $PIECE(^BICONT(R,0),U,1)'["Refusal"
QUIT
+93 SET D=$PIECE(^BIPC(X,0),U,4)
+94 IF D=""
QUIT
+95 IF $PIECE(^BIPC(X,0),U,4)<BD
QUIT
+96 IF $PIECE(^BIPC(X,0),U,4)>ED
QUIT
+97 SET G=1
End DoDot:1
+98 IF G
QUIT $PIECE(G,U,2)_U_"Refused Imm pkg"_U_2
+99 SET (X,G)=0
SET Y=$ORDER(^AUTTIMM("C",16,0))
IF Y
FOR
SET X=$ORDER(^BIPC("AC",P,Y,X))
IF X'=+X!(G)
QUIT
Begin DoDot:1
+100 SET R=$PIECE(^BIPC(X,0),U,3)
+101 IF R=""
QUIT
+102 IF '$DATA(^BICONT(R,0))
QUIT
+103 IF $PIECE(^BICONT(R,0),U,1)'["Refusal"
QUIT
+104 SET D=$PIECE(^BIPC(X,0),U,4)
+105 IF D=""
QUIT
+106 IF $PIECE(^BIPC(X,0),U,4)<BD
QUIT
+107 IF $PIECE(^BIPC(X,0),U,4)>ED
QUIT
+108 SET G=1
End DoDot:1
+109 IF G
QUIT $PIECE(G,U,2)_U_"Refused Imm pkg"_U_2
+110 SET (X,G)=0
SET Y=$ORDER(^AUTTIMM("C",135,0))
IF Y
FOR
SET X=$ORDER(^BIPC("AC",P,Y,X))
IF X'=+X!(G)
QUIT
Begin DoDot:1
+111 SET R=$PIECE(^BIPC(X,0),U,3)
+112 IF R=""
QUIT
+113 IF '$DATA(^BICONT(R,0))
QUIT
+114 IF $PIECE(^BICONT(R,0),U,1)'["Refusal"
QUIT
+115 SET D=$PIECE(^BIPC(X,0),U,4)
+116 IF D=""
QUIT
+117 IF $PIECE(^BIPC(X,0),U,4)<BD
QUIT
+118 IF $PIECE(^BIPC(X,0),U,4)>ED
QUIT
+119 SET G=1
End DoDot:1
+120 IF G
QUIT $PIECE(G,U,2)_U_"Refused Imm pkg"_U_2
+121 QUIT ""
FLCONT(P,C,BD,ED) ;EP
+1 NEW X,G,Y,R,D
+2 SET X=0
SET G=""
SET Y=$ORDER(^AUTTIMM("C",C,0))
IF Y
FOR
SET X=$ORDER(^BIPC("AC",P,Y,X))
IF X'=+X!(G)
QUIT
Begin DoDot:1
+3 SET R=$PIECE(^BIPC(X,0),U,3)
+4 IF R=""
QUIT
+5 IF '$DATA(^BICONT(R,0))
QUIT
+6 SET D=$PIECE(^BIPC(X,0),U,4)
+7 IF D=""
QUIT
+8 IF $PIECE(^BIPC(X,0),U,4)<BD
QUIT
+9 IF $PIECE(^BIPC(X,0),U,4)>ED
QUIT
+10 IF $PIECE(^BICONT(R,0),U,1)="Egg Allergy"
SET G=D_U_"Contraindication: Egg Allergy"
+11 IF $PIECE(^BICONT(R,0),U,1)="Anaphylaxis"
SET G=D_U_"Contraindication: Anaphylaxis"
End DoDot:1
+12 QUIT G
BI() ;
+1 QUIT $SELECT($ORDER(^AUTTIMM(0))>100:1,1:0)
DEN7(P,AGEB,AGEE,SEX,EDATE) ;EP
+1 IF SEX'="F"
QUIT 0
+2 IF AGEB<21
QUIT 0
+3 IF AGEE>64
QUIT 0
+4 IF $$HYSTER(P,EDATE)
QUIT 0
+5 QUIT 1
H1(I) ;
+1 IF $PIECE($GET(^ICPT(I,0)),U,1)=90664
QUIT 1
+2 IF $PIECE($GET(^ICPT(I,0)),U,1)=90666
QUIT 1
+3 IF $PIECE($GET(^ICPT(I,0)),U,1)=90667
QUIT 1
+4 IF $PIECE($GET(^ICPT(I,0)),U,1)=90668
QUIT 1
+5 QUIT ""
PAP(P,EDATE,YEARS,REFUSAL) ;EP
+1 KILL BGPC
+2 SET BGPC=""
+3 SET BGPLPAP=""
+4 SET BDATE=$$FMADD^XLFDT(EDATE,-(365*YEARS))
+5 SET T=$ORDER(^ATXAX("B","BGP PAP LOINC CODES",0))
+6 SET BGPLT=$ORDER(^ATXLAB("B","BGP PAP SMEAR TAX",0))
+7 SET B=9999999-BDATE
SET E=9999999-EDATE
SET D=E-1
FOR
SET D=$ORDER(^AUPNVLAB("AE",P,D))
IF D'=+D!(D>B)!(BGPC]"")
QUIT
Begin DoDot:1
+8 SET L=0
FOR
SET L=$ORDER(^AUPNVLAB("AE",P,D,L))
IF L'=+L!(BGPC]"")
QUIT
Begin DoDot:2
+9 SET X=0
FOR
SET X=$ORDER(^AUPNVLAB("AE",P,D,L,X))
IF X'=+X!(BGPC]"")
QUIT
Begin DoDot:3
+10 IF '$DATA(^AUPNVLAB(X,0))
QUIT
+11 SET Z=$PIECE(^AUPNVLAB(X,0),U)
SET Z=$PIECE($GET(^LAB(60,Z,0)),U)
IF Z="PAP SMEAR"
SET BGPC="1^"_(9999999-D)_"^Lab"
QUIT
+12 IF BGPLT
IF $PIECE(^AUPNVLAB(X,0),U)
IF $DATA(^ATXLAB(BGPLT,21,"B",$PIECE(^AUPNVLAB(X,0),U)))
SET BGPC="1^"_(9999999-D)_"^Lab"
QUIT
+13 IF 'T
QUIT
+14 SET J=$PIECE($GET(^AUPNVLAB(X,11)),U,13)
IF J=""
QUIT
+15 IF '$$LOINC(J,T)
QUIT
+16 SET BGPC="1^"_(9999999-D)_"^Lab-loinc"
QUIT
+17 QUIT
End DoDot:3
End DoDot:2
End DoDot:1
+18 SET BGPLPAP=BGPC
+19 KILL BGP
+20 SET T="BGP PAP SMEAR DXS"
+21 IF BGPRTYPE=3
SET T="BGP HEDIS PAP SMEAR DXS"
+22 SET X=$$LASTDX^BGP0UTL1(P,T,BDATE,EDATE)
IF X
IF $PIECE(BGPLPAP,U,2)<$PIECE(X,U,3)
SET BGPLPAP="1^"_$PIECE(X,U,3)_"^"_$PIECE(X,U,2)
+23 KILL BGP
SET %=P_"^LAST PROCEDURE 91.46;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE)
SET E=$$START1^APCLDF(%,"BGP(")
+24 IF $DATA(BGP(1))
IF $PIECE(BGPLPAP,U,2)<$PIECE(BGP(1),U,1)
SET BGPLPAP="1^"_$PIECE(BGP(1),U)_"^91.46"
+25 SET T=$ORDER(^ATXAX("B","BGP CPT PAP",0))
+26 IF T
Begin DoDot:1
+27 SET X=$$CPT^BGP0DU(P,$$FMADD^XLFDT(EDATE,-(YEARS*365)),EDATE,T,5)
IF X]""
QUIT
+28 SET X=$$TRAN^BGP0DU(P,$$FMADD^XLFDT(EDATE,-(YEARS*365)),EDATE,T,5)
End DoDot:1
IF X]""
IF $PIECE(BGPLPAP,U,2)<$PIECE(X,U,1)
SET BGPLPAP="1^"_$PIECE(X,U)_"^"_$PIECE(X,U,2)
+29 SET T="PAP SMEAR"
SET T=$ORDER(^BWPN("B",T,0))
+30 IF T
Begin DoDot:1
+31 SET X=$$WH^BGP0DU(P,$$FMADD^XLFDT(EDATE,-(YEARS*365)),EDATE,T,3)
End DoDot:1
IF X]""
IF $PIECE(BGPLPAP,U,2)<X
SET BGPLPAP="1^"_X_"^WH"
+32 IF BGPLPAP]""
QUIT BGPLPAP
+33 ;no refusals counted
IF $GET(REFUSAL)
QUIT ""
+34 SET T=$$REFUSAL^BGP0UTL1(P,60,$ORDER(^LAB(60,"B","PAP SMEAR",0)),$$FMADD^XLFDT(EDATE,-365),EDATE)
+35 IF T
QUIT "1^"_$PIECE(T,U,2)_"^ref"
+36 SET BGPLT=$ORDER(^ATXLAB("B","BGP PAP SMEAR TAX",0))
+37 IF 'BGPLT
QUIT 0
+38 SET X=0
SET T=""
FOR
SET X=$ORDER(^ATXLAB(BGPLT,21,X))
IF X'=+X!($PIECE(T,U)=1)
QUIT
Begin DoDot:1
+39 SET T=""
+40 SET Y=$PIECE(^ATXLAB(BGPLT,21,X,0),U)
+41 IF 'Y
QUIT
+42 SET T=$$REFUSAL^BGP0UTL1(P,60,Y,$$FMADD^XLFDT(EDATE,-365),EDATE)
End DoDot:1
+43 IF T
QUIT 1_"^"_$PIECE(T,U,2)_"^ref"
+44 QUIT ""
LOINC(A,B) ;
+1 NEW %
+2 SET %=$PIECE($GET(^LAB(95.3,A,9999999)),U,2)
+3 IF %]""
IF $DATA(^ATXAX(B,21,"B",%))
QUIT 1
+4 SET %=$PIECE($GET(^LAB(95.3,A,0)),U)_"-"_$PIECE($GET(^LAB(95.3,A,0)),U,15)
+5 IF $DATA(^ATXAX(B,21,"B",%))
QUIT 1
+6 QUIT ""
HYSTER(P,EDATE) ;EP
+1 IF '$GET(P)
QUIT ""
+2 SET X=$$LASTPRC^BGP0UTL1(P,"BGP HYSTERECTOMY PROCEDURES",$$DOB^AUPNPAT(P),EDATE)
+3 IF X
QUIT 1
+4 SET T="HYSTERECTOMY"
SET T=$ORDER(^BWPN("B",T,0))
+5 IF T
Begin DoDot:1
+6 SET X=$$WH^BGP0DU(P,$$DOB^AUPNPAT(P),EDATE,T,2)
End DoDot:1
IF X]""
QUIT 1
+7 SET T=$ORDER(^ATXAX("B","BGP HYSTERECTOMY CPTS",0))
+8 IF T
Begin DoDot:1
+9 SET X=$$CPT^BGP0DU(P,$PIECE(^DPT(P,0),U,3),EDATE,T,3)
IF X]""
QUIT
+10 SET X=$$TRAN^BGP0DU(P,$PIECE(^DPT(P,0),U,3),EDATE,T,3)
End DoDot:1
IF X]""
QUIT 1
+11 SET X=$$LASTDX^BGP0UTL1(P,"BGP HYSTERECTOMY DXS",$$DOB^AUPNPAT(P),EDATE)
+12 IF X
QUIT 1
+13 QUIT ""