| [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 |         ;
 | 
|---|