Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ public Response validate(Response response, ConnectorMessage connectorMessage) {
} else {
response.setStatus(Status.SENT);
}
} else {
handleInvalidACK(response);
}
} else {
// ER7 response received
Expand Down Expand Up @@ -175,9 +177,7 @@ public Response validate(Response response, ConnectorMessage connectorMessage) {
}

if (!valid) {
response.setStatus(Status.QUEUED);
response.setStatusMessage("Invalid HL7 v2.x acknowledgement received.");
response.setError(response.getStatusMessage());
handleInvalidACK(response);
}
}
} catch (Exception e) {
Expand Down Expand Up @@ -300,6 +300,12 @@ private void handleNACK(Response response, boolean rejected, String msa3, String
response.setError(nackMessage.toString());
}

private void handleInvalidACK(Response response) {
response.setStatus(Status.QUEUED);
response.setStatusMessage("Invalid HL7 v2.x acknowledgement received.");
response.setError(response.getStatusMessage());
}

private void handleInvalidControlId(Response response, String originalControlID, String msa2) {
response.setStatus(Status.ERROR);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -236,13 +236,20 @@ public void testXmlErrorAndRejectedAcks() {
assertEquals("NACK sent from receiver. (Rejected)", validate("<HL7Message><MSA><MSA.1>CR</MSA.1></MSA></HL7Message>").getStatusMessage());
}

/*
* Characterizes existing behaviour: an unknown ACK code in an ER7 response is QUEUED as invalid
* (see testUnknownAckCodeIsInvalid), but in an XML response the status is left as it was.
*/
@Test
public void testXmlUnknownAckCodeLeavesStatusUnchanged() {
assertEquals(Status.SENT, validate("<HL7Message><MSA><MSA.1>XX</MSA.1></MSA></HL7Message>").getStatus());
public void testXmlUnknownAckCodeIsInvalid() {
Response response = validate("<HL7Message><MSA><MSA.1>XX</MSA.1></MSA></HL7Message>");

assertEquals(Status.QUEUED, response.getStatus());
assertEquals("Invalid HL7 v2.x acknowledgement received.", response.getStatusMessage());
}

@Test
public void testXmlMissingMsaIsInvalid() {
Response response = validate("<HL7Message><MSH><MSH.9><MSH.9.1>ACK</MSH.9.1></MSH.9></MSH></HL7Message>");

assertEquals(Status.QUEUED, response.getStatus());
assertEquals("Invalid HL7 v2.x acknowledgement received.", response.getStatusMessage());
}

@Test
Expand Down