DIFROM3 ;SFISC/XAK-CREATES RTN ENDING IN 'INIT2' (HELP FRAMES) ;6 DEC 2012
;;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 DIRS=" S DIFQ=1"
S DNAME=E_2,DL=0,(DH,Q)=" ;" K ^UTILITY($J) F DD=1:1 S X=$T(TEXT+DD) Q:X="" S ^UTILITY($J,DD,0)=$E(X,4,999) S:$E(X,4)="U" ^(0)=^(0)_DIRS
S DIFROM=2 D ZI G ^DIFROM4
;
FILE ;
D:'$D(DISYS) OS^DII S DL=0,Q="Q Q",S=" ;;"
NAME S D=0
I DRN>12959 K DRN Q
S DNAME=DN_$$B36(DRN)
ZI ;
I '$D(DIFROM(1)) S %H=+$H D YX^%DTC S DIFROM(1)=$E(Y,5,6)_"-"_$E(Y,1,3)_"-"_$E(Y,9,12)
2 K ^UTILITY($J,0)
S ^(0,1)=DNAME_" ; ; "_DIFROM(1),D=$L(^(1))+2 ; (2 = CR/LF)
S ^(1.1)=DILN2,D=D+$L(^(1.1))+2 ; (2 = CR/LF)
S ^UTILITY($J,0,2)=DH,D=D+$L(^(2))+2 ; (2 ditto)
S ^UTILITY($J,0,3)=Q,D=D+$L(^(3))+2 ; (2 ditto)
F L=4:1 D Q:DL'>0 I D+257>DIFRM,$E(^(L),4)'="^",$E(^(L),4)'=$C(126) Q ; 255 for a line extra in M95 + 2 CR/LF
. S DL=$O(^UTILITY($J,DL))
. Q:DL'>0
. S ^UTILITY($J,0,L)=S_^(DL,0)
. S D=$L(^(L))+D+2 ; VEN/SMH - Add 2 charcaters for CR/LF
S DRN=DRN+1,X=DNAME X ^DD("OS",DISYS,"ZS") W !,X_" HAS BEEN FILED..." G NAME:DL>0
K K %A,%B,%C,%Z,^UTILITY($J) S DL=0 Q
;
B36(X) ;Calculate base 36 number from 0 (000) to 46,655 (ZZZ).
S X=$G(X) I X>46655 Q ""
Q $$N(X\(36*36)#36+1)_$$N(X\36#36+1)_$$N(X#36+1)
N(%) Q $E("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",%)
;
TEXT ;
;; K ^UTILITY("DIFROM",$J),DIC S DIDUZ=0 S:$D(DUZ)#2 DIDUZ=DUZ S DUZ=.5
;; I $D(^DIC(9.2,0))#2,^(0)?1"HEL".E S (DIC,DLAYGO)=9.2,N="HEL",DIC(0)="LX" G ADD
;; Q
;; ;
;;ADD F R=0:0 S R=$O(^UTILITY(U,$J,N,R)) Q:R'>0 S X=$P(^(R,0),U,1) W "." K DA D ^DIC I Y>0,'$D(DIFQ(N))!$P(Y,U,3) S ^UTILITY("DIFROM",$J,N,X)=+Y K ^DIC(9.2,+Y,1),^(2),^(3),^(10) S %X="^UTILITY(U,$J,N,R,",%Y=DIC_"+Y,",DA=+Y D %XY^%RCR
;; S DIK=DIC
;;HELP S R=$O(^UTILITY("DIFROM",$J,N,R)) Q:R="" W !,"'"_R_"' Help Frame filed." S DA=^(R)
;; F X=0:0 S X=$O(^DIC(9.2,DA,2,X)) Q:'X S I=$S($D(^(X,0)):^(0),1:0),Y=$P(I,U,2) S:Y]"" Y=$O(^DIC(9.2,"B",Y,0)) S ^(0)=$P(^DIC(9.2,DA,2,X,0),U,1)_U_$S(Y>0:Y,1:"")_U_$P(^(0),U,3,99)
;; S I=0 F X=0:0 S X=$O(^DIC(9.2,DA,10,X)) Q:'X I $D(^(X,0)) S Y=$P(^(0),U),Y=$S(Y]"":$O(^MAG("B",Y,0)),1:0) S:Y $P(^DIC(9.2,DA,10,X,0),U)=Y,I=I+1,%=X I 'Y K ^DIC(9.2,DA,10,X,0)
;; I I S $P(^DIC(9.2,DA,10,0),U,3,4)=%_U_I
;;IX D IX1^DIK G HELP
;; ;
;;U I $D(DIRUT)
;; W ! Q
;;REP S DIR(0)="Y",DIR("A")="Shall I change the NAME of the file to "_DIF
;; S DIR("??")="^D REP^DIFROMH1",DIR("B")="NO" D ^DIR G U:$D(DIRUT)
;; I Y S DIE=1,DIFQ=0,DA=N,DR=".01////"_DIF D ^DIE Q
;; S DIR("A")="Shall I replace your file with mine"
;; S DIR("??")="^D AG^DIFROMH1" D ^DIR G U:$D(DIRUT)!'Y
;; S DIU(0)="E",DIR("A")="Do you want to keep the Data"
;; S DIR("??")="^D CHG^DIFROMH1" D ^DIR G U:$D(DIRUT)
;; S:'Y DIU(0)=DIU(0)_"D"
;; S DIR("A")="Do you want to keep the Templates"
;; S DIR("??")="^D TEMP^DIFROMH1" D ^DIR G U:$D(DIRUT) S:'Y DIU(0)=DIU(0)_"T"
;; S DIFQ(N)=1,DIFKEP(N)=DIU(0) W !?15," (",DIF,") " Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDIFROM3 3231 printed Oct 16, 2024@18:48:36 Page 2
DIFROM3 ;SFISC/XAK-CREATES RTN ENDING IN 'INIT2' (HELP FRAMES) ;6 DEC 2012
+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 ;
+7 SET DIRS=" S DIFQ=1"
+8 SET DNAME=E_2
SET DL=0
SET (DH,Q)=" ;"
KILL ^UTILITY($JOB)
FOR DD=1:1
SET X=$TEXT(TEXT+DD)
if X=""
QUIT
SET ^UTILITY($JOB,DD,0)=$EXTRACT(X,4,999)
if $EXTRACT(X,4)="U"
SET ^(0)=^(0)_DIRS
+9 SET DIFROM=2
DO ZI
GOTO ^DIFROM4
+10 ;
FILE ;
+1 if '$DATA(DISYS)
DO OS^DII
SET DL=0
SET Q="Q Q"
SET S=" ;;"
NAME SET D=0
+1 IF DRN>12959
KILL DRN
QUIT
+2 SET DNAME=DN_$$B36(DRN)
ZI ;
+1 IF '$DATA(DIFROM(1))
SET %H=+$HOROLOG
DO YX^%DTC
SET DIFROM(1)=$EXTRACT(Y,5,6)_"-"_$EXTRACT(Y,1,3)_"-"_$EXTRACT(Y,9,12)
2 KILL ^UTILITY($JOB,0)
+1 ; (2 = CR/LF)
SET ^(0,1)=DNAME_" ; ; "_DIFROM(1)
SET D=$LENGTH(^(1))+2
+2 ; (2 = CR/LF)
SET ^(1.1)=DILN2
SET D=D+$LENGTH(^(1.1))+2
+3 ; (2 ditto)
SET ^UTILITY($JOB,0,2)=DH
SET D=D+$LENGTH(^(2))+2
+4 ; (2 ditto)
SET ^UTILITY($JOB,0,3)=Q
SET D=D+$LENGTH(^(3))+2
+5 ; 255 for a line extra in M95 + 2 CR/LF
FOR L=4:1
Begin DoDot:1
+6 SET DL=$ORDER(^UTILITY($JOB,DL))
+7 if DL'>0
QUIT
+8 SET ^UTILITY($JOB,0,L)=S_^(DL,0)
+9 ; VEN/SMH - Add 2 charcaters for CR/LF
SET D=$LENGTH(^(L))+D+2
End DoDot:1
if DL'>0
QUIT
IF D+257>DIFRM
IF $EXTRACT(^(L),4)'="^"
IF $EXTRACT(^(L),4)'=$CHAR(126)
QUIT
+10 SET DRN=DRN+1
SET X=DNAME
XECUTE ^DD("OS",DISYS,"ZS")
WRITE !,X_" HAS BEEN FILED..."
if DL>0
GOTO NAME
K KILL %A,%B,%C,%Z,^UTILITY($JOB)
SET DL=0
QUIT
+1 ;
B36(X) ;Calculate base 36 number from 0 (000) to 46,655 (ZZZ).
+1 SET X=$GET(X)
IF X>46655
QUIT ""
+2 QUIT $$N(X\(36*36)#36+1)_$$N(X\36#36+1)_$$N(X#36+1)
N(%) QUIT $EXTRACT("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",%)
+1 ;
TEXT ;
+1 ;; K ^UTILITY("DIFROM",$J),DIC S DIDUZ=0 S:$D(DUZ)#2 DIDUZ=DUZ S DUZ=.5
+2 ;; I $D(^DIC(9.2,0))#2,^(0)?1"HEL".E S (DIC,DLAYGO)=9.2,N="HEL",DIC(0)="LX" G ADD
+3 ;; Q
+4 ;; ;
+5 ;;ADD F R=0:0 S R=$O(^UTILITY(U,$J,N,R)) Q:R'>0 S X=$P(^(R,0),U,1) W "." K DA D ^DIC I Y>0,'$D(DIFQ(N))!$P(Y,U,3) S ^UTILITY("DIFROM",$J,N,X)=+Y K ^DIC(9.2,+Y,1),^(2),^(3),^(10) S %X="^UTILITY(U,$J,N,R,",%Y=DIC_"+Y,",DA=+Y D %XY^%RCR
+6 ;; S DIK=DIC
+7 ;;HELP S R=$O(^UTILITY("DIFROM",$J,N,R)) Q:R="" W !,"'"_R_"' Help Frame filed." S DA=^(R)
+8 ;; F X=0:0 S X=$O(^DIC(9.2,DA,2,X)) Q:'X S I=$S($D(^(X,0)):^(0),1:0),Y=$P(I,U,2) S:Y]"" Y=$O(^DIC(9.2,"B",Y,0)) S ^(0)=$P(^DIC(9.2,DA,2,X,0),U,1)_U_$S(Y>0:Y,1:"")_U_$P(^(0),U,3,99)
+9 ;; S I=0 F X=0:0 S X=$O(^DIC(9.2,DA,10,X)) Q:'X I $D(^(X,0)) S Y=$P(^(0),U),Y=$S(Y]"":$O(^MAG("B",Y,0)),1:0) S:Y $P(^DIC(9.2,DA,10,X,0),U)=Y,I=I+1,%=X I 'Y K ^DIC(9.2,DA,10,X,0)
+10 ;; I I S $P(^DIC(9.2,DA,10,0),U,3,4)=%_U_I
+11 ;;IX D IX1^DIK G HELP
+12 ;; ;
+13 ;;U I $D(DIRUT)
+14 ;; W ! Q
+15 ;;REP S DIR(0)="Y",DIR("A")="Shall I change the NAME of the file to "_DIF
+16 ;; S DIR("??")="^D REP^DIFROMH1",DIR("B")="NO" D ^DIR G U:$D(DIRUT)
+17 ;; I Y S DIE=1,DIFQ=0,DA=N,DR=".01////"_DIF D ^DIE Q
+18 ;; S DIR("A")="Shall I replace your file with mine"
+19 ;; S DIR("??")="^D AG^DIFROMH1" D ^DIR G U:$D(DIRUT)!'Y
+20 ;; S DIU(0)="E",DIR("A")="Do you want to keep the Data"
+21 ;; S DIR("??")="^D CHG^DIFROMH1" D ^DIR G U:$D(DIRUT)
+22 ;; S:'Y DIU(0)=DIU(0)_"D"
+23 ;; S DIR("A")="Do you want to keep the Templates"
+24 ;; S DIR("??")="^D TEMP^DIFROMH1" D ^DIR G U:$D(DIRUT) S:'Y DIU(0)=DIU(0)_"T"
+25 ;; S DIFQ(N)=1,DIFKEP(N)=DIU(0) W !?15," (",DIF,") " Q