1 | TMGSIPH6 ;TMG/kst/SIPHON PROGRAM, FOR TRANSFERRING VISTA INSTANCES ;2/15/10
|
---|
2 | ;;1.0;TMG-LIB;**1**;2/15/10
|
---|
3 | ;
|
---|
4 | ;"TMG SIPHON PROGRAM, FOR TRANSFERRING VISTA INSTANCE
|
---|
5 | ;"Utility functions for working with transfers on client
|
---|
6 | ;"Especially working with XRefs of transferred records.
|
---|
7 | ;"Kevin Toppenberg MD
|
---|
8 | ;"GNU General Public License (GPL) applies
|
---|
9 | ;"2/15/10
|
---|
10 | ;
|
---|
11 | ;"=======================================================================
|
---|
12 | ;" API -- Public Functions.
|
---|
13 | ;"=======================================================================
|
---|
14 | ;"XRFILES -- allow user to select files to be re-cross referenced
|
---|
15 | ;
|
---|
16 | ;"=======================================================================
|
---|
17 | ;"Dependancies
|
---|
18 | ;"=======================================================================
|
---|
19 | ;"TMGUSRIF,DIK
|
---|
20 | ;"=======================================================================
|
---|
21 | ;
|
---|
22 | XRFILES ;
|
---|
23 | ;"Purpose: To allow user to select files to be re-cross referenced
|
---|
24 | ;"Input: None
|
---|
25 | ;"Result: None
|
---|
26 | ;"Output: Cross-references will be KILL'ed then SET, at user's choice
|
---|
27 | NEW TMGARRAY,TMGSEL
|
---|
28 | NEW FILENUM SET FILENUM=0
|
---|
29 | FOR SET FILENUM=$ORDER(^TMG("TMGSIPH","NEED RE-XREF",FILENUM)) QUIT:(FILENUM'>0) DO
|
---|
30 | . NEW DISPSTR SET DISPSTR="Re-index records in file #"_FILENUM_" ("
|
---|
31 | . SET DISPSTR=DISPSTR_$PIECE($GET(^DIC(FILENUM,0)),"^",1)_")"
|
---|
32 | . SET TMGARRAY(DISPSTR)=FILENUM
|
---|
33 | NEW HEADER SET HEADER="Select File(s) to REINDEX. Press <ESC><ESC> when Done."
|
---|
34 | DO Selector^TMGUSRIF("TMGARRAY","TMGSEL",HEADER)
|
---|
35 | ;
|
---|
36 | NEW TMGABORT SET TMGABORT=0
|
---|
37 | NEW IDX SET IDX=""
|
---|
38 | FOR SET IDX=$ORDER(TMGSEL(IDX)) QUIT:(IDX="")!TMGABORT DO
|
---|
39 | . SET FILENUM=$GET(TMGSEL(IDX)) QUIT:FILENUM=""
|
---|
40 | . SET TMGABORT=($$REIX1FLE(FILENUM)'=1)
|
---|
41 | ;
|
---|
42 | DO PRESSTOCONT^TMGUSRIF;
|
---|
43 | QUIT
|
---|
44 | ;
|
---|
45 | ;
|
---|
46 | REIX1FLE(FILENUM) ;
|
---|
47 | ;"Purpose: to re-index all the cross references in 1 file
|
---|
48 | ;"Input: FILENUM -- the file to reindex.
|
---|
49 | ;"Results: 1=OK, 0 if error.
|
---|
50 | ;"
|
---|
51 | ;"NOTE: There should not be a need to re-index subfiles, becaUse those
|
---|
52 | ;" IEN's are not moved / translated
|
---|
53 | NEW RESULT SET RESULT=1 ;"default success
|
---|
54 | NEW TMGCT SET TMGCT=50
|
---|
55 | NEW STIME SET STIME=$H
|
---|
56 | NEW VAFCA08 SET VAFCA08=1 ;"Prevent execution of XRef AVAFC01 (--> endless loop)
|
---|
57 | NEW DIK,DA,CGREF
|
---|
58 | SET DIK=$GET(^DIC(FILENUM,0,"GL"))
|
---|
59 | IF DIK="" SET RESULT=0 GOTO RXF1
|
---|
60 | NEW CGREF SET CGREF=$$CREF^DILF(DIK)
|
---|
61 | SET TMGMIN=$ORDER(@CGREF@(0))
|
---|
62 | SET TMGMAX=$ORDER(@CGREF@("#"),-1)
|
---|
63 | NEW TMGABORT SET TMGABORT=0
|
---|
64 | NEW TMGERR,TMGLASTE SET TMGERR=0,TMGLASTE=0
|
---|
65 | SET DA=0
|
---|
66 | FOR SET DA=$ORDER(@CGREF@(DA)) QUIT:(+DA'>0)!TMGABORT DO
|
---|
67 | . IF $DATA(^TMG("TMGSIPH","RE-XREF DONE",FILENUM,DA)) QUIT
|
---|
68 | . DO
|
---|
69 | . . ;"NEW $ETRAP SET $ETRAP="SET $ZTRAP=""B"" write ""$ZTRAP="",$ZTRAP,!,""Error during XRef of FILE #"",$GET(FILENUM),""; IEN="",$GET(DA),! WRITE $ZSTATUS,! SET $ETRAP="""",$ECODE="""",TMGERR=1"
|
---|
70 | . . NEW $ETRAP SET $ETRAP="DO HANDLERR^TMGSIPH6"
|
---|
71 | . . DO IX^DIK ;"Uses DIK and DA as inputs
|
---|
72 | . . SET ^TMG("TMGSIPH","RE-XREF DONE",FILENUM,DA)="" ;"<-- not done if error during IX^DIK
|
---|
73 | . SET TMGABORT=$$UserAborted^TMGUSRIF()
|
---|
74 | . SET TMGCT=TMGCT+1
|
---|
75 | . IF TMGCT>10 DO
|
---|
76 | . . DO ProgressBar^TMGUSRIF(DA,"Re-indexing file: "_FILENUM,TMGMIN,TMGMAX,70,STIME)
|
---|
77 | . . SET TMGCT=0
|
---|
78 | IF (TMGABORT=0)&(TMGERR=0) KILL ^TMG("TMGSIPH","NEED RE-XREF",FILENUM)
|
---|
79 | ELSE SET RESULT=0
|
---|
80 | WRITE !
|
---|
81 | RXF1 QUIT RESULT
|
---|
82 | ;
|
---|
83 | ;
|
---|
84 | HANDLERR ;
|
---|
85 | SET $ZTRAP="B"
|
---|
86 | IF $GET(DA)'=$GET(TMGLASTE) DO
|
---|
87 | . WRITE !,"Error during XRef of FILE #",$GET(FILENUM),"; IEN=",$GET(DA),!
|
---|
88 | . WRITE $ZSTATUS,!
|
---|
89 | . SET TMGERR=1
|
---|
90 | . SET TMGLASTE=DA
|
---|
91 | SET $ETRAP="",$ECODE=""
|
---|
92 | QUIT
|
---|
93 |
|
---|