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

BGPMUF01.m

Go to the documentation of this file.
  1. BGPMUF01 ;IHS/MSC/MMT - MU Reports Measure NQF0038 ;02-Mar-2011 11:37;DU
  1. ;;11.1;IHS CLINICAL REPORTING SYSTEM;**1**;JUN 27, 2011;Build 106
  1. ;
  1. ENTRY ;EP
  1. N START,END,BGPDEN1,BGPNUM1,BGPNUM2,BGPNUM3,BGPNUM4,BGPNUM5,BGPNUM6,BGPNUM7,BGPNUM8,BGPNUM9,BGPNUM10,BGPNUM11,BGPNUM12
  1. N BGPEXC1,BGPEXC2,BGPEXC3,BGPEXC4,BGPEXC5,BGPEXC6,BGPEXC7,BGPEXC8,BGPEXC9,BGPEXC10,BGPEXC11,BGPEXC12
  1. N IEN,INV,VISIT,WTIEN,DATA,VDATE,BGPSIX,FIRST,VIEN,EXCEPT
  1. N BGPIVAL,BGPPTDOB,BGPPTDOB,BGPBDAY2
  1. S (BGPDEN1,BGPNUM1,BGPNUM2,BGPNUM3,BGPNUM4,BGPNUM5,BGPNUM6,BGPNUM7,BGPNUM8,BGPNUM9,BGPNUM10,BGPNUM11,BGPNUM12)=0
  1. S (BGPEXC1,BGPEXC2,BGPEXC3,BGPEXC4,BGPEXC5,BGPEXC6,BGPEXC7,BGPEXC8,BGPEXC9,BGPEXC10,BGPEXC11,BGPEXC12)=0
  1. S START=9999999-BGPBDATE,END=9999999-BGPEDATE
  1. ;Pts must have turned 2 years old during the measurement period
  1. I '(BGPAGEB=1) Q
  1. I '(BGPAGEE=2) Q
  1. S FIRST=END-0.1 F S FIRST=$O(^AUPNVSIT("AA",DFN,FIRST)) Q:FIRST=""!($P(FIRST,".",1)>START) D
  1. .S IEN=0 F S IEN=$O(^AUPNVSIT("AA",DFN,FIRST,IEN)) Q:'+IEN D
  1. ..;Check provider, Only visits for chosen provider
  1. ..Q:'$$PRV^BGPMUUT1(IEN,BGPPROV)
  1. ..;Quit if the visit does not have a valid E&M code
  1. ..S AENC=$$VSTCPT^BGPMUUT1(DFN,IEN,"BGPMU CIMM ENCOUNTER EM")
  1. ..S BENC=$$VSTPOV^BGPMUUT3(DFN,IEN,"BGPMU BMI ENC PEDS DX") ;borrowing taxonomy from Peds BMI
  1. ..Q:(AENC=0)&(BENC=0)
  1. ..S DATA=$G(^AUPNVSIT(IEN,0))
  1. ..S VDATE=$P($G(^AUPNVSIT(IEN,0)),U,1),VIEN=IEN
  1. ..;This pt qualifies to be counted in the denominator
  1. ..S BGPDEN1=1_U_"EN:"_$$DATE^BGPMUUTL(VDATE)
  1. ..Q
  1. ;Quit if patient will not be in denominator
  1. I 'BGPDEN1 G EXIT
  1. ;Calculate the day before the patient's 2nd birthday
  1. S BGPPTDOB=$$DOB^AUPNPAT(DFN),BGPBDAY2=($E(BGPPTDOB,1,3)+2)_$E(BGPPTDOB,4,7),BGPBDAY2=$$FMADD^XLFDT(BGPBDAY2,-1)
  1. ;Num 1 - at least 4 DTaP
  1. S BGPIVAL=$$DTAP^BGP0D34(DFN,BGPBDAY2) ;1 IS had immunizations, 3 is had refusal, 4 is disease or NMI or contraindication
  1. I $P(BGPIVAL,U,1)=1 S BGPNUM1=BGPIVAL
  1. I $P(BGPIVAL,U,1)>1 S BGPEXC1=BGPIVAL
  1. ;Num 2 - at least 3 IPV
  1. S BGPIVAL=$$OPV^BGP0D33(DFN,BGPBDAY2)
  1. I $P(BGPIVAL,U,1)=1 S BGPNUM2=BGPIVAL
  1. I $P(BGPIVAL,U,1)>1 S BGPEXC2=BGPIVAL
  1. ;Num 3 - MMR
  1. S BGPIVAL=$$MMR^BGP0D33(DFN,BGPBDAY2)
  1. I $P(BGPIVAL,U,1)=1 S BGPNUM3=BGPIVAL
  1. I $P(BGPIVAL,U,1)>1 S BGPEXC3=BGPIVAL
  1. ;Num 4 - at least 2 HiB
  1. S BGPIVAL=$$HIB^BGP0D35(DFN,BGPBDAY2)
  1. I $P(BGPIVAL,U,1)=1 S BGPNUM4=BGPIVAL
  1. I $P(BGPIVAL,U,1)>1 S BGPEXC4=BGPIVAL
  1. ;Num 5 - at least 3 Hepatitis B
  1. S BGPIVAL=$$HEP^BGP0D35(DFN,BGPBDAY2)
  1. I $P(BGPIVAL,U,1)=1 S BGPNUM5=BGPIVAL_" B"
  1. I $P(BGPIVAL,U,1)>1 S BGPEXC5=BGPIVAL
  1. ;Num 6 - VZV
  1. S BGPIVAL=$$VAR^BGP0D35(DFN,BGPBDAY2)
  1. I $P(BGPIVAL,U,1)=1 S BGPNUM6=BGPIVAL
  1. I $P(BGPIVAL,U,1)>1 S BGPEXC6=BGPIVAL
  1. ;Num 7 - at least 4 Pneumococcal
  1. S BGPIVAL=$$PNEUMO^BGP0D35(DFN,BGPBDAY2,4)
  1. I $P(BGPIVAL,U,1)=1 S BGPNUM7=BGPIVAL
  1. I $P(BGPIVAL,U,1)>1 S BGPEXC7=BGPIVAL
  1. ;Num 8 - at least 2 Hepatitis A - this routine looks for IMM's in the same manner as CRS but uses CVX/CPT codes from the NQF spec
  1. S BGPIVAL=$$HEPA^BGPMUF02(DFN,BGPBDAY2)
  1. I $P(BGPIVAL,U,1)=1 S BGPNUM8=BGPIVAL
  1. I $P(BGPIVAL,U,1)>1 S BGPEXC8=BGPIVAL
  1. ;Num 9 - at least 2 Rotavirus - this routine looks for IMM's in the same manner as CRS but uses CVX/CPT codes from the NQF spec
  1. S BGPIVAL=$$ROTA^BGPMUF02(DFN,BGPBDAY2)
  1. I $P(BGPIVAL,U,1)=1 S BGPNUM9=BGPIVAL
  1. I $P(BGPIVAL,U,1)>1 S BGPEXC9=BGPIVAL
  1. ;Num 10 - at least 2 Influenza - this routine looks for IMM's in the same manner as CRS but uses CVX/CPT codes from the NQF spec
  1. S BGPIVAL=$$FLU^BGPMUF02(DFN,BGPBDAY2)
  1. I $P(BGPIVAL,U,1)=1 S BGPNUM10=BGPIVAL
  1. I $P(BGPIVAL,U,1)>1 S BGPEXC10=BGPIVAL
  1. ;Num 11 - pt is TRUE for 1, 2, 3, 4, 5, 6
  1. I +BGPNUM1,+BGPNUM2,+BGPNUM3,+BGPNUM4,+BGPNUM5,+BGPNUM6 S BGPNUM11=1_U_"4:3:1:3:3:1"
  1. I +BGPEXC1!+BGPEXC2!+BGPEXC3!+BGPEXC4!+BGPEXC5!+BGPEXC6 S BGPEXC11=1
  1. ;Num 12 - pt is TRUE for 1, 2, 3, 4, 5, 6, 7
  1. I BGPNUM1,+BGPNUM2,+BGPNUM3,+BGPNUM4,+BGPNUM5,+BGPNUM6,+BGPNUM7 S BGPNUM12=1_U_"4:3:1:3:3:1:4"
  1. I BGPEXC1!+BGPEXC2!+BGPEXC3!+BGPEXC4!+BGPEXC5!+BGPEXC6!+BGPEXC7 S BGPEXC12=1
  1. EXIT I BGPDEN1 D TOTALS
  1. K START,END,BGPDEN1,BGPNUM1,BGPNUM2,BGPNUM3,BGPNUM4,BGPNUM5,BGPNUM6,BGPNUM7,BGPNUM8,BGPNUM9,BGPNUM10,BGPNUM11,BGPNUM12
  1. K BGPEXC1,BGPEXC2,BGPEXC3,BGPEXC4,BGPEXC5,BGPEXC6,BGPEXC7,BGPEXC8,BGPEXC9,BGPEXC10,BGPEXC11,BGPEXC12
  1. K IEN,INV,VISIT,WTIEN,DATA,VDATE,BGPSIX,FIRST,VIEN,EXCEPT
  1. K BGPIVAL,BGPPTDOB,BGPPTDOB
  1. Q
  1. TOTALS ;
  1. ;each numerator will need to maintain it's own denominator count and if the patient is in the exclusion list
  1. ; for a numerator, they should not be added to the denominator count for the numerator
  1. N TOTALS,BGPI,BGPNVAL,BGPXVAL
  1. N EXC1CT,EXC2CT,EXC3CT,EXC4CT,EXC5CT,EXC6CT,EXC7CT,EXC8CT,EXC9CT,EXC10CT,EXC11CT,EXC12CT
  1. N DEN1CT,DEN2CT,DEN3CT,DEN4CT,DEN5CT,DEN6CT,DEN7CT,DEN8CT,DEN9CT,DEN10CT,DEN11CT,DEN12CT
  1. N NUM1CT,NUM2CT,NUM3CT,NUM4CT,NUM5CT,NUM6CT,NUM7CT,NUM8CT,NUM9CT,NUM10CT,NUM11CT,NUM12CT
  1. S EXCEPT=""
  1. ;total patients evaluated
  1. S TOTALS=$G(^TMP("BGPMU0038",$J,BGPMUTF,"TOT"))
  1. ;exclusion counts
  1. F BGPI=1:1:12 S @("EXC"_BGPI_"CT")=+$G(^TMP("BGPMU0038",$J,BGPMUTF,"EXC",BGPI))
  1. ;denominator counts
  1. F BGPI=1:1:12 S @("DEN"_BGPI_"CT")=+$G(^TMP("BGPMU0038",$J,BGPMUTF,"DEN",BGPI))
  1. ;numerator counts
  1. F BGPI=1:1:12 S @("NUM"_BGPI_"CT")=+$G(^TMP("BGPMU0038",$J,BGPMUTF,"NUM",BGPI))
  1. ;increment appropriate counters and maintain patient lists
  1. I +BGPNUM1 D
  1. .S NUM1CT=NUM1CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","INCL",1,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM1,U,2)
  1. I 'BGPEXC1 S DEN1CT=DEN1CT+1
  1. I +BGPEXC1 D
  1. .S EXC1CT=EXC1CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","EXCL",1,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_"Excluded"
  1. I 'BGPNUM1,'BGPEXC1 D
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","NOT",1,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM1,U,2)
  1. I +BGPNUM2 D
  1. .S NUM2CT=NUM2CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","INCL",2,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM2,U,2)
  1. I 'BGPEXC2 S DEN2CT=DEN2CT+1
  1. I +BGPEXC2 D
  1. .S EXC2CT=EXC2CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","EXCL",2,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_"Excluded"
  1. I 'BGPNUM2,'BGPEXC2 D
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","NOT",2,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM2,U,2)
  1. I 'BGPEXC3 S DEN3CT=DEN3CT+1
  1. I +BGPNUM3 D
  1. .S NUM3CT=NUM3CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","INCL",3,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM3,U,2)
  1. I +BGPEXC3 D
  1. .S EXC3CT=EXC3CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","EXCL",3,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_"Excluded"
  1. I 'BGPNUM3,'BGPEXC3 D
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","NOT",3,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM3,U,2)
  1. I +BGPNUM4 D
  1. .S NUM4CT=NUM4CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","INCL",4,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM4,U,2)
  1. I 'BGPEXC4 S DEN4CT=DEN4CT+1
  1. I +BGPEXC4 D
  1. .S EXC4CT=EXC4CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","EXCL",4,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_"Excluded"
  1. I 'BGPNUM4,'BGPEXC4 D
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","NOT",4,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM4,U,2)
  1. I +BGPNUM5 D
  1. .S NUM5CT=NUM5CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","INCL",5,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM5,U,2)
  1. I 'BGPEXC5 S DEN5CT=DEN5CT+1
  1. I +BGPEXC5 D
  1. .S EXC5CT=EXC5CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","EXCL",5,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_"Excluded"
  1. I 'BGPNUM5,'BGPEXC5 D
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","NOT",5,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM5,U,2)
  1. I +BGPNUM6 D
  1. .S NUM6CT=NUM6CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","INCL",6,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM6,U,2)
  1. I 'BGPEXC6 S DEN6CT=DEN6CT+1
  1. I +BGPEXC6 D
  1. .S EXC6CT=EXC6CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","EXCL",6,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_"Excluded"
  1. I 'BGPNUM6,'BGPEXC6 D
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","NOT",6,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM6,U,2)
  1. I +BGPNUM7 D
  1. .S NUM7CT=NUM7CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","INCL",7,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM7,U,2)
  1. I 'BGPEXC7 S DEN7CT=DEN7CT+1
  1. I +BGPEXC7 D
  1. .S EXC7CT=EXC7CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","EXCL",7,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_"Excluded"
  1. I 'BGPNUM7,'BGPEXC7 D
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","NOT",7,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM7,U,2)
  1. I +BGPNUM8 D
  1. .S NUM8CT=NUM8CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","INCL",8,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM8,U,2)
  1. I 'BGPEXC8 S DEN8CT=DEN8CT+1
  1. I +BGPEXC8 D
  1. .S EXC8CT=EXC8CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","EXCL",8,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_"Excluded"
  1. I 'BGPNUM8,'BGPEXC8 D
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","NOT",8,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM8,U,2)
  1. I +BGPNUM9 D
  1. .S NUM9CT=NUM9CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","INCL",9,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM9,U,2)
  1. I 'BGPEXC9 S DEN9CT=DEN9CT+1
  1. I +BGPEXC9 D
  1. .S EXC9CT=EXC9CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","EXCL",9,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_"Excluded"
  1. I 'BGPNUM9,'BGPEXC9 D
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","NOT",9,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM9,U,2)
  1. I +BGPNUM10 D
  1. .S NUM10CT=NUM10CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","INCL",10,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM10,U,2)
  1. I 'BGPEXC10 S DEN10CT=DEN10CT+1
  1. I +BGPEXC10 D
  1. .S EXC10CT=EXC10CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","EXCL",10,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_"Excluded"
  1. I 'BGPNUM10,'BGPEXC10 D
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","NOT",10,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM10,U,2)
  1. I +BGPNUM11 D
  1. .S NUM11CT=NUM11CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","INCL",11,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM11,U,2)
  1. I 'BGPEXC11 S DEN11CT=DEN11CT+1
  1. I +BGPEXC11 D
  1. .S EXC11CT=EXC11CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","EXCL",11,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_"Excluded"
  1. I 'BGPNUM11,'BGPEXC11 D
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","NOT",11,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM11,U,2)
  1. I +BGPNUM12 D
  1. .S NUM12CT=NUM12CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","INCL",12,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM12,U,2)
  1. I 'BGPEXC12 S DEN12CT=DEN12CT+1
  1. I +BGPEXC12 D
  1. .S EXC12CT=EXC12CT+1
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","EXCL",12,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_"Excluded"
  1. I 'BGPNUM12,'BGPEXC12 D
  1. .S ^TMP("BGPMU0038",$J,BGPMUTF,"PAT","NOT",12,DFN)=DFN_U_$P(BGPDEN1,U,2)_U_$P(BGPNUM12,U,2)
  1. ;store counts back out to ^TMP global
  1. ;exclusion counts
  1. F BGPI=1:1:12 S ^TMP("BGPMU0038",$J,BGPMUTF,"EXC",BGPI)=@("EXC"_BGPI_"CT")
  1. ;denominator counts
  1. F BGPI=1:1:12 S ^TMP("BGPMU0038",$J,BGPMUTF,"DEN",BGPI)=@("DEN"_BGPI_"CT")
  1. ;numerator counts
  1. F BGPI=1:1:12 S ^TMP("BGPMU0038",$J,BGPMUTF,"NUM",BGPI)=@("NUM"_BGPI_"CT")
  1. ;Setup iCare array for patient
  1. F BGPI=1:1:12 S BGPNVAL=@("BGPNUM"_BGPI),BGPXVAL=@("BGPEXC"_BGPI),BGPICARE("MU.EP.0038."_(BGPI*2-1),BGPMUTF)='BGPXVAL_U_+BGPNVAL_U_+BGPXVAL_U_$P(BGPDEN1,U,2)_";"_$P(BGPNVAL,U,2)_U_$P(BGPXVAL,U,2)
  1. K TOTALS,BGPI,BGPNVAL,BGPXVAL
  1. K EXC1CT,EXC2CT,EXC3CT,EXC4CT,EXC5CT,EXC6CT,EXC7CT,EXC8CT,EXC9CT,EXC10CT,EXC11CT,EXC12CT
  1. K DEN1CT,DEN2CT,DEN3CT,DEN4CT,DEN5CT,DEN6CT,DEN7CT,DEN8CT,DEN9CT,DEN10CT,DEN11CT,DEN12CT
  1. K NUM1CT,NUM2CT,NUM3CT,NUM4CT,NUM5CT,NUM6CT,NUM7CT,NUM8CT,NUM9CT,NUM10CT,NUM11CT,NUM12CT
  1. Q