DDR1 ;ALB/MJK-FileMan Delphi Components' RPCs ;4/18/97  16:15
 ;;22.2;VA FileMan;;Jan 05, 2016;Build 42
 ;;Per VA Directive 6402, this routine should not be modified.
 ;;Submitted to OSEHRA 5 January 2015 by the VISTA Expertise Network.
 ;;Based on Medsphere Systems Corporation's MSC FileMan 1051.
 ;;Licensed under the terms of the Apache License, Version 2.0.
 ;
 
Q
 
;
DIKC(DDROK,DDR) ; -- broker callback to kill a file entry via ^DIK
 
DIK,DA,FILE,IENS,FDA
 
FILE=$G(DDR("FILE"))
 
IENS=$G(DDR("IENS"))
 
I $$FNO^DILIBF(FILE)=FILE,$L(IENS,",")=2 D  Q
 
DIK=$G(^DIC(FILE,0,"GL")),DA=+IENS ^DIK DDROK=1
 
FDA(FILE,IENS,.01)="@"
 
FILE^DIE("","FDA")
 
DDROK='$G(DIERR)
 
Q
 
;
LOCKC(DDROK,DDR) ; -- broker callback to lock/unlock a node
 
DDRNODE
 
DDRNODE=$G(DDR("NODE"))
 
IF DDRNODE]"" D
 
IF $G(DDR("LOCKMODE")) D
 
. . @("+"_DDRNODE_":"_$G(DDR("TIMEOUT"),5))
 . . 
DDROK=$T
 
ELSE  D
 
. . @("-"_DDRNODE)
 . . 
DDROK=1
 
ELSE  D
 
DDROK=0
 
Q
 
;
FILENOC(DDRFLNO,DDRNAME) ; -- broker callback to get File #
 ;
 
DDRFLNO=+$O(^DIC("B",DDRNAME,""))
 
Q
 
;
NODEC(DDRNODE,DDRROOT) ; -- broker callback to get global node value
 ;
 ;S DDRNODE=$G(@DDRROOT)
 
IF $D(@DDRROOT)=0!($D(@DDRROOT)=10) D
 
DDRNODE="{{"_$D(@DDRROOT)_"}}"
 
IF $D(@DDRROOT)=1!($D(@DDRROOT)=11) D
 
DDRNODE=$G(@DDRROOT)
 
Q
 
;
GLCNT(DDROK,DDR) ; -- extrinsic call to invoke broker to return number of
 ;       global nodes found at cross reference
 
DDRNODE,DDRTEAM,DDRXREF
 
;
 
DDRNODE=$G(DDR("ROOT"))
 
DDRXREF=$G(DDR("XREF"))
 
DDRVAL=$G(DDR("VALUE"))
 
;
 
S:DDRXREF="" DDRXREF="B"
 
I="",X=0
 
F  S I=$O(@DDRNODE@(DDRXREF,DDRVAL,I)) Q:I=""  D
 
X=X+1
 
DDROK=$G(X)
 
Q
 
;
IFNODE(DDRNODE,DDRROOT) ; -- extrinsic call to check if node exists.
 ; passes in full node reference
 
X
 
;
 
IF $D(@DDRROOT)=0!($D(@DDRROOT)=10) D
 
DDRNODE="{{"_$D(@DDRROOT)_"}}"
 
IF $D(@DDRROOT)=1!($D(@DDRROOT)=11) D
 
DDRNODE=$G(@DDRROOT)
 
Q