RPMS PortInstallation to GTM
Document written by Sam Habiel on Feb 1, 2011 in Hurghada, Egypt.
Note: if you don't want to do all of this, a ready RPMS GT.M containing all the work I did plus all the modified routines is here: http://sourceforge.net/projects/worldvista/files/IHS-FOIA-Release-11-30-2010/rpms_samsGTMport.tgz/download
The starting point is this FOIA release, containing the CACHE.DAT plus all the software: http://sourceforge.net/projects/worldvista/files/IHS-FOIA-Release-11-30-2010/IHS_RPMS_FOIA_GOLDB_20101130.zip/download
If you see any references below to modified routines, look for them in this download in the p directory.
You still have to follow this document and perform pertinent steps.
- GT.M set-up
- CIA & BMX xinetd listeners and scripts
Contents
I -- Exporting from Cache
Export Routines from Cache to GT.M. Export Only * routines; not % routines.
RPMS> d ^%RO
Export Globals in ZWRITE format using Maury Pepper's routine (https://sourceforge.net/tracker/download.php?group_id=11026&atid=311026&file_id=254876&aid=534145)
RPMS> d ^ZWR1
OR --> Grab the globals and routines off sourceforge (http://sourceforge.net/projects/worldvista/files/IHS-FOIA-Release-11-30-2010/rpmsGlobalsRoutines20101130.zip/download)
II -- Set-up GT.M environment
IMPORTANT: for practicality, I work of the current working directory. I assume you will know what you are doing.
Create the empty routine directories plus journal directory plus globals directory
mkdir o r j g
Create rpms.env
with the following code:
#!/bin/bash unset gtm_chset # remove UTF-8 if set export gtmgbldir=mumps.gld # tell GT.M to use this file for db inf export gtm_dist=/opt/fis-gtm/gtm/ # tell GT.M where GT.M is export gtmroutines="o(r) $gtm_dist" # tell GT.M where its routines are export PATH=$PATH:$gtm_dist # add to PATH for my happiness
Change Kernel Shared Memory allowance (shmmax) in order to allow the 32 kb global nodes on GT.M. VISTA does not require that; however, RPMS does since it has long global nodes:
(need to be root to edit the file)
echo "kernel.shmmax = 67108864" >> /etc/sysctl.conf
Now you need to restart the kernel. I only know of one way to do that: restarting the computer.
sudo reboot
Now, create the database. Source the env file, and use GDE.
sakura@icarus:~/rpms201011$ . env.rpms
Create a GDE file called gde.rpms containing the following:
> CHANGE -SEGMENT DEFAULT -ACCESS_METHOD=BG -BLOCK_SIZE=33792 -ALLOCATION=1024 -EXTENSION_COUNT=1024 -GLOBAL_BUFFER_COUNT=4096 -LOCK_SPACE=400 -FILE=g/default.dat CHANGE -REGION DEFAULT -[[RECORD~|Record]]_SIZE=32767 -KEY_SIZE=255 -JOURNAL=(BEFORE_IMAGE,FILE_NAME="j/default.mjl,BUFFER_SIZE=132") -DYNAMIC_SEGMENT=DEFAULT TEMPLATE -SEGMENT -ACCESS_METHOD=BG -BLOCK_SIZE=4096 -ALLOCATION=1024 -EXTENSION_COUNT=1024 -GLOBAL_BUFFER_COUNT=4096 -LOCK_SPACE=400 TEMPLATE -REGION -[[RECORD~|Record]]_SIZE=4080 -KEY_SIZE=255 -NOJOURNAL ADD -SEGMENT SCRATCH -FILE=g/scratch.dat ADD -REGION SCRATCH -DYNAMIC_SEGMENT=SCRATCH ADD -NAME TMP -REGION=SCRATCH ADD -NAME TEMP -REGION=SCRATCH ADD -NAME UTILITY -REGION=SCRATCH TEMPLATE -REGION -[[RECORD~|Record]]_SIZE=4080 -KEY_SIZE=255 -JOURNAL=BEFORE_IMAGE EXIT
Now time to load it.
sakura@icarus:~/rpms201011$ mumps -r GDE %GDE-I-GDUSEDEFS, Using defaults for Global Directory /home/sakura/rpms201011/mumps.gld GDE> @gde.rpms %GDE-I-EXECOM, Executing command file /home/sakura/rpms201011/gde.rpms %GDE-I-VERIFY, [[Verification~|Verification]] OK %GDE-I-GDCREATE, Creating Global Directory file /home/sakura/rpms201011/mumps.gld
IMPORTANT: This does not seem to be working. I get the error: shmmget has invalid parameters. So I used a simplified one below:
sakura@icarus:~/rpms201011$ mumps -r ^GDE %GDE-I-GDUSEDEFS, Using defaults for Global Directory /home/sakura/rpms201011/mumps.gld GDE> CH -S DEFAULT -BLOCK_SIZE=34816 -L=1000 GDE> CH -R DEFAULT -R=32767 -K=255 GDE> EXIT %GDE-I-VERIFY, [[Verification~|Verification]] OK
Now create the database.
sakura@icarus:~/rpms201011$ mupip create %GTM-W-MUNOSTRMBKUP, Database /home/sakura/rpms201011/g/default.dat has a block size larger than 32256 and thus cannot use stream (incremental) backup Created file /home/sakura/rpms201011/mumps.dat
Now test the database for sanity
sakura@icarus:~/rpms201011$ gtm GTM>d ^%GD Global Directory Global ^* Total of 0 globals. Global ^
III. Import GT.M routines and Globals
Importing routines is a straight forward affair.
sakura@icarus:~/rpms201011$ gtm
GTM>d ^%RI Routine Input Utility - Converts RO file to *.m files. Formfeed delimited <No>? Input device: <terminal>: raw/routines/routines_20101130.ro Cache for Windows^INT^RPMS Routines 2010-11-30^~Format=Cache.S~ %RO on 22 Jan 2011 1:41 PM Output directory : r/
and you will see 33000 routines (!) roll through.
To import the globals (1754), do something like the following:
for glob in raw/globals/*; do echo $glob >> mupip.load ; mupip load -format=zwr $glob >> mupip.load 2>&1; done
Check the log to check that all files loaded correctly.
IV. Initialize Kernel and Fileman
First, run ^ZTMGRSET. This will initialize ^%ZOSF and create the % routines.
GTM>K ^%ZOSF GTM>D ^ZTMGRSET ZTMGRSET Version 8.0 **34,36,69,94,121,127,136,191,275** HELLO! I exist to assist you in correctly initializing the current account. Which MUMPS system should I install? 1 = VAX DSM(V6), VAX DSM(V7) 2 = MSM-PC/PLUS, MSM for NT or UNIX 3 = OpenM for NT, Cache/NT, Cache/VMS 4 = Datatree, DTM-PC, DT-MAX 5 = MVX,ISM VAX 6 = ISM (UNIX, Open VMS) 7 = GT.M (VMS) 8 = GT.M (Unix) System: 8 I will now rename a group of routines specific to your operating system. Routine: ZOSVGUX Loaded, Saved as %ZOSV Routine: ZTBKCGUX Missing Routine: ZIS4GTM . S (%,%1)=$ZGETDVI($I,"TT_ACCPORNAM") ^----- At column 14, line 44, source module /home/sakura/rpms201011/r/ZIS4GTM.m %GTM-E-FNOTONSYS, Function or special variable is not supported by this operating system Loaded, Saved as %ZIS4 Routine: ZISFGUX Missing Routine: ZISHGUX Loaded, Saved as %ZISH Routine: XUCIGTM Loaded, Saved as %XUCI Routine: ZISETGUX Missing Routine: ZOSV2GTM Loaded, Saved as %ZOSV2 Routine: ZISTCPS O NIO:(:SOCK:"AT"::512:512:10):30 Q:'$T S POP=0 U NIO ^----- At column 9, line 25, source module /home/sakura/rpms201011/r/ZISTCPS.m %GTM-E-DEVPARUNK, Deviceparameter unknown J CHILDONT^%ZISTCPS(NIO,RTN):(:16::):10 S %ZA=$ZA ^----- At column 32, line 30, source module /home/sakura/rpms201011/r/ZISTCPS.m %GTM-E-JOBPARUNK, Job parameter unknown S $ETRAP="D ^%ZTER L HALT",IO=$ZU(53) ^----- At column 34, line 35, source module /home/sakura/rpms201011/r/ZISTCPS.m %GTM-E-INVFCN, Invalid function name U IO:(::"-M") ;Work like DSM ^----- At column 8, line 36, source module /home/sakura/rpms201011/r/ZISTCPS.m %GTM-E-DEVPARUNK, Deviceparameter unknown Loaded, Saved as %ZISTCPS NAME OF MANAGER'S UCI,VOLUME SET: VAH,ROU// RPMS,RPMS The value of PRODUCTION will be used in the GETENV api. PRODUCTION (SIGN-ON) UCI,VOLUME SET: VAH,ROU// RPMS,RPMS The VOLUME name must match the one in PRODUCTION. NAME OF VOLUME SET: RPMS// The temp directory for the system: '/tmp/'// ^%ZOSF setup Now to load routines common to all systems. Routine: ZTLOAD Loaded, Saved as %ZTLOAD Routine: ZTLOAD1 Loaded, Saved as %ZTLOAD1 Routine: ZTLOAD2 Loaded, Saved as %ZTLOAD2 Routine: ZTLOAD3 Loaded, Saved as %ZTLOAD3 Routine: ZTLOAD4 Loaded, Saved as %ZTLOAD4 Routine: ZTLOAD5 Loaded, Saved as %ZTLOAD5 Routine: ZTLOAD6 Loaded, Saved as %ZTLOAD6 Routine: ZTLOAD7 Loaded, Saved as %ZTLOAD7 Routine: ZTM Loaded, Saved as %ZTM Routine: ZTM0 Loaded, Saved as %ZTM0 Routine: ZTM1 Loaded, Saved as %ZTM1 Routine: ZTM2 Loaded, Saved as %ZTM2 Routine: ZTM3 Loaded, Saved as %ZTM3 Routine: ZTM4 Loaded, Saved as %ZTM4 Routine: ZTM5 Loaded, Saved as %ZTM5 Routine: ZTM6 S ZTNAME=$ZC(%GETJPI,ZTPID,"PRCNAM") Q:ZTNAME["Sub" ^----- At column 12, line 76, source module /home/sakura/rpms201011/r/ZTM6.m %GTM-E-FNOTONSYS, Function or special variable is not supported by this operating system S ZTSTATE=$ZC(%GETJPI,ZTPID,"STATE") ^----- At column 13, line 77, source module /home/sakura/rpms201011/r/ZTM6.m %GTM-E-FNOTONSYS, Function or special variable is not supported by this operating system Loaded, Saved as %ZTM6 Routine: ZTMS Loaded, Saved as %ZTMS Routine: ZTMS0 Loaded, Saved as %ZTMS0 Routine: ZTMS1 Loaded, Saved as %ZTMS1 Routine: ZTMS2 Loaded, Saved as %ZTMS2 Routine: ZTMS3 Loaded, Saved as %ZTMS3 Routine: ZTMS4 Loaded, Saved as %ZTMS4 Routine: ZTMS5 Loaded, Saved as %ZTMS5 Routine: ZTMS7 Loaded, Saved as %ZTMS7 Routine: ZTMSH Missing Routine: ZTER I ^%ZOSF("OS")["OpenM" D SAVE("$ZU(56,2)",$ZU(56,2)) ^----- At column 45, line 29, source module /home/sakura/rpms201011/r/ZTER.m %GTM-E-INVFCN, Invalid function name Loaded, Saved as %ZTER Routine: ZTER1 S @%ZTERRT@("J")=$J_"^"_$ZC(%GETJPI,0,"PRCNAM")_"^"_$ZC(%GETJPI,0,"USERNAME")_"^"_%ZTER11I_"^"_$ZC(%SYSFAO,"!XL",$J),@%ZTERRT@("I")=$IO_"^"_$ZA_"^"_$ZB_"^"_$ZIO K %ZTER11I ^----- At column 27, line 4, source module /home/sakura/rpms201011/r/ZTER1.m %GTM-E-FNOTONSYS, Function or special variable is not supported by this operating system S @%ZTERRT@("J")=$J_"^"_$ZC(%GETJPI,0,"PRCNAM")_"^"_$ZC(%GETJPI,0,"USERNAME")_"^"_%ZTER11I_"^"_$ZC(%SYSFAO,"!XL",$J),@%ZTERRT@("I")=$IO_"^"_$ZA_"^"_$ZB_"^"_$ZIO K %ZTER11I ^----- At column 55, line 4, source module /home/sakura/rpms201011/r/ZTER1.m %GTM-E-FNOTONSYS, Function or special variable is not supported by this operating system S @%ZTERRT@("J")=$J_"^"_$ZC(%GETJPI,0,"PRCNAM")_"^"_$ZC(%GETJPI,0,"USERNAME")_"^"_%ZTER11I_"^"_$ZC(%SYSFAO,"!XL",$J),@%ZTERRT@("I")=$IO_"^"_$ZA_"^"_$ZB_"^"_$ZIO K %ZTER11I ^----- At column 98, line 4, source module /home/sakura/rpms201011/r/ZTER1.m %GTM-E-FNOTONSYS, Function or special variable is not supported by this operating system S @%ZTERRT@("ZH")=$TR($ZH,",","^") ^----- At column 25, line 5, source module /home/sakura/rpms201011/r/ZTER1.m %GTM-E-INVSVN, Invalid special variable name S %ZTER111="%" F D S %ZTER111=$ZSORT(@%ZTER111) Q:%ZTER111="" ;Code from DEC ^----- At column 35, line 6, source module /home/sakura/rpms201011/r/ZTER1.m %GTM-E-INVFCN, Invalid function name Loaded, Saved as %ZTER1 Routine: ZIS Loaded, Saved as %ZIS Routine: ZIS1 Loaded, Saved as %ZIS1 Routine: ZIS2 Loaded, Saved as %ZIS2 Routine: ZIS3 Loaded, Saved as %ZIS3 Routine: ZIS5 Loaded, Saved as %ZIS5 Routine: ZIS6 Loaded, Saved as %ZIS6 Routine: ZIS7 Loaded, Saved as %ZIS7 Routine: ZISC Loaded, Saved as %ZISC Routine: ZISP Loaded, Saved as %ZISP Routine: ZISS Loaded, Saved as %ZISS Routine: ZISS1 Loaded, Saved as %ZISS1 Routine: ZISS2 Loaded, Saved as %ZISS2 Routine: ZISTCP O NIO:(TCPCHAN,ADDRESS=IP):TO G:'$T NOOPN ^----- At column 9, line 19, source module /home/sakura/rpms201011/r/ZISTCP.m %GTM-E-DEVPARUNK, Deviceparameter unknown U NIO::"TCP" W /SOCKET(IP,SOCK) I $KEY="" C NIO G NOOPN ^----- At column 8, line 24, source module /home/sakura/rpms201011/r/ZISTCP.m %GTM-E-DEVPARUNK, Deviceparameter unknown I $$VERSION^%ZOSV'<5 S %A=$ZUTIL(68,55,1) ^----- At column 29, line 28, source module /home/sakura/rpms201011/r/ZISTCP.m %GTM-E-INVFCN, Invalid function name O NIO:(IP:SOCK:"S"::512:512):TO G:'$T NOOPN ;Make work like DSM ^----- At column 9, line 31, source module /home/sakura/rpms201011/r/ZISTCP.m %GTM-E-DEVPARUNK, Deviceparameter unknown I %ZISOS["DSM",%ZISV'<7 S NIO="SYS$NET" O NIO:(TCPDEV):5 D:$T VAR(NIO) ^----- At column 49, line 65, source module /home/sakura/rpms201011/r/ZISTCP.m %GTM-E-DEVPARUNK, Deviceparameter unknown U NIO::"TCP" W /SOCKET("",SOCK) ^----- At column 8, line 104, source module /home/sakura/rpms201011/r/ZISTCP.m %GTM-E-DEVPARUNK, Deviceparameter unknown O NIO:(:SOCK:"AT"::512:512:3):30 Q:'$T S POP=0 ^----- At column 9, line 112, source module /home/sakura/rpms201011/r/ZISTCP.m %GTM-E-DEVPARUNK, Deviceparameter unknown U NIO:(::"S") ;Work like DSM ^----- At column 9, line 119, source module /home/sakura/rpms201011/r/ZISTCP.m %GTM-E-DEVPARUNK, Deviceparameter unknown S NIO=SOCK O NIO:(TCPCHAN):30 Q:'$T S POP=0 ^----- At column 20, line 124, source module /home/sakura/rpms201011/r/ZISTCP.m %GTM-E-DEVPARUNK, Deviceparameter unknown Loaded, Saved as %ZISTCP Routine: ZISUTL Loaded, Saved as %ZISUTL Routine: ZTPP Loaded, Saved as %ZTPP Routine: ZTP1 Loaded, Saved as %ZTP1 Routine: ZTPTCH Loaded, Saved as %ZTPTCH Routine: ZTRDEL Loaded, Saved as %ZTRDEL Routine: ZTMOVE Missing Want to rename the FileMan routines: No//Y Routine: DIDT Loaded, Saved as %DT Routine: DIDTC Loaded, Saved as %DTC Routine: DIRCR S %D="" F S %D=$O(%RCR(%D)) Q:%D="" ZNEW @%D ^----- At column 40, line 12, source module /home/sakura/rpms201011/r/DIRCR.m %GTM-E-INVCMD, Invalid command keyword encountered Loaded, Saved as %RCR Setting ^%ZIS('C') Now, I will check your % globals........... ALL DONE
Several routines are broken and don't have versions that work for GT.M. Copy them from a WV instance:
%ZISF %ZIS %ZISTCPS %ZTMOVE %RCR %ZOSV
sakura@icarus:~/rpms201011$ cp /opt/worldvista/EHR/routines/_RCR.m r/ sakura@icarus:~/rpms201011$ cp /opt/worldvista/EHR/routines/_ZTMOVE.m r/ sakura@icarus:~/rpms201011$ cp /opt/worldvista/EHR/routines/_ZISF.m r/ sakura@icarus:~/rpms201011$ cp /opt/worldvista/EHR/routines/_ZIS.m r/ sakura@icarus:~/rpms201011$ cp /opt/worldvista/EHR/routines/_ZISTCPS.m r/
Now initialize Fileman:
GTM>d ^DINIT VA FileMan V.22.0 Initialize VA FileMan now? NO//y SITE NAME: DEMO SITE// SITE NUMBER: 8904// .......................... Now loading MUMPS Operating System File.... Now loading DIALOG and LANGUAGE Files........................................... ............... TYPE OF MUMPS SYSTEM YOU ARE USING: CACHE/OpenM// GT.M 1 GT.M(UNIX) 2 GT.M(VAX) CHOOSE 1-2: 1 GT.M(UNIX) Now loading other FileMan files--please wait.................................... ................................................................................ ................................................................................ ................................ .......... The following files have been installed: .11 INDEX .2 DESTINATION .31 KEY .4 PRINT TEMPLATE .401 SORT TEMPLATE .402 INPUT TEMPLATE .403 FORM .404 BLOCK .44 FOREIGN FORMAT .46 IMPORT TEMPLATE .5 FUNCTION .6 DD AUDIT .7 MUMPS OPERATING SYSTEM .81 DATA TYPE .83 COMPILED ROUTINE .84 DIALOG .85 LANGUAGE 1 FILE 1.1 AUDIT 1.11 ARCHIVAL ACTIVITY 1.12 FILEGRAM HISTORY 1.13 FILEGRAM ERROR LOG 1.2 ALTERNATE EDITOR 1.521 SQLI_SCHEMA 1.52101 SQLI_KEY_WORD 1.5211 SQLI_DATA_TYPE 1.5212 SQLI_DOMAIN 1.5213 SQLI_KEY_FORMAT 1.5214 SQLI_OUTPUT_FORMAT 1.5215 SQLI_TABLE 1.5216 SQLI_TABLE_ELEMENT 1.5217 SQLI_COLUMN 1.5218 SQLI_PRIMARY_KEY 1.5219 SQLI_FOREIGN_KEY 1.52191 SQLI_ERROR_TEXT 1.52192 SQLI_ERROR_LOG Re-indexing entries in the DIALOG file..................... Compiling all forms ... DICATT (#.001) DIPTED (#.1001) DIKC EDIT (#.1101) DIKC EDIT UI (#.1102) DIKK EDIT (#.3101) DIBTED (#.40001) DIETED (#.40101) DIEDIT (#.40201) DDGF BLOCK EDIT (#.40301) DDGF PAGE ADD (#.40302) DDGF PAGE EDIT (#.40303) DDGF PAGE SELECT (#.40304) DDGF FORM EDIT (#.40305) DDGF HEADER BLOCK EDIT (#.40306) DDGF FIELD ADD (#.40401) DDGF FIELD CAPTION ONLY (#.40402) DDGF FIELD DD (#.40403) DDGF FIELD FORM ONLY (#.40404) DDGF FIELD COMPUTED (#.40405) DDGF BLOCK ADD (#.40406) DDGF BLOCK DELETE (#.40407) DDGF HEADER BLOCK SELECT (#.40408) DDXP FF FORM1 (#.441) DDMP SPECIFY IMPORT (#.461) XUEDIT CHARACTERISTICS (#1) XUEXISTING USER (#2) BMC REFERRAL ADD (#3) BMC REFERRAL MOD (#4) BMCX REFERRAL ADD (#5) BMC DIAGNOSIS ADD (#6) BMC UPDATE SITE PARAMETERS (#7) BMC ADD/EDIT ROUTINE REF DEF (#8) BMC UPDATE FACILITY ADDRESS (#9) BMC MODIFY DATES (INPT) (#10) AMH ADD [[RECORD~|Record]] 1 (#11) AMH EDIT TX PLAN (#12) XUSITEPARM (#13) XUDEVICE MT (#14) XUDEVICE SDP (#15) XUDEVICE SPL (#16) XUDEVICE HFS (#17) XUDEVICE SYNC (#18) XU-ZTMSCHEDULE (#19) XUDEVICE CHAN (#20) BMC MODIFY DATES (OUPT) (#21) BMC MODIFY COST INFORMATION (#22) BMC MODIFY STATUS FIELDS (#23) BMC MODIFY MEDICAL INFO (#24) BMC DISPLAY SITE PARAMETERS (#25) BMC CHS ADD (#26) BMC ADDITIONAL DOC (#27) AMH PATIENT RELATED DATA (#28) BAR COLLECTION POINT EDIT (#29) BAR BILL FORM1 (#30) BAR COLLECTION ID EDIT (#31) BAR 3P MANUAL BILL ENTRY (#32) BW PROC-FORM-1 (#33) BW NOTIF-FORM-1 (#34) BW PATIENT-FORM-1 (#35) BW NOTIF-FORM-2 (#36) BW PROC-FORM-2-COLP (#37) BW PROC-FORM-LAB (#38) BW NOTIFPURPOSE-FORM-1 (#39) BW SITE PARAMS-FORM-1 (#40) BW PROC-FORM-3-CDC-PAP (#41) BW PROC-FORM-3-CDC-MAM (#42) BCH ENTER PATIENT DATA (#43) BCH EDIT [[RECORD~|Record]] DATA (#44) BCH ENTER CHRIS II DATA (#45) BCH ENTER MEASUREMENTS/TESTS (#46) XPD EDIT BUILD (#47) XU OPTION SCHEDULE (#48) XUSERDEACT (#49) XUTM UCI ASSOC (#50) XUAUDIT (#51) XUREACT USER (#52) XU-PERSON CLASS (#53) XUNEW USER (#54) XPD EDIT MP (#55) XPD EDIT GP (#56) AMH ADD [[RECORD~|Record]] (#57) AMH EDIT [[RECORD~|Record]] (#58) AMH ADD NON-PAT [[RECORD~|Record]] (#59) AMH UPDATE SITE PARAMETERS (#60) AMH UPDATE CASE (#61) ASUJIB ISSUE (#62) ASUJ1DUR (#63) ASUF1DUE (#64) ASUOLI ISSUE (#65) ASUJ1DUE (#66) ASUJ2RCS (#67) ASUJ2RCT (#68) ASUJ2RCR (#69) ASUJ3ISS (#70) ASUJ3ISR (#71) ASUJ3ITF (#72) ASUJ3ITR (#73) ASUJ3INI (#74) ASUJ3INR (#75) ASUJ5STB (#76) ASUJ7DIS (#77) ASUJ7DIR (#78) ASUJ7DIT (#79) ASUJ6ADJ (#80) ASUJ6AJR (#81) ASUJ4IXD (#82) ASUJ4IXC (#83) ASUJ5STA (#84) ASUJ5STC (#85) ASUJ5STD (#86) ASUJ4IXA (#87) APCP EDIT SITE FILE (#88) ANSTST1 (#89) ANSTAFED (#90) ASUJ3CBO (#91) BMC CHS ADD2 (#92) AMHNS ADD RECORD (#93) AMH ENTER/EDIT STAGING TOOL (#94) AMH ADD CASE TRACKING REC (#95) AMHVT ADD [[RECORD~|Record]] (#96) APCD SITE PARAMETER ENTRY (#97) APCD PROBLEM ENTRY ADD/EDIT (#98) XQEDTOPT (#99) XU-INST-EDIT (#100) XUTMKE ADD (#101) BMC REFERRAL MINI ADD (#102) BMCXX REFERRAL ADD (#103) LREPI (#104) APCL EDIT TAXONOMY (#105) APCL EDIT LAB TAXONOMY (#106) APCL FLOW SHEET COMPONENT (#107) BW PROC-FORM-P2 (#108) ASU (#109) APCD DM UPDATE (#110) BAR PROCESS VARIABLE EDIT (#111) BAR EDIT [[DATA TYPES~|Data Types]] (#112) BAR EDIT SEGMENTS OF TRANSPORT (#113) BAR ELEMENTS EDIT (#114) BAR EDI TABLE ID EDIT (#115) BAR CLAIM LEVEL CODES EDIT (#116) BAR LINE LEVEL CODES EDIT (#117) BAR PROVIDER LEVEL CODES EDIT (#118) BAR EDIT POSTING ELEMENTS (#119) BAR EDIT CLAIM POSTING (#120) BAR REPORT GENERATOR (#121) BAR ITEMS EDIT (#122) BDM CMS REGISTER (#123) BDM COMPLICATIONS (#124) BDM COMMENTS (#125) APCD LINKAGE UPDATE (#126) XU-CLINICAL TRAINEE (#127) XUSSPKI (#128) XUDEVICE LPD (#129) APSQ NF REQUEST (#130) APSQ NF PHARMACIST (#131) APSQ NF PT (#132) INHSG SEGMENT (#133) INHO MESSAGE LIST (#134) INHO QSIZ (#135) INHO VS (#136) INHO TOP (#137) INH QUEUE LIST (#138) INHSG FIELD (#139) INHSG MESSAGE (#140) INHSG DATA TYPE (#141) INH BACKGROUND PROCESS (#142) INH DESTINATION ENTRY AND EDIT (#143) INH SECURITY CONTROL (#144) INH MESSAGE REP ENTER EDIT (#145) INH OPERATING SYSTEM (#146) INH SITE PARAMETERS (#147) INHO BPM (#148) INH TRANSACTION TYPE (#149) INH TRANSACTION SEARCH EDIT (#150) INH ERROR SEARCH EDIT (#151) INH ERROR SUMMARY (#152) INH MESSAGE EDIT (#153) INH MESSAGE SEARCH (#154) INH SCRIPT EDIT (#155) INH TEST UTILITY CRITERIA (#156) INHSG X12 MESSAGE (#157) INH ERROR SEARCH (#158) BMC CHS ELIGIBILITY (#159) AUT EDIT AUTTACF (#160) AUT EDIT AUTTACE (#161) AUT EDIT RPMS SITE (#162) AVA CERTIFICATIONS (#163) AVA CERTS (#164) AUT VENDOR EDIT-BILL (#165) AUT VENDOR EDIT-MAIL (#166) AUT VENDOR EDIT-REMIT (#167) AUT VENDOR EDIT-1099 (#168) AUT VENDOR EDIT-ARMS/CIS (#169) AG ELIGIBILITY MATCH EDIT (#170) ACHS LABEL SPACING (#171) ACHS MAILING ADDRESS (#172) ACHS REGISTER NAMES (#173) ACHS PO SIGNATURES (#174) ACHS PO OBLIGA LIMITS (#175) ACHS PO OVERPAY (#176) ACHS AREA DIRECTOR (#177) ACHS SUD (#178) AMHB ADD [[RECORD~|Record]] (#179) AMH SUICIDE FORM UPDATE (#180) AMHASA ADD [[RECORD~|Record]] (#181) AUT LOCATION (#182) AUT TRIBE (#183) XDR RESFILE FORM (#184) HL SITE PARAMETERS (#185) HL7 APP (#186) HL7 LOGICAL LINK (#187) HL7 INTERFACE (#188) BW CVD PAGE 1 (#189) AMH ADD NAV REFERRAL (#190) BW MP MAIN (#191) BW PROC-FORM-1-CBE (#192) XUDEVICE TRM (#193) ABSP EOB TO BATCH (#194) BDM DIAGNOSIS (#195) ABSP ABSPOSPW (#196) BMC SECONDARY REF ADD (#197) ABSP INPUT 1 (#198) BDG CHART DEF EDIT (#199) BDG IC PARAMETERS (#200) BDG IC EDIT (#201) BSD SET UP CLINIC (#202) BDG SECURITY PARAMETERS (#203) BDG SECURITY MAIL GROUP EDIT (#204) BSD PARAM (#205) BDG INCOMPLETE EDIT (#206) BDG SCHED ADMIT (#207) BDG SCHED DAY SURGERY (#208) BDG SCHED OUTPATIENT (#209) BDG PARAM (#210) BDG 45.7 SETUP (#211) BDG 49 SETUP (#212) BDG 9009016.5 SETUP (#213) BDG 405.4 SETUP (#214) BSD PC TEAM EDIT (#215) BSD PCP EDIT MALE (#216) BDG DAY SURGERY EDIT (#217) LREPIPROT (#218) NURA-I-SERVICE (#219) PSB PRN EFFECTIVENESS (#220) PSB MED LOG EDIT (#221) PSBO DL (#222) PSBO WA (#223) PSBO ML (#224) PSBO MM (#225) PSBO PE (#226) PSB MISSING DOSE REQUEST (#227) PSBO MH (#228) PSBO MV (#229) PSB MISSING DOSE FOLLOWUP (#230) PSBO BL (#231) PSBO MD (#232) PSB NEW UD ENTRY (#233) PSB NEW IV ENTRY (#234) PSB MED LOG EDIT IV (#235) INSTITUTION EDIT (#236) BUD 04 SITE PARAMETER (#237) BUD SITE PARAMETER (#238) AMH GROUP ADD/EDIT (#239) ABMDTMS SUPPLY EDIT (#240) APCD SUICIDE FORM UPDATE (#241) APCD PCC MASTER CONTROL UPDATE (#242) BUD 05 SITE PARAMETER (#243) BMC SEC REF ADD (#244) BMC REF ADD CALL-IN (#245) BMC SEC REF ADD CI (#246) BDG 9009016.5 SETUP 2 (#247) BW PROC-FORM-1-HPV (#248) BPM RESFILE FORM (#249) BKMV EDIT TAXONOMY (#252) BKMV EDIT LAB TAXONOMY (#253) APCD UPDATE REPROD FACTORS (#254) BCHB EDIT [[RECORD~|Record]] DATA (#255) BCH ENTER/EDIT SUBJ/OBJ (#256) BCH ENTER LAB/REPROD (#257) BCHB ENTER CHRIS II DATA (#258) BCHB ENTER MEASUREMENTS/TESTS (#259) BCH GROUP ENTRY (#260) AMH UPDATE USER (#261) BNIA UPDATE ACTIVITY [[RECORD~|Record]] (#262) BNI GROUP ENTRY (#263) BNI UPDATE ACTIVITY [[RECORD~|Record]] (#264) BNIA GROUP ENTRY (#265) BNI EDIT SITE PARAMETERS (#266) APCH UPDATE SITE PARAMETERS (#267) BUD 07 SITE PARAMETER (#268) AMH EHR EDIT [[RECORD~|Record]] (#269) APCD EDIT [[TREATMENT~|Treatment]] PLAN (#270) AMHSV EDIT [[RECORD~|Record]] (#271) BUD 08 SITE PARAMETER (#272) ACR REQUISITION (#273) ACR FEDSTRIP ORDER (#274) ACR TMP VENDOR DATA (#275) ACR REQUEST INFO (#276) ACR SUPPLY/SERVICES INFO-2 (#277) ACR TRAINING EVALUATION (#278) ACR TRAVEL ORDER (#279) ACR TRAINING AUTHORIZATION (#280) ACR TRAINING OTHER DATA (#281) ACR TRAINING NEED (#282) ACR TRAVEL DAY-2 (#283) ACR TRAVEL DESTINATION (#284) ACR AIRLINE INFO (#285) ACR PURCHASE ORDER (#286) ACR SMALL PURCHASE DATA (#287) ACR NEW EQUIPMENT (#288) ACR RECEIVING REPORT (#289) ACR HOTEL (#290) ACR OBJECT CODE (#291) ACR BUDGET ACTIVITY (#292) ACR ALLOWANCE NUMBER (#293) ACR FEDERAL SUPPLY CLASSES (#294) ACR PER DIEM (#295) ACR AIRLINE COMPANY (#296) ACR FEDSTRIP LOCATION (#297) ACR LOCATION CODE (#298) ACR RENTAL CAR INFORMATION (#299) ACR SYSTEMS DEF (#300) ACR SYSTEMS DEF-2 (#301) ACR SYSTEMS DHR SETUP (#302) ACR PERSON (#303) ACR ARMS USER (#304) ACR APPROVAL ALTERNATE (#305) ACR PURCHASING OFFICE (#306) ACR PO PRINTER CONTROL (#307) ACR PURCHASING AGENT (#308) ACR PROGRAM (#309) ACR CAN REQUISITION DEFAULTS (#310) ACR CAN PO DEFAULTS (#311) ACR CAN TRAVEL DEFAULTS (#312) ACR CAN TRAINING DEFAULTS (#313) ACR DEPARTMENT ACCT INFO (#314) ACR DEPARTMENT ACCT PURPOSE (#315) ACR DEPARTMENT ACCT ACCESS (#316) ACR APPROPRIATION INFO (#317) ACR ALLOWANCE INFO (#318) ACR ALLOWANCE PURPOSE (#319) ACR SUB-ALLOWANCE INFO (#320) ACR SUB-ALLOWANCE PURPOSE (#321) ACR CAPITALIZED EQUIPMENT (#322) ACR BPA CALL LIMIT (#323) ACR RESPONSE (#324) ACR RESPONSE COMPLETED (#325) ACR CREDIT CARD ITEM (#326) ACR REJECTION/CANCELLATION (#327) ACR REASON FOR CHANGE (#328) ACR CONTRACT [[ACTION~|Action]]-1449 (#329) ACR CONTRACT [[ACTION~|Action]]-26 (#330) ACR CONTRACT CONTENTS (#331) ACR CONTRACT [[ACTION~|Action]]-33 (#332) ACR SUPPLY/SERVICES-CONTRACT (#333) ACR REVIEW PAYMENT-T (#334) ACR BATCH (#335) ACR REVIEW PAYMENT (#336) ACR REVIEW PAYMENT-ALL (#337) ACR DHR (#338) ACR BANK INFORMATION USER (#339) ACR ACH INFO (#340) ACR PERSONNEL INFO (#341) ACR MY PROFILE (#342) ACR TRAVEL INFO (#343) ACR DHR ENTRY 3 (#344) ACR DHR ENTRY 2 (#345) ACR BANK INFORMATION VENDOR (#346) ACR BANK INFORMATION (#347) ACR MY PERSON PROFILE (#348) ACR VENDOR REMIT TO ADDRESS (#349) ACR VENDOR EDIT-SPIS (#350) ACR VENDOR EDIT-MAIL (#351) ACR VENDOR EDIT-CIS (#352) ACR VENDOR EDIT-BILL (#353) ACR VENDOR EDIT-PAY (#354) ACR VENDOR EDIT-REMIT (#355) ACR VENDOR EDIT (#356) ACR VENDOR DISPLAY (#357) ACR VENDOR DISPLAY-INACTIVE (#358) ACR VENDOR DISPLAY-AUTHORITY (#359) ACR VENDOR EDIT-ACT/INACT (#360) ACR VENDOR-NOT SPECIFIED (#361) ACR BANK INFORMATION (#362) BI FORM-VACCINE EDIT (#363) BI FORM-LOT NUMBER EDIT (#364) BI FORM-IMM VISIT ADD/EDIT (#365) BI FORM-SKIN VISIT ADD/EDIT (#366) BI FORM-CASE DATA EDIT (#367) BI FORM-CONTRAINDICATION ADD (#368) BI FORM-CONTRAIND ADD/EDIT (#369) INITIALIZATION COMPLETED IN 7 SECONDS.
Now, initialize ZU:
GTM>d ^ZUSET This routine will rename the correct routine to ZU for you. Rename ZUGTM to ZU, OK? No//y Routine ZUGTM was renamed to ZU
Now, go into the device file and fix the Telnet, Console, Null, and HFS devices.
VA FileMan 22.0 Your Identity(DUZ) is 0(zero). Please identify yourself. Access Code: Your Identity(DUZ) is still 0(zero). You need to identify yourself! New Person?: 4 MANAGER,SYSTEM SM ...OK? Yes// (Yes) Select OPTION: enter OR EDIT FILE ENTRIES INPUT TO WHAT FILE: EXAM// 3.5 DEVICE (31 entries) EDIT WHICH FIELD: ALL// Select DEVICE NAME: TELNET LOGIN Virtual |TNT| NAME: TELNET LOGIN// DEV/PTS LOCATION OF TERMINAL: Virtual// Select MNEMONIC: LOCAL SYNONYM: $I: |TNT|// /dev/pts VOLUME SET(CPU): SIGN-ON/SYSTEM DEVICE: ^ Select DEVICE NAME: WINDOWS CONSOLE CONSOLE |TRM| NAME: WINDOWS CONSOLE// DEV/TTY LOCATION OF TERMINAL: CONSOLE// Select MNEMONIC: LOCAL SYNONYM: $I: |TRM|// /dev/tty VOLUME SET(CPU): SIGN-ON/SYSTEM DEVICE: YES// ^ Select DEVICE NAME: NULL DEVICE NULL DEVICE //./nul NAME: NULL DEVICE// LOCATION OF TERMINAL: NULL DEVICE// GT.M Bit Bucket Select MNEMONIC: 46// @ SURE YOU WANT TO DELETE? y (Yes) Select MNEMONIC: LOCAL SYNONYM: $I: //./nul// /dev/null VOLUME SET(CPU): ^ Select DEVICE NAME: hfs HOST FILE SERVER C:\TMP\TMP.HFS NAME: HFS// LOCATION OF TERMINAL: HOST FILE SERVER// Select MNEMONIC: LOCAL SYNONYM: $I: C:\TMP\TMP.HFS// /tmp/hfs.dat VOLUME SET(CPU): SIGN-ON/SYSTEM DEVICE: NO// TYPE: HOST FILE SERVER// SUBTYPE: P-OTHER// ASK DEVICE: YES// ASK PARAMETERS: YES// ASK HOST FILE: YES// ASK HFS I/O OPERATION: YES// QUEUING: OUT-OF-SERVICE DATE: NEAREST PHONE: KEY OPERATOR: MARGIN WIDTH: 132// PAGE LENGTH: 64// SUPPRESS FORM FEED AT CLOSE: SECURITY: CLOSEST PRINTER: FORM CURRENTLY MOUNTED: OPEN PARAMETERS: "WNS"// CLOSE PARAMETERS: ^open 1 OPEN PARAMETERS 2 OPEN TIMEOUT CHOOSE 1-2: 1 OPEN PARAMETERS OPEN PARAMETERS: "WNS"// (newversion) CLOSE PARAMETERS: USE PARAMETERS: ^
Now you have to test that this actually works. You need to try to use fileman print option to print something. This opens the devices; so you can check that they are actually working. Log into a tty device, then a pts device, and print on HOME device. Also try to print to the Null device and HFS device.
Now time to fix the volume in various files. Find out the correct volume from GETENV^%ZOSV and file it. In this case it's RPMS.
GTM>D GETENV^%ZOSV W Y RPMS^RPMS^icarus^RPMS:icarus GTM>D P^DI VA FileMan 22.0 Select OPTION: ENTER OR EDIT FILE ENTRIES INPUT TO WHAT FILE: DEVICE// VOLUME SET (1 entry) EDIT WHICH FIELD: ALL// Select VOLUME SET: `1 GOLDB VOLUME SET: GOLDB// RPMS TYPE: GENERAL PURPOSE VOLUME SET// INHIBIT LOGONS?: NO// LINK ACCESS?: YES// OUT OF SERVICE?: NO// REQUIRED VOLUME SET?: NO// TASKMAN FILES UCI: GOLDB// RPMS TASKMAN FILES VOLUME SET: RPMS// REPLACEMENT VOLUME SET: DAYS TO KEEP OLD TASKS: 4// SIGNON/PRODUCTION VOLUME SET: Yes// Select VOLUME SET: Select OPTION: ENTER OR EDIT FILE ENTRIES INPUT TO WHAT FILE: VOLUME SET// TASK 1 TASK SYNC FLAG (0 entries) 2 TASKMAN SITE PARAMETERS (1 entry) 3 TASKS (0 entries) CHOOSE 1-3: 2 TASKMAN SITE PARAMETERS (1 entry) EDIT WHICH FIELD: ALL// Select TASKMAN SITE PARAMETERS BOX-VOLUME PAIR: `1 GOLDB:CACHEWEB BOX-VOLUME PAIR: GOLDB:CACHEWEB// ? Answer must be 3-30 characters in length. The value for the current account is RPMS:icarus BOX-VOLUME PAIR: GOLDB:CACHEWEB// RPMS:icarus RESERVED: NO// LOG TASKS?: NO// DEFAULT TASK PRIORITY: 7// TASK PARTITION SIZE: 125// SUBMANAGER RETENTION TIME: 20// TASKMAN JOB LIMIT: 300// TASKMAN HANG BETWEEN NEW JOBS: 5// MODE OF TASKMAN: GENERAL PROCESSOR// VAX DSM ENVIROMENT FOR DCL: ^ Select OPTION: ENTER OR EDIT FILE ENTRIES INPUT TO WHAT FILE: TASKMAN SITE PARAMETERS// KERNEL SITE ?? INPUT TO WHAT FILE: TASKMAN SITE PARAMETERS// KERNEL SYSTEM PARAMETERS (1 entry) EDIT WHICH FIELD: ALL// volumE SET (multiple) EDIT WHICH VOLUME SET SUB-FIELD: ALL// THEN EDIT FIELD: DEFAULT 1 DEFAULT # OF ATTEMPTS 2 DEFAULT AUTO SIGN-ON 3 DEFAULT AUTO-MENU 4 DEFAULT DIRECTORY FOR HFS 5 DEFAULT INSTITUTION Press <RETURN> to see more, '^' to exit this list, OR CHOOSE 1-5: 4 DEFAULT DIRECTORY FOR HFS THEN EDIT FIELD: Select KERNEL SYSTEM PARAMETERS DOMAIN NAME: `1 DEMO.IHS.GOV Select VOLUME SET: GOLDB// RPMS Are you adding 'RPMS' as a new VOLUME SET (the 2ND for this KERNEL SYSTEM PAR AMETERS)? No// (No) ?? Select VOLUME SET: GOLDB// VOLUME SET: GOLDB// RPMS MAX SIGNON ALLOWED: 300// LOG SYSTEM RT?: NO// Select VOLUME SET: DEFAULT DIRECTORY FOR HFS: C:\TEMP// /tmp/
Then fix mailman filer:
Select OPTION: enter OR EDIT FILE ENTRIES INPUT TO WHAT FILE: KERNEL SYSTEM PARAMETERS// mailman 1 MAILMAN OUTSTANDING FTP TRANSACTIONS (0 entries) 2 MAILMAN SITE PARAMETERS (1 entry) 3 MAILMAN TIME ZONE (18 entries) CHOOSE 1-3: 2 MAILMAN SITE PARAMETERS (1 entry) EDIT WHICH FIELD: ALL// cpu (UCI,VOL) FOR FILER TO RUN THEN EDIT FIELD: Select MAILMAN SITE PARAMETERS DOMAIN NAME: DEMO.IHS.GOV ...OK? Yes// (Yes) CPU (UCI,VOL) FOR FILER TO RUN: GOLDB,GOLDB// RPMS,RPMS
Then, if the volume fields of Option Scheduling or Device File reference the wrong volume, you can delete them.
Now, correct Taskman entries. Kill off ^%ZTSK and ^%ZTSCH and then re-index the Option Scheduling file (all indexes). You need to add at least one entry in order for the re-indexing to work.
GTM>D P^DI VA FileMan 22.0 Select OPTION: enter OR EDIT FILE ENTRIES INPUT TO WHAT FILE: OPTION SCHEDULING// EDIT WHICH FIELD: ALL// Select OPTION SCHEDULING NAME: xus,cntXUS PROCESS COUNT CLEANUP XU PROC CNT CLU P XUS Process count cleanup Are you adding 'XU PROC CNT CLUP' as a new OPTION SCHEDULING (the 1ST)? No// y (Yes) QUEUED TO RUN AT WHAT TIME: N+30' (FEB 02, 2011@17:24) DEVICE FOR QUEUED JOB OUTPUT: OTHER DEVICE PARAMETERS: QUEUED TO RUN ON VOLUME SET: RESCHEDULING FREQUENCY: 180M?? FOR AUTOMATIC RE-QUEUING, ANSWER WITH INCREMENT OF HOURS, DAYS, OR MONTHS Examples: 120S = job will be re-run every two minutes 1H = job will be rerun every hour 7D = job will be re-run every week 3M = job will be run once a quarter RESCHEDULING FREQUENCY: 3H SPECIAL QUEUEING: Select VARIABLE NAME: TASK ID: 1001// TASK PARAMETERS: Select OPTION SCHEDULING NAME: Select UTILITY OPTION: RE-INDEX FILE MODIFY WHAT FILE: OPTION SCHEDULING// THERE ARE 6 INDICES WITHIN THIS FILE DO YOU WISH TO RE-CROSS-REFERENCE ONE PARTICULAR INDEX? No// (No) OK, ARE YOU SURE YOU WANT TO KILL OFF THE EXISTING 6 INDICES? No// Y (Yes) DO YOU THEN WANT TO 'RE-CROSS-REFERENCE'? Yes// (Yes) ...EXCUSE ME, LET ME PUT YOU ON 'HOLD' FOR A SECOND... FILE WILL NOW BE 'RE-CROSS-REFERENCED'........ Select UTILITY OPTION: Select OPTION: GTM>ZWRITE ^%ZTSK ^%ZTSK(-1)=1002 ^%ZTSK(1002,0)="ZTSK^XQ1^4^^62124,60949^62124,62640^O^11159^XU PROC CNT CLUP^MAN AGER,SYSTEM^RPMS^RPMS^ZTDESC^^" ^%ZTSK(1002,.03)="XU PROC CNT CLUP - XUS Process count cleanup" ^%ZTSK(1002,.04)=5367576240 ^%ZTSK(1002,.1)="1^62124,60949^^^^^^" ^%ZTSK(1002,.2)="^^^^Q^" ^%ZTSK(1002,.3,"DUZ(",0)="@" ^%ZTSK(1002,.3,"DUZ(",1)="" ^%ZTSK(1002,.3,"DUZ(",2)=7819 ^%ZTSK(1002,.3,"DUZ(","AG")="I" ^%ZTSK(1002,.3,"DUZ(","LANG")="" ^%ZTSK(1002,.3,"XQSCH")=1 ^%ZTSK(1002,.3,"XQY")=11159 GTM>ZWRITE ^%ZTSCH ^%ZTSCH(5367576240,1002)=""
Fix the RPMS Site File. Set the OS to Unix.
GTM>D P^DI VA FileMan 22.0 Select OPTION: ENTER OR EDIT FILE ENTRIES INPUT TO WHAT FILE: OPTION SCHEDULING// RPMS 1 RPMS APPLICATION PARAMETERS (0 entries) 2 RPMS PCC DATA ENTRY CONTROL (205 entries) 3 RPMS RESERVATION (0 entries) 4 RPMS SITE (1 entry) CHOOSE 1-4: 4 RPMS SITE (1 entry) EDIT WHICH FIELD: ALL// OS?? EDIT WHICH FIELD: ALL// OPERATING SYSTEM THEN EDIT FIELD: Select RPMS SITE LOCATION NAME: `1 DEMO IHS CLINIC OPERATING SYSTEM: DOS// ? Enter the Host Operating System i.e. 1 for Unix, 2 for DOS Choose from: 1 UNIX 2 DOS OPERATING SYSTEM: DOS// 1 UNIX
Now try to start Taskman. Run ^ZTMCHK first, then run ^ZTMON to see that it is stopped. Now, run ^ZTMB to start it. After 30 seconds, check ^ZTMON. You should see that Taskman is running. I had a start-up hang first, but it changed to a run.
Now, log in using ^ZU.
GTM>ZWRITE ^VA(200,4,0:.1) ^VA(200,4,0)="MANAGER,SYSTEM^SM^SYSTEM.01^@^^^^^^^^^^^^3" ^VA(200,4,.1)="61697,42636^USER.002" GTM>D ^ZU ** RPMS Starter Database ** Volume set: RPMS:icarus UCI: RPMS Device: /dev/pts/0 ACCESS CODE: ********* VERIFY CODE: ******** Good evening MANAGER,SYSTEM You last signed on Jan 27, 2010 at 07:54 Site set to DEMO IHS CLINIC You must change your VERIFY CODE at this time. Please enter your CURRENT verify code: ******** Enter a new VERIFY CODE: ******** Please re-type the new code to show that I have it right: ******** OK, Verify code has been changed! Select TERMINAL TYPE NAME: C-VT100// Digital Equipment Corporation VT-100 video 1 IHS Core ... 2 Device Management ... 3 Manage Mailman ... 4 Menu Management ... 5 Programmer Options ... 6 Operations Management ... 7 Spool Management ... 8 Information Security Officer Menu ... 9 Taskman Management ... 10 User Management ... 11 VA FileMan ... AVA IHS Provider/Person Add/Edit ... Select IHS Kernel Option:
Now, I back up the database.
IV. Making BMX work
This required some coding, as the BMX broker does not support GT.M by default. Thankfully, I did this a year and a half ago; and I applied all my changes that were only specific to GT.M, but not to VISTA.
Changes were required in 3 routines: BMXMON, BMXMSEC, BMXSQL6, and I brought in the logging routine XWBDLOG from VISTA. You will find these in the p directory.
1st, create a xinetd service pointing to a shell script to execute upon connection. As an example, here is mine:
sakura@icarus:~/rpms201011$ cat /etc/xinetd.d/rpms_9101 service rpms_9101_BMX { port = 9101 socket_type = stream protocol = tcp user = sakura server = /home/sakura/rpms201011/xinetd-BMX.sh type = UNLISTED wait = no disable = no groups = yes }
Then the shell script to open the connection with the database. Here is mine:
sakura@icarus:~/rpms201011$ cat /home/sakura/rpms201011/xinetd-BMX.sh #!/bin/bash cd `dirname $0` . env.rpms logger -t 'RPMS-BMX' 'Entry from xinetd' mumps -run XINETD^BMXMON logger -t 'RPMS-BMX' 'Exit from xinetd' exit 0
Good sense dictates testing before throwing the real stuff at it.
sudo service xinetd stop sudo xinetd -d (from another window) tail -f /var/log/syslog (from yet another window) telnet localhost 9101
Here is the output that I got:
Telnet:
Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. O BMXDEV:(:BMXPORT:"S"):5 I '$T Q ;IHS/OIT/HMW SAC Exemption Applied For ^----- At column 12, line 145, source module /home/sakura/rpms201011/p/BMXMON.m %GTM-E-DEVPARUNK, Deviceparameter unknown . . J SESSION^BMXMON(BMXWIN)[BMXNSJ]:(:5:BMXDEV:BMXDEV):5 ;IHS/OIT/HMW SAC Exemption Applied For ^----- At column 30, line 164, source module /home/sakura/rpms201011/p/BMXMON.m %GTM-E-SPOREOL, Either a space or an end-of-line was expected but not found
Syslog
Feb 19 14:30:49 icarus RPMS-BMX: Entry from xinetd (later) Feb 19 14:30:59 icarus RPMS-BMX: Exit from xinetd
Xinetd
11/2/19@14:30:49: DEBUG: 3280 {server_start} Starting service rpms_9101_BMX 11/2/19@14:30:49: DEBUG: 3280 {main_loop} active_services = 5 11/2/19@14:30:49: DEBUG: 3360 {exec_server} duping 11 11/2/19@14:30:59: DEBUG: 3280 {main_loop} active_services = 5 11/2/19@14:30:59: DEBUG: 3280 {main_loop} select returned 1 11/2/19@14:30:59: DEBUG: 3280 {check_pipe} Got signal 17 (Child exited) 11/2/19@14:30:59: DEBUG: 3280 {child_exit} waitpid returned = 3360 11/2/19@14:30:59: DEBUG: 3280 {server_end} rpms_9101_BMX server 3360 exited 11/2/19@14:30:59: INFO: 3280 {conn_free} freeing connection 11/2/19@14:30:59: DEBUG: 3280 {child_exit} waitpid returned = -1 11/2/19@14:30:59: DEBUG: 3280 {main_loop} active_services = 5
You can also use my BMXCmdTester that I authored in C#. <https://trac.opensourcevista.net/svn/BMXNET_RPMS_dotNET_UTILITIES-BMX/trunk/cs/bmx_0200scr/BMX2/BMXCmdTester/bmxTesterForVista_0200.cs>. Just remember to compile it with the RPMS flag b/c one of the tests differs b/n VISTA and RPMS.
V. Making CIA work
I had to make changes to a couple of routines to get CIA to work with GT.M: CIANBACT, and CIANBLIS. They will be in the p folder. I also introduced logging using XWBDLOG.
First, make sure that you configured the UCI correctly in the CIA Broker Settings as it is rather very picky about getting that right.
GTM>S DUZ=4 D ^XUP Setting up programmer environment This is a TEST account. Terminal Type set to: C-VT100 Select OPTION NAME: CIANB (choose 5) 1 CIANB MAIN MENU CIA Broker Main Menu 2 CIANB NIGHTLY TASK Submit Cleanup Task 3 CIANB PURGE EVENT LOG Purge Event Log 4 CIANB REGISTERED LISTENERS Edit Registered Listeners 5 CIANB SITE PARAMETERS Edit CIA Broker Package Parameters Edit CIA Broker Package Parameters CIA RPC Broker Site Parameters for System: DEMO.IHS.GOV ------------------------------------------------------------------------------ Host polling interval 5 Maximum number of resource devices 4 Number of resource slots to allocate 4 Authentication method GOLDB Normal ------------------------------------------------------------------------------ ---------- Setting Host polling interval for System: DEMO.IHS.GOV ---------- Host Polling Interval: 5// ---- Setting Maximum number of resource devices for System: DEMO.IHS.GOV ---- Resource Device Count: 4// --- Setting Number of resource slots to allocate for System: DEMO.IHS.GOV --- Resource Device Slots: 4// ---------- Setting Authentication method for System: DEMO.IHS.GOV ---------- Select UCI: ? UCI Value --- ----- GOLDB Normal (here I delete GOLDB). DEMO IHS CLINIC CIA NETWORK COMPONENTS Version 1.1 Edit CIA Broker Package Parameters CIA RPC Broker Site Parameters for System: DEMO.IHS.GOV ------------------------------------------------------------------------------ Host polling interval 5 Maximum number of resource devices 4 Number of resource slots to allocate 4 Authentication method ------------------------------------------------------------------------------ ---------- Setting Host polling interval for System: DEMO.IHS.GOV ---------- Host Polling Interval: 5// ---- Setting Maximum number of resource devices for System: DEMO.IHS.GOV ---- Resource Device Count: 4// --- Setting Number of resource slots to allocate for System: DEMO.IHS.GOV --- Resource Device Slots: 4// ---------- Setting Authentication method for System: DEMO.IHS.GOV ---------- Select UCI: RPMS Are you adding RPMS as a new UCI? Yes// YES UCI: RPMS// RPMS Authentication method: ? Enter a code from the list. Select one of the following: 0 Normal 1 Client Cached 2 Server Cached Authentication method: 2 Server Cached Select UCI: CIA RPC Broker Site Parameters for System: DEMO.IHS.GOV is now: ------------------------------------------------------------------------------ Host polling interval 5 Maximum number of resource devices 4 Number of resource slots to allocate 4 Authentication method RPMS Server Cached ------------------------------------------------------------------------------ Enter RETURN to continue or '^' to exit:
Like BMX, you need the xinetd server and the shell script.
Here's the server:
sakura@icarus:~$ cat /etc/xinetd.d/rpms_9100 service rpms_CIA_client { port = 9100 socket_type = stream protocol = tcp user = sakura server = /home/sakura/rpms201011/xinetd-CIA.sh type = UNLISTED wait = no disable = no groups = yes }
Here's the script:
sakura@icarus:~$ cat /home/sakura/rpms201011/xinetd-CIA.sh #!/bin/bash cd `dirname $0` . env.rpms logger -t 'RPMS-CIA' 'Entry from xinetd' mumps -run %XCMD 'D EN^CIANBLIS(9100,$ZTRNLNM("REMOTE_HOST"),2)' logger -t 'RPMS-CIA' 'Exit from xinetd' exit 0
where 9100 is the port number. I haven't figured out an automatic way to get the port number yet.
Now you can do the tests. Have fun. Also, there is a python script (which I again modified... by the time you read this Conor should have made the changes) that can communicate with the CIA Broker (http://repository.caregraf.org/fmql/raw-file/3e64e4d744c3/Python/brokerRPC.py)
VI. Setting the Agency Code correctly for VueCentric
Due to a line in BEHOPTCX that is new with EHR patch 6, it looks for the agency and based on that decides whether to get the HRN or MRN. The routine for MRN is missing. So you have to make sure that the DUZ("AG") is always going to be "I". In the Kernel, this is already the case; so ^XUP will get you the right agency. That is not the case though with the Insitution which ^XUS looks for; so you need to change the institution on the only institution in the system.
NAME: DEMO IHS CLINIC STATE: ILLINOIS STATUS: Local STREET ADDR. 1: 123 ELM STREET CITY: ANYWHERE ZIP: 99999 STATION NUMBER: 8904 AGENCY CODE: OTHER POINTER TO AGENCY: OTHER CODING SYSTEM: VASTANUM ID: 10001 EFFECTIVE DATE/TIME: NOV 08, 2009 STATUS: ACTIVE MULTI-DIVISION FACILITY: NO GTM>D P^DI VA FileMan 22.0 Select OPTION: ENTER OR EDIT FILE ENTRIES INPUT TO WHAT FILE: INSTITUTION// EDIT WHICH FIELD: ALL// AGENCY CODE THEN EDIT FIELD: Select INSTITUTION NAME: `1 ?? Select INSTITUTION NAME: DEMO IHS CLINIC 12 IL 8904 AGENCY CODE: OTHER// IHS IHS
VII. BEHOCACV
Routine BEHOCACV had a bug in it, and apparently Cache didn't care. Also in the p directory, you will find a modified version that fixes the tiny bug.
VIII: Conclusion
With all of these changes VueCentric should work okay; however, there are a lot of stuff that has either been stripped out (like the Lexicon, so you can't really do any coded documentation) or Immunization Forecasting, which so far is written only for Cache. Conceivable, the .so or .dll files should work under Linux, but the BIX routines are written for Cache only, and I haven't touched them yet.
IHS uses yet another Broker for the legacy IHS Patient Chart. This is still used in IHS in Psychiatry. I haven't ported that.
IV: Screenshots
Logging into VueCentric running on Linux using wine.
But on Linux, VueCentric complains that you don't have a valid license.
VueCentric Manager running on Linux using wine. It works, almost fine, except for the tabs.
IM on VueCentric. VueCentric is running on Windows against an RPMS GT.M Database.