Index: cprs/branches/tmg-cprs/Server_KIDS/TMG1-1.0-6.KIDS
===================================================================
--- cprs/branches/tmg-cprs/Server_KIDS/TMG1-1.0-6.KIDS	(revision 732)
+++ cprs/branches/tmg-cprs/Server_KIDS/TMG1-1.0-6.KIDS	(revision 732)
@@ -0,0 +1,448 @@
+KIDS Distribution saved on Mar 31, 2010@18:47:29
+TMG1*1.0*6
+**KIDS**:TMG1*1.0*6^
+
+**INSTALL NAME**
+TMG1*1.0*6
+"BLD",7631,0)
+TMG1*1.0*6^^0^3100331^n
+"BLD",7631,1,0)
+^^2^2^3100331^^
+"BLD",7631,1,1,0)
+This patch adds custom fields to NETWORK LOCATION file
+"BLD",7631,1,2,0)
+needed for TMG-CPRS imaging.
+"BLD",7631,4,0)
+^9.64PA^2005.2^1
+"BLD",7631,4,2005.2,0)
+2005.2
+"BLD",7631,4,2005.2,2,0)
+^9.641^2005.2^1
+"BLD",7631,4,2005.2,2,2005.2,0)
+NETWORK LOCATION  (File-top level)
+"BLD",7631,4,2005.2,2,2005.2,1,0)
+^9.6411^22702^3
+"BLD",7631,4,2005.2,2,2005.2,1,22700,0)
+TMG PRIVATE PHYSICAL REFERENCE
+"BLD",7631,4,2005.2,2,2005.2,1,22701,0)
+TMG NODE DIVIDER SYMBOL
+"BLD",7631,4,2005.2,2,2005.2,1,22702,0)
+TMG DROPBOX PHYSICAL REFERENCE
+"BLD",7631,4,2005.2,222)
+y^y^p^^^^n^^n
+"BLD",7631,4,2005.2,224)
+
+"BLD",7631,4,"APDD",2005.2,2005.2)
+
+"BLD",7631,4,"APDD",2005.2,2005.2,22700)
+
+"BLD",7631,4,"APDD",2005.2,2005.2,22701)
+
+"BLD",7631,4,"APDD",2005.2,2005.2,22702)
+
+"BLD",7631,4,"B",2005.2,2005.2)
+
+"BLD",7631,6.3)
+1
+"BLD",7631,"KRN",0)
+^9.67PA^8989.52^19
+"BLD",7631,"KRN",.4,0)
+.4
+"BLD",7631,"KRN",.401,0)
+.401
+"BLD",7631,"KRN",.402,0)
+.402
+"BLD",7631,"KRN",.403,0)
+.403
+"BLD",7631,"KRN",.5,0)
+.5
+"BLD",7631,"KRN",.84,0)
+.84
+"BLD",7631,"KRN",3.6,0)
+3.6
+"BLD",7631,"KRN",3.8,0)
+3.8
+"BLD",7631,"KRN",9.2,0)
+9.2
+"BLD",7631,"KRN",9.8,0)
+9.8
+"BLD",7631,"KRN",19,0)
+19
+"BLD",7631,"KRN",19.1,0)
+19.1
+"BLD",7631,"KRN",101,0)
+101
+"BLD",7631,"KRN",409.61,0)
+409.61
+"BLD",7631,"KRN",771,0)
+771
+"BLD",7631,"KRN",870,0)
+870
+"BLD",7631,"KRN",8989.51,0)
+8989.51
+"BLD",7631,"KRN",8989.52,0)
+8989.52
+"BLD",7631,"KRN",8994,0)
+8994
+"BLD",7631,"KRN","B",.4,.4)
+
+"BLD",7631,"KRN","B",.401,.401)
+
+"BLD",7631,"KRN","B",.402,.402)
+
+"BLD",7631,"KRN","B",.403,.403)
+
+"BLD",7631,"KRN","B",.5,.5)
+
+"BLD",7631,"KRN","B",.84,.84)
+
+"BLD",7631,"KRN","B",3.6,3.6)
+
+"BLD",7631,"KRN","B",3.8,3.8)
+
+"BLD",7631,"KRN","B",9.2,9.2)
+
+"BLD",7631,"KRN","B",9.8,9.8)
+
+"BLD",7631,"KRN","B",19,19)
+
+"BLD",7631,"KRN","B",19.1,19.1)
+
+"BLD",7631,"KRN","B",101,101)
+
+"BLD",7631,"KRN","B",409.61,409.61)
+
+"BLD",7631,"KRN","B",771,771)
+
+"BLD",7631,"KRN","B",870,870)
+
+"BLD",7631,"KRN","B",8989.51,8989.51)
+
+"BLD",7631,"KRN","B",8989.52,8989.52)
+
+"BLD",7631,"KRN","B",8994,8994)
+
+"FIA",2005.2)
+NETWORK LOCATION
+"FIA",2005.2,0)
+^MAG(2005.2,
+"FIA",2005.2,0,0)
+2005.2I
+"FIA",2005.2,0,1)
+y^y^p^^^^n^^n
+"FIA",2005.2,0,10)
+
+"FIA",2005.2,0,11)
+
+"FIA",2005.2,0,"RLRO")
+
+"FIA",2005.2,2005.2)
+1
+"FIA",2005.2,2005.2,22700)
+
+"FIA",2005.2,2005.2,22701)
+
+"FIA",2005.2,2005.2,22702)
+
+"MBREQ")
+0
+"QUES","XPF1",0)
+Y
+"QUES","XPF1","??")
+^D REP^XPDH
+"QUES","XPF1","A")
+Shall I write over your |FLAG| File
+"QUES","XPF1","B")
+YES
+"QUES","XPF1","M")
+D XPF1^XPDIQ
+"QUES","XPF2",0)
+Y
+"QUES","XPF2","??")
+^D DTA^XPDH
+"QUES","XPF2","A")
+Want my data |FLAG| yours
+"QUES","XPF2","B")
+YES
+"QUES","XPF2","M")
+D XPF2^XPDIQ
+"QUES","XPI1",0)
+YO
+"QUES","XPI1","??")
+^D INHIBIT^XPDH
+"QUES","XPI1","A")
+Want KIDS to INHIBIT LOGONs during the install
+"QUES","XPI1","B")
+NO
+"QUES","XPI1","M")
+D XPI1^XPDIQ
+"QUES","XPM1",0)
+PO^VA(200,:EM
+"QUES","XPM1","??")
+^D MG^XPDH
+"QUES","XPM1","A")
+Enter the Coordinator for Mail Group '|FLAG|'
+"QUES","XPM1","B")
+
+"QUES","XPM1","M")
+D XPM1^XPDIQ
+"QUES","XPO1",0)
+Y
+"QUES","XPO1","??")
+^D MENU^XPDH
+"QUES","XPO1","A")
+Want KIDS to Rebuild Menu Trees Upon Completion of Install
+"QUES","XPO1","B")
+NO
+"QUES","XPO1","M")
+D XPO1^XPDIQ
+"QUES","XPZ1",0)
+Y
+"QUES","XPZ1","??")
+^D OPT^XPDH
+"QUES","XPZ1","A")
+Want to DISABLE Scheduled Options, Menu Options, and Protocols
+"QUES","XPZ1","B")
+NO
+"QUES","XPZ1","M")
+D XPZ1^XPDIQ
+"QUES","XPZ2",0)
+Y
+"QUES","XPZ2","??")
+^D RTN^XPDH
+"QUES","XPZ2","A")
+Want to MOVE routines to other CPUs
+"QUES","XPZ2","B")
+NO
+"QUES","XPZ2","M")
+D XPZ2^XPDIQ
+"VER")
+8.0^22.0
+"^DD",2005.2,2005.2,22700,0)
+TMG PRIVATE PHYSICAL REFERENCE^F^^22700;1^K:$L(X)>250!($L(X)<1) X
+"^DD",2005.2,2005.2,22700,3)
+Answer must be 1-250 characters in length
+"^DD",2005.2,2005.2,22700,21,0)
+^^4^4^3080131^^
+"^DD",2005.2,2005.2,22700,21,1,0)
+This field was added by TMG site to allow for a private network location
+"^DD",2005.2,2005.2,22700,21,2,0)
+that is different from the physical location specified by field#1.
+"^DD",2005.2,2005.2,22700,21,3,0)
+
+"^DD",2005.2,2005.2,22700,21,4,0)
+Enter ??? for more information.
+"^DD",2005.2,2005.2,22700,23,0)
+^^45^45^3080131^^
+"^DD",2005.2,2005.2,22700,23,1,0)
+This field allows for a private network address that may be different from
+"^DD",2005.2,2005.2,22700,23,2,0)
+the public physical location store in field #1 (PHYSICAL REFERENCE).
+"^DD",2005.2,2005.2,22700,23,3,0)
+
+"^DD",2005.2,2005.2,22700,23,4,0)
+For example, if field #1 is specified to be \\imageserver\images\ , then
+"^DD",2005.2,2005.2,22700,23,5,0)
+when images are stored (using data from this NETWORK LOCATION file), the
+"^DD",2005.2,2005.2,22700,23,6,0)
+location name passed to the client might be as follows:
+"^DD",2005.2,2005.2,22700,23,7,0)
+
+"^DD",2005.2,2005.2,22700,23,8,0)
+\\imageserver\images\IMAGE0001.JPG
+"^DD",2005.2,2005.2,22700,23,9,0)
+
+"^DD",2005.2,2005.2,22700,23,10,0)
+But if, instead, one wanted to keep the actual location of the files stored
+"^DD",2005.2,2005.2,22700,23,11,0)
+private, then one could put "\" into field #1, and then the actual location
+"^DD",2005.2,2005.2,22700,23,12,0)
+into this field (TMG PRIVATE PHYSICAL REFERENCE). This is dependent on using
+"^DD",2005.2,2005.2,22700,23,13,0)
+TMG UPLOAD and DOWNLOAD RPC calls that utilize this field.
+"^DD",2005.2,2005.2,22700,23,14,0)
+
+"^DD",2005.2,2005.2,22700,23,15,0)
+This field was developed by the TMG site during customization of the VistA
+"^DD",2005.2,2005.2,22700,23,16,0)
+Imaging system into a document-imaging system.  The prior method used by
+"^DD",2005.2,2005.2,22700,23,17,0)
+VistA was to pass the filepath and filename that had been set up on a
+"^DD",2005.2,2005.2,22700,23,18,0)
+Windows server.  The client was required to be part of this same filesystem. 
+"^DD",2005.2,2005.2,22700,23,19,0)
+And the client would then store files directly.
+"^DD",2005.2,2005.2,22700,23,20,0)
+
+"^DD",2005.2,2005.2,22700,23,21,0)
+The TMG site, however, wanted to use a linux server that did not setup
+"^DD",2005.2,2005.2,22700,23,22,0)
+directory shares, and thus were not accessible to windows clients.  Transfer
+"^DD",2005.2,2005.2,22700,23,23,0)
+code was created to pass binary files through the RPC Broker (using BASE64
+"^DD",2005.2,2005.2,22700,23,24,0)
+ascii armour encoding).  Thus when the client asks to save a file, it would
+"^DD",2005.2,2005.2,22700,23,25,0)
+be a security violation to allow any arbitrary directory (including
+"^DD",2005.2,2005.2,22700,23,26,0)
+sensitive locations.)
+"^DD",2005.2,2005.2,22700,23,27,0)
+
+"^DD",2005.2,2005.2,22700,23,28,0)
+Thus at the TMG site, RPC routines such as MAGGADDIMAGE (client asks to upload a file, and
+"^DD",2005.2,2005.2,22700,23,29,0)
+server prepares an appropriate filename for it) would use field #1 (PHYSICAL
+"^DD",2005.2,2005.2,22700,23,30,0)
+REFERENCE... SET TO "/") and pass back a file name like this:
+"^DD",2005.2,2005.2,22700,23,31,0)
+  /FILE0001.JPG
+"^DD",2005.2,2005.2,22700,23,32,0)
+The server upload code (UPLOAD^TMGRPC1) would use TMG PRIVATE PHYSICAL
+"^DD",2005.2,2005.2,22700,23,33,0)
+REFERENCE (of '/var/local/images/') to actually store the file to:
+"^DD",2005.2,2005.2,22700,23,34,0)
+  e.g.  /var/local/images/FILE0001.JPG
+"^DD",2005.2,2005.2,22700,23,35,0)
+
+"^DD",2005.2,2005.2,22700,23,36,0)
+The actual file location is then a concatenation of:
+"^DD",2005.2,2005.2,22700,23,37,0)
+  TMG PRIVATE PHYSICAL REFERENCE + PHYSICAL REFERENCE
+"^DD",2005.2,2005.2,22700,23,38,0)
+
+"^DD",2005.2,2005.2,22700,23,39,0)
+During use, UPLOAD^TMGRPC1 will make sure that //'s don't occur.  I.e. if:
+"^DD",2005.2,2005.2,22700,23,40,0)
+  TMG PRIVATE PHYSICAL REFERENCE = "/var/local/server/"  and
+"^DD",2005.2,2005.2,22700,23,41,0)
+  PHYSICAL REFERENCE = "/images/"
+"^DD",2005.2,2005.2,22700,23,42,0)
+then final result would be 
+"^DD",2005.2,2005.2,22700,23,43,0)
+  "/var/local/server/images/"
+"^DD",2005.2,2005.2,22700,23,44,0)
+not
+"^DD",2005.2,2005.2,22700,23,45,0)
+  "/var/local/server//images/"
+"^DD",2005.2,2005.2,22700,"DT")
+3050927
+"^DD",2005.2,2005.2,22701,0)
+TMG NODE DIVIDER SYMBOL^F^^22701;1^K:$L(X)>1!($L(X)<1)!'((X="\")!(X="/")) X
+"^DD",2005.2,2005.2,22701,3)
+Answer must be 1 character in length.
+"^DD",2005.2,2005.2,22701,21,0)
+^^7^7^3050927^^
+"^DD",2005.2,2005.2,22701,21,1,0)
+Enter the symbol used by the file system to used directories.
+"^DD",2005.2,2005.2,22701,21,2,0)
+
+"^DD",2005.2,2005.2,22701,21,3,0)
+i.e. for Windows, would be \
+"^DD",2005.2,2005.2,22701,21,4,0)
+    and for Unix, would be /
+"^DD",2005.2,2005.2,22701,21,5,0)
+
+"^DD",2005.2,2005.2,22701,21,6,0)
+e.g. Windows:  c:\dir1\dir2
+"^DD",2005.2,2005.2,22701,21,7,0)
+     Unix      /dir1/dir2
+"^DD",2005.2,2005.2,22701,"DT")
+3050927
+"^DD",2005.2,2005.2,22702,0)
+TMG DROPBOX PHYSICAL REFERENCE^F^^22702;1^K:$L(X)>250!($L(X)<1) X
+"^DD",2005.2,2005.2,22702,3)
+Answer must be 1-250 characters in length.
+"^DD",2005.2,2005.2,22702,21,0)
+^^2^2^3080131^^
+"^DD",2005.2,2005.2,22702,21,1,0)
+This should be the path that the server may use to obtain 
+"^DD",2005.2,2005.2,22702,21,2,0)
+a file from the dropbox.  ?? for more help.
+"^DD",2005.2,2005.2,22702,23,0)
+^^41^41^3080131^^
+"^DD",2005.2,2005.2,22702,23,1,0)
+Enter the name of the folder that the server will use as a drop
+"^DD",2005.2,2005.2,22702,23,2,0)
+box location.
+"^DD",2005.2,2005.2,22702,23,3,0)
+  e.g.:
+"^DD",2005.2,2005.2,22702,23,4,0)
+   /mnt/Winserver/dropbox/
+"^DD",2005.2,2005.2,22702,23,5,0)
+
+"^DD",2005.2,2005.2,22702,23,6,0)
+This custom field was added at the TMG site to allow uploading
+"^DD",2005.2,2005.2,22702,23,7,0)
+of files via a 'drop box' method.
+"^DD",2005.2,2005.2,22702,23,8,0)
+
+"^DD",2005.2,2005.2,22702,23,9,0)
+Background: The original VistA setup was to have the client and
+"^DD",2005.2,2005.2,22702,23,10,0)
+server to share a custom filesystem.  During requests to upload
+"^DD",2005.2,2005.2,22702,23,11,0)
+a file from CPRS, the server would pass a file path+name to CPRS
+"^DD",2005.2,2005.2,22702,23,12,0)
+and the client would directly write to the location.  TMG felt
+"^DD",2005.2,2005.2,22702,23,13,0)
+this to represent poor security, as anyone on a client machine
+"^DD",2005.2,2005.2,22702,23,14,0)
+could browse the image directory directly (with a file browser)
+"^DD",2005.2,2005.2,22702,23,15,0)
+and see private images.
+"^DD",2005.2,2005.2,22702,23,16,0)
+
+"^DD",2005.2,2005.2,22702,23,17,0)
+So a RPC call was created to upload the file to the server through
+"^DD",2005.2,2005.2,22702,23,18,0)
+the RPC broker, using ASCII Armour Encoding to pass binary files.
+"^DD",2005.2,2005.2,22702,23,19,0)
+This was OK, but each file transfer took 1-10 seconds, and was too
+"^DD",2005.2,2005.2,22702,23,20,0)
+slow for higher volume settings.
+"^DD",2005.2,2005.2,22702,23,21,0)
+
+"^DD",2005.2,2005.2,22702,23,22,0)
+So this method now uses a secure 'drop box' method.  It does require
+"^DD",2005.2,2005.2,22702,23,23,0)
+a shared filesystem between server and client, but ensures that the
+"^DD",2005.2,2005.2,22702,23,24,0)
+client can not browse files on the server after uploading them.
+"^DD",2005.2,2005.2,22702,23,25,0)
+The client does a file copy to the drop box drive location, and then
+"^DD",2005.2,2005.2,22702,23,26,0)
+notifies the server.  The server then moves the file to a secure
+"^DD",2005.2,2005.2,22702,23,27,0)
+private location.  Later, when the client needs the file back, the
+"^DD",2005.2,2005.2,22702,23,28,0)
+process is reversed: the server is asked for the file, the file is
+"^DD",2005.2,2005.2,22702,23,29,0)
+moved to the drop box, and the client moves it to its needed location.
+"^DD",2005.2,2005.2,22702,23,30,0)
+
+"^DD",2005.2,2005.2,22702,23,31,0)
+This will still be slightly slower than direct access, but provides
+"^DD",2005.2,2005.2,22702,23,32,0)
+more security.  It depends on the client to delete the file from the
+"^DD",2005.2,2005.2,22702,23,33,0)
+dropbox, and from its local client location after finishing use.
+"^DD",2005.2,2005.2,22702,23,34,0)
+
+"^DD",2005.2,2005.2,22702,23,35,0)
+Note: the client will probably have a different name for the drop box
+"^DD",2005.2,2005.2,22702,23,36,0)
+location, and client configuration will be required as well.
+"^DD",2005.2,2005.2,22702,23,37,0)
+E.g.
+"^DD",2005.2,2005.2,22702,23,38,0)
+   Linux server has dropbox at /mnt/Winserver/dropbox/
+"^DD",2005.2,2005.2,22702,23,39,0)
+   Windows Client has access to dropbox at V:\Dropbox\
+"^DD",2005.2,2005.2,22702,23,40,0)
+
+"^DD",2005.2,2005.2,22702,23,41,0)
+This field stores only the server dropbox location.
+"^DD",2005.2,2005.2,22702,"DT")
+3080131
+**END**
+**END**
Index: cprs/branches/tmg-cprs/Server_KIDS/TMG1-1.0-6.TXT
===================================================================
--- cprs/branches/tmg-cprs/Server_KIDS/TMG1-1.0-6.TXT	(revision 732)
+++ cprs/branches/tmg-cprs/Server_KIDS/TMG1-1.0-6.TXT	(revision 732)
@@ -0,0 +1,162 @@
+$TXT Created by TOPPENBERG,KEVIN at FAMILY PHYSICANS OF GREENEVILLE (KIDS) on 1/7/10
+=============================================================================
+Run Date: 3/31/10		     Designation: TMG1-1.0*1.0*6
+Package : TMG - FAMILY PHYSICANS OF GREENEVILLE  Priority: Optional
+Version : 1       SEQ #6                       Status: Released
+=============================================================================
+
+Associated patches: None
+
+Subject: Patch to support TMG-CPRS Imaging
+
+Category:
+  - Routine
+
+Description:
+============
+  This patch provides adds extra fields use with TMG-CPRS imaging, added to NETWORK LOCATION
+  file, with field numbers and field names being in the TMG numberspace.
+
+Important background information
+================================
+  Traditional CPRS does not support built in imaging.  It will show an icon next to a note
+  to flag that there is an image attached to the note.  But it does not provide a way to
+  view this.  This task has been deligated to a separate application, VistA Imaging (VI).
+
+  TMG-CPRS integrates the display of such objects into a separate IMAGES tab inside TMG-CPRS.
+
+  With VI, the server will provide the name of the linked image.  It is the responsibility of the
+  client to fetch the image via a shared MS Windows samba filesystem.  We did not feel this gave
+  adequate security, as anyone at this computer could browse all images if they simply knew the
+  folder path.
+
+  TMG-CPRS changes this system slightly.  I should still be compatible with other VistA imaging
+  solutions, though this has not been tested.  It uses a drop-box system, whereby the server puts
+  the requested files into a drop-box folder.  And it is from here that TMG-CPRS moves the image
+  to a local temporary folder on the client.  In this way, the server controls what is visible 
+  to the client.
+
+  At our location, we have a linux server running VistA, and we have a MS Windows server running
+  our domain for all the desktop client PC's.  We store the images on the linux server, and put
+  the drop-box folder on the MS Windows machine.  We then mount the windows drive as a drive on the
+  Linux filesystem.
+
+  TMG-CPRS has functionality to also transport the images inside RPC calls (independant of any
+  requirements for a common file system.)  But it is slower.  It also has the ability to interact 
+  directly with the stored images folder, if that is how an administer wants to set things up.
+  However, at the time of this writing that have not been fully debugged and are turned off.
+
+  Information about images is stored in the IMAGE file (2005) on the server.  A file name will be
+  stored in the FILEREF field, but there is no path included in the file name.  This allows the
+  images to be moved if needed without breaking the filename.  The TMG-CPRS RPC calls need to know
+  where the images are stored.  And it needs to know where the drop box is.  This information is
+  stored in the three custom fields below.
+
+  The patch provides three custom fields to the NETWORK LOCATION file:
+
+	22700-TMG PRIVATE PHYSICAL REFERENCE    e.g. /opt/var/Vista/server-files
+ 	22701-TMG NODE DIVIDER SYMBOL           e.g. /
+ 	22702-TMG DROPBOX PHYSICAL REFERENCE    e.g. /mnt/WinServer/dropbox/
+
+  The final piece of configuration that will be required to be set up is the filepath of the 
+  drop-boxfolder on the MS Windows samba filesystem.  This will allow TMG-CPRS to pull the image 
+  and display it.  This will be configurable under TMG-CPRS options.  Options --> Images tab.
+  
+
+Post-installation Configuration instructions.  
+==============================================
+
+ ... to be finished later...
+
+
+
+  INSTALLATION INSTRUCTIONS:
+  ==========================
+  Users should be logged off the system.  
+  Note: the follow instructions were copied from another KIDS install and modified.  
+  There may be some discrepancies.
+
+  The following are instructions for those using the Packman method:
+  ------------------------------------------------------------------
+  1.  Use the INSTALL/CHECK MESSAGE option on the PackMan menu.
+
+  2.  Review your mapped set.  If any of the routines listed in the
+      ROUTINE SUMMARY section are mapped, they should be removed
+      from the mapped set at this time.
+
+  3.  From the Kernel Installation and Distribution System Menu, select
+      the Installation menu.
+
+  4.  From this menu, you may elect to use the following options
+      (when prompted for INSTALL NAME, enter TMG1-1.0-6:
+          a.  Backup a Transport Global
+          b.  Compare Transport Global to Current System
+          c.  Verify Checksums in Transport Global
+
+  5.  Use the Install Package(s) option and select the package TMG1-1.0-6
+
+  6.  When prompted 'Want KIDS to INHIBIT LOGONs during the install? YES//'
+      respond NO.
+
+  7.  When prompted 'Want to DISABLE Scheduled Options, Menu Options, and
+      Protocols? YES//', respond NO.
+
+  8.  If routines were unmapped as part of step 2, they should be returned
+      to the mapped set once the installation has run to completion.
+
+  9.  (See step 9 below)
+
+  The following are instructions for those loading the patch via Host File System:
+  ---------------------------------------------------------------------------------
+  1.  Navigate the menu option path to reach the Kernel Installation and Distribution
+      System Menu.  Or, the menu option XPD MAIN may be entered directly.
+
+  2.  Next, at the menu displaying:
+          Edits and Distribution ...
+          Utilities ...
+          Installation ...     <---------- pick this one.
+
+  3.  Next, at the menu displaying the options as below, choose each of the options
+      in a step-by-step fashion, in numerical order (i.e. 1, 2, 3 etc.)  Step #1 will
+      prompt the user to enter the file path on the host file system where the source
+      file is stored.  The filename to enter is TMG1-1.0-6.KIDS, but add the
+      appropriate path.  E.g. /tmp/TMG1-1.0-6.KIDS
+
+       1      Load a Distribution
+       2      Verify Checksums in Transport Global
+       3      Print Transport Global
+       4      Compare Transport Global to Current System
+       5      Backup a Transport Global
+       6      Install Package(s)
+              Restart Install of Package(s)
+              Unload a Distribution
+
+  4.  From this menu, you may elect to use the following options
+      (when prompted for INSTALL NAME, enter TMG1-1.0-6
+          a.  Backup a Transport Global
+          b.  Compare Transport Global to Current System
+          c.  Verify Checksums in Transport Global
+
+  5.  Use the Install Package(s) option and select the package TMG1-1.0-6
+
+  6.  When prompted 'Want KIDS to INHIBIT LOGONs during the install? YES//'
+      respond NO.
+
+  7.  When prompted 'Want to DISABLE Scheduled Options, Menu Options, and
+      Protocols? YES//', respond NO.
+
+  8.  If routines were unmapped as part of step 2, they should be returned
+      to the mapped set once the installation has run to completion.
+
+
+=============================================================================
+User Information:
+Entered By  : TOPPENBERG,KEVIN            Date Entered : 3/31/10
+Completed By: TOPPENBERG,KEVIN            Date Completed: 3/31/10
+Released By : TOPPENBERG,KEVIN            Date Released : 3/31/10
+=============================================================================
+
+Packman Mail Message:
+=====================
+
+$END TXT
Index: cprs/branches/tmg-cprs/Server_KIDS/TMG1-1.0-7.KIDS
===================================================================
--- cprs/branches/tmg-cprs/Server_KIDS/TMG1-1.0-7.KIDS	(revision 732)
+++ cprs/branches/tmg-cprs/Server_KIDS/TMG1-1.0-7.KIDS	(revision 732)
@@ -0,0 +1,814 @@
+KIDS Distribution saved on Mar 31, 2010@21:17:38
+TMG1*1.0*7
+**KIDS**:TMG1*1.0*7^
+
+**INSTALL NAME**
+TMG1*1.0*7
+"BLD",7632,0)
+TMG1*1.0*7^^0^3100331^n
+"BLD",7632,1,0)
+^^3^3^3100331^^
+"BLD",7632,1,1,0)
+This patch supplies RPC's to move TMG-CPRS 
+"BLD",7632,1,2,0)
+settings onto the server.  They had been 
+"BLD",7632,1,3,0)
+stored in an .ini file on the client previously.
+"BLD",7632,4,0)
+^9.64PA^22710^1
+"BLD",7632,4,22710,0)
+22710
+"BLD",7632,4,22710,222)
+y^y^f^^y^^y^a^n
+"BLD",7632,4,"B",22710,22710)
+
+"BLD",7632,6.3)
+1
+"BLD",7632,"KRN",0)
+^9.67PA^8989.52^19
+"BLD",7632,"KRN",.4,0)
+.4
+"BLD",7632,"KRN",.401,0)
+.401
+"BLD",7632,"KRN",.402,0)
+.402
+"BLD",7632,"KRN",.403,0)
+.403
+"BLD",7632,"KRN",.5,0)
+.5
+"BLD",7632,"KRN",.84,0)
+.84
+"BLD",7632,"KRN",3.6,0)
+3.6
+"BLD",7632,"KRN",3.8,0)
+3.8
+"BLD",7632,"KRN",9.2,0)
+9.2
+"BLD",7632,"KRN",9.8,0)
+9.8
+"BLD",7632,"KRN",9.8,"NM",0)
+^9.68A^1^1
+"BLD",7632,"KRN",9.8,"NM",1,0)
+TMGRPC1A^^0^B23521637
+"BLD",7632,"KRN",9.8,"NM","B","TMGRPC1A",1)
+
+"BLD",7632,"KRN",19,0)
+19
+"BLD",7632,"KRN",19.1,0)
+19.1
+"BLD",7632,"KRN",101,0)
+101
+"BLD",7632,"KRN",409.61,0)
+409.61
+"BLD",7632,"KRN",771,0)
+771
+"BLD",7632,"KRN",870,0)
+870
+"BLD",7632,"KRN",8989.51,0)
+8989.51
+"BLD",7632,"KRN",8989.52,0)
+8989.52
+"BLD",7632,"KRN",8994,0)
+8994
+"BLD",7632,"KRN",8994,"NM",0)
+^9.68A^2^2
+"BLD",7632,"KRN",8994,"NM",1,0)
+TMG INIFILE GET^^0
+"BLD",7632,"KRN",8994,"NM",2,0)
+TMG INIFILE SET^^0
+"BLD",7632,"KRN",8994,"NM","B","TMG INIFILE GET",1)
+
+"BLD",7632,"KRN",8994,"NM","B","TMG INIFILE SET",2)
+
+"BLD",7632,"KRN","B",.4,.4)
+
+"BLD",7632,"KRN","B",.401,.401)
+
+"BLD",7632,"KRN","B",.402,.402)
+
+"BLD",7632,"KRN","B",.403,.403)
+
+"BLD",7632,"KRN","B",.5,.5)
+
+"BLD",7632,"KRN","B",.84,.84)
+
+"BLD",7632,"KRN","B",3.6,3.6)
+
+"BLD",7632,"KRN","B",3.8,3.8)
+
+"BLD",7632,"KRN","B",9.2,9.2)
+
+"BLD",7632,"KRN","B",9.8,9.8)
+
+"BLD",7632,"KRN","B",19,19)
+
+"BLD",7632,"KRN","B",19.1,19.1)
+
+"BLD",7632,"KRN","B",101,101)
+
+"BLD",7632,"KRN","B",409.61,409.61)
+
+"BLD",7632,"KRN","B",771,771)
+
+"BLD",7632,"KRN","B",870,870)
+
+"BLD",7632,"KRN","B",8989.51,8989.51)
+
+"BLD",7632,"KRN","B",8989.52,8989.52)
+
+"BLD",7632,"KRN","B",8994,8994)
+
+"DATA",22710,4,0)
+TOPPENBERG,KEVIN S
+"DATA",22710,4,1,0)
+^22710.01^8^8
+"DATA",22710,4,1,1,0)
+Tab Location
+"DATA",22710,4,1,1,1)
+0
+"DATA",22710,4,1,2,0)
+Pol Directory
+"DATA",22710,4,1,2,1)
+c:\
+"DATA",22710,4,1,3,0)
+Pol Interval (milliseconds)
+"DATA",22710,4,1,3,1)
+60000
+"DATA",22710,4,1,4,0)
+Use dropbox directory for transfers
+"DATA",22710,4,1,4,1)
+1
+"DATA",22710,4,1,5,0)
+Dropbox directory
+"DATA",22710,4,1,5,1)
+v:\dropbox\
+"DATA",22710,4,1,6,0)
+Load Skin At Startup
+"DATA",22710,4,1,6,1)
+0
+"DATA",22710,4,1,7,0)
+Scan Enabled
+"DATA",22710,4,1,7,1)
+0
+"DATA",22710,4,1,8,0)
+EnableImages
+"DATA",22710,4,1,8,1)
+1
+"DATA",22710,5,0)
+DEFAULT
+"DATA",22710,5,1,0)
+^22710.01^8^8
+"DATA",22710,5,1,1,0)
+Tab Location
+"DATA",22710,5,1,1,1)
+0
+"DATA",22710,5,1,2,0)
+Pol Directory
+"DATA",22710,5,1,2,1)
+c:\
+"DATA",22710,5,1,3,0)
+Pol Interval (milliseconds)
+"DATA",22710,5,1,3,1)
+60000
+"DATA",22710,5,1,4,0)
+Use dropbox directory for transfers
+"DATA",22710,5,1,4,1)
+1
+"DATA",22710,5,1,5,0)
+Dropbox directory
+"DATA",22710,5,1,5,1)
+v:\dropbox\
+"DATA",22710,5,1,6,0)
+EnableImages
+"DATA",22710,5,1,6,1)
+1
+"DATA",22710,5,1,7,0)
+TAB COLORS ENABLE
+"DATA",22710,5,1,7,1)
+1
+"DATA",22710,5,1,8,0)
+Language
+"DATA",22710,5,1,8,1)
+1033
+"FIA",22710)
+TMG APPLICATION PARAMETERS
+"FIA",22710,0)
+^TMG(22710,
+"FIA",22710,0,0)
+22710
+"FIA",22710,0,1)
+y^y^f^^y^^y^a^n
+"FIA",22710,0,10)
+
+"FIA",22710,0,11)
+
+"FIA",22710,0,"RLRO")
+
+"FIA",22710,22710)
+0
+"FIA",22710,22710.01)
+0
+"KRN",8994,2497,-1)
+0^2
+"KRN",8994,2497,0)
+TMG INIFILE SET^SETINIVL^TMGRPC1A^1^P^^^1^1
+"KRN",8994,2497,1,0)
+^8994.01^17^17^3100211^^
+"KRN",8994,2497,1,1,0)
+
+"KRN",8994,2497,1,2,0)
+This will allow server-side storage is client options,
+"KRN",8994,2497,1,3,0)
+ similar to .ini files on Microsoft Windows programs.
+"KRN",8994,2497,1,4,0)
+
+"KRN",8994,2497,1,5,0)
+Purpose: To provide an entry point for a RPC call from a client.  The client
+"KRN",8994,2497,1,6,0)
+         will use this instead of TIniFile object in Delphi.
+"KRN",8994,2497,1,7,0)
+         Note: Since all data are of type string in Mumps, this will work only with strings.
+"KRN",8994,2497,1,8,0)
+               and type casting will have to take place in client.
+"KRN",8994,2497,1,9,0)
+Input: RESULT  -- an OUT PARAMETER.  See output below.
+"KRN",8994,2497,1,10,0)
+       SECTION -- String of 'Section' to store setting in (corresponds to section in TIniFile)
+"KRN",8994,2497,1,11,0)
+       KEY     -- String of Key value.  (corresponds to Ident/Key in TIniFile)
+"KRN",8994,2497,1,12,0)
+       VALUE   -- String of Value to set
+"KRN",8994,2497,1,13,0)
+ Note: Data will be stored in: ^TMG("INIDATA",Section,Key,Vaue)
+"KRN",8994,2497,1,14,0)
+      And because this is a shared resource, it is expected that the client will use
+"KRN",8994,2497,1,15,0)
+      User.Name as the Section value.
+"KRN",8994,2497,1,16,0)
+      Also, any prior value will be overwritten.
+"KRN",8994,2497,1,17,0)
+Output: Will return RESULT="1^Success", or -1^Error Message"
+"KRN",8994,2497,2,0)
+^8994.02A^3^3
+"KRN",8994,2497,2,1,0)
+SECTION^1^32^1^1
+"KRN",8994,2497,2,1,1,0)
+^^2^2^3100211^^
+"KRN",8994,2497,2,1,1,1,0)
+String of 'Section' to store setting in 
+"KRN",8994,2497,2,1,1,2,0)
+(corresponds to 'Section' in TIniFile)
+"KRN",8994,2497,2,2,0)
+KEY^1^32^1^2
+"KRN",8994,2497,2,2,1,0)
+^^1^1^3100211^^
+"KRN",8994,2497,2,2,1,1,0)
+String of Key value.  (corresponds to 'Ident'/'Key' in TIniFile)
+"KRN",8994,2497,2,3,0)
+VALUE^1^256^1^3
+"KRN",8994,2497,2,3,1,0)
+^^1^1^3100211^^
+"KRN",8994,2497,2,3,1,1,0)
+String of Value to set
+"KRN",8994,2497,2,"B","KEY",2)
+
+"KRN",8994,2497,2,"B","SECTION",1)
+
+"KRN",8994,2497,2,"B","VALUE",3)
+
+"KRN",8994,2497,2,"PARAMSEQ",1,1)
+
+"KRN",8994,2497,2,"PARAMSEQ",2,2)
+
+"KRN",8994,2497,2,"PARAMSEQ",3,3)
+
+"KRN",8994,2497,3,0)
+^^1^1^3100211^^
+"KRN",8994,2497,3,1,0)
+Will return RESULT="1^Success", or -1^Error Message"
+"KRN",8994,2498,-1)
+0^1
+"KRN",8994,2498,0)
+TMG INIFILE GET^GETINIVL^TMGRPC1A^1^P^^^1^1
+"KRN",8994,2498,1,0)
+^8994.01^16^16^3100211^^^
+"KRN",8994,2498,1,1,0)
+This will allow server-side storage is client options,
+"KRN",8994,2498,1,2,0)
+similar to .ini files on Microsoft Windows programs.
+"KRN",8994,2498,1,3,0)
+
+"KRN",8994,2498,1,4,0)
+Purpose: To provide an entry point for a RPC call from a client.  The client
+"KRN",8994,2498,1,5,0)
+         will use this instead of TIniFile object in Delphi.
+"KRN",8994,2498,1,6,0)
+         Note: Since all data are of type string in Mumps, this will work only with strings.
+"KRN",8994,2498,1,7,0)
+               and type casting will have to take place in client.
+"KRN",8994,2498,1,8,0)
+Input: RESULT  -- an OUT PARAMETER.  See output below
+"KRN",8994,2498,1,9,0)
+       SECTION -- String of 'Section' to store setting in (corresponds to section in TIniFile)
+"KRN",8994,2498,1,10,0)
+       KEY     -- String of Key value.  (corresponds to Ident/Key in TIniFile)
+"KRN",8994,2498,1,11,0)
+       DEFAULT -- The value to be returned, if no value found.
+"KRN",8994,2498,1,12,0)
+Note: Data will be strored in: ^TMG("INIDATA",Section,Key,Vaue)
+"KRN",8994,2498,1,13,0)
+      And because this is a shared resource, it is expected that the client will use
+"KRN",8994,2498,1,14,0)
+      User.Name as the Section value.
+"KRN",8994,2498,1,15,0)
+      Also, any prior value will be overwritten.
+"KRN",8994,2498,1,16,0)
+Output: Will return RESULT(0)="1^<Value>", or -1^Error Message"  
+"KRN",8994,2498,2,0)
+^8994.02A^3^3
+"KRN",8994,2498,2,1,0)
+SECTION^1^32^1^1
+"KRN",8994,2498,2,1,1,0)
+^^3^3^3100211^^
+"KRN",8994,2498,2,1,1,1,0)
+
+"KRN",8994,2498,2,1,1,2,0)
+String of 'Section' to store setting in 
+"KRN",8994,2498,2,1,1,3,0)
+(corresponds to 'Section' in TIniFile)
+"KRN",8994,2498,2,2,0)
+KEY^1^32^1^2
+"KRN",8994,2498,2,2,1,0)
+^^2^2^3100211^^
+"KRN",8994,2498,2,2,1,1,0)
+
+"KRN",8994,2498,2,2,1,2,0)
+String of Key value.  (corresponds to 'Ident'/'Key' in TIniFile)
+"KRN",8994,2498,2,3,0)
+DEFAULT^1^256^0^3
+"KRN",8994,2498,2,3,1,0)
+^8994.021^1^1^3100211^^^
+"KRN",8994,2498,2,3,1,1,0)
+The value to be returned, if no value found.
+"KRN",8994,2498,2,"B","DEFAULT",3)
+
+"KRN",8994,2498,2,"B","KEY",2)
+
+"KRN",8994,2498,2,"B","SECTION",1)
+
+"KRN",8994,2498,2,"PARAMSEQ",1,1)
+
+"KRN",8994,2498,2,"PARAMSEQ",2,2)
+
+"KRN",8994,2498,2,"PARAMSEQ",3,3)
+
+"KRN",8994,2498,3,0)
+^8994.03^2^2^3100211^^^
+"KRN",8994,2498,3,1,0)
+Will return RESULT="1^<Value>", or -1^Error Message"
+"KRN",8994,2498,3,2,0)
+<Value> is the desired value.
+"MBREQ")
+0
+"ORD",16,8994)
+8994;16;1;;;;;;;RPCDEL^XPDIA1
+"ORD",16,8994,0)
+REMOTE PROCEDURE
+"QUES","XPF1",0)
+Y
+"QUES","XPF1","??")
+^D REP^XPDH
+"QUES","XPF1","A")
+Shall I write over your |FLAG| File
+"QUES","XPF1","B")
+YES
+"QUES","XPF1","M")
+D XPF1^XPDIQ
+"QUES","XPF2",0)
+Y
+"QUES","XPF2","??")
+^D DTA^XPDH
+"QUES","XPF2","A")
+Want my data |FLAG| yours
+"QUES","XPF2","B")
+YES
+"QUES","XPF2","M")
+D XPF2^XPDIQ
+"QUES","XPI1",0)
+YO
+"QUES","XPI1","??")
+^D INHIBIT^XPDH
+"QUES","XPI1","A")
+Want KIDS to INHIBIT LOGONs during the install
+"QUES","XPI1","B")
+NO
+"QUES","XPI1","M")
+D XPI1^XPDIQ
+"QUES","XPM1",0)
+PO^VA(200,:EM
+"QUES","XPM1","??")
+^D MG^XPDH
+"QUES","XPM1","A")
+Enter the Coordinator for Mail Group '|FLAG|'
+"QUES","XPM1","B")
+
+"QUES","XPM1","M")
+D XPM1^XPDIQ
+"QUES","XPO1",0)
+Y
+"QUES","XPO1","??")
+^D MENU^XPDH
+"QUES","XPO1","A")
+Want KIDS to Rebuild Menu Trees Upon Completion of Install
+"QUES","XPO1","B")
+NO
+"QUES","XPO1","M")
+D XPO1^XPDIQ
+"QUES","XPZ1",0)
+Y
+"QUES","XPZ1","??")
+^D OPT^XPDH
+"QUES","XPZ1","A")
+Want to DISABLE Scheduled Options, Menu Options, and Protocols
+"QUES","XPZ1","B")
+NO
+"QUES","XPZ1","M")
+D XPZ1^XPDIQ
+"QUES","XPZ2",0)
+Y
+"QUES","XPZ2","??")
+^D RTN^XPDH
+"QUES","XPZ2","A")
+Want to MOVE routines to other CPUs
+"QUES","XPZ2","B")
+NO
+"QUES","XPZ2","M")
+D XPZ2^XPDIQ
+"RTN")
+1
+"RTN","TMGRPC1A")
+0^1^B23521637
+"RTN","TMGRPC1A",1,0)
+TMGRPC1A ;TMG/kst-RPC Functions ;2/11/10
+"RTN","TMGRPC1A",2,0)
+         ;;1.0;TMG-LIB;**1**;2/11/10;Build 1
+"RTN","TMGRPC1A",3,0)
+ ;
+"RTN","TMGRPC1A",4,0)
+ ;"TMG RPC FUNCTIONS
+"RTN","TMGRPC1A",5,0)
+ ;
+"RTN","TMGRPC1A",6,0)
+ ;"Copyright Kevin Toppenberg MD
+"RTN","TMGRPC1A",7,0)
+ ;"Released under GNU General Public License (GPL)
+"RTN","TMGRPC1A",8,0)
+ ;"
+"RTN","TMGRPC1A",9,0)
+ ;"=======================================================================
+"RTN","TMGRPC1A",10,0)
+ ;" RPC -- Public Functions.
+"RTN","TMGRPC1A",11,0)
+ ;"=======================================================================
+"RTN","TMGRPC1A",12,0)
+ ;"SETINIVL(RESULT,SECTION,KEY,VALUE) ;Entry point for TMG INIFILE SET
+"RTN","TMGRPC1A",13,0)
+ ;"GETINIVL(RESULT,SECTION,KEY,DEFAULT) ;Entry point for TMG INIFILE GET
+"RTN","TMGRPC1A",14,0)
+ ;
+"RTN","TMGRPC1A",15,0)
+ ;"=======================================================================
+"RTN","TMGRPC1A",16,0)
+ ;"PRIVATE API FUNCTIONS
+"RTN","TMGRPC1A",17,0)
+ ;"=======================================================================
+"RTN","TMGRPC1A",18,0)
+ ;
+"RTN","TMGRPC1A",19,0)
+ ;"=======================================================================
+"RTN","TMGRPC1A",20,0)
+ ;"=======================================================================
+"RTN","TMGRPC1A",21,0)
+ ;"Dependencies:
+"RTN","TMGRPC1A",22,0)
+ ;" DIC, TMGDEBUG
+"RTN","TMGRPC1A",23,0)
+ ;"=======================================================================
+"RTN","TMGRPC1A",24,0)
+ ;"=======================================================================
+"RTN","TMGRPC1A",25,0)
+ ;
+"RTN","TMGRPC1A",26,0)
+SETINIVL(RESULT,SECTION,KEY,VALUE) ;
+"RTN","TMGRPC1A",27,0)
+        ;"SCOPE: Public
+"RTN","TMGRPC1A",28,0)
+        ;"RPC that calls this: TMG INIFILE SET
+"RTN","TMGRPC1A",29,0)
+        ;"Purpose: To provide an entry point for a RPC call from a client.  The client
+"RTN","TMGRPC1A",30,0)
+        ;"         will use this instead of TIniFile object in Delphi.
+"RTN","TMGRPC1A",31,0)
+        ;"         Note: Since all data are of type string in Mumps, this will work only with strings.
+"RTN","TMGRPC1A",32,0)
+        ;"               and type casting will have to take place in client.
+"RTN","TMGRPC1A",33,0)
+        ;"Input: RESULT  -- an OUT PARAMETER.  See output below.
+"RTN","TMGRPC1A",34,0)
+        ;"       SECTION -- String of 'Section' to store setting in (corresponds to section in TIniFile)
+"RTN","TMGRPC1A",35,0)
+        ;"       KEY     -- String of Key value.  (corresponds to Ident/Key in TIniFile)
+"RTN","TMGRPC1A",36,0)
+        ;"       VALUE   -- String of Value to set
+"RTN","TMGRPC1A",37,0)
+        ;"Note: Because this is a shared resource, it is expected that the client will use
+"RTN","TMGRPC1A",38,0)
+        ;"      User.Name as the Section value.
+"RTN","TMGRPC1A",39,0)
+        ;"      Also, any prior value will be overwritten.
+"RTN","TMGRPC1A",40,0)
+        ;"Output: Will return RESULT="1^Success", or -1^Error Message"
+"RTN","TMGRPC1A",41,0)
+        SET RESULT="1^Success"
+"RTN","TMGRPC1A",42,0)
+        IF $GET(SECTION)="" SET RESULT="-1^No value passed for SECTION" QUIT
+"RTN","TMGRPC1A",43,0)
+        IF $GET(KEY)="" SET RESULT="-1^No value passed for KEY" QUIT
+"RTN","TMGRPC1A",44,0)
+        SET VALUE=$GET(VALUE)
+"RTN","TMGRPC1A",45,0)
+        NEW X,Y,DIC,IEN,IEN2
+"RTN","TMGRPC1A",46,0)
+        SET DIC=22710,DIC(0)="L" ;"Add SECTION & KEY if not previously present.
+"RTN","TMGRPC1A",47,0)
+        SET X=SECTION
+"RTN","TMGRPC1A",48,0)
+        DO ^DIC SET IEN=+Y
+"RTN","TMGRPC1A",49,0)
+        IF IEN'>0 SET RESULT="-1^Error establishing SECTION: ["_SECTION_"]" QUIT
+"RTN","TMGRPC1A",50,0)
+        SET DIC(1)=IEN,DIC="^TMG(22710,"_IEN_",1,"
+"RTN","TMGRPC1A",51,0)
+        SET X=KEY
+"RTN","TMGRPC1A",52,0)
+        DO ^DIC SET IEN2=+Y
+"RTN","TMGRPC1A",53,0)
+        IF IEN2'>0 SET RESULT="-1^Error establishing KEY: ["_KEY_"]" QUIT
+"RTN","TMGRPC1A",54,0)
+        NEW TMGFDA,TMGMSG
+"RTN","TMGRPC1A",55,0)
+        IF VALUE="" SET VALUE="@"
+"RTN","TMGRPC1A",56,0)
+        SET TMGFDA(22710.01,IEN2_","_IEN_",",1)=VALUE
+"RTN","TMGRPC1A",57,0)
+        DO FILE^DIE("E","TMGFDA","TMGMSG")
+"RTN","TMGRPC1A",58,0)
+        IF $DATA(TMGMSG("DIERR")) DO  QUIT
+"RTN","TMGRPC1A",59,0)
+        . SET RESULT="-1^"_$$GetErrStr^TMGDEBUG(.TMGMSG)
+"RTN","TMGRPC1A",60,0)
+        QUIT
+"RTN","TMGRPC1A",61,0)
+ ;
+"RTN","TMGRPC1A",62,0)
+ ;
+"RTN","TMGRPC1A",63,0)
+GETINIVL(RESULT,SECTION,KEY,DEFAULT) ;
+"RTN","TMGRPC1A",64,0)
+        ;"SCOPE: Public
+"RTN","TMGRPC1A",65,0)
+        ;"RPC that calls this: TMG INIFILE GET
+"RTN","TMGRPC1A",66,0)
+        ;"Purpose: To provide an entry point for a RPC call from a client.  The client
+"RTN","TMGRPC1A",67,0)
+        ;"         will use this instead of TIniFile object in Delphi.
+"RTN","TMGRPC1A",68,0)
+        ;"         Note: Since all data are of type string in Mumps, this will work only with strings.
+"RTN","TMGRPC1A",69,0)
+        ;"               and type casting will have to take place in client.
+"RTN","TMGRPC1A",70,0)
+        ;"Input: RESULT  -- an OUT PARAMETER.  See output below.
+"RTN","TMGRPC1A",71,0)
+        ;"       SECTION -- String of 'Section' to store setting in (corresponds to section in TIniFile)
+"RTN","TMGRPC1A",72,0)
+        ;"       KEY     -- String of Key value.  (corresponds to Ident/Key in TIniFile)
+"RTN","TMGRPC1A",73,0)
+        ;"       DEFAULT -- The value to be returned, if no value found.
+"RTN","TMGRPC1A",74,0)
+        ;"Note: Because this is a shared resource, it is expected that the client will use
+"RTN","TMGRPC1A",75,0)
+        ;"      User.Name as the Section value.
+"RTN","TMGRPC1A",76,0)
+        ;"      Also, any prior value will be overwritten.
+"RTN","TMGRPC1A",77,0)
+        ;"Output: Will return RESULT="1^<Value>", or -1^Error Message"
+"RTN","TMGRPC1A",78,0)
+        IF $GET(SECTION)="" SET RESULT="-1^No value passed for SECTION" QUIT
+"RTN","TMGRPC1A",79,0)
+        IF $GET(KEY)="" SET RESULT="-1^No value passed for KEY" QUIT
+"RTN","TMGRPC1A",80,0)
+        SET DEFAULT=$GET(DEFAULT)
+"RTN","TMGRPC1A",81,0)
+        NEW X,Y,DIC,IEN,IEN2
+"RTN","TMGRPC1A",82,0)
+        SET DIC=22710,X=SECTION
+"RTN","TMGRPC1A",83,0)
+        DO ^DIC SET IEN=+Y
+"RTN","TMGRPC1A",84,0)
+        IF IEN'>0 SET RESULT="1^"_DEFAULT QUIT
+"RTN","TMGRPC1A",85,0)
+        SET DA(1)=IEN,DIC="^TMG(22710,"_IEN_",1,"
+"RTN","TMGRPC1A",86,0)
+        SET X=KEY
+"RTN","TMGRPC1A",87,0)
+        DO ^DIC SET IEN2=+Y
+"RTN","TMGRPC1A",88,0)
+        IF IEN2'>0 SET RESULT="1^"_DEFAULT QUIT
+"RTN","TMGRPC1A",89,0)
+        NEW VALUE SET VALUE=$GET(^TMG(22710,IEN,1,IEN2,1),DEFAULT)
+"RTN","TMGRPC1A",90,0)
+        IF VALUE'=DEFAULT SET VALUE=$PIECE(VALUE,"^",1)
+"RTN","TMGRPC1A",91,0)
+        SET RESULT="1^"_VALUE
+"RTN","TMGRPC1A",92,0)
+        QUIT
+"RTN","TMGRPC1A",93,0)
+ ;
+"RTN","TMGRPC1A",94,0)
+ ;
+"RTN","TMGRPC1A",95,0)
+CONVERT
+"RTN","TMGRPC1A",96,0)
+        ;"Purpose: A temp function to convert between the old storage method and the new.
+"RTN","TMGRPC1A",97,0)
+        ;"Data was stored in: ^TMG("INIDATA",Section,Key,Vaue)
+"RTN","TMGRPC1A",98,0)
+        NEW SECTION,KEY,VALUE
+"RTN","TMGRPC1A",99,0)
+        SET SECTION=""
+"RTN","TMGRPC1A",100,0)
+        FOR  SET SECTION=$ORDER(^TMG("INIDATA",SECTION)) QUIT:(SECTION="")  DO
+"RTN","TMGRPC1A",101,0)
+        . SET KEY=""
+"RTN","TMGRPC1A",102,0)
+        . FOR  SET KEY=$ORDER(^TMG("INIDATA",SECTION,KEY)) QUIT:(KEY="")  DO
+"RTN","TMGRPC1A",103,0)
+        . . SET VALUE=$GET(^TMG("INIDATA",SECTION,KEY))
+"RTN","TMGRPC1A",104,0)
+        . . NEW RESULT
+"RTN","TMGRPC1A",105,0)
+        . . DO SETINIVL(.RESULT,SECTION,KEY,VALUE) ;
+"RTN","TMGRPC1A",106,0)
+        . . IF +RESULT>0 KILL ^TMG("INIDATA",SECTION,KEY) QUIT
+"RTN","TMGRPC1A",107,0)
+        . . WRITE "Error trying to store SECTION=",SECTION,"; KEY=",KEY,"; VALUE=",VALUE,!
+"RTN","TMGRPC1A",108,0)
+        . . WRITE " -- ",$PIECE(RESULT,"^",2),!
+"RTN","TMGRPC1A",109,0)
+        QUIT
+"RTN","TMGRPC1A",110,0)
+;
+"RTN","TMGRPC1A",111,0)
+;
+"RTN","TMGRPC1A",112,0)
+INSTALL ;
+"RTN","TMGRPC1A",113,0)
+        ;"Purpose: to add the RPC's to the OPTION record OR CPRS GUI CHART
+"RTN","TMGRPC1A",114,0)
+        NEW DIC,X,Y,DA
+"RTN","TMGRPC1A",115,0)
+        SET DIC="^DIC(19,",DIC(0)="M"
+"RTN","TMGRPC1A",116,0)
+        SET X="OR CPRS GUI CHART"
+"RTN","TMGRPC1A",117,0)
+        DO ^DIC
+"RTN","TMGRPC1A",118,0)
+        IF +Y'>0 DO  QUIT
+"RTN","TMGRPC1A",119,0)
+        . WRITE "ERROR.  Unable to find [OR CPRS GUI CHART] in file OPTION (#19)",!
+"RTN","TMGRPC1A",120,0)
+        . NEW TEMP READ "Press [ENTER] to continue...",TEMP:($GET(DTIME,3600))
+"RTN","TMGRPC1A",121,0)
+        . WRITE !
+"RTN","TMGRPC1A",122,0)
+        SET DA(1)=+Y
+"RTN","TMGRPC1A",123,0)
+        SET DIC=DIC_DA(1)_",""RPC"","
+"RTN","TMGRPC1A",124,0)
+        SET DIC(0)="ML" ;"LAYGO --> add entry if not found
+"RTN","TMGRPC1A",125,0)
+        SET X="TMG INIFILE GET"
+"RTN","TMGRPC1A",126,0)
+        DO ^DIC
+"RTN","TMGRPC1A",127,0)
+        IF +Y'>0 DO
+"RTN","TMGRPC1A",128,0)
+        . WRITE "ERROR.  Unable to add or find TMG INIFILE GET for subfile RPC in record",!
+"RTN","TMGRPC1A",129,0)
+        . WRITE "OR CPRS GUI CHART in file OPTION (#19)",!
+"RTN","TMGRPC1A",130,0)
+        . NEW TEMP READ "Press [ENTER] to continue...",TEMP:($GET(DTIME,3600))
+"RTN","TMGRPC1A",131,0)
+        . WRITE !
+"RTN","TMGRPC1A",132,0)
+        SET X="TMG INIFILE SET"
+"RTN","TMGRPC1A",133,0)
+        DO ^DIC
+"RTN","TMGRPC1A",134,0)
+        IF +Y'>0 DO
+"RTN","TMGRPC1A",135,0)
+        . WRITE "ERROR.  Unable to add or find TMG INIFILE SET for subfile RPC in record",!
+"RTN","TMGRPC1A",136,0)
+        . WRITE "OR CPRS GUI CHART in file OPTION (#19)",!
+"RTN","TMGRPC1A",137,0)
+        . NEW TEMP READ "Press [ENTER] to continue...",TEMP:($GET(DTIME,3600))
+"RTN","TMGRPC1A",138,0)
+        . WRITE !
+"RTN","TMGRPC1A",139,0)
+        QUIT
+"RTN","TMGRPC1A",140,0)
+ ;
+"SEC","^DIC",22710,22710,0,"AUDIT")
+@
+"SEC","^DIC",22710,22710,0,"DD")
+@
+"SEC","^DIC",22710,22710,0,"DEL")
+@
+"SEC","^DIC",22710,22710,0,"LAYGO")
+@
+"SEC","^DIC",22710,22710,0,"RD")
+@
+"SEC","^DIC",22710,22710,0,"WR")
+@
+"VER")
+8.0^22.0
+"^DD",22710,22710,0)
+FIELD^^1^2
+"^DD",22710,22710,0,"DT")
+3100214
+"^DD",22710,22710,0,"IX","B",22710,.01)
+
+"^DD",22710,22710,0,"NM","TMG APPLICATION PARAMETERS")
+
+"^DD",22710,22710,.01,0)
+SECTION^RF^^0;1^K:$L(X)>1000!($L(X)<1)!'(X'?1P.E) X
+"^DD",22710,22710,.01,1,0)
+^.1
+"^DD",22710,22710,.01,1,1,0)
+22710^B
+"^DD",22710,22710,.01,1,1,1)
+S ^TMG(22710,"B",$E(X,1,30),DA)=""
+"^DD",22710,22710,.01,1,1,2)
+K ^TMG(22710,"B",$E(X,1,30),DA)
+"^DD",22710,22710,.01,3)
+Answer must be 1-1000 characters in length.
+"^DD",22710,22710,.01,21,0)
+^^1^1^3100214^^
+"^DD",22710,22710,.01,21,1,0)
+The SECTION field corresponds to the section of an INI file.
+"^DD",22710,22710,.01,"DT")
+3100214
+"^DD",22710,22710,1,0)
+KEY^22710.01^^1;0
+"^DD",22710,22710.01,0)
+KEY SUB-FIELD^^1^2
+"^DD",22710,22710.01,0,"DT")
+3100214
+"^DD",22710,22710.01,0,"IX","B",22710.01,.01)
+
+"^DD",22710,22710.01,0,"NM","KEY")
+
+"^DD",22710,22710.01,0,"UP")
+22710
+"^DD",22710,22710.01,.01,0)
+KEY^F^^0;1^K:$L(X)>250!($L(X)<1) X
+"^DD",22710,22710.01,.01,1,0)
+^.1
+"^DD",22710,22710.01,.01,1,1,0)
+22710.01^B
+"^DD",22710,22710.01,.01,1,1,1)
+S ^TMG(22710,DA(1),1,"B",$E(X,1,30),DA)=""
+"^DD",22710,22710.01,.01,1,1,2)
+K ^TMG(22710,DA(1),1,"B",$E(X,1,30),DA)
+"^DD",22710,22710.01,.01,3)
+Answer must be 1-250 characters in length
+"^DD",22710,22710.01,.01,"DT")
+3100214
+"^DD",22710,22710.01,1,0)
+VALUE^F^^1;1^K:$L(X)>250!($L(X)<1) X
+"^DD",22710,22710.01,1,3)
+Answer must be 1-250 characters in length.
+"^DD",22710,22710.01,1,21,0)
+^^1^1^3100214^^
+"^DD",22710,22710.01,1,21,1,0)
+This is the value of the KEY:VALUE pair, as found in an INI file.
+"^DD",22710,22710.01,1,"DT")
+3100214
+"^DIC",22710,22710,0)
+TMG APPLICATION PARAMETERS^22710
+"^DIC",22710,22710,0,"GL")
+^TMG(22710,
+"^DIC",22710,"B","TMG APPLICATION PARAMETERS",22710)
+
+**END**
+**END**
Index: cprs/branches/tmg-cprs/Server_KIDS/TMG1-1.0-7.TXT
===================================================================
--- cprs/branches/tmg-cprs/Server_KIDS/TMG1-1.0-7.TXT	(revision 732)
+++ cprs/branches/tmg-cprs/Server_KIDS/TMG1-1.0-7.TXT	(revision 732)
@@ -0,0 +1,112 @@
+$TXT Created by TOPPENBERG,KEVIN at FAMILY PHYSICANS OF GREENEVILLE (KIDS) on 1/7/10
+=============================================================================
+Run Date: 3/31/10		     Designation: TMG1-1.0*1.0*7
+Package : TMG - FAMILY PHYSICANS OF GREENEVILLE  Priority: Optional
+Version : 1       SEQ #7                       Status: Released
+=============================================================================
+
+Associated patches: None
+
+Subject: Patch to support TMG-CPRS application options.  Moving settings from
+ 	 a locally-stored .ini file, onto server.  
+
+Category:
+  - Routine
+
+Description:
+============
+  This patch provides support TMG-CPRS application options, moving settings from
+  a locally-stored .ini file, onto server.  It creates a new fileman file, 
+  TMG APPLICATIONS SETTINGS (22710) for storing values.
+
+
+  INSTALLATION INSTRUCTIONS:
+  ==========================
+  Users should be logged off the system.  
+  Note: the follow instructions were copied from another KIDS install and modified.  
+  There may be some discrepancies.
+
+  The following are instructions for those using the Packman method:
+  ------------------------------------------------------------------
+  1.  Use the INSTALL/CHECK MESSAGE option on the PackMan menu.
+
+  2.  Review your mapped set.  If any of the routines listed in the
+      ROUTINE SUMMARY section are mapped, they should be removed
+      from the mapped set at this time.
+
+  3.  From the Kernel Installation and Distribution System Menu, select
+      the Installation menu.
+
+  4.  From this menu, you may elect to use the following options
+      (when prompted for INSTALL NAME, enter TMG1-1.0-7:
+          a.  Backup a Transport Global
+          b.  Compare Transport Global to Current System
+          c.  Verify Checksums in Transport Global
+
+  5.  Use the Install Package(s) option and select the package TMG1-1.0-7
+
+  6.  When prompted 'Want KIDS to INHIBIT LOGONs during the install? YES//'
+      respond NO.
+
+  7.  When prompted 'Want to DISABLE Scheduled Options, Menu Options, and
+      Protocols? YES//', respond NO.
+
+  8.  If routines were unmapped as part of step 2, they should be returned
+      to the mapped set once the installation has run to completion.
+
+  9.  (See step 9 below)
+
+  The following are instructions for those loading the patch via Host File System:
+  ---------------------------------------------------------------------------------
+  1.  Navigate the menu option path to reach the Kernel Installation and Distribution
+      System Menu.  Or, the menu option XPD MAIN may be entered directly.
+
+  2.  Next, at the menu displaying:
+          Edits and Distribution ...
+          Utilities ...
+          Installation ...     <---------- pick this one.
+
+  3.  Next, at the menu displaying the options as below, choose each of the options
+      in a step-by-step fashion, in numerical order (i.e. 1, 2, 3 etc.)  Step #1 will
+      prompt the user to enter the file path on the host file system where the source
+      file is stored.  The filename to enter is TMG1-1.0-7.KIDS, but add the
+      appropriate path.  E.g. /tmp/TMG1-1.0-7.KIDS
+
+       1      Load a Distribution
+       2      Verify Checksums in Transport Global
+       3      Print Transport Global
+       4      Compare Transport Global to Current System
+       5      Backup a Transport Global
+       6      Install Package(s)
+              Restart Install of Package(s)
+              Unload a Distribution
+
+  4.  From this menu, you may elect to use the following options
+      (when prompted for INSTALL NAME, enter TMG1-1.0-7
+          a.  Backup a Transport Global
+          b.  Compare Transport Global to Current System
+          c.  Verify Checksums in Transport Global
+
+  5.  Use the Install Package(s) option and select the package TMG1-1.0-7
+
+  6.  When prompted 'Want KIDS to INHIBIT LOGONs during the install? YES//'
+      respond NO.
+
+  7.  When prompted 'Want to DISABLE Scheduled Options, Menu Options, and
+      Protocols? YES//', respond NO.
+
+  8.  If routines were unmapped as part of step 2, they should be returned
+      to the mapped set once the installation has run to completion.
+
+
+=============================================================================
+User Information:
+Entered By  : TOPPENBERG,KEVIN            Date Entered : 3/31/10
+Completed By: TOPPENBERG,KEVIN            Date Completed: 3/31/10
+Released By : TOPPENBERG,KEVIN            Date Released : 3/31/10
+=============================================================================
+
+Packman Mail Message:
+=====================
+
+$END TXT
