1 | C0QHF ; GPL - Health Factor Utility Routines ;9/02/11 17:05
|
---|
2 | ;;0.1;C0Q;nopatch;noreleasedate;Build 23
|
---|
3 | ;Copyright 2011 George Lilly. Licensed under the terms of the GNU
|
---|
4 | ;General Public License See attached copy of the License.
|
---|
5 | ;
|
---|
6 | ;This program is free software; you can redistribute it and/or modify
|
---|
7 | ;it under the terms of the GNU General Public License as published by
|
---|
8 | ;the Free Software Foundation; either version 2 of the License, or
|
---|
9 | ;(at your option) any later version.
|
---|
10 | ;
|
---|
11 | ;This program is distributed in the hope that it will be useful,
|
---|
12 | ;but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
13 | ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
---|
14 | ;GNU General Public License for more details.
|
---|
15 | ;
|
---|
16 | ;You should have received a copy of the GNU General Public License along
|
---|
17 | ;with this program; if not, write to the Free Software Foundation, Inc.,
|
---|
18 | ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
---|
19 | ;
|
---|
20 | Q
|
---|
21 | ;
|
---|
22 | ; these routines are for quick lookups on HEALTH FACTOR and V HEALTH FACTOR
|
---|
23 | ; files...
|
---|
24 | ;
|
---|
25 | ; from the DD:
|
---|
26 | ;STANDARD DATA DICTIONARY #9000010.23 -- V HEALTH FACTORS FILE
|
---|
27 | ;STORED IN ^AUPNVHF( (6744 ENTRIES)
|
---|
28 | ;CROSS REFERENCED BY: PATIENT NAME(AATOO), HEALTH FACTOR(AATOO1), VISIT(AD),
|
---|
29 | ; VISIT(AV10), HEALTH FACTOR(B), PATIENT NAME(C)
|
---|
30 | ;
|
---|
31 | ;STANDARD DATA DICTIONARY #9999999.64 -- HEALTH FACTORS FILE
|
---|
32 | ;STORED IN ^AUTTHF( (8656 ENTRIES)
|
---|
33 | ;CROSS REFERENCED BY: CATEGORY(AC), ENTRY TYPE(AD), FACTOR(B), SYNONYM(D)
|
---|
34 | ;
|
---|
35 | HFYN(DFN,C0QHF) ; EXTRINSIC RETURNS 1 (YES) OR 0 (NO) IF A PATIENT
|
---|
36 | ; HAS A HEALTH FACTOR
|
---|
37 | N ZI,ZJ,ZR
|
---|
38 | S ZI=$O(^AUTTHF("B",C0QHF,"")) ; HEALTH FACTOR IEN
|
---|
39 | I ZI="" D Q 0 ;
|
---|
40 | . W !,"BAD HEALTH FACTOR: ",C0QHF
|
---|
41 | I $D(^AUPNVHF("AA",DFN,ZI)) S ZR=1
|
---|
42 | E S ZR=0
|
---|
43 | Q ZR
|
---|
44 | ;
|
---|
45 | HFIEN(ZHF) ; EXTRINSIC RETURNS THE IEN OF THE HEALTHFACTOR
|
---|
46 | N ZI
|
---|
47 | S ZI=$O(^AUTTHF("B",ZHF,"")) ; HEALTH FACTOR IEN
|
---|
48 | Q ZI
|
---|
49 | ;
|
---|
50 | VHFIEN(DFN,ZHF) ; EXTRINSIC RETURNS THE LAST IEN OF THIS HEALTH FACTOR
|
---|
51 | ; FOR THE PATIENT
|
---|
52 | N ZG,ZJ,ZK
|
---|
53 | S ZG=$$HFIEN(ZHF)
|
---|
54 | I ZG="" Q ; OPPS HEALTH FACTOR NOT FOUND
|
---|
55 | S ZJ=$O(^AUPNVHF("AA",DFN,ZG,""),-1) ;DATE
|
---|
56 | S ZK=$O(^AUPNVHF("AA",DFN,ZG,ZJ,"")) ;IEN
|
---|
57 | Q ZK
|
---|
58 | ;
|
---|
59 | HFCAT(RTN,DFN,C0QHFCAT) ; C0QFHCAT IS A HEALTH FACTOR CATEGORY
|
---|
60 | ; RTN IS PASSED BY REFERENCE AND RETURNS AN ARRAY OF HEALTH FACTORS
|
---|
61 | ; THAT THE PATIENT HAS IN THE CATEGORY. RETURNS NULL IF NONE
|
---|
62 | ; FORMAT RNT(HEALTH FACTOR IEN,HEALTH FACTOR NAME)=""
|
---|
63 | N ZI
|
---|
64 | S ZI=$O(^AUTTHF("B",C0QHFCAT,"")) ; HEALTH FACTOR CATEGORY IEN
|
---|
65 | N C0QN,C0QO,C0QR
|
---|
66 | S C0QO=$NA(^AUPNVHF("AA",DFN)) ; ALL THE PATIENT'S HEALTH FACTORS
|
---|
67 | S C0QN=$NA(^AUTTHF("AC",ZI)) ; ALL HEALTH FACTORS IN THIS CATEGORY
|
---|
68 | D UNITY^C0QSET("C0QR",C0QN,C0QO) ; THE DIFFERENCE
|
---|
69 | K RTN ; CLEAR THE RETURN ARRAY
|
---|
70 | N ZJ S ZJ=""
|
---|
71 | F S ZJ=$O(C0QR(1,ZJ)) Q:ZJ="" D ; FOR ALL HEALTH FACTOR MATCHES
|
---|
72 | . S RTN(ZJ,$P(^AUTTHF(ZJ,0),"^",1))=""
|
---|
73 | Q
|
---|
74 | ;
|
---|
75 | HFLCAT(RTN,C0QHFCAT) ; RETURNS A LIST OF PATIENTS WHO HAVE A HEALTH FACTOR
|
---|
76 | ; IN THE C0QHFCAT CATEGORY. RTN IS PASSED BY REFERENCE
|
---|
77 | ; THIS WILL BE HARD TO DO WITHOUT SOME NEW INDEXES
|
---|
78 | Q
|
---|
79 | ;
|
---|
80 | HFLPAT(RTN,C0QHF) ; RETURNS A LIST OF PATIENTS WHO HAVE A SPECIFIC HEALTH
|
---|
81 | ; FACTOR. RTN IS PASSED BY REFERENCE
|
---|
82 | ; THIS ONE ALSO WILL BE HARD TO DO QUICKLY WITHOUT A NEW INDEX
|
---|
83 | Q
|
---|
84 | ;
|
---|
85 | INDEXES(DDREF) ;PRINT THE INDEXES ACTUALLY ON FILE DDREF
|
---|
86 | ; IE D INDEXES($NA(^DD))
|
---|
87 | N ZI
|
---|
88 | S ZI="A"
|
---|
89 | F S ZI=$O(@DDREF@(ZI)) Q:ZI="" W !,ZI
|
---|
90 | Q
|
---|
91 | ;
|
---|