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

APCM13E6.m

Go to the documentation of this file.
  1. APCM13E6 ;IHS/CMI/LAB - IHS MU;
  1. ;;1.0;IHS MU PERFORMANCE REPORTS;**2,4,5**;MAR 26, 2012;Build 5
  1. ;;;;;;Build 3
  1. ADV ;EP - CALCULATE adv directives
  1. NEW APCMP,APCMZ
  1. S (APCMD1,APCMN1)=0
  1. I APCMRPTT=2 D
  1. .S APCMP=APCMFAC
  1. .I $D(APCMHO65(APCMP,APCMTIME)) S F=$P(^APCM13OB(APCMIC,0),U,11) D Q
  1. ..D S^APCM13E1(APCMRPT,APCMIC,"Hospital is excluded from this measure as it did not admit anyone >=65 during the EHR Reporting Period.",APCMP,APCMRPTT,APCMTIME,F,1) Q
  1. .S APCMZ=$$HASADM65(DFN,APCMP,.APCMVSTS)
  1. .Q:APCMZ="" ;NO ADMISSION
  1. .D ADV1
  1. .Q
  1. Q
  1. HASADM65(P,R,VSTS) ;
  1. NEW X,Y,Z,V,G
  1. S G=""
  1. S X=0 F S X=$O(VSTS(X)) Q:X'=+X!(G) D
  1. .S V=$P(VSTS(X),U,5)
  1. .I '$D(^AUPNVSIT(V,0)) Q
  1. .I $P(^AUPNVSIT(V,0),U,11) Q
  1. .I $P(^AUPNVSIT(V,0),U,7)'="H" Q ;not correct service category
  1. .Q:$P(^AUPNVSIT(V,0),U,6)'=APCMP ;not this facility
  1. .Q:$$AGE^AUPNPAT(P,$$VD^APCLV(V))<65 ;not 65 on date of admission
  1. .S G=$$VD^APCLV(V)
  1. Q G
  1. ADV1 ;
  1. ;set denominator value into field
  1. S F=$P(^APCM13OB(APCMIC,0),U,8) ;denom field for this measure
  1. D S^APCM13E1(APCMRPT,APCMIC,1,APCMP,APCMRPTT,APCMTIME,F)
  1. S APCMVALU="Admission: "_$$DATE^APCM1UTL(APCMZ)_" Age: "_$$AGE^AUPNPAT(DFN,APCMZ)
  1. ;numerator?
  1. S APCMEP=$$HASADV(DFN,APCMEDAT)
  1. S APCMVALU=APCMVALU_"|||"_$P(APCMEP,U,2)_"|||"_$P(APCMEP,U,1)
  1. S F=$P(^APCM13OB(APCMIC,0),U,9)
  1. D S^APCM13E1(APCMRPT,APCMIC,$P(APCMEP,U,1),APCMP,APCMRPTT,APCMTIME,F)
  1. D SETLIST^APCM13E1
  1. Q
  1. HASADV(P,ED) ;does patient have an ADVANCE DIRECTIVE before end of report period
  1. ;
  1. NEW A,B,C,D,E,X
  1. ;check advance directive file
  1. S E=""
  1. S X=0 F S X=$O(^AUPNADVD(P,11,X)) Q:X'=+X!(E) D
  1. .Q:'$D(^AUPNADVD(P,11,X,0)) ;no zero node?
  1. .S D=$P(^AUPNADVD(P,11,X,0),U,1)
  1. .I D>ED Q ;after report period
  1. .S B=$P(^AUPNADVD(P,11,X,0),U,2)
  1. .Q:B=""
  1. .S E=1_U_"Advance Directives: "_$S(B="Y":"YES",1:"NO")_" entered on "_$$DATE^APCM1UTL(D) Q
  1. I E]"" Q E
  1. ;now check for TIU Note title before ED of A
  1. S X=0 F S X=$O(^AUPNVNOT("AC",P,X)) Q:X'=+X!(E) D
  1. .S B=$$VAL^XBDIQ1(9000010.28,X,.01)
  1. .Q:$$UP^XLFSTR(B)'="ADVANCE DIRECTIVE"
  1. .S D=$$VD^APCLV($P(^AUPNVNOT(X,0),U,3))
  1. .Q:D>ED
  1. .S E=1_U_"Advance Directives: TIU document entered on "_$$DATE^APCM1UTL(D) Q
  1. Q E
  1. MR ;EP - med reconciliation
  1. ;for each provider or for the facility find out if this
  1. ;patient had a er visit or an admission of transferred
  1. ;if so, then check to see if they have m-mr anytime before end of report period
  1. NEW APCMP
  1. S (APCMD1,APCMN1)=0
  1. I APCMRPTT=2 S APCMP=APCMFAC D
  1. .Q:'$D(APCMHVTP(APCMP)) ;no ADMISSIONS/ER TO THIS FACILITY SO SKIP THIS OBJ
  1. .S APCMEP=$$HASMMR(DFN,APCMBDAT,APCMEDAT,APCMP,.APCMVSTS) ;return # of visits^# w/M-MR
  1. .;set denominator value into field
  1. .S F=$P(^APCM13OB(APCMIC,0),U,8) ;denom field for this measure
  1. .D S^APCM13E1(APCMRPT,APCMIC,$P(APCMEP,U,1),APCMP,APCMRPTT,APCMTIME,F)
  1. .;numerator?
  1. .S APCMVALU="# of visits: "_$P(APCMEP,U,1)_" - # w/ M-MR: "_+$P(APCMEP,U,2)_"|||"_$P(APCMEP,U,3)_"|||"_$S($P(APCMEP,U,1)=$P(APCMEP,U,2):1,1:0)
  1. .S F=$P(^APCM13OB(APCMIC,0),U,9)
  1. .D S^APCM13E1(APCMRPT,APCMIC,$P(APCMEP,U,2),APCMP,APCMRPTT,APCMTIME,F)
  1. .Q:$P(APCMEP,U,1)=0
  1. .D SETLIST^APCM13E1
  1. Q
  1. HOSER(Z,R) ;EP
  1. I $P(^AUPNVSIT(Z,0),U,6)'=R Q 0 ;not correct facility
  1. I $P(^AUPNVSIT(Z,0),U,7)="H" Q 1
  1. NEW C
  1. I "A"'[$P(^AUPNVSIT(Z,0),U,7) Q 0
  1. S C=$$CLINIC^APCLV(Z,"C")
  1. I C=30 Q 1
  1. ;I C=80 Q 1
  1. Q 0
  1. DSCHDATE(V) ;EP
  1. I 'V Q ""
  1. I '$D(^AUPNVSIT(V)) Q ""
  1. NEW Y,Z,D
  1. S D=""
  1. I $P(^AUPNVSIT(V,0),U,7)="H" D Q D
  1. .S Z=$O(^AUPNVINP("AD",V,0))
  1. .I 'Z S D=$$VD^APCLV(V) Q
  1. .S Y=$P($P(^AUPNVINP(Z,0),U),".")
  1. .S D=Y
  1. S Z=$O(^AUPNVER("AD",V,0))
  1. I 'Z Q $$VD^APCLV(V)
  1. I '$D(^AUPNVER(Z,0)) Q $$VD^APCLV(V)
  1. S Y=$P($P(^AUPNVER(Z,0),U,13),".")
  1. I Y="" Q $$VD^APCLV(V)
  1. Q $P(Y,".")
  1. HASMMR(P,BD,ED,R,VSTS) ;does patient have a M-MR on each visit?
  1. ;
  1. NEW A,B,C,D,E,X,Y,V,PWH,T,W,Z,Q,EDUC
  1. ;LOOP THROUGH ALL VISITS AND COUNT VISIT AND M-MR'S
  1. S PWH="0^0"
  1. S X=0 F S X=$O(VSTS(X)) Q:X'=+X D
  1. .S G=0
  1. .S V=$P(VSTS(X),U,5)
  1. .I '$D(^AUPNVSIT(V,0)) Q
  1. .I $P(^AUPNVSIT(V,0),U,11) Q ;deleted
  1. .I '$$HOSER(V,R) Q ;not correct service category/ER VISIT
  1. .I $P(^AUPNVSIT(V,0),U,7)="H" Q:'$$TRANS(V)
  1. .I $$CLINIC^APCLV(V,"C")=30 Q:'$$ERTRANS(V)
  1. .S $P(PWH,U,1)=$P(PWH,U,1)+1
  1. .;was there a PAT ED M-MR on the date of the visit through 1 day after the visit
  1. .S Y="EDUC("
  1. .S Z=P_"^ALL EDUC;DURING "_$$FMTE^XLFDT($$VD^APCLV(V))_"-"_$$FMTE^XLFDT($$VD^APCLV(V),1) S E=$$START1^APCLDF(Z,Y)
  1. .I '$D(EDUC(1)) S $P(PWH,U,3)=$P(PWH,U,3)_$$DATE^APCM1UTL($$VD^APCLV(V))_":NO M-MR" Q
  1. .S (Z,B,D)=0,%="",T="" F S Z=$O(EDUC(Z)) Q:Z'=+Z!(B) D
  1. ..S A=$P(^AUPNVPED(+$P(EDUC(Z),U,4),0),U)
  1. ..Q:'A
  1. ..Q:'$D(^AUTTEDT(A,0))
  1. ..S T=$P(^AUTTEDT(A,0),U,2)
  1. ..Q:T'="M-MR"
  1. ..S B=1 S $P(PWH,U,2)=$P(PWH,U,2)+1
  1. .S $P(PWH,U,3)=$P(PWH,U,3)_$$DATE^APCM1UTL($$VD^APCLV(V))_":"_$S(B:"M-MR",1:"NO M-MR")_";"
  1. .Q
  1. Q PWH
  1. TRANS(%) ;
  1. NEW A
  1. S A=$$ADMTYPE^APCLV(%,"C")
  1. I A=2 Q 1
  1. I A=3 Q 1
  1. I A=4 Q 1
  1. Q 0
  1. ;
  1. ERTRANS(%) ;
  1. NEW E
  1. S E=$O(^AMERVSIT("AD",%,0))
  1. I 'E Q 0 ;no visit in ER Visit
  1. I '$P($G(^AMERVSIT(E,17)),U,1) Q 0
  1. Q 1
  1. ECHI ;EP - electronic copy of HI
  1. NEW APCMP,APCMECV
  1. K APCMECV
  1. S (APCMD1,APCMN1)=0
  1. I APCMRPTT=2 S APCMP=APCMFAC D
  1. .I $D(APCMECHI(APCMP,APCMTIME)) S F=$P(^APCM13OB(APCMIC,0),U,11) D Q
  1. ..D S^APCM13E1(APCMRPT,APCMIC,"Facility is excluded from this measure as no patients requested a copy of their health information during the EHR reporting period.",APCMP,APCMRPTT,APCMTIME,F,1) Q
  1. .D ALLV^APCLAPIU(DFN,$$FMADD^XLFDT(APCMEDAT,-365),APCMEDAT,"APCMECV")
  1. .S APCMHV=$$HADVH^APCM13CI(DFN,APCMP,$$FMADD^XLFDT(APCMEDAT,-365),APCMEDAT,.APCMECV)
  1. .I 'APCMHV Q ;no visits to this FACILITY THAT ARE H/30/80 for this patient so don't bother, the patient is not in the denominator
  1. .;set denominator value into field
  1. .S APCMEP=$$HASECHI^APCM13E4(DFN,APCMBDAT,$$BDB^APCM13E4(APCMEDAT,-4)) ;"" if no requests so not in denom
  1. .Q:APCMEP=""
  1. .S F=$P(^APCM13OB(APCMIC,0),U,8) ;denom field for this measure
  1. .D S^APCM13E1(APCMRPT,APCMIC,$P(APCMEP,U),APCMP,APCMRPTT,APCMTIME,F)
  1. .S APCMVALU="VISIT: "_$$DATE^APCM1UTL(APCMHV)
  1. .;numerator?
  1. .S APCMVALU=APCMVALU_"|||"_$S($P(APCMEP,U,2):"MET: ",1:"NOT MET: ")_$P(APCMEP,U,3)_"|||"_$P(APCMEP,U,2)
  1. .S F=$P(^APCM13OB(APCMIC,0),U,9)
  1. .D S^APCM13E1(APCMRPT,APCMIC,$P(APCMEP,U,2),APCMP,APCMRPTT,APCMTIME,F)
  1. .D SETLIST^APCM13E1
  1. K APCMECV
  1. Q
  1. SC ;EP - REFERRAL, SUMMARY OF CARE
  1. NEW APCMP
  1. S (APCMD1,APCMN1)=0
  1. I APCMRPTT=2 S APCMP=APCMFAC D
  1. .I $D(APCMRCIS(APCMP,APCMTIME)) S F=$P(^APCM13OB(APCMIC,0),U,11) D Q
  1. ..D S^APCM13E1(APCMRPT,APCMIC,"Hospital is excluded from this measure as they did not make any referrals for patients they saw during the report period.",APCMP,APCMRPTT,APCMTIME,F,1) Q
  1. .Q:'$D(APCMHVTP(APCMP)) ;no visits to this provider for this patient so don't bother, the patient is not in the denominator
  1. .;set denominator value into field
  1. .S APCMEP=$$HASC32H(DFN,APCMBDAT,$$FMADD^XLFDT(APCMEDAT),APCMFAC,.APCMVSTS) ;# referrals^# w/c32 documentation
  1. .Q:'$P(APCMEP,U,1)
  1. .S F=$P(^APCM13OB(APCMIC,0),U,8) ;denom field for this measure
  1. .D S^APCM13E1(APCMRPT,APCMIC,$P(APCMEP,U,1),APCMP,APCMRPTT,APCMTIME,F)
  1. .;S APCMVALU="VISIT: "_$$DATE^APCM1UTL(APCMHVTP(APCMP))
  1. .S APCMVALU="# ref: "_$P(APCMEP,U,1)_" - # w/C32: "_+$P(APCMEP,U,2)_" "_$P(APCMEP,U,4)_"|||"_$P(APCMEP,U,3)_"|||"_$S('(+$P(APCMEP,U,1)):0,+$P(APCMEP,U,1)=+$P(APCMEP,U,2):1,1:0)
  1. .;numerator?
  1. .S F=$P(^APCM13OB(APCMIC,0),U,9)
  1. .D S^APCM13E1(APCMRPT,APCMIC,$P(APCMEP,U,2),APCMP,APCMRPTT,APCMTIME,F)
  1. .D SETLIST^APCM13E1
  1. Q
  1. HASC32H(P,BD,ED,R,VSTS) ;does patient have a referral with c32
  1. ;
  1. NEW A,B,C,D,E,ROI,X,ROII,VDS
  1. S ROI="" ;set to 1 if had a good request
  1. S ROII="" ;set to date of reques
  1. S VDS=""
  1. S D=$$FMADD^XLFDT(BD,-1)
  1. S X=0 F S X=$O(VSTS(X)) Q:X'=+X D
  1. .S V=$P(VSTS(X),U,5)
  1. .Q:$P(^AUPNVSIT(V,0),U,6)'=R
  1. .Q:'$$HOSER^APCM13E6(V,R)
  1. .I $P(^AUPNVSIT(V,0),U,7)="H" Q:'$$TRANSOUT(V)
  1. .I $$CLINIC^APCLV(V,"C")=30 Q:'$$ERTRANSO(V)
  1. .S O=$$FMADD^XLFDT($$VD^APCLV(V),-1),E=$$DSCHDATE^APCM13E6(V)
  1. .I VDS="" S VDS="Visits: "
  1. .S VDS=VDS_$$DATE^APCM1UTL($$VD^APCLV(V))_";"
  1. .F S O=$O(^BMCREF("AA",P,O)) Q:O'=+O!(O>E) D
  1. ..S Q=0 F S Q=$O(^BMCREF("AA",P,O,Q)) Q:Q'=+Q D
  1. ...S S=$P(^BMCREF(Q,0),U,15)
  1. ...I S'="A",S'="C1" Q ;not a A or C1
  1. ...Q:$P(^BMCREF(Q,0),U,4)="N"
  1. ...Q:$P(^BMCREF(Q,0),U,5)'=R
  1. ...S $P(ROI,U,1)=$P(ROI,U,1)+1
  1. ...;now check to see if a C32 was printed
  1. ...S Y=0 F S Y=$O(^BMCREF(Q,6,"B",Y)) Q:Y'=+Y D
  1. ....I $P(^AUPNVSIT(V,0),U,7)="H" D Q
  1. .....I $P(Y,".")'<$$FMADD^XLFDT($$DSCHDATE^APCM13E6(V),-1),$P(Y,".")'>$$DSCHDATE^APCM13E6(V) D Q
  1. ......S $P(ROI,U,2)=$P(ROI,U,2)+1,ROII=ROII_"RI "_$$DATE^APCM1UTL(O)_" C32 "_$$DATE^APCM1UTL(Y)_";" Q
  1. ....D Q
  1. .....I $P(Y,".")'<$$VD^APCLV(V),$P(Y,".")'>$$DSCHDATE^APCM13E6(V) D
  1. ......S $P(ROI,U,2)=$P(ROI,U,2)+1,ROII=ROII_"RI "_$$DATE^APCM1UTL(O)_" C32 "_$$DATE^APCM1UTL(Y)_";" Q
  1. ....S ROII=ROII_"RI "_$$DATE^APCM1UTL(O)_" C32 None;"
  1. S $P(ROI,U,3)=ROII
  1. Q ROI_U_VDS
  1. ECDI ;EP - electronic copy of discharge instructions
  1. NEW APCMP,APCMZ,APCMEP
  1. I APCMRPTT=2 D
  1. .S APCMP=APCMFAC
  1. .I $D(APCMNOEC(APCMP,APCMTIME)) S F=$P(^APCM13OB(APCMIC,0),U,11) D Q
  1. ..D S^APCM13E1(APCMRPT,APCMIC,"Facility is excluded from this measure as it did not have any requests from patients for and electronic copy of their discharge instructions during the EHR reporting period.",APCMP,APCMRPTT,APCMTIME,F,1) Q
  1. .S APCMEP=$$HASECDI(DFN,APCMBDAT,APCMEDAT,APCMP,.APCMVSTS) ;return # of visits^# w/M-MR
  1. .;set denominator value into field
  1. .I APCMEP="" Q
  1. .S F=$P(^APCM13OB(APCMIC,0),U,8) ;denom field for this measure
  1. .D S^APCM13E1(APCMRPT,APCMIC,1,APCMP,APCMRPTT,APCMTIME,F)
  1. .S APCMVALU=$P(APCMEP,U,2)_"|||"_$P(APCMEP,U,3)_"|||"_$S($P(APCMEP,U,1):1,1:0)
  1. .;numerator?
  1. .S F=$P(^APCM13OB(APCMIC,0),U,9)
  1. .D S^APCM13E1(APCMRPT,APCMIC,$P(APCMEP,U,1),APCMP,APCMRPTT,APCMTIME,F)
  1. .D SETLIST^APCM13E1
  1. Q
  1. HASECDI(P,BD,ED,R,VSTS) ;does patient have a M-MR on each visit?
  1. ;
  1. NEW A,B,C,D,E,X,Y,V,PWH,T,W,Z,Q,ECDI
  1. ;LOOP THROUGH ALL VISITS AND FIND AT LEAST ONE WITH ECDI TUI NOTES
  1. S PWH="",ECDI=""
  1. S X=0 F S X=$O(VSTS(X)) Q:X'=+X!(PWH) D
  1. .S G=0
  1. .S V=$P(VSTS(X),U,5)
  1. .I '$D(^AUPNVSIT(V,0)) Q
  1. .I $P(^AUPNVSIT(V,0),U,11) Q ;deleted
  1. .I '$$HOSER(V,R) Q ;not correct service category/ER VISIT
  1. .I $P(^AUPNVSIT(V,0),U,7)="H" Q:'$$DISCHOUT(V)
  1. .I $P(^AUPNVSIT(V,0),U,7)="H" S Q="" D Q:'Q
  1. ..S Z=$O(^AUPNVINP("AD",V,0)) I 'Z Q
  1. ..Q:'$D(^AUPNVINP(Z,0))
  1. ..Q:$P($P(^AUPNVINP(Z,0),U),".")>ED ;discharged after report period
  1. ..S Q=1
  1. .S T=$$TIUDCEL(V) Q:T="" ;no tiu notes for discharge instructions
  1. .;set denominator
  1. .I $$UP^XLFSTR($P(T,U))="E-COPY DISCHARGE INSTR RECEIVED" S PWH=1_U_"Adm/Visit Date: "_$$DATE^APCM1UTL($$VD^APCLV(V))_U_"Electronic Copy: "_$P(T,U)_" on "_$$DATE^APCM1UTL($P(T,U,2)) Q
  1. .S ECDI=0_U_$$DATE^APCM1UTL($$VD^APCLV(V))_U_"Electronic Copy: "_$P(T,U)_" on "_$$DATE^APCM1UTL($P(T,U,2))
  1. .Q
  1. I PWH Q PWH
  1. Q ECDI
  1. DISCHOUT(%) ;
  1. NEW A
  1. S A=$$DSCHTYPE^APCLV(%,"C")
  1. I A=1 Q 1
  1. I A=2 Q 1
  1. I A=3 Q 1
  1. Q 0
  1. ;
  1. TIUDCEL(%) ;any electronic dc instruction TIU Notes
  1. NEW A,B,C,VD,DSC,DSC1,P,D
  1. S VD=$$VD^APCLV(%) ;admission date
  1. S DSC=$$DSCHDATE(%)
  1. S DSC1=$$FMADD^XLFDT(DSC,1) ;day after discharge
  1. S P=$P(^AUPNVSIT(%,0),U,5)
  1. S A=0,B="" F S A=$O(^AUPNVNOT("AC",P,A)) Q:A'=+A!(B]"") D
  1. .Q:'$D(^AUPNVNOT(A,0))
  1. .Q:$P(^AUPNVNOT(A,0),U,4) ;retracted
  1. .S D=$P($P($G(^AUPNVNOT(A,12)),U,1),".") ;event date
  1. .Q:D>DSC1 ;after day after discharge
  1. .Q:D<DSC ;before discharge date
  1. .S C=$$VAL^XBDIQ1(9000010.28,A,.01)
  1. .I $$UP^XLFSTR(C)="E-COPY DISCHARGE INSTR RECEIVED" S B=C_U_D Q
  1. .I $$UP^XLFSTR(C)="E-COPY DISCHARGE INSTR NOT RECEIVED" S B=C_U_D Q
  1. Q B
  1. TRANSOUT(%) ;
  1. NEW A
  1. S A=$$DSCHTYPE^APCLV(%,"C")
  1. I A=2 Q 1
  1. Q 0
  1. ;
  1. ERTRANSO(%) ;
  1. NEW E,J
  1. S E=$O(^AMERVSIT("AD",%,0))
  1. I 'E Q 0 ;no visit in ER Visit
  1. S J=$$VAL^XBDIQ1(9009080,E,6.1)
  1. I J="REFERRED TO ANOTHER SERVICE" Q 1
  1. I J="TRANSFER TO ANOTHER FACILITY" Q 1
  1. Q 0