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

BGPMUA04.m

Go to the documentation of this file.
  1. BGPMUA04 ; IHS/MSC/MGH - MI measure NQF0032 ;01-Mar-2011 15:37;MGH
  1. ;;11.1;IHS CLINICAL REPORTING SYSTEM;**1**;JUN 27, 2011;Build 106
  1. ;Code to collect meaningful use report for cervical cancer screening
  1. ENTRY ;EP
  1. N START,END,BGPNUM,BGPDEN,BGPNUM,AENC,BENC
  1. N IEN,INV,VISIT,WTIEN,DATA,VDATE,VALUE,EXCEPT,FIRST,REF,VIEN,EXCEPT,RESULT
  1. N BGPN1,BGPN3,RETVAL,BGPBII,BGPUNII,BGPMUMAM,BGPMAS,AENC,BENC,CENC
  1. N BGPENC,BGPPAP,BGPBIRTH,BGPHYS2,BGPHYS1,BGPHYS3,BGPHYS4,BGPPAP1,BGPPAP2,BGPPAP3,BGPPAP4,BGPDSTR,BGPNSTR
  1. N BGPPAP2,STRING1,STRING2
  1. S (BGPDEN,BGPNUM,RESULT)=0
  1. S (STRING1,STRING2,BGPDSTR,BGPNSTR)=""
  1. ;Set a new begin date of 2 years prior reporting period end date
  1. N X1,X2,X S X1=BGPEDATE,X2=-730 D C^%DTC S BGPENC=X
  1. S START=9999999-BGPENC,END=9999999-BGPEDATE,VALUE=0
  1. S (RETVAL,VIEN)="" ;Return value
  1. Q:BGPSEX="M" ;Patients must be female
  1. ;Pts must be 23-63
  1. ;No need to check further if no age match
  1. Q:(BGPAGEB<23)!(BGPAGEB>63)
  1. S FIRST=END-0.1 F S FIRST=$O(^AUPNVSIT("AA",DFN,FIRST)) Q:FIRST=""!($P(FIRST,".",1)>START)!(VIEN]"") D
  1. .S IEN=0 F S IEN=$O(^AUPNVSIT("AA",DFN,FIRST,IEN)) Q:'+IEN!(VIEN]"") D
  1. ..;Check provider, Only visits for chosen provider
  1. ..Q:'$$PRV^BGPMUUT1(IEN,BGPPROV)
  1. ..;Quit if any visit in the last 2 years does not have a valid E&M code
  1. ..S AENC=$$VSTCPT^BGPMUUT1(DFN,IEN,"BGPMU MAMMOGRAM ENC EM")
  1. ..S BENC=$$VSTPOV^BGPMUUT3(DFN,IEN,"BGPMU MAMMOGRAM ENC ICD")
  1. ..S CENC=$$VSTPOV^BGPMUUT3(DFN,IEN,"BGPMU OBGYN ENC DX")
  1. ..Q:(AENC=0)&(BENC=0)&(CENC=0)
  1. ..I AENC S STRING1="ENC:"_$P(AENC,U,2)
  1. ..I BENC S STRING1="ENC:"_$P(BENC,U,2)
  1. ..I CENC S STRING1="ENC:"_$P(CENC,U,2)
  1. ..S DATA=$G(^AUPNVSIT(IEN,0))
  1. ..S VDATE=$P($G(^AUPNVSIT(IEN,0)),U,1),VIEN=IEN
  1. I +VIEN D
  1. .;Set a new begin date of 3 years prior to the visit for pap results
  1. .N X1,X2,X S X1=BGPEDATE,X2=-1095 D C^%DTC S BGPPAP=X
  1. .S BGPBIRTH=$P(^DPT(DFN,0),U,3)
  1. .I BGPBIRTH="" S BGPBIRTH=BGPENC
  1. .;Quit if patient has a hysterectomy on record
  1. .;Check CPT codes
  1. .S BGPHYS1=$$CPT^BGPMUUT1(DFN,BGPBIRTH,BGPEDATE,"BGPMU HYSTERECTOMY CPT")
  1. .I +BGPHYS1 S VALUE=BGPHYS1,RETVAL=1 Q
  1. .;Check ICD procedure codes
  1. .S BGPHYS2=$$LASTPRC^BGPMUUT2(DFN,BGPBIRTH,BGPEDATE,"BGPMU HYSTERECTOMY ICD")
  1. .I +BGPHYS2 S VALUE=BGPHYS2,RETVAL=1 Q
  1. .;Check POV codes
  1. .S BGPHYS3=$$LASTDX^BGPMUUT2(DFN,BGPBIRTH,BGPEDATE,"BGPMU HYSTERECTOMY DX")
  1. .I +BGPHYS3 S VALUE=BGPHYS3,RETVAL=1 Q
  1. .;Check problem list
  1. .S BGPHYS4=$$PLTAX^BGPMUUT1(DFN,"BGPMU HYSTERECTOMY DX")
  1. .I +BGPHYS4 S VALUE=BGPHYS4,RETVAL=1 Q
  1. .;getting here means the patient is in the denominator
  1. .S BGPDSTR=$P(VDATE,".",1)
  1. .;Check for pap smears in the last 3 years
  1. .;Check CPT codes
  1. .S BGPPAP1=$$CPT^BGPMUUT1(DFN,BGPPAP,BGPEDATE,"BGPMU PAP CPTS")
  1. .I +BGPPAP1=1 S RESULT=BGPPAP1,RETVAL=1,STRING2="PAPC:"_$P(BGPPAP1,U,2),BGPNSTR=$P(BGPPAP1,U,2)_";"_$P($P(BGPPAP1,U,3),".",1)
  1. .E D ;Check for LOINC codes
  1. ..S BGPPAP2=$$LOINC^BGPMUUT2(DFN,BGPPAP,BGPEDATE,"BGPMU LAB LOINC PAP")
  1. ..I +BGPPAP2 D
  1. ...S RESULT=BGPPAP2,RETVAL=1
  1. ...I STRING2="" S STRING2="PAPL:"_$P(BGPPAP2,U,2)
  1. ...E S STRING2=STRING2_",PAPL:"_$P(BGPPAP2,U,2)
  1. ...S BGPNSTR=$P($G(^AUPNVLAB($P(BGPPAP2,U,2),11)),U,13)_";"_$P($P(BGPPAP2,U,1),".",1)
  1. ..E D ;Check V PROCEDURE and V POV
  1. ...S BGPPAP3=$$LASTDX^BGPMUUT2(DFN,BGPENC,BGPEDATE,"BGPMU PAP ENC DX")
  1. ...I +BGPPAP3=1 D
  1. ....S RESULT=BGPPAP3,RETVAL=1
  1. ....I STRING2="" S STRING2="PAPD:"_$P(BGPPAP3,U,2)
  1. ....E S STRING2=STRING2_",PAPD:"_$P(BGPPAP3,U,2)
  1. ....S BGPNSTR=$P(BGPPAP3,U,2)_";"_$P($P(BGPPAP3,U,3),".",1)
  1. ...S BGPPAP4=$$LASTPRC^BGPMUUT2(DFN,BGPENC,BGPEDATE,"BGPMU PAP ICD0")
  1. ...I +BGPPAP4=1 D
  1. ....S RESULT=BGPPAP4,RETVAL=1
  1. ....I STRING2="" S STRING2="PAPP:"_$P(BGPPAP4,U,2)
  1. ....E S STRING2=STRING2_",PAPP:"_$P(BGPPAP4,U,2)
  1. ....S BGPNSTR=$P(BGPPAP4,U,2)_";"_$P($P(BGPPAP4,U,3),".",1)
  1. .D TOTAL(DFN,VIEN,BGPDSTR,BGPNSTR)
  1. Q
  1. TOTAL(DFN,VIEN,BGPDSTR,BGPNSTR) ;See where this patient ends up
  1. N PTCNT,EXCCT,DENCT,NUMCT,TOTALS
  1. S TOTALS=$G(^TMP("BGPMU0032",$J,BGPMUTF,"TOT"))
  1. S DENCT=+$G(^TMP("BGPMU0032",$J,BGPMUTF,"DEN"))
  1. S NUMCT=+$G(^TMP("BGPMU0032",$J,BGPMUTF,"NUM"))
  1. S PTCNT=TOTALS
  1. S PTCNT=PTCNT+1
  1. ;Do not include those with total hysterectomy in the denominator
  1. Q:+VALUE
  1. S DENCT=DENCT+1 S ^TMP("BGPMU0032",$J,BGPMUTF,"DEN")=DENCT
  1. I +RESULT D
  1. .S NUMCT=NUMCT+1 S ^TMP("BGPMU0032",$J,BGPMUTF,"NUM")=NUMCT
  1. .I BGPMUTF="C" S ^TMP("BGPMU0032",$J,"PAT",BGPMUTF,"NUM",PTCNT)=DFN_U_STRING1_U_STRING2_U_BGPDSTR_U_BGPNSTR
  1. E I BGPMUTF="C" S ^TMP("BGPMU0032",$J,"PAT",BGPMUTF,"DEN",PTCNT)=DFN_U_STRING1_U_STRING2_U_BGPDSTR_U_BGPNSTR
  1. S ^TMP("BGPMU0032",$J,BGPMUTF,"TOT")=PTCNT
  1. ;Setup iCare array for patient
  1. S BGPICARE("MU.EP.0032.1",BGPMUTF)=1_U_+RESULT_U_""_U_$G(BGPDSTR)_";"_$G(BGPNSTR)
  1. Q