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

APCHSMAS.m

Go to the documentation of this file.
  1. APCHSMAS ; IHS/CMI/LAB -- CONTINUATION OF ROUTINES ;
  1. ;;2.0;IHS PCC SUITE;**5,11,15,16**;MAY 14, 2009;Build 9
  1. ;;;
  1. S(X) ;
  1. NEW %,C S (C,%)=0 F S %=$O(APCHSTEX(%)) Q:%'=+% S C=C+1
  1. S APCHSTEX(C+1)=X
  1. Q
  1. W3 ;
  1. S APCHSTEX(1)="If this patient has asthma, consider",APCHSTEX(2)="giving this patient a flu shot,",APCHSTEX(3)="per protocol during the flu season."
  1. D WRITE^APCHSMU
  1. X APCHSURX
  1. Q
  1. HMR1ST(P) ;EP - for indicator 1 is patient eligible?
  1. I $$PIS(P,$$FMADD^XLFDT(DT,-90)) Q 0
  1. I $$LASTACLG(P,1)>1 Q 1 ;if persistent
  1. S APCHSX=$$IPLSNO(P,"PXRM ASTHMA PERSISTENT") I $P(APCHSX,U,1) Q APCHSX
  1. S APCHSX=$$PLTAXAC(P,"BJPC ASTHMA PERSISTENT") I APCHSX Q APCHSX
  1. I $T(ATAG^BQITDUTL)]"" S X=$$ATAG^BQITDUTL(P,"Asthma") I $P(X,U),($P(X,U,2)="P"!($P(X,U,2)="A")) Q 1
  1. S APCHSX=$$NASV(P,$$FMADD^XLFDT(DT,-183),2) I $P(APCHSX,U,1)>2 Q 1_U_"Asthma POVs on "_$$FMTE^XLFDT($P(APCHSX,U,2))_", "_$$FMTE^XLFDT($P(APCHSX,U,3))_" and "_$$FMTE^XLFDT($P(APCHSX,U,4))
  1. Q 0
  1. HMR3ST(P) ;EP - ind 3
  1. I $$LASTACLG(P)>1 Q 1 ;if persistent
  1. ;BJPC V2.0 PATCH 15 CR #4133
  1. S APCHSX=$$IPLSNO(P,"PXRM ASTHMA PERSISTENT") I $P(APCHSX,U,1) Q APCHSX
  1. S APCHSX=$$PLTAXAC(P,"BJPC ASTHMA PERSISTENT") I APCHSX Q APCHSX
  1. I $T(ATAG^BQITDUTL)]"" S X=$$ATAG^BQITDUTL(P,"Asthma") I $P(X,U),($P(X,U,2)="P"!($P(X,U,2)="A")) Q 1
  1. I $$PIS(P,$$FMADD^XLFDT(DT,-90)) Q 1
  1. I $$NASV(P,$$FMADD^XLFDT(DT,183))>2 Q 1
  1. Q 0
  1. HMR4ST(P) ;EP - ind 4
  1. I $T(ATAG^BQITDUTL)]"" S X=$$ATAG^BQITDUTL(P,"Asthma") I $P(X,U),($P(X,U,2)="P"!($P(X,U,2)="A")) Q 1
  1. I $$NASV(P,$$FMADD^XLFDT(DT,-183))>2 Q 1
  1. Q 0
  1. HMR5ST(P) ;EP
  1. I $$LASTACLG(P)>1 Q 1 ;if persistent
  1. S APCHSX=$$IPLSNO(P,"PXRM ASTHMA PERSISTENT") I $P(APCHSX,U,1) Q APCHSX
  1. S APCHSX=$$PLTAXAC(P,"BJPC ASTHMA PERSISTENT") I APCHSX Q APCHSX
  1. NEW X
  1. I $T(ATAG^BQITDUTL)]"" S X=$$ATAG^BQITDUTL(P,"Asthma") I $P(X,U),($P(X,U,2)="P"!($P(X,U,2)="A")) Q 1
  1. I $$NASV(P,$$FMADD^XLFDT(DT,-183))>2 Q 1
  1. Q ""
  1. HMR6ST(P) ;EP - ind 4
  1. NEW APCHSX
  1. I $$LASTACLG(P)>1 Q 1 ;if any persistent
  1. S APCHSX=$$IPLSNO(P,"PXRM ASTHMA PERSISTENT") I $P(APCHSX,U,1) Q APCHSX
  1. S APCHSX=$$PLTAXAC(P,"BJPC ASTHMA PERSISTENT") I APCHSX Q APCHSX
  1. NEW X
  1. I $T(ATAG^BQITDUTL)]"" S X=$$ATAG^BQITDUTL(P,"Asthma") I $P(X,U),($P(X,U,2)="P"!($P(X,U,2)="A")) Q 1
  1. I $$NASV(P,$$FMADD^XLFDT(DT,-183))>2 Q 1 ;3 visits for asthma in past 6 months
  1. Q 0
  1. HMR2ST(P) ;EP - candidate for indicator 2?
  1. NEW APCHSX
  1. S APCHSX=$$LASTACLG(P,2)
  1. I $P(APCHSX,U)>1 Q 1_U_"Asthma Severity "_$P(APCHSX,U,2) ;if persistent
  1. S APCHSX=$$IPLSNO(P,"PXRM ASTHMA PERSISTENT") I $P(APCHSX,U,1) Q APCHSX
  1. S APCHSX=$$PLTAXAC(P,"BJPC ASTHMA PERSISTENT") I APCHSX Q APCHSX
  1. I $T(ATAG^BQITDUTL)]"" S X=$$ATAG^BQITDUTL(P,"Asthma") I $P(X,U),($P(X,U,2)="P"!($P(X,U,2)="A")) Q 1_U_"Asthma Diagnostic Tag: "_$S($P(X,U,2)="A":"Accepted",1:"Proposed")_" as of "_$$FMTE^XLFDT($P($P(X,U,3),".",1))
  1. S APCHSX=$$NASV(P,$$FMADD^XLFDT(DT,-183),2) I $P(APCHSX,U,1)>2 Q 1_U_"Asthma POVs on "_$$FMTE^XLFDT($P(APCHSX,U,2))_", "_$$FMTE^XLFDT($P(APCHSX,U,3))_" and "_$$FMTE^XLFDT($P(APCHSX,U,4))
  1. I $$LASTACON(P,1)="N"!($$LASTACON(P,1)="V") Q 1_U_"Most Recent Asthma Control "_$$LASTACON(P,6)
  1. S APCHSX=$$AEXAC(P,$$FMADD^XLFDT(DT,-365),2) I $P(APCHSX,U) Q 1_U_"History of Asthma Exacerbation POV: "_$P(APCHSX,U,2)
  1. S APCHSX=$$ASERV(P,$$FMADD^XLFDT(DT,-365),2) I $P(APCHSX,U) Q 1_U_$P(APCHSX,U,2)
  1. Q 0
  1. HMR7ST(P,R) ;EP - candidate for tp uncontrolled asthma
  1. K R
  1. NEW X
  1. S X=$$ERPAST(P,$$FMADD^XLFDT(DT,-365))
  1. I $P(X,U)>1 Q X
  1. I $$LASTACLG(P,1)>1!($$IPLSNO(P,"PXRM ASTHMA PERSISTENT"))!($$PLTAXAC(P,"BJPC ASTHMA PERSISTENT")) S X=$$ORAL2(P,$$FMADD^XLFDT(DT,-365)) I $P(X,U)>1 Q X ;PERSISTENT
  1. I $$LASTACLG(P,1)=1!($$IPLSNO(P,"PXRM ASTHMA INTERMITTENT")) S X=$$ORAL1(P,$$FMADD^XLFDT(DT,-365)) I X Q X ;INTERMITTENT
  1. S X=$$ERORAL(P,$$FMADD^XLFDT(DT,-365)) I X Q X
  1. Q ""
  1. ;
  1. PLTAXAC(P,A) ;EP - is CODE ON PL AND IS IT ACTIVE
  1. I $G(P)="" Q ""
  1. I $G(A)="" Q ""
  1. S S=$G(S)
  1. N T S T=$O(^ATXAX("B",A,0))
  1. I 'T Q ""
  1. N X,Y,I S (X,Y,I)=0 F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X!(I) I $D(^AUPNPROB(X,0)) D
  1. .S Y=$P(^AUPNPROB(X,0),U)
  1. .Q:'$$ICD^ATXCHK(Y,T,9)
  1. .Q:$P(^AUPNPROB(X,0),U,12)="D"
  1. .Q:$P(^AUPNPROB(X,0),U,12)="I"
  1. .S I=1_U_$P($$ICDDX^ICDEX(Y,DT),U,4)_" on their Problem List"
  1. Q I
  1. IPLSNO(P,T) ;EP - any problem list entry with a SNOMED in T
  1. NEW OUT,IN,C,G,Y,X,I,SNL,SNI
  1. S OUT="SNL"
  1. S X=$$SUBLST^BSTSAPI(OUT,T)
  1. ;BUILD INDEX
  1. S C=0 F S C=$O(SNL(C)) Q:C'=+C S I=$P(SNL(C),U,1) I I]"" S SNI(I)=SNL(C)
  1. K SNL
  1. ;LOOP PROBLEM LIST
  1. S (X,G)=""
  1. F S X=$O(^AUPNPROB("APCT",P,X)) Q:X=""!(G) D
  1. .S Y=0 F S Y=$O(^AUPNPROB("APCT",P,X,Y)) Q:Y'=+Y!(G) D
  1. ..Q:'$D(^AUPNPROB(Y,0))
  1. ..Q:$P(^AUPNPROB(Y,0),U,12)="D" ;deleted
  1. ..Q:$P(^AUPNPROB(Y,0),U,12)="I" ;inactive
  1. ..I $D(SNI(X)) S G=1_U_$$CONCPT^AUPNVUTL(X)_" on their Problem List"
  1. Q G
  1. AS3PV(P,BD) ;EP
  1. NEW APCH,%,G,C,APCHD,D
  1. S (G,C)=0
  1. S %=P_"^ALL DX [BGP ASTHMA DXS;DURING "_BD_"-"_DT,E=$$START1^APCLDF(%,"APCH(")
  1. I '$D(APCH) Q ""
  1. ;reorder by date
  1. S (G,X)=0 F S X=$O(APCH(X)) Q:X'=+X S D=$P(APCH(X),U,1) S APCHD(D)=""
  1. S X=0 F S X=$O(APCHD(X)) Q:X'=+X S C=C+1
  1. I C>2 Q 1
  1. Q ""
  1. ;
  1. ERPAST(P,BD) ; - 2 or more visits?
  1. ;return #^event 1 text^event 1 date^event 2 text^event 2 date
  1. NEW C,X,V,Z,APCHX,APCHD,%,E,G,P1,P2
  1. K APCHX,APCHD
  1. S %=P_"^ALL VISITS;DURING "_$$FMTE^XLFDT(BD)_"-"_$$FMTE^XLFDT(DT),E=$$START1^APCLDF(%,"APCHX(")
  1. K E
  1. S C=0,X=0,V="" F S X=$O(APCHX(X)) Q:X'=+X D
  1. .S V=$P(APCHX(X),U,5)
  1. .Q:'$D(^AUPNVSIT(V,0))
  1. .Q:$P(^AUPNVSIT(V,0),U,11)
  1. .S G=0
  1. .S Z=$$CLINIC^APCLV(V,"C")
  1. .I Z=30!(Z=80)!($P(^AUPNVSIT(V,0),U,7)="H") S G=1
  1. .Q:'G
  1. .S Z=$$PRIMPOV^APCLV(V,"I")
  1. .Q:'$$ICD^ATXAPI(Z,$O(^ATXAX("B","BGP ASTHMA DXS",0)),9)
  1. .I '$D(E(9999999-$$VD^APCLV(V,"I"))) S C=C+1 S E((9999999-$$VD^APCLV(V,"I")))=V
  1. .Q
  1. I C<2 Q ""
  1. S Z="",G=0
  1. S Z=C
  1. S D=0 F S D=$O(E(D)) Q:D'=+D!(G>1) D
  1. .S G=G+1
  1. .S V=E(D)
  1. .I G=1 S P1=2
  1. .I G=2 S P1=3
  1. .S X=$S($P(^AUPNVSIT(V,0),U,7)="H":"Inpatient Admission with ",1:$$CLINIC^APCLV(V,"E")_" clinic visit with ")
  1. .S X=X_$$PRIMPOV^APCLV(V,"N")_" ("_$$PRIMPOV^APCLV(V,"C")_") on "_$$FMTE^XLFDT($$VD^APCLV(V,"I"))
  1. .S $P(Z,U,P1)=X
  1. .Q
  1. Q Z
  1. ;
  1. ERORAL(P,BD) ;EP
  1. ;return 1^event 1 text^event 1 date^event 2 text^event 2 date
  1. NEW C,X,V,Z,APCHX,APCHD,%,E,G,APCHMEDS
  1. K APCHX,APCHD
  1. S %=P_"^ALL VISITS;DURING "_$$FMTE^XLFDT(BD)_"-"_$$FMTE^XLFDT(DT),E=$$START1^APCLDF(%,"APCHX(")
  1. K E
  1. S E=""
  1. S C=0,X=0,V="" F S X=$O(APCHX(X)) Q:X'=+X!(E]"") D
  1. .S V=$P(APCHX(X),U,5)
  1. .Q:'$D(^AUPNVSIT(V,0))
  1. .Q:$P(^AUPNVSIT(V,0),U,11)
  1. .S G=0
  1. .S Z=$$CLINIC^APCLV(V,"C")
  1. .I Z=30!(Z=80)!($P(^AUPNVSIT(V,0),U,7)="H") S G=1
  1. .Q:'G
  1. .S Z=$$PRIMPOV^APCLV(V,"I")
  1. .Q:'$$ICD^ATXAPI(Z,$O(^ATXAX("B","BGP ASTHMA DXS",0)),9)
  1. .;NOW CHECK FOR ORAL MEDS 14 DAYS +/- VISIT DATE
  1. .K APCHMEDS
  1. .D GETMEDS^APCHSMU1(P,BD,$$FMADD^XLFDT($$VD^APCLV(V,"I"),-14),"BGP RA GLUCOCORTICOIDS",,"BGP RA GLUCOCORTICOIDS CLASS",,.APCHMEDS)
  1. .I '$D(APCHMEDS) Q
  1. .S Z=0,%="" F S Z=$O(APCHMEDS(Z)) Q:Z'=+Z S %=Z
  1. .S Y=$S($P(^AUPNVSIT(V,0),U,7)="H":"Inpatient Admission with ",1:$$CLINIC^APCLV(V,"E")_" clinic visit with ")
  1. .S Y=Y_$$PRIMPOV^APCLV(V,"N")_" ("_$$PRIMPOV^APCLV(V,"C")_") on "_$$FMTE^XLFDT($$VD^APCLV(V,"I"))
  1. .S E=1_U_Y
  1. .S Y="Oral Corticosteroid Therapy "_$P(APCHMEDS(%),U,2)_" on "_$$FMTE^XLFDT($P(APCHMEDS(%),U))
  1. .S E=E_U_Y
  1. Q E
  1. ;
  1. AEXAC(P,BD,F) ;EP
  1. NEW APCH,%,G,C,APCHD,D,E
  1. S F=$G(F)
  1. I F="" S F=1
  1. S (G,C)=0
  1. S %=P_"^ALL DX [APCH ASTHMA EXACERBATION DXS;DURING "_BD_"-"_DT,E=$$START1^APCLDF(%,"APCH(")
  1. I '$D(APCH) Q ""
  1. ;A and H only
  1. S E=0 F S E=$O(APCH(E)) Q:E'=+E I "AH"'[$P(^AUPNVSIT($P(APCH(E),U,5),0),U,7) K APCH(E)
  1. I '$D(APCH) Q ""
  1. I F=1 Q 1
  1. S C=$O(APCH(0))
  1. Q 1_U_$$VAL^XBDIQ1(9000010.07,+$P(APCH(C),U,4),.04)_" on "_$$FMTE^XLFDT($P(APCH(C),U))
  1. ;
  1. BRON(P,BDATE) ;
  1. I $G(P)="" Q
  1. NEW REL,TOT,Y,X,Z
  1. S REL=$$NREL(P,$$FMADD^XLFDT(DT,-365))
  1. S TOT=$$NASF(P,$$FMADD^XLFDT(DT,-365))
  1. S Y="" I TOT>0 S Y=(REL/(REL+TOT))
  1. Q Y
  1. ;
  1. PIS(P,BDATE) ;EP - is patient on inhaled steriods since this date BDATE
  1. I '$G(P) Q ""
  1. NEW APCHMEDS
  1. K APCHMEDS
  1. D GETMEDS^APCHSMU1(P,BDATE,DT,"BAT ASTHMA INHALED STEROIDS","BAT ASTHMA INHLD STEROIDS NDC",,,.APCHMEDS)
  1. I '$D(APCHMEDS) Q 0
  1. Q 1
  1. ;
  1. ORAL1(P,BDATE) ;EP - is patient on inhaled steriods since this date BDATE
  1. I '$G(P) Q ""
  1. NEW APCHMEDS,R,G,A,B,C,APCHX,E,%,APCHD
  1. K APCHMEDS
  1. D GETMEDS^APCHSMU1(P,BDATE,DT,"BGP RA GLUCOCORTICOIDS",,"BGP RA GLUCOCORTICOIDS CLASS",,.APCHMEDS)
  1. I '$D(APCHMEDS) Q ""
  1. S G=""
  1. S X=0 F S X=$O(APCHMEDS(X)) Q:X'=+X!(G) D
  1. .S D=$P(APCHMEDS(X),U,1)
  1. .K APCHX,APCHD
  1. .S %=P_"^ALL VISITS;DURING "_$$FMTE^XLFDT(D)_"-"_$$FMTE^XLFDT(D),E=$$START1^APCLDF(%,"APCHX(")
  1. .S A=0 F S A=$O(APCHX(A)) Q:A'=+A D
  1. ..S C=$$PRIMPOV^APCLV($P(APCHX(A),U,5),"I") Q:'$$ICD^ATXAPI(C,$O(^ATXAX("B","BGP ASTHMA DXS",0)),9)
  1. ..S G=1_U_"Oral Corticosteroid therapy "_$P(APCHMEDS(X),U,2)_" associated with "_$$PRIMPOV^APCLV($P(APCHX(A),U,5),"N")_" ("_$$PRIMPOV^APCLV($P(APCHX(A),U,5),"C")_") on "_$$FMTE^XLFDT($P(APCHMEDS(X),U))
  1. Q G
  1. ;
  1. ORAL2(P,BDATE) ;EP - is patient on inhaled steriods since this date BDATE
  1. I '$G(P) Q ""
  1. NEW APCHMEDS,R,G,A,B,C,APCHX,E,%,APCHD
  1. K APCHMEDS
  1. D GETMEDS^APCHSMU1(P,BDATE,DT,"BGP RA GLUCOCORTICOIDS",,"BGP RA GLUCOCORTICOIDS CLASS",,.APCHMEDS)
  1. I '$D(APCHMEDS) Q ""
  1. I '$D(APCHMEDS(2)) Q "" ;doesn't have at least 2 prescriptions
  1. ;reorder by date and count 1 per date
  1. K APCHD
  1. S X=0 F S X=$O(APCHMEDS(X)) Q:X'=+X S APCHD($P(APCHMEDS(X),U,1))=APCHMEDS(X)
  1. S G=0,B=1,E=""
  1. S D=0 F S D=$O(APCHD(D)) Q:D'=+D D
  1. .K APCHX
  1. .S %=P_"^ALL VISITS;DURING "_$$FMTE^XLFDT(D)_"-"_$$FMTE^XLFDT(D),R=$$START1^APCLDF(%,"APCHX(")
  1. .S A=0 F S A=$O(APCHX(A)) Q:A'=+A D
  1. ..S C=$$PRIMPOV^APCLV($P(APCHX(A),U,5),"I") Q:'$$ICD^ATXAPI(C,$O(^ATXAX("B","BGP ASTHMA DXS",0)),9)
  1. ..S G=G+1,B=B+1 S $P(E,U)=G,$P(E,U,B)="Oral Corticosteroid therapy "_$P(APCHD(D),U,2)_" associated with "_$$PRIMPOV^APCLV($P(APCHX(A),U,5),"N")_" ("_$$PRIMPOV^APCLV($P(APCHX(A),U,5),"C")_") on "_$$FMTE^XLFDT($P(APCHD(D),U))
  1. Q E
  1. NREL(P,BDATE) ;EP - reliever?
  1. ;number of reliever meds between BDATE and EDATE
  1. NEW X,APCHX,E
  1. S X=P_"^ALL MEDS [BAT ASTHMA RELIEVER MEDS"_";DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(DT) S E=$$START1^APCLDF(X,"BATL(")
  1. I '$D(APCHX(1)) Q 0
  1. NEW C,X S (X,C)=0 F S X=$O(APCHX(X)) Q:X'=+X S C=C+1
  1. Q C
  1. ;
  1. ASERV(P,BDATE,F) ;EP - ER ASTHMA visits since BDATE
  1. I '$G(P) Q 0
  1. S F=$G(F)
  1. I F="" S F=1
  1. NEW C,X,V,Z,APCHX,APCHD,%,E,G
  1. K APCHX,APCHD
  1. S %=P_"^ALL VISITS;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(DT),E=$$START1^APCLDF(%,"APCHX(")
  1. S C=0,X=0,V="" F S X=$O(APCHX(X)) Q:X'=+X!(C) D
  1. .S V=$P(APCHX(X),U,5)
  1. .Q:'$D(^AUPNVSIT(V,0))
  1. .Q:$P(^AUPNVSIT(V,0),U,11)
  1. .S Z=$$CLINIC^APCLV(V,"C")
  1. .I Z'=30,Z'=80 Q ;urgent and er only
  1. .S Z=$$PRIMPOV^APCLV(V,"I")
  1. .Q:'$$ICD^ATXAPI(Z,$O(^ATXAX("B","BGP ASTHMA DXS",0)),9)
  1. .S C=1,G=V
  1. I 'C Q ""
  1. I F=1 Q C
  1. Q 1_U_$$PRIMPOV^APCLV(V,"N")_" at "_$$CLINIC^APCLV(V,"E")_" clinic on "_$$FMTE^XLFDT($P($P(^AUPNVSIT(V,0),U),"."))
  1. ;
  1. NASV(P,BDATE,F) ;EP - number of asthma visits since BDATE
  1. ;count only A, H and any pov
  1. ;different dates, not visits
  1. I '$G(P) Q 0
  1. I '$G(F) S F=1
  1. NEW C,X,V,Z,APCHX,APCHD,Y,G
  1. K APCHX,APCHD
  1. S %=P_"^ALL VISITS;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(DT),E=$$START1^APCLDF(%,"APCHX(")
  1. S C=0,X=0,V="" F S X=$O(APCHX(X)) Q:X'=+X D
  1. .S V=$P(APCHX(X),U,5)
  1. .Q:'$D(^AUPNVSIT(V,0))
  1. .Q:"AH"'[$P(^AUPNVSIT(V,0),U,7)
  1. .Q:$P(^AUPNVSIT(V,0),U,11)
  1. .S Z=$$PRIMPOV^APCLV(V,"I")
  1. .Q:'$$ICD^ATXAPI(Z,$O(^ATXAX("B","BGP ASTHMA DXS",0)),9)
  1. .S APCHD((9999999-$P($P(^AUPNVSIT(V,0),U,1),".")))=""
  1. S X=0 F S X=$O(APCHD(X)) Q:X'=+X S C=C+1
  1. I F=1 Q C
  1. NEW R
  1. S R=C
  1. S X=0,V=1 F S X=$O(APCHD(X)) Q:X'=+X S V=V+1,$P(R,U,V)=(9999999-X)
  1. Q R
  1. NASF(P,BDATE) ;EP - number of asthma fill dates since BDATE
  1. I '$G(P) Q ""
  1. NEW APCHX,X,Y,C,E,EDATE K APCHX
  1. S EDATE=$$FMTE^XLFDT(DT),BDATE=$$FMTE^XLFDT(BDATE)
  1. S X=P_"^ALL MEDS [BAT ASTHMA RELIEVER MEDS "_";DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(X,"APCHX(")
  1. S (C,X)=0 F S X=$O(APCHX(X)) Q:X'=+X S C=C+1
  1. K APCHX S X=P_"^ALL MEDS [BAT ASTHMA INHALED STEROIDS "_";DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(X,"APCHX(")
  1. S (C,X)=0 F S X=$O(APCHX(X)) Q:X'=+X S C=C+1
  1. K APCHX S X=P_"^ALL MEDS [BAT ASTHMA CONTROLLER MEDS "_";DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(X,"APCHX(")
  1. S (C,X)=0 F S X=$O(APCHX(X)) Q:X'=+X S C=C+1
  1. Q C
  1. LASTAM(P,F) ;EP - return date of last asthma management plan = yes
  1. I '$G(P) Q ""
  1. I '$G(F) S F=1
  1. NEW D S D=$O(^AUPNVAST("AM",P,0))
  1. I 'D Q ""
  1. I F=1 Q 9999999-D
  1. I F=2 Q $$FMTE^XLFDT(9999999-D)
  1. Q ""
  1. LASTSEV(P,F) ;EP - return last severity recorded
  1. ;1 - internal set of codes
  1. ;2 - internal date
  1. ;3 - external date
  1. ;4 - external name
  1. ;5 - code and external name
  1. NEW D,LAST,E,S
  1. I '$G(P) Q ""
  1. I '$G(F) S F=1
  1. S D=$O(^AUPNVAST("AS",P,0))
  1. I 'D Q ""
  1. S LAST="",E=0 F S E=$O(^AUPNVAST("AS",P,D,E)) Q:E'=+E S LAST=E
  1. I 'LAST Q ""
  1. S S=^AUPNVAST("AS",P,D,LAST)
  1. I F=1 Q S
  1. I F=2 Q 9999999-D
  1. I F=3 Q $$FMTE^XLFDT(9999999-D)
  1. I F=4 Q $$EXTSET^XBFUNC(9000010.41,.04,S)
  1. I F=5 Q S_"-"_$$EXTSET^XBFUNC(9000010.41,.04,S)
  1. Q ""
  1. ;
  1. LASTACLG(P,F) ;EP - return last CLASSIFICATION recorded
  1. NEW D,LAST,E,S,X,T
  1. I '$G(P) Q ""
  1. I '$G(F) S F=1
  1. S T=$O(^ATXAX("B","BGP ASTHMA DXS",0))
  1. I 'T Q ""
  1. S S=""
  1. S X=0 F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X D
  1. .Q:$P(^AUPNPROB(X,0),U,12)="D"
  1. .Q:$P(^AUPNPROB(X,0),U,12)="I" ;inactive
  1. .S C=$P($G(^AUPNPROB(X,0)),U)
  1. .Q:C=""
  1. .Q:'$$ICD^ATXAPI(C,T,9) ;not asthma dx
  1. .Q:$P(^AUPNPROB(X,0),U,15)="" ;no classification
  1. .S E=$P(^AUPNPROB(X,0),U,15)
  1. .I E'>$P(S,U,1) Q
  1. .S S=E_U_$$VAL^XBDIQ1(9000011,X,.15)
  1. I F=1 Q $P(S,U)
  1. I F=2 Q S
  1. ;
  1. LASTASCL(P,F) ;EP - last CLASSIFICATION
  1. NEW D,LAST,E,S,X,T
  1. I '$G(P) Q ""
  1. I '$G(F) S F=1
  1. S T=$O(^ATXAX("B","BGP ASTHMA DXS",0))
  1. I 'T Q ""
  1. S S=""
  1. K LAST
  1. S X=0 F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X D
  1. .Q:$P(^AUPNPROB(X,0),U,12)="D"
  1. .S C=$P($G(^AUPNPROB(X,0)),U)
  1. .Q:C=""
  1. .Q:'$$ICD^ATXAPI(C,T,9)
  1. .Q:$P(^AUPNPROB(X,0),U,15)=""
  1. .S E=$P(^AUPNPROB(X,0),U,15)
  1. .S D=$P(^AUPNPROB(X,0),U,3)
  1. .S LAST(D)=E_U_$$VAL^XBDIQ1(9000011,X,.15)
  1. S S=$O(LAST(0))
  1. I S="" Q ""
  1. I F=1 Q $P(LAST(S),U,1)
  1. Q $P(LAST(S),U,2)
  1. ;
  1. LASTACON(P,F) ;EP - last ASTHMA CONTROL
  1. NEW D,LAST,E,S
  1. I '$G(P) Q ""
  1. I '$G(F) S F=1
  1. S D=$O(^AUPNVAST("AAC",P,0))
  1. I 'D Q ""
  1. S LAST="",E=0 F S E=$O(^AUPNVAST("AAC",P,D,E)) Q:E'=+E S LAST=E
  1. I 'LAST Q ""
  1. S S=^AUPNVAST("AAC",P,D,LAST)
  1. I F=1 Q S
  1. I F=2 Q 9999999-D
  1. I F=3 Q $$FMTE^XLFDT(9999999-D)
  1. I F=4 Q $$VAL^XBDIQ1(9000010.41,LAST,.14)
  1. I F=5 Q S_"-"_$$EXTSET^XBFUNC(9000010.41,.14,S)
  1. I F=6 Q $$VAL^XBDIQ1(9000010.41,LAST,.14)_" documented on "_$$FMTE^XLFDT((9999999-D))
  1. I F=7 Q $$FMTE^XLFDT((9999999-D))_" "_$$VAL^XBDIQ1(9000010.41,LAST,.14)
  1. Q ""
  1. ;