| [613] | 1 | ROR ;HCIOFO/SG - CLINICAL CASE REGISTRIES ; 6/22/06 3:33pm
 | 
|---|
 | 2 |  ;;1.5;CLINICAL CASE REGISTRIES;**1**;Feb 17, 2006;Build 24
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 |  ; LOCAL VARIABLE ------ DESCRIPTION
 | 
|---|
 | 5 |  ;
 | 
|---|
 | 6 |  ; RORCACHE              In-memory cache
 | 
|---|
 | 7 |  ; RORERRDL              Default error location
 | 
|---|
 | 8 |  ; RORERROR              Error processing data
 | 
|---|
 | 9 |  ; RORPARM               Task-wide constants and variables
 | 
|---|
 | 10 |  ;
 | 
|---|
 | 11 |  ; See the source code of the ^ROR02 routine for more details.
 | 
|---|
 | 12 |  ;
 | 
|---|
 | 13 |  ; ROREXT                Regular data extraction    (See ^ROREXT)
 | 
|---|
 | 14 |  ; RORHDT                Historical data extraction (See ^RORHDT)
 | 
|---|
 | 15 |  ; RORLOG                Log subsystem data         (See ^RORLOG)
 | 
|---|
 | 16 |  ; RORUPD                Registry update parameters (See ^RORUPD)
 | 
|---|
 | 17 |  ;
 | 
|---|
 | 18 |  ; TEMPORARY NODE ------ DESCRIPTION
 | 
|---|
 | 19 |  ;
 | 
|---|
 | 20 |  ; ^TMP("RORHDT")        Control data of historical data extraction
 | 
|---|
 | 21 |  ; ^TMP("RORTMP")        Temporary storage
 | 
|---|
 | 22 |  ; ^TMP("RORUPD")        Registry update temporary data
 | 
|---|
 | 23 |  ;
 | 
|---|
 | 24 |  ; ^TMP(rtn_name)        Temporary storage used by the rtn_name
 | 
|---|
 | 25 |  ;                       routine (mostly, the RPC's)
 | 
|---|
 | 26 |  ;
 | 
|---|
 | 27 |  ; ^TMP($J,"RORTMP-"_)   Generic temporary storage used by ^RORTMP
 | 
|---|
 | 28 |  ;
 | 
|---|
 | 29 |  ; ^XTMP("RORHDT")       Control data of historical data extraction
 | 
|---|
 | 30 |  ; ^XTMP("RORUPDJ")      Registry update temporary data (multitask)
 | 
|---|
 | 31 |  ; ^XTMP("RORUPDR")      Registry update temporary data (installation)
 | 
|---|
 | 32 |  ;
 | 
|---|
 | 33 |  ; See detailed description of the temporary global nodes in
 | 
|---|
 | 34 |  ; the source code of the ^ROR01 routine.
 | 
|---|
 | 35 |  ;
 | 
|---|
 | 36 |  ; NAMESPACE ----------- DESCRIPTION
 | 
|---|
 | 37 |  ;
 | 
|---|
 | 38 |  ; RORAPI*               Supported APIs
 | 
|---|
 | 39 |  ; RORDD*                Routines used by the Data Dictionary
 | 
|---|
 | 40 |  ; RORERR*               Error processing
 | 
|---|
 | 41 |  ; ROREVT*               Event protocols
 | 
|---|
 | 42 |  ; ROREX*                Regular data extraction & transmission
 | 
|---|
 | 43 |  ; RORHDT*               Historical data extraction
 | 
|---|
 | 44 |  ; RORHIV*               HIV registry-specific routines
 | 
|---|
 | 45 |  ; RORHL*                HL7 utilities
 | 
|---|
 | 46 |  ; RORKIDS*              Low-level installation utilities (KIDS)
 | 
|---|
 | 47 |  ; RORLOCK*              Locks and transactions
 | 
|---|
 | 48 |  ; RORLOG*               Error recording
 | 
|---|
 | 49 |  ;
 | 
|---|
 | 50 |  ; RORPnnn*               Patch installation routines (KIDS)
 | 
|---|
 | 51 |  ;                         nnn - patch number
 | 
|---|
 | 52 |  ; RORPUT*               High-level installation utilities
 | 
|---|
 | 53 |  ;
 | 
|---|
 | 54 |  ; RORREP*               Roll-and-scroll reports
 | 
|---|
 | 55 |  ; RORRP*                Remote procedures
 | 
|---|
 | 56 |  ; RORSET*               Registry setup routines
 | 
|---|
 | 57 |  ; RORTXT*               Text resource routines
 | 
|---|
 | 58 |  ; RORUP*                Registry update
 | 
|---|
 | 59 |  ; RORUTL*               Utilities
 | 
|---|
 | 60 |  ; RORVM*                Entry points for VistA menu options
 | 
|---|
 | 61 |  ; RORXnnn*              XML reports (nnn - report code)
 | 
|---|
 | 62 |  ; RORXU*                Utilities for XML reports
 | 
|---|
 | 63 |  ;
 | 
|---|
 | 64 |  ; DIALOG -------------- DESCRIPTION
 | 
|---|
 | 65 |  ;
 | 
|---|
 | 66 |  ; 7980000.*             Various messages and templates
 | 
|---|
 | 67 |  ; 7981???.*             Report templates (XSL)
 | 
|---|
 | 68 |  ;
 | 
|---|
 | 69 |  ; MENU OPTION --------- DESCRIPTION
 | 
|---|
 | 70 |  ;
 | 
|---|
 | 71 |  ; [ROR TASK]            Registry update and data extraction option
 | 
|---|
 | 72 |  ;                       (must be scheduled; do not run it directly)
 | 
|---|
 | 73 |  ; [ROR SETUP]           Registry Setup
 | 
|---|
 | 74 |  ; [RORHDT MAIN]         Historical data extraction menu
 | 
|---|
 | 75 |  ; [RORMNT MAIN]         Maintenance menu
 | 
|---|
 | 76 |  ;
 | 
|---|
 | 77 |  ; SPECIAL ENTRY POINT - DESCRIPTION
 | 
|---|
 | 78 |  ;
 | 
|---|
 | 79 |  ;         ^RORUTL06     Menu for developer's utilities
 | 
|---|
 | 80 |  ; DISTPREP^RORUTL06     Prepares registry for KIDS distribution
 | 
|---|
 | 81 |  ;   PRTMDE^RORUTL06     Prints the data element metadata
 | 
|---|
 | 82 |  ;   VERIFY^RORUTL06     Checks the registry definition
 | 
|---|
 | 83 |  ;
 | 
|---|
 | 84 |  ;  EXTRACT^RORUTL07     Data extraction & transmission in debug mode
 | 
|---|
 | 85 |  ;   UPDATE^RORUTL07     Registry update in debug mode
 | 
|---|
 | 86 |  ;
 | 
|---|
 | 87 |  ; INITIALS ------------ DEVELOPER
 | 
|---|
 | 88 |  ;
 | 
|---|
 | 89 |  ; BH                    Brent Hicks
 | 
|---|
 | 90 |  ; CRT                   Cameron Taylor
 | 
|---|
 | 91 |  ; SG                    Sergey Gavrilov
 | 
|---|
 | 92 |  ;
 | 
|---|
 | 93 |  Q
 | 
|---|
 | 94 |  ;
 | 
|---|
 | 95 |  ;***** RETURNS THE TEST BUILD NUMBER FOR THE DATA EXTRACTION
 | 
|---|
 | 96 | BUILD() ;
 | 
|---|
 | 97 |  Q 1
 | 
|---|
 | 98 |  ;
 | 
|---|
 | 99 |  ;***** REGISTRY UPDATE AND DATA EXTRACTION TASK
 | 
|---|
 | 100 |  ;
 | 
|---|
 | 101 |  ; ZTQPARAM      String that contains a list of registry names
 | 
|---|
 | 102 |  ;               separated by commas. You must define the list as
 | 
|---|
 | 103 |  ;               a value of the TASK PARAMETERS field during
 | 
|---|
 | 104 |  ;               scheduling of the [ROR TASK] option that uses
 | 
|---|
 | 105 |  ;               this entry point.
 | 
|---|
 | 106 |  ;
 | 
|---|
 | 107 |  ; The following task parameters are optional. They can be defined
 | 
|---|
 | 108 |  ; on the second page of the option scheduling form as the pairs of
 | 
|---|
 | 109 |  ; variable names and values. See description of the ROR TASK option
 | 
|---|
 | 110 |  ; for more details regarding these parameters.
 | 
|---|
 | 111 |  ;
 | 
|---|
 | 112 |  ; [RORFLCLR]    Clear flags to control processing (default: "").
 | 
|---|
 | 113 |  ; [RORFLSET]    Set flags to control processing (default: "EX").
 | 
|---|
 | 114 |  ;
 | 
|---|
 | 115 |  ;                 D  Run the task(s) in Debug Mode #1
 | 
|---|
 | 116 |  ;
 | 
|---|
 | 117 |  ;                 E  Use the event references (file #798.3)
 | 
|---|
 | 118 |  ;
 | 
|---|
 | 119 |  ;                 S  Run the data extraction in single-task mode
 | 
|---|
 | 120 |  ;
 | 
|---|
 | 121 |  ;                 X  Suspend the data extraction task in the
 | 
|---|
 | 122 |  ;                    same way as the registry update
 | 
|---|
 | 123 |  ;
 | 
|---|
 | 124 |  ; [RORMNTSK]    Maximum number of the registry update subtasks.
 | 
|---|
 | 125 |  ;               The default value of the parameter is "2-3-AUTO".
 | 
|---|
 | 126 |  ;
 | 
|---|
 | 127 |  ; [RORSUSP]     Suspension parameters of the registry update and
 | 
|---|
 | 128 |  ;               data extraction subtasks. The subtasks are not
 | 
|---|
 | 129 |  ;               suspended by default.
 | 
|---|
 | 130 |  ;
 | 
|---|
 | 131 | TASK ;
 | 
|---|
 | 132 |  N RORERROR      ; Error processing data
 | 
|---|
 | 133 |  N RORLOG        ; Log subsystem constants & variables
 | 
|---|
 | 134 |  N RORPARM       ; Application parameters
 | 
|---|
 | 135 |  ;
 | 
|---|
 | 136 |  N CNT,FLAGS,I,RC,REGLST,REGNAME,RORERRDL  K ZTREQ
 | 
|---|
 | 137 |  ;--- Initialize constants and variables
 | 
|---|
 | 138 |  D INIT^RORUTL01("ROR",1)
 | 
|---|
 | 139 |  D CLEAR^RORERR("TASK^ROR",1)
 | 
|---|
 | 140 |  ;--- Open a new log
 | 
|---|
 | 141 |  S RC=$$SETUP^RORLOG()
 | 
|---|
 | 142 |  S RC=$$OPEN^RORLOG(,7,"ROR TASK STARTED")
 | 
|---|
 | 143 |  ;
 | 
|---|
 | 144 |  ;--- Check and log the task parameters and force the <UNDEF>
 | 
|---|
 | 145 |  ;--- error in case of a missing/invalid critical value
 | 
|---|
 | 146 |  I $$TASKPRMS^ROR10(.REGLST)<0  K ZTQPARAM  S RC=ZTQPARAM
 | 
|---|
 | 147 |  ;--- Clear/Set the flags (override the default value)
 | 
|---|
 | 148 |  S FLAGS=$TR("EX",RORFLCLR_RORFLSET)_RORFLSET
 | 
|---|
 | 149 |  ;--- Associate the log with the registries
 | 
|---|
 | 150 |  S RC=$$SETRGLST^RORLOG(.REGLST)
 | 
|---|
 | 151 |  ;--- Enable debug mode if requested
 | 
|---|
 | 152 |  S:FLAGS["D" RORPARM("DEBUG")=1
 | 
|---|
 | 153 |  ;
 | 
|---|
 | 154 |  ;--- Rebuild the "ACL" cross-reference
 | 
|---|
 | 155 |  S RC=$$RNDXACL^RORUTL11()
 | 
|---|
 | 156 |  ;--- Remove inactive registries from the list
 | 
|---|
 | 157 |  S RC=$$ARLST^RORUTL02(.REGLST)  G:RC<0 ABORT
 | 
|---|
 | 158 |  ;--- Check the status of last HL7 message(s)
 | 
|---|
 | 159 |  S RC=$$CHECKMSG^ROR10(.REGLST)  G:RC<0 ABORT
 | 
|---|
 | 160 |  ;
 | 
|---|
 | 161 |  ;--- Update the registries
 | 
|---|
 | 162 |  S RC=$$UPDATE^RORUPD(.REGLST,RORMNTSK,RORSUSP,FLAGS)
 | 
|---|
 | 163 |  ;--- Process the errors
 | 
|---|
 | 164 |  I RC<0  D  G:RC<0 ABORT
 | 
|---|
 | 165 |  . ;--- Quit if stop is requested (via the TaskMan User option)
 | 
|---|
 | 166 |  . I RC=-42  D ALERT^RORUTL01(.REGLST,-42)  S ZTSTOP=1  Q
 | 
|---|
 | 167 |  . ;--- Do not send the alert for some warnings
 | 
|---|
 | 168 |  . I RC=-28  S RC=0  Q
 | 
|---|
 | 169 |  . ;--- Send the alert in case of other errors/warnings
 | 
|---|
 | 170 |  . D ALERT^RORUTL01(.REGLST,-43,,,,"registry update")
 | 
|---|
 | 171 |  . S RC=0
 | 
|---|
 | 172 |  ;
 | 
|---|
 | 173 |  ;--- Mark registry records 1 month after the installation so that
 | 
|---|
 | 174 |  ;    the local registry data and demographic data will be resent
 | 
|---|
 | 175 |  ;--- to restore the data overwritten with the historical data
 | 
|---|
 | 176 |  S RC=$$REMARK^RORUTL05(.REGLST,31)
 | 
|---|
 | 177 |  ;
 | 
|---|
 | 178 |  ;--- Perform the data extraction
 | 
|---|
 | 179 |  S RC=$$EXTRACT^ROREXT(.REGLST,,RORSUSP,FLAGS)
 | 
|---|
 | 180 |  ;--- Process the errors
 | 
|---|
 | 181 |  I RC<0  D  G:RC<0 ABORT
 | 
|---|
 | 182 |  . ;--- Quit if stop is requested (via the TaskMan User option)
 | 
|---|
 | 183 |  . I RC=-42  D ALERT^RORUTL01(.REGLST,-42)  S ZTSTOP=1  Q
 | 
|---|
 | 184 |  . ;--- Do not send the alert for some warnings
 | 
|---|
 | 185 |  . I RC=-28  S RC=0  Q
 | 
|---|
 | 186 |  . ;--- Send the alert in case of other errors/warnings
 | 
|---|
 | 187 |  . D ALERT^RORUTL01(.REGLST,-43,,,,"data extraction")
 | 
|---|
 | 188 |  . S RC=0
 | 
|---|
 | 189 |  ;
 | 
|---|
 | 190 |  ;--- Purge the old tasks
 | 
|---|
 | 191 |  S RC=$$PURGE^RORTSK02(14)
 | 
|---|
 | 192 |  ;--- Purge the old logs
 | 
|---|
 | 193 |  S RC=$$PURGE^RORLOG01(31)
 | 
|---|
 | 194 |  ;--- Purge the old event references
 | 
|---|
 | 195 |  S RC=$$EPDATE^RORUTL05()
 | 
|---|
 | 196 |  S:RC>0 RC=$$PURGE^RORUPP02(RC)
 | 
|---|
 | 197 |  ;---
 | 
|---|
 | 198 |  S ZTREQ="@"
 | 
|---|
 | 199 | ABORT ;
 | 
|---|
 | 200 |  S I=$S($G(ZTREQ)="@":"COMPLETED",1:"ABORTED")
 | 
|---|
 | 201 |  D CLOSE^RORLOG("ROR TASK "_I)
 | 
|---|
 | 202 |  Q
 | 
|---|