[1442] | 1 | C0QHF ; GPL - Health Factor Utility Routines ;9/02/11 17:05
|
---|
| 2 | ;;0.1;C0Q;nopatch;noreleasedate;Build 26
|
---|
| 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 | ;
|
---|