VistA-FOIAVistA/r/CLINICAL_CASE_REGISTRIES-ROR/RORRP010.m

187 lines
6.3 KiB
Mathematica

RORRP010 ;HCIOFO/SG - RPC: TASK MANAGER ; 10/5/05 11:12am
;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006
;
Q
;
;***** DELETES THE TASK
; RPC: [ROR TASK DELETE]
;
; .RESULTS Reference to a local variable where the results
; are returned to.
;
; TASK Task number
;
; Return Values:
;
; A negative value of the first "^"-piece of the RESULTS(0) indicates
; an error (see the RPCSTK^RORERR procedure for more details).
;
; Otherwise, zero is returned.
;
DELTASK(RESULTS,TASK) ;
N RORERRDL K RESULTS
D CLEAR^RORERR("DELTASK^RORRP010",1)
S RESULTS=$$DEQUEUE^RORTSK(TASK,1)
D:RESULTS<0 RPCSTK^RORERR(.RESULTS,RESULTS)
Q
;
;***** SCHEDULES THE REPORT
; RPC: [ROR REPORT SCHEDULE]
;
; .RESULTS Reference to a local variable where the results
; are returned to.
;
; RPTCODE Code of the report
;
; [REGIEN] Registry IEN (if $G(REGIEN)'>0 the task will not
; be associated with any particular registry).
;
; [ZTDTH] Date/time to start the task (FileMan). By default
; (if $G(ZDTH)'>0) the task will be scheduled to run
; immediately (see the $$CREATE^RORTSK for details).
;
; [SCHCODE] Rescheduling code for the task. By default (if
; $G(SCHCODE)=""), the task is executed once. See
; description of the $$SCH^XLFDT function for
; possible values of the parameter).
;
; [.PARAMS] Reference to a local variable that contains report
; parameters in XML format.
;
; Return Values:
;
; A negative value of the first "^"-piece of the RESULTS(0) indicates
; an error (see the RPCSTK^RORERR procedure for more details).
;
; Otherwise, the task descriptor is returned in the RESULTS array
; (see the TASKINFO^RORRP010 entry point for details).
;
SCHEDREP(RESULTS,RPTCODE,REGIEN,ZTDTH,SCHCODE,PARAMS) ;
N RORERRDL,RPINFO,TASK,TMP,TSKPRM
N ZTCPU,ZTDESC,ZTIO,ZTKIL,ZTPRI,ZTSAVE,ZTSYNC,ZTUCI
D CLEAR^RORERR("SCHEDREP^RORRP010",1)
S REGIEN=+$G(REGIEN),SCHCODE=$G(SCHCODE)
;--- Get the report descriptor
S RC=$$RPINFO^RORUTL08(RPTCODE,.RPINFO)
I RC<0 D RPCSTK^RORERR(.RESULTS,RC) Q
;--- Parse the report parameters
S RC=$$PARSEPRM^RORTSK13(.PARAMS,.TSKPRM)
;--- Create the task
S TASK=$$CREATE^RORTSK(2,RPINFO(9),,REGIEN,RPTCODE,SCHCODE,.TSKPRM)
I TASK<0 D RPCSTK^RORERR(.RESULTS,TASK) Q
;--- Get the status
D TASKINFO(.RESULTS,TASK)
Q
;
;***** RETURNS THE TASK INFORMATION
; RPC: [ROR TASK INFO]
;
; .RESULTS Reference to a local variable where the results
; are returned to.
;
; TASK Task number
;
; Return Values:
;
; A negative value of the first "^"-piece of the RESULTS(0) indicates
; an error (see the RPCSTK^RORERR procedure for more details).
;
; Otherwise, the task descriptor is returned in the RESULTS array
; (see the $$TASKINFO^RORTSK02 function for more details).
;
; RESULTS(0) Result Descriptor
; ^1: 1
; ^2: Number of nodes that make a single
; task descriptor (TIN)
;
; RESULTS(1) Task Number
; RESULTS(2) Task Type (internal^external)
; RESULTS(3) Registry (IEN^Name)
; RESULTS(4) Report (Code^Name)
; RESULTS(5) Description
; RESULTS(6) Task Status (internal^external)
; RESULTS(7) Creation Time (internal)
; RESULTS(8) User (DUZ^Name)
; RESULTS(9) Completion Time (internal)
; RESULTS(10) Progress Percentage
; RESULTS(11) Scheduled to Run at (internal)
; RESULTS(12) Task Log IEN
; RESULTS(13) Job Number
;
TASKINFO(RESULTS,TASK) ;
N RC,RORERRDL
D CLEAR^RORERR("TASKINFO^RORRP010",1)
S RC=$$TASKINFO^RORTSK02(TASK,.RESULTS,"EI")
I RC'<0 S RESULTS(0)="1^"_$$TIN^RORTSK02
E D RPCSTK^RORERR(.RESULTS,RC)
Q
;
;***** RETURNS A LIST OF USER'S TASKS
; RPC: [ROR TASK LIST]
;
; .RESULTS Reference to a local variable where the results
; are returned to.
;
; [REGIEN] Registry IEN (all registries by default)
; [TYPE] Task Type (all types by default)
; [USER] User IEN (DUZ by default)
;
; Return Values:
;
; A negative value of the first "^"-piece of the RESULTS(0) indicates
; an error (see the RPCSTK^RORERR procedure for more details).
;
; Otherwise, the task descriptors are returned in the RESULTS array
; (see the TASKINFO^RORRP010 entry point for details).
;
; @RESULTS@(0) Result Descriptor
; ^01: Number of task descriptors returned
; in the RESULTS array (NTSK)
; ^02: Number of nodes that make a single
; task descriptor (TIN)
;
; @RESULTS@(i) Value returned by the $$TASKINFO^RORTSK02
; function. You can calculate the subscript
; of the item TI (from 1 to TIN) of the task
; TN (from 1 to NTSK) using the following
; formula: i = (TN-1)*TIN+TI.
;
; For example, if number of nodes returned by the $$TASKINFO^RORTSK02
; function for each task is 13 and the RESULTS array contains
; information about 3 tasks, the following nodes will be defined:
;
; @RESULTS@(0) = "3^13"
;
; @RESULTS@(1) = Task Number 1
; @RESULTS@(2) = Task Type 1 (internal^external)
; ...
; @RESULTS@(13) = Job Number 1
;
; @RESULTS@(14) = Task Number 2
; @RESULTS@(15) = Task Type 2 (internal^external)
; ...
; @RESULTS@(26) = Job Number 2
;
; @RESULTS@(27) = Task Number 3
; @RESULTS@(28) = Task Type 3 (internal^external)
; ...
; @RESULTS@(39) = Job Number 3
;
TASKLIST(RESULTS,REGIEN,TYPE,USER) ;
N INFO,NTSK,RC,RORERRDL,TASK,TASKLIST,TIN
D CLEAR^RORERR("TASKLIST^RORRP010",1)
;--- Initialize the variables
K RESULTS S RESULTS=$$ALLOC^RORTMP()
S TIN=$$TIN^RORTSK02
;--- Get the list of task numbers
S RC=$$LIST^RORTSK02(.TASKLIST,$G(REGIEN),$G(TYPE),,,$G(USER))
I RC<0 D RPCSTK^RORERR(.RESULTS,RC) Q
;--- Generate the output list
S TASK="",NTSK=0
F S TASK=$O(TASKLIST(TASK)) Q:TASK="" D
. K INFO
. S RC=$$TASKINFO^RORTSK02(TASK,.INFO,"EI",NTSK*TIN) Q:RC<0
. M @RESULTS=INFO S NTSK=NTSK+1
S @RESULTS@(0)=NTSK_U_TIN
Q