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

BGP6D3B.m

Go to the documentation of this file.
  1. BGP6D3B ; IHS/CMI/LAB - PNEUMO REMINDER 27 Feb 2015 7:52 AM ;
  1. ;;16.1;IHS CLINICAL REPORTING;;MAR 22, 2016;Build 170
  1. ;
  1. I13 ;EP - PN
  1. NEW BGPTDAP,BGPTD,BGPFLU,BGPZOST,BGPPNEU,BGPPNEUD,BGPDTAPP
  1. F X=1:1:15 S Y="BGPD"_X S @Y=""
  1. F X=1:1:45 S Y="BGPN"_X S @Y=""
  1. I BGPAGEB>64,BGPACTUP S BGPD3=1
  1. I BGPDMD2 S BGPD2=1
  1. I BGPAGEB>64,BGPACTCL S BGPD1=1
  1. I BGPAGEB>17,BGPAGEB<65,BGPACTCL,$$HIGHRP^BGP6D3A(DFN,BGPEDATE) S BGPD4=1
  1. I BGPAGEB>17,BGPAGEB<65,BGPACTUP,$$HIGHRP^BGP6D3A(DFN,BGPEDATE) S BGPD5=1
  1. I BGPAGEB>17,BGPAGEB<65,BGPACTCL S BGPD6=1
  1. I BGPAGEB>17,BGPAGEB<65,BGPACTUP S BGPD7=1
  1. I BGPAGEB>17,BGPACTCL S BGPD8=1
  1. I BGPAGEB>17,BGPACTUP S BGPD9=1
  1. I BGPAGEB>18,BGPAGEB<60,BGPACTCL S BGPD10=1
  1. I BGPAGEB>18,BGPAGEB<60,BGPACTUP S BGPD11=1
  1. I BGPAGEB>59,BGPAGEB<65,BGPACTCL S BGPD12=1
  1. I BGPAGEB>59,BGPAGEB<65,BGPACTUP S BGPD13=1
  1. I BGPSEX="F" S X=$$PREG(DFN,BGPBDATE,BGPEDATE) I X S BGPD14=1 ;v16 pregnant women
  1. I '(BGPD1+BGPD2+BGPD3+BGPD4+BGPD5+BGPD6+BGPD7+BGPD8+BGPD9+BGPD10+BGPD11+BGPD12+BGPD13+BGPD14) S BGPSTOP=1 Q
  1. S BGPVALUE="",BGPVALUD="",BGPPLPNU="",BGPDTAPP="",BGPTDAP=""
  1. PN ;EP - called from elder
  1. S BGPVALUE=$$PNEU^BGP6D31(DFN,$$DOB^AUPNPAT(DFN),BGPEDATE) ;set to date of PNEU shot
  1. I $P(BGPVALUE,U,3)=1!($P(BGPVALUE,U,3)=3) S BGPN1=1 ; ALL USERS HAD 1 EVER -
  1. I $P(BGPVALUE,U,3)=3 S BGPN3=1 ;NMI EVER
  1. S BGPVAL=$$PNEU^BGP6D31(DFN,$$FMADD^XLFDT(BGPEDATE,-(5*365)),BGPEDATE)
  1. I $P(BGPVAL,U,3)=1!($P(BGPVAL,U,3)=3) S BGPN4=1 ;HAD IN PAST 5 YEARS SO "UP TO DATE"
  1. I $P(BGPVAL,U,3)=3 S BGPN6=1 ;NMI PAST 5 YRS
  1. ;65TH DOB DATE
  1. S B=$$DOB^AUPNPAT(DFN)
  1. S BGPA65BD=$E(B,1,3)+65_$E(B,4,7)
  1. S BGPN7=0,BGPA65="" I BGPAGEB>64 S BGPA65=$$PNEU^BGP6D31(DFN,BGPA65BD,BGPEDATE) I $P(BGPA65,U,3)=1!($P(BGPA65,U,3)=3) S BGPN4=1,BGPN7=1 ;65+ HAD AFTER 65TH DOB BGPN4 IS UPTODATE
  1. I BGPAGEB<65,BGPN1 S BGPN4=1 ;anyone under and had 1 ever ;BGPN4 IS UP TO DATE
  1. ;NATIONAL GPRA
  1. S BGPN8=0
  1. I BGPAGEB<65,BGPN1 S BGPN8=1 ;GPRA DEV UP TO DATE
  1. I BGPAGEB>64,BGPN1,(BGPN4+BGPN7) S BGPN8=1 ;IF 65+ HAD ONE IN PAST 5 YEARS OR AFTER AGE 65
  1. ;GPRA DEV V15.0
  1. D
  1. .S B=$$DOB^AUPNPAT(DFN)
  1. .S BGPA65BD=$E(B,1,3)+65_$E(B,4,7),BGPPNA65=""
  1. .;I BGPAGEB>64 S BGPPNA65=$$PNEUD(DFN,BGPA65BD,BGPEDATE)
  1. .;I BGPAGEB>64 I $P(BGPPNA65,U,3)=1!($P(BGPPNA65,U,3)=3) S BGPN37=1,BGPN28=1 ;HAD PNEUMO AFTER 65TH DOB UPTODATE
  1. .S (BGPPNEU,BGPPLPNU)=$$PNEUD(DFN,$$DOB^AUPNPAT(DFN),BGPEDATE) ;set to date of PNEU shot EVER
  1. .I $P(BGPPNEU,U,3)=1!($P(BGPPNEU,U,3)=3) S BGPN23=1 ; ALL USERS HAD 1 EVER -
  1. .I $P(BGPPNEU,U,3)=3 S BGPN24=1 ;NMI
  1. .S BGPPNEUD=$$PNEUD(DFN,$$FMADD^XLFDT(BGPEDATE,-(5*365)),BGPEDATE)
  1. .I $P(BGPPNEUD,U,3)=1!($P(BGPPNEUD,U,3)=3) S BGPN25=1,BGPN37=1 ;HAD IN PAST 5 YEARS SO "UP TO DATE"
  1. .I $P(BGPPNEUD,U,3)=3 S BGPN26=1 ;NMI PAST 5 YRS
  1. .S BGPN27=0,BGPA65="" I BGPAGEB>64 S BGPA65=$$PNEUD(DFN,BGPA65BD,BGPEDATE) I $P(BGPA65,U,3)=1!($P(BGPA65,U,3)=3) S BGPN25=1,BGPN27=1,BGPN37=1 ;over 65 and had one after 65
  1. .I BGPAGEB<65,BGPN23 S BGPN25=1,BGPN37=1 ;anyone under and had 1 ever ;BGPN4 IS UP TO DATE
  1. ;GPRA DEV
  1. S BGPN28=0
  1. I BGPAGEB<65,BGPN23 S BGPN28=1 ;GPRA DEV UP TO DATE
  1. I BGPAGEB>64,BGPN23,(BGPN25+BGPN27) S BGPN28=1 ;IF UNDER 66 HAD 1 EVER, IF OVER 65 HAD ONE IN PAST 5 YEARS OR AFTER AGE 65
  1. I BGPN28 S BGPN37=1
  1. I 'BGPN37 S BGPPLPNU=$$PNEUCONJ(DFN,BGPBDATE,BGPEDATE) I $P(BGPPLPNU,U,3)=1!($P(BGPPLPNU,U,3)=3) S BGPN36=1,BGPN37=1
  1. I BGPPLPNU="" S BGPPLPNU=BGPPNEU
  1. S BGPDV=""
  1. I BGPRTYPE=1 S BGPDV="" D
  1. .I BGPD1 S BGPDV=BGPDV_$S(BGPDV]"":",AC",1:"AC")
  1. .I BGPD2 S BGPDV=BGPDV_$S(BGPDV]"":",AD",1:"AD")
  1. .I BGPN1 S BGPVALH=BGPVALUE,BGPVALUE=BGPDV_"|||" I BGPVALH]"" S BGPVALUE=BGPVALUE_"Pneumo: "_$$DATE^BGP6UTL($P(BGPVALH,U,1))_" "_$P(BGPVALH,U,2)_$S(BGPVALH]"":" (ever)",1:"")_" "_$S(BGPN8:" (up-to-date)",1:"") Q
  1. .S BGPVALUE=BGPDV_"|||"
  1. I BGPRTYPE=4 D
  1. .S BGPDV="UP"
  1. .I BGPD6!(BGPD1)!(BGPD8) S BGPDV=BGPDV_$S(BGPDV]"":",AC",1:"AC")
  1. .I BGPD4!(BGPD5) S BGPDV=BGPDV_$S(BGPDV]"":",HR",1:"HR")
  1. .I BGPD2 S BGPDV=BGPDV_$S(BGPDV]"":",AD",1:"AD")
  1. I BGPRTYPE=7 S BGPDV=$S(BGPD6:"AC",BGPD8:"AC",1:"") S:BGPD4 BGPDV=BGPDV_$S(BGPDV]"":",HR",1:"HR") S:BGPD2 BGPDV=BGPDV_$S(BGPDV]"":",AD",1:"AD")
  1. D
  1. .I BGPRTYPE'=1 S BGPVALH=BGPVALUE,BGPVALUE=BGPDV_"|||" I BGPVALH]"" S BGPVALUE=BGPVALUE_"Pneumo: "_$$DATE^BGP6UTL($P(BGPVALH,U,1))_" "_$P(BGPVALH,U,2)_$S(BGPVALH]"":" (ever)",1:"")_" "_$S(BGPN8:" (up-to-date)",1:"")
  1. .S BGPVALUD="AC"_"|||"
  1. .I BGPN28!(BGPN37) S BGPVALUD=BGPVALUD_"Pneumo: "_$$DATE^BGP6UTL($P(BGPPLPNU,U,1))_" "_$P(BGPPLPNU,U,2)_$S(BGPPLPNU]"":" (ever)",1:"")_" "
  1. .I BGPN28 S BGPVALUD=BGPVALUD_"(up-to-date)" ;_$S((BGPN28!(BGPN37)),'BGPN36:"(up-to-date)",1:"")
  1. .I BGPN36 S BGPVALUD=BGPVALUD_" (conj)"
  1. TD ;new tdap and td stuff for v11.1
  1. S BGPTDAP=$$DTAP^BGP6D3A(DFN,$$DOB^AUPNPAT(DFN),BGPEDATE)
  1. I BGPTDAP S BGPN9=1
  1. I $P(BGPTDAP,U,1)=2 S BGPN12=1
  1. S BGPTD=$$DTAPTD^BGP6D3A(DFN,$$FMADD^XLFDT(BGPEDATE,-(10*365)),BGPEDATE)
  1. I BGPTD S BGPN10=1
  1. I $P(BGPTD,U,1)=2 S BGPN11=1
  1. I BGPRTYPE=5 G TDE
  1. ;FLU - 14.1
  1. S BGPFLU=$$FLU^BGP6D3(DFN,,BGPEDATE)
  1. I $P(BGPFLU,U,3)=1!($P(BGPFLU,U,3)=3) S BGPN13=1
  1. I $P(BGPFLU,U,3)=3 S BGPN14=1
  1. I BGPN9,BGPN10,BGPN13 S BGPN15=1
  1. I BGPN9,BGPN10 S BGPN30=1 ;TD 10 YRS/TDAP EVER
  1. I BGPN11!(BGPN12)!(BGPN14) S BGPN16=1
  1. I BGPN11!(BGPN12) S BGPN31=1 ;1:1 CONTRA
  1. S BGPZOST=$$IZOSTER(DFN,$$DOB^AUPNPAT(DFN),BGPEDATE)
  1. I $P(BGPZOST,U,3)=1!($P(BGPZOST,U,3)=3) S BGPN17=1
  1. I $P(BGPZOST,U,3)=3 S BGPN18=1
  1. I BGPN9,BGPN10,BGPN13,BGPN17 S BGPN19=1
  1. I BGPN9,BGPN10,BGPN17 S BGPN32=1 ;1:1:1: TD/TDAP/ZOSTER
  1. I BGPN11!(BGPN12)!(BGPN14)!(BGPN18) S BGPN20=1
  1. I BGPN11!(BGPN12)!(BGPN18) S BGPN33=1 ;1:1:1 TD/TDAP/ZOSTER CONTRA
  1. I BGPN9,BGPN10,BGPN13,BGPN17,BGPN8 S BGPN21=1
  1. I BGPN9,BGPN10,BGPN17,BGPN8 S BGPN34=1
  1. I BGPN11!(BGPN12)!(BGPN14)!(BGPN18)!(BGPN3) S BGPN22=1
  1. I BGPN11!(BGPN12)!(BGPN18)!(BGPN3) S BGPN35=1
  1. I BGPN9,BGPN10,BGPN13,BGPN17,BGPN37 S BGPN29=1
  1. I BGPN9,BGPN10,BGPN17,BGPN37 S BGPN38=1
  1. ;NEW FOR V16.0
  1. S BGPTRIM=""
  1. I BGPD14 D
  1. .S BGPVALUD="AC;PREG|||"_$P(BGPVALUD,"|||",2)
  1. .S BGPFPRDX=$$FIRSTPDX^BGP6D3C(DFN,$$FMADD^XLFDT(BGPEDATE,-608),BGPEDATE)
  1. .;GET EDD
  1. .S BGPEDD=$$EDD^BGP6UTL2(DFN,BGPBDATE,BGPEDATE)
  1. .K BGPTDAPP
  1. .S D=BGPEDATE
  1. .I BGPEDD]"",BGPEDD<BGPEDATE S D=BGPEDD
  1. .S BGPTDAPP=$$LASTTDAP(DFN,BGPFPRDX,D)
  1. .I $E(BGPTDAPP) S BGPN39=1 ;A SHOT OR AN NMI
  1. .I $E(BGPTDAPP)=2 S BGPN40=1 ;NMI
  1. .I 'BGPN39 Q
  1. .;FIGURE OUT TRIMESTER
  1. .I BGPEDD D Q
  1. ..;FIGURE OUT TRIMESTER FOR ALL TDAPS, IF ANY ARE 3RD USE IT, THEN DO 2ND, THEN DO 1ST
  1. ..;FIRST DAY OF PREG IS 280 DAYS BEFORE EDD
  1. ..NEW FB,FE,SB,SE,TB,TE
  1. ..S G=""
  1. ..S TB=$$FMADD^XLFDT(BGPEDD,-91)
  1. ..S TE=BGPEDD
  1. ..S SB=$$FMADD^XLFDT(BGPEDD,-182)
  1. ..S SE=$$FMADD^XLFDT(TB,-1)
  1. ..S FB=$$FMADD^XLFDT(BGPEDD,-280)
  1. ..S FE=$$FMADD^XLFDT(SB,-1)
  1. ..S X=$P(BGPTDAPP,U,2)
  1. ..I X'<TB,X'>TE S G=G_3
  1. ..I X'>SE,X'<SB S G=G_2
  1. ..I X>FB S G=G_1
  1. ..I G[3 S BGPN43=1,BGPTRIM="3rd Trimester" Q
  1. ..I G[2 S BGPN42=1,BGPTRIM="2nd Trimester" Q
  1. ..I G[1 S BGPN41=1,BGPTRIM="1st Trimester" Q
  1. ..I G="" S BGPN44=1,BGPTRIM="unk Trimester"
  1. .I BGPEDD="" D ;try to find icd codes
  1. ..S X=$P(BGPTDAPP,U,2) D
  1. ...;get all dxs tri, sec, 1st
  1. ...S G=""
  1. ...S Y=$$LASTDX^BGP6UTL1(DFN,"BGP PREGNANCY TRI 3 DXS",$$FMADD^XLFDT(X,-7),$$FMADD^XLFDT(X,7))
  1. ...I Y S G=G_3
  1. ...S Y=$$LASTDX^BGP6UTL1(DFN,"BGP PREGNANCY TRI 2 DXS",$$FMADD^XLFDT(X,-7),$$FMADD^XLFDT(X,7))
  1. ...I Y S G=G_2
  1. ...S Y=$$LASTDX^BGP6UTL1(DFN,"BGP PREGNANCY TRI 1 DXS",$$FMADD^XLFDT(X,-7),$$FMADD^XLFDT(X,7))
  1. ...I Y S G=G_1
  1. ..I G[3 S BGPN43=1,BGPTRIM="3rd Trimester" Q
  1. ..I G[2 S BGPN42=1,BGPTRIM="2nd Trimester" Q
  1. ..I G[1 S BGPN41=1,BGPTRIM="1st Trimester" Q
  1. ..I G="" S BGPN44=1,BGPTRIM="unk Trimester"
  1. N ;
  1. I BGPTDAP S BGPVALUE=BGPVALUE_$S($P(BGPVALUE,"|||",2)]"":"; ",1:""),BGPVALUE=BGPVALUE_"TDAP: "_$P(BGPTDAP,U,2)_" (ever)"
  1. I BGPTD S BGPVALUE=BGPVALUE_$S($P(BGPVALUE,"|||",2)]"":"; ",1:""),BGPVALUE=BGPVALUE_"TDAP/TD: "_$P(BGPTD,U,2)_" (past 10 yrs)"
  1. I BGPFLU S BGPVALUE=BGPVALUE_$S($P(BGPVALUE,"|||",2)]"":"; ",1:""),BGPVALUE=BGPVALUE_"FLU: "_$P(BGPFLU,U,2)_" (past yr)"
  1. I BGPZOST S BGPVALUE=BGPVALUE_$S($P(BGPVALUE,"|||",2)]"":"; ",1:""),BGPVALUE=BGPVALUE_"ZOSTER: "_$P(BGPZOST,U,2)_" (ever)"
  1. I BGPTDAP S BGPVALUD=BGPVALUD_$S($P(BGPVALUD,"|||",2)]"":"; ",1:""),BGPVALUD=BGPVALUD_"TDAP: "_$S($P(BGPDTAPP,U,3)]"":$P(BGPDTAPP,U,3),1:$P(BGPTDAP,U,2))_" (ever) "_$S(BGPTRIM]"":"("_BGPTRIM_")",1:"")
  1. I BGPTD S BGPVALUD=BGPVALUD_$S($P(BGPVALUD,"|||",2)]"":"; ",1:""),BGPVALUD=BGPVALUD_"TDAP/TD: "_$P(BGPTD,U,2)_" (past 10 yrs)"
  1. I BGPFLU S BGPVALUD=BGPVALUD_$S($P(BGPVALUD,"|||",2)]"":"; ",1:""),BGPVALUD=BGPVALUD_"FLU: "_$P(BGPFLU,U,2)_" (past yr)"
  1. I BGPZOST S BGPVALUD=BGPVALUD_$S($P(BGPVALUD,"|||",2)]"":"; ",1:""),BGPVALUD=BGPVALUD_"ZOSTER: "_$P(BGPZOST,U,2)_" (ever)"
  1. TDE K BGPLPNU,BGPVAL,BGPA65,BGPVALH,BGPTD,BGPTDAP,BGPFLU,BGPTDAPP,BGPPNCON
  1. Q
  1. IZOSTER(P,BDATE,EDATE,FORE) ;EP
  1. NEW BGPLPNU,BGPG,X,E,R,BD,ED,G,%
  1. S BGPLPNU=""
  1. S BD=BDATE
  1. S ED=EDATE
  1. S EDATE=$$FMTE^XLFDT(EDATE)
  1. S BDATE=$$FMTE^XLFDT(BDATE)
  1. S X=P_"^LAST IMM 121;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(X,"BGPG(")
  1. I $D(BGPG(1)),$P(BGPLPNU,U,1)<$P(BGPG(1),U) S BGPLPNU=$P(BGPG(1),U,1)_U_"Imm 121"
  1. S %=$$CPT^BGP6DU(P,BD,ED,$O(^ATXAX("B","BGP ZOSTER IZ CPTS",0)),5)
  1. I $P(BGPLPNU,U,1)<$P(%,U,1) S BGPLPNU=$P(%,U,1)_U_"CPT "_$P(%,U,2)
  1. S %=$$TRAN^BGP6DU(P,BD,ED,$O(^ATXAX("B","BGP ZOSTER IZ CPTS",0)),5)
  1. I $P(BGPLPNU,U,1)<$P(%,U,1) S BGPLPNU=$P(%,U,1)_U_"CPT "_$P(%,U,2)
  1. I BGPLPNU]"" Q BGPLPNU_U_1
  1. ;NOW CHECK FOR CONTRAINDICATION (NEW IN 8.0)
  1. F BGPZ=121 S X=$$ANIMCONT^BGP6D31(P,BGPZ,ED)
  1. I X]"" Q X_U_3
  1. ;NMI Refusal
  1. S G=$$NMIREF^BGP6UTL1(P,9999999.14,$O(^AUTTIMM("C",121,0)),$$DOB^AUPNPAT(P),ED)
  1. I $P(G,U)=1 Q $P(G,U,2)_U_"NMI Refusal"_U_3
  1. S R=$$CPTREFT^BGP6UTL1(P,$$DOB^AUPNPAT(P),ED,$O(^ATXAX("B","BGP ZOSTER IZ CPTS",0)),"N")
  1. I R Q $P(R,U,2)_U_"NMI Refusal "_$P(R,U,4)_U_3
  1. Q ""
  1. ;
  1. PNEUD(P,BDATE,EDATE,FORE) ;EP
  1. K BGPG
  1. S BGPLPNU=""
  1. S BD=BDATE
  1. S ED=EDATE
  1. S EDATE=$$FMTE^XLFDT(EDATE)
  1. S BDATE=$$FMTE^XLFDT(BDATE)
  1. S X=P_"^LAST IMM "_$S($$BI^BGP6D31:33,1:19)_";DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(X,"BGPG(")
  1. I $D(BGPG(1)) S BGPLPNU=$P(BGPG(1),U)_U_"Imm 33"
  1. S X=P_"^LAST IMM 109;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(X,"BGPG(")
  1. I $D(BGPG(1)),$P(BGPLPNU,U,1)<$P(BGPG(1),U) S BGPLPNU=$P(BGPG(1),U,1)_U_"Imm 109"
  1. K BGPG S %=P_"^LAST DX V03.82;DURING "_BDATE_"-"_EDATE,E=$$START1^APCLDF(%,"BGPG(")
  1. I $D(BGPG(1)),$P(BGPLPNU,U,1)<$P(BGPG(1),U) S BGPLPNU=$P(BGPG(1),U,1)_U_"POV "_$P(BGPG(1),U,2)
  1. S %=$$CPT^BGP6DU(P,BD,ED,$O(^ATXAX("B","BGP PNEUMO IZ CPT DEV",0)),5)
  1. I $P(BGPLPNU,U,1)<$P(%,U,1) S BGPLPNU=$P(%,U,1)_U_"CPT "_$P(%,U,2)
  1. S %=$$TRAN^BGP6DU(P,BD,ED,$O(^ATXAX("B","BGP PNEUMO IZ CPT DEV",0)),5)
  1. I $P(BGPLPNU,U,1)<$P(%,U,1) S BGPLPNU=$P(%,U,1)_U_"CPT "_$P(%,U,2)
  1. I BGPLPNU]"" Q BGPLPNU_U_1
  1. ;NOW CHECK FOR CONTRAINDICATION (NEW IN 8.0)
  1. F BGPZ=33,109 S X=$$ANCONT^BGP6D31(P,BGPZ,ED) Q:X]""
  1. I X]"" Q X_U_3
  1. ;NMI Refusal
  1. S G=$$NMIREF^BGP6UTL1(P,9999999.14,$O(^AUTTIMM("C",33,0)),$$DOB^AUPNPAT(P),ED)
  1. I $P(G,U)=1 Q $P(G,U,2)_U_"NMI Refusal"_U_3
  1. S G=$$NMIREF^BGP6UTL1(P,9999999.14,$O(^AUTTIMM("C",109,0)),$$DOB^AUPNPAT(P),ED)
  1. I $P(G,U)=1 Q $P(G,U,2)_U_"NMI Refusal"_U_3
  1. S R=$$CPTREFT^BGP6UTL1(P,$$DOB^AUPNPAT(P),ED,$O(^ATXAX("B","BGP PNEUMO IZ CPT DEV",0)),"N")
  1. I R Q $P(R,U,2)_U_"NMI Refusal "_$P(R,U,4)_U_3
  1. Q ""
  1. ;
  1. PNEUCONJ(P,BDATE,EDATE,FORE) ;EP
  1. K BGPG
  1. S BGPLPNU=""
  1. S BD=BDATE
  1. S ED=EDATE
  1. S EDATE=$$FMTE^XLFDT(EDATE)
  1. S BDATE=$$FMTE^XLFDT(BDATE)
  1. S X=P_"^LAST IMM 100;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(X,"BGPG(")
  1. I $D(BGPG(1)),$P(BGPLPNU,U,1)<$P(BGPG(1),U) S BGPLPNU=$P(BGPG(1),U,1)_U_"Imm 100"
  1. S X=P_"^LAST IMM 133;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(X,"BGPG(")
  1. I $D(BGPG(1)),$P(BGPLPNU,U,1)<$P(BGPG(1),U) S BGPLPNU=$P(BGPG(1),U,1)_U_"Imm 133"
  1. S X=P_"^LAST IMM 152;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(X,"BGPG(")
  1. I $D(BGPG(1)),$P(BGPLPNU,U,1)<$P(BGPG(1),U) S BGPLPNU=$P(BGPG(1),U,1)_U_"Imm 152"
  1. S %=$$CPT^BGP6DU(P,BD,ED,$O(^ATXAX("B","BGP PNEUMO CONJUGATE CPTS",0)),5)
  1. I $P(BGPLPNU,U,1)<$P(%,U,1) S BGPLPNU=$P(%,U,1)_U_"CPT "_$P(%,U,2)_""
  1. S %=$$TRAN^BGP6DU(P,BD,ED,$O(^ATXAX("B","BGP PNEUMO CONJUGATE CPTS",0)),5)
  1. I $P(BGPLPNU,U,1)<$P(%,U,1) S BGPLPNU=$P(%,U,1)_U_"CPT "_$P(%,U,2)_""
  1. I BGPLPNU]"" Q BGPLPNU_U_1
  1. ;NOW CHECK FOR CONTRAINDICATION (NEW IN 8.0)
  1. F BGPZ=100,133,152 S X=$$ANCONT^BGP6D31(P,BGPZ,ED) Q:X]""
  1. I X]"" Q X_U_3
  1. ;NMI Refusal
  1. S G=$$NMIREF^BGP6UTL1(P,9999999.14,$O(^AUTTIMM("C",100,0)),$$DOB^AUPNPAT(P),ED)
  1. I $P(G,U)=1 Q $P(G,U,2)_U_"NMI Refusal"_U_3
  1. S G=$$NMIREF^BGP6UTL1(P,9999999.14,$O(^AUTTIMM("C",133,0)),$$DOB^AUPNPAT(P),ED)
  1. I $P(G,U)=1 Q $P(G,U,2)_U_"NMI Refusal"_U_3
  1. S G=$$NMIREF^BGP6UTL1(P,9999999.14,$O(^AUTTIMM("C",152,0)),$$DOB^AUPNPAT(P),ED)
  1. I $P(G,U)=1 Q $P(G,U,2)_U_"NMI Refusal"_U_3
  1. S R=$$CPTREFT^BGP6UTL1(P,$$DOB^AUPNPAT(P),ED,$O(^ATXAX("B","BGP PNEUMO CONJUGATE CPTS",0)),"N")
  1. I R Q $P(R,U,2)_U_"NMI Refusal "_$P(R,U,4)_U_3
  1. Q ""
  1. OPTOM ;
  1. S (BGPD1,BGPN1)=0
  1. I 'BGPACTCL S BGPSTOP=1 Q
  1. I BGPAGEB<18 S BGPSTOP=1 Q
  1. I '$$GLAUCOMA(DFN,BGPBDATE,BGPEDATE) S BGPSTOP=1 Q
  1. S BGPD1=1
  1. S %=$$CPT^BGP6DU(DFN,BGPBDATE,BGPEDATE,$O(^ATXAX("B","BGP OPTIC NERVE HEAD EVAL CPT",0)),6)
  1. I % S BGPN1=1
  1. S BGPVALUE="AC|||"_$$DATE^BGP6UTL($P(%,U,2))_" "_$P(%,U,3)
  1. Q
  1. GLAUCOMA(P,BDATE,EDATE) ;EP
  1. Q $$LASTDX^BGP6UTL1(P,"BGP OPEN ANGLE GLAUCOMA DXS",BDATE,EDATE)
  1. LASTTDAP(P,BDATE,EDATE) ;EP
  1. NEW C,D,BGPX,X,Y,G,B,R,ID,BGPZ
  1. S BGPX=""
  1. S C=$O(^AUTTIMM("C",115,0))
  1. S D=0 F S D=$O(^AUPNVIMM("AA",P,C,D)) Q:D'=+D!(BGPX) D
  1. .S X=0 F S X=$O(^AUPNVIMM("AA",P,C,D,X)) Q:X'=+X D
  1. ..S ID=$P($P($G(^AUPNVIMM(X,12)),U),".")
  1. ..I ID="" Q:$P(^AUPNVIMM(X,0),U,3)=""
  1. ..I ID="" S ID=$$VD^APCLV($P(^AUPNVIMM(X,0),U,3))
  1. ..Q:ID<BDATE
  1. ..Q:ID>EDATE
  1. ..S BGPX=ID_U_$$DATE^BGP6UTL(ID)_" Imm 115"
  1. .Q
  1. ;now add in cpt codes if on different dates
  1. S C=+$$CODEN^ICPTCOD(90715)
  1. S D=$$CPTI^BGP6DU(P,BDATE,EDATE,C)
  1. I $P(D,U,2)>$P(BGPX,U,1) S BGPX=$P(D,U,2)_U_$$DATE^BGP6UTL(D)_" CPT 90715"
  1. I BGPX Q 1_U_BGPX
  1. ;now check contra/nmi
  1. F BGPZ=115 S X=$$ANCONT^BGP6D31(P,BGPZ,EDATE)
  1. I X]"" S BGPX=2_U_$P(X,U,1)_U_$$DATE^BGP6UTL($P(X,U,1))_" "_$P(X,U,2) Q BGPX
  1. ;now go to Refusals
  1. S B=$$DOB^AUPNPAT(P),E=EDATE,BGPNMI="",R=""
  1. F BGPIMM=115 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) D
  1. ..Q:$P(^AUPNPREF(Y,0),U,7)'="N"
  1. ..S R=D
  1. I R S BGPX=2_U_R_U_$$DATE^BGP6UTL(R)_" "_"NMI Dtap" Q BGPX
  1. S R="",B=+$$CODEN^ICPTCOD(90715)
  1. S G=$$NMIREF^BGP6UTL1(P,81,B,$$DOB^AUPNPAT(P),EDATE)
  1. I G S BGPX=2_U_$P(G,U,2)_U_$$DATE^BGP6UTL($P(G,U,2))_" "_"NMI Dtap 90715" Q G
  1. Q ""
  1. PREG(P,BDATE,EDATE) ;
  1. I '$$PREG^BGP6D7(DFN,$$FMADD^XLFDT(EDATE,-608),EDATE,1,1) Q ""
  1. Q 1