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

BGP8D36.m

Go to the documentation of this file.
  1. BGP8D36 ;IHS/CMI/LAB - MEASURE IMM LOGIC;
  1. ;;18.1;IHS CLINICAL REPORTING;;MAY 25, 2018;Build 66
  1. ;
  1. MEN(P,EDATE) ;EP
  1. NEW BGPC,BGPG,BGPX,BGPMENI,C,ED,BD,V,X,Y,BGPZ,B,BGPIMM,R,G,T
  1. ;gather up all immunizations, cpts, povs and check for 3 each ten days apart
  1. K BGPMENI
  1. ;get all immunizations
  1. ;S C="32^108^114^136^147^148"
  1. S C="",X=0
  1. S T=$O(^ATXAX("B","BGP MENINGOCOCCAL CVX CODES",0))
  1. F S X=$O(^ATXAX(T,21,"B",X)) Q:X="" S:C]"" C=C_U S C=C_X
  1. D GETIMMS^BGP8D32(P,EDATE,C,.BGPX)
  1. ;go through and set into array if 10 days apart
  1. I $O(BGPX(0)) Q 1_U_"Meningococcal"
  1. ;now get cpts
  1. S T=$O(^ATXAX("B","BGP CPT MENINGOCOCCAL",0))
  1. S ED=9999999-EDATE-1,BD=9999999-$$DOB^AUPNPAT(P),G=0
  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. ...S Y=$P(^AUPNVCPT(X,0),U) I $$ICD^ATXAPI(Y,T,1) S BGPMENI(9999999-$P(ED,"."))=""
  1. ..S X=0 F S X=$O(^AUPNVTC("AD",V,X)) Q:X'=+X D
  1. ...S Y=$P(^AUPNVTC(X,0),U,7) Q:'Y I $$ICD^ATXAPI(Y,T,1) S BGPMENI(9999999-$P(ED,"."))=""
  1. I $D(BGPMENI) Q 1_U_"Meningococcal"
  1. ;check for Evidence of desease and Contraindications and if yes, then quit
  1. S T=$O(^ATXAX("B","BGP MENINGOCOCCAL CVX CODES",0))
  1. S X="",Y=0
  1. F S Y=$O(^ATXAX(T,21,"B",Y)) Q:Y="" D Q:X]""
  1. .S X=$$ANCONT^BGP8D31(P,Y,EDATE) Q:X]""
  1. I X]"" Q 4_U_"Contra Meningococcal"
  1. ;now go to Refusals
  1. S B=$$DOB^AUPNPAT(P),E=EDATE,BGPNMI="",R=""
  1. S BGPIMM=0 F S BGPIMM=$O(^ATXAX(T,21,"B",BGPIMM)) Q:BGPIMM="" D ;F BGPIMM=32,108,114,136,147 D
  1. .S I=$O(^AUTTIMM("C",BGPIMM,0)) Q:'I
  1. .S X=0 F S X=$O(^AUPNPREF("AA",P,9999999.14,I,X)) Q:X'=+X S Y=0 F S Y=$O(^AUPNPREF("AA",P,9999999.14,I,X,Y)) Q:Y'=+Y S D=$P(^AUPNPREF(Y,0),U,3) I D'<B&(D'>E) S:$P(^AUPNPREF(Y,0),U,7)="N" BGPNMI=1 S R=1
  1. I BGPNMI Q $S(BGPNMI:4,1:3)_U_$S(BGPNMI:"NMI Meningococcal",1:"Ref Meningococcal")
  1. F BGPIMM=90733,90734,90644 D
  1. .S I=+$$CODEN^ICPTCOD(BGPIMM) Q:'I
  1. .S X=0 F S X=$O(^AUPNPREF("AA",P,81,I,X)) Q:X'=+X S Y=0 F S Y=$O(^AUPNPREF("AA",P,81,I,X,Y)) Q:Y'=+Y S D=$P(^AUPNPREF(Y,0),U,3) I D'<B&(D'>E) S:$P(^AUPNPREF(Y,0),U,7)="N" BGPNMI=1 S R=1
  1. I BGPNMI Q $S(BGPNMI:4,1:3)_U_$S(BGPNMI:"NMI Meningococcal",1:"Ref Meningococcal")
  1. Q ""
  1. ;
  1. HPV(P,EDATE) ;EP
  1. NEW BGPC,BGPG,BGPX,BGPHPV,C,X,ED,BD,V,G,R,BGPIMM,Y,Z,B,BGPNMI
  1. ;gather up all immunizations, cpts, povs and check for 3 each ten days apart
  1. ;get all immunizations
  1. ;S C="62^118^137^165"
  1. S C="",X=0
  1. S T=$O(^ATXAX("B","BGP HPV CVX CODES",0))
  1. F S X=$O(^ATXAX(T,21,"B",X)) Q:X="" S:C]"" C=C_U S C=C_X
  1. D GETIMMS^BGP8D32(P,EDATE,C,.BGPX)
  1. ;go through and set into array if 10 days apart
  1. S X=0 F S X=$O(BGPX(X)) Q:X'=+X S BGPHPV(X)=""
  1. ;now get cpts
  1. S ED=9999999-EDATE,BD=9999999-$$DOB^AUPNPAT(P),G=0
  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. ...S Y=$P(^AUPNVCPT(X,0),U) S Z=$P($$CPT^ICPTCOD(Y),U,2) I Z=90649!(Z=90650)!(Z=90651) S BGPHPV(9999999-$P(ED,"."))=""
  1. ..S X=0 F S X=$O(^AUPNVTC("AD",V,X)) Q:X'=+X D
  1. ...S Y=$P(^AUPNVTC(X,0),U,7) Q:'Y S Z=$P($$CPT^ICPTCOD(Y),U,2) I Z=90649!(Z=90650)!(Z=90651) S BGPHPV(9999999-$P(ED,"."))=""
  1. ;
  1. ;now check to see if they are all spaced 10 days apart, if not, kill off the odd ones
  1. S X="",Y="",C=0 F S X=$O(BGPHPV(X)) Q:X'=+X S C=C+1 D
  1. .I C=1 S Y=X Q
  1. .I $$FMDIFF^XLFDT(X,Y)<11 K BGPHPV(X) Q
  1. .S Y=X
  1. ;now count them and see if there are 3 of them
  1. S BGPHPV=0,X=0 F S X=$O(BGPHPV(X)) Q:X'=+X S BGPHPV=BGPHPV+1
  1. I BGPHPV>2 Q 1_U_"3 HPV"
  1. I BGPHPV<2 G ED ;didn't have at least 2 so go to check for nmi/evid
  1. ;v18, check for 2 doses, 1 dose prior to 15th bd and one at least 5 months later
  1. ;15TH BIRTDAY
  1. S B=$$DOB^AUPNPAT(P)
  1. S BGP15BD=$E(B,1,3)+15_$E(B,4,7)
  1. S D=0,G=0,Q=0,Z="" F S D=$O(BGPHPV(D)) Q:D'=+D!(Q) D
  1. .I D>BGP15BD S Q=1 Q ;AFTER 15TH BD SO DON'T BOTHER
  1. .;get next one and check for 5 months
  1. .S Y=$O(BGPHPV(D))
  1. .;5 MONTHS AFTER D
  1. .S Z=$$M5(D)
  1. .I Y<Z Q ;not at least 5 months
  1. .S G=1_U_"2 HPV"
  1. .S Q=1
  1. ;W !!,P," ",BGP15BD," ",Z,! ZW BGPHPV W ! ;LORI
  1. I G Q G
  1. ED ;check for Evidence of desease and Contraindications and if yes, then quit
  1. ;now go to Refusals
  1. S B=$$DOB^AUPNPAT(P),E=EDATE,BGPNMI="",R=""
  1. F BGPIMM=62,118,137,165 D
  1. .S I=$O(^AUTTIMM("C",BGPIMM,0)) Q:'I
  1. .S X=0 F S X=$O(^AUPNPREF("AA",P,9999999.14,I,X)) Q:X'=+X S Y=0 F S Y=$O(^AUPNPREF("AA",P,9999999.14,I,X,Y)) Q:Y'=+Y S D=$P(^AUPNPREF(Y,0),U,3) I D'<B&(D'>E) S:$P(^AUPNPREF(Y,0),U,7)="N" BGPNMI=1 S R=1
  1. I BGPNMI Q $S(BGPNMI:4,1:3)_U_$S(BGPNMI:"NMI",1:"Ref")_" HPV"
  1. F BGPIMM=90649,90650,90651 D
  1. .S I=+$$CODEN^ICPTCOD(BGPIMM) Q:'I
  1. .S X=0 F S X=$O(^AUPNPREF("AA",P,81,I,X)) Q:X'=+X S Y=0 F S Y=$O(^AUPNPREF("AA",P,81,I,X,Y)) Q:Y'=+Y S D=$P(^AUPNPREF(Y,0),U,3) I D'<B&(D'>E) S:$P(^AUPNPREF(Y,0),U,7)="N" BGPNMI=1 S R=1
  1. I BGPNMI Q $S(BGPNMI:4,1:3)_U_$S(BGPNMI:"NMI HPV",1:"Ref HPV")
  1. ;now check Refusals in imm pkg
  1. ;F BGPIMM=62,118 S R=$$IMMREF^BGP8D32(P,BGPIMM,$$DOB^AUPNPAT(P),EDATE)+R
  1. ;I R Q $S(BGPNMI:4,1:3)_U_$S(BGPNMI:"NMI",1:"Ref")_" HPV"
  1. F BGPZ=62,118,137,165 S X=$$ANCONT^BGP8D31(P,BGPZ,EDATE) Q:X]""
  1. I X]"" Q 4_U_"Contra HPV"
  1. Q ""
  1. M5(E) ;
  1. I $G(E)="" Q ""
  1. NEW M,Z
  1. S M=$E(E,4,5) ;month
  1. S M=+M
  1. S A=$S(M=1:6,M=2:7,M=3:8,M=4:9,M=5:10,M=6:11,M=7:12,M=8:1,M=9:2,M=10:3,M=11:4,M=12:5,1:"")
  1. S:$L(A)<2 A="0"_A
  1. I +M<8 S A=$E(E,1,3)_A_$E(E,6,7) Q A
  1. S A=($E(E,1,3)+1)_A_$E(E,6,7)
  1. Q A
  1. AGE(P,BGPZ,BGPDT) ;EP
  1. ;---> Return Patient's Age.
  1. ;---> Parameters:
  1. ; 1 - DFN (req) IEN in PATIENT File.
  1. ; 2 - BGPZ (opt) APCLZ=1,2,3 1=years, 2=months, 3=days.
  1. ; 2 will be assumed if not passed.
  1. ; 3 - APCLDT (opt) Date on which Age should be calculated.
  1. ;
  1. N BGPDOB,X,X1,X2 S:$G(BGPZ)="" BGPZ=2
  1. Q:'$G(P) ""
  1. I '$D(^DPT(P,0)) Q ""
  1. S BGPDOB=$P(^DPT(P,0),U,3)
  1. Q:'BGPDOB ""
  1. S:'$G(DT) DT=$$DT^XLFDT
  1. S:'$G(BGPDT) BGPDT=DT
  1. Q:BGPDT<BGPDOB ""
  1. ;
  1. ;---> Age in Years.
  1. N BGPAGEY,BGPAGEM,BGPD1,BGPD2,BGPM1,BGPM2,BGPY1,BGPY2
  1. S BGPM1=$E(BGPDOB,4,7),BGPM2=$E(BGPDT,4,7)
  1. S BGPY1=$E(BGPDOB,1,3),BGPY2=$E(BGPDT,1,3)
  1. S BGPAGEY=BGPY2-BGPY1 S:BGPM2<BGPM1 BGPAGEY=BGPAGEY-1
  1. S:BGPAGEY<1 BGPAGEY="<1"
  1. Q:BGPZ=1 BGPAGEY
  1. ;
  1. ;---> Age in Months.
  1. S BGPD1=$E(BGPM1,3,4),BGPM1=$E(BGPM1,1,2)
  1. S BGPD2=$E(BGPM2,3,4),BGPM2=$E(BGPM2,1,2)
  1. S BGPAGEM=12*BGPAGEY
  1. I BGPM2=BGPM1&(BGPD2<BGPD1) S BGPAGEM=BGPAGEM+12
  1. I BGPM2>BGPM1 S BGPAGEM=BGPAGEM+BGPM2-BGPM1
  1. I BGPM2<BGPM1 S BGPAGEM=BGPAGEM+BGPM2+(12-BGPM1)
  1. S:BGPD2<BGPD1 BGPAGEM=BGPAGEM-1
  1. Q:BGPZ=2 BGPAGEM
  1. ;
  1. ;---> Age in Days.
  1. S X1=BGPDT,X2=BGPDOB
  1. D ^%DTC
  1. Q X
  1. ;
  1. ;
  1. ENCEPH(P,EDATE) ;EP - encephalapathy on PL or V POV
  1. I '$G(P) Q ""
  1. NEW X
  1. S X=$$LASTDX^BGP8UTL1(P,"BGP ENCEPHALOPATHY DXS",$$DOB^AUPNPAT(P),EDATE)
  1. I X Q 1
  1. S X=$$PLTAXND^BGP8DU(P,$O(^ATXAX("B","BGP ENCEPHALOPATHY DXS",0)),EDATE)
  1. I X Q 1
  1. Q ""
  1. ;
  1. IMMUNO(P,EDATE) ;EP - IMMUN on PL or V POV
  1. I '$G(P) Q ""
  1. NEW X
  1. S X=$$LASTDX^BGP8UTL1(P,"BGP IMMUNODEFICIENCY DXS",$$DOB^AUPNPAT(P),EDATE)
  1. I X Q 1
  1. S X=$$PLTAXND^BGP8DU(P,$O(^ATXAX("B","BGP IMMUNODEFICIENCY DXS",0)),EDATE)
  1. I X Q 1
  1. Q ""
  1. ;
  1. LYMPHO(P,EDATE) ;EP - IMMUN on PL or V POV
  1. I '$G(P) Q ""
  1. NEW X
  1. S X=$$LASTDX^BGP8UTL1(P,"BGP LYMPHO CANCER DXS",$$DOB^AUPNPAT(P),EDATE)
  1. I X Q 1
  1. S X=$$PLTAXND^BGP8DU(P,$O(^ATXAX("B","BGP LYMPHO CANCER DXS",0)),EDATE)
  1. I X Q 1
  1. Q ""
  1. ;
  1. SCID(P,EDATE) ;EP - IMMUN on PL or V POV
  1. I '$G(P) Q ""
  1. NEW X
  1. S X=$$LASTDX^BGP8UTL1(P,"BGP SCID DXS",$$DOB^AUPNPAT(P),EDATE)
  1. I X Q 1
  1. S X=$$PLTAXND^BGP8DU(P,$O(^ATXAX("B","BGP SCID DXS",0)),EDATE)
  1. I X Q 1
  1. Q ""
  1. ;BGP INTUSSUSCEPTION DXS
  1. INTUSS(P,EDATE) ;EP
  1. I '$G(P) Q ""
  1. NEW X
  1. S X=$$LASTDX^BGP8UTL1(P,"BGP INTUSSUSCEPTION DXS",$$DOB^AUPNPAT(P),EDATE)
  1. I X Q 1
  1. S X=$$PLTAXND^BGP8DU(P,$O(^ATXAX("B","BGP INTUSSUSCEPTION DXS",0)),EDATE)
  1. I X Q 1
  1. Q ""
  1. HADWARF(P,BDATE,EDATE) ;EP
  1. NEW BGPMEDS1,C,A,M
  1. K BGPMEDS1
  1. D GETMEDS^BGP8UTL2(P,BDATE,EDATE,"BGP PQA WARFARIN MEDS","BGP PQA WARFARIN NDC",,,.BGPMEDS1)
  1. I '$D(BGPMEDS1) Q "" ; NO MEDS
  1. S (A,C)=0 F S A=$O(BGPMEDS1(A)) Q:A'=+A D
  1. .S M=$P(BGPMEDS1(A),U,4) ;IEN OF V MED
  1. .Q:'$D(^AUPNVMED(M,0))
  1. .;GET PRESCRIPTION #
  1. .S Q=$S($D(^PSRX("APCC",M)):$O(^(M,0)),1:0)
  1. .I Q,$E($P($G(^PSRX(Q,0)),U,1))="X" Q ; no POS
  1. .I $E($$VAL^XBDIQ1(9000010.14,M,1102))="X" Q ;no POS
  1. .I $$VAL^XBDIQ1(9000010.14,M,1108)]"" Q ;NO EHR OUTSIDE
  1. .I $$UP^XLFSTR($P($G(^AUPNVMED(M,11)),U))["RETURNED TO STOCK" K BGPMEDS1(A) Q
  1. .I $P(^AUPNVMED(M,0),U,8)=$P(BGPMEDS1(A),U,1) K BGPMEDS1(A) Q ;d/c'ed on same day as visit so no days suppply
  1. .I '$P(^AUPNVMED(M,0),U,7) K BGPMEDS1(A) Q ;no days supply
  1. .S C=C+1
  1. .Q
  1. Q C