| 1 | WVUTL9 ;HCIOFO/FT-Women's Health Utility Routine; ;3/18/03  15:44
 | 
|---|
| 2 |  ;;1.0;WOMEN'S HEALTH;**3,7,9,10,17**;Sep 30, 1998
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; This routine uses the following IAs:
 | 
|---|
| 5 |  ; #10035 - ^DPT references        (supported)
 | 
|---|
| 6 |  ; #10056 - ^DIC(5 references      (supported)
 | 
|---|
| 7 |  ; #10061 - ^VADPT calls           (supported)
 | 
|---|
| 8 |  ; #10103 - ^XLFDT calls           (supported)
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 | DCM(SITE) ; Default case manager check
 | 
|---|
| 11 |  ; If there is a default case manager return 1 else 0.
 | 
|---|
| 12 |  I 'SITE Q 0
 | 
|---|
| 13 |  I $P($G(^WV(790.02,SITE,0)),U,2) Q 1
 | 
|---|
| 14 |  Q 0
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 | NODCM ; No Default Case Manager message
 | 
|---|
| 17 |  W !,"Sorry, but a DEFAULT CASE MANAGER must be assigned for your facility"
 | 
|---|
| 18 |  W !,"before a patient can be entered into the Women's Health database.",!
 | 
|---|
| 19 |  W !,"Please use the EDIT SITE PARAMETERS option on the FILE MAINTENANCE"
 | 
|---|
| 20 |  W !,"menu to designate a DEFAULT CASE MANAGER.",!
 | 
|---|
| 21 |  D DIRZ^WVUTL3
 | 
|---|
| 22 |  Q
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 | AGE(DFN) ;EP
 | 
|---|
| 25 |  ;---> YIELD PATIENT'S AGE IN YEARS.
 | 
|---|
| 26 |  ;---> REQUIRED VARIABLE: DFN=IEN PATIENT FILE
 | 
|---|
| 27 |  ; Different from AGE^WVUTL1. This EP returns age at date of death.
 | 
|---|
| 28 |  N X,X1,X2
 | 
|---|
| 29 |  Q:'$G(DFN) "NO PATIENT"
 | 
|---|
| 30 |  S X2=$$DOB^WVUTL1(DFN)
 | 
|---|
| 31 |  Q:'+X2 "UNKNOWN"
 | 
|---|
| 32 |  S X1=DT
 | 
|---|
| 33 |  I $$DECEASED^WVUTL1(DFN) S X1=+^DPT(DFN,.35)
 | 
|---|
| 34 |  D ^%DTC
 | 
|---|
| 35 |  Q $P(X/365.25,".")_"y/o"
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 | GAPPT(DFN) ; Get future appointments from SDA^VADPT
 | 
|---|
| 38 |  ; Returns ^UTILITY("VASD",$J,#,"I") <-internal values
 | 
|---|
| 39 |  ;         ^UTILITY("VASD",$J,#,"E") <-external vlaues
 | 
|---|
| 40 |  ; piece 1: appointment date/time
 | 
|---|
| 41 |  ;       2: clinic
 | 
|---|
| 42 |  ;       3: status
 | 
|---|
| 43 |  ;       4: type
 | 
|---|
| 44 |  Q:'$G(DFN)
 | 
|---|
| 45 |  N VASD,VAERR
 | 
|---|
| 46 |  S VASD("F")=$$NOW^XLFDT,VASD("W")=1 ;get active/kept appts 
 | 
|---|
| 47 |  D SDA^VADPT
 | 
|---|
| 48 |  Q
 | 
|---|
| 49 | KAPPT(DFN) ; Kill APPOINTMENTS multiple
 | 
|---|
| 50 |  Q:'$G(DFN)
 | 
|---|
| 51 |  N DA,DIK
 | 
|---|
| 52 |  S DA=0,DA(1)=DFN
 | 
|---|
| 53 |  F  S DA=$O(^WV(790,DFN,2,DA)) Q:'DA  D
 | 
|---|
| 54 |  .S DIK="^WV(790,"_DFN_",2,"
 | 
|---|
| 55 |  .D ^DIK
 | 
|---|
| 56 |  .Q
 | 
|---|
| 57 |  Q
 | 
|---|
| 58 | SAPPT(DFN) ; Set APPOINTMENTS multiple
 | 
|---|
| 59 |  Q:'$G(DFN)
 | 
|---|
| 60 |  Q:'$D(^WV(790,DFN))
 | 
|---|
| 61 |  N DA,DIC,DLAYGO,LOOP,X
 | 
|---|
| 62 |  S LOOP=0,DIC="^WV(790,"_DFN_",2,",DIC(0)="L",DA(1)=DFN,DLAYGO=790
 | 
|---|
| 63 |  I '$D(^UTILITY("VASD",$J))  D  Q  ;no appts passed from SDA^VADPT
 | 
|---|
| 64 |  .S X="No Future Appointments"
 | 
|---|
| 65 |  .D ^DIC
 | 
|---|
| 66 |  .Q
 | 
|---|
| 67 |  F  S LOOP=$O(^UTILITY("VASD",$J,LOOP)) Q:'LOOP  D
 | 
|---|
| 68 |  .S X=$G(^UTILITY("VASD",$J,LOOP,"E"))
 | 
|---|
| 69 |  .Q:X=""
 | 
|---|
| 70 |  .S X=$P(X,U,1)_"   Clinic: "_$P(X,U,2)
 | 
|---|
| 71 |  .D ^DIC
 | 
|---|
| 72 |  .Q
 | 
|---|
| 73 |  Q
 | 
|---|
| 74 | KILLUG ; Kill Utility Global created by SDA^VADPT call
 | 
|---|
| 75 |  K ^UTILITY("VASD",$J)
 | 
|---|
| 76 |  Q
 | 
|---|
| 77 | IEN(WVFILE,WVALUE) ; Return ien of entry
 | 
|---|
| 78 |  ; input: WVFILE - File number
 | 
|---|
| 79 |  ;        WVALUE - value of the .01 field
 | 
|---|
| 80 |  I 'WVFILE!(WVALUE="") Q 0
 | 
|---|
| 81 |  Q +$O(^WV(WVFILE,"B",WVALUE,0))
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 | GADD(DFN) ; Get COMPLETE ADDRESS with ADD^VADPT
 | 
|---|
| 84 |  ; Returns VAPA array
 | 
|---|
| 85 |  Q:'$G(DFN)
 | 
|---|
| 86 |  D ADD^VADPT
 | 
|---|
| 87 |  Q
 | 
|---|
| 88 | KADD(DFN) ; Kill COMPLETE ADDRESS multiple
 | 
|---|
| 89 |  Q:'$G(DFN)
 | 
|---|
| 90 |  N DA,DIK
 | 
|---|
| 91 |  S DA=0,DA(1)=DFN
 | 
|---|
| 92 |  F  S DA=$O(^WV(790,DFN,3,DA)) Q:'DA  D
 | 
|---|
| 93 |  .S DIK="^WV(790,"_DFN_",3,"
 | 
|---|
| 94 |  .D ^DIK
 | 
|---|
| 95 |  .Q
 | 
|---|
| 96 |  Q
 | 
|---|
| 97 | SADD(DFN) ; Set COMPLETE ADDRESS multiple
 | 
|---|
| 98 |  Q:'$G(DFN)
 | 
|---|
| 99 |  Q:'$D(^WV(790,DFN))
 | 
|---|
| 100 |  N DA,DIC,DLAYGO,LOOP,WVERR,WVSTATE,X
 | 
|---|
| 101 |  S LOOP=0,DIC="^WV(790,"_DFN_",3,",DIC(0)="L",DA(1)=DFN,DLAYGO=790
 | 
|---|
| 102 |  I '$D(VAPA)  D  Q  ;no address passed from ADD^VADPT
 | 
|---|
| 103 |  .S X="No Address on file"
 | 
|---|
| 104 |  .D ^DIC
 | 
|---|
| 105 |  .Q
 | 
|---|
| 106 |  ; look for confidential address
 | 
|---|
| 107 |  I $G(VAPA(12))'=1 D RA Q  ;no confidential address, use regular address
 | 
|---|
| 108 |  I $P($G(VAPA(22,2)),U,3)="Y" D CC Q  ;category 2 - appointments
 | 
|---|
| 109 |  I $P($G(VAPA(22,4)),U,3)="Y" D CC Q  ;category 4 - medical records
 | 
|---|
| 110 |  D RA
 | 
|---|
| 111 |  Q
 | 
|---|
| 112 | RA ; get regular address
 | 
|---|
| 113 |  F LOOP=1,2,3 D
 | 
|---|
| 114 |  .S X=$G(VAPA(LOOP))
 | 
|---|
| 115 |  .Q:X=""
 | 
|---|
| 116 |  .S:$E(X)'?1N X=" "_X
 | 
|---|
| 117 |  .D ^DIC
 | 
|---|
| 118 |  .Q
 | 
|---|
| 119 |  S WVSTATE=""
 | 
|---|
| 120 |  I $P(VAPA(5),U,1) D
 | 
|---|
| 121 |  .S WVSTATE=$$GET1^DIQ(5,$P(VAPA(5),U,1),1,"E","","WVERR")
 | 
|---|
| 122 |  .Q
 | 
|---|
| 123 |  S X=VAPA(4)_", "_WVSTATE_"  "_VAPA(6)
 | 
|---|
| 124 |  Q:X=",   "
 | 
|---|
| 125 |  D ^DIC
 | 
|---|
| 126 |  Q
 | 
|---|
| 127 | CC ; get Confidential Communication address
 | 
|---|
| 128 |  F LOOP=13,14,15 D
 | 
|---|
| 129 |  .S X=$G(VAPA(LOOP))
 | 
|---|
| 130 |  .Q:X=""
 | 
|---|
| 131 |  .S:$E(X)'?1N X=" "_X
 | 
|---|
| 132 |  .D ^DIC
 | 
|---|
| 133 |  .Q
 | 
|---|
| 134 |  S WVSTATE=""
 | 
|---|
| 135 |  I $P(VAPA(17),U,1) D
 | 
|---|
| 136 |  .S WVSTATE=$$GET1^DIQ(5,$P(VAPA(17),U,1),1,"E","","WVERR")
 | 
|---|
| 137 |  .Q
 | 
|---|
| 138 |  S X=$P(VAPA(16),U,1)_", "_WVSTATE_"  "_$P(VAPA(18),U,1)
 | 
|---|
| 139 |  Q:X=",   "
 | 
|---|
| 140 |  D ^DIC
 | 
|---|
| 141 |  Q
 | 
|---|
| 142 | KVAR ; Kill off VADPT variables used
 | 
|---|
| 143 |  D KVAR^VADPT
 | 
|---|
| 144 |  Q
 | 
|---|
| 145 | ELIG(WVDFN) ; Get patient's eligibilty code.
 | 
|---|
| 146 |  ;  Input: patient DFN
 | 
|---|
| 147 |  ; Output: internal^external values
 | 
|---|
| 148 |  N DFN,I,VAEL,VAERR,X,Y
 | 
|---|
| 149 |  S DFN=WVDFN
 | 
|---|
| 150 |  D ELIG^VADPT ;get elibility code
 | 
|---|
| 151 |  Q $G(VAEL(1)) ;VAEL(1)=internal^external
 | 
|---|
| 152 |  ;
 | 
|---|
| 153 | HELP(WVDA,WVA,WVB) ; Display message for eligiblity codes
 | 
|---|
| 154 |  ; WVDA - the FILE 790.02 ien
 | 
|---|
| 155 |  ; WVA  - the node number where the eligibilty codes are stored
 | 
|---|
| 156 |  ; WVB  - the package name associated with those eligibility codes
 | 
|---|
| 157 |  Q:'$O(^WV(790.02,WVDA,WVA,0))  ;no eligibility codes for lab data
 | 
|---|
| 158 |  N WVMSG
 | 
|---|
| 159 |  S WVMSG(1)="The ELIGIBILITY CODE(S) defined for "_WVB_" will be deleted when you"
 | 
|---|
| 160 |  S WVMSG(2)="exit and save your changes."
 | 
|---|
| 161 |  D HLP^DDSUTL(.WVMSG)
 | 
|---|
| 162 |  Q
 | 
|---|
| 163 | DELETE(WVDA) ; Delete eligibility codes, if necessary
 | 
|---|
| 164 |  ; task as a background job?
 | 
|---|
| 165 |  Q:'WVDA
 | 
|---|
| 166 |  N WVLAV,WVLSP,WVNODE,WVRAV,WVRSP,X,Y
 | 
|---|
| 167 |  S WVNODE=$G(^WV(790.02,WVDA,0))
 | 
|---|
| 168 |  Q:WVNODE=""
 | 
|---|
| 169 |  S WVRSP=$P(WVNODE,U,10) ;import mams from radiology
 | 
|---|
| 170 |  S WVRAV=$P(WVNODE,U,25) ;include all non-veterans (rad)
 | 
|---|
| 171 |  S WVLSP=$P(WVNODE,U,24) ;import tests from lab
 | 
|---|
| 172 |  S WVLAV=$P(WVNODE,U,26) ;include all non-veterans (lab)
 | 
|---|
| 173 |  ; Delete eligibility codes related to radiology if 
 | 
|---|
| 174 |  ; 1)     import mams from radiology = YES, or
 | 
|---|
| 175 |  ; 2) include all non-veterans (rad) = YES, or
 | 
|---|
| 176 |  ; 3) include all non-veterans (rad) = null
 | 
|---|
| 177 |  I WVRSP'=1!(WVRAV=1)!(WVRAV="") D
 | 
|---|
| 178 |  .N DA,DIK
 | 
|---|
| 179 |  .S DA(1)=WVDA,DA=0,DIK="^WV(790.02,DA(1),5,"
 | 
|---|
| 180 |  .F  S DA=$O(^WV(790.02,DA(1),5,DA)) Q:'DA  D ^DIK
 | 
|---|
| 181 |  .Q
 | 
|---|
| 182 |  ; Delete eligibility codes related to laboratory if 
 | 
|---|
| 183 |  ; 1)          import tests from lab = YES, or
 | 
|---|
| 184 |  ; 2) include all non-veterans (lab) = YES, or
 | 
|---|
| 185 |  ; 3) include all non-veterans (lab) = null
 | 
|---|
| 186 |  I WVLSP'=1!(WVLAV=1)!(WVLAV="") D
 | 
|---|
| 187 |  .N DA,DIK
 | 
|---|
| 188 |  .S DA(1)=WVDA,DA=0,DIK="^WV(790.02,DA(1),6,"
 | 
|---|
| 189 |  .F  S DA=$O(^WV(790.02,DA(1),6,DA)) Q:'DA  D ^DIK
 | 
|---|
| 190 |  .Q
 | 
|---|
| 191 |  Q
 | 
|---|