1 | DICU11 ;SEA/TOAD,SF/TKW-VA FileMan: Lookup Tools, Get IDs & Index ;11/5/99 15:13
|
---|
2 | ;;22.0;VA FileMan;**17**;Mar 30, 1999
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ; Routines called from DICU1
|
---|
6 | ;
|
---|
7 | THROW(DIFLAGS,DIDENT,DIDS,DICRSR,DICOUNT,DIDEFALT,DINDEX,DICF2) ;
|
---|
8 | ;
|
---|
9 | ; Build code into DIDENT array to get external field values
|
---|
10 | ; for indexed fields.
|
---|
11 | ;
|
---|
12 | T1 N DIFORMAT D GETFORM(.DIDENT,.DIFORMAT,.DIDS,.DICOUNT)
|
---|
13 | I DIFORMAT="" S DIFORMAT=DIDEFALT
|
---|
14 | N DIEXP,DISUB,DISUB0,DIMAP S DISUB0=$S(DIDENT["IX":0,1:DIDENT)
|
---|
15 | F DISUB=1:1:DINDEX("#") D
|
---|
16 | . S DIEXP="DINDEX(DISUB)"
|
---|
17 | . I DIFORMAT="I",DIFLAGS[3,"VP"[DINDEX(DISUB,"TYPE") D
|
---|
18 | . . I DISUB>1 S DIEXP="DIVAL" Q
|
---|
19 | . . Q:'$D(DINDEX("ROOTCNG",1))
|
---|
20 | . . S DIEXP="$G(@DINDEX(1,""ROOT"")@(DINDEX(1)))" Q
|
---|
21 | . I DIFORMAT="E",$G(DINDEX(DISUB,"GETEXT")) D
|
---|
22 | . . I DISUB>1,DIFLAGS[4,"VP"[DINDEX(DISUB,"TYPE") S DIEXP="DINDEX(DISUB,""EXT"")" Q
|
---|
23 | . . I DINDEX(DISUB,"GETEXT")=3 S DIEXP="$$TRANOUT(DISUB,"_DIEXP_")" Q
|
---|
24 | . . S:DINDEX(DISUB,"GETEXT")=2 DIEXP="DIVAL"
|
---|
25 | . . S DIEXP=$$FORMAT(DIDENT,DIEXP,0,DIFORMAT,DIDEFALT,DIFLAGS)
|
---|
26 | . . I DINDEX="B" S DIEXP="$S('$D(DIMNEM):"_DIEXP_",1:DINDEX(DISUB))"
|
---|
27 | . . Q
|
---|
28 | . I $G(DICF2) S DIDENT(DICRSR,DISUB0,DISUB,DIFORMAT)=DIEXP Q
|
---|
29 | . I DIFLAGS["P" S DICRSR=DICRSR+1
|
---|
30 | . S DIDENT(DICRSR,DISUB0,DISUB,DIFORMAT)=DIEXP
|
---|
31 | . S DIMAP="IX("_DISUB_")" S:DIFORMAT="I" DIMAP=DIMAP_"I"
|
---|
32 | . I DIFLAGS["P" S $P(DIDENT(-3),U,DICRSR)=DIMAP Q
|
---|
33 | . I DIDENT'=-2 S DIDENT(-3,0,DISUB,DIMAP)=""
|
---|
34 | Q
|
---|
35 | ;
|
---|
36 | GETFORM(DIDENT,DIFORMAT,DIDS,DICOUNT) ;
|
---|
37 | ; Strip E or I off specifier and set into DIFORMAT
|
---|
38 | N DILENGTH S DILENGTH=$L(DIDENT)
|
---|
39 | S DIFORMAT=$E(DIDENT,DILENGTH)
|
---|
40 | I $TR(DIFORMAT,"EI")="" D
|
---|
41 | . N DIFIRST S DIFIRST=$E(DIDENT,DILENGTH-1) I $TR(DIFIRST,"EI")="" D Q
|
---|
42 | . . S $E(DIDENT,DILENGTH-1)="",$P(DIDS,";",DICOUNT)=DIDENT
|
---|
43 | . . S DIFORMAT=DIFIRST,DICOUNT=DICOUNT-1
|
---|
44 | . . S $E(DIDENT,DILENGTH-1)=""
|
---|
45 | . S $E(DIDENT,DILENGTH)=""
|
---|
46 | E S DIFORMAT=""
|
---|
47 | Q
|
---|
48 | ;
|
---|
49 | FORMAT(DIFIELD,DICODE,DIUSEKEY,DIFORMAT,DIDEFALT,DIFLAGS) ;
|
---|
50 | ; Format fetch code to return either internal or external
|
---|
51 | N DIFILE S DIFILE="DIFILE"
|
---|
52 | I DIFIELD'>0 S DIFILE="DINDEX(DISUB,""FILE"")",DIFIELD="DINDEX(DISUB,""FIELD"")"
|
---|
53 | I DIFORMAT="E" D
|
---|
54 | . N F S F="""""" I DIFLAGS["h" S F="""h"""
|
---|
55 | . S DICODE="$$EXTERNAL^DIDU("_DIFILE_","_DIFIELD_","_F_","_DICODE_")"
|
---|
56 | Q DICODE
|
---|
57 | ;
|
---|
58 | WRITEID(DIFILE,DIDENT,DICRSR) ;
|
---|
59 | ; WRITE Identifiers Loop: add WRITE identifiers to output processor:
|
---|
60 | ; for WRITE IDs we save the code as is
|
---|
61 | ;
|
---|
62 | N DICODE
|
---|
63 | S DIDENT=$O(^DD(DIFILE,0,"ID"," "),-1),DIDENT=$O(^(DIDENT))
|
---|
64 | F Q:DIDENT="" D S DIDENT=$O(^DD(DIFILE,0,"ID",DIDENT))
|
---|
65 | . S DICODE=$G(^DD(DIFILE,0,"ID",DIDENT)) Q:DICODE=""
|
---|
66 | . I DIFLAGS["P" S DICRSR=DICRSR+1
|
---|
67 | . S DIDENT(DICRSR,DIDENT,0)="N DIMSG "_DICODE
|
---|
68 | . S:DIFLAGS["P" $P(DIDENT(-3),U,DICRSR)="WID("_DIDENT_")" Q
|
---|
69 | Q
|
---|
70 | ;
|
---|