Transactions and submitting bundles

If you POST a bundle message to [baseUrl]/Bundle you are submitting the bundle for storage as-is.

In other words, the bundle is stored as a Bundle, and the contents inside aren’t looked at by the server (aside from any validation that is enabled). This mode is generally used to store Bundle resources with Bundle.type values such as document and collection. In its default configuration, Oracle HDR prohibits storing a Bundle with a type value of transaction or batch as this is generally a sign that the client is attempting to perform the operations described below but with an incorrect request URL.
  • Bundle Type—Transaction
    • If you POST to [baseUrl] and your Bundle has a Bundle.type value of transaction you are performing a FHIR “transaction operation”, meaning that all of the individual resources inside the bundle will be processed. It is also possible to include other REST operations such as searches in this kind of bundle. The processing works as an atomic unit, meaning that if anything fails (for example, invalid data in an individual element) the entire thing will be rolled back.
    • This operation is referred to as an FHIR Transaction operation.
  • Bundle Type—Batch
    • If you POST to [baseUrl] and your Bundle has a Bundle.type value of batch, the same processing as the transaction applies, except those individual operations are executed in individual database transactions, so an individual failure doesn’t cause the entire operation to be rolled back. In this case, the response Bundle returned by the server includes status entries indicating the outcome for the individual operations within. Note that the batch operation does require the entire Bundle to be valid FHIR at a minimum. This means that it can’t have non-existent resource types in it, malformed datatypes, and so on.
    • This operation is referred to as an FHIR Batch operation.