$TXT Created by ALVIN JR at DOSO.FO-BIRM.DOMAIN.EXT (KIDS) on Thursday, 05/25/23 at 07:14 ============================================================================= Run Date: JUN 20, 2023 Designation: DG*5.3*1097 Package : DG - REGISTRATION Priority: Mandatory Version : 5.3 SEQ #959 Status: Released Compliance Date: JUL 21, 2023 ============================================================================= Associated patches: (v)DG*5.3*964 <<= must be installed BEFORE `DG*5.3*1097' Subject: VAS 1.0 DEFECT FIXES Category: - Routine Description: ============ This patch addresses the following reported issues related to the VistA Audit Solution (VAS) DG VAS EXPORT job: 1. INC26697486 - DG VAS EXPORT job not generating MailMan messages. 2. INC26681446 - Mailman message NEWAUDEX0^DGAUDIT1 is generated daily. 3. INC26946217 - DG VAS EXPORT job causing high CPU usage in Atlanta. 4. INC27156109 - DG VAS EXPORT error in Portland: Internal Server Error. ========================================================================= NOTE: When running the ^XINDEX routine, errors will be encountered after the installation of this patch. Routines DGAUDIT and DGAUDIT1 use the HealtheVet Web Services Client (HWSC), calling Cache Class methods to write a JSON record to the web service, read the response from the web service, and retrieve the error code if one exists. A Department of Veterans Affairs Cache Programming Standards and Conventions (SAC) Exemption request was granted on 02/14/2022, reference number 20220214-01. ************************************************************************** The errors reported by XINDEX are: DGAUDIT * * 251 Lines, 12653 Bytes, Checksum: B125730755 S DGRESTOBJ.SSLCheckServerIdentity=0 RESTPOST+13 W - Vendor specific code is restricted.] . D DGRESTOBJ.EntityBody.Write(DGJSON) RESTPOST+26 W - Vendor specific code is restricted.] D DGRESTOBJ.EntityBody.Write("]") RESTPOST+28 W - Vendor specific code is restricted.] F DGHEADER="Accept","ContentType" D DGRESTOBJ.SetHeader(DGHEADER,"application/json") RESTPOST+29 W - Vendor specific code is restricted.] S DGHTTPRSP=DGRESTOBJ.HttpResponse RESTPOST+39 W - Vendor specific code is restricted.] S DGOUTJSON=DGHTTPRSP.Data.ReadLine() ; reads json string response from the data stream. RESTPOST+40 W - Vendor specific code is restricted.] DGAUDIT1 * * 331 Lines, 16476 Bytes, Checksum: B168988628 N DGERRCODE S DGERRCODE=DGRESPERR.code ERRSPMSG+3 W - Vendor specific code is restricted.] Patch Components: ----------------- Files & Fields Associated: N/A Forms Associated: N/A Mail Groups Associated: N/A Options Associated: N/A Protocols Associated: N/A Security Keys Associated: N/A Templates Associated: N/A Remote Procedures Associated: N/A Parameter Definitions Associated: N/A Additional Information: New Service Requests (NSRs): ---------------------------- N/A Patient Safety Issues (PSIs): ----------------------------- N/A Defect Tracking System Ticket(s) & Overview: -------------------------------------------- 1. INC26697486 - DG VAS EXPORT not generating MailMan messages Problem: -------- The DG VAS EXPORT process is not sending MailMan messages to members of the mail group defined in the DG VAS MONITOR GROUP parameter. The MailMan message serves as a notification that an error has occurred to promote the visibility of the DG VAS EXPORT status to staff not able to monitor the VistA error trap. Resolution: ----------- Modify the DG VAS EXPORT process to send a Mailman message to members of the mail group defined in the DG VAS MONITOR GROUP parameter. Technical Resolution: --------------------- A change was made to routine DGAUDIT to retrieve the name of the mail group from the NAME field (#.01) in the MAIL GROUP file (#3.8) via FileMan, and then passing the mail group name to MailMan API ^XMD rather than passing the Internal Entry Number (IEN) of the mail group. 2. INC26681446 - Mailman message NEWAUDEX0^DGAUDIT1 is generated daily. Problem: -------- The DG VAS EXPORT job is erroneously sending a diagnostic MailMan message with the subject NEWAUDEX0^DGAUDIT1 daily. The message was incorrectly being sent when the last record sent was logged in the DG VAS EXPORT file (#46.4) without some expected data from the AUDIT file (#1.1) record. Resolution: ----------- A change was made to remove the diagnostic MailMan message with subject NEWAUDEX0^DGAUDIT1. Technical Resolution: --------------------- A change was made to routine DGAUDIT1 to remove the diagnostic MailMan message with subject NEWAUDEX0^DGAUDIT1. 3. INC26946217 - DG VAS EXPORT job causing high CPU usage in Atlanta. Problem: -------- A long running DG VAS EXPORT job with high CPU usage was detected. Upon Further investigation, it was determined that the job was sending all historical patient audit records from the AUDIT file (#1.1), rather than starting with the audit records that were logged starting on the date the export was activated. The DG VAS EXPORT was reading all historical audit records, setting them into the DG VAS QUEUE file (#46.3), and sending them to the VAS server. The large volume also exposed a defect that may result in more than one DG VAS EXPORT job running concurrently when it is designed to run as a serial (single threaded) job. Resolution: ----------- A change was made to the DG VAS EXPORT process to revert to the last (most recent) audit record rather than the first audit record on file when the last record sent cannot be determined, to limit the volume of records being exported. The DG VAS EXPORT has also been modified to prevent multiple export processes from running concurrently. Technical Resolution: --------------------- A change was made to DG VAS EXPORT routine NEWAUDEX^DGAUDIT1 to find the last (most recent) audited record from the AUDIT file (#1.1) before retrieving the value from the LAST RECORD EXPORTED field (#.02) in the DG VAS EXPORT file (#46.4). If the value of the last record exported is null or zero, or it does not exist in the AUDIT file global ^DIA, the export process uses the last (most recent) audited record from the AUDIT file (#1.1) as the starting point to begin exporting audit file records to the VAS server. The logic that was intended to prevent multiple DG VAS EXPORT jobs from running concurrently was also corrected to quit if the lock on the DG VAS CONFIG file (#46.5) fails, meaning a previously started job is still running. 4. INC27156109 - DG VAS EXPORT Error in Portland: Internal Server Error Problem: -------- The DG VAS EXPORT job repeatedly logged "Internal Server Error" entries in the error trap as a result of a control code in an AUDIT file (#1.1) record. The problem audit record was created when a patient telephone number containing a control code was deleted because it caused an EDIT claim to fail. This moved the control code from the PATIENT file (#2) to the AUDIT file (#1.1). The DG VAS EXPORT sent the single bad record repeatedly, logging an error in the error trap every 15 minutes, rather than gracefully handling the control code by logging the record as an internal exception and purging it from the queue, or by stripping the control code from the record prior to sending it to the VAS server. Resolution: ----------- The DG VAS EXPORT was modified to strip non-printable control codes from audit records at the time the record is placed in the DG VAS QUEUE file (#46.3). The export was also modified to check for non-printable control characters when read from the export queue, prior to placing into a send batch. If non-printable control characters are detected, the record is not placed in the batch, the record is purged from the queue, an internal exception is logged with associated MailMan message. No error is logged in the error trap in this scenario. Technical Resolution: --------------------- A string of non-printable control characters (0-31 and 127-159) are concatenated into a variable and used with $TRANSLATE to strip the characters from the individual variables containing audit data prior to encoding the data using ENCODE^XLFLSON. The Mumps pattern match operator is used to detect the same non-printable control characters in the record after it is encoded, prior to placing into a batch to send. If non-printable control characters are detected, the record is not placed in the batch, the record is purged from the DG VAS QUEUE file (#46.3), and an internal exception is logged in ^XTMP("DGAUDIT_EXCEPTION;"_$$NOW^XLFDT _"."_DGAUDITIEN, where DGAUDITIEN is the Internal Entry Number from the VAS EXPORT file (#46.3). A MailMan message is sent to the mail group in the DG VAS MONITOR GROUP parameter with a reference to the ^XTMP node containing the exception details. No error is logged in the error trap in this scenario. Test Sites: ---------- Joseph Maxwell Cleland Atlanta VAMC, Decatur, GA C.W. Bill Young Dept of VAMC, Bay Pines, FL Software and Documentation Retrieval Instructions: -------------------------------------------------- The software for this patch is being released in a PackMan message. Documentation describing the new functionality is included in this release. Documentation can be found on the VA Software Documentation Library at: https://www.domain.ext/vdl/. Documentation can also be obtained at https://download.vista.domain.ext/index.html/SOFTWARE. File Title File Name Format ---------------------------------------------------------------------- Deployment, Installation, Back-out DG_5_3_P1097_DIBRG.PDF BINARY And Rollback Guide Patch Installation: ------------------- Pre/Post Installation Overview: This patch may be installed with users on the system although it is recommended that it be installed during non-peak hours to minimize potential disruption to users. This patch should take less than 5 minutes to install. If desired, you may queue this installation. Installation Instructions: 1. Choose the PackMan message containing this build. Then select the INSTALL/CHECK MESSAGE PackMan option to load the build. 2. From the Kernel Installation and Distribution System [XPD MAIN] menu, select the Installation [XPD INSTALLATION MENU] menu. From this menu, A. Select the Verify Checksums in Transport Global option [XPD PRINT CHECKSUM] to confirm the integrity of the routines that are in the transport global. When prompted for the INSTALL NAME enter the patch name, DG*5.3*1097. B. Select the Backup a Transport Global [XPD BACKUP] option to create a backup message. You can specify what to backup; the entire Build or just Routines. The backup message can be used to restore just the routines or everything that will restore your system to pre-patch condition. Subject: Backup of DG*5.3*1097 Select one of the following: B Build (including Routines) R Routines Only Backup Type: B// Build (including Routines) Send mail to: (Send to yourself and any additional recipients) C. You may also elect to use the following options: i. Print Transport Global [XPD PRINT INSTALL] - This option will allow you to view the components of the KIDS build. ii. Compare Transport Global to Current System [XPD COMPARE TO SYSTEM] - This option will allow you to view all changes that will be made when this patch is installed. It compares all of the components of this patch, such as routines, DDs, templates, etc. D. Select the Install Package(s) [XPD INSTALL BUILD] option and choose the patch to install, DG*5.3*1097. i. If prompted 'Want KIDS to Rebuild Menu Trees Upon Completion of Install? NO//', answer NO. ii. When prompted 'Want KIDS to INHIBIT LOGONs during the install? NO//', answer NO. iii. When prompted 'Want to DISABLE Scheduled Options, Menu Options, and Protocols? NO//', answer NO. Post-Installation Instructions: =============================== After installation, the connection to the DG VAS WEB SERVER should be verified using the Web Server Manager [XOBW WEB SERVER MANAGER] option. 1. Navigate to the Web Server Manager [XOBW WEB SERVER MANAGER] option. 2. At the "Select Action:" prompt, enter "CK" for Check Web Service Availability. 3. At the "Select Web Server:" prompt, select the DG VAS WEB SERVER from the list. 4. The message "DG VAS WEB SERVICE is available" should display, indicating the web service is connected and available. If an error message is displayed indicating the service is not available, log a Service Now (SNOW) ticket with a comment requesting the ticket be forwarded to VistA Audit Solution Assignment Group. Back-Out/Roll Back Plan: ======================== Back-out will be done only with the concurrence and participation of development team and appropriate VA site/region personnel. The decision to back-out or rollback software will be a joint decision between development team, VA site/region personnel and other appropriate VA personnel. The site/region should save a backup of the build in a mail message using the Backup a Transport Global [XPD BACKUP] menu option (this is done at time of install). The back-out plan is to restore the routines or build from the backup created. Refer to the patch DG*5.3*1097 Deployment, Installation, Back-Out, and Roll Back Guide (DIBRG) for more information. Routine Information: ==================== The second line of each of these routines now looks like: ;;5.3;Registration;**[Patch List]**;Aug 13, 1993;Build 43 The checksums below are new checksums, and can be checked with CHECK1^XTSUMBLD. Routine Name: DGAUDIT Before:B122376800 After:B140216692 **964,1097** Routine Name: DGAUDIT1 Before:B149938226 After:B175068745 **964,1097** Routine Name: DGAUDIT2 Before: B25151261 After: B29143746 **964,1097** Routine list of preceding patches: 964 ============================================================================= User Information: Entered By : Date Entered : MAR 30, 2023 Completed By: Date Completed: JUN 20, 2023 Released By : Date Released : JUN 20, 2023 ============================================================================= Packman Mail Message: ===================== $END TXT