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

BDMDBDU.m

Go to the documentation of this file.
  1. BDMDBDU ; IHS/CMI/LAB - gpra utility calls ;
  1. ;;2.0;DIABETES MANAGEMENT SYSTEM;**7,8**;JUN 14, 2007;Build 53
  1. ;
  1. ;
  1. WH(P,BDATE,EDATE,T,F) ;EP
  1. I '$G(P) Q ""
  1. I '$G(T) Q ""
  1. I '$G(F) S F=1
  1. I $G(EDATE)="" Q ""
  1. I $G(BDATE)="" S BDATE=$$FMADD^XLFDT(EDATE,-365)
  1. ;go through procedures in a date range for this patient, check proc type
  1. NEW D,X,Y,G,V,O
  1. S (G,V)=0,I="" F S V=$O(^BWPCD("C",P,V)) Q:V="" D
  1. .Q:'$D(^BWPCD(V,0))
  1. .I $P(^BWPCD(V,0),U,4)'=T Q
  1. .Q:$$UP^XLFSTR($$VAL^XBDIQ1(9002086.1,V,.05))="ERROR/DISREGARD"
  1. .S D=$P(^BWPCD(V,0),U,12)
  1. .Q:D<BDATE
  1. .Q:D>EDATE
  1. .S I=$O(G(0)) I I>D Q
  1. .S G=V,G(D)=""
  1. .Q
  1. I 'G Q ""
  1. I F=1 Q $S(G:1,1:"")
  1. I F=2 Q G
  1. I F=3 S D=$P(^BWPCD(G,0),U,12) Q D
  1. I F=4 S D=$P(^BWPCD(G,0),U,12) Q $$FMTE^XLFDT(D)
  1. Q ""
  1. PLCODE(P,A) ;EP
  1. I $G(P)="" Q ""
  1. I $G(A)="" Q ""
  1. N T
  1. ;S T=$O(^ICD9("AB",A,0))
  1. ;S T=+$$CODEN^ICDCODE(A,80)
  1. S T=+$$CODEN^BDMUTL(A,80) ;cmi/maw 05/14/2014 patch 8 ICD-10
  1. I T'>0 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)),$P(^AUPNPROB(X,0),U,12)'="D" S Y=$P(^AUPNPROB(X,0),U) I Y=T S I=1
  1. Q I
  1. PLTAX(P,A) ;EP - is DX on problem list 1 or 0
  1. I $G(P)="" Q ""
  1. I $G(A)="" Q ""
  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)),$P(^AUPNPROB(X,0),U,12)'="D" S Y=$P(^AUPNPROB(X,0),U) I $$ICD^ATXCHK(Y,T,9) S I=1
  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)),$P(^AUPNPROB(X,0),U,12)'="D" S Y=$P(^AUPNPROB(X,0),U) I $$ICD^ATXCHK(Y,$P(^ATXAX(T,0),U),9) S I=1 ;cmi/maw 05/15/2014 p8
  1. Q I
  1. CPT(P,BDATE,EDATE,T,F,SCEX) ;EP - return ien of CPT entry if patient had this CPT
  1. I '$G(P) Q ""
  1. I '$G(T) Q ""
  1. I '$G(F) S F=1
  1. S SCEX=$G(SCEX)
  1. I $G(EDATE)="" Q ""
  1. I $G(BDATE)="" S BDATE=$$FMADD^XLFDT(EDATE,-365)
  1. ;go through visits in a date range for this patient, check cpts
  1. NEW D,BD,ED,X,Y,D,G,V
  1. S ED=(9999999-EDATE),BD=9999999-BDATE,G=0
  1. F S ED=$O(^AUPNVSIT("AA",P,ED)) Q:ED=""!($P(ED,".")>BD)!(G) D
  1. .S V=0 F S V=$O(^AUPNVSIT("AA",P,ED,V)) Q:V'=+V!(G) D
  1. ..Q:'$D(^AUPNVSIT(V,0))
  1. ..Q:'$D(^AUPNVCPT("AD",V))
  1. ..I SCEX]"",SCEX[$P(^AUPNVSIT(V,0),U,7) Q
  1. ..S X=0 F S X=$O(^AUPNVCPT("AD",V,X)) Q:X'=+X!(G) D
  1. ...;I $$ICD^ATXCHK($P(^AUPNVCPT(X,0),U),T,1) S G=X
  1. ...I $$ICD^BDMUTL($P(^AUPNVCPT(X,0),U),$P(^ATXAX(T,0),U),1) S G=X ;cmi/maw 05/15/2014 p8
  1. ...Q
  1. ..Q
  1. .Q
  1. I 'G Q ""
  1. I F=1 Q $S(G:1,1:"")
  1. I F=2 Q G
  1. I F=3 S V=$P(^AUPNVCPT(G,0),U,3) I V Q $P($P($G(^AUPNVSIT(V,0)),U),".")
  1. I F=4 S V=$P(^AUPNVCPT(G,0),U,3) I V Q $$FMTE^XLFDT($P($P($G(^AUPNVSIT(V,0)),U),"."))
  1. I F=5 S V=$P(^AUPNVCPT(G,0),U,3) I V Q $P($P($G(^AUPNVSIT(V,0)),U),".")_"^"_$P($$CPT^ICPTCOD($P(^AUPNVCPT(G,0),U)),U,2)
  1. I F=6 S V=$P(^AUPNVCPT(G,0),U,3) I V Q 1_"^"_$P($P($G(^AUPNVSIT(V,0)),U),".")_"^"_$P($$CPT^ICPTCOD($P(^AUPNVCPT(G,0),U)),U,2)_"^"_G
  1. Q ""
  1. RAD(P,BDATE,EDATE,T,F) ;EP - return ien of CPT entry if patient had this CPT
  1. I '$G(P) Q ""
  1. I '$G(T) Q ""
  1. I '$G(F) S F=1
  1. I $G(EDATE)="" Q ""
  1. I $G(BDATE)="" S BDATE=$$FMADD^XLFDT(EDATE,-365)
  1. ;go through visits in a date range for this patient, check cpts
  1. NEW D,BD,ED,X,Y,D,G,V,C
  1. S ED=(9999999-EDATE),BD=9999999-BDATE,G=0
  1. F S ED=$O(^AUPNVSIT("AA",P,ED)) Q:ED=""!($P(ED,".")>BD)!(G) D
  1. .S V=0 F S V=$O(^AUPNVSIT("AA",P,ED,V)) Q:V'=+V!(G) D
  1. ..Q:'$D(^AUPNVSIT(V,0))
  1. ..Q:'$D(^AUPNVRAD("AD",V))
  1. ..S X=0 F S X=$O(^AUPNVRAD("AD",V,X)) Q:X'=+X!(G) D
  1. ...S C=$P(^AUPNVRAD(X,0),U) Q:C="" S C=$P($G(^RAMIS(71,C,0)),U,9) Q:C=""
  1. ...;I $$ICD^ATXCHK(C,T,1) S G=X
  1. ...I $$ICD^ATXCHK(C,$P(^ATXAX(T,0),U),1) S G=X ;cmi/maw 05/15/2014 p8
  1. ...Q
  1. ..Q
  1. .Q
  1. I 'G Q ""
  1. I F=1 Q $S(G:1,1:"")
  1. I F=2 Q G
  1. I F=3 S V=$P(^AUPNVRAD(G,0),U,3) I V Q $P($P($G(^AUPNVSIT(V,0)),U),".")
  1. I F=4 S V=$P(^AUPNVRAD(G,0),U,3) I V Q $$FMTE^XLFDT($P($P($G(^AUPNVSIT(V,0)),U),"."))
  1. I F=5 S V=$P(^AUPNVRAD(G,0),U,3) I V Q $P($P($G(^AUPNVSIT(V,0)),U),".")_"^"_$P(^RAMIS(71,$P(^AUPNVRAD(G,0),U),0),U,9)
  1. I F=6 S V=$P(^AUPNVRAD(G,0),U,3) I V Q 1_"^"_$P($P($G(^AUPNVSIT(V,0)),U),".")_"^"_$P(^RAMIS(71,$P(^AUPNVRAD(G,0),U),0),U)_"^"_G
  1. Q ""
  1. CPTI(P,BDATE,EDATE,CPTI,SCEX,SCLN,SMOD) ;EP - did patient have this cpt (ien) in date range
  1. I '$G(P) Q ""
  1. I $G(CPTI)="" Q ""
  1. I $G(BDATE)="" Q ""
  1. I $G(EDATE)="" Q ""
  1. S SCEX=$G(SCEX)
  1. S SCLN=$G(SCLN)
  1. S SMOD=$G(SMOD)
  1. I '$D(^ICPT(CPTI)) Q "" ;not a valid cpt ien
  1. I '$D(^AUPNVCPT("AA",P)) Q "" ;no cpts for this patient
  1. NEW D,BD,ED,X,Y,D,G,V,I,M,M1,Z,J,K,Q
  1. S ED=9999999-EDATE-1,BD=9999999-BDATE,G=""
  1. F S ED=$O(^AUPNVCPT("AA",P,CPTI,ED)) Q:ED=""!($P(ED,".")>BD)!(G) D
  1. .S I=0 F S I=$O(^AUPNVCPT("AA",P,CPTI,ED,I)) Q:I'=+I!(G) D
  1. ..S V=$P($G(^AUPNVCPT(I,0)),U,3)
  1. ..I SCEX]"",SCEX[$P(^AUPNVSIT(V,0),U,7) Q
  1. ..I SCLN]"",$$CLINIC^APCLV(V,"C")=SCLN Q
  1. ..S M=$$VAL^XBDIQ1(9000010.18,I,.08)
  1. ..S M1=$$VAL^XBDIQ1(9000010.18,I,.09)
  1. ..S Q=0
  1. ..I SMOD]"" F J=1:1 S K=$P(SMOD,";",J) Q:K="" I K=M S Q=1
  1. ..Q:Q
  1. ..I SMOD]"" F J=1:1 S K=$P(SMOD,";",J) Q:K="" I K=M1 S Q=1
  1. ..Q:Q
  1. ..S G="1"_"^"_(9999999-ED)_"^"_$$VAL^XBDIQ1(9000010.18,I,.01)
  1. Q G
  1. ;
  1. TRANI(P,BDATE,EDATE,CPTI) ;EP
  1. I '$G(P) Q ""
  1. I $G(TRANI)="" Q ""
  1. I $G(BDATE)="" Q ""
  1. I $G(EDATE)="" Q ""
  1. I '$D(^ICPT(CPTI)) Q ""
  1. I '$D(^AUPNVTC("AC",P)) Q "" ;no cpts for this patient
  1. NEW X,V,C,G
  1. S G=""
  1. S X=0 F S X=$O(^AUPNVTC("AC",P,X)) Q:X'=+X D
  1. .S C=$P($G(^AUPNVTC(X,0)),U,7)
  1. .Q:C'=CPTI
  1. .S V=$P(^AUPNVTC(X,0),U,3)
  1. .S V=$P($P($G(^AUPNVSIT(V,0)),U),".")
  1. .Q:V<BDATE
  1. .Q:V>EDATE
  1. .S G="1"_"^"_V_"^"_$$VAL^XBDIQ1(9000010.33,I,.07)
  1. Q G
  1. TRAN(P,BDATE,EDATE,T,F) ;EP - return ien of CPT entry if patient had this CPT IN A TRAN CODE
  1. I '$G(P) Q ""
  1. I '$G(T) Q ""
  1. I '$G(F) S F=1
  1. I $G(EDATE)="" Q ""
  1. I $G(BDATE)="" S BDATE=$$FMADD^XLFDT(EDATE,-365)
  1. ;go through visits in a date range for this patient, check cpts
  1. NEW D,BD,ED,X,Y,D,G,V
  1. S ED=(9999999-EDATE),BD=9999999-BDATE,G=0
  1. F S ED=$O(^AUPNVSIT("AA",P,ED)) Q:ED=""!($P(ED,".")>BD)!(G) D
  1. .S V=0 F S V=$O(^AUPNVSIT("AA",P,ED,V)) Q:V'=+V!(G) D
  1. ..Q:'$D(^AUPNVSIT(V,0))
  1. ..Q:'$D(^AUPNVTC("AD",V))
  1. ..S X=0 F S X=$O(^AUPNVTC("AD",V,X)) Q:X'=+X!(G) D
  1. ...;I $$ICD^ATXCHK($P(^AUPNVTC(X,0),U,7),T,1) S G=X
  1. ...I $$ICD^BDMUTL($P(^AUPNVTC(X,0),U,7),$P(^ATXAX(T,0),U),1) S G=X ;cmi/maw 05/15/2014 p8
  1. ...Q
  1. ..Q
  1. .Q
  1. I 'G Q ""
  1. I F=1 Q $S(G:1,1:"")
  1. I F=2 Q G
  1. I F=3 S V=$P(^AUPNVTC(G,0),U,3) I V Q $P($P($G(^AUPNVSIT(V,0)),U),".")
  1. I F=4 S V=$P(^AUPNVTC(G,0),U,3) I V Q $$FMTE^XLFDT($P($P($G(^AUPNVSIT(V,0)),U),"."))
  1. I F=5 S V=$P(^AUPNVTC(G,0),U,3) I V Q $P($P($G(^AUPNVSIT(V,0)),U),".")_"^"_$P($$CPT^ICPTCOD($P(^AUPNVTC(G,0),U,7)),U,2)
  1. I F=6 S V=$P(^AUPNVTC(G,0),U,3) I V Q 1_"^"_$P($P($G(^AUPNVSIT(V,0)),U),".")_"^"_$P($$CPT^ICPTCOD($P(^AUPNVTC(G,0),U,7)),U,2)_"^"_G
  1. Q ""
  1. ;
  1. LASTITEM(P,BD,ED,BDMT,BDMV) ;PEP - return last item APCLV OF TYPE APCLT DURING BD TO ED IN FORM APCLF
  1. I $G(BD)="" S BD=$$DOB^AUPNPAT(P)
  1. I $G(ED)="" S ED=DT
  1. I $G(BDMT)="" Q ""
  1. I $G(BDMV)="" Q ""
  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. Q 1_U_$P(BDMR(1),U,1)_U_$P(BDMR(1),U,3)_U_$P(BDMR(1),U,2)
  1. GETMEDS(P,BDMMBD,BDMMED,TAXM,TAXN,TAXC,BDMDNAME,BDMZ) ;EP
  1. S TAXM=$G(TAXM)
  1. S TAXN=$G(TAXN)
  1. S TAXC=$G(TAXC)
  1. K ^TMP($J,"MEDS"),BDMZ
  1. S BDMDNAME=$G(BDMDNAME)
  1. NEW BDMC1,BDMINED,BDMINBD,BDMMIEN,BDMD,X,Y,T,T1,D,G
  1. S BDMC1=0 K BDMZ
  1. S BDMINED=(9999999-BDMMED)-1,BDMINBD=(9999999-BDMMBD)
  1. F S BDMINED=$O(^AUPNVMED("AA",P,BDMINED)) Q:BDMINED=""!(BDMINED>BDMINBD) D
  1. .S BDMMIEN=0 F S BDMMIEN=$O(^AUPNVMED("AA",P,BDMINED,BDMMIEN)) Q:BDMMIEN'=+BDMMIEN D
  1. ..Q:'$D(^AUPNVMED(BDMMIEN,0))
  1. ..S BDMD=$P(^AUPNVMED(BDMMIEN,0),U)
  1. ..Q:BDMD=""
  1. ..Q:'$D(^PSDRUG(BDMD,0))
  1. ..S BDMC1=BDMC1+1
  1. ..S ^TMP($J,"MEDS","ORDER",(9999999-BDMINED),BDMC1)=(9999999-BDMINED)_U_$P(^PSDRUG(BDMD,0),U)_U_$P(^PSDRUG(BDMD,0),U)_U_BDMMIEN_U_$P(^AUPNVMED(BDMMIEN,0),U,3)
  1. ;reorder
  1. S BDMC1=0,X=0
  1. F S X=$O(^TMP($J,"MEDS","ORDER",X)) Q:X'=+X D
  1. .S Y=0 F S Y=$O(^TMP($J,"MEDS","ORDER",X,Y)) Q:Y'=+Y D
  1. ..S BDMC1=BDMC1+1
  1. ..S ^TMP($J,"MEDS",BDMC1)=^TMP($J,"MEDS","ORDER",X,Y)
  1. K ^TMP($J,"MEDS","ORDER")
  1. S T="" I TAXM]"" S T=$O(^ATXAX("B",TAXM,0)) I T="" W BDMBOMB
  1. S T1="" I TAXN]"" S T1=$O(^ATXAX("B",TAXN,0)) I T1="" W BDMBOMB
  1. S T2="" I TAXC]"" S T2=$O(^ATXAX("B",TAXC,0))
  1. S BDMC1=0,X=0 F S X=$O(^TMP($J,"MEDS",X)) Q:X'=+X S Y=+$P(^TMP($J,"MEDS",X),U,4) D
  1. .Q:'$D(^AUPNVMED(Y,0))
  1. .S G=0
  1. .S D=$P(^AUPNVMED(Y,0),U)
  1. .S C=$P($G(^PSDRUG(D,0)),U,2)
  1. .I C]"",T2,$D(^ATXAX(T2,21,"B",C)) S G=1
  1. .S C=$P($G(^PSDRUG(D,2)),U,4)
  1. .I C]"",T1,$D(^ATXAX(T1,21,"B",C)) S G=1
  1. .I T,$D(^ATXAX(T,21,"B",D)) S G=1
  1. .I BDMDNAME]"",$P(^PSDRUG(D,0),U)[BDMDNAME S G=1
  1. .I TAXM="",TAXN="",TAXC="" S G=1 ;WANTS ALL MEDS
  1. .I G=1 S BDMC1=BDMC1+1,BDMZ(BDMC1)=^TMP($J,"MEDS",X)
  1. .Q
  1. K ^TMP($J,"MEDS")
  1. K BDMINED,BDMINBD,BDMMBD,BDMMED,BDMD,BDMC1,BDMDNAME
  1. Q
  1. CPTREFT(P,BDATE,EDATE,T) ;EP - return ien of CPT entry if patient had this CPT
  1. I '$G(P) Q ""
  1. I '$G(T) Q ""
  1. I $G(EDATE)="" Q ""
  1. I $G(BDATE)="" S BDATE=$$FMADD^XLFDT(EDATE,-365)
  1. NEW G,X,Y,Z,I
  1. S G=""
  1. S I=0 F S I=$O(^AUPNPREF("AA",P,81,I)) Q:I=""!($P(G,U)) D
  1. .S (X,G)=0 F S X=$O(^AUPNPREF("AA",P,81,I,X)) Q:X'=+X!($P(G,U)) S Y=0 F S Y=$O(^AUPNPREF("AA",P,81,I,X,Y)) Q:Y'=+Y S D=$P(^AUPNPREF(Y,0),U,3) I D'<BDATE&(D'>EDATE) D
  1. ..;Q:'$$ICD^ATXCHK(I,T,1)
  1. ..Q:'$$ICD^BDMUTL(I,$P(^ATXAX(T,0),U),1) ;cmi/maw 05/15/2014 p8
  1. ..S G="1^"_D_"^"_$P(^AUPNPREF(Y,0),U,7)_"^"_$P(^ICPT(I,0),U)
  1. .Q
  1. Q G