1 | GMTS1 ; SLC/JER,KER - Health Summary Driver ; 01/06/2003
|
---|
2 | ;;2.7;Health Summary;**7,16,24,28,37,49,58**;Oct 20, 1995
|
---|
3 | ;
|
---|
4 | ; External References
|
---|
5 | ; DBIA 10076 ^XUSEC(
|
---|
6 | ; DBIA 10000 C^%DTC
|
---|
7 | ; DBIA 10000 NOW^%DTC
|
---|
8 | ;
|
---|
9 | EN ; Entry Point to Generate a Summary
|
---|
10 | ;
|
---|
11 | ; Requires: DFN, GMTSTITL, GMTSEG()
|
---|
12 | ; GMTSEGI(), GMTSEGC, DUZ(2)
|
---|
13 | ;
|
---|
14 | ; $I & IO MUST BE VALID, CALLER MUST CLOSE OUTPUT DEVICE
|
---|
15 | ;
|
---|
16 | START ; Health Summary
|
---|
17 | N GMSUPRES,GMTSICF,GMTSPXD1,GMTSPXD2,GMTSBEG,GMTSEND
|
---|
18 | S GMSUPRES=$P($G(^GMT(142,+$G(GMTSTYP),0)),U,5)
|
---|
19 | I $D(GMSUPRES),$D(GMTSOBJ),'$D(GMTSOBJ("SUPPRESS COMPONENTS")) S GMSUPRES="N"
|
---|
20 | S:$D(GMTSOBJ("SUPPRESS COMPONENTS")) GMSUPRES="Y"
|
---|
21 | U IO S GMTSLO=3,GMTSLPG=0
|
---|
22 | D DEM^GMTSU
|
---|
23 | W:$E(IOST)="C"&('$D(GMTSOBJ)) @IOF D OUTPUT
|
---|
24 | K GMTSCVD,GMTSCKP,GMTSNPG,GMTSPG,GMTSQIT,GMTSHDR,GMTSHD2,GMTSBRK,GMTSLCMP,GMTSDTC
|
---|
25 | K GMTSEGN,GMTSE,GMTSEGR,GMTSEQ,GMTSEGH,GMTSEGL,GMTSDLM,GMTSDLS,GMTSNDM,GMTSN,GMTSQ
|
---|
26 | Q
|
---|
27 | ;
|
---|
28 | OUTPUT ; Loop through GMTSEG()
|
---|
29 | D NOW^%DTC S X=% D REGDTM4^GMTSU S GMTSDTM=X
|
---|
30 | I +$G(GMTSPX1)&+$G(GMTSPX2) D ; Allows date range for data
|
---|
31 | . S GMTS2=9999999-$P(GMTSPX2,"."),GMTS1=9999999-$P(GMTSPX1,".")-.24
|
---|
32 | . ; For GMTS1 want to get everything till Midnight
|
---|
33 | . S X=GMTSPX1 D REGDT4^GMTSU S GMTSPXD1=X
|
---|
34 | . S X=GMTSPX2 D REGDT4^GMTSU S GMTSPXD2=X
|
---|
35 | D HEADER^GMTSUP
|
---|
36 | K GMTSQIT S GMTSEGN=""
|
---|
37 | F S GMTSEGN=$O(GMTSEG(GMTSEGN)) Q:GMTSEGN="" D I $D(GMTSQIT),(GMTSQIT="") Q
|
---|
38 | . K GMTSQIT S GMTSEQ=$P(GMTSEG(GMTSEGN),U,1)
|
---|
39 | . S GMTSE=$P(GMTSEG(GMTSEGN),U,2) D SEGMNT D:GMTSEGN=GMTSEGC LASTPG
|
---|
40 | I $D(GMTSOBJ),+($O(GMTSEG(0)))=0 W !," No data available"
|
---|
41 | S GMTSHDR=$E(GMTSHDR,1,3)_" END "_$E(GMTSHDR,9,79)
|
---|
42 | S:$D(GMTSOBJ) GMTSHDR=$E(GMTSHDR,1,74)
|
---|
43 | S:$D(GMTSOBJE) GMTSHDR="",$P(GMTSHDR,"*",74)="*"
|
---|
44 | I '$D(GMTSOBJ)!($D(GMTSOBJ("CONFIDENTIAL"))) W:$E(IOST)'="C" !,GMTSHDR,!
|
---|
45 | I '$D(GMTSOBJ) H:$E(IOST)="C" 1
|
---|
46 | W:'+$G(GMPSAP)&('$D(GMTSOBJ))&('$D(GMTSOBJE)) @IOF
|
---|
47 | I $D(GMTSQIT) D EXIT
|
---|
48 | Q
|
---|
49 | ;
|
---|
50 | LASTPG ; Allows User to branch to an earlier component (last page)
|
---|
51 | Q:$E(IOST)'="C"!(IOT="HFS")!$D(GMTSQIT)
|
---|
52 | I +$G(GMPSAP),IOSL>998,$G(GMPAT(+$O(GMPAT(0),-1)))'=DFN Q
|
---|
53 | ; No footer when IOSL > 998 and action profile is printed.
|
---|
54 | I IOSL>998,+$G(GMPSAP) Q
|
---|
55 | ; No footer when IOSL > 998 and this isn't the last patient.
|
---|
56 | I IOSL>998,$G(GMPAT(+$O(GMPAT(""),-1)))'=$G(DFN) Q
|
---|
57 | I '$D(GMTSOBJ) F I=$Y:1:$S((IOSL-GMTSLO)'>64:(IOSL-GMTSLO),1:(24-GMTSLO)) W !
|
---|
58 | I $D(GMTSQIT),(GMTSQIT>0) K GMTSQIT
|
---|
59 | S GMTSLPG=1 D CKP^GMTSUP
|
---|
60 | Q
|
---|
61 | EXIT ; Clean up and quit
|
---|
62 | K ZTSK
|
---|
63 | Q
|
---|
64 | SEGMNT ; Output a Component Type
|
---|
65 | N GMTSLOCK,GMTSDBL,GMOOTXT,GMPXICDF,GMPXHLOC,GMPXNARR,GMPXCMOD,GMPXCM,GMTSWRIT,GMSEL
|
---|
66 | I $D(GMTSQIT),(GMTSQIT]"") K GMTSQIT
|
---|
67 | S X=^GMT(142.1,GMTSE,0)
|
---|
68 | S GMTSEGH=$S($P(X,U,4)]"":$P(X,U,4)_" - ",1:"")_$S($P(GMTSEG(GMTSEGN),U,5)]"":$P(GMTSEG(GMTSEGN),U,5),$P(X,U,9)]"":$P(X,U,9),1:" "_$P(X,U,1)),GMTSEGR=$P(X,"^",2)
|
---|
69 | Q:GMTSEGR=""
|
---|
70 | S GMTSLOCK=$P(X,U,7),GMTSDBL=$P(X,U,6),GMOOTXT=$P(X,U,8),GMPXCM=$P(X,U,14)
|
---|
71 | S GMPXHLOC=$P(GMTSEG(GMTSEGN),U,6),GMPXNARR=$P(GMTSEG(GMTSEGN),U,8)
|
---|
72 | S GMPXCMOD=$P(GMTSEG(GMTSEGN),U,9) S:GMPXCM'="Y" GMPXCMOD="N"
|
---|
73 | S GMPXICDF=$P(GMTSEG(GMTSEGN),U,7)
|
---|
74 | S GMTSNDM=$P(GMTSEG(GMTSEGN),U,3),GMTSDLM=$P(GMTSEG(GMTSEGN),U,4) S:GMTSNDM="" GMTSNDM=-1
|
---|
75 | ; Allow for date range for data
|
---|
76 | S:+$G(GMTSPX1)&+$G(GMTSPX2) GMTSDLM=""
|
---|
77 | S GMTSDLS=""
|
---|
78 | I GMTSDLM?1N.N!(GMTSDLM?1N.N1"D") S GMTSDLS=+GMTSDLM_" day"
|
---|
79 | S:GMTSDLM?1N.N1"W" GMTSDLS=+GMTSDLM_" week",GMTSDLM=+GMTSDLM*7
|
---|
80 | S:GMTSDLM?1N.N1"M" GMTSDLS=+GMTSDLM_" month",GMTSDLM=+GMTSDLM*30.4
|
---|
81 | S:GMTSDLM?1N.N1"Y" GMTSDLS=+GMTSDLM_" year",GMTSDLM=+GMTSDLM*365.25
|
---|
82 | S GMTSDLM=+GMTSDLM
|
---|
83 | S:+GMTSDLS>1 GMTSDLS=GMTSDLS_"s"
|
---|
84 | S GMTSEGL="" I GMTSNDM>0!(GMTSDLM>0) S GMTSEGL=" (max "_$S(GMTSNDM>0:GMTSNDM_$S(GMTSNDM=1:" occurrence",1:" occurrences")_$S(GMTSDLM>0:" or ",1:""),1:"")_$S(GMTSDLM>0:GMTSDLS,1:"")_")"
|
---|
85 | K GMTSDLS,GMTSN
|
---|
86 | D NOW^%DTC S GMTSDTC=%,DT=$P(%,".") K %,%H,%I
|
---|
87 | ; Use date range unless variables empty
|
---|
88 | ; GMTS1=Most recent inverted date
|
---|
89 | ; GMTS2=To date in the past in an inverted date format
|
---|
90 | I +$G(GMTSPX1)'>0!(+$G(GMTSPX2)'>0) D
|
---|
91 | . I GMTSDLM'>0 S (GMTS2,GMTSDLM)=9999999,GMTS1=6666666
|
---|
92 | . E S X1=GMTSDTC,X2=-GMTSDLM D C^%DTC S GMTSDLM=9999999-X,GMTS2=GMTSDLM,GMTS1=9999999-(GMTSDTC+.0001) K X1,X2
|
---|
93 | ; Set GMTSBEG to be GMTS2 uninverted
|
---|
94 | S GMTSBEG=$S(GMTS2=9999999:1,1:9999999-GMTS2)
|
---|
95 | ; Set GMTSEND to be GMTS1 uninverted
|
---|
96 | S GMTSEND=$S(GMTS1=6666666:9999999,1:$P(9999999-GMTS1,".")_".235959")
|
---|
97 | ; GMTSWRIT is used to print component heading on 1st write
|
---|
98 | S GMTSWRIT=1
|
---|
99 | I GMTSDBL]"",("PT"[GMTSDBL) D Q
|
---|
100 | . D:GMTSDBL="T" TDISBLD^GMTS2
|
---|
101 | . D:GMTSDBL="P"&$D(GMTSPRM) PDISBLD^GMTS2
|
---|
102 | I GMTSLOCK]"",('$D(^XUSEC(GMTSLOCK,DUZ))) D NOMATCH^GMTS2 Q
|
---|
103 | S GMSEL=$P($G(^GMT(142.1,GMTSE,1,1,0)),U)
|
---|
104 | I GMSEL]"",$O(GMTSEG(GMTSEGN,GMSEL,0))'>0 D NOSELECT^GMTS2 Q
|
---|
105 | S GMTSNPG=0,GMTSWRIT=1
|
---|
106 | D @($P(GMTSEGR,";",1)_U_$P(GMTSEGR,";",2))
|
---|
107 | D NODATA^GMTS2 S GMTSWRIT=1
|
---|
108 | K GMTSDLM
|
---|
109 | Q
|
---|