DIKKFORM ;SFISC/MKO-ENTRY POINTS FOR THE 'DIKC EDIT' FORM ;11:34 AM 16 Nov 1998 ;;22.0;VA FileMan;;Mar 30, 1999 ;Per VHA Directive 10-93-142, this routine should not be modified. ; ;========================== ; [DIKK EDIT] entry points ;========================== ; PRIOVAL ;Validation on Priority (#1) Q:$P(^DD("KEY",DA,0),U,3)=X N PK I X="P" D . S PK=$O(^DD("KEY","AP",$$GET^DDSVAL(.31,DA,.01),"P",0)) Q:'PK . S DDSERROR=1 . D HLP^DDSUTL($C(7)_"Primary Key '"_$P(^DD("KEY",PK,0),U,2)_"' is already defined on this file.") Q ; UIVAL ;Validation on Uniqueness Index (#3) ;Index must be Regular, used for Lookup/Sorting, have no set/kill ;conditions, and consist only of field-type cross reference values ;with no transforms. Q:X="" N CRV,FIL,FLD,LN0,SS ; ;Check that Index is regular and has no set/kill condition I $P($G(^DD("IX",X,0)),U,4)'="R" D UIERR("Selected index is not a Regular index.") Q 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 D:$G(^DD("IX",X,1.4))'?."^" UIERR("Selected index has a Set Condition.") D:$G(^DD("IX",X,2.4))'?."^" UIERR("Selected index has a Kill Condition.") ; ;Check Cross Reference Values S CRV=0 F S CRV=$O(^DD("IX",X,11.1,CRV)) Q:'CRV D . S LN0=$G(^DD("IX",X,11.1,CRV,0)) . I $P(LN0,U,2)'="F" D UIERR("Selected index has a computed value.") Q . I $G(^DD("IX",X,11.1,CRV,2))'?."^" D UIERR("Selected index has a value with a transform.") Q Q ; UIERR(MSG) ;Set DDSERROR=1 and print MSG N X S DDSERROR=1 D HLP^DDSUTL($C(7)_$G(MSG)) Q ; FORMDV ;Form-Level Data Validation ;In the Fields multiple, check that Sequence Numbers are unique and ;consecutive from 1. ;(Duplicate file/field combinations are checked automatically ;because they're key fields.) N DIKKDA,DIKKI,DIKKLIST,DIKKSQ ; ;Build list ; DIKKLIST(seq#,ien) ;while checking for duplicates ; S DIKKDA(1)=DA S DIKKDA=0 F S DIKKDA=$O(^DD("KEY",DA,2,DIKKDA)) Q:'DIKKDA D . S DIKKSQ=$$GET^DDSVAL(.312,.DIKKDA,1) . I $D(DIKKLIST(DIKKSQ)) D .. D:'$D(DDSERROR) MSG^DDSUTL($C(7)_"UNABLE TO SAVE CHANGES") .. S DDSERROR=1 .. D MSG^DDSUTL("The sequence number "_DIKKSQ_" is used more than once.") . E S DIKKLIST(DIKKSQ,DIKKDA)="" ; ;If no duplicates, check that sequence numbers are consecutive from 1 I '$D(DDSERROR) D . S DIKKSQ=0 . F DIKKI=1:1 S DIKKSQ=$O(DIKKLIST(DIKKSQ)) Q:'DIKKSQ!$G(DDSERROR) D:DIKKSQ'=DIKKI .. S DDSERROR=1 .. D MSG^DDSUTL($C(7)_"UNABLE TO SAVE CHANGES") .. D MSG^DDSUTL("Sequence numbers must be consecutive numbers starting with 1.") Q ; NAMEPAC ;Post-Action on Change for Name of Key N DIKKSD,DIKKUI ; S DIKKUI=$$GET^DDSVAL(.31,DA,3) Q:'DIKKUI S DIKKSD=$$GET^DDSVAL(.11,DIKKUI,.11) Q:DIKKSD'?1"Uniqueness Index for Key '"1A1"'".E ; S $E(DIKKSD,27)=X D PUT^DDSVAL(.11,DIKKUI,.11,DIKKSD) Q