1 | DIKKFORM ;SFISC/MKO-ENTRY POINTS FOR THE 'DIKC EDIT' FORM ;11:34 AM 16 Nov 1998
|
---|
2 | ;;22.0;VA FileMan;;Mar 30, 1999
|
---|
3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ;==========================
|
---|
6 | ; [DIKK EDIT] entry points
|
---|
7 | ;==========================
|
---|
8 | ;
|
---|
9 | PRIOVAL ;Validation on Priority (#1)
|
---|
10 | Q:$P(^DD("KEY",DA,0),U,3)=X
|
---|
11 | N PK
|
---|
12 | I X="P" D
|
---|
13 | . S PK=$O(^DD("KEY","AP",$$GET^DDSVAL(.31,DA,.01),"P",0)) Q:'PK
|
---|
14 | . S DDSERROR=1
|
---|
15 | . D HLP^DDSUTL($C(7)_"Primary Key '"_$P(^DD("KEY",PK,0),U,2)_"' is already defined on this file.")
|
---|
16 | Q
|
---|
17 | ;
|
---|
18 | UIVAL ;Validation on Uniqueness Index (#3)
|
---|
19 | ;Index must be Regular, used for Lookup/Sorting, have no set/kill
|
---|
20 | ;conditions, and consist only of field-type cross reference values
|
---|
21 | ;with no transforms.
|
---|
22 | Q:X=""
|
---|
23 | N CRV,FIL,FLD,LN0,SS
|
---|
24 | ;
|
---|
25 | ;Check that Index is regular and has no set/kill condition
|
---|
26 | I $P($G(^DD("IX",X,0)),U,4)'="R" D UIERR("Selected index is not a Regular index.") Q
|
---|
27 | I $P($G(^DD("IX",X,0)),U,14)'="LS"!($E($P($G(^(0)),U,2))="A") D UIERR("Selected index is not used for Lookup.") Q
|
---|
28 | D:$G(^DD("IX",X,1.4))'?."^" UIERR("Selected index has a Set Condition.")
|
---|
29 | D:$G(^DD("IX",X,2.4))'?."^" UIERR("Selected index has a Kill Condition.")
|
---|
30 | ;
|
---|
31 | ;Check Cross Reference Values
|
---|
32 | S CRV=0 F S CRV=$O(^DD("IX",X,11.1,CRV)) Q:'CRV D
|
---|
33 | . S LN0=$G(^DD("IX",X,11.1,CRV,0))
|
---|
34 | . I $P(LN0,U,2)'="F" D UIERR("Selected index has a computed value.") Q
|
---|
35 | . I $G(^DD("IX",X,11.1,CRV,2))'?."^" D UIERR("Selected index has a value with a transform.") Q
|
---|
36 | Q
|
---|
37 | ;
|
---|
38 | UIERR(MSG) ;Set DDSERROR=1 and print MSG
|
---|
39 | N X
|
---|
40 | S DDSERROR=1
|
---|
41 | D HLP^DDSUTL($C(7)_$G(MSG))
|
---|
42 | Q
|
---|
43 | ;
|
---|
44 | FORMDV ;Form-Level Data Validation
|
---|
45 | ;In the Fields multiple, check that Sequence Numbers are unique and
|
---|
46 | ;consecutive from 1.
|
---|
47 | ;(Duplicate file/field combinations are checked automatically
|
---|
48 | ;because they're key fields.)
|
---|
49 | N DIKKDA,DIKKI,DIKKLIST,DIKKSQ
|
---|
50 | ;
|
---|
51 | ;Build list
|
---|
52 | ; DIKKLIST(seq#,ien)
|
---|
53 | ;while checking for duplicates
|
---|
54 | ;
|
---|
55 | S DIKKDA(1)=DA
|
---|
56 | S DIKKDA=0 F S DIKKDA=$O(^DD("KEY",DA,2,DIKKDA)) Q:'DIKKDA D
|
---|
57 | . S DIKKSQ=$$GET^DDSVAL(.312,.DIKKDA,1)
|
---|
58 | . I $D(DIKKLIST(DIKKSQ)) D
|
---|
59 | .. D:'$D(DDSERROR) MSG^DDSUTL($C(7)_"UNABLE TO SAVE CHANGES")
|
---|
60 | .. S DDSERROR=1
|
---|
61 | .. D MSG^DDSUTL("The sequence number "_DIKKSQ_" is used more than once.")
|
---|
62 | . E S DIKKLIST(DIKKSQ,DIKKDA)=""
|
---|
63 | ;
|
---|
64 | ;If no duplicates, check that sequence numbers are consecutive from 1
|
---|
65 | I '$D(DDSERROR) D
|
---|
66 | . S DIKKSQ=0
|
---|
67 | . F DIKKI=1:1 S DIKKSQ=$O(DIKKLIST(DIKKSQ)) Q:'DIKKSQ!$G(DDSERROR) D:DIKKSQ'=DIKKI
|
---|
68 | .. S DDSERROR=1
|
---|
69 | .. D MSG^DDSUTL($C(7)_"UNABLE TO SAVE CHANGES")
|
---|
70 | .. D MSG^DDSUTL("Sequence numbers must be consecutive numbers starting with 1.")
|
---|
71 | Q
|
---|
72 | ;
|
---|
73 | NAMEPAC ;Post-Action on Change for Name of Key
|
---|
74 | N DIKKSD,DIKKUI
|
---|
75 | ;
|
---|
76 | S DIKKUI=$$GET^DDSVAL(.31,DA,3) Q:'DIKKUI
|
---|
77 | S DIKKSD=$$GET^DDSVAL(.11,DIKKUI,.11)
|
---|
78 | Q:DIKKSD'?1"Uniqueness Index for Key '"1A1"'".E
|
---|
79 | ;
|
---|
80 | S $E(DIKKSD,27)=X
|
---|
81 | D PUT^DDSVAL(.11,DIKKUI,.11,DIKKSD)
|
---|
82 | Q
|
---|