| 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
 | 
|---|