Annotation of freem_fileman/DICU1.m, revision 1.1.1.1
1.1 snw 1: DICU1 ;SEA/TOAD-VA FileMan: Lookup Tools, Get IDs ;11/4/94 08:33 ;
2: ;;21.0;VA FileMan;;Dec 28, 1994
3: ;Per VHA Directive 10-93-142, this routine should not be modified.
4:
5: IDENTS(DIFILE,DIFIELD,DIROOT,DIDS,DIWRITE,DIDENT)
6: ; ENTRY POINT--return array of identifiers and code to build them
7: ; proc, DIDENT by reference
8: N DICODE,DICRSR,DIDEF,DIEFROM,DIETO
9: N DINODE,DIOUTI,DIPIECE,DISTORE,DITYPE,DIUSEKEY
10: S DIUSEKEY=DIFIELD'=.01!(DIFILE'=$G(DIFILE("INDEX"),DIFILE))
11: S DIDENT=DIUSEKEY*.01
12: I DIDS'="" S DICRSR=1
13: F D Q:DIDENT=""!$G(DIERR)
14: . I 'DIUSEKEY D
15: . . I DIDS'="" S DIDENT=$P(DIDS,";",DICRSR),DICRSR=DICRSR+1 Q
16: . . S DIDENT=$O(^DD(DIFILE,0,"ID",DIDENT)) Q
17: . I DIUSEKEY S DIUSEKEY=0
18: . I DIDENT="" S DIOUTI=1 D Q:DIOUTI
19: . . Q:DIDS=""
20: . . S DIDS=""
21: . . S DIDENT=$O(^DD(DIFILE,0,"ID"," "),-1),DIDENT=$O(^(DIDENT))
22: . . S DIOUTI=DIDENT=""
23: . . Q
24: . I DIDS="",DIFIELD=DIDENT,DIFILE=DIFILE("INDEX") Q
25: IDFIELD .
26: . I DIDENT D Q:$G(DIERR)
27: . . S DINODE=$G(^DD(DIFILE,0,"ID",DIDENT))
28: . . I DIDS="",DINODE="W """"" Q
29: . . D GET(DIFILE,DIDENT,.DIDEF,.DICODE)
30: . . Q:$G(DIERR)
31: . . S DITYPE=$P(DIDEF,U,2)
32: . . I DIDEF="" Q
33: . . S DIDENT(DIDENT)=DICODE
34: . . I DITYPE["D" S DITYPE="D"
35: . . E I DITYPE["S" S DITYPE="S"
36: . . S DIDENT(DIDENT,"TYPE")=DITYPE
37: . . I DITYPE["S" S DIDENT(DIDENT,"CODE")=";"_$P(DIDEF,U,3)
38: . . Q
39: IDWRITE .
40: . E D
41: . . S DICODE=$G(^DD(DIFILE,0,"ID",DIDENT))
42: . . I DICODE'="" S DIDENT(DIDENT)="N DIMSG "_DICODE
43: . . Q
44: . Q
45: Q:$G(DIERR)
46: I DIWRITE'="" S DIDENT("ZZZ ID")="N DIMSG "_DIWRITE
47: Q
48:
49: GET(DIFILE,DIFIELD,DIDEF,DICODE)
50: N DINODE,DIPIECE,DISTORE,DIEFROM,DIETO
51: I DIFIELD=.001 S DICODE="DIEN",DIDEF="" Q
52: S DIDEF=$G(^DD(DIFILE,DIFIELD,0))
53: I DIDEF="" D ERR(501,DIFILE,"","",DIFIELD) Q
54:
55: G1 N DITYPE S DITYPE=$P(DIDEF,U,2)
56: I DITYPE["C"!DITYPE D Q
57: . I DITYPE["C" S DITYPE="Computed"
58: . E D
59: . . I $P($G(^DD(+DITYPE,.01,0)),U,2)["W" S DITYPE="Word-processing"
60: . . E S DITYPE="Multiple"
61: . D ERR(520,DIFILE,"",DIFIELD,DITYPE)
62:
63: G2 S DISTORE=$P(DIDEF,U,4)
64: S DINODE=$P(DISTORE,";")
65: S DIPIECE=$P(DISTORE,";",2)
66: I DINODE="",$P(DIPIECE,"E")'="",'DIPIECE S (DICODE,DIDEF)="" Q
67: S DINODE="$G(@DIROOT@(+DIEN,"""_DINODE_"""))"
68: I DIPIECE S DICODE="$P("_DINODE_",U,"_DIPIECE_")"
69: E D
70: . S DIEFROM=$P($E(DIPIECE,2,9999),",")
71: . S DIETO=$P(DIPIECE,",",2)
72: . S DICODE="$E("_DINODE_","_DIEFROM_","_DIETO_")"
73: Q
74:
75: INDEX(DIFILE,DINDEX,DIROOT)
76: ; lookup data on a file's index
77: S DINDEX("CODE")=""
78: S DINDEX("FIELD")=""
79: S DINDEX("TYPE")=""
80: S DIFILE("INDEX")=$O(^DD(DIFILE,0,"IX",DINDEX,""))
81: I DIFILE("INDEX") D
82: . S DINDEX("FIELD")=$O(^DD(DIFILE,0,"IX",DINDEX,DIFILE("INDEX"),""))
83: I1 I DINDEX("FIELD") N DIXNODE D
84: . N DIXGET
85: . D GET(DIFILE("INDEX"),DINDEX("FIELD"),.DIXNODE,.DIXGET)
86: . S DINDEX("GET")=DIXGET
87: . S DINDEX("TYPE")=$P(DIXNODE,U,2)
88: I DINDEX("TYPE")["D" S DINDEX("TYPE")="D"
89: I DINDEX("TYPE")["S" D
90: . S DINDEX("TYPE")="S"
91: . S DINDEX("CODE")=";"_$P(DIXNODE,U,3)
92: S DINDEX("NODE")=DIXNODE
93: I DINDEX("TYPE")["P" D
94: . S DINDEX("TYPE")="P"
95: . S DINDEX("PTR")=+$P($P(DIXNODE,U,2),"P",2)
96: Q
97:
98: BOTH(DIFILE,DIFLAGS,DIROOT,DINDEX,DIFIELDS,DIWRITE,DIDENT)
99: ; IXANDID^DICL--get index and identifier info
100: D INDEX(.DIFILE,.DINDEX,DIROOT) Q:$G(DIERR)
101: Q:DIFLAGS["f"
102: D IDENTS(.DIFILE,DINDEX("FIELD"),DIROOT,DIFIELDS,DIWRITE,.DIDENT)
103: Q
104:
105: ERR(DIERN,DIFILE,DIENS,DIFIELD,DI1)
106: N DIPE
107: S DIPE("FILE")=$G(DIFILE)
108: S DIPE("IEN")=$G(DIENS)
109: S DIPE("FIELD")=$G(DIFIELD)
110: S DIPE(1)=$G(DI1)
111: D BLD^DIALOG(DIERN,.DIPE,.DIPE)
112: Q
113:
114:
115: FIELD(DIFILE,DIFIELD,DINDEX)
116: ; return code to fetch field value prior to screen execution
117: I DIFIELD=.01 Q "DIKEY"
118: N DISTORE S DISTORE=$P(DINDEX(0,"DEF"),U,4)
119: N DINODE S DINODE=$P(DISTORE,";")
120: N DIPIECE S DIPIECE=$P(DISTORE,";",2)
121: I 'DINODE,$P(DIPIECE,"E")'="",'DIPIECE Q "X"
122: I DINODE=0 S DINODE="DINODE"
123: E S DINODE="$G(@DIROOT@(+DIEN,"""_DINODE_"""))"
124: N DICODE I DIPIECE S DICODE="$P("_DINODE_",U,"_DIPIECE_")"
125: E D
126: . N DIEFROM S DIEFROM=$P($E(DIPIECE,2,9999),",")
127: . N DIETO S DIETO=$P(DIPIECE,",",2)
128: . S DICODE="$E("_DINODE_","_DIEFROM_","_DIETO_")"
129: Q DICODE
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>