VistA-WorldVistAEHR/r/VA_FILEMAN-ARJT-DI-DD-DM-DT.../DMSQ.m

94 lines
4.6 KiB
Mathematica

DMSQ ;SFISC/EZ-CALLS INTO SQLI CODE ;10/30/97 16:25
;;22.0;VA FileMan;;Mar 30, 1999
;Per VHA Directive 10-93-142, this routine should not be modified.
Q
SETUP ;entry point to begin SQLI projection process
;gives interactive user a chance to cancel out before continuing
;requires programmer mode (DUZ(0)="@")
I $D(ZTQUEUED) D RUN Q
I $$WAIT^DMSQT1 D Q
. W !?5,"Another SQLI projection is already running right now."
. W !?5,"Try later if you want to re-run the SQLI projection."
S DIR(0)="Y",DIR("B")="NO"
S DIR("A")="This process takes several hours. Want to Continue"
S DIR("?",1)="This will project FileMan data dictionary information into SQLI files."
S DIR("?",2)="It may consume up to 30Mb of space in a full hospital account."
S DIR("?",3)=" "
S DIR("?",4)="It is safe to run on all systems, even if you don't have SQLI-to-SQL mapping."
S DIR("?",5)="(Note: SQLI print options won't report anything if SQLI files are empty.)"
S DIR("?",6)=" "
S DIR("?",7)="To experiment, you can run this and then use the purge option afterwards."
S DIR("?",8)="(It isn't necessary to run the purge option beforehand, by the way.)"
S DIR("?",9)=" "
S DIR("?",10)="If you do have SQLI-to-SQL mapping, be aware that this is step 2 of 3:"
S DIR("?",11)=" "
S DIR("?",12)=" (1) Populate the SQLI Key Word file - KW^DMSQD(SCR,ERR)"
S DIR("?",13)=" (2) Run this utility - SETUP^DMSQ"
S DIR("?",14)=" (3) Run your SQLI-to-SQL mapper (vendor product)"
S DIR("?",15)=" "
S DIR("?")="These 3 steps should be done in sequence, one right after the other."
D ^DIR K DIR Q:'Y
I $G(DUZ(0))'["@" W !,"PROGRAMMER MODE REQUIRED (NOTHING DONE)",! Q
W !!?5,"Running this job on your terminal (HOME device) will tie up"
W !?5,"your terminal for the several hours it takes to run, but you"
W !?5,"will see the job's status as it's running."
W !!?5,"Queuing will send it to the background for processing. The"
W !?5,"status will be apparent from the printed output (if there's an"
W !?5,"error, it's text will be printed). TaskMan/Kernel tools can also"
W !?5,"be used to determine whether the job ran to completion or not."
W !!?5,"Don't send this directly to a printer (without queuing) unless"
W !?5,"you are prepared to tie up your terminal AND the printer for"
W !?5,"the duration of the process.",!
S %ZIS="QM" D ^%ZIS Q:POP
I $D(IO("Q")) D Q
. S ZTRTN="RUN^DMSQ",ZTDESC="SQLI PROJECTION"
. D ^%ZTLOAD D HOME^%ZIS K IO("Q")
S:IO'=IO(0) DMDOT="" D RUN
EXIT K DMDOT
Q
RUN ;runs the projection of all files (called from SETUP)
U IO
I $G(DUZ(0))'["@" W !,"PROGRAMMER MODE REQUIRED (NOTHING DONE)",! Q
I $$WAIT^DMSQT1 D Q
. W !?5,"Another SQLI projection is being run right now. So"
. W !?5,"this attempt to re-run the projection is aborted."
D ALLF^DMSQF(1) ;using param=1 schema/domains/datatypes (re)done
D ^%ZISC
S:$D(ZTQUEUED) ZTREQ="@"
Q
RUNONE ;re-runs the projection of one file - for testing purposes only.
;if the selected file has subfiles, they will not be processed.
;to process one subfile, use the subfile number in this call.
;to select a (sub)file, it must already be an SQLI Table (re-runs only).
I $G(DUZ(0))'["@" W !,"PROGRAMMER MODE REQUIRED (NOTHING DONE)",! Q
N DM1,DM2,DMQ,DMFN S DMQ="" D ASK
I DMQ W !?5,"No file selected; nothing done." Q
D ONEF^DMSQF(DMFN) W !?5,"Done. See SQLI files for changes."
Q
ASK ; select (sub)file number
S DM1=$O(^DMSQ("T","C",0)),DM2=$O(^DMSQ("T","C",99999999999),-1)
S DIR(0)="NO^"_DM1_":"_DM2_":999999999",DIR("A")="File or Subfile Number"
S DIR("?")="Enter the number of a file or subfile to re-project"
D ^DIR S:$D(DIRUT) DMQ=1 K DIR Q:DMQ S DMFN=Y
I '$D(^DMSQ("T","C",DMFN)) D G ASK
. W !?5,"Invalid selection: no SQLI table for this (sub)file."
Q
PURGE ;entry point to clear data from SQLI files, all except keywords
;requires programmer mode (DUZ(0)="@")
;header nodes of the files are reset, indicating empty status
N I
I $G(DUZ(0))'["@" W !,"PROGMODE REQUIRED (NOTHING DONE)",! Q
I $$WAIT^DMSQT1 D Q
. W !?5,"Purging can't be done right now. The SQLI structures"
. W !?5,"are in the process of being built, a job that might take"
. W !?5,"a few hours. So try again later (when the job finishes)."
S DIR("A")="Removes all records from SQLI files. Continue"
S DIR("?",1)="Clears all SQLI files (between 1.52 and 1.53) except SQLI_KEY_WORD."
S DIR("?",2)="(You can re-generate SQLI data at a future time as needed.)",DIR("?",3)=" "
S DIR("?")="Data can be cleared if you don't have an SQL system or you don't use SQLI."
S DIR(0)="Y",DIR("B")="NO" D ^DIR K DIR Q:$D(DIRUT)!(Y'=1)
W !,"Working..."
F I="S","KF","T","E","C","P","F","EX","ET","DT","DM","OF" D CLF^DMSQU(I)
W "Done!"
Q