Kuopion yliopisto
KuY | Atkk
Kernel 8.0 
Korjauspaketti 9
Hellevi.Ruonamaa@uku.fi
3.12.2003

Näillä sivuilla on ensin yhteenveto korjauksista ja muutoksista ja sen jälkeen on kunkin VA:n korjauksen sisällöstä tarkempi kuvaus. Muutoksia käsitellään tarkemmin 5. Kernel-FixIT-päivässä 10.2.2004 Kuopiossa.

Uusia globaaleja:
    ^MXML- ja  ^XUSSPKI-globaalit

Uusi rutiinien nimialue:
    MXML-alkuiset rutiinit.

Tiedostoihin tulevat muutokset:

Korjauspaketin mukana tulee muutoksia seuraaviin tiedostoihin:

FILE: SIGN-ON LOG
    KAIKKI KENTÄT

FILE: SPOOL DOCUMENT
    FIELD NUMBER: NAME

FILE: INSTITUTION
    KAIKKI KENTÄT

FILE: BUILD
    DD NUMBER: FILE
        FIELD NUMBER: RESOLVE POINTERS
        FIELD NUMBER: DATA COMES WITH FILE

FILE: ROUTINE
    FIELD NUMBER: PATCH LIST AT CHECKSUM TIME
    FIELD NUMBER: KIDS INSTALL DATE
    DD NUMBER: PATCH  (sub-file)

FILE: TASKMAN SITE PARAMETERS
    FIELD NUMBER: TASKMAN JOB LIMIT

FILE: KERNEL HENKILÖ
    FIELD NUMBER: KOTIPUHELIN
    FIELD NUMBER: TYÖPUHELIN
    FIELD NUMBER: LISÄPUHELIN 3
    FIELD NUMBER: LISÄPUHELIN 4
    FIELD NUMBER: COMMERCIAL PHONE
    FIELD NUMBER: FAX NUMERO
    FIELD NUMBER: DISUSER
    FIELD NUMBER: CURRENT DEGREE LEVEL
    FIELD NUMBER: PROGRAM OF STUDY
    FIELD NUMBER: LAST TRAINING YEAR
    FIELD NUMBER: DEA#
    FIELD NUMBER: NON-VA PRESCRIBER
    FIELD NUMBER: TAX ID
    FIELD NUMBER: EXCLUSIONARY CHECK PERFORMED
    FIELD NUMBER: DATE EXCLUSIONARY LIST CHECKED
    FIELD NUMBER: ON EXCLUSIONARY LIST
    FIELD NUMBER: EXCLUSIONARY CHECKED BY
    FIELD NUMBER: PATIENT SELECTION LIST
    FIELD NUMBER: MULTIPLE SIGN-ON
    FIELD NUMBER: MULTIPLE SIGN-ON LIMIT
    FIELD NUMBER: PRIMARY MENU OPTION
    DD NUMBER: CPRS TAB  (sub-file)
    DD NUMBER: SECONDARY MENU OPTIONS  (sub-file)
        FIELD NUMBER: SECONDARY MENU OPTIONS
    DD NUMBER: ACCESSIBLE FILE  (sub-file)
    FIELD NUMBER: DATA DICTIONARY ACCESS
    FIELD NUMBER: DELETE ACCESS
    FIELD NUMBER: LAYGO ACCESS
    FIELD NUMBER: READ ACCESS
    FIELD NUMBER: WRITE ACCESS
    FIELD NUMBER: AUDIT ACCESS
    DD NUMBER: PERSON CLASS  (sub-file)
        FIELD NUMBER: Effective Date
    DD NUMBER: VISITED FROM  (sub-file)

FILE: XML ENTITY CATALOG
  KAIKKI KENTÄT

FILE: PERSON CLASS
  KAIKKI KENTÄT, DATA MUKANA

FILE: PROGRAM OF STUDY
  KAIKKI KENTÄT

FILE: PKI Digital Signatures
  KAIKKI KENTÄT

FILE: PKI CRL URLS
  KAIKKI KENTÄT

FILE: KERNEL SYSTEM PARAMETERS
    FIELD NUMBER: PKI Server
    FIELD NUMBER: DEFAULT MULTIPLE SIGN-ON
    FIELD NUMBER: DEFAULT MULTIPLE SIGN-ON LIMIT
    DD NUMBER: VOLUME SET  (sub-file)
        FIELD NUMBER: MAX SIGNON ALLOWED

FILE: PARAMETER DEFINITION
  KAIKKI KENTÄT

FILE: ALERT
    DD NUMBER: ALERT DATE/TIME  (sub-file)
        FIELD NUMBER: DAYS FOR BACKUP REVIEWER
 

Kuopion yliopistossa tehdyt muutokset:

1. Kernelin virhelista näyttää päiväkohtaisella listalla myös option nimen, jos sellainen on saatavissa. Muutos tulee rutiineihin XTER1A (virheiden näyttö) ja %ZTER (ZTER) (muuttujien ristiviittauksen teko). Tämä suurentaa virhelogin tilavarausta, sillä se tekee automaattisesti muuttujien indeksoinnin. Alkuperäisessä versiossa indeksointi tapahtuu vasta kun virhe on valittu katsottavaksi.
Tällä hetkellä muutokset ovat kommenteissa ja otettavissa haluttaessa esiin. Riveillä on merkintä ***HR M2 15May2003
Muutos auttaa erityisesti RPCBroker-sovellusten yhteydessä ilmenevien virheiden selvittämistä.

2. Vaikka käyttäjän VERIFY NEVER EXPIRES-kentän arvoksi oli asetettu ’Yes’, päätekäytössä pyydettin kuitenkin vaihtamaan salasanaa. Korjatussa versiossa pyyntö on estetty.
 
 

Kaikki VA:n korjauspakettien muutokset:

XU*8*230: Subject: NEW FIELDS IN NEW PERSON FILE FOR CPRS READ-ONLY
XU*8*228: Subject: Fix to the BSA formula
XU*8*232: Subject: FIX ERRORS IN XUAF4
XU*8*233: Subject: ADDING KIDS NOTIFICATION FOR ESS
XU*8*156: Subject: Menu Rebuild Rewrite -- Part 1
XU*8*157: Subject: Menu Rebuild Rewrite -- Part 2
XU*8*225: Subject: ZISTCP and ZU fixes
XU*8*245: Subject: Manila RDV fix.
XU*8*147: Subject: MUTUALLY EXCLUSIVE KEYS ASSIGNMENT
XU*8*237: Subject: FIX TERMINATED USER ERROR
XU*8*243: Subject: Fix Count for 'Remove a TYPE of error'
XU*8*174: Subject: MODIFY FORWARDING OF UNREAD ALERTS
XU*8*238: Subject: Remove Conflicting Command
XU*8*244: Subject: XGKB fix.
XU*8*217: Subject: Institution file & the Reasonable Charges project
XU*8*241: Subject: ZIS Prohibited time fix.
XU*8*220: Subject: Device Lookup API
XU*8*236: Subject:  Hui/VHA CIO SD&D Pharmacy Data Interchange
XU*8*218: Subject: Institution file & VA/Dod CMOP project
XU*8*259: Subject: Disable XUHUI Protocols
XU*8*239: Subject: Hui/VHA CIO SD&D Pharmacy Data Interchange
XU*8*254: Subject: ACCESS REMOTE DATA
XU*8*247: Subject: Edit 'Edit an Existing User' form
XU*8*191: Subject: Support for Cache on OpenVMS
XU*8*255: Subject: Adds/Edits to PERSON CLASS DD
XU*8*260: Subject: CORRECT MISSPELLING IN STATE FILE
XU*8*252: Subject: AUTO SIGN-ON DISABLES DELETE KEY
XU*8*222: Subject: 7 NOIS and 2 E3R fix.
XU*8*246: Subject: ADDRESS INDEXING FOR GMT
XU*8*271: Subject: Fix to XU*8*191 bug.
XU*8*266: Subject: Undef at PCHK2+1~XUHUI
XU*8*264: Subject: PERSON CLASS UPDATE
XU*8*189: Subject: XLFDT Midnight conversion
XU*8*229: Subject: KIDS Fixs
XU*8*272: Subject: PHONE FIELDS
XU*8*274: Subject: Fix to Tasked DEACTIVATE user.
XU*8*267: Subject: DEA API and INST DEA #
XU*8*263: Subject: REINDEX THE USER KEY'S [XUSER KEY RE-INDEX] FIX
XU*8*269: Subject: Add LOCKING to XUESSO1.
XU*8*257: Subject: ISO Menu
XU*8*276: Subject: INFORMATIONAL PATCH FOR NEW EMPLOYEE WITH ONE NAME
XU*8*278: Subject: Cache/NT %ZIS4 fix.
XU*8*240: Subject: STDNAME~XLFNAME: CHECK FOR SUFFIXES IMMEDIATELY AFTER COMMA
XU*8*282: Subject: Person Class Expired
XU*8*258: Subject: Multiple Sign on Update
XU*8*262: Subject: MFS / ZL7 Generic Master File
XU*8*286: Subject: Micro Surgery String Length Problem
XU*8*224: Subject: Fix KSP call.
XU*8*273: Subject: Switch Identities Fix
XU*8*280: Subject: New version XLFDT Midnight fix.
XU*8*301: Subject: Name Standardization Wrong File Component Deletion
XU*8*253: Subject: Merging Users' Menu Structures
XU*8*296: Subject: NEW PERSON DD CHANGES
XU*8*297: Subject: SHOW MORE OF THE SPOOL DOC NAME
XU*8*300: Subject: PERSON CLASS API
XU*8*277: Subject: Stop USERINFO errors.
XU*8*291: Subject: CONVERT SPOOL DOC TO MAILMAN MESSAGE
XU*8*251: Subject: CLINICAL TRAINEE CORE DATASET
XU*8*283: Subject: PKI pilot support
XU*8*288: Subject: Updated DEA~XUSER API.
XU*8*307: Subject: State File Check/Clean-up
XU*8*304: Subject: KIDS FIXES
XU*8*310: Subject: FIX DEVICE FORMS
XU*8*313: Subject: BCMA Contingency Support
XU*8*308: Subject: SUPPRESS SERVER BULLETIN
XU*8*324: Subject: Allocation Failure During Transmission
XU*8*316: Subject: Reporting Options for Alerts
XU*8*311:Subject: TRANSITIONAL PHARMACY BENEFIT PROJECT - PHASE II

XT*7.3*58: Subject: MXML parser
XT*7.3*57: Subject: Merge BCMA data
XT*7.3*61: Subject: XINDEX UPDATE
XT*7.3*59: Subject: XTRMON FIX
XT*7.3*63: Subject: Fix to missing line in XPAR.
XT*7.3*64: Subject: Lookup field for Parameter Definition file
XT*7.3*66: Subject: XINDEX check for patch number
XT*7.3*67: Subject: XML parsing fix
XT*7.3*72: Subject: Add Column Headings to Parameter Options
XT*7.3*74: Subject: ADJUST PARAMETER TOOLS HELP DISPLAY
XT*7.3*69: Subject: Undef EXTPTR~XPARDD fix.
XT*7.3*76: Subject: FIX BUILD~XTRUTL
 

Alkuperäisten korjausten kuvaukset:
 

XU*8*230

Subject: NEW FIELDS IN NEW PERSON FILE FOR CPRS READ-ONLY

1.  This patch was created to allow CPRS to restrict access of users in the NEW PERSON (#200) file to specific CPRS GUI tabs.
 

XU*8*228

Subject: Fix to the BSA formula

Problem: The Body Surface Area calculation in XLFMSMT returned the wrong  values.  A check of the Web for BSA showed that the formula had been entered switching the powers.
Fix: Enter the formula correctly.  Sample value  BSA(100,43) = 1.00
 

XU*8*232

Subject: FIX ERRORS IN XUAF4

Th function $GET was added to the sub-functions STATUS^XUAF4(%) and NS^XUAF4(IEN) to protect against a bad pointer in another file.
 

XU*8*233

Subject: ADDING KIDS NOTIFICATION FOR ESS

Patch XU*8*185 modified KIDS to send a copy of the installation message when a facility installs a patch or a package back to the VHAESSRESOURCE exchange user.

This patch XU*8*233 addresses the issue of a sequence number of a patch not being sent back inside the message. This is in anticipation of the Enterprise Support Solution (ESS) system replacing NOIS.
 

XU*8*156
XU*8*157

Subject: Menu Rebuild Rewrite -- Parts 1 &  2
 

 NOTE:  BECAUSE THE NEW DATA STRUCTURE IS STORED IN THE OPTION FILE YOU CAN EXPECT THIS FILE TO INCREASE IN SIZE EQUAL TO THE SIZE OF YOUR CURRENT ^XUTL("XQO") GLOBAL.  IN SEATTLE THIS  AS 13 TO 20 MEGABYTES.  SINCE ^DIC(19) IS JOURNALLED YOU SHOULD EXPECT A CORRESPONDING INCREASE IN JOURNAL SPACE AS WELL WHEN THE MENUS ARE REBUILT.

This patch changes the way in which the compiled menus in the global ^XUTL are built.  It prevents the jump system from becoming unavailable for long periods of time while the global is rebuilt.  Instead of deleting ^XUTL and then rebuilding it, the menu trees are first built into the ^TMP global and then merged into a new cross reference of the Option File [^DIC(19,"AXQ")].  When a user logs onto the system the menu system looks at ^XUTL to be sure that the trees needed for that user to jump are available in ^XUTL.  If they are not, the trees for that user' Primary Menu, Secondary Menus, and the Common Options are merged into ^XUTL from ^DIC(19,"AXQ").  This cross-reference, then, holds the master copy of the jump trees which are made available in ^XUTL only as they are needed.

A change was also made to the user reactivation software because when a user is reactivated there is no guarantee that his or her jump trees will be present in the ^DIC(19) cross-reference.  If they are not present then the software queues a small TaskMan job to build them so that the user can use the up-arrow jump.

A new menu is created [XQBUILDMAIN] which has 4 options on it. "Is There a Menu Rebuild Running Right Now" [XQRIGHTNOW] tells you if there is menu rebuild activity on your system.  "Kick Off Micro Surgery" [XQKICKMICRO] will force the menu system to see if there is work to do for Micro Surgery.  "Most Recent Menu Rebuilds" [XQSHOWBUILDS] shows a list of the recent rebuild activity on your system.  "Build Primary Menu Trees" [XQBUILDTREE] is the tradition menu tree building option, which wasdeleted by XU*8*156 and re-installed on this menu.
 

XU*8*225

Subject: ZISTCP and ZU fixes

 Problem: The call to Intersystems' license share should only be called for Telnet and TCP connections. Not for LAT. Fix: This patch changes ZU to check the type of device and only call the Intersystems License share code for Telnet connections, this is done for both DSM and Cache.

Problem: TCP clients on Cache were opened in 'mumps' mode, this caused some problems when talking with DSM systems. This caused problems with HL7. Fix: This patch changes the way that TCP devices are opened on Cache systems to be in packet mode.  This makes it behave more like the way that DSM does.

Problem: ZISTCPS would halt when told to stop.  When called from a job started by Taskman the task would not be cleaned up. This caused problems with HL7. Fix: To have ZISTCPS just QUIT when told to stop.

Problem: VMS and DSM utilities require the job number in hex, but Taskman listing would just show the job number in decimal. Fix: In a task listing of running tasks, include the job number in hex whenthe job numbers is greater that 2048.
 
 

XU*8*147

Subject: MUTUALLY EXCLUSIVE KEYS ASSIGNMENT

 This patch corrects the following issue:

 Field: MUTUALLY EXCLUSIVE KEYS(#5) in File: SECURITY KEY(#19.1) now allows key management personnel to:

 1.  Enter a security key that should not be given to anyone, see example #1.

 2.  Or should not be held with another security key(s), see example #2.

 3.  Option:Enter/Edit of Security Keys [XUKEYEDIT] has been revised to allow input of the Field: MUTUALLY EXCLUSIVE KEYS(#5) in File: SECURITY KEY(#19.1). For example using the Security Key 'XM GROUP EDIT MASTER':

 NAME: XM GROUP EDIT MASTER
  DESCRIPTIVE NAME: Edit other users' mail groups
  DESCRIPTION:   People who need to be able to edit other users' mail  groups and add new users to them should be assigned this key.

Holders of this key may edit any mail group, except personal mail groups.  (Personal mail groups are those which only the organizer may edit or use.)

The following users should NOT be given this key, because they already possess the privilege this key grants:
   - Holders of the XMMGR key.
   - Clinical Application Coordinators, as identified in file 8930, USR Class, belonging to the TIU package.
 

 Select Key Management Option: ENter/Edit of Security Keys

 Select SECURITY KEY NAME: XM GROUP EDIT MASTER
 DESCRIPTIVE NAME: Edit other users' mail groups  Replace
 PERSON LOOKUP:
 KEEP AT TERMINATE:
 DESCRIPTION:. . .
        . . .
 Holders of this key may edit any mail group, except personal mail groups.  (Personal mail groups are those which only the organizer may edit or use.)

 The following users should NOT be given this key, because they already possess the privilege this key grants:
  - Holders of the XMMGR key.
  - Clinical Application Coordinators, as identified in file 8930 USR Class, belonging to the TIU package.

   Edit? NO//
 Select SUBORDINATE KEY:
 GRANTING CONDITION:
 Select MUTUALLY EXCLUSIVE KEYS: XMMGR
   Are you adding 'XMMGR' as a new MUTUALLY EXCLUSIVE KEYS (the 1ST for this SECURITY KEY)? No// Y (Yes)
 Select MUTUALLY EXCLUSIVE KEYS:

 4.  Finally a New option [XUEXKEY]:
  Allocate/De-Allocate Exclusive Key(s) [XUEXKEY]
              **> Locked with XUEXKEY
 has been created to allow Allocation and De-Allocation of a Mutually Exclusive key(s) to a primary key.  This option has been added to the 'Key
 Management [XUKEYMGMT]' and requires that the 'Security Key' XUEXKEY to be allocated before it can be accessed.  For example:

 Select Key Management Option:  Allocate/De-Allocate Exclusive Key(s)
 Select Primary Allocated Key(s): ZZKEN1
 Select MUTUALLY EXCLUSIVE KEYS: ZZKEN1
   Are you adding 'ZZKEN1' as a new MUTUALLY EXCLUSIVE KEYS (the 1ST for this SECURITY KEY)? No// Y (Yes)

 Select MUTUALLY EXCLUSIVE KEYS:

 Example #1:
 ===========
To allow a key NOT to be accessed by any user, set the primary key Exclusive to itself.  An example would be setting key 'ZZKEN1' as Mutually Exclusive Key to 'ZZKEN1', any attempt to give this key to a user will result in the below message being displayed:

"Key 'ZZKEN1' may not be given to any user at this time no action taken"

 Select Key Management Option: Allocation of Security Keys
 Allocate key: ZZKEN1
 Another key:
 Holder of key: ORMSBY,SKIP       SO
 Another holder:
 You've selected the following keys:
 ZZKEN1
 You've selected the following holders:
 ORMSBY,SKIP
 You are allocating keys.  Do you wish to proceed? YES//
 ZZKEN1 being assigned to:
      ORMSBY,SKIP
 Key 'ZZKEN1' may not be given to any user at this time no action taken

 Example #2:
 ===========
Using the 'XM GROUP EDIT MASTER' key as an example, by setting the Mutually Exclusive field with 'XMMGR', the user will not be able to be given access to both keys simultaneously.  Should any attempt be made to assign the 'XM GROUP EDIT MASTER' key to a user that has already been assigned the key 'XMMGR', the following message will be displayed:

"You are not AUTHORIZED key 'XM GROUP EDIT MASTER' with EXCLUSIVE key 'XMMGR' no action taken"
 

 Select Key Management Option: Allocation of Security Keys
 Allocate key: XM GROUP EDIT MASTER
 Another key:
 Holder of key: ORMSBY,SKIP     SO
 Another holder:
 You've selected the following keys:

 XM GROUP EDIT MASTER

 You've selected the following holders:

 ORMSBY,SKIP

 You are allocating keys.  Do you wish to proceed? YES//

 XM GROUP EDIT MASTER being assigned to:
      ORMSBY,SKIP

 You are not AUTHORIZED key 'XM GROUP EDIT MASTER' with EXCLUSIVE key
 'XMMGR' no action taken
 

XU*8*237

Subject: FIX TERMINATED USER ERROR

This patch XU*8*237 adds $S and $G to the line SHO+1^XQLOCK to fix  problem (undefined variable) that occurred when an application coordinator tried to use the OPTION: All the Keys a User Needs [XQLOCK1] and selected a non-active person in FILE: New Person (#200) with no primary menu and no ^VA(200,IEN,201) global defined.
 

XU*8*243

Subject: Fix Count for 'Remove a TYPE of error'

 The routine XTERPUR is modified to update the error count for the day when a user selects the option: Remove a TYPE of error [XUERTRP TYPE].
 

XU*8*174

Subject: MODIFY FORWARDING OF UNREAD ALERTS

Alerts are used to send time sensitive notifications for information or for further processing.  When created, some alerts may specify a number of days for forwarding to a supervisor or to e-mail surrogates.  If the alert remains unread after this period of time the alert is forwarded, if possible, to a supervisor or e-mail surrogate as indicated.  A problem has been reported when after the alert has been forwarded to the backup individual, it is repeatedly reforwarded on following days until the alert is removed either manually or as a result of normal alert removal (SHR-0100-70069).  This patch corrects this behavior, so the alert will only be forwarded once.

In addition, there have been some who wanted these unread alerts forwarded to a specific individual, e.g., someone in QA, who would monitor unread alerts and could insure forwarding to proper individuals if they could not process them fully (ASH-0100-31970).  To assist in this capability, the current patch also adds a 'DAYS FOR BACKUP REVIEWER' (#.15) field to the 'ALERT DATE/TIME(#1)' subfile of the 'ALERT(#8992)' file.  In addition, it adds an 'XQAL BACKUP REVIEWER' entry in the PARAMETER DEFINITION (#8989.51) file, and an option, Set Backup Reviewer for Alerts [XQAL SET BACKUP REVIEWER] on the Alert Management [XQALERT MGR] menu.

 If an alert is generated with a number of days specified in the variable XQAREVUE, after the specified number of days has passed if the alert remains unread, and if a valid entry is present in the ALERT BACKUP REVIEWER parameter for the User, Service, Division, or System entities, the alert will be forwarded to the indicated individual at the lowest level found for processing.
 

XU*8*238

Subject: Remove Conflicting Command

This patch removes a command that is not necessary and conflicts with the M-to-M Broker.

Other than removing this one command, this patch is equivalent to XU*8*234.  For those sites which do not install various packages, e.g., CMOP, etc., this patch may be installed without installation of patch XU*8*234 (which was released as a part of YS*5.01*71).  However, if such a site subsequently installs XU*8*234 after this patch, this patch should be installed again.
 

XU*8*244

Subject: XGKB fix.

Problem reported by Gail Thomas with XQORM1 Routine  -  CAPRI (GUI) View Registration:  While working on a broker call that will allow CAPRI GUI to View Registration, the user is calling routine EN1^DGRP and storing the data into a file.  While testing the broker call the below routine (which is embedded  within DGRP)  would change the output device back to the terminal. This causes some of the data to be stored to the file and the other to the screen. Routine XQORM1 calls XGF that calls XGKB to reset escape processing. The code uses $I when setting up escape processing but uses IO(0) for the reset.

 Fix: To use $I for the reset also.
 

XU*8*217

Subject: Institution file & the Reasonable Charges project
 
 

 XU*8*241

Subject: ZIS Prohibited time fix.

Problem: The Site found that they had errors from midnight until 00:01 am. The cause turned out to be data in the FILE: DEVICE FILE (#3.5) that made the "TIME" node non-null, but not with a prohibited time. This caused the PROHIBITED TIMES check to screen out the device when the current time was between midnight and 00:01 am.

Fix: To check only the correct piece of the node.

Problem: Sites can now run more that 1000 jobs on a single box.  The Database Description (DD) for the FIELD: MAX SIGNON ALLOWED (#2) of the FIELD: VOLUME (#41) of the FILE: KERNEL SYSTEM PARAMETERS (#8989.3), limited this value to 1000. Fix: The DD for the FIELD: MAX SIGNON ALLOWED (#2) of the FIELD: VOLUME (#41) of the FILE: KERNEL SYSTEM PARAMETERS (#8989.3) was increased to 10000.  The FIELD: TASKMAN JOB LIMIT (#6) in the FILE: TASKMAN SITE PARAMETERS (#14.7) was increased to 9999.
 

XU*8*220

Subject: Device Lookup API

This patch adds a new routine, XUDHGUI, that will provide developers an API to retrieve the first 20 devices that meet the specifications passed. In addition to the documentation supplied in this patch check the Kernel Web Page for more information on Kernel API's:

     http://vista.med.va.gov/kernel/apis/device^xudhgui.htm
     ------------------------------------------------------
     or

     http://vaww.vista.med.va.gov/kernel/apis/device^xudhgui.htm
     -----------------------------------------------------------

     DEVICE^XUDHGUI(.LIST,STARTING POINT,DIRECTION,RIGHT MARGIN RANGE)

     .LIST = Where the data will be returned

     STARTING POINT = Where to start the $ORDERing of the Global.
                      "P" will only return devices whose name starts
                      with "P",  "P*" will return up to 20 devices
                      the first starting with "P".

     DIRECTION = Whether to $ORDER up or down from starting point

     RIGHT MARGIN RANGE =  To specify a width range of devices:
                           For exact width: "132-132"
                           For at least width: "132"
                           For a range: "80-132"

     Returned: IEN^NAME^DISPLAY NAME^LOCATION^RIGHT MARGIN^PAGE LENGTH
 

XU*8*236

Subject:  Hui/VHA CIO SD&D Pharmacy Data Interchange

This patch is in support of the Hui/VHA CIO SD&D Pharmacy Data Interchange project. The project provides a method for the one-way electronic transfer of prescription orders from an external system to VistA.

  In summary this patch consists of the following parts:

  1.  Three routines.
  2.  Two new style cross-references to monitor changes to specific New
      Person File fields.  See the 'Documentation Changes' section for
      details.
  3.  Two new protocols.  See the 'Documentation Changes' section for
      details.

If sites do not wish to utilize this functionality, nothing needs to be done besides installing the patch. If sites want to utilize this functionality, more information on the setup and the data elements are documented on the VistA Documentation Library.
 

XU*8*254

Subject: ACCESS REMOTE DATA

Patch XU*8*254 modifies routine XUESSO1 to fix a problem which may have been introduced by patch XU*8*245: Users were unable to access remote data via CPRS (Computerized Patient Record System).
 

XU*8*247

Subject: Edit 'Edit an Existing User' form

 1) This patch removes the message "USER has no ACCESS CODE", which appeared in the "Edit an Existing User" Screen of the XUREACT USER Form when a user selected the option: REACTIVATE A USER [XUSERREACT] with a person having an access code.

 2) The field DOB (#5) of New Person file (#200) is added on the "Edit an Existing User" Screen of the XUEXISTING USER form.

 3) This patch also deletes the "AF" cross-ref of New Person file #200 for accounts that may have installed XU*8.0*138 entered as error.
 

XU*8*191

Subject: Support for Cache on OpenVMS
 

 1. This patch introduces Support for Cache on OpenVMS, as requested by the National VistA Support (NVS) team.

 2. Part of the failure in this check is that the syntax check for the Directory was not complete.  The improved check is included for both Cache and DSM versions of %ZISH.

 3. $$STATUS^%ZISH did not correctly check for end-of-file. This was because Cache in version less than 3.0 used the error trap to signal when a EOF was reached.  With Cache 3.0 this has been fixed and %ZISH has been recoded to work as expected.

 4. ZTMGRSET was updated to show that it supported Cache/VMS.
 

XU*8*255

Subject: Adds/Edits to PERSON CLASS DD

This is an enhancement patch. The patch adds and edits Data Dictionary (DD) of Person Class file (#8932.1). The enhancement was requested by the National Uniform Claim Committee (NUCC).
 

XU*8*252

Subject: AUTO SIGN-ON DISABLES DELETE KEY

Problem: After Auto sign-on was turned on, the delete key was disabled from the screen man full screen editor. The site used VT320 and the terminal type would be set to VT100 but only if auto sign-on was in use and the client agent was running.
Fix: To save off the home device characteristics before calling the client agent as part of the auto sign-on.
 

XU*8*222

Subject: 7 NOIS and 2 E3R fix.

Problem: The CPRS Parameter information that is viewable from User Inquiry is not useful. The package defaults are shown for users that do not have specific CPRS entries. This made it confusing as to what users had special/non-standard set-ups.
Fix: The call is changed to show only entries specific to the user.

Problem: Some combinations of security keys would not wrap correctly.  If sent to a device that didn't wrap, the data was not printed and it looked like the user did not have all the security keys.
Fix: Correct the print routine in XUSER1.

Problem: The option "Output routines", "Input Routines" get a 'noroutine' error on Cache
Fix: Add cache to the list of both options.

Problem: The TaskMan cleanup routine XUTMK failed to delete a local variable in a loop and if there were sufficient data it would cause a STORE error.
Fix: Kill the local variable in the loop.

Problem: When a user had the DISUSER flag set by the "XUAUTODEACTIVATE" scheduled task, the user could still access old "Continue" options.
Fix: When the "XUAUTODEACTIVATE" sets the DISUSER flag it will remove the "Last Option" entry from file 200, if the users Primary or Secondary menu is changed the "Last Option" entry will also be removed.

Problem: If the DISUSER flag was deleted instead of changed to NO then the trigger on this field would not run to set today's date into field 202.04.
Fix: Add a DELETE code to the cross reference.

Request: "Noticed that the routine MANUAL^XUINPCH2 contained in patch XU*8.0*159, did the clean up on terminated users by stuffing an expiration date on the person class code.  Will this feature be added to the XUSERDEACT option under User Management, so future deactivations on users will stuff a date in the expiration date field for person class code?"
Fix: Added to the XUSTERM routine to set an expiration date for the person class.

Problem: Parameter entries in file 8989.5 for an individual user are not deleted when the user is terminated.
Fix: Added to XUSTERM a call to a new entry point DELUSR^XPAR3.  This fix will need patch XT*7.3*60 to start working.
 

XU*8*271

Subject: Fix to XU*8*191 bug.

Problem: Patch XU*8*191 caused Cache/NT sites to loose the ability to correctly read HFS files.  One of the applications affected is KIDS.
Fix: Check the OS type and set the correct parameter for normal file reads. i.e. for VMS it is "RV" and for NT it is "RS".
 

XU*8*264

Subject: PERSON CLASS UPDATE

Patch XU*8*264 updates data for Person Class file (#8932.1). Twoexisting records (180 and 659) are inactivated, and sixty new records (675 through 734) are added to Person Class file. This patch has been requested by Information Assurance to keep Person Class current with recent changes to the NUCC (National Uniform Claims Committee) Healthcare Provider Taxonomy.
 

XU*8*189

Subject: XLFDT Midnight conversion

During the investigation for patch XU*8*168 it was found that many of the date functions did not handle midnight correctly. This patch makes the treatment of midnight consistent across all functions in XLFDT. Midnight is represented as 58882,0 in M $H and as 3020319.24 in FM. Both of these are in keeping with the ISO 8601 standard that delineates how it will be represented.

Problem: A call of W $$FMADD^XLFDT(3010723,-3,0,0,0) returns 3010720 But a call of W $$FMADD^XLFDT(3010723,0,-72,0,0) returns 3010719.  These should return the same value.
Fix: The code corrected to handle negative hours that are a multiple of days.

Problem:
 1. If the call to extrinsic function $$HL7TFM^XLFDT(HL7date/time[,Local/Uct]) is made with the second parameter "L" but the value of the first parameter did not have an offset, the call will abend with an undefined error on variable %TZ at HL7TFM+10^XLFDT.

Fix: The code was changed to see that %TZ always has a value.

 2. A second issue that this raises is how to classify the date/time when there isn't a timezone.  From the HL7 doc's it should be considered to be a local time.
Fix: If the HL7 date/time doesn't have a timezone, see that it is considered as a local time.

Problem: If the call to HL7TFM^XLFDT was made with just a YYYY or YYYYMM it would get treated as a time and not a date.

Fix: To fix this a new third parameter has been added to the call to indicate that the value to be converted is just a time value. This allows the full range of HL7 dates to be converted.

Range checks were added to many of the calls.  It is assumed that input dates have been validated by the creating application.
  The range of accepted $H dates: "2,0" to "99999,86399".
  The range of accepted FM dates: 1410102 to 4141015.
  The range of accepted HL7 dates: 18410102 to 21141015.

 From ISO 8601:
 5.3.2 Midnight
 The complete and extended representations for midnight, in accordance with 5.3.1, shall he expressed in either of the two following ways:

        Basic format    Extended format
        a) 000000       00:00:00 (the beginning of a day);
        b) 240000       24:00:00 (the end of a day).

 The representations may be reduced in accordance with 5.3.1.4.
 NOTES
 1. Midnight will normally be represented as (0000) or (2400)
 2. The choice of representation a) or b) will depend upon any association with a date, or  time period.
 3. The end of one day (2400) coincides with (0000) at the start of the next day, e.g. 2400 on 12 April 1985 is the same as 0000 on 13 April 1985. If there is no association with a date or time period both a) and b) represent the same clock time in the 24-hour timekeeping system.

The functions changed are HTFM, FMTH, HDIFF, FMDIFF, HADD and FMADD.
The biggest change is in HADD and FMADD and their rollover from one day to the next.

 Time zone values
 EST -0500
 CST -0600
 MST -0700
 PST -0800

 Time zone offset example.
 UTC GMT    EDT    EST CDT  CST MDT  MST PDT  PST
 1000      6 AM     5 AM     4 AM     3 AM    2 AM
 1100      7 AM     6 AM     5 AM     4 AM    3 AM
 1200      8 AM     7 AM     6 AM     5 AM    4 AM
 1300      9 AM     8 AM     7 AM     6 AM    5 AM

 These examples of the problem and fixed responses, assume a computer in the PST time zone.
 Before examples:
 Check $$HTFM, 58412 is 3001204
 Call with 58411,86399 result 3001203.235959
 Call with 58412,0 result 3001204                 <<Lost time
 Call with 58412,60 result 3001204.0001
 Check $$FMTH, 3001204 is 58412
 Call with 3001203.2359 result 58411,86340
 Call with 3001203.24 result 58411,86400          <<Invalid result
 Call with 3001204.000001 result 58412,1
 Check $$FMADD, adding minutes
 Call with 3001204.2359 plus 1 result 3001204.24
 Call with 3001204.24 plus 1 result 3001205.0001
 Call with 3001205.0001 plus 1 result 3001205.0002
 Check $$FMADD, subtracting minutes
 Call with 3001205.0001 minus 1 result 3001205    <<Lost time
 Call with 3001205 minus 1 result 3001204.2359
 Call with 3001204.2359 minus 1 result 3001204.2358
 Check $$HADD, adding minutes
 Call with 58412,86280 plus 1 result 58412,86340
 Call with 58412,86280 plus 2 result 58412,86400  <<Invalid result
 Call with 58412,86280 plus 3 result 58413,60
 Check $$HADD, subtracting minutes
 Call with 58413,120 minus 3 result 58412,86340
 Call with 58413,120 minus 2 result 58413,0
 Call with 58413,120 minus 1 result 58413,60

 After Examples:
 Check $$HTFM, 58412 is 3001204
 Call with 58411,86399 result 3001203.235959
 Call with 58412,0 result 3001203.24              <<Correct
 Call with 58412,60 result 3001204.0001
 Check $$FMTH, 3001204 is 58412
 Call with 3001203.2359 result 58411,86340
 Call with 3001203.24 result 58412,0              <<Correct
 Call with 3001204.000001 result 58412,1
 Check $$FMADD, adding minutes
 Call with 3001204.2359 plus 1 result 3001204.24
 Call with 3001204.24 plus 1 result 3001205.0001
 Call with 3001205.0001 plus 1 result 3001205.0002
 Check $$FMADD, subtracting minutes
 Call with 3001205.0001 minus 1 result 3001204.24  <<Correct
 Call with 3001204.24 minus 1 result 3001204.2359
 Call with 3001204.2359 minus 1 result 3001204.2358
 Check $$HADD, adding minutes
 Call with 58412,86280 plus 1 result 58412,86340
 Call with 58412,86280 plus 2 result 58413,0       <<Correct
 Call with 58412,86280 plus 3 result 58413,60
 Check $$HADD, subtracting minutes
 Call with 58413,120 minus 3 result 58412,86340
 Call with 58413,120 minus 2 result 58413,0
 Call with 58413,120 minus 1 result 58413,60
 Check $$FMTHL7
 Call with 3001204.123 result 200012041230-0800
 Call with 3001204.2334 result 200012042334-0800
 Call with 3001204.24 result 200012050000-0800
 Check $$HL7TFM
 Call with 20001205000000-0800 result 3001204.24
 Call with 200012050000-0800 result 3001204.24
 Call with 20001204123000 result 3001204.123
 Call with 200012042334-0800 result 3001204.2334
 Call with 20020124120138 result 3020124.120138
 Check $$HL7TFM UCT time
 Call with 20001205000000-0800 result 3001205.08
 Call with 20001204123000-0600 result 3001204.183
 Call with 200012042334-0800 result 3001205.0734
 Call with 20020124120138 result 3020124.200138
 Check $$HL7TFM to local time
 Call with 20001205000000-0800 result 3001204.24
 Call with 20001204123000-0600 result 3001204.103
 Call with 200012042334-0500 result 3001204.2034
 Call with 20020124120138 result 3020124.120138
 

XU*8*229

Subject: KIDS Fixs

Problem: The way that KIDS files new entries from the PARAMETER TEMPLATE (#8989.52) file on the target system.  The exported entries get filed, but the "B" x-ref on the PARAMETERS multiple (field 10) doesn't get filed. This causes the Edit Parameter Values with Template [XPAR EDIT BY TEMPLATE] option to fail as it does not see any parameters to edit within the template.
Fix: Set the flag to have FileMan cross reference the data.

Problem: When queuing during patch install.  The user tried to queue the patch for 9:00PM at night but omitted the word PM from the time.  The system didn't prompt me that it was a wrong time in the past (9:00 AM) nor did it prompt me to reenter the correct time.  It went and installed the patch immediately as if it accepted the default value of NOW. The patch required users to be off the system during installation but because it installed immediately during working hours it triggered NOSOURCE errors in the system error log.
Fix: Added a screen to require the time to be in the future.

Problem: Install did not install every thing because user doing the install didn't have full FileMan privilege. (DUZ(0)="@")
Fix: Temporally give user DUZ(0)="@" for install.

 Problem: KIDS does not DELETE AT SITE when requested to do so for HL LOWER LEVEL PROTOCOL PARAMETER, HL LOGICAL LINK, or MAIL GROUP. Additionally, installer is prompted to supply a coordinator for a MAIL GROUP, even when it is marked as DELETE AT SITE.
Fix: Add delete code for HL LOWER LEVEL PROTOCOL PARAMETER and HL LOGICAL LINK.

Problem: Some functions like assembling the list of routines and moving them into the Build sets up large, local arrays, so large as to cause an abend with an allocation error.
Fix: File the data at least every 100 entries.

Problem: Note that although Data Comes With File was edited to NO, values in logically related fields Site's Data, Resolve Pointers, May User Override Data Update, and Screen to Select Data were not cleared of their values even though the pop-up window for editing these field only appears if Data Comes With File is answered YES, and so there is an understood relationship (i.e. values in these fields make no sense if the answer is NO to Data Comes With File)

Maybe the data would not be picked up, but the Build is misleading to the viewer and the Build serves as valuable documentation for patches.  The developer has to use work around of while value is YES, to @ sign each of the populated fields in the pop-up window before changing Data Comes With File to NO.
Fix: Have code in the form reset the fields when the SEND FULL OR PARTIAL DD (#222.3) is changed to Partial.  Only works in the ScreenMan Form.

Problem: The build print KIDS option is not displaying all the fields. Especially, the one time run routine deletion fields. DELETE ENV ROUTINE, DELETE PRE-INIT ROUTINE, DELETE POST-INIT ROUTINE.
Fix: Changed routine XPDDP to print the fields.

 Added two fields to the ROUTINE file (#9.8) and the code to fill them.
 1. KIDS INSTALL DATE (#7.4) to track when KIDS loads routines.
 2. PATCH (#8) a multiple to track the checksum of a routine for each patch when a KIDS transport is made.
 

XU*8*272

Subject: PHONE FIELDS

Patch XU*8*272 updates the HELP-PROMPT for phone fields - PHONE (HOME) (#.131), OFFICE PHONE (#.132), PHONE #3 (#.133), PHONE #4 (#.134), COMMERCIAL PHONE (#.135), and FAX NUMBER (#.136) - in the New Person file (#200) to help users input data for the fields more efficiently.

 Old HELP-PROMPT: Answer must be 4-20 characters in length.
 New HELP-PROMPT: Answer must be 4-20 characters in length. Only numeric/punctuation characters will be allowed.
 

XU*8*274

Subject: Fix to Tasked DEACTIVATE user.

Problem: Patch XU*8*222 made a change that required a variable that was not in the symbol table when the task to DEACTIVATE a user was run in the future. If the deactivation was not schedule to run in the future there wasn't a problem.
Fix: Set the required variable in the tasked entry point.
 

XU*8*267

Subject: DEA API and INST DEA #

The Drug Enforcement Administration/Veteran's Administration Public Key Infrastructure (DEA/VA PKI) pilot project requires an Application Programmer Interface (API) to obtain the value stored in the DEA# field (#53.2) in the NEW PERSON file (#200). This patch provides this new API and also adds a new field, FACILITY DEA NUMBER (#52), to the INSTITUTIONfile (#4). The specific API information follows:

$$DEA^XUSER([FLAG])
Reference type: Supported, Category: PKI, Integration Agreement: 2343

Description:
This routine will return a user's DEA number, if it exists in the DEA# field (#53.2) of the NEW PERSON file (#200). If the DEA# field value is null, the value returned depends on the optional FLAG input parameter, see below.

Input Parameter
FLAG   (optional) This flag controls what is returned when the user does not have a value in the DEA# field (#53.2) of the NEW PERSON file (#200).

* FLAG is null or "0" -- This routine will check to see if the user has values in the VA# field (#53.3) of the NEW PERSON file (#200) and the (new) FACILITY DEA NUMBER field (#52) of the INSTITUTION file (#4). If values are found in both of those fields, this routine will return the following:

FACILITY DEA NUMBER field (#52)_"-"_VA# field(#53.3)

* FLAG is "1" -- This routine will check to see if the user has a value in the VA# field (#53.3) of the NEW PERSON file (#200). If a value is found in that field, this routine will return that field value. Otherwise, this routine returns an empty string.

Output
DEA#   DEA# field (#53.2) value or the value returned based on the (optional) FLAG input parameter, see "Input Parameter" above.

Example 1

      DEA# (#53.2) field is "AB1234567"
      FACILITY DEA NUMBER field (#52) is "VA7654321"
      VA# field (#53.3) is "789"

      If the FLAG input parameter is null or "0", this API would return "AB1234567".

      If the FLAG input parameter is "1", this API would return "AB1234567".
 

      Example 2

      DEA# (#53.2) field is null
      FACILITY DEA NUMBER field (#52) is "VA7654321"
      VA# field (#53.3) is "789"

      If the FLAG input parameter is null or "0", this API would return "VA7654321-789".

      If the FLAG input parameter is "1", this API would return "789"
 

      Example 3

      DEA# (#53.2) field is null
      FACILITY DEA NUMBER field (#52) is "VA7654321"
      VA# field (#53.3) is null

      If the FLAG input parameter is null or "0", this API would return "".

      If the FLAG input parameter is "1", this API would return "" In both cases it returns an empty string.
 
 

XU*8*263

Subject: REINDEX THE USER KEY'S [XUSER KEY RE-INDEX] FIX

This patch modifies the routine XUSMGR to fix the following problem: A variable DIK(1) was set up inappropriately for the option "Reindex the users key's" [XUSER KEY RE-INDEX].
 

XU*8*269

Subject: Add LOCKING to XUESSO1.

Problem: Duplicate entries in New Person File from RDV.
Fix: Our best guess is this is caused by two RDV coming at the same time and not having one process see the other before starting to add the user a second time. If this is correct, the use of a LOCK to make adding of user by RDV a sequential process will correct the problem.

Problem: QUIT command is after a comment and can't be reached.
Fix: Move to its own line.
 

XU*8*257

Subject: ISO Menu

Patch XU*8*257 re-builds the Information Security Officer Menu [XUSPY]. More options and menu options are added to the menu. This is an enhancement patch, and the enhancement has been requested by the Health Information Security Service.

 Information Security Officer Menu [XUSPY]:
 -------------------------------------------------------------

 Information Security Officer Menu (System Security)

      User Security Menu (Review Users)
           User Inquiry
           List users
           User Status Report
           Find a user
           Switch Identities
           Show the keys of a particular user
           See if a User Has Access to a Particular Option
           User Audit Display
           Deactivate a User
           Reactivate a User

      Fileman Security Menu (Access to VA Fileman Files)
           Inquiry to a User's File Access
           List Access to Files by File number
           Print Users Files
           Delete Users' Access to a Set of Files
           Single file add/delete for a user
           Fileman Access for the ISO
                 Print File Entries
                 Search File Entries
                 Inquire to File Entries
                 Audit Menu
                         Fields Being Audited
                         Data Dictionaries Being Audited
                         Purge Data Audits
                         Purge DD Audits
                         Turn Data Audit On/Off
                 List File Attributes

      Menu and Option Security (Menu Management Review)
           Option Function Inquiry (Inquire)
           Option Access By User
           Print Option File
           Diagram Menus
           Abbreviated Menu Diagrams
           Show Users with a Selected primary Menu
           List users holding a certain key
           Keys For a Given Menu Tree
           Secure Menu Delegation
                 Show a Delegate's Options
                 List Delegated Options and their Users
                 Print All Delegates and their Options
           Option Audit Display
           Audited Options Log
           Audited Options Purge

      System Audit Menu (Maintain System Audit Options)
           Establish System Audit Parameters
           Display the Kernel Audit Parameters
           Server audit display
           Super Search Message File
           Program Integrity Checker
           Bulletin Selection
           Patient Inquiry
           MAS Parameter Entry/Edit

      Access Monitor Menu
           Display of Programmer Mode Entry List
           Programmer Mode Entry Log Purge
           Failed Access Attempts Log
           Failed Access Attempts Log Purge
           Device Failed Access Attempts
           User Failed Access Attempts
           Print Sign-on Log

      Security Officer Menu
           Display User Access to Patient Record
           Enter/Edit Patient Security Level
           Purge Non-sensitive Patients from Security Log
           Purge Record of User Access from Security Log

 Note:
  - (Text) is the old name.
  - Some menus/options may be locked or "OUT OF ORDER MESSAGE"
    at sites.
 

XU*8*278

Subject: Cache/NT %ZIS4 fix.

Problem: ZIS4ONT has the same problem in its REWIND code as ZISFONT had with using "RV" for the open parameters on the Cache/NT systems.
Fix: Have ZIS4ONT check the OS to select the correct open parameters.

In testing another patch it was noticed that Cache changed the format of the IP address data returned by $ZIO between 3.x and 4.x,  The ZIO code was changed to work with both formats.
 

XU*8*240

Subject: STDNAME~XLFNAME: CHECK FOR SUFFIXES IMMEDIATELY AFTER COMMA

 1. Bug fixed: STDNAME^XLFNAME was not accounting for suffixes (except DR) immediately after the comma in the passed name. For example, if the name is:

     SMITH,JR JOHN

 STDNAME^XLFNAME was interpreting "JR" as the Given (First) Name and "JOHN" as the Middle Name.

With this patch, STDNAME^XLFNAME looks for the suffixes JR, SR, DR, MD, ESQ, DDS, RN, and 1ST through 10th immediately after the first comma of the passed name. If it finds any of those suffixes before the given name, they are moved to the end, and STDNAME^XLFNAME returns AUDIT("SUFFIX")="".

 2. Bug fixed: If you made a call to NAMECOMP^XLFNAME, and passed in a name that has DR immediately after the first comma, before the given name, an undefined XUNM("SUFFIX") error would occur. For example:

    >S ZZNAME="SMITH,DR JOHN" D NAMECOMP^XLFNAME(.ZZNAME)

    %DSM-E-UNDEF, undefined variable XUNM("SUFFIX")
    -DSM-I-ECODE, MUMPS error code: M6
    %DSM-I-ATLABEL, N2+7^XLFNAME:1  . S
    XUNM("SUFFIX")=$$JOIN(XUNM("SUFFIX"),"DR")

 3. Bug fixed: If you make a call to STDNAME^XLFNAME and pass in a name part that contains only punctuation:

    a. That name part would be returned as one of the name components;
    b. Some of the other name components may fail to be returned.

This patch changes the behavior so that name parts that consist only of punctuation are removed from both the standard name and the name components returned by the call.

 Example 1:

    >S NAME="SMITH,!@# JOHN" D STDNAME^XLFNAME(.NAME,"C") ZW NAME

    Before patch:                After patch:
    ------------                 -----------
    NAME=SMITH,JOHN              NAME=SMITH,JOHN
    NAME("FAMILY")=SMITH         NAME("FAMILY")=SMITH
    NAME("GIVEN")=!@#            NAME("GIVEN")=JOHN
    NAME("MIDDLE")=              NAME("MIDDLE")=
    NAME("SUFFIX")=              NAME("SUFFIX")=

 Example 2:

    >S NAME="(DEC)." D STDNAME^XLFNAME(.NAME,"CP") ZW NAME

    Before patch:                After patch:
    ------------                 -----------
    NAME=                        NAME=
    NAME("FAMILY")=.             NAME("FAMILY")=
    NAME("GIVEN")=               NAME("GIVEN")=
    NAME("MIDDLE")=              NAME("MIDDLE")=
    NAME("SUFFIX")=              NAME("SUFFIX")=
 

XU*8*282

Subject: Person Class Expired

 1. MANUAL^XUINPCH2 has added the current date to the Person Class Expiration Date for both Terminated and DISUSER users if that field is current non-existent.

    This patch modifies the MANUAL^XUINPCH2 to add the current date to the Person Class Expiration Date for only Terminated user if that field is current non-existent.

 2. There is a typo 'Switch too' in the routine XUS3A.

    This patch corrects the typo from 'Switch too' to 'Switch to'.
 
 

XU*8*258

Subject: Multiple Sign on Update

1.     New Service request: #20020605  Multiple sign-on from only one IP. Preface: In today's VA Workplace it has become impossible for Clinicians to accomplish their work from a single VISTA Session. Many users need to have a Telnet session, CPRS, and VISTA Imaging open at the same time. Two issues:
        a.      Security - We don't allow multiple sign-ons for security reasons. This is primarily caused by users not obeying rules. In the past users logged on in one location then left the area and signed on elsewhere. In doing so they violate Patient Confidentiality and VA Security Policy.
        b.      Licenses - Every sign-on requires a license. If a user signs on in multiple locations we eventually run out of licenses. NOTE: CACHE counts multiple sign-ons from a single IP as 1 license.

Fix: Add a new value to the DEFAULT MULTIPLE SIGN-ON field (#204) in the KSP file (#8989.3), "Only one IP" and the same change to the MULTIPLE SIGN- ON field (#200.04) of the NEW PERSON FILE (#200). Make changes to the Sign- on log file (3.081) to track the IP of the user.  Change the code to check the flag and file to limit a user to multiple sign-ons from only one IP address.

 DD changes:
 New Person File (200):
 MULTIPLE SIGN-ON (200.04) add to the set of codes:
 ;0:NOT ALLOWED;1:ALLOWED;2:Only one IP;
 MULTIPLE SIGN-ON LIMIT (200.19) New field, number;
 Kernel System Parameters file (8989.3):
 DEFAULT MULTIPLE SIGN-ON (204) add to the set of codes:
 0:NO;1:YES;2:Only one IP
 DEFAULT MULTIPLE SIGN-ON LIMIT (219) New field, number;
 SIGN-ON LOG (3.081): Complete DD sent.

One way for sites to use this would be to set the field DEFAULT MULTIPLE SIGN-ON (204) in the Kernel System Parameters file (8989.3) to "Only one IP". Also setting the field DEFAULT MULTIPLE SIGN-ON LIMIT (219) to a value of 5. Then if some users need other settings they can be set by the fields in the New Person File (200).  Because a Terminal server only has one IP address a user could go to another Terminal Server Client and still sign-on up to the sign-on limit.

 2.     The print template XUSEC LIST has been modified to provide more useful information.  One change is in the ELAPSED TIME column a "*" after the value indicates that the record was forced closed.

 3.     NOIS: BRX-0102-11431. The problem mentioned in this (closed) NOIS has been fixed. XUP will store DATE/TIME for last sign-on.

 4.     Also added are two Parameter Definitions for the XUP routine. XUS- XUP SET ERROR TRAP to control if XUP should set an error trap for programmer errors and XUS-XUP VPE to control if XUP will drop into the VPE programmer environment if an option is not selected.  The default is to work as it has in the past.
 

XU*8*286

During  certain KIDS installs which are run at large sites with lots of menu options on their system, a String Too Long error may result when Micro Surgery attempts to update the menu tree.  This patch presents modified routines that will prevent that error.  Instead of storing the data in a singe variable string which can grow too large, we now put them into an array.
 

XU*8*224
Subject: Fix KSP call.

Problem: The call KSP^XUPARAM("WHERE") would return the Mailman network name and not the domain name pointed to by the Kernel System Parameters.
Fix: Return the Domain name pointed to by the Kernel System Parameters.
 

XU*8*273

Subject: Switch Identities Fix

The problem is the Switch Identities [XUTESTUSER] option appears to get an <UNDEFINED> error if the user being selected does not have the proper key(s) for their primary menu.
 

XU*8*301

Subject: Name Standardization Wrong File Component Deletion

If the file number being passed to API, DELCOMP^XLFNAME2, begins with the same number as another file that is registered in the NAME COMPONENTS file (#20), then the Name Component's entry for that file maybe deleted, instead of the Name Component for the file that was passed. For example, if the file number being passed is 2, meaning delete the Name Component entry for an entry in the PATIENT file (#2), then there was a possibility that the Name Component entry for an entry in file 200 would be deleted.  This is because the "X" flag for an exact match was not passed in the $$FIND1^DIC call.
 

XU*8*253

Subject: Merging Users' Menu Structures

              Merging Users' Menu Structures

When a user is reactivated and there are no "^" jump compiled menus for that user in the ^XUTL global then the software tries to merge the necessary data from the master copy in ^DIC(19,"AXQ") in to the global.  When several users are reactivated at the same time several merges were triggered.  This patch prevents this and causes the merges to take place in an orderly fashion.

Likewise, when a user signs onto a system in a cluster that and does not have the most recent data structures to use a merge is triggered.  A system of flags and locks are now used to control all merges within the Menu System.

XU*8*296

Subject: NEW PERSON DD CHANGES

The Kernel Part III post routine, XUINCON - BUILDS ACCESSIBLE FILE MULTIPLE, sets the NEW PERSON (#200) file's ACCESSIBLE FILE (#200.032) sub-file's WRITE ACCESS (#5) field to zero at D1+1^XUINCON.  The Set of Codes field definition does not define 0 as an allowed value.  This causes "0" to display during display functions instead of null or NO.

To fix this, "0" (meaning NO) is being added to the set of codes for this field and the others in this multiple.

This patch contains no routines; only the DD changes.
 
 

XU*8*297

Subject: SHOW MORE OF THE SPOOL DOC NAME

 This patch concerns the SPOOL DOCUMENT (#3.51) file.

1. The length of the "B" xref on the NAME (#.01) field is increased from 30 to 63 characters so that more of the name appears when the user enters '?' to get a list of spool documents when using option [XU-SPL-PRINT] Print A Spool Document.  The post-init (POST^XU8P297) for this patch will kill the existing "B" xref and reindex the NAME (#.01) field.  Here's the new DD for that field.  Nothing's changed, except the size of the "B" xref.

2. The print template [XU-ZISPL-USER] is altered so that the first 44 (up from 20) characters of the spool document names are shown when using option [XU-SPL-LIST] List Spool Documents.  During the install, you will see the following message:

  The following Routines were created during this install:
      XUCT02
 XUCT02 is the routine into which the print template is compiled.

XU*8*300

Subject: PERSON CLASS API

 This patch concerns the PERSON CLASS (#200.05) subfile of the NEW PERSON (#200) file.

1. The API $$GET^XUA4A72, given a person and a date, retrieves the active class for that person on that date.  It can get confused when confronted with problems such as those above, and return an error (no active class for this person on this date) for 5/18/2000, for example.  This patch makes the API a bit smarter.  It will return the last person class for 5/18/2000.  It will return the same one (not the first one) for 11/1/1996.

2. When a new PERSON CLASS record is added to the multiple, the expired date of the previous one is set to the effective date of the new one.  If the effective date of the new one is prior to the effective date of the previous one, this results in records such as those marked "problem" above. To remedy this, we add a simple check: If the Effective Date of the previous class is greater than the Effective Date of the new class, then we set the Expired Date of the previous class to be the same as its Effective Date.

3. Patch XU*8*49 purportedly prevented you from adding a new PERSON CLASS record with an effective date prior to the effective date of the previous one.  It didn't work.  This patch does.  A new input transform on the Effective Date (#2) field sees to it.
 
 

XU*8*277

Subject: Stop USERINFO errors.

 Site was seeing this error "<UNDEF>USERINFO+4^XUSRB2" in there error trap. It is believed to be from the user not completing the sign-on when they have to change there Verify Code during the GUI sign-on.

Fix: Change the code to check that DUZ is greater that zero before continuing. Because this code should never be called if DUZ is not set, Code will also set the XWBSEC to tell broker to raise an error.

XU*8*291

Subject: CONVERT SPOOL DOC TO MAILMAN MESSAGE

When converting a spool document to a MailMan message, the user can now enter the subject of the message, select the basket when addressing to himself, address the message to anyone else, and choose whether the message should be from himself or the Postmaster.
 

XU*8*251

Subject: CLINICAL TRAINEE CORE DATASET

This patch was created to assist the VHA Office of Academic Affiliations (OAA) in capturing core data for VHA clinical trainees that use the Veterans Health Information System and Technology Architecture (VISTA). To achieve this, a new PROGRAM OF STUDY file (#8932.2) is created, new fields and a new cross-reference are added to the NEW PERSON file (#200), and the forms, input templates, and print templates that are used to edit and display the data in the NEW PERSON file are modified to include the new fields. New options, a print template, and a form are also provided for entering and displaying clinical trainee data.

2. A record-level new-style cross-reference is added to the NEW PERSON file to set an index whenever fields for clinical trainees being tracked by OAA is changed:
 

New file: PROGRAM OF STUDY (#8932.2)
-------------------------------------
3. The PROGRAM OF STUDY file is created to hold the list of the programs of study that can be associated with a clinical trainee. This file is pointed to by the new PROGRAM OF STUDY field (#12.2) in the NEW PERSON file (#200). The data dictionary for the file is as follows:
 

Option: Add a New User to the System [XUSERNEW]
   Form: XUEXISTING USER
   Input Template: XUNEW USER
 -------------------------------------------------------

4. The form and input template used by the Add a New User to the System option are modified to include the fields in the NEW PERSON (#200) file identified by OAA as core clinical trainee data elements. Some of the fields to be added already exist in the NEW PERSON file; others are added to the NEW PERSON file by this patch. If the person is assigned a Program of Study, it is assumed that the user is a Clinical Trainee. If the person entering the data responds "YES" to "Is this person a Clinical Trainee?", the following field is made required:

   12.2  PROGRAM OF STUDY
 

 Option: Edit an Existing User [XUSEREDIT]
   Form: XUEXISTING USER
   Input Template: XUEXISTING USER
 -------------------------------------------------

4. The same changes made to the form and input template used by the Add a New User to the System [XUSERNEW] option are made to the form XUEXISTING USER and input template XUEXISTING USER used by the Edit an Existing User [XUSEREDIT] option. See "Option: Add a New User to the System [XUSERNEW]" above for a description of those changes.
 

 Option: Reactivate a User [XUSERREACT]
   Form: XUREACT USER
   Input Template: XUREACT USER
 ----------------------------------------------

5. The same changes made to the form and input template used by the Add a New User to the System [XUSERNEW] option are made to the form XUREACT USER and input template XUREACT USER used by the Reactivate a User [XUSERREACT] option. See "Option: Add a New User to the System [XUSERNEW]" above for a description of those changes.
 

 Option: User Inquiry [XUSERINQ]
   Print Template: XUSERINQ
 ---------------------------------------
 6. The print template XUSERINQ used by the User Inquiry option was modified to display the following fields from the NEW PERSON file for clinical trainees:

    12.1  CURRENT DEGREE LEVEL
    12.2  PROGRAM OF STUDY
    12.3  LAST TRAINING YEAR

 Option: OAA Clinical Trainee [XU-CLINICAL TRAINEE MENU]
   Type: Menu
 -------------------------------------------------------

7.  This is the menu that contain the Clinical Trainee, items #8 and #9, but each site can make this menu available to any user that needs to access the data.

 Option: Edit Clinical Trainee [XU-CLINICAL TRAINEE EDIT]
   Form: XU-CLINICAL TRAINEE
 --------------------------------------------------------

8. This new option invokes a new form that can be used to edit the clinical trainee data for users in the NEW PERSON file that haven't been terminated. This new option is attached to OAA Clinical Trainee [XU-CLINICAL TRAINEE MENU], which in turn is attached to the User Management [XUSER] menu.  Each site can make this option available to any user that will be entering this data.
 

 Option: Inquiry Clinical Trainee [XU-CLINICAL TRAINEE INQUIRY]
   Print Template: XU-CLINICAL TRAINEE INQUIRY
 --------------------------------------------------------

9.  This new option invokes a new print template that can be used to display the clinical trainee data for users in the NEW PERSON file.  This new option is attached to OAA Clinical Trainee [XU-CLINICAL TRAINEE MENU], which in turn is attached to the UserManagement [XUSER] menu.  Each site can makethis option available to any user that will need to view this data.
 

Routine: XUSER2
---------------
10. This routine is modified to add a new REQ entry point that can be called from the XUEXISTING USER, XUNEW USER, XUREACT USER, and XU-CLINICAL TRAINEE forms. This entry point makes fields #12.1, 12.2, and 12.3 available or unavailable for editing, and makes those fields along with the other fields being tracked by OAA required or not required, depending on whether the person is designated as a clinical trainee.
 
 

XU*8*283

Subject: PKI pilot support

Pharmacy Benefits Management (PBM) Strategic Healthcare Group, in collaboration with the Drug Enforcement Administration (DEA), requested the development of the first Public Key Infrastructure (PKI) VistA pilot project, named Public Key Infrastructure for Electronic Prescriptions Pilot Project. The objective is to develop an electronic order entry system for Schedule II controlled substances using digital signatures. A Memorandum of Understanding between the DEA and the Department of Veterans Affairs authorizes only specified sites to use the full functionality of this pilot, although additional functionality is included that will benefit non-pilot sites. This patch contains the functionality required for this pilot and lays the foundations for the future implementation of the PKI once the DEA regulations are revised and published. It is installed with the PKI functionality disabled and will not have any impact until the PKI functionality is enabled. PKI functionality can be enabled via Computerized Patient Record System (CPRS) parameters at a site level and a user level. Additional hardware and software is required from various sources before PKI can be implemented at a site. DO NOT enable the PKI parameters until all required software and hardware has been installed.

 To make this project viable, modifications to the following packages were identified:
 National Drug File (NDF) V. 4.0
 Kernel V. 8.0  (This patch and XU*8*288)
 Computerized Patient Record System (CPRS) V. 1.0
 Pharmacy Data Management (PDM) V. 1.0
 Outpatient Pharmacy (OP) V. 7.0
 Controlled Substances (CS) V. 3.0

 Web sites with more information:
 Overview of VA PKI projects:
 https://vaww.webdev.med.va.gov/techsvc/projects/vapki.asp

 The VA PKI project, for this project:
 http://vaww.va.gov/techsvc/projects/vapkidea/vapkidea.asp
 

 Files to get from the download sites.
       "HinesPKIUserGuide.doc", This is a word document to help in the installation and implementation of PKI for DEA/VA Schedule II drugs.

       "cert_how_to_updated11-5-02.pdf", This is from a DEA contractor and shows how to view a DEA Cert.

       "Krn8_0p283sp.pdf", This documents the digital signature from the Kernel point of view during the development phase.

       "XuDigSigSC.exe", This is the self extracting ZIP file with the install files for the Signing COM object.

       "XuDigVerify.exe", This is the self extracting ZIP file with the install files for the Verification server.

 ***
 This patch creates a new global ^XUSSPKI, which should be placed before installing the patch.  Following national deployment, a site could see approximately 3000 characters in this file for every Schedule II, III, and IV out patient drug that is prescribed.  This data must be held for a minimum of two years.
 ***

   Post install instructions only for a site in the pilot:

       1. Use the "Kernel PKI Parameter Edit" option [XUSSPKI EDIT] to edit/enter the IP address of the Verification Server.

       2. Use the "Mail Group Edit" option [XMEDITMG] to add users to the "XUSSPKI CRL SERVER" mail group.

       3. If you need debug information, use the General Parameter Tools option [XPAR MENU TOOLS] to set the value of the XUSC1 DEBUG parameter to 1 for debug logging.

       4. From EVE, go to TaskMan's "Schedule/Unschedule Options" option and schedule "XUSSPKI CRL UPLOAD" to run once an hour.

       5. From one of the national download site get the following files.

a. XuDigSigSC.exe  This is a self-extracting ZIP file of a install disk, that expands into C:\temp\PKI-c\. Switch to this folder and Double click on the SETUP icon.  This will install the signing COM file (XuDigSigSC.exe) into C:\program files\vista\Common files\ and register it.It installs a COM object that is used by CPRS when doing a digital signature.  It will need to be installed on each workstation.

b. XuDigVerify.exe   It gets installed on the Verification Server, a Windows 2K Pro box provided by the site. This is a self- extracting ZIP file of a install disk, that expands into C:\temp\PKI-v\. Switch to this folder and Double click on the SETUP icon. It runs two services that are used by Pharmacy to verify the digital signature.

Install/implementation guide doc, This is a word document to help in the installation and implementation of PKI for DEA/VA Schedule II drugs.

XU*8*288

Subject: Updated DEA~XUSER API.

This patch updates the DEA API that was added with patch XU*8*267. The changes are to allow a USER IEN to be passed in to use inplace of the current DUZ.  The second update is that if the institution doesn't have a DEA# on file a check is done to get the PARENT FACILITY and see if there is a DEA# for that entry.

The DEA/VA PKI pilot project requires an API to obtain the value stored in the DEA# field (#53.2) in the NEW PERSON file (#200). This patch provides this new API. The specific API information follows:

$$DEA^XUSER([FLAG][,USERIEN])
Reference type: Supported, Category: PKI, Integration Agreement #2343

Description:
This routine will return a user's DEA number, if it exists in the DEA# field (#53.2) of the NEW PERSON file (#200). If the DEA# field value is null, the value returned depends on the optional FLAG input parameter, see below.

Input Parameter
FLAG   (optional) This flag controls what is returned when the user does not have a value in the DEA# field (#53.2) of the NEW PERSON file (#200).

* FLAG is null or "0" -- This routine will check to see if the user has values in the VA# field (#53.3) of the NEW PERSON file (#200) and the (new) FACILITY DEA NUMBER field (#52) of the INSTITUTION file (#4). If values are found in both of those fields, this routine will return the following:

FACILITY DEA NUMBER field (#52)_"-"_VA# field(#53.3)

* FLAG is "1" -- This routine will check to see if the user has a value in the VA# field (#53.3) of the NEW PERSON file  (#200). If a value is found in that field, this routine will  return that field value. Otherwise, this routine returns an empty string.

USERIEN  (optional) This value can be used to get the DEA# of some user besides the one that signed in.  In CPRS to check that a students teacher has the required DEA#.

Output
 DEA#   DEA# field (#53.2) value or the value returned based on the (optional) FLAG input parameter, see "Input Parameter" above.

      Example 1

      DEA# (#53.2) field is "AB1234567"
      FACILITY DEA NUMBER field (#52) is "VA7654321"
      VA# field (#53.3) is "789"

      If the FLAG input parameter is null or "0", this API would return "AB1234567".

      If the FLAG input parameter is "1", this API would return "AB1234567".
 

      Example 2

      DEA# (#53.2) field is null
      FACILITY DEA NUMBER field (#52) is "VA7654321"
      VA# field (#53.3) is "789"

      If the FLAG input parameter is null or "0", this API would return "VA7654321-789".

      If the FLAG input parameter is "1", this API would return "789"
 

      Example 3

      DEA# (#53.2) field is null
      FACILITY DEA NUMBER field (#52) is "VA7654321"
      VA# field (#53.3) is null

      If the FLAG input parameter is null or "0", this API would return "".

      If the FLAG input parameter is "1", this API would return ""
      In both cases it returns an empty string.

 It adds a menu item "Institution DEA# edit" (XU-INSTITUTION-DEA), to the Kernel Management Menu (XUKERNEL) to allow the entry/edit of the
 institution DEA# value.
 

XU*8*307

Subject: State File Check/Clean-up
 

XU*8*304

Subject: KIDS FIXES

The routine ^XPDKRN does not have the option to backup a transport global. This patch adds it.  The post-init deletes the global ^DOPT("XPD"), and then recreates it with the added option. If you select the Full Comparison in the option [XPD COMPARE TO SYSTEM] Compare Transport Global to Current System, data that is exported for a file is not compared if the "Update the DD" question was answered NO.  That's not right.  The data should be compared regardless of whether the DD is updated. This patch fixes that in routine ^XPDCOMG.

If you select the Full Comparison in the option [XPD COMPARE TO SYSTEM] Compare Transport Global to Current System, and items (such as mail groups, options, etc.) to be deleted do not exist on the current system, KIDS will report that they are to be ADDED. This patch fixes that in routine ^XPDCOMG.

Under the "Build File Print" option,
 a. If you simply press return at the BUILD NAME: prompt, it should exit. Instead it prompts for DEVICE:
 b. If the patch description contains lines that are longer than 80 characters, it should wrap the lines.  Instead, it may truncate them.
 This patch fixes both these problems in routine ^XPDDP.

In the FILE (#9.64) subfile of the BUILD (#9.6) file, let's say that the DATA COMES WITH FILE (#222.7) field is set to YES, and the SITE'S DATA (#222.8) field is set to MERGE. If DATA COMES WITH FILE is changed to NO, SITE'S DATA remains unchanged.  That can be confusing. It should be deleted, as should other fields associated with data.  This patch fixes that by adding a new style xref (AD) to the following field:
 

XU*8*310

Subject: FIX DEVICE FORMS

Kernel patch XU*8*69 deleted fields *FORM FEED (#10) and *BACK SPACE (#12) from the DEVICE (#3.5) file, but neglected to remove references to them in various FORMs and INPUT TEMPLATEs.  This patch corrects that in the following:

 FORMs                INPUT TEMPLATEs
 -------------        ---------------
 XUDEVICE CHAN        XUHFSDEV
 XUDEVICE HFS         XUSDPDEV
 XUDEVICE MT          XUSPLDEV
 XUDEVICE SDP
 XUDEVICE SPL

This patch also removes the POST ACTION ON CHANGE for the SUBTYPE (#3) field from the FORMs.  Whenever the SUBTYPE was changed, it had the effect of copying the RIGHT MARGIN and PAGE LENGTH field values from the TERMINAL TYPE (#3.2) file to the DEVICE (#3.5) file.  With patch XU*8*69, these fields in the DEVICE file should only be populated if they need to differ from the values in the TERMINAL TYPE file.
 
 

XU*8*313

Subject: BCMA Contingency Support

Patch XU*8*290 sent the existing extended action Option XU USER TERMINATE out in such a way that it removed existing actions that had been connected to it.
The PRE-INIT will try and add the 5 known national options back onto the XU USER TERMINATE extended action option.
The POST-INIT for this patch will run the XU USER TERMINATE option for terminated users after a date chosen by the installer.

This patch includes support for the BCMA Contingence plan by providing protocol events for:
    User Add Event (XU USER ADD)
    User Change event (XU USER CHANGE)
    User Terminate event (XU USER TERMINATE).
These are in the option file and can be linked to there. The user's IEN will be in the variable XUIEN at the time of the call. Each protocol will create an array XUSR that will hold a set of fields from the NPF.

The XU USER TERMINATE protocol is not new. Both the old variable XUIFN and the new XUIEN will be defined.  The exact place in routine XUSTERM that it is called from has changed.

The error occurs when we are using the option Reactivate a User [XUSERNEW], and place "^" at prompt of the question: "Do you wish to add this user to mail groups? NO//"

Site requested something to track when and who changed the access code, and when and who changed the verify code.
Fix: The data was being hard set into the access/verify code fields because FM was not reentrant in the early days.  This code has been changed to use a FileMan DBS call.  Now the access/verify code fields can be audited.

XU*8*308

Subject: SUPPRESS SERVER BULLETIN

When a server message is processed, a bulletin is sent to a mail group to notify the mail group.  If there are no members in the mail group, the server message is rejected.  This is as it should be.

If the server option field SUPPRESS BULLETIN (#224) is set to YES, then no bulletin is sent.  This is also as it should be.

The problem is that even when bulletins are suppressed, the mail group associated with the bulletin is still checked, and the server message is rejected if no members are in the group.  That's not right.

If the SUPPRESS BULLETIN (#224) field in the OPTION (#19) file is set to YES, then this patch will not check any mail group associated with any bulletin.
 

XU*8*324

Subject: Allocation Failure During Transmission

During transmission of the Clinical Trainee data is was possible for an allocation error to occur and the data not to be transmitted, yet VistA would "think" it had been transmitted.  In cooperation with the Office of Academic Affiliations(OAA) this patch will do the following:

 1.  Fix the allocation error.

 2.  Install a new menu option so a current count of Clinical Trainees can be obtained.

 3.  Install a new MAIL GROUP.  Persons that are members of this mail group will now receive a message that will indicate how many records were transmitted to the Office of Academic Affiliations(OAA).

 4.  Execute a post install that will do the following:
     a.  Re-index the "ATR" cross reference.
     b.  Retransmit all persons who are indicated as Clinical Trainees.
 

XU*8*316

Subject: Reporting Options for Alerts

This patch provides several reporting options for Alerts, including ones that: list users with large number of alerts in the ALERTS file (#8992); list alerts for a specified user from a specified date; list alerts for a specified patient for a specified day or date range. Since the retention period for alerts in the ALERT TRACKING file (#8992.1) is currently a site parameter, some users may have alerts in the ALERTS file that no longer are present in the ALERT TRACKING file, data from both sources is used when necessary.

This patch adds the following options:

Report Menu for Alerts (XQAL REPORTS MENU)

This menu provides several options for generating reports on alerts for users or patients.

User Alerts Count Report  (XQAL USER ALERTS COUNT)

This option is used to generate a report on users who have more than a specified number of alerts in the ALERTS file (#8992).  The report covers a specified range of dates, and can be sorted by user name, number of alerts, or by service/section.  In addition, the report in each of these formats may be generated by Divisions if desired.

For each user who has the specified number of alerts or more, the report includes the user name, the section/service for the user, the number of alerts in the ALERTS file, the last sign-on date, the number of Critical alerts or Abnormal Imaging alerts, and the date of the oldest alert.

The counting of alerts may also be restricted to those alerts which contain specific text or phrases.

Critical Alerts Count Report (XQAL CRITICAL ALERT COUNT)

This option is used to generate a report of users who have more than a specified number of alerts containing the word 'critical' or the words 'abnormal imaging' between the specified start and end dates. The report is presented in descending order for the number of critical/abnormal imaging alerts present.

For each user who has the specified number of critical/abnormal imaging alerts or more, the report includes the user name, the section/service for the user, the number of alerts in the ALERTS file, the last sign-on date, the number of Critical alerts or Abnormal Imaging alerts, and the date of the oldest alert.

List Alerts for a user from a specified date (XQAL ALERT LIST FROM DATE)

This option is used to obtain a list of alerts from the ALERT TRACKING file (#8992.1) for a specified user for a specified date range.  The user may select all of the alerts to be displayed, or enter specific text or phrases to select only alerts which contain the specified text.  In the latter case, the user may also select to see only those alerts which match the criteria and are only info only alerts, only action alerts, or both.

The listing includes the internal entry number for the alert in the ALERT TRACKING file, the date and time the alert was generated, the message text of the alert, and information about any option or routine to be executed for processing the alert.

Patient Alert List for specified date (XQAL PATIENT ALERT LIST)

This option is used to obtain a list of alerts for a specified patient from the ALERT TRACKING file (#8992.1) for a selected date range (it is recommended that this range be only a few days at most, since every entry in the ALERT TRACKING file in the selected date range must be checked to provide a complete listing of alerts for a patient).

A prompt is provided to obtain a quick scan listing of dates with at least some alerts for the patient on it based on OR and DVB alerts (other patient related alerts need to be identified by looking at each alert's message text and are included in the full list, but not the quick scan).

The user may select all of the alerts to be displayed, or enter specific text or phrases to select only alerts which contain the specified text. In the latter case, the user may also select to see only those alerts which match the criteria and are info only alerts, only action alerts, or both.

The listing includes the internal entry number for the alert in the ALERT TRACKING file, the date and time the alert was generated, the message text of the alert, and information about any option or routine to be executed for processing the alert.

View data for Alert Tracking file entry  (XQAL VIEW ALERT TRACKING ENTRY)

This option can be used to obtain a listing of data in captioned format for selected entries in the ALERT TRACKING file (#8992.1).  The internal entry numbers for the entries to be listed must be entered individually.
 

XU*8*311

Subject: TRANSITIONAL PHARMACY BENEFIT PROJECT - PHASE II

As part of the Transitional Pharmacy Benefit project - Phase II, this patch introduces the following new fields to the NEW PERSON file (#200). These fields will provide Outpatient Pharmacy V. 7.0 package, the flexibility to enroll "NON-VA" Physicians into the NEW PERSON file (#200), to process medications prescribed by the "NON-VA" Physicians. This is a requirement of the Veterans Health Administration (VHA) Directive 2003-047.

 1. NON-VA PRESCRIBER field (#53.91) - to identify a physician as a NON-VA person or not. A value of 1 indicates that this person is a NON-VA Physician.

 2. TAX ID field (#53.92) - TAX ID of the NON-VA Physician's Privat Clinic, where the prescription was written.

 3. EXCLUSIONARY CHECK PERFORMED field (#53.93) - Department of Health and Human Services provides an exclusionary list of Medical Practitioners (providers excluded are those who are not allowed to receive payment for government services due to various reasons). A value of 1 indicates that an Exclusionary Check was performed for this physician.

 4. DATE EXCLUSIONARY LIST CHECKED field (#53.94) - The date Exclusionary Check was performed.

 5. ON EXCLUSIONARY LIST field (#53.95) - The NON-VA Physician was he/she on the Exclusionary Check List. A value of 1 indicates that the
    Physician was on the Exclusionary Check.

 6. EXCLUSIONARY CHECKED BY field (#53.96) - User ID of the person who made the entry.
 
 

 XT*7.3*58

Subject: MXML parser

This patch releases a XML parser that was commissioned by the VA architects. Developer documentation can be found on the VistA Documentation Library under Infrastructure in the Kernel ToolKit session. Here is the URL: http://vista.med.va.gov/vdl/#App12

 Sample Use:
 Create a XML file:
 ^TMP($J,1) = <?xml version='1.0'?>
 ^TMP($J,2) = <!DOCTYPE BOOK>
 ^TMP($J,3) = <BOOK>
 ^TMP($J,4) = <TITLE>Design Patterns</TITLE>
 ^TMP($J,5) = <AUTHOR>Gamma</AUTHOR>
 ^TMP($J,6) = <AUTHOR>Helm</AUTHOR>
 ^TMP($J,7) = <AUTHOR>Johnson</AUTHOR>
 ^TMP($J,8) = <AUTHOR>Vlissides</AUTHOR>
 ^TMP($J,9) = </BOOK>

 Invoke the SAX interface:
 D EN^MXMLTEST($NA(^TMP($J)),"V")

 . . . See what happens.

 Check the DOM interface:
 >S HDL=$$EN^MXMLDOM($NA(^TMP($J)))
 >W $$NAME^MXMLDOM(HDL,1)    <<Write the name of the first node
BOOK
 >S CHD=$$CHILD^MXMLDOM(HDL,1)  <<Get the child of the node

 >W $$NAME^MXMLDOM(HDL,CHD)  <<Write the child name
TITLE
 W $$TEXT^MXMLDOM(HDL,CHD,$NA(VV))  <<Get the text of the child
 1
 >ZW VV
 VV(1)=Design Patterns

 List all the sibling nodes
 >S CHD=$$CHILD^MXMLDOM(HDL,1)

 >S SIB=CHD

 >F  S SIB=$$SIBLING^MXMLDOM(HDL,SIB) Q:SIB'>0  W !,SIB,?4,$$NAME^MXMLDOM(HDL,SIB)
 3   AUTHOR
 4   AUTHOR
 5   AUTHOR
 6   AUTHOR
 >

Some notes, Defined values are case sensitive, In the first line, <?xml must be in lowercase. Lines can only be broken at whitespace.
Here is a URL for more data from Microsoft and their XML notepad:
 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnxml/html/xmlpadrun.asp
 

XT*7.3*61

Subject: XINDEX UPDATE

 Problem: XINDEX reports an error on the use of $ESTACK, $ETRAP and $ECODE.
 Fix: To recognize that $ESTACK, $ETRAP and $ECODE are valid variables.

 Problem: XINDEX reports ]] as an error. Part of the 95 standard.
 Fix: Check and allow ]] in routines.

 Problem: XINDEX report writes past the right margin.
 Fix: Improve the new line check.

 Problem: Bad code like 'D EN^DDIOL=("some text")' would cause XINDX5 to error out.
 Fix: Improve check for valid routine names before checking if they exist.

Problem: The XINDEX program marks a QUIT not followed by two spaces as a warning if the most resent TAG did not accept parameters.  Thinking that it had removed the next command from the line being analyzed it would attach it back on the string.  If the text added back was not a valid M command the line would get a "UNDEFINED COMMAND (rest of line not checked)" error.
 So M code like this:
 Q:DIQGWPB "$CREF$"_DIQGR_DA_","_$$Q^DIQGU(P)_")" Q:DIQGWPO $NA(@DIQGETA)
 Would cause two error messages.
   W - QUIT Command followed by only one space.
   F - UNDEFINED COMMAND (rest of line not checked).
 The UNDEFINED COMMAND error should not happen.
 Fix: Check that the text added back would make a valid M command.

 Problem: XINDEX did not have patch 48 on second line.

XT*7.3*59

Subject: XTRMON FIX

Problem: When using the OPTION: "Monitor Routines for Changes"(XTRMONITOR) with a range and the range ended with an "A" (Like XMA) then the starting point would be invalid causing an error. Monitoring all routines or a range like XUS worked ok.
Fix: Change how the start of the range is checked.

Problem: The entry XPAR ALL ENTITIES is missing from FILE: PARAMETER DEFINITION(#8989.51).
Fix: Send out the entry.

Problem: In BUILD^XTRUTL, if the list of routines includes a routine that has been auto deleted during the install, and is not the first routine in the list, it will display the patch list of the previous routine.
Fix: Kill the variable each time thru the loop.

Problem: Internal testing found that in BUILD^XTRUTL the list of needed patches was not always correct.
Fix: Replace with a better algorithm.

Problem: SQA pointed out that the Routine Summary did not report the patch list as the Patch Template (appendix B) in the IIS Patch Completion document shows.
Fix: Change the text to match.

XT*7.3*63

Subject: Fix to missing line in XPAR.

1. A format option in the call GETLST^XPAR was accidentally removed. This caused errors in some CPRS (Computerized Patient Record System) calls.
 Fix: the format option was added back.

 2. In the process of executing the cross-references of the Data Dictionary (DD), a call is made to OUT^XPARDD. If an incomplete record is encountered it will result in a SUBSCRIPT error.
 Fix: In OUT^XPARDD check that the parameter used in the call to EXT^XPARDD has a value before making call.
 

XT*7.3*64

Subject: Lookup field for Parameter Definition file

DESCRIPTION:
Managing parameters has gotten very difficult because of the large number of entries and the way they are named by the developers. What makes sense to a developer does not necessarily make sense to us in NVS or the users at the sites. I'm requesting a Keyword lookup field be added to the Parameter Definition file so users can group parameters in a way that makes sense to them.

IMPACT:
The addition of this field would allow a site to group parameters in a meaningful way. For example, a parameter which doesn't have the word PRINT anywhere in it's name or display name, might have PRINT added as a Keyword because the user associates this parameter with one or more print functions. This same parameter might also have something to do with Lab so the addition of Lab as a keyword.

A search for Lab OR Print will find this parameter.

RECOMMENDATION:
The recommendation is simply to add a Keyword lookup field/index to file 8989.51.

Solution: A new multiple KEYWORD (#4) field has been added to the PARAMETER
DEFINITION (#8989.51) file with a whole file lookup cross-reference.  Sites can add Keywords to help in the lookup. A new option has been included to allow editing of the new Keyword field. Option "Edit Parameter Definition Keyword" (XPAR EDIT KEYWORD) has been added to the option "General Parameter Tools" (XPAR MENU TOOLS).
 

XT*7.3*66

Subject: XINDEX check for patch number

Problem: It is easy to miss a routine that doesn't have the patch on the second line.
Fix: At the programmer prompt, running XINDEX and selecting a BUILD, will check that each routine has the patch number on the second line.  Running OPTION: Calculate and Show Checksum Value [XTSUMBLD-CHECK] or OPTION: Routine Summary List [XT-BLD RTN LIST] for a build will also check for the patch number on the second line of each routine.  These options are usually executed at the programmer prompt by running CHECK^XTSUMBLD and BUILD^XTRUTL

Make sure that options: "Routine Summary List", "Version Number Update", "Old Checksum Update from Build", Old Checksum Edit, are on the KIDS "Edits and Distribution" menu.
 

XT*7.3*72

Subject: Add Column Headings to Parameter Options

Patch XT*7.3*72 fixes a problem that has been reported in NOIS PUG-0702-50868. The problem is that there is no column headings for fields displayed in the options 'List Value for a Selected Entity' [XPAR LIST BY ENTITY], and 'List Values for a Selected Parameter' [XPAR LIST BY PARAM].

XT*7.3*74

Subject: ADJUST PARAMETER TOOLS HELP DISPLAY

The help listing in Parameter Tools displays two columns of data, each the same width.  The data being displayed, though, can vary in width require- ments.  This patch will check the data it needs to display, and adjust the column widths accordingly.

XT*7.3*69

Subject: Undef EXTPTR~XPARDD fix.

Patch OR*3.0*141 deletes bad values from the Parameters file but for sites that have turned on auditing, the audit requires the current external value,  the DD has an output transform with a call to $$OUT^XPARDD(Y,"I"). This calls the EXTPTR sub-routine that doesn't handle bad data and causes the error.

Fix: The $$EXTPTR^XPARDD function will now handle invalid input data.
 Example:
 KDE>W $$EXTPTR^XPARDD("A",8989.3) = > A
 KDE>W $$EXTPTR^XPARDD(2,8989.3)   = > 2
 KDE>W $$EXTPTR^XPARDD(1,8989.3)   = > NXT.KERNEL.FO-OAKLAND.MED.VA.GOV
 KDE>W $$EXTPTR^XPARDD(3,100.9)   = > LAB RESULTS
 KDE>W $$EXTPTR^XPARDD(3,100.93)  = > 3

 If the input doesn't get a valid entry, the input value is returned.

XT*7.3*76

Subject: FIX BUILD~XTRUTL

The API BUILD^XTRUTL aborts if a routine in the build is not found.  This can happen, for instance, when a pre- or post-init is set to delete after installation.  This patch fixes that.
 


Kuopion yliopisto
Atk-keskus
Hellevi.Ruonamaa@uku.fi