recommendations from the ehr-s functional requirements ig: lab results interface

23
Recommendations from the EHR-S Functional Requirements IG: Lab Results Interface Error Handling 7/10/2014

Upload: gwydion-probert

Post on 02-Jan-2016

25 views

Category:

Documents


0 download

DESCRIPTION

Recommendations from the EHR-S Functional Requirements IG: Lab Results Interface. Error Handling 7/10/2014. Issues. Is there a requirement to have a 1:1 relationship between application level ACKs and the messages? - PowerPoint PPT Presentation

TRANSCRIPT

Recommendations from the EHR-S Functional Requirements IG: Lab

Results Interface

Error Handling7/10/2014

Issues

• Is there a requirement to have a 1:1 relationship between application level ACKs and the messages?– If yes, then can you mix order control codes within the same

ACKs (ORL = LOI question)– If no, you can send multiple ACKs for a message?

• Can you mix order control codes in OML?

To Do• Verify treatment of hard errors for LRI

– Describe best practice• permissible to stop validation on hard error? • continue and report all error if possible?

– stop on hard error and no commit of any ORC/OBR• One ACK with “hard error” notification (MSA1=AR)

– Partial consumption (e.g. 5 ORC/OBR groups, where only 1 cannot be consumed)

• Get one ACK with “combined error” notification– if YES, then use MSA-1 = new code, ERR-4 = ?

• Get 5 ACKs – 4 with MSA-1 = AA or AE if soft errors– 1 with MSA-1 = AR

• Guidance for use of ERR-7 and ERR-8• Guidance for use of ERR-3 vs ERR-5 in single ERR segment• Flow diagrams for message processing at each step

Message Flow (needs diagram)• Message received at destination

– Send system ACK to last hop• Process message for compliance with IG (includes value sets)

– No Error – continue– Soft Error – note and continue– Hard Error – Application ACK MSA-1 = AR

• Process message for ability to consume and associate– No Error – continue– Soft Error – note and continue– Hard Error – Application ACK MSA-1 = AR

• Consume/store message content– Success – Continue– Failure -- Application ACK MSA-1 = AR

• Application ACK – MSA-1 = AA (no soft errors)– MSA-1 = AE (soft errors)

Acknowledgement Message Structure

TABLE 3‑2. ACK^R01^ACK ABSTRACT MESSAGE SYNTAXSegment Name Usage Cardinalit

C.LEN Description

MSH Message Header R [1..1] The message header (MSH) segment contains information describing how to parse and process the message. This includes identification of message delimiters, sender, receiver, message type, timestamp, etc.

[{SFT}] Software Segment O [0..*] MSA Message

AcknowledgmentR [1..1] The Message Acknowledgment Segment (MSA) contains the information sent as

acknowledgment to the result message received by a Electronic Health Record System.

[{ ERR }] Error C(R/O) [0..*] Condition predicate: If MSA.1 (Message Acknowledgement) is not valued AA or CA

Guaranteed delivery is required. Where use of an ACK is appropriate for the transport mechanism it should be used as described in this guide. All other acknowledgement methods are beyond the scope of this document (e.g., acknowledgement of batches using the HL7 batch methods).

No changes here.Assumption is 1 ACK/message

MSA

TABLE 3 6. ACKNOWLEDGMENT SEGMENT (MSA)‑

SEQ Element Name DT Usage Cardinality Value Set Description/Comments

1 Acknowledgment Code ID R [1..1] HL70008 2 Message Control ID ST R [1..1] 3 Text Message X Excluded for this Implementation Guide, see Section 1.3.14 Expected Sequence Number O 5 Delayed Acknowledgment Type X Excluded for this Implementation Guide, see Section 1.3.16 Error Condition X Excluded for this Implementation Guide, see Section 1.3.1

The Message Acknowledgment Segment (MSA) contains the information sent as acknowledgment to the result message received by a Electronic Health Record System.

No changes here.Assumption is 1 ACK/messageConsider use of MSA-1 to indicate hard error vs soft error

Table 0008 Acknowledgement Code

Value DescriptionAA Original mode: Application Accept - Enhanced mode: Application acknowledgment:

Accept = NO ERROR

AE Original mode: Application Error - Enhanced mode: Application acknowledgment: Error = ANY OTHER ERROR

AR Original mode: Application Reject - Enhanced mode: Application acknowledgment: Reject = ERROR in MSH-9, MSH-11 or MSH-12 or NOT MESSAGE RELATED

CA Enhanced mode: Accept acknowledgment: Commit Accept = NO ERROR

CE Enhanced mode: Accept acknowledgment: Commit Error = ANY OTHER ERROR

CR Enhanced mode: Accept acknowledgment: Commit Reject = ERROR in MSH-9, MSH-11 or MSH-12 or NOT MESSAGE RELATED

Immunization Use

Table 0008 Acknowledgement CodeValue Description

AA Original mode: Application Accept - Enhanced mode: Application acknowledgment: Accept = NO ERROR

AE Original mode: Application Error - Enhanced mode: Application acknowledgment: Error = ANY OTHER ERROR

AR Original mode: Application Reject - Enhanced mode: Application acknowledgment: Reject = ERROR in MSH-9, MSH-11 or MSH-12 or NOT MESSAGE RELATED

CA Enhanced mode: Accept acknowledgment: Commit Accept = NO ERROR

CE Enhanced mode: Accept acknowledgment: Commit Error = ANY OTHER ERROR

CR Enhanced mode: Accept acknowledgment: Commit Reject = ERROR in MSH-9, MSH-11 or MSH-12 or NOT MESSAGE RELATED

MA Combined mode: Message Accept: No ErrorsMS Combined mode: Message Soft Errors: Soft ErrorsMP Combined mode: Message Partial Hard Errors: No/Soft/Hard (partial consumption)MR Combined mode: Message Reject: Hard errors (nothing consumed)

Option 1: Creating IG specific codes to indicate hard vs soft error

Table 0008 Acknowledgement Code

Value Description

AA Original mode: Application Accept - Enhanced mode: Application acknowledgment: Accept = NO ERROR

AE Original mode: Application Error - Enhanced mode: Application acknowledgment: Error = SOFT ERROR(s)

AR Original mode: Application Reject - Enhanced mode: Application acknowledgment: Reject = HARD ERROR(s)

CA Enhanced mode: Accept acknowledgment: Commit Accept = Not used

CE Enhanced mode: Accept acknowledgment: Commit Error = Not used

CR Enhanced mode: Accept acknowledgment: Commit Reject = Not used

Option 2: Use existing codes to indicate hard vs soft error

ERR

TABLE 3 7. ERROR SEGMENT (ERR)‑

SEQ Element Name DT Usage Cardinality Value Set Description/Comments1 Error Code and Location X Excluded for this Implementation Guide, see Section 1.3.12 Error Location ERL O RE [0..1] Use to identify segment/field where error occurred3 HL7 Error Code CWE R [1..1] HL70357 Used to identify issues based on conformance profile in

message (structure and vocabulary) – may use the immunization codes here OR to indicate application errorExpand table values – must include a code for application error

4 Severity ID R [1..1] HL70516 This is where you look, if the identified error is a HARD ERROR or a SOFT ERROR, if we have only 1 ACK message/messageCreate specific codes for HARD ERROR and SOFT ERROR (and warning?)

5 Application Error Code CWE O C(RE/O)

[0..1] HL70533 (2.7.1)

Used to indicate error in content – nothing wrong with the message, but system cannot use the dataCP: If ERR-3 is valued “code for application error”Empty table, can supply suggested values as a base set for lab IGs, remains user defined and is extendable

6 Application Error Parameter O 7 Diagnostic Information TX RE [0..1] IS OPTIONAL IN IMMUNIZATION

HL7 Definition: Information that may be used by help desk or other support personnel to diagnose a problemLength: 2048

8 User Message TX RE [0..1] IS RE IN IMMUNIZATIONHL7 Definition: The text message to be displayed to the application user. Length: 250

9 Inform Person Indicator O 10 Override Type O 11 Override Reason Code O 12 Help Desk Contact Point O

The ERR segment is used to add error comments to acknowledgment messages – ONE FOR EACH ERROR.

Define ERL datatype

SEQ Element Name DT Usage Value Set Description/Comments (from HL7 base for discussion only)1 Segment ID ST R 2 Segment Sequence NM R Is this absolute position in message? Or for the specific segment

the x occurrence?3 Field Position NM RE Not used, when entire segment is referred to4 Field Repetition NM RE If not specified repetition is assumed 15 Component Number NM RE Not used, when entire field is referred to6 Sub-Component Number NM RE Not used, when entire component is referred to

Table 0357 in ERR-3Message error condition codes (HL7 defined)

Value Description0 Message accepted

100 Segment sequence error

101 Required field missing

102 Data type error

103 Table value not found

5** Table value not found = The value is not found in the associated table.

200 Unsupported message type

201 Unsupported event code

202 Unsupported processing id

203 Unsupported version id

204 Unknown key identifier

205 Duplicate key identifier

206 Application record locked

207 Application internal error

TBD Application Error – see ERR-6

TBD Cardinality Error

1** Illogical Date error = Date conflicts with another date in the message.2** Invalid Date = Date is not valid or lacks required precision.3** Illogical Value error = The value conflicts with other data in the message4** Invalid value = The value is not valid. This applies for fields that are not associated with a table of values.6** Required observation missing = A required observation, such as VFC eligibility status, is missing.

**From Immunization in HL70357

Value Description Definition from base

E Error Transaction was unsuccessful (or use this for hard error)

F Fatal Error (v2.7.1) Message not processed due to application or network failure condition

I Information Transaction was successful, but includes information e.g., inform patient

W Warning Transaction successful, but there may be issues (or use this for SOFT ERROR)

Table 0516 in ERR-4Error Severity (HL7 defined)

These definitions are not very helpfulSuggestion: Create 2 new codes that indicate HARD ERROR and SOFT ERROR respectivelyHard error- Application cannot meaningfully consume the message content – content NOT processedSoft error – application cannot meaningfully consume part of the message content as indicated in ERL, but consumed remainder of message sections

Table 533 suggested codes(empty user defined table in base HL7)

Value Description

Can’t match Patient

Can’t match Provider

Can’t match to local code

Can’t match order number1** Illogical Date error = Date conflicts with another date in the message.

This is logic check – could also be done in application not just message, keep here?2** Invalid Date = Date is not valid or lacks required precision.

Message level – NOT HERE3** Illogical Value error = The value conflicts with other data in the message.

This is logic check – could also be done in application not just message, keep here?4** Invalid value = The value is not valid. This applies for fields that are not associated with a

table of values. Need more information to decide what this would mean in LRI

5** Table value not found = The value is not found in the associated table. Message level – NOT HERE

6** Required observation missing = A required observation, such as VFC eligibility status, is missing. This is a logic/business rule check – could also be done in application not just message, keep here?

**From Immunization in HL70357

Table 533 suggested codes(empty user defined table in base HL7)

Value Description

Can’t match Patient

Can’t match Provider

Can’t match to local code

Can’t match order number4** Invalid value = The value is not valid. This applies for fields that are not associated with a

table of values. Only for user defined values or mapping tables

6** Required observation missing = A required observation, such as VFC eligibility status, is missing. This is a logic/business rule check – could also be done in application not just message, keep here?

**From Immunization in HL70357

Example Hard Error 1 ACK message – application level

• MSA-1 = AR• ERR-2 = MSH^1^12• ERR-3 = code for Message Header Error • ERR-4 = E (or code for hard error)• ERR-5 = empty• ERR-7 = Incompatible version of HL7 message• ERR-8 = Cannot process results; call or FAX results

See Chapter 2, section 2.9.3 for clarification

Example Hard Error 1 ACK message – application level

• MSA-1 = AR• ERR-2 = PID^1^3• ERR-3 = code for Application Error (or would we use 0 = message

processed?)• ERR-4 = E (or code for hard error)• ERR-5 = code for cannot match patient ID• ERR-7 = Cannot match patient ID, message content not processed

ERR-8 = Cannot match patient ID; message content not processed; call or Fax results

Example soft error 1 ACK message – application level

• MSA-1 = ACE• ERR-2 = OBX^1^3• ERR-3 = code for Application Error (or would we use 0 = message

processed?)• ERR-4 = W (or code for soft error)• ERR-5 = code for cannot match to local code• ERR-7 = empty• ERR-8 = Resulted test code does not match what is expected

based on ordered test; results stored; call to resolve for future results

Error Handling OverviewERROR HANDLING • As a follow up item to the LRI and LOI IG publications November 2013, the S&I Lab

WG analyzed and discussed the various error situations that should be formally addressed with consistent guidance and testing to ensure consistent and robust end-to-end interoperability from the construction of a laboratory order within an EHR to the receipt of results by an EHR.

• The topics were originally addressed as two tracks – LOI [item LOI 1.7, LRI [item LRI 1.5] – but were merged into a single conversation and set of decisions reflected in item LRI-1.5, excerpted below.

Definitions– NEED TO DEFINE WHAT THE RESPECTIVE MESSAGES FOR THESE LOOKS LIKE (not used in immunization that way)• Hard Error – full stop; suspend processing and notify sender, do not commit info to

patient record• Soft Error – notify (as directed) but can continue to process message unless a

hard error is encountered prior to end of message processing; may commit error-free data to patient record while continuing to resolve soft errors with sender.

Handling of Non-Cardinality ErrorsHandling of errors other than cardinality failures

Categories: length, cardinality, invalid codes (value can’t be found, format, which code sets, etc.), what constitutes ‘hard’ vs. ‘soft’ errors, encourage folks to bring concerns to add to list of categories, anything that keeps the result from getting to the provider, e.g., provider ID, procedure codes, organization code mismatch with provider codes.

• Length– which fields are ‘in-scope’? NTE-3, OBX-5– NTE-3 is tied to cardinality conversation

• Adopt consistent failure criteria– if the error results in the inability to file the results to the database, it is a

‘hard’ error, the sender must be notified. • Missing data

– only where usage is ‘R’• Cardinality

– See CardinalitySegmentFieldManagement V13.xlsx

Order ErrorsMATCHING – FOR ORDERS (LOI):

– Patient• out of scope for orders in ambulatory setting (systems that have no tight coupling, not owned

by same organization)• in-patient is not within the LOI IG scope as currently published, but may be addressed in

future release• There is no prohibition on a lab sending an error if patient matching fails

– Provider • soft error (inform/resolve but don’t stop processing)• copy-to-provider – soft error (inform but don’t stop processing)

– new order (ORC/OBR)• Placer Order Number – see missing data• OBR-4 – service identifier – hard error• OBX

– OBX-3 – observation ID not match with what expected in OBR-4 – soft error– OBX-5 – inconsistent with what was expected – soft error

– cancel order (ORC/OBR)• Placer Order Number – hard error

Result ErrorsMATCHING – FOR RESULTS (LRI):

– Patient within ordering provider system• No match – hard error back to Lab (how matching occurs or defining confidence levels

are not within scope of the IG)

– Patient within copy-to-provider system• No match – no expectation that a copy-to-provider system would be able to resolve

who the ordering provider is and/or be able to communicate using application-level ACKs

• Out of scope for this version, but may be addressed in the future due to complexity

– Provider• No match – soft error

– Order (ORC/OBR) – Not applicable to copy-to receivers• Placer Order Number – local decision on level of error

– OBR–4 – service identifier – hard error for this pair in the event that it is not on the patient record, can continue with other pairs

» Does not apply when specimen action code is ‘G’ for reflex testing

– Specific data

Cardinality Errors

Source: two action items, one for LOI, one for LRI re: cardinality errors and test limits for senders and receivers, these were addressed in a single track and resulting artifact noting the agreed upon limits. During discussions errors and omissions in the respective guides were identified and are queued for disposition as errata updates to each guide.• LRI-1.6 Testing of stated and implied cardinality limits • 5/22/2014 - closed on LRI call • Log CR for LRI – change PID-5 (Patient Name) to [1..1] to sync with LOI• See CardinalitySegmentFieldManagement V13.xlsx