Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: DIB

DIB.m

Go to the documentation of this file.
  1. DIB ;SFISC/GFT,XAK-CREATE A NEW FILE ;9JUN2003
  1. ;;22.2;VA FileMan;**18**;Jan 05, 2016;Build 2
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. ;;Submitted to OSEHRA 5 January 2015 by the VISTA Expertise Network.
  1. ;;Based on Medsphere Systems Corporation's MSC FileMan 1051.
  1. ;;Licensed under the terms of the Apache License, Version 2.0.
  1. ;
  1. W !! K DLAYGO,DTOUT D W^DICRW G Q:$D(DTOUT) K DICS,DIA Q:Y<0
  1. 1 I '$D(@(DIC_"0)")) W !!,$C(7),"DATA GLOBAL DOES NOT EXIST!" K DIC Q
  1. I $P($G(^DD(+$P(@(DIC_"0)"),U,2),0,"DI")),U,2)["Y" W !!,$C(7),"RESTRICTED"_$S($P(^("DI"),U)["Y":" (ARCHIVE)",1:"")_" FILE - NO EDITING ALLOWED!" Q
  1. S:$D(@(DIC_"0)")) DIA=DIC,X=^(0),(DI,J(0),DIA("P"))=+$P(X,U,2)
  1. D QQ S DR="",(L,DRS,DIAP,DB,DSC)=0,F=-1,I(0)=DIA,DXS=1
  1. D EN^DIA:$O(^DD(DI,.01))>0 I $D(DR) G ^DIA2
  1. Q K DI,DLAYGO,DIA,I,J
  1. QQ K ^UTILITY($J),DIAT,DIAB,DIZ,DIAO,DIAP,DIAA,IOP,DSC,DHIT,DRS,DIE,DR,DA,DG,DIC,F,DP,DQ,DV,DB,DW,D,X,Y,L,DIZZ Q
  1. ;
  1. DIE ;
  1. S F=+Y,(DG,X)="^DIZ("_F_","
  1. I DUZ(0)="@" W !!,"INTERNAL GLOBAL REFERENCE: "_DG R "// ",X:DTIME S:'$T X="^" S:X="" X=DG I X?."?" W !,"TYPE A GLOBAL NAME, LIKE '^GLOBAL(' OR '^GLOBAL(4,'",!,"OR JUST HIT 'RETURN' TO STORE DATA IN '"_DG_"'" G DIE
  1. ;
  1. I X?1"^".E S X=$P(X,U,2,9) I X?.P G ABORT
  1. I X?1.AN W $C(7)_" ??" G DIE
  1. ;
  1. S DG=X
  1. D VALROOT(.X,.%)
  1. I %'=1 G DIE:DUZ(0)="@"&(DG'=X),ABORT
  1. ;
  1. W !
  1. W:DG'=X !?2,"Global reference selected: ^"_X,!
  1. S DG=U_X
  1. ;
  1. SET D WAIT^DICD S $P(^DIC(F,0),U,2)=F,^("%A")=DUZ_U_DT,X=$P(^(0),U,1),^(0,"GL")=DG
  1. I DUZ(0)]"" F %="DD","DEL","RD","WR","LAYGO","AUDIT" S ^DIC(F,0,%)=DUZ(0)
  1. I DUZ(0)'="@",$S($D(^VA(200,"AFOF")):1,1:$D(^DIC(3,"AFOF"))) D SET1
  1. S %="" I @("$D("_DG_"0))") S %=^(0)
  1. S @(DG_"0)=X_U_F_U_$P(%,U,3,9)")
  1. K ^DD(F) S ^(F,0)="FIELD^^.01^1",^DD(F,.01,0)="NAME^RF^^0;1^K:$L(X)>30!(X?.N)!($L(X)<3)!'(X'?1P.E) X"
  1. S ^(3)="Name must be 3-30 characters, not numeric or starting with punctuation" W !?5,"A FreeText NAME Field (#.01) has been created." ;p18
  1. S DA="B",^DD(F,.01,1,0)="^.1",^(1,0)=F_U_DA,X=DG_""""_DA_""",$E(X,1,30),DA)",^(1)="S "_X_"=""""",^(2)="K "_X
  1. S DIK="^DIC(",DA=F D IX1^DIK
  1. S DLAYGO=F,DIK="^DD(DLAYGO,",DA=.01,DA(1)=DLAYGO G IX1^DIK
  1. ;
  1. ABORT ;Delete file and abort
  1. W !!?9,$C(7)_"No new file created!"
  1. S DIK="^DIC(",DA=F
  1. K DG
  1. G ^DIK
  1. ;
  1. VALROOT(X,%) ;Validate the root in X
  1. ;Returns:
  1. ; X = open root
  1. ; % = 0 : invalid root
  1. ; 1 : valid root
  1. ;
  1. N CREF,FNUM,N,OREF,PROMPT,QLEN,ROOT
  1. ;
  1. S (OREF,X)=$$OREF^DILF(X)
  1. S:$E(OREF)=U OREF=$E(OREF,2,999)
  1. ;
  1. ;Check syntax
  1. I OREF?1(1A,1"%").AN1"("
  1. E I OREF?1(1A,1"%").AN1"("1.E1","
  1. E I OREF?1"["1.E1"]"1(1A,1"%").AN1"("
  1. E I OREF?1"["1.E1"]"1(1A,1"%").AN1"("1.E1","
  1. E I OREF?1"|"1.E1"|"1(1A,1"%").AN1"("
  1. E I OREF?1"|"1.E1"|"1(1A,1"%").AN1"("1.E1","
  1. E W $C(7)_" ?? Bad syntax" S %=0 Q
  1. ;
  1. S CREF=U_$$CREF^DILF(OREF)
  1. ;
  1. ;Check whether files stored in ancestors
  1. S %=1
  1. S QLEN=$QL($NA(@CREF))
  1. F N=QLEN:-1:0 D Q:'%
  1. . S ROOT=$NA(@CREF,N)
  1. . Q:ROOT="^DIC"&(N'=QLEN)
  1. . S FNUM=+$P($P($G(@ROOT@(0)),U,2),"E")
  1. . I FNUM D Q:'%
  1. .. S OROOT=$$OREF^DILF(ROOT)
  1. .. I $G(^DIC(FNUM,0,"GL"))=OROOT D
  1. ... W !!,$C(7)_" ERROR -- "_OROOT_" already used by File #"_FNUM_"!"
  1. ... S %=0
  1. . I N=QLEN,$O(@CREF@(0))]"" D
  1. .. W !,$C(7)
  1. .. S PROMPT=" -- ^"_OREF_" already exists!"
  1. .. I DUZ(0)'="@" S %=0 W !," ERROR"_PROMPT
  1. .. E D YN(" WARNING"_PROMPT_" --OK",.%)
  1. Q
  1. ;
  1. YN(PROMPT,%) ;Prompt yes/no
  1. N DIR,DTOUT,DUOUT,DIRUT,DIROUT,X,Y
  1. S DIR(0)="Y"
  1. S:$G(PROMPT)]"" DIR("A")=PROMPT
  1. S DIR("B")="No"
  1. D ^DIR
  1. S %=Y=1
  1. Q
  1. ;
  1. EN ; Enter here when the user is allowed to select his fields
  1. S DIC=DIE S:DIC DIC=$S($D(^DIC(DIC,0,"GL")):^("GL"),1:"")
  1. D 1:DIC]"" K DIC Q
  1. ;
  1. SET1 ;
  1. I $D(^VA(200,"AFOF")) S:'$D(^VA(200,DUZ,"FOF",0)) ^(0)="^200.032PA^"_+F_"^1" S ^(+F,0)=F_"^1^1^1^1^1^1"
  1. I $D(^DIC(3,"AFOF")) S:'$D(^DIC(3,DUZ,"FOF",0)) ^(0)="^3.032PA^"_+F_"^1" S ^(+F,0)=F_"^1^1^1^1^1^1"
  1. S DIK=$S($D(^VA(200)):"^VA(200,DUZ,""FOF"",",1:"^DIC(3,DUZ,""FOF"","),DA=F,DA(1)=DUZ D IX1^DIK
  1. Q