BHSFH ; IHS/MSC/MGH - Health summary for family history ;17-Jul-2014 14:19;DU
;;1.0;HEALTH SUMMARY COMONENTS;**3,8,9**;March 17, 2006;Build 16
;
;
FMH ;EP - ******* FAMILY HISTORY * 9000014 *******
; <SETUP>
N BHSPAT,BHSQ
S BHSPAT=DFN
I '$D(^AUPNFH("AC",BHSPAT)),'$D(^AUPNFHR("AA",BHSPAT)) Q ;no family history to display
D CKP^GMTSUP Q:$D(GMTSQIT)
; <DISPLAY>
K APCHTFH
S BHSDFN=0 F S BHSDFN=$O(^AUPNFH("AC",BHSPAT,BHSDFN)) Q:'BHSDFN D
.Q:'$D(^AUPNFH(BHSDFN,0)) ;bad xref
.S R=$P(^AUPNFH(BHSDFN,0),U,9)
.I R="" S R="Z",S=$$VAL^XBDIQ1(9000014,BHSDFN,.07),Z=S_" ",O=8 D G FMH1
..I S="" S S="UNKNOWN",Z="UNKNOWN "
.S S=$$VAL^XBDIQ1(9000014.1,R,.01),Z=S_" "_$P(^AUPNFHR(R,0),U,3)
.S O=$P(^AUPNFHR(R,0),U) I O S O=$P($G(^AUTTRLSH(O,21)),U,3)
.I 'O S O=8
FMH1 .S APCHTFH(O,S,Z,R,(9999999-$$LDM(BHSDFN)),BHSDFN)=""
;get relations with no conditions
S X=0 F S X=$O(^AUPNFHR("AA",BHSPAT,X)) Q:X'=+X S Y=0 F S Y=$O(^AUPNFHR("AA",BHSPAT,X,Y)) Q:Y'=+Y D
.I '$D(^AUPNFH("AE",Y)) D
..S R=Y
..S S=$$VAL^XBDIQ1(9000014.1,R,.01),Z=S_" "_$P(^AUPNFHR(R,0),U,3)
..S O=$P(^AUPNFHR(R,0),U) I O S O=$P($G(^AUTTRLSH(O,21)),U,3)
..I 'O S O=8
..S APCHTFH(O,S,Z,R,(9999999-$P(^AUPNFHR(R,0),U,9)),0)=""
W "Date Last Mod",?14,"Relation/Status/Diagnosis"
S BHO=0 F S BHO=$O(APCHTFH(BHO)) Q:BHO'=+BHO D FMH2
FMHX K BHSDFN,BHSN,BHSICD,BHSDAT,BHSNRQ,BHSICL,BHSDFN,APCHTFH,BHS,BHZ,BHR,BHD,BHO
K BHC,BHIEN,BHSIVD,BHSTAT,BHTD,BHTDAT,A,T,N,O,P,R,S,X,Y,Z
Q
LDM(I) ;get last date modified of Family History or relation
I $G(I)="" Q ""
I '$D(^AUPNFH(I,0)) Q ""
NEW J,D,E
S D=""
S J=$P(^AUPNFH(I,0),U,9) I J S D=$P($G(^AUPNFHR(J,0)),U,9) I D="" S D=$P($G(^AUPNFHR(J,0)),U,9)
S E=$P(^AUPNFH(I,0),U,12) I E>D S D=E
S E=$P(^AUPNFH(I,0),U,3) I E>D S D=E
Q D
FMH2 ;
S BHS="",BHC=0 F S BHS=$O(APCHTFH(BHO,BHS)) Q:BHS=""!($D(GMTSQIT)) D
.S BHZ="" F S BHZ=$O(APCHTFH(BHO,BHS,BHZ)) Q:BHZ=""!($D(GMTSQIT)) D
..S BHR="" F S BHR=$O(APCHTFH(BHO,BHS,BHZ,BHR)) Q:BHR=""!($D(GMTSQIT)) D
...S BHTD=$O(APCHTFH(BHO,BHS,BHZ,BHR,0)),BHTD=(9999999-BHTD) S X=BHTD D REGDT4^GMTSU S BHTDAT=X S:BHTDAT="/" BHTDAT=""
...S BHD="",BHC=0 F S BHD=$O(APCHTFH(BHO,BHS,BHZ,BHR,BHD)) Q:BHD=""!($D(GMTSQIT)) D
....S BHSDFN="" F S BHSDFN=$O(APCHTFH(BHO,BHS,BHZ,BHR,BHD,BHSDFN)) Q:BHSDFN=""!($D(GMTSQIT)) D FHDSP
;S APCHSDFN="" F APCHSQ=0:0 S APCHSDFN=$O(^AUPNFH("AC",APCHSPAT,APCHSDFN)) Q:APCHSDFN="" D FHDSP
; <CLEANUP>
Q
FHDSP S BHC=BHC+1
I BHC=1 W !,BHTDAT,?14,BHZ," Status: "
S BHSTAT=""
I 'BHR,BHSDFN D
.S BHSTAT=$S($P(^AUPNFH(BHSDFN,0),U,6)]"":$$VAL^XBDIQ1(9000014,BHSDFN,.06),1:"None")
I BHR S BHSTAT=$S($P($G(^AUPNFHR(BHR,0)),U,4)]"":$$VAL^XBDIQ1(9000014.1,BHR,.04),1:"None")
I BHC=1 W BHSTAT,!
I BHR,$P(^AUPNFHR(BHR,0),U,5)]""!($P(^AUPNFHR(BHR,0),U,6)]"") D
.I BHC=1 W ?14,"Age at Death: ",$$VAL^XBDIQ1(9000014.1,BHR,.05)," Cause of Death: ",$S($P(^AUPNFHR(BHR,0),U,6)]"":$P(^AUPNFHR(BHR,0),U,6),1:"Data Not Available"),!
I BHR,$P(^AUPNFHR(BHR,0),U,7)]""!($P(^AUPNFHR(BHR,0),U,8)]"") D
.I BHC=1 W ?14,"Multiple Birth: "_$$VAL^XBDIQ1(9000014.1,BHR,.07)_$S($P(^AUPNFHR(BHR,0),U,7)="Y":" Multiple Birth Type: "_$$VAL^XBDIQ1(9000014.1,BHR,.08),1:""),! ;_" Date Updated: "_$$VAL^XBDIQ1(9000014.1,R,.09)
Q:'BHSDFN
S BHSN=^AUPNFH(BHSDFN,0)
S BHSICD=$P(BHSN,U,1) D GETICDDX^BHSUTL
;S Y=$P(APCHSN,U,3) X APCHSCVD S APCHSDAT=Y
S BHSNRQ=$P(BHSN,U,4)
D GETNARR^BHSUTL
D CKP^GMTSUP Q:$D(GMTSQIT) ; W !,APCHSDAT
S (X,R,S,N,A,P)=""
;S R=$$VAL^XBDIQ1(9000014,BHSDFN,.07)
;S BHSNRQ=BHSNRQ_" ("_$$VAL^XBDIQ1(9000014,BHSDFN,.01)_")"
S BHSNRQ=BHSNRQ_" ("_$$VAL^XBDIQ1(9000014,BHSDFN,.14)_")"
S A="" I BHSDFN S A=$$VAL^XBDIQ1(9000014,BHSDFN,.11) I A="" S A=$$VAL^XBDIQ1(9000014,BHSDFN,.05)
;S S=$$VAL^XBDIQ1(9000014,APCHSDFN,.06)
;S P=$$VAL^XBDIQ1(9000014,APCHSDFN,.08)
;S X=R
;I X]"" S X=X_"; "
S X=BHSNRQ
S X=X_$S(A]"":"; Age at Onset: "_A,1:"; Age at Onset: None")
;S X=X_$S(S]"":"; Status: "_S,1:"; Status: None")
;S X=X_$S(P]"":"; Documented By: "_P,1:"")
S BHSICL=14,BHSNRQ=X
D PRTICD^BHSUTL
Q
;
PWH ;EP - called from component Patient wellness Handout
; <SETUP>
N BHSPAT
S BHSPAT=DFN
D CKP^GMTSUP Q:$D(GMTSQIT)
; <DISPLAY>
K BHTFH
S BHSIVD="" F S BHSIVD=$O(^APCHPWHL("AA",BHSPAT,BHSIVD)) Q:BHSIVD=""!(BHSIVD>GMTSDLM) D
.S BHIEN=0 F S BHIEN=$O(^APCHPWHL("AA",BHSPAT,BHSIVD,BHIEN)) Q:BHIEN'=+BHIEN D
..S BHSN=$G(^APCHPWHL(BHIEN,0))
..I BHSN="" Q
..S N=$$VAL^XBDIQ1(9001027,BHIEN,.02)
..S $P(BHTFH(N),U)=$P($G(BHTFH(N)),U)+1
..S P=$P(BHTFH(N),U)+1
..S $P(BHTFH(N),U,P)=$$DATE^BHSMU($P(^APCHPWHL(BHIEN,0),U,4))
;now display
I '$D(BHTFH) W "No Patient Wellness Handouts given to this patient.",! Q
W ?2,"PATIENT WELLNESS HANDOUT TYPE",?34,"# given",?42,"Dates Last 4 Given to Patient",!
W $$REPEAT^XLFSTR("-",79),!
S BHSN="" F S BHSN=$O(BHTFH(BHSN)) Q:BHSN=""!($D(GMTSQIT)) D
.W ?2,BHSN,?34,$P(BHTFH(BHSN),U) W ?42,$P(BHTFH(BHSN),U,2)," ",$P(BHTFH(BHSN),U,3)," ",$P(BHTFH(BHSN),U,4)," ",$P(BHTFH(BHSN),U,5),!
.Q
K BHTFH,BHSN
Q
BHSFH ; IHS/MSC/MGH - Health summary for family history ;17-Jul-2014 14:19;DU
+1 ;;1.0;HEALTH SUMMARY COMONENTS;**3,8,9**;March 17, 2006;Build 16
+2 ;
+3 ;
FMH ;EP - ******* FAMILY HISTORY * 9000014 *******
+1 ; <SETUP>
+2 NEW BHSPAT,BHSQ
+3 SET BHSPAT=DFN
+4 ;no family history to display
IF '$DATA(^AUPNFH("AC",BHSPAT))
IF '$DATA(^AUPNFHR("AA",BHSPAT))
QUIT
+5 DO CKP^GMTSUP
IF $DATA(GMTSQIT)
QUIT
+6 ; <DISPLAY>
+7 KILL APCHTFH
+8 SET BHSDFN=0
FOR
SET BHSDFN=$ORDER(^AUPNFH("AC",BHSPAT,BHSDFN))
IF 'BHSDFN
QUIT
Begin DoDot:1
+9 ;bad xref
IF '$DATA(^AUPNFH(BHSDFN,0))
QUIT
+10 SET R=$PIECE(^AUPNFH(BHSDFN,0),U,9)
+11 IF R=""
SET R="Z"
SET S=$$VAL^XBDIQ1(9000014,BHSDFN,.07)
SET Z=S_" "
SET O=8
Begin DoDot:2
+12 IF S=""
SET S="UNKNOWN"
SET Z="UNKNOWN "
End DoDot:2
GOTO FMH1
+13 SET S=$$VAL^XBDIQ1(9000014.1,R,.01)
SET Z=S_" "_$PIECE(^AUPNFHR(R,0),U,3)
+14 SET O=$PIECE(^AUPNFHR(R,0),U)
IF O
SET O=$PIECE($GET(^AUTTRLSH(O,21)),U,3)
+15 IF 'O
SET O=8
FMH1 SET APCHTFH(O,S,Z,R,(9999999-$$LDM(BHSDFN)),BHSDFN)=""
End DoDot:1
+1 ;get relations with no conditions
+2 SET X=0
FOR
SET X=$ORDER(^AUPNFHR("AA",BHSPAT,X))
IF X'=+X
QUIT
SET Y=0
FOR
SET Y=$ORDER(^AUPNFHR("AA",BHSPAT,X,Y))
IF Y'=+Y
QUIT
Begin DoDot:1
+3 IF '$DATA(^AUPNFH("AE",Y))
Begin DoDot:2
+4 SET R=Y
+5 SET S=$$VAL^XBDIQ1(9000014.1,R,.01)
SET Z=S_" "_$PIECE(^AUPNFHR(R,0),U,3)
+6 SET O=$PIECE(^AUPNFHR(R,0),U)
IF O
SET O=$PIECE($GET(^AUTTRLSH(O,21)),U,3)
+7 IF 'O
SET O=8
+8 SET APCHTFH(O,S,Z,R,(9999999-$PIECE(^AUPNFHR(R,0),U,9)),0)=""
End DoDot:2
End DoDot:1
+9 WRITE "Date Last Mod",?14,"Relation/Status/Diagnosis"
+10 SET BHO=0
FOR
SET BHO=$ORDER(APCHTFH(BHO))
IF BHO'=+BHO
QUIT
DO FMH2
FMHX KILL BHSDFN,BHSN,BHSICD,BHSDAT,BHSNRQ,BHSICL,BHSDFN,APCHTFH,BHS,BHZ,BHR,BHD,BHO
+1 KILL BHC,BHIEN,BHSIVD,BHSTAT,BHTD,BHTDAT,A,T,N,O,P,R,S,X,Y,Z
+2 QUIT
LDM(I) ;get last date modified of Family History or relation
+1 IF $GET(I)=""
QUIT ""
+2 IF '$DATA(^AUPNFH(I,0))
QUIT ""
+3 NEW J,D,E
+4 SET D=""
+5 SET J=$PIECE(^AUPNFH(I,0),U,9)
IF J
SET D=$PIECE($GET(^AUPNFHR(J,0)),U,9)
IF D=""
SET D=$PIECE($GET(^AUPNFHR(J,0)),U,9)
+6 SET E=$PIECE(^AUPNFH(I,0),U,12)
IF E>D
SET D=E
+7 SET E=$PIECE(^AUPNFH(I,0),U,3)
IF E>D
SET D=E
+8 QUIT D
FMH2 ;
+1 SET BHS=""
SET BHC=0
FOR
SET BHS=$ORDER(APCHTFH(BHO,BHS))
IF BHS=""!($DATA(GMTSQIT))
QUIT
Begin DoDot:1
+2 SET BHZ=""
FOR
SET BHZ=$ORDER(APCHTFH(BHO,BHS,BHZ))
IF BHZ=""!($DATA(GMTSQIT))
QUIT
Begin DoDot:2
+3 SET BHR=""
FOR
SET BHR=$ORDER(APCHTFH(BHO,BHS,BHZ,BHR))
IF BHR=""!($DATA(GMTSQIT))
QUIT
Begin DoDot:3
+4 SET BHTD=$ORDER(APCHTFH(BHO,BHS,BHZ,BHR,0))
SET BHTD=(9999999-BHTD)
SET X=BHTD
DO REGDT4^GMTSU
SET BHTDAT=X
IF BHTDAT="/"
SET BHTDAT=""
+5 SET BHD=""
SET BHC=0
FOR
SET BHD=$ORDER(APCHTFH(BHO,BHS,BHZ,BHR,BHD))
IF BHD=""!($DATA(GMTSQIT))
QUIT
Begin DoDot:4
+6 SET BHSDFN=""
FOR
SET BHSDFN=$ORDER(APCHTFH(BHO,BHS,BHZ,BHR,BHD,BHSDFN))
IF BHSDFN=""!($DATA(GMTSQIT))
QUIT
DO FHDSP
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+7 ;S APCHSDFN="" F APCHSQ=0:0 S APCHSDFN=$O(^AUPNFH("AC",APCHSPAT,APCHSDFN)) Q:APCHSDFN="" D FHDSP
+8 ; <CLEANUP>
+9 QUIT
FHDSP SET BHC=BHC+1
+1 IF BHC=1
WRITE !,BHTDAT,?14,BHZ," Status: "
+2 SET BHSTAT=""
+3 IF 'BHR
IF BHSDFN
Begin DoDot:1
+4 SET BHSTAT=$SELECT($PIECE(^AUPNFH(BHSDFN,0),U,6)]"":$$VAL^XBDIQ1(9000014,BHSDFN,.06),1:"None")
End DoDot:1
+5 IF BHR
SET BHSTAT=$SELECT($PIECE($GET(^AUPNFHR(BHR,0)),U,4)]"":$$VAL^XBDIQ1(9000014.1,BHR,.04),1:"None")
+6 IF BHC=1
WRITE BHSTAT,!
+7 IF BHR
IF $PIECE(^AUPNFHR(BHR,0),U,5)]""!($PIECE(^AUPNFHR(BHR,0),U,6)]"")
Begin DoDot:1
+8 IF BHC=1
WRITE ?14,"Age at Death: ",$$VAL^XBDIQ1(9000014.1,BHR,.05)," Cause of Death: ",$SELECT($PIECE(^AUPNFHR(BHR,0),U,6)]"":$PIECE(^AUPNFHR(BHR,0),U,6),1:"Data Not Available"),!
End DoDot:1
+9 IF BHR
IF $PIECE(^AUPNFHR(BHR,0),U,7)]""!($PIECE(^AUPNFHR(BHR,0),U,8)]"")
Begin DoDot:1
+10 ;_" Date Updated: "_$$VAL^XBDIQ1(9000014.1,R,.09)
IF BHC=1
WRITE ?14,"Multiple Birth: "_$$VAL^XBDIQ1(9000014.1,BHR,.07)_$SELECT($PIECE(^AUPNFHR(BHR,0),U,7)="Y":" Multiple Birth Type: "_$$VAL^XBDIQ1(9000014.1,BHR,.08),1:""),!
End DoDot:1
+11 IF 'BHSDFN
QUIT
+12 SET BHSN=^AUPNFH(BHSDFN,0)
+13 SET BHSICD=$PIECE(BHSN,U,1)
DO GETICDDX^BHSUTL
+14 ;S Y=$P(APCHSN,U,3) X APCHSCVD S APCHSDAT=Y
+15 SET BHSNRQ=$PIECE(BHSN,U,4)
+16 DO GETNARR^BHSUTL
+17 ; W !,APCHSDAT
DO CKP^GMTSUP
IF $DATA(GMTSQIT)
QUIT
+18 SET (X,R,S,N,A,P)=""
+19 ;S R=$$VAL^XBDIQ1(9000014,BHSDFN,.07)
+20 ;S BHSNRQ=BHSNRQ_" ("_$$VAL^XBDIQ1(9000014,BHSDFN,.01)_")"
+21 SET BHSNRQ=BHSNRQ_" ("_$$VAL^XBDIQ1(9000014,BHSDFN,.14)_")"
+22 SET A=""
IF BHSDFN
SET A=$$VAL^XBDIQ1(9000014,BHSDFN,.11)
IF A=""
SET A=$$VAL^XBDIQ1(9000014,BHSDFN,.05)
+23 ;S S=$$VAL^XBDIQ1(9000014,APCHSDFN,.06)
+24 ;S P=$$VAL^XBDIQ1(9000014,APCHSDFN,.08)
+25 ;S X=R
+26 ;I X]"" S X=X_"; "
+27 SET X=BHSNRQ
+28 SET X=X_$SELECT(A]"":"; Age at Onset: "_A,1:"; Age at Onset: None")
+29 ;S X=X_$S(S]"":"; Status: "_S,1:"; Status: None")
+30 ;S X=X_$S(P]"":"; Documented By: "_P,1:"")
+31 SET BHSICL=14
SET BHSNRQ=X
+32 DO PRTICD^BHSUTL
+33 QUIT
+34 ;
PWH ;EP - called from component Patient wellness Handout
+1 ; <SETUP>
+2 NEW BHSPAT
+3 SET BHSPAT=DFN
+4 DO CKP^GMTSUP
IF $DATA(GMTSQIT)
QUIT
+5 ; <DISPLAY>
+6 KILL BHTFH
+7 SET BHSIVD=""
FOR
SET BHSIVD=$ORDER(^APCHPWHL("AA",BHSPAT,BHSIVD))
IF BHSIVD=""!(BHSIVD>GMTSDLM)
QUIT
Begin DoDot:1
+8 SET BHIEN=0
FOR
SET BHIEN=$ORDER(^APCHPWHL("AA",BHSPAT,BHSIVD,BHIEN))
IF BHIEN'=+BHIEN
QUIT
Begin DoDot:2
+9 SET BHSN=$GET(^APCHPWHL(BHIEN,0))
+10 IF BHSN=""
QUIT
+11 SET N=$$VAL^XBDIQ1(9001027,BHIEN,.02)
+12 SET $PIECE(BHTFH(N),U)=$PIECE($GET(BHTFH(N)),U)+1
+13 SET P=$PIECE(BHTFH(N),U)+1
+14 SET $PIECE(BHTFH(N),U,P)=$$DATE^BHSMU($PIECE(^APCHPWHL(BHIEN,0),U,4))
End DoDot:2
End DoDot:1
+15 ;now display
+16 IF '$DATA(BHTFH)
WRITE "No Patient Wellness Handouts given to this patient.",!
QUIT
+17 WRITE ?2,"PATIENT WELLNESS HANDOUT TYPE",?34,"# given",?42,"Dates Last 4 Given to Patient",!
+18 WRITE $$REPEAT^XLFSTR("-",79),!
+19 SET BHSN=""
FOR
SET BHSN=$ORDER(BHTFH(BHSN))
IF BHSN=""!($DATA(GMTSQIT))
QUIT
Begin DoDot:1
+20 WRITE ?2,BHSN,?34,$PIECE(BHTFH(BHSN),U)
WRITE ?42,$PIECE(BHTFH(BHSN),U,2)," ",$PIECE(BHTFH(BHSN),U,3)," ",$PIECE(BHTFH(BHSN),U,4)," ",$PIECE(BHTFH(BHSN),U,5),!
+21 QUIT
End DoDot:1
+22 KILL BHTFH,BHSN
+23 QUIT