[613] | 1 | DGQEDEMO ;ALB/RPM - VIC REPLACEMENT DEMOGRAPHICS GETTER API'S ; 9/19/03
|
---|
| 2 | ;;5.3;Registration;**571**;Aug 13, 1993
|
---|
| 3 | ;
|
---|
| 4 | ; This routine contains the following patient demographic data
|
---|
| 5 | ; retrieval procedures and functions:
|
---|
| 6 | ; $$GETICN - retrieves patient's national ICN
|
---|
| 7 | ; $$GETIDS - retrieves patient identifiers
|
---|
| 8 | ; $$GETNAMEC - retrieves patient's name components
|
---|
| 9 | ; $$GETADDR - retrieves patient's mailing address
|
---|
| 10 | ; GETSITE - retrieves local station name and number
|
---|
| 11 | ;
|
---|
| 12 | Q ;no direct entry
|
---|
| 13 | ;
|
---|
| 14 | GETICN(DGDFN) ;retrieve patient national ICN
|
---|
| 15 | ; This function retrieves the ICN for a patient if the ICN is
|
---|
| 16 | ; nationally assigned.
|
---|
| 17 | ;
|
---|
| 18 | ; Supported References:
|
---|
| 19 | ; DBIA #2701: $$GETICN^MPIF001, $$IFLOCAL^MPIF001
|
---|
| 20 | ;
|
---|
| 21 | ; Input:
|
---|
| 22 | ; DGDFN - (required) pointer to patient in PATIENT (#2) file
|
---|
| 23 | ;
|
---|
| 24 | ; Output:
|
---|
| 25 | ; Function value - returns National ICN on success, 0 on failure
|
---|
| 26 | ;
|
---|
| 27 | N DGICN
|
---|
| 28 | ;
|
---|
| 29 | S DGICN=0
|
---|
| 30 | I $G(DGDFN)>0,$D(^DPT(DGDFN,0)) D
|
---|
| 31 | . ;
|
---|
| 32 | . S DGICN=$$GETICN^MPIF001(DGDFN)
|
---|
| 33 | . S DGICN=$S(DGICN>0:$P(DGICN,"V",1),1:0)
|
---|
| 34 | . Q:'DGICN
|
---|
| 35 | . ;
|
---|
| 36 | . I $$IFLOCAL^MPIF001(DGDFN) S DGICN=0
|
---|
| 37 | ;
|
---|
| 38 | Q DGICN
|
---|
| 39 | ;
|
---|
| 40 | ;
|
---|
| 41 | GETIDS(DGDFN,DGIDS) ;retrieve patient identifiers
|
---|
| 42 | ; This function retrieves identifying information for a patient
|
---|
| 43 | ; in the PATIENT (#2) file and places it in an array format.
|
---|
| 44 | ;
|
---|
| 45 | ; Supported Reference:
|
---|
| 46 | ; DBIA #10035: Direct global reference of patient's zero
|
---|
| 47 | ; node in the PATIENT (#2) file
|
---|
| 48 | ;
|
---|
| 49 | ; Input:
|
---|
| 50 | ; DGDFN - (required) ien of patient in PATIENT (#2) file
|
---|
| 51 | ;
|
---|
| 52 | ; Output:
|
---|
| 53 | ; Function value - returns 1 on success, 0 on failure
|
---|
| 54 | ; DGIDS - output array containing the patient identifying information,
|
---|
| 55 | ; on success, pass by reference.
|
---|
| 56 | ; Array subscripts are:
|
---|
| 57 | ; "DFN" - ien PATIENT (#2) file
|
---|
| 58 | ; "NAME" - patient name
|
---|
| 59 | ; "SEX" - patient gender ("M"/"F")
|
---|
| 60 | ; "SSN" - patient Social Security Number
|
---|
| 61 | ; "DOB" - patient date of birth (FM format)
|
---|
| 62 | ;
|
---|
| 63 | N DGNODE
|
---|
| 64 | N DGRSLT
|
---|
| 65 | ;
|
---|
| 66 | S DGRSLT=0
|
---|
| 67 | ;
|
---|
| 68 | I $G(DGDFN)>0,$D(^DPT(DGDFN,0)) D
|
---|
| 69 | .
|
---|
| 70 | . ;get zero node of patient record
|
---|
| 71 | . S DGNODE=$G(^DPT(DGDFN,0))
|
---|
| 72 | . ;
|
---|
| 73 | . S DGIDS("DFN")=DGDFN
|
---|
| 74 | . S DGIDS("NAME")=$P(DGNODE,U)
|
---|
| 75 | . S DGIDS("SEX")=$P(DGNODE,U,2)
|
---|
| 76 | . S DGIDS("DOB")=$P(DGNODE,U,3)
|
---|
| 77 | . S DGIDS("SSN")=$P(DGNODE,U,9)
|
---|
| 78 | . S DGRSLT=1 ;success
|
---|
| 79 | ;
|
---|
| 80 | Q DGRSLT
|
---|
| 81 | ;
|
---|
| 82 | ;
|
---|
| 83 | GETNAMC(DGDFN,DGCOMP) ;retrieve name components
|
---|
| 84 | ; This function retrieves a given patient's name components from the
|
---|
| 85 | ; NAME COMPONENT (#20) file and places the components in an array
|
---|
| 86 | ; format. The supported API $$HLNAME^XLFNAME is used to retrieve the
|
---|
| 87 | ; name components, since it is the only supported Name Standardization
|
---|
| 88 | ; api that both reads from the NAME COMPONENT (#20) file and returns a
|
---|
| 89 | ; result that can be easily parsed.
|
---|
| 90 | ;
|
---|
| 91 | ; Supported Reference:
|
---|
| 92 | ; DBIA #3065: $$HLNAME^XLFNAME
|
---|
| 93 | ;
|
---|
| 94 | ; Input:
|
---|
| 95 | ; DGDFN - (required) pointer to patient in PATIENT (#2) file
|
---|
| 96 | ;
|
---|
| 97 | ; Output:
|
---|
| 98 | ; Function value - returns 1 on success, 0 on failure
|
---|
| 99 | ; DGCOMP - name component array on success, pass by reference
|
---|
| 100 | ; Array subscripts are:
|
---|
| 101 | ; "LAST" - Family (last) name
|
---|
| 102 | ; "FIRST" - Given (first) name
|
---|
| 103 | ; "MIDDLE" - Middle name
|
---|
| 104 | ; "SUFFIX" - Name suffix
|
---|
| 105 | ; "PREFIX" - Name prefix
|
---|
| 106 | ;
|
---|
| 107 | N DGSUB ;component array subscripts
|
---|
| 108 | N DGFLD ;component field position
|
---|
| 109 | N DGNAMSTR ;XLFNAME name component string
|
---|
| 110 | N DGPAR ;XLFNAME input parameter array
|
---|
| 111 | N DGRSLT ;function value
|
---|
| 112 | ;
|
---|
| 113 | S DGRSLT=0
|
---|
| 114 | ;
|
---|
| 115 | I $G(DGDFN)>0,$D(^DPT(DGDFN,0)) D
|
---|
| 116 | . S DGFLD=0
|
---|
| 117 | . S DGPAR("FILE")=2,DGPAR("FIELD")=".01",DGPAR("IENS")=DGDFN_","
|
---|
| 118 | . S DGNAMSTR=$$HLNAME^XLFNAME(.DGPAR,,U)
|
---|
| 119 | . F DGSUB="LAST","FIRST","MIDDLE","SUFFIX","PREFIX" D
|
---|
| 120 | . . S DGFLD=DGFLD+1
|
---|
| 121 | . . S DGCOMP(DGSUB)=$P(DGNAMSTR,U,DGFLD)
|
---|
| 122 | . S DGRSLT=1 ;success
|
---|
| 123 | ;
|
---|
| 124 | Q DGRSLT
|
---|
| 125 | ;
|
---|
| 126 | ;
|
---|
| 127 | GETADDR(DGDFN,DGMADR,DGAERR) ;retrieve patient mailing address
|
---|
| 128 | ; This funtion selects the mailing address for a patient from the
|
---|
| 129 | ; available HIPAA confidential address, temporary address, permanent
|
---|
| 130 | ; address. If the BAD ADDRESS INDICATOR (#.121) of the PATIENT file
|
---|
| 131 | ; is set, then the facility address will be selected. The selected
|
---|
| 132 | ; address is placed in an array format.
|
---|
| 133 | ;
|
---|
| 134 | ; Supported Reference:
|
---|
| 135 | ; DBIA #4080: $$BADADR^DGUTL3
|
---|
| 136 | ;
|
---|
| 137 | ; Input:
|
---|
| 138 | ; DGDFN - (required) pointer to patient in PATIENT (#2) file
|
---|
| 139 | ;
|
---|
| 140 | ; Output:
|
---|
| 141 | ; Function value - returns 1 on success, 0 on failure
|
---|
| 142 | ; DGMADR - array of mailing address fields on success, pass by
|
---|
| 143 | ; reference
|
---|
| 144 | ; Array subscripts are:
|
---|
| 145 | ; "STREET1" - line 1 of street address
|
---|
| 146 | ; "STREET2" - line 2 of street address
|
---|
| 147 | ; "STREET3" - line 3 of street address
|
---|
| 148 | ; "CITY" - city
|
---|
| 149 | ; "STATE" - state
|
---|
| 150 | ; "ZIP" - zip code
|
---|
| 151 | ; "ADRTYPE" - address type
|
---|
| 152 | ; [1:perm.; 2:temp.; 3:conf.; 4:facility]
|
---|
| 153 | ; DGAERR - error message text defined on failure, pass by reference
|
---|
| 154 | ;
|
---|
| 155 | N DGADDR ;address array in ADD^VAPDT format
|
---|
| 156 | N DGRSLT ;function value
|
---|
| 157 | N DGTYPE ;address type
|
---|
| 158 | ;
|
---|
| 159 | S DGRSLT=0
|
---|
| 160 | S DGTYPE=0
|
---|
| 161 | ;
|
---|
| 162 | I $G(DGDFN)>0,$D(^DPT(DGDFN,0)) D ;exit block on first error
|
---|
| 163 | . ;
|
---|
| 164 | . ;select between permanent, temporary and confidential addresses
|
---|
| 165 | . S DGTYPE=$$GETPTCA^DGQEUT3(DGDFN,.DGADDR)
|
---|
| 166 | . ;
|
---|
| 167 | . ;get facility address when no address, foreign address, or
|
---|
| 168 | . ;bad address indicator is set
|
---|
| 169 | . I 'DGTYPE!($$ISFRGN^DGQEUT3(.DGADDR))!(+$$BADADR^DGUTL3(DGDFN)>0) D
|
---|
| 170 | . . S DGTYPE=4 ;facility address
|
---|
| 171 | . . I '$$GETFADD^DGQEUT3(.DGADDR) D
|
---|
| 172 | . . . S DGAERR="Unable to retrieve facility address."
|
---|
| 173 | . Q:$D(DGAERR)
|
---|
| 174 | . ;
|
---|
| 175 | . ;load mailing address array with retrieved address
|
---|
| 176 | . S DGMADR("STREET1")=$G(DGADDR(1))
|
---|
| 177 | . S DGMADR("STREET2")=$G(DGADDR(2))
|
---|
| 178 | . S DGMADR("STREET3")=$G(DGADDR(3))
|
---|
| 179 | . S DGMADR("CITY")=$G(DGADDR(4))
|
---|
| 180 | . S DGMADR("STATE")=$G(DGADDR(5))
|
---|
| 181 | . S DGMADR("ZIP")=$G(DGADDR(6))
|
---|
| 182 | . S DGMADR("ADRTYPE")=DGTYPE
|
---|
| 183 | . S DGRSLT=1 ;success
|
---|
| 184 | ;
|
---|
| 185 | Q DGRSLT
|
---|
| 186 | ;
|
---|
| 187 | ;
|
---|
| 188 | GETSITE(DGFAC) ;retrieve the local site station number and name
|
---|
| 189 | ; This procedure retrieves the local site's name and station number
|
---|
| 190 | ; and places them in an array format. A valid DUZ(2) is used to
|
---|
| 191 | ; determine the station number and name. $$SITE^VASITE() is used
|
---|
| 192 | ; when DUZ(2) is undefined or invalid.
|
---|
| 193 | ;
|
---|
| 194 | ; Supported References:
|
---|
| 195 | ; DBIA #2171: $$STA^XUAF4, $$NAME^XUAF4
|
---|
| 196 | ; DBIA #10112: $$SITE^VASITE
|
---|
| 197 | ;
|
---|
| 198 | ; Input:
|
---|
| 199 | ; none
|
---|
| 200 | ;
|
---|
| 201 | ; Output:
|
---|
| 202 | ; DGFAC - array of facility information
|
---|
| 203 | ; Array subscripts are:
|
---|
| 204 | ; "FACNUM" - station number
|
---|
| 205 | ; "FACNAME" - facility name
|
---|
| 206 | ;
|
---|
| 207 | N DGERR
|
---|
| 208 | N DGIEN
|
---|
| 209 | N DGINST ;pointer to INSTITUTION (#4) file
|
---|
| 210 | ;
|
---|
| 211 | I $G(DUZ(2))>0,$D(^DIC(4,DUZ(2))) D
|
---|
| 212 | . S DGINST=DUZ(2)
|
---|
| 213 | E D
|
---|
| 214 | . S DGINST=$P($$SITE^VASITE(),U)
|
---|
| 215 | ;
|
---|
| 216 | S DGFAC("FACNUM")=$$STA^XUAF4(DGINST)
|
---|
| 217 | S DGFAC("FACNAME")=$$NAME^XUAF4(DGINST)
|
---|
| 218 | S DGFAC("VISN")=$$GETVISN(DGINST)
|
---|
| 219 | ;
|
---|
| 220 | Q
|
---|
| 221 | ;
|
---|
| 222 | GETVISN(DGINST) ;retrieve VISN for an institution
|
---|
| 223 | ; This function checks for a "VISN" entry in the ASSOCIATIONS
|
---|
| 224 | ; (#14) multiple field in the INSTITUTION (#4) file for a given
|
---|
| 225 | ; institution. If a "VISN" entry exists, then the PARENT OF ASSOCIATION
|
---|
| 226 | ; (#1) subfield value is returned.
|
---|
| 227 | ;
|
---|
| 228 | ; DBIA: #10090 - Read entire INSTITUTION (#4) file with FileMan
|
---|
| 229 | ;
|
---|
| 230 | ; Input:
|
---|
| 231 | ; DGINST - pointer to INSTITUTION (#4) file
|
---|
| 232 | ;
|
---|
| 233 | ; Output:
|
---|
| 234 | ; Function value - VISN name on success, "" on failure
|
---|
| 235 | ;
|
---|
| 236 | N DGERR ;FM error array
|
---|
| 237 | N DGVISN ;function value
|
---|
| 238 | ;
|
---|
| 239 | S DGVISN=""
|
---|
| 240 | I $G(DGINST),$D(^DIC(4,DGINST)) D
|
---|
| 241 | . S DGIEN=$$FIND1^DIC(4.014,","_DGINST_",","","VISN","B","","DGERR")
|
---|
| 242 | . Q:('DGIEN!($D(DGERR)))
|
---|
| 243 | . ;
|
---|
| 244 | . S DGVISN=$$GET1^DIQ(4.014,DGIEN_","_DGINST_",",1,"E","","DGERR")
|
---|
| 245 | ;
|
---|
| 246 | Q DGVISN
|
---|