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

BHSDM6.m

Go to the documentation of this file.
  1. BHSDM6 ;IHS/CIA/MGH - Health Summary for Diabetic Supplement ;04-Aug-2011 14:33;MGH
  1. ;;1.0;HEALTH SUMMARY COMPONENTS;**1,2,6**;March 17, 2006;Build 5
  1. ;===================================================================
  1. ;Taken from APCHS9B6
  1. ;VA version of IHS components for supplemental summaries
  1. ; IHS/TUCSON/LAB - DIABETIC CARE SUMMARY SUPPLEMENT ; [ 02/20/04 1:53 PM ]
  1. ;;2.0;IHS RPMS/PCC Health Summary;**8,11,12**;JUN 24, 1997
  1. ;Patch 1 updates up to IHS patch 14
  1. ;Patch 2 code set versioning
  1. ;Patch 6 updated for tobacco changes
  1. ;===================================================================
  1. DENTAL(P,APCHSED) ;EP
  1. NEW BHSY,DENTDATE,E
  1. K BHSY,DENTDATE
  1. NEW % S %=P_"^LAST EXAM DENTAL",E=$$START1^APCLDF(%,"BHSY(")
  1. S %=$P($G(BHSY(1)),U) I %]"" S DENTDATE=%
  1. I %]"",%>APCHSED Q "Yes "_$$FMTE^XLFDT(%)_" (Dental Exam 30 recorded)"
  1. K BHSY S %=P_"^LAST ADA [APCH DM ADA EXAMS",E=$$START1^APCLDF(%,"BHSY(")
  1. S %=$P($G(BHSY(1)),U) I %]"",%>APCHSED Q "Yes "_$$FMTE^XLFDT(%)_" (Dental ADA exam code recorded)"
  1. K BHSY,APCHV,^TMP($J,"DENTAL VISITS")
  1. S BHSY="^TMP($J,""DENTAL VISITS"",",%=P_"^ALL VISITS;DURING "_$$FMTE^XLFDT(APCHSED)_"-"_$$FMTE^XLFDT(DT),E=$$START1^APCLDF(%,BHSY)
  1. ;reorder by date of visit/reverse order
  1. S %=0 F S %=$O(^TMP($J,"DENTAL VISITS",%)) Q:%'=+% S APCHV(9999999-$P(^TMP($J,"DENTAL VISITS",%),U),$P(^TMP($J,"DENTAL VISITS",%),U,5))=""
  1. K ^TMP($J,"DENTAL VISITS")
  1. N PROV,D,V,G S (D,V)=0,G="" F S D=$O(APCHV(D)) Q:D'=+D!(G) S V=0 F S V=$O(APCHV(D,V)) Q:V'=+V!(G) S PROV=$$PRIMPROV^APCLV(V,"D") I PROV=52,$$ADA(V),'$$DNKA^BHSDM4(V) S G=9999999-D
  1. I G]"" Q "Maybe "_$$FMTE^XLFDT(G)_" (Visit to Dentist)"
  1. S (D,V)=0,G="" F S D=$O(APCHV(D)) Q:D'=+D!(G) S V=0 F S V=$O(APCHV(D,V)) Q:V'=+V!(G) S PROV=$$CLINIC^APCLV(V,"C") I (PROV=56!(PROV=99)),$$ADA(V),'$$DNKA^BHSDM4(V) S G=9999999-D
  1. I G]"" Q "Maybe "_$$FMTE^XLFDT(G)_" (Dental Clinic Visit)"
  1. S G=$$REFDF^BHSDM3(P,9999999.15,$O(^AUTTEXAM("B","DENTAL EXAM",0)),$G(DENTDATE))
  1. I G]"" Q G
  1. S (D,V)=0,G="" F S D=$O(APCHV(D)) Q:D'=+D!(G) S V=0 F S V=$O(APCHV(D,V)) Q:V'=+V!(G) S PROV=$$CLINIC^APCLV(V,"C") I (PROV=56!(PROV=99)),$D(^AUPNVDEN("AD",V)),'$$ADA(V),'$$DNKA^BHSDM4(V) S G=9999999-D
  1. I G]"" Q "Patient Refused service (ada 9991) on "_$$FMTE^XLFDT(G)
  1. Q "No "_$S($D(DENTDATE):$$FMTE^XLFDT(DENTDATE),1:"")
  1. ;
  1. TOBACCO ;EP
  1. K BHDTOB
  1. ;D TOBACCO3
  1. ;I $D(BHDTOB) Q
  1. D TOBACCO0
  1. I $D(BHDTOB) Q
  1. D TOBACCO3
  1. I $D(BHDTOB) Q
  1. D TOBACCO1 ;check Problem file for tobacco use
  1. I $D(BHDTOB) Q
  1. D TOBACCO2 ;check POVs for tobacco use
  1. I $D(BHDTOB) Q
  1. S BHDTOB="UNDOCUMENTED",BHDTOB="UNDOCUMENTED"
  1. Q
  1. TOBACCO0 ;check for tobacco documented in health factors
  1. ;S X=$$LASTHF^BHSMU(BHSDFN,"TOBACCO","B") I X]"" S BHDTOB=X
  1. NEW CTGN,HF,HFDT,LIST,RESULT,X,BTIU,BHST,CTG
  1. I '$G(DFN) Q ""
  1. F BHST=1:1 D Q:CTG=""
  1. .S CTG=$P($T(TOBU+BHST),";;",2)
  1. .Q:CTG=""
  1. .S CTGN=$O(^AUTTHF("B",CTG,0)) I 'CTGN Q ;ien of category passed
  1. .;
  1. .S HF=0
  1. .F S HF=$O(^AUTTHF("AC",CTGN,HF)) Q:'+HF D ;find health factors in category
  1. ..Q:'$D(^AUPNVHF("AA",DFN,HF)) ;quit if patient doesn't have health factor
  1. ..S HFDT=$O(^AUPNVHF("AA",DFN,HF,"")) Q:'HFDT ;get visit date for health factor
  1. ..S LIST(HFDT)=$O(^AUPNVHF("AA",DFN,HF,HFDT,"")) ;store iens by date
  1. ;
  1. I '$O(LIST(0)) Q
  1. S HFDT=$O(LIST(0)) ;find latest date (inverse dates)
  1. S RESULT=$$GET1^DIQ(9000010.23,LIST(HFDT),.01)
  1. S BHDTOB=RESULT_" "_$$FMTE^XLFDT(9999999-HFDT)
  1. Q
  1. TOBU ;;
  1. ;;TOBACCO (EXPOSURE)
  1. ;;TOBACCO (SMOKELESS - CHEWING/DIP)
  1. ;;TOBACCO (SMOKING)
  1. ;
  1. Q
  1. TOBACCO3 ;lookup in health status
  1. N C
  1. S C=$O(^AUTTHF("B","TOBACCO",0)) ;ien of category passed
  1. I '$G(C) Q
  1. NEW H,D,O S H=0 K O
  1. F S H=$O(^AUTTHF("AC",C,H)) Q:'+H D
  1. . Q:'$D(^AUPNHF("AA",BHSDFN,H))
  1. . S D=$O(^AUPNHF("AA",BHSDFN,H,""))
  1. . Q:'D
  1. . S O(D)=$O(^AUPNHF("AA",BHSDFN,H,D,""))
  1. . Q
  1. S D=$O(O(0))
  1. I D="" Q
  1. S BHDTOB=$$VAL^XBDIQ1(9000010.23,O(D),.01)_" "_$$FMTE^XLFDT((9999999-D))
  1. Q
  1. TOBACCO1 ;check problem file for tobacco use
  1. K APCH,APCHX
  1. S APCHX=BHSDFN_"^PROBLEMS [DM AUDIT PROBLEM SMOKING DXS" S E=$$START1^APCLDF(APCHX,"APCH(") Q:E I $D(APCH(1)) D
  1. . ;I $P(^ICD9($P(APCH(1),U,2),0),U,1)=305.13 S BHDTOB="PAST USE OF TOBACCO"_" - "_$E($P(^AUTNPOV($P(^AUPNPROB(+$P(APCH(1),U,4),0),U,5),0),U),1,30) Q
  1. . I $$ICDDX^ICDCODE($P(APCH(1),U,2),U,2)=305.13 S BHDTOB="PAST USE OF TOBACCO"_" - "_$E($P(^AUTNPOV($P(^AUPNPROB(+$P(APCH(1),U,4),0),U,5),0),U),1,30) Q ;code set versioning cmi/anch/maw 8/27/2007 code set versioning
  1. . S BHDTOB="YES, USES TOBACCO - "_$E($P(^AUTNPOV($P(^AUPNPROB(+$P(APCH(1),U,4),0),U,5),0),U),1,30)
  1. .Q
  1. Q
  1. TOBACCO2 ;check pov file for TOBACCO USE DOC
  1. K APCH S APCHX=BHSDFN_"^LAST DX [DM AUDIT SMOKING RELATED DXS" S E=$$START1^APCLDF(APCHX,"APCH(") Q:E I $D(APCH(1)) D
  1. . I $P(APCH(1),U,2)=305.13 S BHDTOB="PAST USE OF TOBACCO"_" - "_$E($P(^AUTNPOV($P(^AUPNVPOV(+$P(APCH(1),U,4),0),U,4),0),U),1,30) Q
  1. . S BHDTOB="YES, USES TOBACCO"_" - "_$E($P(^AUTNPOV($P(^AUPNVPOV(+$P(APCH(1),U,4),0),U,4),0),U),1,30)
  1. .Q
  1. Q
  1. ;
  1. CHEST(P) ;EP - get date of last chest xray from V RAD or V CPT
  1. ;FIX ALL RAD LOOKUPS TO LOOP THROUGH GLOBAL
  1. I $G(P)="" Q ""
  1. NEW X,Y,Z,G,LCHEST,T,D
  1. S LCHEST=""
  1. S (X,Y,V)=0 F S X=$O(^AUPNVRAD("AC",P,X)) Q:X'=+X D
  1. .S V=$P(^AUPNVRAD(X,0),U,3),V=$P($P($G(^AUPNVSIT(V,0)),U),".")
  1. .S Y=$P(^AUPNVRAD(X,0),U),Y=$P($G(^RAMIS(71,Y,0)),U,9)
  1. .I Y>71019&(Y<71040),V>LCHEST S LCHEST=V Q
  1. S T=71019 F S T=$O(^ICPT("B",T)) Q:T>71039 S X=0 F S X=$O(^ICPT("B",T,X)) Q:X'=+X D
  1. .S D=$O(^AUPNVCPT("AA",P,X,0)) I D S D=9999999-D
  1. .I D,D>LCHEST S LCHEST=D
  1. K BHSY S %=P_"^LAST PROCEDURE 87.44",E=$$START1^APCLDF(%,"BHSY(")
  1. I $D(BHSY(1)),$P(BHSY(1),U)>LCHEST S LCHEST=$P(BHSY(1),U)
  1. K BHSY S %=P_"^LAST PROCEDURE 87.39",E=$$START1^APCLDF(%,"BHSY(")
  1. I $D(BHSY(1)),$P(BHSY(1),U)>LCHEST S LCHEST=$P(BHSY(1),U)
  1. Q $S(LCHEST]"":$$FMTE^XLFDT(LCHEST),1:"")
  1. ADA(V) ;any ada other than 9991
  1. I '$G(V) Q ""
  1. NEW X,Y,Z,G
  1. S G="",X=0 F S X=$O(^AUPNVDEN("AD",V,X)) Q:X'=+X!(G) S Y=$P($G(^AUPNVDEN(X,0)),U) I Y,$D(^AUTTADA(Y,0)),$P(^AUTTADA(Y,0),U)'=9991 S G=1
  1. Q G