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

BGP8D76.m

Go to the documentation of this file.
  1. BGP8D76 ;IHS/CMI/LAB - MEASURE LOGIC;
  1. ;;18.1;IHS CLINICAL REPORTING;;MAY 25, 2018;Build 66
  1. ;
  1. ;
  1. TOBCESSD ;EP = tobacco cessaton, gpra dev v18
  1. I 'BGPACTUP S BGPSTOP=1 Q ;must be at least user pop
  1. S (BGPVALUD,BGPVALUE)=""
  1. S (BGPD1,BGPD2,BGPN1,BGPN2,BGPN3)=0
  1. K BGPTOBS,BGPTOBL,BGPTOBE,BGPTOBT
  1. S (BGPTOBSL,BGPTOBLL,BGPTOBEL,BGPTOBTL)="" ;for last of each
  1. S (BGPCTU,BGPSMK,BGPSMKL,BGPSMKE,BGPDNV,BGPNMV,BGPGOT,BGPGOTS,BGPGOTL,BGPL,BGPPTU,BGPTU)=""
  1. ;get all TOBACCO (SMOKING) during report period
  1. S BGPL=""
  1. D ALLHF(DFN,BGPBDATE,BGPEDATE,"TOBACCO (SMOKING)","BGPTOBS")
  1. S X=0 F S X=$O(BGPTOBS(X)) Q:X'=+X!(BGPSMK) D
  1. .S BGPL=X
  1. .I BGPTOBS(BGPL)["CESSATION" S BGPCTU=1,BGPSMK=1 Q
  1. .I BGPTOBS(BGPL)["CURRENT SMOKER" S BGPCTU=1,BGPSMK=1 Q
  1. .I BGPTOBS(BGPL)["HEAVY TOBACCO SMOKER" S BGPCTU=1,BGPSMK=1 Q
  1. .I BGPTOBS(BGPL)["LIGHT TOBACCO SMOKER" S BGPCTU=1,BGPSMK=1 Q
  1. I BGPCTU S BGPDNV="USER: "_$P(BGPTOBS(BGPL),U,2)_"("_$$DATE^BGP8UTL($P(BGPTOBS(BGPL),U,1))_")",BGPGOT=1
  1. I BGPSMK S BGPDNV=BGPDNV_"; SMOKER: "_$P(BGPTOBS(BGPL),U,2)_"("_$$DATE^BGP8UTL($P(BGPTOBS(BGPL),U,1))_")",BGPGOTS=1
  1. SML ;
  1. S BGPL=""
  1. D ALLHF(DFN,BGPBDATE,BGPEDATE,"TOBACCO (SMOKELESS - CHEWING/DIP)","BGPTOBL")
  1. S X=0 F S X=$O(BGPTOBL(X)) Q:X'=+X!(BGPSMKL) D
  1. .S BGPL=X
  1. .I BGPTOBL(BGPL)["CESSATION" S BGPCTU=1,BGPSMKL=1 Q
  1. .I BGPTOBL(BGPL)["CURRENT SMOKE" S BGPCTU=1,BGPSMKL=1 Q
  1. I BGPCTU,'BGPGOT S BGPDNV="USER: "_$P(BGPTOBL(BGPL),U,2)_"("_$$DATE^BGP8UTL($P(BGPTOBL(BGPL),U,1))_")",BGPGOT=1
  1. I BGPSMKL S BGPDNV=BGPDNV_"; SMOKELESS: "_$P(BGPTOBL(BGPL),U,2)_"("_$$DATE^BGP8UTL($P(BGPTOBL(BGPL),U,1))_")",BGPGOTL=1
  1. ENDS ;
  1. S BGPL=""
  1. D ALLHF(DFN,BGPBDATE,BGPEDATE,"ELECTRONIC NICOTINE DELIV SYSTEM (ENDS)","BGPTOBE")
  1. S X=0 F S X=$O(BGPTOBE(X)) Q:X'=+X!(BGPSMKE) D
  1. .S BGPL=X
  1. .I BGPTOBE(BGPL)["CESSATION" S BGPCTU=1,BGPSMKE=1 Q
  1. .I BGPTOBE(BGPL)["CURRENT" S BGPCTU=1,BGPSMKE=1 Q
  1. I BGPCTU,'BGPGOT S BGPDNV="USER: "_$P(BGPTOBE(BGPL),U,2)_"("_$$DATE^BGP8UTL($P(BGPTOBE(BGPL),U,1))_")",BGPGOT=1
  1. I BGPSMKE S BGPDNV=BGPDNV_"; ENDS: "_$P(BGPTOBE(BGPL),U,2)_"("_$$DATE^BGP8UTL($P(BGPTOBE(BGPL),U,1))_")"
  1. ;
  1. PREV ;get last of each before time period.
  1. S BGPBDX=$$DOB^AUPNPAT(DFN),BGPEDX=$$FMADD^XLFDT(BGPBDATE,-1)
  1. ;
  1. PSMK I 'BGPSMK D ;IF NOT A SMOKER GET LAST IN PREVIOUS TIME PERIOD
  1. .K BGPTOBS
  1. .S C=$$LASTHF^BGP8D7(DFN,"TOBACCO (SMOKING)",BGPBDX,BGPEDX)
  1. .I C]"" S BGPTOBS(1)=$P(C,U,3)_"^"_$P(C,U,1)
  1. .;now recheck all
  1. .S BGPL=1 I $D(BGPTOBS(1)) D
  1. ..I BGPTOBS(BGPL)["CESSATION" S BGPPTU=1,BGPSMK=1 Q
  1. ..I BGPTOBS(BGPL)["CURRENT SMOKER" S BGPPTU=1,BGPSMK=1 Q
  1. ..I BGPTOBS(BGPL)["HEAVY TOBACCO SMOKER" S BGPPTU=1,BGPSMK=1 Q
  1. ..I BGPTOBS(BGPL)["LIGHT TOBACCO SMOKER" S BGPPTU=1,BGPSMK=1 Q
  1. .Q:'BGPSMK
  1. .I 'BGPCTU,BGPPTU S BGPDNV="USER: "_$P(BGPTOBS(BGPL),U,2)_"("_$$DATE^BGP8UTL($P(BGPTOBS(BGPL),U,1))_")",BGPGOT=1
  1. .S BGPDNV=BGPDNV_"; SMOKER: "_$P(BGPTOBS(BGPL),U,2)_"("_$$DATE^BGP8UTL($P(BGPTOBS(BGPL),U,1))_")",BGPGOTS=1
  1. PSML ;
  1. I 'BGPSMKL D
  1. .K BGPTOBL
  1. .S C=$$LASTHF^BGP8D7(DFN,"TOBACCO (SMOKELESS - CHEWING/DIP)",BGPBDX,BGPEDX)
  1. .I C]"" S BGPTOBL(1)=$P(C,U,3)_"^"_$P(C,U,1)
  1. .S BGPL=1 I $D(BGPTOBL(1)) D
  1. ..I BGPTOBL(BGPL)["CESSATION" S BGPPTU=1,BGPSMKL=1 Q
  1. ..I BGPTOBL(BGPL)["CURRENT SMOKE" S BGPPTU=1,BGPSMKL=1 Q
  1. .Q:'BGPSMKL
  1. .I BGPPTU,'BGPCTU S BGPDNV="USER: "_$P(BGPTOBL(BGPL),U,2)_"("_$$DATE^BGP8UTL($P(BGPTOBL(BGPL),U,1))_")",BGPGOT=1
  1. .S BGPDNV=BGPDNV_"; SMOKELESS: "_$P(BGPTOBL(BGPL),U,2)_"("_$$DATE^BGP8UTL($P(BGPTOBL(BGPL),U,1))_")",BGPGOTL=1
  1. PREVENDS ;
  1. I 'BGPSMKE D
  1. .K BGPTOBE
  1. .S C=$$LASTHF^BGP8D7(DFN,"ELECTRONIC NICOTINE DELIV SYSTEM (ENDS)",BGPBDX,BGPEDX)
  1. .I C]"" S BGPTOBE(1)=$P(C,U,3)_"^"_$P(C,U,1)
  1. .S BGPL=1 I $D(BGPTOBE(1)) D
  1. ..I BGPTOBE(BGPL)["CESSATION" S BGPTU=1,BGPSMKE=1 Q
  1. ..I BGPTOBE(BGPL)["CURRENT" S BGPTU=1,BGPSMKE=1 Q
  1. .Q:'BGPSMKE
  1. .I BGPTU,'BGPCTU S BGPDNV="USER: "_$P(BGPTOBE(BGPL),U,2)_"("_$$DATE^BGP8UTL($P(BGPTOBE(BGPL),U,1))_")",BGPGOT=1
  1. .S BGPDNV=BGPDNV_"; ENDS: "_$P(BGPTOBE(BGPL),U,2)_"("_$$DATE^BGP8UTL($P(BGPTOBE(BGPL),U,1))_")"
  1. ;
  1. ;
  1. SET ;
  1. I BGPCTU!(BGPPTU) S BGPTU=1
  1. I 'BGPTU S BGPSTOP=1 D KVARS Q ;not in this denominator at all
  1. S BGPD1=1 ;UP
  1. I BGPACTCL S BGPD2=1
  1. ;
  1. ;get numerator stuff
  1. ;BGPN1=tobacco cessation counseling or prescription
  1. ;BGPN2=quit
  1. ;BGPN3 - any of them
  1. S BGPTC1=$$PED^BGP8D711(DFN,BGPBDATE,BGPEDATE,1)
  1. I $P(BGPTC1,U)]"" S BGPN1=1,BGPN3=1
  1. ;did they quit? check each
  1. ;SMOKER
  1. S BGPQ=""
  1. I BGPSMK S X=$$LASTHF^BGP8D7(DFN,"TOBACCO (SMOKING)",$$DOB^AUPNPAT(DFN),BGPEDATE) G:$P(X,U,1)'["PREVIOUS" S2 S BGPQ="QUIT SMOKING: "_$P(X,U,2)_" "_$P(X,U,1)
  1. I BGPSMKL S X=$$LASTHF^BGP8D7(DFN,"TOBACCO (SMOKELESS - CHEWING/DIP)",$$DOB^AUPNPAT(DFN),BGPEDATE) G:$P(X,U,1)'["PREVIOUS" S2 S BGPQ=BGPQ_$S(BGPQ]"":"; ",1:"")_"QUIT SMOKELESS: "_$P(X,U,2)_" "_$P(X,U,1)
  1. I BGPSMKE S X=$$LASTHF^BGP8D7(DFN,"ELECTRONIC NICOTINE DELIV SYSTEM (ENDS)",$$DOB^AUPNPAT(DFN),BGPEDATE) G:$P(X,U,1)'["PREVIOUS" S2 S BGPQ=BGPQ_$S(BGPQ]"":"; ",1:"")_"QUIT ENDS: "_$P(X,U,2)_" "_$P(X,U,1)
  1. S BGPN2=1,BGPN3=1
  1. S2 ;SET BGPVALUE
  1. S BGPVALUD="UP"_$S(BGPD2:",AC",1:"")_" "_BGPDNV
  1. D
  1. .S BGPVALUD=BGPVALUD_"|||"_$S($P(BGPTC1,U):"COUNSEL: "_$$DATE^BGP7UTL($P(BGPTC1,U))_" "_$P(BGPTC1,U,2),1:"")
  1. .I BGPN2 S BGPVALUD=BGPVALUD_"; "_BGPQ ;_" "_$P(BGPQ,U,3)
  1. KVARS ;
  1. K BGPTOBS,BGPTOBL,BGPTOBE,BGPTOBT,BGPTOBSL,BGPTOBLL,BGPTOBEL,BGPTOBTL,BGPTU,BGPSMK,BGPSMKL,BGPSMKE,BGPGOT,BGPGOTS,BGPGOTL,BGPL,BGPTU,BGPCTU,BGPPTU
  1. Q
  1. GETLAST ;
  1. NEW BGPBDX,BGPEDX,S,T,C,E
  1. S BGPBDX=$$DOB^AUPNPAT(DFN),BGPEDX=$$FMADD^XLFDT(BGPBDATE,-1)
  1. S C=$$LASTHF^BGP8D7(DFN,"TOBACCO (SMOKING)",BGPBDX,BGPEDX)
  1. I C]"" S BGPTOBS(1)=$P(C,U,3)_"^"_$P(C,U,1)
  1. S C=$$LASTHF^BGP8D7(DFN,"TOBACCO (SMOKELESS - CHEWING/DIP)",BGPBDX,BGPEDX)
  1. I C]"" S BGPTOBL(1)=$P(C,U,3)_"^"_$P(C,U,1)
  1. S C=$$LASTHF^BGP8D7(DFN,"ELECTRONIC NICOTINE DELIV SYSTEM (ENDS)",BGPBDX,BGPEDX)
  1. I C]"" S BGPTOBE(1)=$P(C,U,3)_"^"_$P(C,U,1)
  1. S C=$$LASTHF^BGP8D7(DFN,"TOBACCO",BGPBDX,BGPEDX)
  1. I C]"" S BGPTOBT(1)=$P(C,U,3)_"^"_$P(C,U,1)
  1. Q
  1. ALLHF(P,BD,ED,CAT,RETVAL) ;\
  1. NEW H,D,C
  1. S (H,D,C)=0
  1. S CAT=$O(^AUTTHF("B",CAT,0))
  1. F S H=$O(^AUTTHF("AC",CAT,H)) Q:'+H D
  1. .Q:'$D(^AUPNVHF("AA",DFN,H))
  1. .S D="" F S D=$O(^AUPNVHF("AA",DFN,H,D)) Q:D'=+D D
  1. ..Q:(9999999-D)>ED ;after time frame
  1. ..Q:(9999999-D)<BD ;before time frame
  1. ..S C=C+1
  1. ..S @RETVAL@(C)=(9999999-$P(D,"."))_"^"_$P(^AUTTHF(H,0),U,1)
  1. .Q
  1. Q