[613] | 1 | RORDD01 ;HCIOFO/SG - DATA DICTIONARY UTILITIES ; 6/14/06 2:07pm
|
---|
| 2 | ;;1.5;CLINICAL CASE REGISTRIES;**1**;Feb 17, 2006;Build 24
|
---|
| 3 | ;
|
---|
| 4 | Q
|
---|
| 5 | ;
|
---|
| 6 | ;***** "AIDSOI" TRIGGER OF THE "AIDS INDICATOR DISEASE" MULTIPLE
|
---|
| 7 | ;
|
---|
| 8 | ; .SDA Reference to a local array of record IENs
|
---|
| 9 | ;
|
---|
| 10 | ; DATE Date of an AIDS indicator disease
|
---|
| 11 | ;
|
---|
| 12 | AIDSOI(SDA,DATE) ;
|
---|
| 13 | N IENS,TMP,RORFDA,RORMSG
|
---|
| 14 | ;--- Do not do anything if the CLINICAL AIDS field is already set
|
---|
| 15 | S IENS=+$G(SDA(1)) Q:IENS'>0 S IENS=IENS_","
|
---|
| 16 | Q:$$GET1^DIQ(799.4,IENS,.02,"I",,"RORMSG")
|
---|
| 17 | ;---
|
---|
| 18 | S DATE=$P(DATE,".")
|
---|
| 19 | I DATE>0 D
|
---|
| 20 | . S:'$E(DATE,4,5) $E(DATE,4,5)="01"
|
---|
| 21 | . S:'$E(DATE,6,7) $E(DATE,6,7)="01"
|
---|
| 22 | E S DATE=$$DT^XLFDT
|
---|
| 23 | ;---
|
---|
| 24 | S RORFDA(799.4,IENS,.02)=1
|
---|
| 25 | S RORFDA(799.4,IENS,.03)=DATE
|
---|
| 26 | D FILE^DIE(,"RORFDA","RORMSG")
|
---|
| 27 | Q
|
---|
| 28 | ;
|
---|
| 29 | ;***** "ANC" INDEX OF THE "REGISTRY NAME" MULTIPLE OF THE FILE #799.6
|
---|
| 30 | ;
|
---|
| 31 | ; .SDA Reference to a local array of record IENs
|
---|
| 32 | ;
|
---|
| 33 | ; REGNAME Registry name
|
---|
| 34 | ;
|
---|
| 35 | ; MODE 1 - Set, 0 - Kill
|
---|
| 36 | ;
|
---|
| 37 | ANC7996(SDA,REGNAME,MODE) ;
|
---|
| 38 | I MODE S MODE=($D(^RORDATA(799.6,SDA(1),3,"ANC"))>1) D
|
---|
| 39 | . S ^RORDATA(799.6,SDA(1),3,"ANC",$E(REGNAME,1,30),SDA)=""
|
---|
| 40 | E D S MODE=($D(^RORDATA(799.6,SDA(1),3,"ANC"))>1)
|
---|
| 41 | . K ^RORDATA(799.6,SDA(1),3,"ANC",$E(REGNAME,1,30),SDA)
|
---|
| 42 | Q:MODE
|
---|
| 43 | ;--- Re-index the main record (the "ADNAUTO" index, in particular)
|
---|
| 44 | N DA,DIK
|
---|
| 45 | S DIK="^RORDATA(799.6,",DIK(1)=".01",DA=SDA(1)
|
---|
| 46 | D EN^DIK
|
---|
| 47 | Q
|
---|
| 48 | ;
|
---|
| 49 | ;***** DELETES THE DATA ASSOCIATED WITH THE MAIN REGISTRY RECORD
|
---|
| 50 | ;
|
---|
| 51 | ; IEN IEN of the registry record (file #798)
|
---|
| 52 | ; PTIEN Patient IEN
|
---|
| 53 | ;
|
---|
| 54 | DEL798(IEN,PTIEN) ;
|
---|
| 55 | N DA,DIK,I,PTDEL
|
---|
| 56 | ;--- Delete the HIV record from the ROR HIV RECORD file (#799.4)
|
---|
| 57 | I $D(^RORDATA(799.4,IEN)) S DIK="^RORDATA(799.4,",DA=IEN D ^DIK
|
---|
| 58 | ;--- Check if the patient is added to more than one registry
|
---|
| 59 | S I="",PTDEL=1
|
---|
| 60 | F S I=$O(^RORDATA(798,"B",PTIEN,I)) Q:I="" S:I'=IEN PTDEL=0
|
---|
| 61 | ;--- Delete corresponding patient's records if they are not
|
---|
| 62 | ; referenced by other registries and the patient's record
|
---|
| 63 | ;--- in the PATIENT file (#2) is not a "merged" one.
|
---|
| 64 | I PTDEL D:$G(^DPT(PTIEN,-9))'>0
|
---|
| 65 | . ;--- Delete the record from the ROR PATIENT file
|
---|
| 66 | . S DIK="^RORDATA(798.4,",DA=PTIEN D ^DIK
|
---|
| 67 | . ;--- Delete the record from the ROR PATIENT EVENTS file
|
---|
| 68 | . S DIK="^RORDATA(798.3,",DA=PTIEN D ^DIK
|
---|
| 69 | Q
|
---|
| 70 | ;
|
---|
| 71 | ;***** RETURNS THE VALUE OF 'DATE SELECTED' COMPUTED FIELD
|
---|
| 72 | ;
|
---|
| 73 | ; IEN IEN of the registry record (file #798)
|
---|
| 74 | ;
|
---|
| 75 | DTSEL(IEN) ;
|
---|
| 76 | N DTSEL
|
---|
| 77 | ;--- Earliest date of a selection rule
|
---|
| 78 | S DTSEL=$O(^RORDATA(798,IEN,1,"AD",""))\1
|
---|
| 79 | ;--- If SELECTION RULE multiple is empty, return DATE ENTERED
|
---|
| 80 | Q $S(DTSEL>0:DTSEL,1:$P($G(^RORDATA(798,IEN,0)),U,3)\1)
|
---|
| 81 | ;
|
---|
| 82 | ;***** STORE THE VALUE INTO THE FIELD
|
---|
| 83 | ;
|
---|
| 84 | ; FILE Sub(file) number
|
---|
| 85 | ; IENS IENS of the record
|
---|
| 86 | ; FIELD Field number
|
---|
| 87 | ; VALUE Internal value to be assigned
|
---|
| 88 | ;
|
---|
| 89 | FILE(FILE,IENS,FIELD,VALUE) ;
|
---|
| 90 | N ROR8FDA,ROR8MSG,TMP
|
---|
| 91 | S TMP=$S($E(IENS,$L(IENS))=",":IENS,1:IENS_",")
|
---|
| 92 | S ROR8FDA(+FILE,TMP,+FIELD)=VALUE
|
---|
| 93 | D FILE^DIE(,"ROR8FDA","ROR8MSG")
|
---|
| 94 | Q
|
---|
| 95 | ;
|
---|
| 96 | ;***** STATUS OF THE HISTORICAL DATA DEFINITION
|
---|
| 97 | ;
|
---|
| 98 | ; HDEIEN IEN of the HDE definition (file #799.6)
|
---|
| 99 | ;
|
---|
| 100 | ; Return Values:
|
---|
| 101 | ; "" Unknown/Undefined
|
---|
| 102 | ; 0 Inactive
|
---|
| 103 | ; 1 Pending/Active
|
---|
| 104 | ; 2 Completed
|
---|
| 105 | ;
|
---|
| 106 | HDESTAT(HDEIEN) ;
|
---|
| 107 | N BUF,STATUS,TYPE
|
---|
| 108 | S HDEIEN=+HDEIEN,BUF=$G(^RORDATA(799.6,HDEIEN,0))
|
---|
| 109 | S TYPE=+$P(BUF,U,2),STATUS=""
|
---|
| 110 | ;=== Auto
|
---|
| 111 | I TYPE=1 D Q STATUS
|
---|
| 112 | . N ADT
|
---|
| 113 | . ;--- Activation Date
|
---|
| 114 | . S ADT=+$P(BUF,U,7)
|
---|
| 115 | . I (ADT'>0)!(ADT<DT) S STATUS=0 Q
|
---|
| 116 | . ;--- Check if all registries have completion dates
|
---|
| 117 | . I $D(^RORDATA(799.6,HDEIEN,3,"ANC"))<10 S STATUS=2 Q
|
---|
| 118 | . ;--- Pending or Active
|
---|
| 119 | . S STATUS=1
|
---|
| 120 | ;=== Manual
|
---|
| 121 | I TYPE=2 D Q STATUS
|
---|
| 122 | . N TSKIEN,TSKSTAT
|
---|
| 123 | . ;--- Check if any tasks are defined
|
---|
| 124 | . I $O(^RORDATA(799.6,HDEIEN,4,0))'>0 S STATUS=0 Q
|
---|
| 125 | . ;--- Check if all tasks have been completed
|
---|
| 126 | . I $D(^RORDATA(799.6,HDEIEN,4,"ANC"))<10 S STATUS=2 Q
|
---|
| 127 | . ;--- Pending, Active, or Errors
|
---|
| 128 | . S STATUS=1
|
---|
| 129 | ;=== Unknown or Undefined
|
---|
| 130 | Q ""
|
---|
| 131 | ;
|
---|
| 132 | ;***** CHECKS IF THE LOCAL REGISTRY FIELD IS ACTIVE
|
---|
| 133 | ;
|
---|
| 134 | ; IEN IEN of the local field definition (file #799.53)
|
---|
| 135 | ;
|
---|
| 136 | ; Return Values:
|
---|
| 137 | ; 0 Inactivated
|
---|
| 138 | ; 1 Active
|
---|
| 139 | ;
|
---|
| 140 | LFACTIVE(IEN) ;
|
---|
| 141 | N TMP
|
---|
| 142 | S TMP=$G(^ROR(799.53,+IEN,0)) Q:TMP="" 0
|
---|
| 143 | S TMP=$P(TMP,U,2)\1 Q:TMP'>0 1
|
---|
| 144 | Q (TMP>DT)
|
---|
| 145 | ;
|
---|
| 146 | ;***** RETURNS THE VALUE OF 'LOCATION' COMPUTED FIELD
|
---|
| 147 | ;
|
---|
| 148 | ; IEN IEN of the registry record (file #798)
|
---|
| 149 | ;
|
---|
| 150 | LOCSEL(IEN) ;
|
---|
| 151 | N DTSEL,SRIEN
|
---|
| 152 | S DTSEL=$O(^RORDATA(798,IEN,1,"AD","")) Q:DTSEL'>0 ""
|
---|
| 153 | S SRIEN=$O(^RORDATA(798,IEN,1,"AD",DTSEL,""))
|
---|
| 154 | Q $S(SRIEN>0:$P($G(^RORDATA(798,IEN,1,SRIEN,0)),U,3),1:"")
|
---|
| 155 | ;
|
---|
| 156 | ;***** RE-INDEXES ONE RECORD OF THE (SUB)FILE
|
---|
| 157 | ;
|
---|
| 158 | ; FILE File number
|
---|
| 159 | ;
|
---|
| 160 | ; .DA Reference to a local array of record IENs
|
---|
| 161 | ;
|
---|
| 162 | ; [FIELD] Optional field number. If it is provided, then only
|
---|
| 163 | ; cross-references for this field are re-indexed.
|
---|
| 164 | ;
|
---|
| 165 | REINDEX1(FILE,DA,FIELD) ;
|
---|
| 166 | N DIK
|
---|
| 167 | S DIK=$$ROOT^DILFD(FILE,$$IENS^DILF(.DA))
|
---|
| 168 | S:$G(FIELD)>0 DIK(1)=+FIELD
|
---|
| 169 | D EN^DIK
|
---|
| 170 | Q
|
---|
| 171 | ;
|
---|
| 172 | ;***** REACTS ON THE REGISTRY RECORD STATUS CHANGES
|
---|
| 173 | ;
|
---|
| 174 | ; MODE Execution mode (1 - Set, 2 - Kill)
|
---|
| 175 | ;
|
---|
| 176 | ; IEN Internal entry number of the registry record
|
---|
| 177 | ;
|
---|
| 178 | ; STOLD Old and new internal values of the STATUS field
|
---|
| 179 | ; STNEW
|
---|
| 180 | ;
|
---|
| 181 | RST798(MODE,IEN,STOLD,STNEW) ;
|
---|
| 182 | Q:STNEW=STOLD
|
---|
| 183 | N IENS,RORFDA,RORMSG
|
---|
| 184 | S IENS=(+IEN)_","
|
---|
| 185 | ;---
|
---|
| 186 | D
|
---|
| 187 | . ;--- Deleted
|
---|
| 188 | . I STNEW=5 D Q
|
---|
| 189 | . . S RORFDA(798,IENS,6)=$$NOW^XLFDT
|
---|
| 190 | . . S:$G(DUZ)>0 RORFDA(798,IENS,6.1)=+DUZ
|
---|
| 191 | . ;--- Confirmed
|
---|
| 192 | . I STOLD=4,'STNEW D Q
|
---|
| 193 | . . S RORFDA(798,IENS,2)=$$NOW^XLFDT
|
---|
| 194 | . . S:$G(DUZ)>0 RORFDA(798,IENS,2.1)=+DUZ
|
---|
| 195 | ;---
|
---|
| 196 | D:$D(RORFDA)>1 FILE^DIE(,"RORFDA","RORMSG")
|
---|
| 197 | Q
|
---|
| 198 | ;
|
---|
| 199 | ;***** GENERATES THE INDEX VALUE OF THE REPORT ELEMENT
|
---|
| 200 | ;
|
---|
| 201 | ; MODE Sort mode (see the SORT BY field of the REPORT
|
---|
| 202 | ; ELEMENT multiple of the ROR TASK file for details)
|
---|
| 203 | ; VAL Value of the report element
|
---|
| 204 | ;
|
---|
| 205 | SORTBY(MODE,VAL) ;
|
---|
| 206 | Q $S(MODE=3:+VAL,VAL="":" ",MODE=2:$E(VAL,1,29)_" ",1:$E(VAL,1,30))
|
---|