1 | DIQGDD ;SFISC/DCL-DATA DICTIONARY ATTRIBUTE RETRIEVER ;10:55 AM 8 Nov 2000
|
---|
2 | ;;22.0;VA FileMan;**65**;Mar 30, 1999
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | GET(DIQGR,DA,DR,DIQGPARM,DIQGETA,DIQGERRA,DIQGIPAR) ;
|
---|
5 | EN3 I $G(U)'="^" N U S U="^"
|
---|
6 | I $G(DIQGIPAR)'["A" K DIERR,^TMP("DIERR",$J)
|
---|
7 | I $G(DIQGR)'>0 N X S X(1)="FILE" Q $$F^DIQG(.X,1)
|
---|
8 | I $G(DA)']"" S DA=DIQGR,DIQGR=1 I '$D(^DIC(DA,0)) S X(1)="FILE" Q $$F^DIQG(.X,1)
|
---|
9 | S:DIQGR>1 DIQGPARM=$G(DIQGPARM)_"D"
|
---|
10 | I DA'?.N,$D(^DD(DIQGR,"B",DA)) S DA=$O(^(DA,"")) I $O(^(DA)) D 200 Q ""
|
---|
11 | I DA'>0 D 200 Q ""
|
---|
12 | I DR="FIELD LENGTH" Q $$FL^DIQGDDU(DIQGR,DA)
|
---|
13 | I DR="REQUIRED IDENTIFIERS" G RI^DIQGDDU
|
---|
14 | N DRSV S DRSV=DR N DR
|
---|
15 | S DR=$$ATRBT(DIQGR=1,$G(DRSV)) I 'DR D 202("ATTRIBUTE") Q ""
|
---|
16 | G DDENTRY^DIQG
|
---|
17 | ;
|
---|
18 | FIELD(DIQGR,DA,DR,DIQGPARM,DIQGTA,DIQGERRA,DIQGIPAR) ;
|
---|
19 | EN1 N DIQGERR,DIQGEY,DIQGSAL,DIQGFNUL,DIQGSALX,DIQGTAXX
|
---|
20 | S DIQGEY(1)=$G(DIQGR)
|
---|
21 | I $G(U)'="^" N U S U="^"
|
---|
22 | I $G(DIQGIPAR)'["A" K DIERR,^TMP("DIERR",$J)
|
---|
23 | I $G(DIQGR)'>0 D 202("FILE") Q
|
---|
24 | I $G(DA)']"" D 202("FIELD") Q
|
---|
25 | I $D(^DD(DIQGR,0))[0 D 202("FILE") Q
|
---|
26 | I $G(DIQGTA)']"" D 202("TARGET ARRAY") Q
|
---|
27 | S DIQGPARM=$G(DIQGPARM)_"D",DIQGFNUL=DIQGPARM["N"
|
---|
28 | I DA'?.N,$D(^DD(DIQGR,"B",DA)) S DA=$O(^(DA,"")) I $O(^(DA)) N X S X(1)=DA,X("FILE")=DIQGR D BLD^DIALOG(505,.X),FE Q
|
---|
29 | I DA'>0 S DIQGEY(3)=DA D 200 Q
|
---|
30 | I $D(^DD(DIQGR,DA,0))[0 S DIQGEY(3)=DA D 200 Q
|
---|
31 | D BLDSAL(0,.DR,.DIQGSAL)
|
---|
32 | I '$D(DIQGSAL),'$D(DIERR) D 200 Q
|
---|
33 | I '$D(DIQGSAL) Q
|
---|
34 | S DIQGSAL="" F S DIQGSAL=$O(DIQGSAL(DIQGSAL)) Q:DIQGSAL="" D
|
---|
35 | .S DIQGTAXX=$S('$D(DIQGSAL(DIQGSAL,"#(word-processing)")):DIQGTA,1:$$OREF(DIQGTA)_$$Q(DIQGSAL)_")")
|
---|
36 | .I DIQGSAL="FIELD LENGTH" S DIQGSALX=$$FL^DIQGDDU(DIQGR,DA) G SET
|
---|
37 | .S DIQGSALX=$$GET^DIQG("^DD("_DIQGR_",",DA,DIQGSAL(DIQGSAL),DIQGPARM,DIQGTAXX,"","1A")
|
---|
38 | SET .I DIQGSALX]"" S @DIQGTA@(DIQGSAL)=DIQGSALX Q
|
---|
39 | .Q:DIQGFNUL
|
---|
40 | .S @DIQGTA@(DIQGSAL)=DIQGSALX
|
---|
41 | .Q
|
---|
42 | Q
|
---|
43 | ;
|
---|
44 | BLDSAL(DIQGTYPE,DIQGDR,DIQGVALA) ;DIQGTYPE=1 for FILE and 0 for FIELD, DIQGDR=string/array, DIQGVALA=valid attribute list array
|
---|
45 | ; * If DIQGDR is an array pass by reference *
|
---|
46 | I $G(DIQGDR)="*" D LIST^DIQGDDT($S(DIQGTYPE=1:"FILETXT",1:"FIELDTXT"),.DIQGVALA,"",3) Q
|
---|
47 | N DIQGER,DIQGI,DIQGX,DIQGY D LIST^DIQGDDT($S(DIQGTYPE=1:"FILETXT",1:"FIELDTXT"),.DIQGX,"",3)
|
---|
48 | I $G(DIQGDR)]"" F DIQGI=1:1 S DIQGY=$P(DIQGDR,";",DIQGI) Q:DIQGY="" D
|
---|
49 | .I '$D(DIQGX(DIQGY)) S DIQGER(4)=DIQGY D 200 Q
|
---|
50 | .S DIQGVALA(DIQGY)=DIQGX(DIQGY) S:$D(DIQGX(DIQGY,"#(word-processing)")) DIQGVALA(DIQGY,"#(word-processing)")=DIQGX(DIQGY)
|
---|
51 | Q:$D(DIQGVALA)
|
---|
52 | S DIQGY="" F S DIQGY=$O(DIQGDR(DIQGY)) Q:DIQGY="" D
|
---|
53 | .I '$D(DIQGX(DIQGY)) S DIQGER(4)=DIQGY D 200 Q
|
---|
54 | .S DIQGVALA(DIQGY)=DIQGX(DIQGY) S:$D(DIQGX(DIQGY,"#(word-processing)")) DIQGVALA(DIQGY,"#(word-processing)")=DIQGX(DIQGY)
|
---|
55 | .Q
|
---|
56 | Q
|
---|
57 | ;
|
---|
58 | XDR(DIQGR,DR,DIQGERR) ;DIQGR DD FILE NUMBER EITHER 1 OR 0
|
---|
59 | ;DR IS DR STRING TO CONVERT TO NUMERIC DR STRING
|
---|
60 | S DIQGR=+$G(DIQGR),DR=$G(DR)
|
---|
61 | N I,X,XDR D LIST^DIQGDDT($S(DIQGR=1:"FILETXT",1:"FIELDTXT"),.X,4,3)
|
---|
62 | I $G(DR)]"" S (X,XDR)="" F I=1:1 S X=$P(DR,";",I) Q:X="" D
|
---|
63 | .I '$D(X(X)) S DIQGERR(X)="" Q
|
---|
64 | .S XDR=XDR_X(X)_";" Q
|
---|
65 | I $D(DR)>1 S (X,XDR)="" F S X=$O(DR(X)) Q:X="" D:'$D(X(X)) S:X]"" XDR=XDR_X(X)_";"
|
---|
66 | .I '$D(X(X)) S DIQGERR(X)="" Q
|
---|
67 | .S XDR=XDR_X(X)_";" Q
|
---|
68 | Q XDR
|
---|
69 | ;
|
---|
70 | ATRBT(TYPE,ATRIB) ;EXTRINSIC FUNCTION $$TEST IF VALID ATTRIBUTE
|
---|
71 | ;TYPE 0 OR 1 - FIELD=0, FILE=1 (^DD(0) OR ^DD(1))
|
---|
72 | ;ATRIB=ATTRIBUTE BEING REQUESTED
|
---|
73 | Q:ATRIB']"" 0
|
---|
74 | N X D LIST^DIQGDDT($S(TYPE=1:"FILETXT",1:"FIELDTXT"),.X,,3)
|
---|
75 | Q $G(X(ATRIB))
|
---|
76 | DR(TYPE) ;TYPE=1,FILE OR 0,FIELD AND RETURNS DR STRING FOR ALL ATTRIBUTES IN INTERNAL FORM (ATTRIBUTE FIELD NUMBERS 3RD ;-PIECE
|
---|
77 | S TYPE=+$G(TYPE)
|
---|
78 | N X,Y
|
---|
79 | D LIST^DIQGDDT($S(TYPE=1:"FILETXT",1:"FIELDTXT"),.X,3)
|
---|
80 | S (X,Y)=.01 F S Y=$O(X(Y)) Q:Y'>0 S X=X_";"_Y
|
---|
81 | Q X
|
---|
82 | ;
|
---|
83 | FILELST(DIDARRAY) ;PASS TARGET ARRAY BY REFERENCE * * LIST FILE ATTRIBUTES * *
|
---|
84 | EN4 N EQL,TP,TYPE,DIQGDFLG
|
---|
85 | S TYPE="FILETXT",DIQGDFLG="L"
|
---|
86 | G ENLST^DIQGDDT
|
---|
87 | ;
|
---|
88 | FIELDLST(DIDARRAY) ;PASS TARGET ARRAY BY REFERENCE * * LIST FIELD ATTRIBUTES * *
|
---|
89 | EN5 N EQL,TP,TYPE,DIQGDFLG
|
---|
90 | S TYPE="FIELDTXT",DIQGDFLG="L"
|
---|
91 | G ENLST^DIQGDDT
|
---|
92 | ;
|
---|
93 | OREF(X) N X1,X2 S X1=$P(X,"(")_"(",X2=$$OR2($P(X,"(",2)) Q:X2="" X1 Q X1_X2_","
|
---|
94 | OR2(%) Q:%=")"!(%=",") "" Q:$L(%)=1 % S:"),"[$E(%,$L(%)) %=$E(%,1,$L(%)-1) Q %
|
---|
95 | Q(%Z) S %Z(%Z)="",%Z=$Q(%Z("")) Q $E(%Z,4,$L(%Z)-1)
|
---|
96 | 200 D BLD^DIALOG(200),FE Q
|
---|
97 | 202(E) N X S X(1)=E
|
---|
98 | D BLD^DIALOG(202,.X),FE
|
---|
99 | Q
|
---|
100 | FE I $G(DIQGERRA)]"" D CALLOUT^DIEFU(DIQGERRA)
|
---|
101 | Q
|
---|