[613] | 1 | RORRP020 ;HCIOFO/SG - RPC: PATIENT DATA UTILITIES ; 5/11/06 2:55pm
|
---|
| 2 | ;;1.5;CLINICAL CASE REGISTRIES;**1**;Feb 17, 2006;Build 24
|
---|
| 3 | ;
|
---|
| 4 | ; This routine uses the following IAs:
|
---|
| 5 | ;
|
---|
| 6 | ; #10035 Fields and x-refs of the PATIENT file (supported)
|
---|
| 7 | ;
|
---|
| 8 | Q
|
---|
| 9 | ;
|
---|
| 10 | ;***** LOADS THE DATA FROM THE 'PATIENT' FILE (#2)
|
---|
| 11 | ;
|
---|
| 12 | ; DFN Patient IEN
|
---|
| 13 | ;
|
---|
| 14 | ; .RORDEM Reference to a local variable where the demographic
|
---|
| 15 | ; information is returned to:
|
---|
| 16 | ;
|
---|
| 17 | ; ^01: Patient IEN (DFN)
|
---|
| 18 | ; ^02: Patient Name
|
---|
| 19 | ; ^03: Date of Birth (FileMan)
|
---|
| 20 | ; ^04: SSN
|
---|
| 21 | ; ^05: Date of Death (FileMan)
|
---|
| 22 | ; ^06: Sex (F/M)
|
---|
| 23 | ;
|
---|
| 24 | ; [.RORADR] Reference to a local variable where the patient's
|
---|
| 25 | ; address is returned to:
|
---|
| 26 | ;
|
---|
| 27 | ; ^01: Address (1)
|
---|
| 28 | ; ^02: Address (2)
|
---|
| 29 | ; ^03: Address (3)
|
---|
| 30 | ; ^04: City
|
---|
| 31 | ; ^05: State (IEN)
|
---|
| 32 | ; ^06: State (Name)
|
---|
| 33 | ; ^07: ZIP
|
---|
| 34 | ; ^08: ZIP+4
|
---|
| 35 | ; ^09: County (IEN)
|
---|
| 36 | ; ^10: County (Name)
|
---|
| 37 | ; ^11: Home Phone
|
---|
| 38 | ;
|
---|
| 39 | ; [.VADM] Reference to a local array that is populated by
|
---|
| 40 | ; the 4^VADM API inside this function
|
---|
| 41 | ;
|
---|
| 42 | ; Return Values:
|
---|
| 43 | ; <0 Error code
|
---|
| 44 | ; 0 Ok
|
---|
| 45 | ;
|
---|
| 46 | LOAD2(DFN,RORDEM,RORADR,VADM) ;
|
---|
| 47 | N I,VA,VAHOW,VAPA,VAROOT D 4^VADPT
|
---|
| 48 | ;--- Demographic information
|
---|
| 49 | S RORDEM=DFN ; DFN
|
---|
| 50 | S $P(RORDEM,U,2)=$G(VADM(1)) ; Name
|
---|
| 51 | S $P(RORDEM,U,3)=$P($G(VADM(3)),U) ; DOB
|
---|
| 52 | S $P(RORDEM,U,4)=$P($G(VADM(2)),U) ; SSN
|
---|
| 53 | S $P(RORDEM,U,5)=$P($G(VADM(6)),U) ; DOD
|
---|
| 54 | S $P(RORDEM,U,6)=$P($G(VADM(5)),U) ; Sex
|
---|
| 55 | ;--- Patient's address
|
---|
| 56 | S RORADR=$G(VAPA(1)) ; Address (1)
|
---|
| 57 | S $P(RORADR,U,2)=$G(VAPA(2)) ; Address (2)
|
---|
| 58 | S $P(RORADR,U,3)=$G(VAPA(3)) ; Address (3)
|
---|
| 59 | S $P(RORADR,U,4)=$G(VAPA(4)) ; City
|
---|
| 60 | S $P(RORADR,U,5)=$P($G(VAPA(5)),U,1) ; State IEN
|
---|
| 61 | S $P(RORADR,U,6)=$P($G(VAPA(5)),U,2) ; State Name
|
---|
| 62 | S $P(RORADR,U,7)=$P($G(VAPA(6)),U,1) ; ZIP
|
---|
| 63 | S $P(RORADR,U,8)=$P($G(VAPA(6)),U,2) ; ZIP+4
|
---|
| 64 | S $P(RORADR,U,9)=$P($G(VAPA(7)),U,1) ; County IEN
|
---|
| 65 | S $P(RORADR,U,10)=$P($G(VAPA(7)),U,2) ; County Name
|
---|
| 66 | S $P(RORADR,U,11)=$G(VAPA(8)) ; Home Phone Number
|
---|
| 67 | Q 0
|
---|
| 68 | ;
|
---|
| 69 | ;***** LOADS THE REGISTRY DATA FOR THE PATIENT
|
---|
| 70 | ;
|
---|
| 71 | ; IEN IEN of the registry record (file #798)
|
---|
| 72 | ;
|
---|
| 73 | ; .ROR8DST Reference to a local variable where the results
|
---|
| 74 | ; are returned to:
|
---|
| 75 | ;
|
---|
| 76 | ; ^01: Date Entered (FileMan)
|
---|
| 77 | ; ^02: Status Code (Field 3, File #798)
|
---|
| 78 | ; ^03: Active (0/1)
|
---|
| 79 | ; ^04: Do not Send (0/1)
|
---|
| 80 | ; ^05: Data Acknowledged Until (FileMan)
|
---|
| 81 | ; ^06: Data Extracted Until (FileMan)
|
---|
| 82 | ; ^07: Date Selected (FileMan)
|
---|
| 83 | ; ^08: Date Confirmed (FileMan)
|
---|
| 84 | ; ^09: Location Selected (Institution Name)
|
---|
| 85 | ; ^10: Description of the Earliest Selection Rule
|
---|
| 86 | ; ^11: reserved
|
---|
| 87 | ; ^12: reserved
|
---|
| 88 | ; ^13: Action Flags (see the description below)
|
---|
| 89 | ;
|
---|
| 90 | ; The Action Flags field indicates the actions that
|
---|
| 91 | ; can be performed on the patient's record in the
|
---|
| 92 | ; registry:
|
---|
| 93 | ;
|
---|
| 94 | ; C CDC form can be edited/printed
|
---|
| 95 | ; D The record can be deleted
|
---|
| 96 | ; E The record can be edited
|
---|
| 97 | ; O Read-only mode
|
---|
| 98 | ;
|
---|
| 99 | ; DOD Date of Death (for deceased patients)
|
---|
| 100 | ;
|
---|
| 101 | ; Return Values:
|
---|
| 102 | ; <0 Error code
|
---|
| 103 | ; 0 Ok
|
---|
| 104 | ;
|
---|
| 105 | LOAD798(IEN,ROR8DST,DOD) ;
|
---|
| 106 | N FLAGS,IENS,RC,RORBUF,RORMSG,TMP
|
---|
| 107 | S ROR8DST=""
|
---|
| 108 | ;
|
---|
| 109 | ;--- Check if the patient is in the registry
|
---|
| 110 | I (IEN'>0)!($D(^RORDATA(798,+IEN))<10) D Q 0
|
---|
| 111 | . S $P(ROR8DST,U,13)=""
|
---|
| 112 | ;
|
---|
| 113 | ;--- Load values from the registry record
|
---|
| 114 | S IENS=(+IEN)_","
|
---|
| 115 | D GETS^DIQ(798,IENS,"1;2;3;8;9.1;9.2;11","I","RORBUF","RORMSG")
|
---|
| 116 | Q:$G(DIERR) $$DBS^RORERR("RORMSG",-9,,,798,IENS)
|
---|
| 117 | ;
|
---|
| 118 | ;--- Registry data
|
---|
| 119 | S ROR8DST=$G(RORBUF(798,IENS,1,"I")) ; DATE ENTERED
|
---|
| 120 | S $P(ROR8DST,U,2)=+$G(RORBUF(798,IENS,3,"I")) ; STATUS
|
---|
| 121 | S $P(ROR8DST,U,3)=+$G(RORBUF(798,IENS,8,"I")) ; ACTIVE
|
---|
| 122 | S $P(ROR8DST,U,4)=+$G(RORBUF(798,IENS,11,"I")) ; DON'T SEND
|
---|
| 123 | S $P(ROR8DST,U,5)=$G(RORBUF(798,IENS,9.1,"I")) ; ACKNOWLEDGED UNTIL
|
---|
| 124 | S $P(ROR8DST,U,6)=$G(RORBUF(798,IENS,9.2,"I")) ; EXTRACTED UNTIL
|
---|
| 125 | S $P(ROR8DST,U,8)=$G(RORBUF(798,IENS,2,"I")) ; DATE CONFIRMED
|
---|
| 126 | ;
|
---|
| 127 | ;--- Earliest selection rule
|
---|
| 128 | S IENS=","_IENS,TMP="@;.01I;1I;2E" K RORBUF
|
---|
| 129 | D LIST^DIC(798.01,IENS,TMP,"PU",1,,,"AD",,,"RORBUF","RORMSG")
|
---|
| 130 | Q:$G(DIERR) $$DBS^RORERR("RORMSG",-9,,,798.01,IENS)
|
---|
| 131 | I $G(RORBUF("DILIST",0))>0 S RC=0 D Q:RC<0 RC
|
---|
| 132 | . S TMP=$G(RORBUF("DILIST",1,0))
|
---|
| 133 | . S $P(ROR8DST,U,7)=$P(TMP,U,3) ; DATE
|
---|
| 134 | . S $P(ROR8DST,U,9)=$P(TMP,U,4) ; LOCATION
|
---|
| 135 | . S IENS=+$P(TMP,U,2)_","
|
---|
| 136 | . S TMP=$$GET1^DIQ(798.2,IENS,4,,,"RORMSG")
|
---|
| 137 | . S:$G(DIERR) RC=$$DBS^RORERR("RORMSG",-9,,,798.2,IENS)
|
---|
| 138 | . S $P(ROR8DST,U,10)=TMP ; SELECTION RULE
|
---|
| 139 | ;
|
---|
| 140 | ;--- Action flags
|
---|
| 141 | ; The actions and modes are enabled/disabled according to the
|
---|
| 142 | ; following table:
|
---|
| 143 | ;-----------------------------------------------------;
|
---|
| 144 | ; Actions ; Status of the patient ;
|
---|
| 145 | ; and ;--------------------------------------;
|
---|
| 146 | ; Modes ;Not Added;Pending;Active;Inactive;Dead;
|
---|
| 147 | ;--------------+---------+-------+------+--------+----;
|
---|
| 148 | ; (C)DC ; D ; D ; ; ; ;
|
---|
| 149 | ; (D)elete ; D ; ; ; ; ;
|
---|
| 150 | ; (E)dit ; D ; ; ; ; ;
|
---|
| 151 | ; Read (O)nly ; ; ; ; ; ;
|
---|
| 152 | ;-----------------------------------------------------;
|
---|
| 153 | ; D the action is disabled if at least one of the marked
|
---|
| 154 | ; conditions is true;
|
---|
| 155 | ;
|
---|
| 156 | ; E the action is enabled if at least one of the marked
|
---|
| 157 | ; conditions is true.
|
---|
| 158 | ;---
|
---|
| 159 | D
|
---|
| 160 | . I $P(ROR8DST,U,2)=4 S FLAGS="DE" Q ; Pending
|
---|
| 161 | . S FLAGS="CDE"
|
---|
| 162 | S $P(ROR8DST,U,13)=FLAGS
|
---|
| 163 | Q 0
|
---|
| 164 | ;
|
---|
| 165 | ;***** PERFORMS THE POST-PROCESSING OF THE LISTS
|
---|
| 166 | ;
|
---|
| 167 | ; RESULTS Closed root of the array that contains the
|
---|
| 168 | ; results of the query
|
---|
| 169 | ;
|
---|
| 170 | ; REGIEN Registry IEN
|
---|
| 171 | ;
|
---|
| 172 | ; FLAGS Flags that control the execution
|
---|
| 173 | ;
|
---|
| 174 | ; Return Values:
|
---|
| 175 | ; <0 Error code
|
---|
| 176 | ; 0 Ok
|
---|
| 177 | ;
|
---|
| 178 | POSTPROC(RESULTS,REGIEN,FLAGS) ;
|
---|
| 179 | N BUF,DOD,FNP,FO,IEN,IR,PATIEN,RC,TMP
|
---|
| 180 | S FNP=($TR(FLAGS,"P")'=FLAGS),FO=(FLAGS["O")
|
---|
| 181 | ;--- Process the resulting records
|
---|
| 182 | S (IR,RC)=0
|
---|
| 183 | F S IR=$O(@RESULTS@(IR)) Q:IR'>0 D Q:RC<0
|
---|
| 184 | . S BUF=$G(@RESULTS@(IR,0)),PATIEN=+$P(BUF,U,2)
|
---|
| 185 | . I PATIEN'>0 S PATIEN=+BUF Q:PATIEN'>0
|
---|
| 186 | . ;--- Load the required fields from the PATIENT file
|
---|
| 187 | . Q:$$LOAD2(PATIEN,.BUF)<0
|
---|
| 188 | . S DOD=$P(BUF,U,5)
|
---|
| 189 | . S @RESULTS@(IR,0)=BUF
|
---|
| 190 | . ;--- Add optional registry fields if necessary
|
---|
| 191 | . I FO D Q:RC<0
|
---|
| 192 | . . ;--- Get the IEN of the registry record
|
---|
| 193 | . . S IEN=$$PRRIEN^RORUTL01(PATIEN,REGIEN)
|
---|
| 194 | . . ;--- Try to load the data from the ROR REGISTRY RECORD file
|
---|
| 195 | . . S RC=$$LOAD798(IEN,.BUF,DOD)
|
---|
| 196 | . . S:RC'<0 @RESULTS@(IR,1)="O^"_BUF
|
---|
| 197 | ;---
|
---|
| 198 | Q $S(RC<0:RC,1:0)
|
---|