DIA1 ;SFISC/GFT-PROCESS TEMPLATES, RANGES FOR INPUT ;22JUL2014
;;22.2;VA FileMan;;Jan 05, 2016;Build 42
;;Per VA Directive 6402, this routine should not be modified.
;;Submitted to OSEHRA 5 January 2015 by the VISTA Expertise Network.
;;Based on Medsphere Systems Corporation's MSC FileMan 1051.
;;Licensed under the terms of the Apache License, Version 2.0.
;
S D NOW^%DTC S DIADT=+$J(%,0,4) K %,DW G Q:DRS<5 R !,"STORE THESE FIELDS IN TEMPLATE: ",X:DTIME S:'$T DTOUT=1 G Q:X="" S DIC(0)="LZSEQ",DLAYGO=0 D T K DLAYGO,DIC I Y<0 G S:X'[U K DR G Q
S X=$P(^(0),U,6) I DUZ(0)'["@",X]"" F %=1:1 I DUZ(0)[$E(X,%) Q:%'>$L(X) W !?7,$C(7),"YOU HAVE NO 'WRITE ACCESS' TO THIS TEMPLATE",! G S
S DW=$S('$D(^("ROU")):1,^("ROU")'[U:1,$D(^("ROUOLD")):^("ROUOLD"),1:1),%=0,X=$P(Y,U,2)
I $O(^(0))]"" W $C(7),!,X_" TEMPLATE ALREADY EXISTS.... OK TO REPLACE" D YN^DICN W ! G S:%-1 L +^DIE(+Y) S %Y="" F %X=0:0 S %Y=$O(^DIE(+Y,%Y)) Q:%Y="" K:",%D,ROUOLD,W,"'[(","_%Y_",") ^(%Y)
S ^DIE(+Y,0)=X_U_DIADT_U_$S('%:DUZ(0),1:$P(Y(0),U,3))_U_DI_U_DUZ_U_$S('%:DUZ(0),1:$P(Y(0),U,6))_U_DT,^DIE("F"_DI,X,+Y)=1 L -^DIE(+Y)
M S %X="DR(",%Y="^DIE(+Y,""DR""," D %XY^%RCR M ^DIE(+Y,"DIAB")=^UTILITY($J)
S X=DW,DP=DIA("P"),DMAX=^DD("ROU") I X'=1,$D(^DD("OS",DISYS,"ZS")) D EN^DIEZ S DR(1,DIA("P"))=U_DNM
Q K DNM,DIAO,DI,DIAP,%,%I,DIADT,DIAT,DIE,DMAX,%X,%Y Q
;
ALL ;Called by DIETED, DIA
S %=DI,^UTILITY($J,1,F,%,DIAP\1000)="ALL" K DA D G UP^DIA:F,S:$D(DRS) Q
.N DIA1 S DIA1=DIARLVL D A
;
RANGE ;called by DIA, DIE17, DIETED
N DIA1 S DIA1=F+1 S %=DI I X>0 S Y=X-.000001 G B
A S Y=0
B S DA="",X=0
G S DG=Y
DR S Y=$O(^DD(%,Y)) S:Y="" Y=-1 I $D(D(F)),Y'>0!(Y>D(F)) D DG:X Q
I Y'>0 D DG:X S:$D(DR(DIA1,%))[0 DR(DIA1,%)=DA Q
I $D(^(Y,0)),X X DIC("S") G G:$T D DG G DR
X DIC("S") E G DR
S X=Y G G
;
DG S DA=DA_$E(";",1,$L(DA))_X_$P(":"_DG,U,X'=DG)
S DQ=0 F S DQ=$O(^DD(%,"SB",DQ)) Q:DQ="" S DP=$O(^(DQ,0)) I DP'<X,DP'>DG S Y(F,DQ)=""
S DQ=-1
Y S X=$O(Y(F,0)) I X>0 K Y(F,X) S DA(F)=DA,Y(F)=Y,%(F)=%,F=F+1,DIA1=DIA1+1,%=X D A S F=F-1,DIA1=DIA1-1,%=%(F),Y=Y(F),DA=DA(F) G Y
S X="",DG=0 K DP Q
;
TEMP ;
S DIC(0)="ZSEQ" D T K DIC Q:$D(DTOUT) G DB:Y<0
S %=$P(Y(0),U,6) G ED:DUZ(0)="@"!'$L(%) F X=1:1:$L(%) I DUZ(0)[$E(%,X) G ED
GT I $G(^("ROU"))[U S DR(1,DIA("P"))=^("ROU")
E S:$D(^("W")) DIE("W")=^("W") S %X="^DIE(+Y,""DR"",",%Y="DR(" D %XY^%RCR
S $P(^DIE(+Y,0),U,7)=DT
Q
;
T K DIC("W") S D="F"_DI,X=$P(X,"]",1),X=$P(X,"[",1)_$P(X,"[",2),DIC="^DIE(",DIC("S")="I $P(^(0),U,4)=DI"_$P(" S %=$P(^(0),U,3) F DW=1:1:$L(%) I DUZ(0)[$E(%,DW) Q",9,DUZ(0)'="@") G IX^DIC
;
ED I Y<1!$G(^DIE(+Y,"CANONIC")) G GT
S %=2 W !,"WANT TO EDIT '",$P(Y,U,2),"' INPUT TEMPLATE" D YN^DICN G GT:%-1
S DIE="^DIE(",DA=+Y,DR=".01;3;6" D ^DIE K DR I '$D(DA) S DB=0 G DB
S:$D(^DIE(DA,"DR"))#2 ^("DR",1,J(0))=^("DR")
S DIAA=DA,DRS=9,DIAT=$S($D(^DIE(DA,"DR",1,J(0))):^(J(0)),1:"")
M DI=^DIE(DA,"DIAB")
S F=0,(DIARTLVL,DB)=1,DIAO=0 F DXS=1:1 Q:'$D(DR(99,DXS))
DB S DI=J(0) G ^DIA
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDIA1 3003 printed Oct 16, 2024@18:45:07 Page 2
DIA1 ;SFISC/GFT-PROCESS TEMPLATES, RANGES FOR INPUT ;22JUL2014
+1 ;;22.2;VA FileMan;;Jan 05, 2016;Build 42
+2 ;;Per VA Directive 6402, this routine should not be modified.
+3 ;;Submitted to OSEHRA 5 January 2015 by the VISTA Expertise Network.
+4 ;;Based on Medsphere Systems Corporation's MSC FileMan 1051.
+5 ;;Licensed under the terms of the Apache License, Version 2.0.
+6 ;
S DO NOW^%DTC
SET DIADT=+$JUSTIFY(%,0,4)
KILL %,DW
if DRS<5
GOTO Q
READ !,"STORE THESE FIELDS IN TEMPLATE: ",X:DTIME
if '$TEST
SET DTOUT=1
if X=""
GOTO Q
SET DIC(0)="LZSEQ"
SET DLAYGO=0
DO T
KILL DLAYGO,DIC
IF Y<0
if X'[U
GOTO S
KILL DR
GOTO Q
+1 SET X=$PIECE(^(0),U,6)
IF DUZ(0)'["@"
IF X]""
FOR %=1:1
IF DUZ(0)[$EXTRACT(X,%)
if %'>$LENGTH(X)
QUIT
WRITE !?7,$CHAR(7),"YOU HAVE NO 'WRITE ACCESS' TO THIS TEMPLATE",!
GOTO S
+2 SET DW=$SELECT('$DATA(^("ROU")):1,^("ROU")'[U:1,$DATA(^("ROUOLD")):^("ROUOLD"),1:1)
SET %=0
SET X=$PIECE(Y,U,2)
+3 IF $ORDER(^(0))]""
WRITE $CHAR(7),!,X_" TEMPLATE ALREADY EXISTS.... OK TO REPLACE"
DO YN^DICN
WRITE !
if %-1
GOTO S
LOCK +^DIE(+Y)
SET %Y=""
FOR %X=0:0
SET %Y=$ORDER(^DIE(+Y,%Y))
if %Y=""
QUIT
if ",%D,ROUOLD,W,"'[(","_%Y_",")
KILL ^(%Y)
+4 SET ^DIE(+Y,0)=X_U_DIADT_U_$SELECT('%:DUZ(0),1:$PIECE(Y(0),U,3))_U_DI_U_DUZ_U_$SELECT('%:DUZ(0),1:$PIECE(Y(0),U,6))_U_DT
SET ^DIE("F"_DI,X,+Y)=1
LOCK -^DIE(+Y)
M SET %X="DR("
SET %Y="^DIE(+Y,""DR"","
DO %XY^%RCR
MERGE ^DIE(+Y,"DIAB")=^UTILITY($JOB)
+1 SET X=DW
SET DP=DIA("P")
SET DMAX=^DD("ROU")
IF X'=1
IF $DATA(^DD("OS",DISYS,"ZS"))
DO EN^DIEZ
SET DR(1,DIA("P"))=U_DNM
Q KILL DNM,DIAO,DI,DIAP,%,%I,DIADT,DIAT,DIE,DMAX,%X,%Y
QUIT
+1 ;
ALL ;Called by DIETED, DIA
+1 SET %=DI
SET ^UTILITY($JOB,1,F,%,DIAP\1000)="ALL"
KILL DA
Begin DoDot:1
+2 NEW DIA1
SET DIA1=DIARLVL
DO A
End DoDot:1
if F
GOTO UP^DIA
if $DATA(DRS)
GOTO S
QUIT
+3 ;
RANGE ;called by DIA, DIE17, DIETED
+1 NEW DIA1
SET DIA1=F+1
SET %=DI
IF X>0
SET Y=X-.000001
GOTO B
A SET Y=0
B SET DA=""
SET X=0
G SET DG=Y
DR SET Y=$ORDER(^DD(%,Y))
if Y=""
SET Y=-1
IF $DATA(D(F))
IF Y'>0!(Y>D(F))
if X
DO DG
QUIT
+1 IF Y'>0
if X
DO DG
if $DATA(DR(DIA1,%))[0
SET DR(DIA1,%)=DA
QUIT
+2 IF $DATA(^(Y,0))
IF X
XECUTE DIC("S")
if $TEST
GOTO G
DO DG
GOTO DR
+3 XECUTE DIC("S")
IF '$TEST
GOTO DR
+4 SET X=Y
GOTO G
+5 ;
DG SET DA=DA_$EXTRACT(";",1,$LENGTH(DA))_X_$PIECE(":"_DG,U,X'=DG)
+1 SET DQ=0
FOR
SET DQ=$ORDER(^DD(%,"SB",DQ))
if DQ=""
QUIT
SET DP=$ORDER(^(DQ,0))
IF DP'<X
IF DP'>DG
SET Y(F,DQ)=""
+2 SET DQ=-1
Y SET X=$ORDER(Y(F,0))
IF X>0
KILL Y(F,X)
SET DA(F)=DA
SET Y(F)=Y
SET %(F)=%
SET F=F+1
SET DIA1=DIA1+1
SET %=X
DO A
SET F=F-1
SET DIA1=DIA1-1
SET %=%(F)
SET Y=Y(F)
SET DA=DA(F)
GOTO Y
+1 SET X=""
SET DG=0
KILL DP
QUIT
+2 ;
TEMP ;
+1 SET DIC(0)="ZSEQ"
DO T
KILL DIC
if $DATA(DTOUT)
QUIT
if Y<0
GOTO DB
+2 SET %=$PIECE(Y(0),U,6)
if DUZ(0)="@"!'$LENGTH(%)
GOTO ED
FOR X=1:1:$LENGTH(%)
IF DUZ(0)[$EXTRACT(%,X)
GOTO ED
GT IF $GET(^("ROU"))[U
SET DR(1,DIA("P"))=^("ROU")
+1 IF '$TEST
if $DATA(^("W"))
SET DIE("W")=^("W")
SET %X="^DIE(+Y,""DR"","
SET %Y="DR("
DO %XY^%RCR
+2 SET $PIECE(^DIE(+Y,0),U,7)=DT
+3 QUIT
+4 ;
T KILL DIC("W")
SET D="F"_DI
SET X=$PIECE(X,"]",1)
SET X=$PIECE(X,"[",1)_$PIECE(X,"[",2)
SET DIC="^DIE("
SET DIC("S")="I $P(^(0),U,4)=DI"_$PIECE(" S %=$P(^(0),U,3) F DW=1:1:$L(%) I DUZ(0)[$E(%,DW) Q",9,DUZ(0)'="@")
GOTO IX^DIC
+1 ;
ED IF Y<1!$GET(^DIE(+Y,"CANONIC"))
GOTO GT
+1 SET %=2
WRITE !,"WANT TO EDIT '",$PIECE(Y,U,2),"' INPUT TEMPLATE"
DO YN^DICN
if %-1
GOTO GT
+2 SET DIE="^DIE("
SET DA=+Y
SET DR=".01;3;6"
DO ^DIE
KILL DR
IF '$DATA(DA)
SET DB=0
GOTO DB
+3 if $DATA(^DIE(DA,"DR"))#2
SET ^("DR",1,J(0))=^("DR")
+4 SET DIAA=DA
SET DRS=9
SET DIAT=$SELECT($DATA(^DIE(DA,"DR",1,J(0))):^(J(0)),1:"")
+5 MERGE DI=^DIE(DA,"DIAB")
+6 SET F=0
SET (DIARTLVL,DB)=1
SET DIAO=0
FOR DXS=1:1
if '$DATA(DR(99,DXS))
QUIT
DB SET DI=J(0)
GOTO ^DIA