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

BDMAPIU.m

Go to the documentation of this file.
  1. BDMAPIU ; IHS/CMI/LAB - visit data ;
  1. ;;2.0;DIABETES MANAGEMENT SYSTEM;**2,4,6,8**;JUN 14, 2007;Build 53
  1. ;IHS/TUCSON/LAB - added G parameter to provider call
  1. ;
  1. ;
  1. ;BJPC v1.0 patch 1
  1. ;
  1. LASTITEM(P,BDMV,BDMT,BD,ED,BDMF) ;PEP - return last item BDMV OF TYPE BDMT DURING BD TO ED IN FORM BDMF
  1. I $G(BDMF)="" S BDMF="D"
  1. I $G(BD)="" S BD=$$DOB^AUPNPAT(P)
  1. I $G(ED)="" S ED=DT
  1. NEW BDMR,%,E,Y K R S %=P_"^LAST "_BDMT_" "_BDMV_";DURING "_BD_"-"_ED,E=$$START1^APCLDF(%,"BDMR(")
  1. I '$D(BDMR(1)) Q ""
  1. I BDMF="D" Q $P(BDMR(1),U)
  1. Q $$V(BDMR(1),BDMT)
  1. ;
  1. V(Y,T) ;EP
  1. Q $P(Y,U,1)_"^"_$$T(T)_$P(Y,U,3)_"^"_$S($$F(T)]""&($$VF(T)]""):$$VAL^XBDIQ1($$F(T),+$P(Y,U,4),$$VF(T)),1:"")_"^"_$P(Y,U,5)_"^"_$$F(T)_"^"_+$P(Y,U,4)
  1. ;
  1. T(T) ;EP
  1. NEW X,Y
  1. S X=$O(^BDMCNTL("B","TERMS/FILE NUMBER",0))
  1. I X="" Q ""
  1. S Y=$O(^BDMCNTL(X,11,"B",T,0))
  1. I 'Y Q ""
  1. Q $P($G(^BDMCNTL(X,11,Y,0)),U,3)
  1. ;
  1. F(T) ;EP
  1. NEW X,Y
  1. S X=$O(^BDMCNTL("B","TERMS/FILE NUMBER",0))
  1. I X="" Q ""
  1. S Y=$O(^BDMCNTL(X,11,"B",T,0))
  1. I 'Y Q ""
  1. Q $P($G(^BDMCNTL(X,11,Y,0)),U,2)
  1. ;
  1. VF(T) ;EP
  1. NEW X,Y
  1. S X=$O(^BDMCNTL("B","TERMS/FILE NUMBER",0))
  1. I X="" Q ""
  1. S Y=$O(^BDMCNTL(X,11,"B",T,0))
  1. I 'Y Q ""
  1. Q $P($G(^BDMCNTL(X,11,Y,0)),U,4)
  1. ;
  1. LASTHF(P,C,BD,ED,F) ;PEP - get last factor in category C for patient P between BD and ED
  1. I '$G(P) Q ""
  1. I $G(C)="" Q ""
  1. I $G(F)="" S F=""
  1. I $G(BD)="" S BD=$$DOB^AUPNPAT(P)
  1. I $G(ED) S ED=DT
  1. S C=$O(^AUTTHF("B",C,0)) ;ien of category passed
  1. I '$G(C) Q ""
  1. S BD=9999999-BD,ED=9999999-ED
  1. NEW H,D,O S H=0,D=ED-1
  1. K O
  1. F S H=$O(^AUTTHF("AC",C,H)) Q:'+H D
  1. . Q:'$D(^AUPNVHF("AA",P,H))
  1. . F S D=$O(^AUPNVHF("AA",P,H,D)) Q:D'=+D D
  1. .. Q:D>BD
  1. .. S V=$O(^AUPNVHF("AA",P,H,D,0))
  1. .. S O(D)=(9999999-D)_"^HF: "_$$VAL^XBDIQ1(9000010.23,V,.01)_"^"_$$VAL^XBDIQ1(9000010.23,V,.06)_"^"_$P(^AUPNVHF(V,0),U,3)_"^9000010.23^"_V
  1. .. Q
  1. . Q
  1. S D=$O(O(0))
  1. I D="" Q D
  1. I F="D" Q (9999999-D)
  1. Q O(D)
  1. ;
  1. LASTBHDX(P,BD,ED,C,F) ;EP - find date of last BH dx of C, return date in fileman format
  1. NEW G,Y,V,D,E,X
  1. I $G(F)="" S F="D"
  1. I $G(BD)="" S BD=$$DOB^AUPNPAT(P)
  1. I $G(ED)="" S ED=DT
  1. I $G(C)="" Q ""
  1. S G=""
  1. S E=9999999-BD,D=9999999-ED-1_".99" F S D=$O(^AMHREC("AE",P,D)) Q:D'=+D!($P(D,".")>E)!(G]"") S V=0 F S V=$O(^AMHREC("AE",P,D,V)) Q:V'=+V!(G]"") D
  1. .Q:'$D(^AMHREC(V,0))
  1. .S X=0 F S X=$O(^AMHRPRO("AD",V,X)) Q:X'=+X!(G]"") S Y=$P($G(^AMHRPRO(X,0)),U) D
  1. ..Q:'Y
  1. ..S Y=$P($G(^AMHPROB(Y,0)),U)
  1. ..I Y=C S G=$P($P(^AMHREC(V,0),U),".")_"^BH DX: "_Y_"^"_$$VAL^XBDIQ1(9002011.01,X,.04)_"^^9002011.01^"_X
  1. I F="D" Q $P(G,U)
  1. Q G
  1. ;
  1. LASTBHDT(P,BD,ED,T,F) ;EP - find date of last BH dx of TAXONOMY T
  1. I $G(P)="" Q ""
  1. I $G(BD)="" S BD=$$DOB^AUPNPAT(P)
  1. I $G(ED)="" S ED=DT
  1. I $G(F)="" S F="D"
  1. S T=$G(T)
  1. NEW TIEN,G,Y,V,E,X,I
  1. S TIEN="" I T]"" S TIEN=$O(^ATXAX("B",T,0)) ;get taxonomy ien
  1. I TIEN="" Q ""
  1. S G=""
  1. S E=9999999-BD,D=9999999-ED-1_".99" F S D=$O(^AMHREC("AE",P,D)) Q:D'=+D!($P(D,".")>E)!(G]"") S V=0 F S V=$O(^AMHREC("AE",P,D,V)) Q:V'=+V!(G]"") D
  1. .Q:'$D(^AMHREC(V,0))
  1. .S X=0 F S X=$O(^AMHRPRO("AD",V,X)) Q:X'=+X!(G]"") S Y=$P($G(^AMHRPRO(X,0)),U) D
  1. ..Q:'Y
  1. ..S Y=$P($G(^AMHPROB(Y,0)),U)
  1. ..S I=$O(^ICD9("B",Y,0))
  1. ..Q:'$$ICD^ATXCHK(I,TIEN,9)
  1. ..S G=$P($P(^AMHREC(V,0),U),".")_"^BH DX: "_Y_"^"_$$VAL^XBDIQ1(9002011.01,X,.04)_"^^9002011.01^"_X
  1. I F="D" Q $P(G,U)
  1. Q G
  1. ;
  1. LASTBHED(P,BD,ED,C,F) ;EP - find date of last BH EDUC of C, return date in fileman format
  1. NEW G,Y,V,D,E,X
  1. S G=""
  1. S E=9999999-BD,D=9999999-ED-1_".99" F S D=$O(^AMHREC("AE",P,D)) Q:D'=+D!($P(D,".")>E)!(G]"") S V=0 F S V=$O(^AMHREC("AE",P,D,V)) Q:V'=+V!(G]"") D
  1. .Q:'$D(^AMHREC(V,0))
  1. .S X=0 F S X=$O(^AMHREDU("AD",V,X)) Q:X'=+X!(G]"") S Y=$P($G(^AMHREDU(X,0)),U) D
  1. ..Q:'Y
  1. ..S Y=$P($G(^AUTTEDT(Y,0)),U,2)
  1. ..I Y=C S G=$P($P(^AMHREC(V,0),U),".")_"^BH: "_Y_"^"_$$VAL^XBDIQ1(9002011.05,X,.08)_"^^9002011.05^"_X
  1. I F="D" Q $P(G,U)
  1. Q G
  1. ;
  1. LASTDXT(P,BD,ED,T,F) ;EP
  1. I '$G(P) Q ""
  1. I $G(BD)="" S BD=$$DOB^AUPNPAT(P)
  1. I $G(ED)="" S ED=DT
  1. I $G(F)="" S F="D"
  1. S T=$G(T)
  1. NEW A,B,C,D,E,TIEN,R,I
  1. S TIEN="" I T]"" S TIEN=$O(^ATXAX("B",T,0)) ;get taxonomy ien
  1. I TIEN="" Q ""
  1. S R="" ;return value
  1. S B=9999999-BD,E=9999999-ED ;get inverse date and begin at edate-1 and end when greater than begin date
  1. S D=E-1 F S D=$O(^AUPNVPOV("AA",P,D)) Q:D=""!(D>B)!(R]"") D
  1. .S I=0 F S I=$O(^AUPNVPOV("AA",P,D,I)) Q:I'=+I!(R]"") D
  1. ..S C=$P($G(^AUPNVPOV(I,0)),U)
  1. ..Q:C="" ;bad xref
  1. ..Q:'$D(^ICD9(C))
  1. ..I TIEN Q:'$$ICD^BDMUTL(C,T,9)
  1. ..S R=(9999999-D)_"^DX: "_$P($$ICDDX^BDMUTL(C,(9999999-D)),U,2)_"^"_$$VAL^XBDIQ1(9000010.07,I,.04)_"^"_$P(^AUPNVPOV(I,0),U,3)_"^9000010.07^"_I_"^"
  1. ..Q
  1. .Q
  1. I R="" Q ""
  1. I F="D" Q $P(R,U)
  1. Q R
  1. ;
  1. LASTPRCT(P,BD,ED,T,F) ;EP
  1. I '$G(P) Q ""
  1. I $G(BD)="" S BD=$$DOB^AUPNPAT(P)
  1. I $G(ED)="" S ED=DT
  1. I $G(F)="" S F="D"
  1. S T=$G(T)
  1. NEW A,B,C,D,E,TIEN,R,I
  1. S TIEN="" I T]"" S TIEN=$O(^ATXAX("B",T,0)) ;get taxonomy ien
  1. I TIEN="" Q ""
  1. S R="" ;return value
  1. S B=9999999-BD,E=9999999-ED ;get inverse date and begin at edate-1 and end when greater than begin date
  1. S D=E-1 F S D=$O(^AUPNVPRC("AA",P,D)) Q:D=""!(D>B)!(R]"") D
  1. .S I=0 F S I=$O(^AUPNVPRC("AA",P,D,I)) Q:I'=+I!(R]"") D
  1. ..S C=$P($G(^AUPNVPRC(I,0)),U)
  1. ..Q:C="" ;bad xref
  1. ..Q:'$D(^ICD0(C))
  1. ..I TIEN Q:'$$ICD^ATXCHK(C,TIEN,0)
  1. ..S R=(9999999-D)_"^PROCEDURE: "_$P($$ICDOP^BDMUTL(C,(9999999-D),,"I"),U,2)_"^"_$$VAL^XBDIQ1(9000010.08,I,.04)_"^"_$P(^AUPNVPRC(I,0),U,3)_"^9000010.08^"_I
  1. ..Q
  1. .Q
  1. I R="" Q ""
  1. I F="D" Q $P(R,U)
  1. Q R
  1. ;
  1. LASTCPTT(P,BD,ED,T,F) ;EP
  1. I '$G(P) Q ""
  1. I $G(BD)="" S BD=$$DOB^AUPNPAT(P)
  1. I $G(ED)="" S ED=DT
  1. I $G(F)="" S F="D"
  1. S T=$G(T)
  1. NEW A,B,C,D,E,TIEN,R,I
  1. S TIEN="" I T]"" S TIEN=$O(^ATXAX("B",T,0)) ;get taxonomy ien
  1. I TIEN="" Q ""
  1. S R="" ;return value
  1. S B=9999999-BD,E=9999999-ED ;get inverse date and begin at edate-1 and end when greater than begin date
  1. S D=E-1 F S D=$O(^AUPNVSIT("AA",P,D)) Q:D=""!($P(D,".")>B)!(R]"") D
  1. .S V=0 F S V=$O(^AUPNVSIT("AA",P,D,V)) Q:V'=+V!(R]"") D
  1. ..Q:'$D(^AUPNVSIT(V,0))
  1. ..Q:'$D(^AUPNVCPT("AD",V)) ;no cpts
  1. ..S I=0 F S I=$O(^AUPNVCPT("AD",V,I)) Q:I'=+I!(R]"") D
  1. ...S C=$P($G(^AUPNVCPT(I,0)),U)
  1. ...Q:C="" ;bad xref
  1. ...Q:'$D(^ICPT(C))
  1. ...I TIEN Q:'$$ICD^ATXCHK(C,TIEN,1)
  1. ...S R=(9999999-$P(D,"."))_"^CPT: "_$P($$CPT^ICPTCOD(C,(9999999-$P(D,"."))),U,2)_"^"_$P($$CPT^ICPTCOD(C,(9999999-$P(D,"."))),U,3)_"^"_$P(^AUPNVCPT(I,0),U,3)_"^9000010.18^"_I
  1. ..Q
  1. .Q
  1. I R="" Q ""
  1. I F="D" Q $P(R,U)
  1. Q R
  1. ;
  1. LASTCPTI(P,BD,ED,T,F) ;EP
  1. I '$G(P) Q ""
  1. I $G(BD)="" S BD=$$DOB^AUPNPAT(P)
  1. I $G(ED)="" S ED=DT
  1. I $G(F)="" S F="D"
  1. S T=$G(T)
  1. NEW A,B,C,D,E,TIEN,R,I
  1. I T="" Q ""
  1. F A=1:1 S B=$P(T,";",A) Q:B="" S C=$P($$CPT^ICPTCOD(B),U,1) I C'=-1,C S TIEN(C)=""
  1. Q:'$D(TIEN)
  1. S R="" ;return value
  1. S B=9999999-BD,E=9999999-ED ;get inverse date and begin at edate-1 and end when greater than begin date
  1. S D=E-1 F S D=$O(^AUPNVSIT("AA",P,D)) Q:D=""!($P(D,".")>B)!(R]"") D
  1. .S V=0 F S V=$O(^AUPNVSIT("AA",P,D,V)) Q:V'=+V!(R]"") D
  1. ..Q:'$D(^AUPNVSIT(V,0))
  1. ..Q:'$D(^AUPNVCPT("AD",V)) ;no cpts
  1. ..S I=0 F S I=$O(^AUPNVCPT("AD",V,I)) Q:I'=+I!(R]"") D
  1. ...S C=$P($G(^AUPNVCPT(I,0)),U)
  1. ...Q:C="" ;bad xref
  1. ...Q:'$D(^ICPT(C))
  1. ...Q:'$D(TIEN(C))
  1. ...S R=(9999999-$P(D,"."))_"^CPT: "_$P($$CPT^ICPTCOD(C,(9999999-$P(D,"."))),U,2)_"^"_$P($$CPT^ICPTCOD(C,(9999999-$P(D,"."))),U,3)_"^"_$P(^AUPNVCPT(I,0),U,3)_"^9000010.18^"_I
  1. ..Q
  1. .Q
  1. I R="" Q ""
  1. I F="D" Q $P(R,U)
  1. Q R
  1. ;
  1. LASTBHME(P,BD,ED,C,F) ;EP - find date of last BH MEASUREMENT of C, return date in fileman format
  1. NEW G,Y,V,D,E,X
  1. S G=""
  1. S E=9999999-BD,D=9999999-ED-1_".99" F S D=$O(^AMHREC("AE",P,D)) Q:D'=+D!($P(D,".")>E)!(G]"") S V=0 F S V=$O(^AMHREC("AE",P,D,V)) Q:V'=+V!(G]"") D
  1. .Q:'$D(^AMHREC(V,0))
  1. .S X=0 F S X=$O(^AMHRMSR("AD",V,X)) Q:X'=+X!(G]"") S Y=$P($G(^AMHRMSR(X,0)),U) D
  1. ..Q:'Y
  1. ..S Y=$P($G(^AUTTMSR(Y,0)),U,1)
  1. ..I Y=C S G=$P($P(^AMHREC(V,0),U),".")_"^BH: "_Y_"^"_$$VAL^XBDIQ1(9002011.12,X,.04)_"^^9002011.12^"_X
  1. I F="D" Q $P(G,U)
  1. Q G
  1. ;
  1. LASTLAB(P,BD,ED,I,T,LO,LT,F) ;EP P is patient, I is ien of lab test, T is IEN of lab taxonomy, LO is ien of loinc code, LT is ien o f loinc taxonmy
  1. ;now get all loinc/taxonomy tests
  1. I '$G(P) Q ""
  1. I $G(BD)="" S BD=$$DOB^AUPNPAT(P)
  1. I $G(ED)="" S ED=DT
  1. I $G(F)="" S F="D"
  1. S T=$G(T)
  1. S I=$G(I)
  1. S LO=$G(LO)
  1. S LT=$G(LT)
  1. NEW R,D,L,X,B,E
  1. S R="",B=9999999-BD,E=9999999-ED
  1. S D=E-1 F S D=$O(^AUPNVLAB("AE",P,D)) Q:D'=+D!($P(D,".")>B)!(R]"") D
  1. .S L=0 F S L=$O(^AUPNVLAB("AE",P,D,L)) Q:L'=+L!(R]"") D
  1. ..S X=0 F S X=$O(^AUPNVLAB("AE",P,D,L,X)) Q:X'=+X!(R]"") D
  1. ...Q:'$D(^AUPNVLAB(X,0))
  1. ...I $G(I),L=I S R=$$LABR(X,D) Q
  1. ...I $G(T),$P(^AUPNVLAB(X,0),U),$D(^ATXLAB(T,21,"B",$P(^AUPNVLAB(X,0),U))) S R=$$LABR(X,D) Q
  1. ...S J=$P($G(^AUPNVLAB(X,11)),U,13) Q:J=""
  1. ...Q:'$$LOINC(J,$G(LT),$G(LO))
  1. ...S R=$$LABR(X,D)
  1. ...Q
  1. I R="" Q ""
  1. I F="D" Q $P(R,U)
  1. Q R
  1. ;
  1. LABR(X,D) ;
  1. Q (9999999-D)_"^LAB: "_$$VAL^XBDIQ1(9000010.09,X,.01)_"^"_$P(^AUPNVLAB(X,0),U,4)_"^"_$P(^AUPNVLAB(X,0),U,3)_"^9000010.09^"_X
  1. ;
  1. LOINC(A,LT,LI) ;
  1. I '$G(LT),'$G(LI) Q "" ;no ien or taxonomy
  1. I A,LI,A=LI Q 1
  1. NEW %
  1. S %=$P($G(^LAB(95.3,A,9999999)),U,2)
  1. I %]"",LT,$D(^ATXAX(LT,21,"B",%)) Q 1
  1. S %=$P($G(^LAB(95.3,A,0)),U)_"-"_$P($G(^LAB(95.3,A,0)),U,15)
  1. I $D(^ATXAX(LT,21,"B",%)) Q 1
  1. Q ""
  1. ;
  1. LASTRADT(P,BD,ED,T,F) ;EP
  1. I '$G(P) Q ""
  1. I $G(BD)="" S BD=$$DOB^AUPNPAT(P)
  1. I $G(ED)="" S ED=DT
  1. I $G(F)="" S F="D"
  1. S T=$G(T)
  1. NEW A,B,C,D,E,TIEN,R,I,J,K
  1. S TIEN="" I T]"" S TIEN=$O(^ATXAX("B",T,0)) ;get taxonomy ien
  1. I TIEN="" Q ""
  1. S R="" ;return value
  1. S B=9999999-BD,E=9999999-ED ;get inverse date and begin at edate-1 and end when greater than begin date
  1. S D=E-1 F S D=$O(^AUPNVSIT("AA",P,D)) Q:D=""!($P(D,".")>B)!(R]"") D
  1. .S V=0 F S V=$O(^AUPNVSIT("AA",P,D,V)) Q:V'=+V!(R]"") D
  1. ..Q:'$D(^AUPNVSIT(V,0))
  1. ..Q:'$D(^AUPNVRAD("AD",V)) ;no cpts
  1. ..S I=0 F S I=$O(^AUPNVRAD("AD",V,I)) Q:I'=+I!(R]"") D
  1. ...S C=$P($G(^AUPNVRAD(I,0)),U),J=$P($G(^RAMIS(71,+C,0)),U,9)
  1. ...Q:C="" ;bad xref
  1. ...Q:J="" ;no cpt code
  1. ...Q:'$D(^ICPT(J))
  1. ...I TIEN Q:'$$ICD^ATXCHK(J,TIEN,1)
  1. ...S R=(9999999-$P(D,"."))_"^RADIOLOGY: "_$P(^RAMIS(71,C,0),U)_" - "_$P($$CPT^ICPTCOD(J,(9999999-$P(D,"."))),U,2)_"^^"_$P(^AUPNVRAD(I,0),U,3)_"^9000010.22^"_I
  1. ..Q
  1. .Q
  1. I R="" Q ""
  1. I F="D" Q $P(R,U)
  1. Q R
  1. ;
  1. LASTBHCT(P,BD,ED,T,F) ;EP - find date of last BH CPT of TAXONOMY T
  1. I $G(P)="" Q ""
  1. I $G(BD)="" S BD=$$DOB^AUPNPAT(P)
  1. I $G(ED)="" S ED=DT
  1. I $G(F)="" S F="D"
  1. S T=$G(T)
  1. NEW TIEN,G,Y,V,E,X,I
  1. S TIEN="" I T]"" S TIEN=$O(^ATXAX("B",T,0)) ;get taxonomy ien
  1. I TIEN="" Q ""
  1. S G=""
  1. S E=9999999-BD,D=9999999-ED-1_".99" F S D=$O(^AMHREC("AE",P,D)) Q:D'=+D!($P(D,".")>E)!(G]"") S V=0 F S V=$O(^AMHREC("AE",P,D,V)) Q:V'=+V!(G]"") D
  1. .Q:'$D(^AMHREC(V,0))
  1. .S X=0 F S X=$O(^AMHRPROC("AD",V,X)) Q:X'=+X!(G]"") S Y=$P($G(^AMHRPROC(X,0)),U) D
  1. ..Q:'Y
  1. ..Q:'$$ICD^ATXCHK(Y,TIEN,1)
  1. ..S G=$P($P(^AMHREC(V,0),U),".")_"^BH CPT: "_$P(^ICPT(Y,0),U)_"^"_$$VAL^XBDIQ1(9002011.04,X,.04)_"^^9002011.04^"_X
  1. I F="D" Q $P(G,U)
  1. Q G
  1. ;
  1. ALLV(P,BD,ED,A) ;EP
  1. I '$G(P) Q
  1. I $G(BD)="" S BD=$$DOB^AUPNPAT(P)
  1. I $G(ED)="" S ED=DT
  1. I $G(A)="" Q
  1. NEW B,C,D,V,E
  1. S B=9999999-BD,C=0,E=9999999-ED ;get inverse date and begin at edate-1 and end when greater than begin date
  1. S D=E-1,D=D_".9999" F S D=$O(^AUPNVSIT("AA",P,D)) Q:D=""!($P(D,".")>B) D
  1. .S V=0 F S V=$O(^AUPNVSIT("AA",P,D,V)) Q:V'=+V D
  1. ..S C=C+1
  1. ..S @A@(C)=(9999999-$P(D,"."))_"^^VISIT^^"_V
  1. ..Q
  1. .Q
  1. Q
  1. AGE(P,I,D) ;EP
  1. ;---> Return Patient's Age.
  1. ;
  1. N B,X,X1,X2 S:$G(I)="" I=1
  1. Q:'$G(P) ""
  1. S BDMDOB=$$DOB^AUPNPAT(P)
  1. Q:'BDMDOB "Unknown"
  1. I $$DOD^AUPNPAT(P)]"" D Q X
  1. .S X="DECEASED: "_$$DATE^BDMS9B1(+^DPT(P,.35))
  1. S:'$G(D) D=DT
  1. Q:D<BDMDOB "NOT BORN"
  1. ;
  1. ;---> Age in Years.
  1. N BDMAGEY,BDMAGEM,BDMD1,BDMD2,BDMM1,BDMM2,BDMY1,BDMY2
  1. S BDMM1=$E(BDMDOB,4,7),BDMM2=$E(D,4,7)
  1. S BDMY1=$E(BDMDOB,1,3),BDMY2=$E(D,1,3)
  1. S BDMAGEY=BDMY2-BDMY1 S:BDMM2<BDMM1 BDMAGEY=BDMAGEY-1
  1. S:BDMAGEY<1 BDMAGEY="<1"
  1. Q:I=1 BDMAGEY
  1. ;
  1. ;---> Age in Months.
  1. S BDMD1=$E(BDMM1,3,4),BDMM1=$E(BDMM1,1,2)
  1. S BDMD2=$E(BDMM2,3,4),BDMM2=$E(BDMM2,1,2)
  1. S BDMAGEM=12*BDMAGEY
  1. I BDMM2=BDMM1&(BDMD2<BDMD1) S BDMAGEM=BDMAGEM+12
  1. I BDMM2>BDMM1 S BDMAGEM=BDMAGEM+BDMM2-BDMM1
  1. I BDMM2<BDMM1 S BDMAGEM=BDMAGEM+BDMM2+(12-BDMM1)
  1. S:BDMD2<BDMD1 BDMAGEM=BDMAGEM-1
  1. Q:I=2 BDMAGEM
  1. ;
  1. ;---> Age in Days.
  1. S X1=D,X2=BDMDOB
  1. D ^%DTC
  1. Q X
  1. ;