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

SCMCDDR0.m

Go to the documentation of this file.
  1. SCMCDDR0 ;ALB/ART - FileMan FIND^DIC DBS Call for PCMM Web RPCs ;01/22/2014
  1. ;;5.3;Scheduling;**603**;Aug 13, 1993;Build 79
  1. ;
  1. ;This routine was copied from DDR0. PCMM/R needs a new RPC that has .11 APP PROXY ALLOWED set to Yes
  1. ;
  1. ;Public, Supported ICRs
  1. ; #2051 - Database Server API: Lookup Utilities (DIC)
  1. ;
  1. ;DDR0 ;SF/DCM-FileMan Delphi Components' RPCs ;4/28/98 10:52
  1. ;;22.0;VA FileMan;;Mar 30, 1999
  1. ;Per VHA Directive 10-93-142, this routine should not be modified.
  1. ;
  1. QUIT
  1. ;
  1. FINDC(SCDATA,SC) ; -- broker callback to get list data
  1. N SCFILE,SCIENS,SCFLDS,SCFLAGS,SCVAL,SCMAX,SCXREF,SCSCRN,SCID,SCROOT,SCERR,SCRSLT,SCOPT,SCOUT,DIERR
  1. ; -- parse array to parameters
  1. D PARSE(.SC)
  1. S SCOUT=""
  1. D FIND^DIC(SCFILE,SCIENS,SCFLDS,SCFLAGS,SCVAL,SCMAX,SCXREF,SCSCRN,SCID,SCOUT,"SCERR")
  1. I $G(SCFLAGS)["P" D
  1. . Q:'$D(^TMP("DILIST",$J))
  1. . N COUNT S COUNT=^TMP("DILIST",$J,0) Q:'COUNT D 1
  1. . I XWBAPVER>1 S ^(.3)="[MAP]",^TMP("DILIST",$J,.4)=^TMP("DILIST",$J,0,"MAP")
  1. . K ^TMP("DILIST",$J,0) S ^(.5)="[BEGIN_diDATA]",^(COUNT+1)="[END_diDATA]"
  1. . Q
  1. I $G(SCFLAGS)'["P" D
  1. . Q:'$D(^TMP("DILIST",$J))
  1. . N COUNT S COUNT=^TMP("DILIST",$J,0) Q:'COUNT
  1. . D 1,UNPACKED
  1. . Q
  1. D 3,4
  1. Q
  1. 1 Q:'$P(COUNT,U,3)
  1. S ^TMP("DILIST",$J,.1)="[Misc]",^(.2)="MORE"
  1. Q
  1. 3 I $D(DIERR) D ERROR
  1. Q
  1. 4 S SCDATA=$NA(^TMP("DILIST",$J))
  1. Q
  1. PARSE(SC) ; -- array parsing
  1. S SCFILE=$G(SC("FILE"))
  1. S SCIENS=$G(SC("IENS"))
  1. S SCFLDS=$G(SC("FIELDS"))
  1. S SCFLAGS=$G(SC("FLAGS"))
  1. S SCMAX=$G(SC("MAX"),"*")
  1. S SCVAL=$G(SC("VALUE"))
  1. S SCXREF=$G(SC("XREF"))
  1. S SCSCRN=$G(SC("SCREEN"))
  1. S SCID=$G(SC("ID"))
  1. S SCROOT=$G(SC("ROOT"))
  1. S SCOPT=$G(SC("OPTIONS"))
  1. Q
  1. ERROR ;
  1. N I S I=1
  1. D Z("[BEGIN_diERRORS]")
  1. N A S A=0 F S A=$O(SCERR("DIERR",A)) Q:'A D
  1. . N HD,PARAM,B,C,TEXT,TXTCNT,D,FILE,FIELD,IENS,%
  1. . S HD=SCERR("DIERR",A)
  1. . I $D(SCERR("DIERR",A,"PARAM",0)) D
  1. . . S (B,D)=0 F C=1:1 S B=$O(SCERR("DIERR",A,"PARAM",B)) Q:B="" D
  1. . . . I B="FILE" S FILE=SCERR("DIERR",A,"PARAM","FILE")
  1. . . . I B="FIELD" S FIELD=SCERR("DIERR",A,"PARAM","FIELD")
  1. . . . I B="IENS" S IENS=SCERR("DIERR",A,"PARAM","IENS")
  1. . . . S D=D+1,PARAM(D)=B_U_SCERR("DIERR",A,"PARAM",B)
  1. . S C=0 F S C=$O(SCERR("DIERR",A,"TEXT",C)) Q:'C S TEXT(C)=SCERR("DIERR",A,"TEXT",C),TXTCNT=C
  1. . S HD=HD_U_TXTCNT_U_$G(FILE)_U_$G(IENS)_U_$G(FIELD)_U_$G(D) D Z(HD)
  1. . S B=0 F S B=$O(PARAM(B)) Q:'B S %=PARAM(B) D Z(%)
  1. . S B=0 F S B=$O(TEXT(B)) Q:'B S %=TEXT(B) D Z(%)
  1. . Q
  1. D Z("[END_diERRORS]")
  1. Q
  1. Z(%) ;
  1. S ^TMP("DILIST",$J,"ZERR",I)=%,I=I+1
  1. Q
  1. UNPACKED ;
  1. K ^TMP("DILIST",$J,0)
  1. S ^TMP("DILIST",$J,.5)="[BEGIN_diDATA]" K ^TMP("DILIST",$J,1)
  1. S ^TMP("DILIST",$J,2,.1)="BEGIN_IENs",^(COUNT+1)="END_IENs"
  1. I SCFLDS]"",$D(^TMP("DILIST",$J,"ID")) D
  1. . N Z,FLD,FLDCNT S Z=0,FLD="",FLDCNT=0
  1. . F S Z=$O(^TMP("DILIST",$J,"ID",1,Z)) Q:'Z S FLD=FLD_Z_";",FLDCNT=FLDCNT+1
  1. . Q:'FLDCNT
  1. . S ^TMP("DILIST",$J,"ID",0)="BEGIN_IDVALUES",^(.1)=FLD_U_FLDCNT,^(COUNT+1)="END_IDVALUES"
  1. E D
  1. . N Z S Z=0 F S Z=$O(^TMP("DILIST",$J,"ID",Z)) Q:'Z K ^TMP("DILIST",$J,"ID",Z)
  1. I $G(SCOPT)["WID",$D(^TMP("DILIST",$J,"ID","WRITE")) D
  1. . N Z,N,I,IEN,WIDCNT S (N,I)=0
  1. . M Z=^TMP("DILIST",$J,"ID","WRITE") K ^TMP("DILIST",$J,"ID","WRITE")
  1. . S ^TMP("DILIST",$J,"ID","WID",0)="BEGIN_WIDVALUES",N=N+1
  1. . F S I=$O(Z(I)) Q:'I S IEN=$G(^TMP("DILIST",$J,2,I)) D
  1. . . N J S (J,WIDCNT)=0 F S J=$O(Z(I,J)) Q:'J S WIDCNT=WIDCNT+1
  1. . . S ^TMP("DILIST",$J,"ID","WID",N)="WID"_U_IEN_U_WIDCNT,N=N+1
  1. . . N J S J=0 F J=1:1:WIDCNT S ^TMP("DILIST",$J,"ID","WID",N)=Z(I,J),N=N+1
  1. . S ^TMP("DILIST",$J,"ID","WID",N)="END_WIDVALUES"
  1. I $G(SCOPT)'["WID" K ^TMP("DILIST",$J,"ID","WRITE")
  1. S ^TMP("DILIST",$J,"IDZ")="[END_diDATA]"
  1. Q