This wiki has undergone a migration to Confluence found Here

Batch Chunking

From HL7Wiki
Jump to navigation Jump to search

Discussion

Dynamic Model

Discussion: One consequence: if you allow for batch chunking then the HL7 Dynamic Model does not work anymore. One Transmission/Interaction may result in multiple (chunk-)interactions.

Note that under the newly proposed dynamic model (CPM) the dynamic model does allow for multiple chunk interactions in response to a batch.

Sequencing of Batch chunks

(Action item 978, Sept05) Need a mechanism (used by the sender) to sequence multiple batch response messages that are derived from a single batch request (as might result from imposing limits on batch size). This allows identification of missing or out of sequence batch response messages. Solved, see Harmonization: add priorTransmission to support Transmission Sequencing. This may not cover the entire use-case, but then we'll need a description of what else would be needed.

Chunking of query responses

Batch chunking in response to a query works just fine, because the Query Transmission Pattern supports a throttling mechanism. If the Bolus query mechanism is used we have the same dynamic model issues as in a batch (-chunks) notification scenario.

(Rene) If we examine the query use case, then there are various relevant existing features:
  • A series of query response interactions will all have a queryId (which links the response at the business-conversation level) and reultsRemainingQuantity, which "decreases" to 0 with each response message. If M(9) is a message with resultRemainingQuantity 9, then a series of query responses could be M(12), M(11), M(8), M(4), M(0) - a message may contain multiple response payloads.
  • If one uses a batch (1 batch), all of the above messages will be contained in 1 batch wrapper B(M(12), M(11), M(8), M(4), M(0)). If you use multiple batches (chunks) it could be (e.g.) B(M(12), M(11)) followed by B(M(8), M(4), M(0)). The receiver has queryId to link all response mesages together, and is aware that it has received all batch chunks if the last message has resutRemainingQuantity equal to 0.