$TXT Created by MULLER,RICHARD at MNTVLL.FO-ALBANY.MED.VA.GOV (KIDS) on Wednesday, 06/25/03 at 11:40 ============================================================================= Run Date: JUN 25, 2003 Designation: IVM*2*72 Package : IVM - INCOME VERIFICATION MATCH Priority: Mandatory Version : 2 SEQ #65 Status: Released Compliance Date: JUL 26, 2003 ============================================================================= Subject: FIX Z07 ACK DESIGN FLAW Category: - Routine Description: ============ During the upgrade for VistA HL7 Messaging from v1.5 to v1.6 the Site ACKnowledgment processing routine had been noted for a number of events. The specific event being an allocation error that stops the Messaging Inbound Filers. There have been multiple causes for these allocation errors, but they all end with the same result. The "ADS" x-ref is a key factor in the allocation error. The following is some basic information ... ^IVM(301.6,"ADS") is based on the .05 field (MESSAGE CONTROL ID) ^IVM(301.6,"ADS",,)="" The routine was originally coded to make the following assumption... If the "ADS" x-ref was missing to a specific individual message control id, then the message was an ACK to an ORU~Z04 or ORU~Z09. With the HL7 Upgrade, scenarios began to develop where the "ADS" x-ref was missing, but the ACK message was for an unsolicited IVM FULL DATA (ORU~Z07) HL7 Transmission. The Acknowledgment processing routine automatically tries to load the original message into an array. With an ORU~Z07, a typically large message, this causes an allocation error. This enhancement provides the following: Get the type of message that the transmission is an acknowledgment to. If the message is an ORU~Z07 and the "ADS" x-ref is missing, check the following scenarios: Is the sequence on the ACK a duplicate inside the batch? Has the sequence on the ACK already been processed (The site has sent the same ORU~Z07 multiple times, so the reply is duplicated)? Is the "ADS" missing? If the situation can be corrected, correct it and process the sequence on the ACK. If the situation can not be corrected, skip the problem sequence and send a message to notify personnel of the situation and whether it requires attention or not. If attention is required use MailMan Message #1 If attention is not required use MailMan Message #2 The following MailMan messages will be sent to the mail group defined in the IVM MESSAGES MAIL GROUP (#.02) field in the IVM SITE PARAMETER (#301.9) File: MailMan Message #1: -------------------------------------------------------------------------- An Acknowledgment to an IVM FULL DATA (Z07) HL7 Transmission is causing an error condition to occur. The cross reference (^IVM(301.6,"ADS")) to match this acknowledgment to the original message is missing/undefined. A Remedy/NOIS Ticket should be entered to review this situation. The problem ACK will be skipped by the Acknowledgment Processor to avoid any errors. HL7 MESSAGE ADMINISTRATION (#773) Pointer: 100 Message Control ID: 500100 -------------------------------------------------------------------------- MailMan Message #2: -------------------------------------------------------------------------- An Acknowledgment to an IVM FULL DATA (Z07) HL7 Transmission is causing an error condition to occur. The cross reference (^IVM(301.6,"ADS")) to match this acknowledgment to the original message is missing/undefined. The following condition was found to exist: DUPLICATE SEQUENCE ON ACK BATCH There is no immediate action needed by the site. If there are a number of these messages being produced, a Remedy/NOIS Ticket should be entered to review the situation. HL7 MESSAGE ADMINISTRATION (#773) Pointer: 100 Message Control ID: 500100 -------------------------------------------------------------------------- This patch addresses the following E3R(s): ------------------------------------------ There are no E3Rs associated with this patch This patch addresses the following NOIS messages: ------------------------------------------------- BHS-1102-10417 SAJ-1102-71863 BHS-1102-11606 SAJ-0702-71339 NYH-0902-11204 Overview of NOIS messages(s): ----------------------------- BHS-1102-10417 Problem: UNABLE TO KEEP INCOMING LINKS RUNNING Resolution: Improved logic to account for ORU-Z07 with missing "ADS" xref, and not cause allocation error. SAJ-1102-71863 Problem: HL7 ERRORS Resolution: Improved logic to account for ORU-Z07 with missing "ADS" xref, and not cause allocation error. BHS-1102-11606 Problem: HL7 Errors - repeat of BHS-1102-10478 Resolution: Improved logic to account for ORU-Z07 with missing "ADS" xref, and not cause allocation error. SAJ-0702-71339 Problem: Errors After IVM*2*60 Resolution: Improved logic to account for ORU-Z07 with missing "ADS" xref, and not cause allocation error. NYH-0902-11204 Problem: Receiving Thousands of Undefined Variables Errors Resolution: Improved logic to account for ORU-Z07 with missing "ADS" xref, and not cause allocation error. ===========INSTALLATION INSTRUCTIONS=========== NOTE: It is recommended that the HL7 Filers be stopped. If they are not stopped then it is possible that some 'No Source Errors' may occur. No transmissions will be lost if the filers are not stopped first. The transmissions will be picked up once the filers are restarted. The patch can be installed with users on the system. Install Time - less than 1 minute. 1. LOAD A TRANSPORT GLOBAL ======================= Choose the Packman message containing this patch and invoke the INSTALL/CHECK MESSAGE PackMan option. 2. DISABLE ROUTINE MAPPING (DSM for Open VMS sites only) ===================================================== Disable routine mapping on all systems for the routines listed in step 3 below. 3. COMPONENTS SENT WITH PATCH ========================== The following is a list of the routines included in this patch. The second of each of these routines now looks alike: ;;2.0;INCOME VERIFICATION MATCH;**[patch list]**;21-OCT-94 CHECK^XTSUMBLD results Routine Before Patch After Patch Patch List ======= ============ =========== ========== IVMPREC1 5607016 10220756 9,17,26,52,34,72 Total number of routines - 1 4. START UP KIDS ------------- Start up the Kernel Installation and Distribution System Menu. [XPD MAIN]: Edits and Distribution ... Utilities ... Installation ... Select Kernel Installation & Distribution System Option: INStallation --- Load a Distribution Print Transport Global Compare Transport Global to Current System Verify Checksums in Transport Global Install Package(s) Restart Install of Package(s) Unload a Distribution Backup a Transport Global Select Installation Option: 5. SELECT INSTALLATION OPTION: --------------------------- NOTE: The following are OPTIONAL - (When prompted for the INSTALL NAME, enter IVM*2.0*72): a. Backup a Transport Global - This option will create a backup message of any routines exported with this patch. It will not backup any other changes such as DD's or templates. b. Compare Transport Global to Current System - This option will allow you to view all changes that will be made when this patch is installed. It compares all components of this patch (routines, DD's, templates, etc.). c. Verify Checksums in Transport Global - This option will allow you to ensure the integrity of the routines that are in the transport global. 6. Select Installation Option: Install Package(s) ---------------- **This is the step to start the installation of this KIDS patch: a. Choose the Install Package(s) option to start the patch install. b. When prompted 'Want KIDS to INHIBIT LOGONs during the install? YES//' answer NO c. When prompted 'Want to DISABLE Scheduled Options, Menu Options, and Protocols? YES//' answer NO. d. When prompted 'Enter protocols you wish to mark as 'Out Of Order':' Press . 7. REBUILD MAPPED ROUTINE(S) (DSM for Open VMS sites only) ========================= Optional - Include the routines distributed with this patch in the mapped routine set. NOTE: This step is only necessary if you performed step 2 or if you wish to include the routines in your mapped set. 8. When the installation is complete, be sure to re-start the filers if you chose to stop them. Routine Information: ==================== Routine Name: - IVMPREC1 1. Figure out if the current ACK is for an ORU-Z07 *** BEFORE *** AE ; - When acknowledgment code = "AE" (application error) ... ; S IVMI=1 F S IVMI=$O(^TMP($J,IVMRTN,IVMI)) Q:'IVMI S IVMSEG=$G(^(IVMI,0)) D .Q:IVMSEG']""!($E(IVMSEG,1,3)'="MSA")!($P(IVMSEG,HLFS,2)'="AE") *** AFTER *** AE ; - When acknowledgment code = "AE" (application error) ... ; N Z07FLG,Z07RET S IVMI=0 F S IVMI=$O(^TMP($J,IVMRTN,IVMI)) Q:'IVMI S IVMSEG=$G(^(IVMI,0)) D .D:$E(IVMSEG,1,3)="MSH" ..S Z07RET=0 ..I $P(IVMSEG,HLFS,9)["ORU~Z07" S Z07FLG=1 Q ..K Z07FLG .Q:IVMSEG']""!($E(IVMSEG,1,3)'="MSA")!($P(IVMSEG,HLFS,2)'="AE") 2. If "ADS" x-ref missing, call functions to research and possibly fix/skip the problem sequence. *** BEFORE *** .S IVMDA=$O(^IVM(301.6,"ADS",IVMMCI,"")) I 'IVMDA D OTH Q .I $$SETSTAT^IVMTLOG(IVMDA,3,IVMEM) *** AFTER *** .S IVMDA=$O(^IVM(301.6,"ADS",IVMMCI,"")) I 'IVMDA D Q:'Z07RET ..I $D(Z07FLG) D Q ...S Z07RET=$$Z07BUL ...S:Z07RET IVMDA=$O(^IVM(301.6,"ADS",IVMMCI,"")) ..D OTH .I $$SETSTAT^IVMTLOG(IVMDA,3,IVMEM) 3. Z07CHK function Input : CURSEQ = Current Sequence # being reviewed. CURMCI = Current Message Control ID being reviewed. CUREM = Current Error Message being reviewed. Output : results of search "" = Issue not found 0^Error Message = Issue found, but not able to fix 1^Error Message = Issue found and able to fix Scenarios to look for... 1. duplicate sequences in a batch 2. Search the last 1000 entries in #301.6 to find a matching entry. 4. Z07BUL function Input : None Output : 0 = Unable to find/fix issue 1 = Able to find/fix the issue Call the function to check the sequence (Z07CHK) If the Issue was not resolved then send a MailMan message to pertinent personnel. Routine Checksum: ============================================================================= User Information: Entered By : DRESS,KEN Date Entered : DEC 18, 2002 Completed By: MULLER,RICHARD Date Completed: JUN 25, 2003 Released By : GANUS,MAUNETTE Date Released : JUN 25, 2003 ============================================================================= Packman Mail Message: ===================== $END TXT