Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: RORRP012

RORRP012.m

Go to the documentation of this file.
RORRP012 ;HCIOFO/SG - RPC: MISCELLANEOUS ; 12/15/05 4:03pm
 ;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006
 ;
 Q
 ;
 ;***** RETURNS THE CURRENT DATE/TIME ON THE SERVER
 ; RPC: [ROR GET SERVER TIME]
 ;
 ; .RESULTS      Reference to a local variable where the results
 ;               are returned to.
 ;
 ; Return Values:
 ;
 ; The current dat/time (in internal FileMan format) is returned
 ; in the RESULTS(1). RESULTS(0) alwais contains 0.
 ;
GETSRVDT(RESULTS) ;
 S RESULTS(0)=0
 S RESULTS(1)=$$NOW^XLFDT
 Q
 ;
 ;***** RETURNS A LIST OF ITEMS FROM THE 'ROR LIST ITEM' FILE
 ; RPC: [ROR LIST ITEMS]
 ;
 ; .RESULTS      Reference to a local variable where the results
 ;               are returned to.
 ;
 ; REGIEN        Registry IEN
 ;
 ; TYPE          Type of the items:
 ;                 3  Lab Group
 ;                 4  Drug Group
 ;
 ; 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, number of items is returned in the RESULTS(0)
 ; and the subsequent nodes of the array contain the items.
 ; 
 ; RESULTS(0)            Number of item
 ;
 ; RESULTS(i)            List Item
 ;                         ^01: IEN
 ;                         ^02: Text
 ;                         ^03: Code
 ;
LSTITEMS(RESULTS,REGIEN,TYPE) ;
 N CNT,CODE,ITEMS,RC,RORERRDL
 D CLEAR^RORERR("LSTITEMS^RORRP012",1)
 K RESULTS  S RESULTS(0)=0
 ;--- Check the parameters
 S RC=0  D  I RC<0  D RPCSTK^RORERR(.RESULTS,RC)  Q
 . ;--- Registry IEN
 . I $G(REGIEN)'>0  D  Q
 . . S RC=$$ERROR^RORERR(-88,,,,"REGIEN",$G(REGIEN))
 . S REGIEN=+REGIEN
 . ;--- Type
 . I $G(TYPE)'>0  D  Q
 . . S RC=$$ERROR^RORERR(-88,,,,"TYPE",$G(TYPE))
 . S TYPE=+TYPE
 ;--- Load the list items
 S RC=$$ITEMLIST^RORUTL09(TYPE,REGIEN,.ITEMS)
 ;--- Populate the output array
 S CODE="",CNT=0
 F  S CODE=$O(ITEMS(CODE))  Q:CODE=""  D
 . S CNT=CNT+1,RESULTS(CNT)=$P(ITEMS(CODE),U,1,2)
 . S $P(RESULTS(CNT),U,3)=CODE
 S RESULTS(0)=CNT
 Q
 ;
 ;***** CHECKS FOR PRODUCTION ACCOUNT
 ; RPC: [ROR PRODUCTION ACCOUNT]
 ;
 ; .RESULTS      Reference to a local variable where the results
 ;               are returned to.
 ;
 ; Return Values:
 ;
 ; 1 is returned in RESULTS(0) in case of a production account.
 ; Otherwise, zero is returned.
 ;
PROD(RESULTS) ;
 S RESULTS(0)=+$$PROD^XUPROD()
 Q
 ;
 ;***** CHECKS IF THE RESCHEDULING CODE IS VALID
 ; ROR: [ROR TASK VALIDATE RESCHEDULING]
 ;
 ; .RESULTS      Reference to a local variable where the results
 ;               are returned to.
 ;
 ; SCHCODE       Rescheduling code
 ;
 ; [SCHDT]       Date when a task is scheduled to run for the
 ;               first time (FileMan). By default (if $G(SCHDT)'>0),
 ;               the current date/time is used.
 ;
 ; 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, either 1 (the rescheduling code is valid) or 0 (the
 ; code is not valid) is returned in the RESULTS(0). If the code is
 ; valid then the next date/time to run the task (FileMan format)
 ; is returned in the RESULTS(1).
 ;
VALIDSCH(RESULTS,SCHCODE,SCHDT) ;
 N NEXT,RORMSG,TMP  K RESULTS
 I $G(SCHCODE)=""  S RESULTS(0)=1  Q
 S RESULTS(0)=0
 ;--- Check if the rescheduling code is correct
 S:$G(SCHDT)'>0 SCHDT=$$NOW^XLFDT
 S NEXT=$$SCH^XLFDT(SCHCODE,SCHDT,1)
 Q:NEXT'>0
 ;--- Make sure that a task will not be rescheduled in less
 ;--- than 60 seconds (to be able to delete it if necessary)
 S TMP=$$SCH^XLFDT(SCHCODE,NEXT,1)
 S:$$FMDIFF^XLFDT(TMP,NEXT,2)'<60 RESULTS(0)=1,RESULTS(1)=NEXT
 Q