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

DIETED.m

Go to the documentation of this file.
  1. DIETED ;SFISC/GFT SCREEN-EDIT AN INPUT TEMPLATE ;22MAY2006
  1. ;;22.0;VA FileMan;**111,159**;Mar 30, 1999;Build 8
  1. ;Per VHA Directive 2004-038, this routine should not be modified.
  1. N DIC,DIET,DRK,DIETED,I,J,DDSCHG
  1. S DIC=.402,DIC(0)="AEQ" D ^DIC Q:Y<1
  1. S DIET=+Y D E
  1. D PUT
  1. K K ^UTILITY("DIETEDIAB",$J),^UTILITY("DIETED",$J)
  1. Q
  1. ;
  1. EDIT(DIET) ; Edit Template using Screen Editor
  1. N DRK,DIETED,I,J
  1. E N DUOUT,DTOUT,DP,DI,D0,DIETROW,DIETEDER,DIETH,DR,F,L,DB
  1. X ^%ZOSF("EON")
  1. I '$D(^DIE(DIET,0)) W !,"NO TEMPLATE SELECTED",! Q
  1. S DIETED="Input Template """_$P(^(0),U)_""""
  1. W "..."
  1. D GET("^TMP(""DIETED"",$J)")
  1. S DIETH="Editing "_DIETED,DIETROW=1,DRK=$P(^DIE(DIET,0),U,4)
  1. DDW D EDIT^DDW("^TMP(""DIETED"",$J)","M",DIETH,"(File "_DRK_")",DIETROW)
  1. I $D(DUOUT)!$D(DTOUT) K DR G KL
  1. D K K I,J
  1. D PROCESS("^TMP(""DIETED"",$J)")
  1. X ^%ZOSF("EON")
  1. S DIETROW=$O(DIETEDER(0)) I DIETROW S DIETH="ERROR! Re-editing "_DIETED K DIETEDER G DDW
  1. S DDSCHG=1
  1. KL K ^TMP("DIETED",$J)
  1. I '$D(DR) W $C(7),$$EZBLD^DIALOG(8077) Q
  1. M ^UTILITY("DIETED",$J)=DR
  1. Q
  1. ;
  1. GET(DIETA,DIT) ;put displayable template into @DIETA
  1. N DIAO,DIETREL,DIETAD,DB,DIAT,I,J,L,DIAR,DIAB
  1. K @DIETA
  1. I '$D(DIT) S DIT=$NA(^DIE(DIET))
  1. S (DR,DIAT)="",(DIETAD,L,DIAO,DB,DIAR)=0,F=-1
  1. S J(0)=$P(@DIT@(0),U,4)
  1. M DI=^("DIAB") S DI=J(0)
  1. D DOWN
  1. 1 S Y=$P(DIAT,";",DB) I "Q"[Y G NDB:Y="" S DB=DB+1 G 1
  1. S %=+Y I Y?.NP,$P(Y,":",2),Y'["/" S Y=+Y_"-"_$P(Y,":",2),%=""
  1. I %_"T~"=Y!(%_"t~"=Y),$P($G(^DD(DI,%,0)),U,2) S Y=% ;HWH-1103-40934 -- ignore TITLE of MULTIPLE
  1. S DIETREL="",DIAB=$G(DI(DB,DIAR-1,DI,DIAO)) E S:Y?1"^".E DIETREL=Y S:DIAB]"" Y=DIAB
  1. I Y?1"]".E S Y=$E(Y,2,999)
  1. I DIAB="",%,$D(^DD(DI,%,0)) S Y=$P(^(0),U)_$P(Y,%,2,999)
  1. S DB=DB+1,DIETAD=DIETAD+1,@DIETA@(DIETAD)=$J("",F*3)_Y I DIETREL]"" D G 1 ;Put it in!
  1. .S L=L\100+1*100,(J(L),DI)=$P(DIETREL,U,2) D DOWN ;Relational jump
  1. I % S %=+$P($G(^DD(DI,%,0)),U,2) I %,$P($G(^DD(%,.01,0)),U,2)'["W" S L=L+1,(J(L),DI)=% D DOWN ;Down to a multiple
  1. I Y="ALL" G UP
  1. G 1
  1. ;
  1. DOWN S F=F+1,DIAR(F)=DIAR,DIAR=DIAR+1,%=$P(DIAT,";",DB) S:%?1"^"1.NP DB=DB+1,DIAR=$P(%,U,2)
  1. S DB(F)=DB,DB=1,DIAO(F)=DIAO,DIAO=0
  1. DIAT S DIAT=$G(@DIT@("DR",DIAR,DI),"ALL") Q
  1. ;
  1. NDB I DIAO'<0 S DIAO=DIAO+1 I $D(@DIT@("DR",DIAR,DI,DIAO)) S DIAT=^(DIAO),DB=1 G 1
  1. S DIAO=-1
  1. UP Q:'F K I(L),J(L) S L=$O(J(L),-1)
  1. S DIAR=DIAR(F),DB=DB(F),DIAO=DIAO(F),DI=J(L),DIAT=$S(DIAO<0:"",DIAO:@DIT@("DR",DIAR,J(L),DIAO),1:$G(@DIT@("DR",DIAR,DI))),F=F-1 G 1
  1. ;
  1. ;
  1. ;
  1. ;
  1. PROCESS(DIETA) ;puts nodes into ^UTILITY("DIETED")
  1. N DIAB,LINE,DXS,L,DIAP,DIETSL,DQI,DIETSAVE,DIETAB,ERR,DIAR
  1. K DR S F=0,(DI,J(0))=DRK,I(0)=^DIC(J(0),0,"GL"),DIAP="",(L,DIETAB)=0,DXS=1,DIAR=1
  1. F LINE=1:1 Q:'$D(@DIETA@(LINE)) K ERR S X=^(LINE) D
  1. .I X?1"^".E S LINE=999999999 K DR Q
  1. .D LINE(X)
  1. .I $D(ERR) W "LINE ",LINE S DIETEDER(LINE)=ERR,LINE=-LINE Q ;stop if we find one error
  1. I LINE<0 W " ERROR!"
  1. Q
  1. ;
  1. LINE(X) ;Process one LINE from the screen
  1. N D,DIC,DICMX,DV,DATE,Y,DICOMPX,DICOMP,DRR
  1. F D=$L(X):-1:1 Q:$A(X,D)>32 S X=$E(X,1,D-1)
  1. F D=0:1 Q:$A(X)-32 S X=$E(X,2,999) ;strip off 'D' leading spaces
  1. Q:X=""
  1. OUT I D<DIETAB,L K I(L),J(L) S L=$O(J(L),-1),DIAP=DIAP(F),DIAR=DIAR(F),DIETAB=$G(DIETAB(F),D),F=F-1,DI=J(L) G OUT ;out-dentation means go up a level (or more)
  1. S DIETAB=D
  1. I X?1"@"1.N S Y=X G DR
  1. ALL D DICS^DIA I X="ALL" D Q
  1. .S ^UTILITY("DIETEDIAB",$J,1,DIAR-1,DI,DIAP\1000)=X
  1. .N D,DA,DG D RANGE^DIA1
  1. S DV="",J=$P(X,"-",2) I +J=J,$P(X,"-")=+X,J>X D G X:Y="",DR
  1. .N D,DA,DG S D(F)=J D RANGE^DIA1 S Y=DA
  1. SEMIC I X[";" S Y=X,X=$P(X,";") D G X:'$D(Y) S DIAB=Y
  1. .F %=2:1:$L(Y,";") S D=$P(Y,";",%),D=$S(D="DUP":"d",D="REQ":"R","""R""d"""[D:"",$A(D)=34:$E(D,2,$F(D,"""",2)-2),D="T":D,1:""),DV=D_$C(126)_DV I $A(D)>45&($A(D)<58)!(D[":")!(D="") K Y Q
  1. DIC S DIC(0)="OZ",DIC="^DD(DI," D ^DIC
  1. I Y>0 S Y=+Y_DV D DR S %=+$P(Y(0),U,2) D:% Q
  1. .I $P($G(^DD(+%,.01,0)),U,2)["W" Q
  1. .S L=L+1,(DI,J(L))=+%,I(L)=""""_$P($P(Y(0),U,4),";")_"""" D D
  1. S (Y,DIETSAVE)=X I DUZ(0)="@",X'?.E1":" S X=$S(X["//^":$P(X,"//^",2),1:X),X=$S(X[";":$P(X,";"),1:X) D ^DIM G:$D(X) DR:X=DIETSAVE I DIETSAVE["//^",'$D(X) G X
  1. F DIETSL="///+","//+","///","//" I DIETSAVE[DIETSL S DP=$P(DIETSAVE,DIETSL,2,9) I DP'?1"/".E&(DP'?1"^".E)!(DUZ(0)="@") G DEF
  1. I DIETSAVE?.E1":" S:'$D(DIAB) DIAB=DIETSAVE K X S X=DIETSAVE,DICOMP=L_"WE",DQI="Y(",DA="DR(99,"_DXS_",",DICMX=1 D ^DICOMPW G L:$D(X) ;as in E^DIA3
  1. X S ERR=1 Q
  1. ;
  1. L I $D(X)>1 M DR(99,DXS)=X S DXS=DXS+1
  1. S %=-1,L=$S(Y>L:+Y,1:L\100+1*100),Y=U_DP_U_U_X_" S X=$S(D(0)>0:D(0),1:"""")" K X
  1. D DR S DI=+DP D D
  1. Q
  1. ;
  1. D N % S F=F+1,DIAR(F)=DIAR F %=F+1:.01 Q:'$D(DR(%,DI))
  1. S:%["." @DRR=@DRR_U_%_";",DIAP=DIAP+1 S DIAR=%
  1. S DIAP(F)=DIAP,DIAP=0,DIETAB(F)=DIETAB Q
  1. ;
  1. DEF S X=DIETSAVE D S X=$P(DIETSAVE,DIETSL),DV=DV_DIETSL_DP G X:DV[";",DIC ;as in DEF^DIA3
  1. .S X="DA,DV,DWLC,0)=X" F J=L:-1 Q:I(J)[U S X="DA("_(L-J+1)_"),"_I(J)_","_X
  1. .S DICMX="S DWLC=DWLC+1,"_I(J)_X,DA="DR(99,"_DXS_",",X=DP,DQI="X(",DICOMP=L_"T"
  1. .D EN^DICOMP,DICS^DIA
  1. XEC .I $D(X),Y["m" S DIC("S")="S %=$P(^(0),U,2) I %,$D(^DD(+%,.01,0)),$P(^(0),U,2)[""W"",$D(^DD(DI,Y,0)) "_DIC("S") ;as in XEC^DIA3
  1. .S Y=0 F S Y=$O(X(Y)) Q:Y="" S @(DA_"Y)=X(Y)")
  1. .S Y=-1 I $D(X) S Y="Q",DXS=DXS+1,DP=U_X D
  1. ..D S:'$D(DIAB) DIAB=DIETSAVE ;assume "YOU MEAN as a VARIABLE"
  1. ...N DIAB D DR
  1. .I DP="@",DIETSL="//" S DA=U_U
  1. .Q
  1. ;
  1. DR ;takes 'Y' and puts it into 'DR' array
  1. N %,B
  1. S (DRR,B)=$NA(DR(DIAR,DI)),%=$O(@DRR@(""),-1)
  1. I % S DRR=$NA(@DRR@(%))
  1. I '$D(@DRR) S @DRR="",DIAP=0
  1. I $L(Y)+$L(@DRR)>230 S DRR=$NA(@B@(%+1)),DIAP=DIAP\1000+1*1000,@DRR=""
  1. S @DRR=@DRR_Y_";"
  1. S DIAP=DIAP+1
  1. DIAB I $D(DIAB) S ^UTILITY("DIETEDIAB",$J,DIAP#1000,DIAR-1,DI,DIAP\1000)=DIAB K DIAB
  1. Q
  1. ;
  1. PUT ;save template
  1. I '$D(^UTILITY("DIETED",$J)) Q
  1. N DIC
  1. S DIC("B")=DIET
  1. SAVEAS S DIC=.402,DIC("A")="Save revised "_DIETED_" as: ",DIC(0)="AEQL",DIC("S")="I $P(^(0),U,4)=DRK"
  1. D ^DIC
  1. Q:Y<0 I $O(^DIE(+Y,0))]"" W !,$C(7),"Are you sure you want to overwrite this '",$P(Y,U,2)," 'Template" S %=1 D YN^DICN I %-1 Q:%<2 K DIC("B") G SAVEAS
  1. L +^DIE(+Y)
  1. S ^DIE("F"_J(0),$P(Y,U,2),+Y)=1
  1. S $P(^DIE(+Y,0),U,4)=J(0)
  1. L -^DIE(+Y)
  1. D SAVEFLDS(+Y)
  1. Q
  1. ;
  1. SAVEFLDS(Y) ;
  1. N X,DP,DMAX
  1. Q:'$D(^UTILITY("DIETED",$J))!'$G(Y)
  1. NOW D NOW^%DTC S $P(^DIE(Y,0),U,2)=+$J(%,0,4)
  1. S $P(^DIE(Y,0),U,5)=$G(DUZ)
  1. K ^DIE(Y,"DR") M ^DIE(+Y,"DR")=^UTILITY("DIETED",$J)
  1. K ^DIE(Y,"DIAB") M ^DIE(+Y,"DIAB")=^UTILITY("DIETEDIAB",$J)
  1. S X=$S('$D(^DIE(+Y,"ROU")):1,^("ROU")'[U:1,$D(^("ROUOLD")):^("ROUOLD"),1:1),DP=+$P(^(0),U,4),DMAX=^DD("ROU") I X'=1,$D(^DD("OS",DISYS,"ZS")) D EN^DIEZ
  1. D K
  1. Q