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

BDMDC10.m

Go to the documentation of this file.
BDMDC10 ; IHS/CMI/LAB -IHS -GETS DATA FOR DIABETES QA REPORT ; 10 Oct 2014  1:58 PM
 ;;2.0;DIABETES MANAGEMENT SYSTEM;**8**;JUN 14, 2007;Build 53
 ;
 ;
EN ; - ENTRY POINT - from ^BDMASK
 D UNFOLDTX^BDMUTL(2015)  ;cmi/maw 05/14/2014 patch 8 lets store all tax up front for checking call
 K ^BDMDCTA("BDMEPI",$J)
 S ^XTMP("BDMDM15",0)=$$FMADD^XLFDT(DT,14)_"^"_DT_"^DM AUDIT 2015"
 S BDMEPIN=0
 S BDMPD=0 F  S BDMPD=$O(^XTMP("BDMDM15",BDMJOB,BDMBTH,"PATS",BDMPD)) Q:'BDMPD  D
 .I BDMTYPE'="P" Q:$$DEMO^BDMUTL(BDMPD,$G(BDMDEMO))
 .I BDMPREP=2 D EPIREC Q
 .D GATHER
 I BDMPREP=2 D WRITEF^BDMDC1 Q
 I BDMPREP=3!(BDMPREP=4) D CUML^BDMDC15
 I BDMPREP=5 D SDPI^BDMDC1S
 Q
S(P,I,V) ;
 S ^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",P,I)=V
 Q
REC(DFN,BDMRTYP,BDMRBD,BDMRED,BDMED,BDMDMRG,BDMBDAT) ;EP - called to send back a visit record as
 NEW BDMX,BDMREC
 S BDMREC=""
 S BDMRTYP("IEN")=$O(^BDMRECD("B",BDMRTYP,0))
 I 'BDMRTYP("IEN") Q BDMREC
PROC ;
 S BDMEPIX=0
 F  S BDMEPIX=$O(^BDMRECD(BDMRTYP("IEN"),11,"AC",BDMEPIX)) Q:BDMEPIX'=+BDMEPIX!(BDMREC=-1)  S BDMTTT=$O(^BDMRECD(BDMRTYP("IEN"),11,"AC",BDMEPIX,0))  D
 .S X="" X:$D(^BDMRECD(BDMRTYP("IEN"),11,BDMTTT,11)) ^BDMRECD(BDMRTYP("IEN"),11,BDMTTT,11)
 .I X="" S X=" "
 .S $P(BDMREC,U,$P(^BDMRECD(BDMRTYP("IEN"),11,BDMTTT,0),U,2))=X  ;I DUZ=2836 W !,BDMTTT,?5,$P(^BDMRECD(BDMRTYP("IEN"),11,BDMTTT,0),U),?40,X
 ;W !!,BDMREC
 Q BDMREC
EPIREC ;create epi info record in ^BDMDCTA("BDMEPI",$J,n)
 ;skip this patient if dodx is greater than the audit date
 S X=$$DODX^BDMDC16(BDMPD,BDMDMRG,"I")
 I X>BDMADAT Q
 S BDMEPIR="",BDMTHER=""
 S BDMEPIR=$$REC(BDMPD,"DM AUDIT 2015 EXPORT RECORD",BDMRBD,BDMRED,BDMADAT,BDMDMRG,BDMBDAT),BDMEPIN=BDMEPIN+1,^BDMDCTA("BDMEPI",$J,BDMEPIN)=BDMEPIR
 Q
GATHER ;gather data for 1 patient
 S BDMER=0
 ;set report dates
 S ^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,1)=BDMRBD_" - "_BDMRED
 ;set audit date to DT
 S ^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,2)=$$FMTE^XLFDT(DT)
 ;reviewer
 S ^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,14)=$P(^VA(200,DUZ,0),U,2)  ;reviewer initials
 S ^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,122)=$$COMM(BDMPD)
 S ^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,121)=$S($P($G(^DPT(BDMPD,.11)),U,5):$P($G(^DIC(5,$P(^DPT(BDMPD,.11),U,5),0)),U,2),1:"")  ;state of residence
 S ^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,15)=$$VAL^XBDIQ1(9000001,BDMPD,.14)  ;primary care provider
DEMO ;pat demographics
 S ^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,16)=$$HRN^AUPNPAT(BDMPD,$S($G(BDMDUZ2):BDMDUZ2,1:DUZ(2)))  ;hrn
 S ^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,18)=$$DOB^AUPNPAT(BDMPD,"E")  ;dob
 S ^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,20)=$$VAL^XBDIQ1(2,BDMPD,.02)  ;sex
DXDT ;dates of and dm dxs
 S ^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,22)=$S(BDMDMRG:$$CMSFDX^BDMDC13(BDMPD,BDMDMRG,"D"),1:"")
 S ^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,24)=$S(BDMDMRG:$$CMSFDX^BDMDC13(BDMPD,BDMDMRG,"DX"),1:"")
 S ^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,23)=$$PLDMDOO^BDMDC13(BDMPD)
 D S(BDMPD,25,$$PLDMDXS^BDMDC13(BDMPD))
 D S(BDMPD,21,$$FRSTDMDX^BDMDC13(BDMPD))
 D S(BDMPD,26,$$LASTDMDX^BDMDC13(BDMPD,BDMRED))
 I $$DODX^BDMDC16(BDMPD,BDMDMRG,"I")>BDMADAT D S(BDMPD,26.5,"*** Patient's Date of Onset is after the audit date.") D
 .D S(BDMPD,26.6,"**** This patient will not be included in the cumulative audit.")
 S BDMTYDM="" D TYPEDM,S(BDMPD,29,BDMTYDM)
 D S(BDMPD,27,$$TOBACCO^BDMDC1T(BDMPD,$$DOB^AUPNPAT(BDMPD),BDMADAT))
 D S(BDMPD,215,$$TOBACCO^BDMDC1T(BDMPD,BDMBDAT,BDMADAT))
 D S(BDMPD,28,$$CESS^BDMDC11(BDMPD,BDMBDAT,BDMADAT))
 ;
VITAL ;
 D S(BDMPD,30,$$LASTHT^BDMDC13(BDMPD,BDMRED))
 D S(BDMPD,32,$$LASTWT^BDMDC13(BDMPD,BDMBDAT,BDMADAT))
 D S(BDMPD,112,$$BMI^BDMDC18(BDMPD,BDMRBD,BDMRED))
 ;htn dx
 D S(BDMPD,34,$$HTNDX^BDMDC13(BDMPD,BDMADAT))
 ;last 3 BPs
 D S(BDMPD,36,$$BPS^BDMDC13(BDMPD,BDMRBD,BDMRED))
EXAMS ;
 D S(BDMPD,38,$$DFE^BDMDC17(BDMPD,BDMBDAT,BDMADAT))
 D S(BDMPD,40,$$EYE^BDMDC17(BDMPD,BDMBDAT,BDMADAT))
 D S(BDMPD,42,$$DENTAL^BDMDC17(BDMPD,BDMBDAT,BDMADAT))
 D S(BDMPD,44,$$DIETEDUC^BDMDC17(BDMPD,BDMRBD,BDMRED))
 D S(BDMPD,46,$$EXEDUC^BDMDC17(BDMPD,BDMRBD,BDMRED))
 D S(BDMPD,48,$$OTHEDUC^BDMDC17(BDMPD,BDMRBD,BDMRED))
MH ;
 D S(BDMPD,200,$$DEPDX^BDMDC12(BDMPD,BDMBDAT,BDMADAT))
 S BDMDEP=$E($G(^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,200)))
 D S(BDMPD,210,$S(BDMDEP="1":"",1:$$DEPSCR^BDMDC12(BDMPD,BDMBDAT,BDMADAT)))
THERAPY ;
 S BDM6MBD=$$FMADD^XLFDT(BDMADAT,-(6*31)),BDM6MBD=$$FMTE^XLFDT(BDM6MBD)
 D S(BDMPD,52,$$INSULIN^BDMDC12(BDMPD,BDM6MBD,BDMRED))
 D S(BDMPD,53,$$SULF^BDMDC12(BDMPD,BDM6MBD,BDMRED))
 D S(BDMPD,98,$$SULFLIKE^BDMDC12(BDMPD,BDM6MBD,BDMRED))
 D S(BDMPD,54,$$MET^BDMDC12(BDMPD,BDM6MBD,BDMRED))
 D S(BDMPD,55,$$ACAR^BDMDC12(BDMPD,BDM6MBD,BDMRED))
 D S(BDMPD,56,$$TROG^BDMDC12(BDMPD,BDM6MBD,BDMRED))
 ;D S(BDMPD,58,$$INCR^BDMDC12(BDMPD,BDM6MBD,BDMRED))
 D S(BDMPD,59,$$DPP4^BDMDC12(BDMPD,BDM6MBD,BDMRED))
 D S(BDMPD,99,$$AMYLIN^BDMDC12(BDMPD,BDM6MBD,BDMRED))
 D S(BDMPD,100,$$GLP1^BDMDC12(BDMPD,BDM6MBD,BDMRED))
 D S(BDMPD,101,$$BROM^BDMDC12(BDMPD,BDM6MBD,BDMRED))
 D S(BDMPD,102,$$COLE^BDMDC12(BDMPD,BDM6MBD,BDMRED))
 D S(BDMPD,103,$$SGLT2^BDMDC12(BDMPD,BDM6MBD,BDMRED))
 S Z="" F X=52:1:56,59,98,99,100,101,102,103 I $E($G(^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,X)))="X" S Z=1  ;ANY MED AT ALL?
 ;S Y=$$REFMED^BDMDC12(BDMPD,BDMRBD,BDMRED) S Y=$S(Z:"",Y="":"",1:"X"_U_$P(Y,U,2)) D S(BDMPD,57,Y)  ;REFUSAL OF A MED
 S Y="" F X=52:1:56,59,98,99,100,101,102,103 I $E($G(^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,X)))="X" S Y=1  ;cmi/maw 6/17/2014 per gary
 D S(BDMPD,51,$S(Y:"",1:"X"))
 D S(BDMPD,60,$$ACE^BDMDC16(BDMPD,BDM6MBD,BDMADAT))
 ;
IMM ;
 D S(BDMPD,62,$$ASPIRIN^BDMDC16(BDMPD,BDMBDAT,BDMADAT))
 D S(BDMPD,300,$$STATIN^BDMDC16(BDMPD,BDM6MBD,BDMADAT))
 ;D S(BDMPD,301,$$FIBRATE^BDMDC16(BDMPD,BDM6MBD,BDMADAT))
 ;D S(BDMPD,302,$$NIACIN^BDMDC16(BDMPD,BDM6MBD,BDMADAT))
 ;D S(BDMPD,303,$$BILE^BDMDC16(BDMPD,BDM6MBD,BDMADAT))
 ;D S(BDMPD,304,$$EZET^BDMDC16(BDMPD,BDM6MBD,BDMADAT))
 ;D S(BDMPD,305,$$FISHOIL^BDMDC16(BDMPD,BDM6MBD,BDMADAT))
 ;D S(BDMPD,306,$$LOVAZA^BDMDC16(BDMPD,BDM6MBD,BDMADAT))
 ;S Z=0 F X=300:1:306 I $E($G(^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,X)))="X" S Z=1  ;has one so skip refusal and none
 ;I Z G PPD
 ;D S(BDMPD,307,"X")
 ;
PPD ;
 D S(BDMPD,70,$$PPD^BDMDC18(BDMPD,BDMADAT))
 D S(BDMPD,114,$$LASTNP^BDMDC18(BDMPD,BDMADAT))
 D S(BDMPD,72,$$TBTX^BDMDC12(BDMPD))
 D S(BDMPD,116,$$CVD^BDMDC12(BDMPD,BDMADAT))
FLU ;
 D S(BDMPD,64,$$FLU^BDMDC13(BDMPD,BDMBDAT,BDMADAT))
 D S(BDMPD,66,$$PNEU^BDMDC13(BDMPD,BDMADAT))
 D S(BDMPD,68,$$TD^BDMDC1B(BDMPD,BDMADAT))
 D S(BDMPD,216,$$TDAP^BDMDC1B(BDMPD,BDMADAT))
 D S(BDMPD,115,$$HEP^BDMDC13(BDMPD,BDMADAT))
LABS ;
 D S(BDMPD,78,$$HGBA1C^BDMDC18(BDMPD,BDMBDAT,BDMADAT))
 D S(BDMPD,79,$$GFR^BDMDC1C(BDMPD,BDMBDAT,BDMADAT))
 D S(BDMPD,84,$$CREAT^BDMDC18(BDMPD,BDMBDAT,BDMADAT))
 D S(BDMPD,86,$$CHOL^BDMDC18(BDMPD,BDMBDAT,BDMADAT))
 D S(BDMPD,88,$$LDL^BDMDC18(BDMPD,BDMBDAT,BDMADAT))
 D S(BDMPD,89,$$HDL^BDMDC18(BDMPD,BDMBDAT,BDMADAT))
 D S(BDMPD,90,$$TRIG^BDMDC18(BDMPD,BDMBDAT,BDMADAT))
 D S(BDMPD,117,$$NONHDL^BDMDC1C(BDMPD,BDMBDAT,BDMADAT))
 D S(BDMPD,92,$$URIN^BDMDC18(BDMPD,BDMBDAT,BDMADAT))
 D S(BDMPD,118,$$COMBINED^BDMDC1C(BDMPD))
 D S(BDMPD,119,$$EGFRUACR^BDMDC1C(BDMPD,BDMBDAT,BDMADAT))
 ;
 Q
TYPEDM ;return type of DM in BDMTYDM
 NEW X
 I ^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,24)="NIDDM" S BDMTYDM="2  Type 2" Q
 I ^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,24)="TYPE II" S BDMTYDM="2  Type 2" Q
 I ^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,24)[2 S BDMTYDM="2  Type 2" Q
 I ^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,24)="IDDM" S BDMTYDM="1  Type 1" Q
 I ^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,24)[1 S BDMTYDM="1  Type 1" Q
 S X=^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,25)
 F I=1:1 S C=$P(X,";",I) Q:C=""!(BDMTYDM]"")  S J=$P($$CODEN^BDMUTL(C,80),"~") I J>0,$$ICD^BDMUTL(J,"DM AUDIT TYPE II DXS",9) S BDMTYDM="2  Type 2"
 ;F I=1:1 S C=$P(X,";",I) Q:C=""!(BDMTYDM]"")  I $E(C,6)=0!($E(C,6)=2) S BDMTYDM="2  Type 2"
 Q:BDMTYDM]""
 ;F I=1:1 S C=$P(X,";",I) Q:C=""!(BDMTYDM]"")  I $E(C,6)=1!($E(C,6)=3) S BDMTYDM="1  Type 1"
 F I=1:1 S C=$P(X,";",I) Q:C=""!(BDMTYDM]"")  S J=$P($$CODEN^BDMUTL(C,80),"~") I J>0,$$ICD^BDMUTL(J,"DM AUDIT TYPE I DXS",9) S BDMTYDM="1  Type 1"
 Q:BDMTYDM]""
 S X=^XTMP("BDMDM15",BDMJOB,BDMBTH,"AUDIT",BDMPD,26)
 I X[2 S BDMTYDM="2  Type 2" Q
 I X[1 S BDMTYDM="1  Type 1" Q
 Q
DATE(D) ;EP
 I $G(D)="" Q ""
 Q $E(D,4,5)_"/"_$E(D,6,7)_"/"_(1700+($E(D,1,3)))
TRIBE(P) ;EP
 I '$G(P) Q ""
 I '$D(^AUPNPAT(P,11)) Q ""
 Q $$TRIBE^AUPNPAT(P,"C")_"^"_$$TRIBE^AUPNPAT(P,"E")
COMM(P) ;EP
 I '$G(P) Q ""
 I '$D(^AUPNPAT(P,11)) Q ""
 Q $$COMMRES^AUPNPAT(P,"E")
EAUDIT ;EP
 D UNFOLDTX^BDMUTL(2015)  ;cmi/maw 05/14/2014 patch 8 lets store all tax up front for checking call
 K ^BDMDCTA("BDMEPI",$J)
 S ^XTMP("BDMDM15",0)=$$FMADD^XLFDT(DT,14)_"^"_DT_"^DM AUDIT 2015"
 S BDMEPIN=0
 S BDMBEGD=$$FMADD^XLFDT(BDMADAT,-365)
 S BDM3YE=$$FMADD^XLFDT(BDMADAT,-1096)
 I BDMACTI=1 D
 .S BDMEAUT=0 F  S BDMEAUT=$O(^ACM(41,"B",BDMDMRG,BDMEAUT)) Q:BDMEAUT'=+BDMEAUT  D
 ..I $P($G(^ACM(41,BDMEAUT,"DT")),U,1)'="A" Q
 ..S BDMPD=$P(^ACM(41,BDMEAUT,0),U,2)
 ..Q:$$DEMO^BDMUTL(BDMPD,$G(BDMDEMO))
 ..S BDMX=$$ACTDMPT^BDMDC1G(BDMPD,BDMBEGD,BDMADAT,BDMTAXI,BDMBEN,BDM3YE)
 ..I 'BDMX Q  ;not active diabetic
 ..I BDMPREP=2 D EPIREC Q
 ..D GATHER
 .Q
 I BDMACTI=0 S BDMPD=0 F  S BDMPD=$O(^AUPNPAT(BDMPD)) Q:'BDMPD  D
 .Q:$$DEMO^BDMUTL(BDMPD,$G(BDMDEMO))
 .S BDMX=$$ACTDMPT^BDMDC1G(BDMPD,BDMBEGD,BDMADAT,BDMTAXI,BDMBEN,BDM3YE)
 .I 'BDMX Q  ;not active diabetic
 .I BDMACTI,'$$ACTONREG(BDMPD,BDMDMRG) Q
 .I BDMPREP=2 D EPIREC Q
 .D GATHER
 I BDMPREP=2 D WRITEF^BDMDC1 Q
 I BDMPREP=3!(BDMPREP=4) D CUML^BDMDC15
 Q
ACTONREG(P,R) ;
 I $G(R)="" Q ""
 I $G(P)="" Q ""
 I '$D(^ACM(41,"AC",P,R)) Q 0
 S X=^ACM(41,"AC",P,R)
 I $P($G(^ACM(41,X,"DT")),U,1)'="A" Q 0
 Q 1
 ;
LOCN(P,R) ;EP
 I $G(R)="" Q ""
 I $G(P)="" Q ""
 I '$D(^ACM(41,"AC",P,R)) Q 0
 S X=^ACM(41,"AC",P,R)
 I 'X Q ""
 Q $$VAL^XBDIQ1(9002241,X,1101)
 ;
LOCT(P,R) ;EP
 I $G(R)="" Q ""
 I $G(P)="" Q ""
 I '$D(^ACM(41,"AC",P,R)) Q 0
 S X=^ACM(41,"AC",P,R)
 I 'X Q ""
 Q $$VAL^XBDIQ1(9002241,X,1102)
 ;