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

SDECRPC.m

Go to the documentation of this file.
  1. SDECRPC ;ALB/SAT - VISTA SCHEDULING RPCS ;JAN 15, 2016
  1. ;;5.3;Scheduling;**627**;Aug 13, 1993;Build 249
  1. ;
  1. Q
  1. ;
  1. ;=================================================================
  1. ;
  1. ; Register/unregister RPCs within a given namespace to a context
  1. REGNMSP(NMSP,CTX,DEL) ;EP
  1. N RPC,IEN,LEN
  1. S LEN=$L(NMSP),CTX=+$$GETOPT(CTX)
  1. I $G(DEL) D
  1. .S IEN=0
  1. .F S IEN=$O(^DIC(19,CTX,"RPC","B",IEN)) Q:'IEN D
  1. ..I $E($G(^XWB(8994,IEN,0)),1,LEN)=NMSP,$$REGRPC(IEN,CTX,1)
  1. E D
  1. .Q:LEN<2
  1. .S RPC=NMSP
  1. .F D:$L(RPC) S RPC=$O(^XWB(8994,"B",RPC)) Q:NMSP'=$E(RPC,1,LEN)
  1. ..F IEN=0:0 S IEN=$O(^XWB(8994,"B",RPC,IEN)) Q:'IEN I $$REGRPC(IEN,.CTX)
  1. Q
  1. ; Register/unregister an RPC to/from a context
  1. ; RPC = IEN or name of RPC
  1. ; CTX = IEN or name of context
  1. ; DEL = If nonzero, the RPC is unregistered (defaults to 0)
  1. ; Returns -1 if already registered; 0 if failed; 1 if succeeded
  1. REGRPC(RPC,CTX,DEL) ;EP
  1. S RPC=+$$GETRPC(RPC)
  1. Q $S(RPC<1:0,1:$$REGMULT(19.05,"RPC",RPC,.CTX,.DEL))
  1. ; Add/remove a context to/from the ITEM multiple of another context.
  1. REGCTX(SRC,DST,DEL) ;EP
  1. S SRC=+$$GETOPT(SRC)
  1. Q $S('SRC:0,1:$$REGMULT(19.01,10,SRC,.DST,.DEL))
  1. ; Add/delete an entry to/from a specified OPTION multiple.
  1. ; SFN = Subfile #
  1. ; NOD = Subnode for multiple
  1. ; ITM = Item IEN to add
  1. ; CTX = Option to add to
  1. ; DEL = Delete flag (optional)
  1. REGMULT(SFN,NOD,ITM,CTX,DEL) ;
  1. N FDA,IEN
  1. S CTX=+$$GETOPT(CTX)
  1. S DEL=+$G(DEL)
  1. S IEN=+$O(^DIC(19,CTX,NOD,"B",ITM,0))
  1. Q:'IEN=DEL -1
  1. K ^TMP("DIERR",$J)
  1. I DEL S FDA(SFN,IEN_","_CTX_",",.01)="@"
  1. E S FDA(SFN,"+1,"_CTX_",",.01)=ITM
  1. D UPDATE^DIE("","FDA")
  1. S FDA='$D(^TMP("DIERR",$J)) K ^($J)
  1. Q FDA
  1. ; Register a protocol to an extended action protocol
  1. ; Input: P-Parent protocol
  1. ; C-Child protocol
  1. REGPROT(P,C,ERR) ;EP
  1. N IENARY,PIEN,AIEN,FDA
  1. D
  1. .I '$L(P)!('$L(C)) S ERR="Missing input parameter" Q
  1. .S IENARY(1)=$$FIND1^DIC(101,"","",P)
  1. .S AIEN=$$FIND1^DIC(101,"","",C)
  1. .I 'IENARY(1)!'AIEN S ERR="Unknown protocol name" Q
  1. .S FDA(101.01,"?+2,"_IENARY(1)_",",.01)=AIEN
  1. .D UPDATE^DIE("S","FDA","IENARY","ERR")
  1. Q:$Q $G(ERR)=""
  1. Q
  1. ; Remove nonexistent RPCs from context
  1. CLNRPC(CTX) ;EP
  1. N IEN
  1. S CTX=+$$GETOPT(CTX)
  1. F IEN=0:0 S IEN=$O(^DIC(19,CTX,"RPC","B",IEN)) Q:'IEN D:'$D(^XWB(8994,IEN)) REGRPC(IEN,CTX,1)
  1. Q
  1. ; Return IEN of option
  1. GETOPT(X) ;EP
  1. N Y
  1. Q:X=+X X
  1. S Y=$$FIND1^DIC(19,"","X",X)
  1. W:'Y "Cannot find option "_X,!!
  1. Q Y
  1. ; Return IEN of RPC
  1. GETRPC(X) ;EP
  1. N Y
  1. Q:X=+X X
  1. S Y=$$FIND1^DIC(8994,"","X",X)
  1. W:'Y "Cannot find RPC "_X,!!
  1. Q Y