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

BQIRGASU.m

Go to the documentation of this file.
  1. BQIRGASU ;VNGT/HS/ALA-Asthma Utilities ; 09 Jan 2009 5:01 PM
  1. ;;2.4;ICARE MANAGEMENT SYSTEM;;Apr 01, 2015;Build 41
  1. ;
  1. ;
  1. AQC(BQDFN) ;EP - Asthma Quality of Care
  1. NEW RESULT,DATE
  1. ;
  1. S RESULT="N/A",DATE=$$DATE^BQIUL1("T-12M")
  1. ; Active Asthma Tag
  1. I '$$ATAG^BQITDUTL(BQDFN,"Asthma") Q RESULT
  1. S RESULT="NO"
  1. ;
  1. ; Severity value ever
  1. I $$LASTSEV^APCHSAST(BQDFN,1)="" Q RESULT_U_"No severity"
  1. ; Control document in past year
  1. I $$VERSION^XPDUTL("BJPC")>1.0,$$LASTACON^APCHSMAS(BQDFN,2)<DATE Q RESULT_U_"No control documented"
  1. ; Peak Flow or FEV1 or FEV1/FVC documented in past year
  1. S QFL=0 D I QFL Q RESULT_U_"No peak flow"
  1. . I $P($$MEAS^BQIDCUTL(BQDFN,"PF"),U,6)<DATE S QFL=1 Q
  1. . I $P($$MEAS^BQIDCUTL(BQDFN,"FVFC"),U,6)<DATE S QFL=1 Q
  1. ; Asthma Action Plan in the past year
  1. S Y=$$LASTITEM^APCHSMU(BQDFN,"ASM-SMP","EDUCATION") I Y<DATE Q RESULT_U_"No Asthma Action Plan"
  1. ; Flu Shot document in past year (Health Maintenance Reminder)
  1. ;S HIEN=$$FIND1^DIC(9001018,"","Q","ASTHMA PATIENT-FLU SHOT","B","","ERROR")
  1. ;I 'HIEN Q RESULT
  1. ;S X=$$GVHMR^APCHSMU(BQDFN,HIEN)
  1. ;I X'="" Q RESULT
  1. I $$LASTFLU^APCLAPI4(BQDFN)<DATE Q RESULT_U_"No flu shot in past year"
  1. ; Severity 2,3, or 4 AND any current controllers prescription
  1. I $$LASTSEV^APCHSAST(BQDFN,1)<2 Q RESULT_U_"Severity less than 2"
  1. I '$$CNTRL(BQDFN) Q RESULT_U_"No controller meds"
  1. Q "YES"
  1. ;
  1. CNTRL(BQDFN) ; EP - Controller Medications
  1. NEW TAX,TREF,DESC,MEET,X,RESULT,OTHER,VISIT
  1. I $G(UID)="" S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DESC=""
  1. S TREF=$NA(^TMP("BQITAX",UID)) K @TREF
  1. F TAX="BAT ASTHMA CONTROLLER MEDS","BAT ASTHMA CONTROLLER NDC","BAT ASTHMA INHALED STEROIDS","BAT ASTHMA INHLD STEROIDS NDC","BAT ASTHMA LEUKOTRIENE MEDS","BAT ASTHMA LEUKOTRIENE NDC" D BLD^BQITUTL(TAX,TREF)
  1. S X=$$TAX^BQITRUTL("","",1,BQDFN,9000010.14,"","",.TREF)
  1. ; if returns a found medication, check if it is an active medication
  1. I $P(X,U,1)=1 D
  1. . I $$ACTMED^BKMQQCR4($P(X,U,5)) Q
  1. . S $P(X,U,1)=0
  1. I $P(X,U,1)=1 S MEET=1,DESC=DESC_"On Asthma Controller Meds ("_$$FMTE^BQIUL1($P(X,U,2))_" "_$$GET1^DIQ(9000010.14,$P(X,U,5)_",",.01,"E")_")"
  1. I $P(X,U,1)=0 S MEET=0,DESC=DESC_"Not on Asthma Controller Meds"
  1. K @TREF
  1. S RESULT="N/A",OTHER="",VISIT=""
  1. I $$ATAG^BQITDUTL(BQDFN,"Asthma") D
  1. . I 'MEET S RESULT="NO" Q
  1. . S RESULT="YES",OTHER=$$FMTE^BQIUL1($P(X,U,2)),VISIT="9000010:"_$P(X,U,4)
  1. Q RESULT_U_OTHER_U_VISIT
  1. ;
  1. RLVR(BQDFN) ; EP - Reliever Medications
  1. NEW TAX,TREF,DESC,MEET,X,RESULT,OTHER,VISIT
  1. I $G(UID)="" S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DESC=""
  1. S TREF=$NA(^TMP("BQITAX",UID)) K @TREF
  1. F TAX="BAT ASTHMA SHRT ACT RELV MEDS","BAT ASTHMA SHRT ACT RELV NDC","BAT ASTHMA SHRT ACT INHLR MEDS","BAT ASTHMA SHRT ACT INHLR NDC" D BLD^BQITUTL(TAX,TREF)
  1. S X=$$TAX^BQITRUTL("","",1,BQDFN,9000010.14,"","",.TREF)
  1. ; if returns a found medication, check if it is an active medication
  1. I $P(X,U,1)=1 D
  1. . I $$ACTMED^BKMQQCR4($P(X,U,5)) Q
  1. . S $P(X,U,1)=0
  1. I $P(X,U,1)=1 S MEET=1,DESC=DESC_"On Asthma Reliever Meds ("_$$FMTE^BQIUL1($P(X,U,2))_" "_$$GET1^DIQ(9000010.14,$P(X,U,5)_",",.01,"E")_")"
  1. I $P(X,U,1)=0 S MEET=0,DESC=DESC_"Not on Asthma Reliever Meds"
  1. K @TREF
  1. S RESULT="N/A",OTHER="",VISIT=""
  1. I $$ATAG^BQITDUTL(BQDFN,"Asthma") D
  1. . I 'MEET S RESULT="NO" Q
  1. . S RESULT="YES",OTHER=$$FMTE^BQIUL1($P(X,U,2)),VISIT="9000010:"_$P(X,U,4)
  1. Q RESULT_U_OTHER_U_VISIT
  1. ;
  1. INHST(BQDFN) ; EP - Inhaled Steroids
  1. NEW TAX,TREF,DESC,MEET,X,RESULT,OTHER,VISIT
  1. I $G(UID)="" S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DESC=""
  1. S TREF=$NA(^TMP("BQITAX",UID)) K @TREF
  1. F TAX="BAT ASTHMA INHALED STEROIDS","BAT ASTHMA INHALED STEROIDS NDC" D BLD^BQITUTL(TAX,TREF)
  1. S X=$$TAX^BQITRUTL("","",1,BQDFN,9000010.14,"","",.TREF)
  1. ; if returns a found medication, check if it is an active medication
  1. I $P(X,U,1)=1 D
  1. . I $$ACTMED^BKMQQCR4($P(X,U,5)) Q
  1. . S $P(X,U,1)=0
  1. I $P(X,U,1)=1 S MEET=1,DESC=DESC_"On Asthma Inhaled Steroid Meds ("_$$FMTE^BQIUL1($P(X,U,2))_" "_$$GET1^DIQ(9000010.14,$P(X,U,5)_",",.01,"E")_")"
  1. I $P(X,U,1)=0 S MEET=0,DESC=DESC_"Not on Asthma Inhaled Steroid Meds"
  1. K @TREF
  1. S RESULT="N/A",OTHER="",VISIT=""
  1. I $$ATAG^BQITDUTL(BQDFN,"Asthma") D
  1. . I 'MEET S RESULT="NO" Q
  1. . S RESULT="YES",OTHER=$$FMTE^BQIUL1($P(X,U,2)),VISIT="9000010:"_$P(X,U,4)
  1. Q RESULT_U_OTHER_U_VISIT
  1. ;
  1. ASFHX(BQDFN) ; EP - Family History of Asthma
  1. NEW APCHTFH,I,TLTIP
  1. I $$VERSION^XPDUTL("BJPC")>1.0 D FMH^APCHSAS1(BQDFN,.APCHTFH)
  1. I '$D(APCHTFH) Q ""
  1. S TLTIP="",I=0 F S I=$O(APCHTFH(I)) Q:I="" S TLTIP=TLTIP_$C(10)_APCHTFH(I)
  1. Q "YES"_U_U_TLTIP
  1. ;
  1. LHOSV(BQDFN) ; EP - Last Hospital Visit
  1. ; TXNMY - List of taxonomies applicable to the visit
  1. NEW TEMP,TXNMY,IEN,VSDTM,VISIT
  1. S TXNMY("BGP ASTHMA DXS")=""
  1. D VISIT^BQIDCUTL(BQDFN,9000010.07,.TXNMY,"H","",1,.TEMP)
  1. S VSDTM=$O(TEMP(""),-1) I VSDTM="" Q ""
  1. S IEN=$O(TEMP(VSDTM,""),-1) I IEN="" Q ""
  1. S VISIT=TEMP(VSDTM,IEN)
  1. Q $$FMTE^BQIUL1(VSDTM)_U_"9000010:"_VISIT
  1. ;
  1. LERUC(BQDFN) ; EP - Last ER/UC Visit
  1. ; TXNMY - List of taxonomies applicable to the visit
  1. ; CLNY - List of locations applicable to the visit
  1. NEW TEMP,TXNMY,IEN,VSDTM,VISIT,CLNY
  1. S TXNMY("BGP ASTHMA DXS")=""
  1. S CLNY(30)="",CLNY(80)=""
  1. D VISIT^BQIDCUTL(BQDFN,9000010.07,.TXNMY,"",.CLNY,1,.TEMP)
  1. S VSDTM=$O(TEMP(""),-1) I VSDTM="" Q ""
  1. S IEN=$O(TEMP(VSDTM,""),-1) I IEN="" Q ""
  1. S VISIT=TEMP(VSDTM,IEN)
  1. Q $$FMTE^BQIUL1(VSDTM)_U_"9000010:"_VISIT
  1. ;
  1. ASTRIG(BQDFN) ; EP - Asthma Triggers
  1. NEW ASTRIG,APCHC,APCHF,ATRDT,HIEN,VISIT,VSDTM,HFNM,VALUE,HOVER,ADATA,RESULT
  1. K ASTRIG
  1. S APCHC=$O(^AUTTHF("B","ASTHMA TRIGGERS",0))
  1. S APCHF="",RESULT=""
  1. F S APCHF=$O(^AUTTHF("AC",APCHC,APCHF)) Q:APCHF="" D
  1. . Q:'$D(^AUPNVHF("AA",BQDFN,APCHF))
  1. . S ATRDT=$O(^AUPNVHF("AA",BQDFN,APCHF,""))
  1. . S HIEN=$O(^AUPNVHF("AA",BQDFN,APCHF,ATRDT,""))
  1. . S VISIT=$P(^AUPNVHF(HIEN,0),U,3) I VISIT="" Q
  1. . S VSDTM=$P(^AUPNVSIT(VISIT,0),U,1)\1 I VSDTM=0 Q
  1. . S HFNM=$P(^AUTTHF(APCHF,0),U,1)
  1. . I HFNM["-" S HFNM=$P(HFNM,"-",2)
  1. . S ASTRIG(HFNM)=VSDTM_U_VISIT_U_HIEN
  1. ;
  1. S HFNM="",VALUE="",HOVER="",ADATA=""
  1. F S HFNM=$O(ASTRIG(HFNM)) Q:HFNM="" D
  1. . S VALUE=VALUE_HFNM_"; "
  1. . S HOVER=HOVER_HFNM_" ("_$$FMTE^BQIUL1($P(ASTRIG(HFNM),U,1))_"); "
  1. . ;S ADATA=ADATA_$P(ASTRIG(HFNM),U,1)_"|"_$P(ASTRIG(HFNM),U,2)_"; "
  1. S VALUE=$$TKO^BQIUL1(VALUE,"; ")
  1. S HOVER=$$TKO^BQIUL1(HOVER,"; ")
  1. S ADATA=$$TKO^BQIUL1(ADATA,"; ")
  1. I VALUE'="" S RESULT=VALUE_U_HOVER
  1. Q RESULT
  1. ;
  1. TOB(BQDFN) ; EP - Last Tobacco Health Factors
  1. NEW ASTOB,APCHC,APCHF,ATRDT,HIEN,VISIT,VSDTM,VALUE,HOVER,HVISIT
  1. S APCHC=$O(^AUTTHF("B","TOBACCO",0))
  1. S APCHF=""
  1. F S APCHF=$O(^AUTTHF("AC",APCHC,APCHF)) Q:APCHF="" D
  1. . Q:'$D(^AUPNVHF("AA",BQDFN,APCHF))
  1. . S ATRDT=$O(^AUPNVHF("AA",BQDFN,APCHF,""))
  1. . S HIEN=$O(^AUPNVHF("AA",BQDFN,APCHF,ATRDT,""))
  1. . S VISIT=$P(^AUPNVHF(HIEN,0),U,3) I VISIT="" Q
  1. . S VSDTM=$P(^AUPNVSIT(VISIT,0),U,1)\1 I VSDTM=0 Q
  1. . S ASTOB(VSDTM,VISIT,HIEN)=$P(^AUTTHF(APCHF,0),U,1)
  1. ;
  1. S VSDTM=$O(ASTOB(""),-1),VALUE="",HOVER=""
  1. I VSDTM="" Q VALUE
  1. ;
  1. S VISIT=""
  1. F S VISIT=$O(ASTOB(VSDTM,VISIT)) Q:VISIT="" D
  1. . S HIEN=""
  1. . F S HIEN=$O(ASTOB(VSDTM,VISIT,HIEN)) Q:HIEN="" D
  1. .. S VALUE=VALUE_ASTOB(VSDTM,VISIT,HIEN)_"; "
  1. .. S HOVER=$$FMTE^BQIUL1(VSDTM),HVISIT="9000010:"_VISIT
  1. S VALUE=$$TKO^BQIUL1(VALUE,"; ")
  1. Q VALUE_U_HOVER_U_HVISIT
  1. ;
  1. ASVIS(BQDFN) ; EP - Last Asthma Visit
  1. NEW MEAS,VALUE,VTMP,AVALUE,IEN,QFL,VISIT,DTM,CLSN,TXIEN,DATM,BQI,FREF
  1. NEW GREF,ENDT,RESULT,TEMP,TIEN,TXNMY,TYP,VSDTM
  1. ; Check for measurements
  1. F MEAS="ADM","ASFD" D
  1. . S VALUE=$$MEAS^BQIDCUTL(BQDFN,MEAS)
  1. . I VALUE S VTMP($P(VALUE,U,6),$P(VALUE,U,4),"V")=""
  1. ;
  1. ; Check for Asthma Triggers
  1. S VALUE=$$ASTRIG(BQDFN)
  1. I $P(VALUE,U,3)'="" D
  1. . F BQI=1:1 S AVALUE=$P($P(VALUE,U,3),"; ",BQI) Q:AVALUE="" D
  1. .. S VTMP($P(AVALUE,"|",1),$P(AVALUE,"|",2),"V")=""
  1. ;
  1. ; Check for Asthma Patient Education
  1. S VALUE=$$FED^BQITRUTL("",BQDFN,"ASM-")
  1. I VALUE S VTMP($P(VALUE,U,2),$P(VALUE,U,4),"V")=""
  1. S VALUE=$$FED^BQITRUTL("",BQDFN,"493")
  1. I VALUE S VTMP($P(VALUE,U,2),$P(VALUE,U,4),"V")=""
  1. ;
  1. ; Check for Asthma Control
  1. S IEN=""
  1. F S IEN=$O(^AUPNVAST("AC",BQDFN,IEN)) Q:IEN="" D
  1. . I $P(^AUPNVAST(IEN,0),U,14)="" Q
  1. . S VISIT=$P(^AUPNVAST(IEN,0),U,3) I VISIT="" Q
  1. . S DTM=$P($G(^AUPNVSIT(VISIT,0)),U,1)\1 I DTM=0 Q
  1. . S VTMP(DTM,VISIT,"V")=""
  1. ;
  1. ; Check Problem List for addition/modification for Asthma Severity Classification
  1. S CLSN=$O(^APCDPLCL("B","ASTHMA SEVERITY","")) I CLSN'="" D
  1. . S TXIEN=$P(^APCDPLCL(CLSN,0),U,2),TXNMY($P(^ATXAX(TXIEN,0),U,1))=""
  1. . D PROB^BQIDCUTL(BQDFN,.TXNMY,.TEMP)
  1. . S DTM="",QFL=0
  1. . F S DTM=$O(TEMP(DTM),-1) Q:DTM="" D Q:QFL
  1. .. S IEN=""
  1. .. F S IEN=$O(TEMP(DTM,IEN),-1) Q:IEN="" D Q:QFL
  1. ... I $P(^AUPNPROB(IEN,0),U,15)="" Q
  1. ... S QFL=1,VTMP(DTM,IEN,"P")=""
  1. ;
  1. S DATM=$O(VTMP(""),-1)
  1. I DATM="" Q ""
  1. S IEN=$O(VTMP(DATM,""),-1),TYP=$O(VTMP(DATM,IEN,""))
  1. S TYP=$S("P":9000011,1:9000010)
  1. Q DATM_U_TYP_":"_IEN
  1. ;
  1. DSP(ASDFN,ASIEN) ; EP - Display Care Mgmt field
  1. NEW CODE,VALUE,RESULT,ASPIEN,CRIEN,CMSN,LINK
  1. S CODE=$P($G(^BQI(90506.1,ASIEN,0)),U,1) I CODE="" Q ""
  1. S CMSN=$P($G(^BQI(90506.1,ASIEN,3)),U,1) I CMSN="" Q ""
  1. S CRIEN=$O(^BQIPAT(ASDFN,60,"B",CMSN,"")) I CRIEN="" Q ""
  1. S ASPIEN="",VALUE="",HOVER="",LINK="",RESULT=""
  1. F S ASPIEN=$O(^BQIPAT(ASDFN,60,CRIEN,1,"B",CODE,ASPIEN)) Q:ASPIEN="" D
  1. . S VALUE=$P($G(^BQIPAT(ASDFN,60,CRIEN,1,ASPIEN,0)),U,2)
  1. . S HOVER=$P($G(^BQIPAT(ASDFN,60,CRIEN,1,ASPIEN,0)),U,5)
  1. . S LINK=$P($G(^BQIPAT(ASDFN,60,CRIEN,1,ASPIEN,0)),U,4)
  1. ;I VALUE'="" S RESULT=VALUE_$C(26)_HOVER_$C(26)_LINK
  1. I VALUE'="",HOVER'="" S RESULT=VALUE_$C(26)_HOVER_$C(26)_LINK
  1. E S RESULT=VALUE
  1. Q RESULT