FHIR Chat · Implicit Merge · implementers

Stream: implementers

Topic: Implicit Merge


view this post on Zulip Rahul Somasunderam (Jan 20 2017 at 23:25):

Hi! I've got a question regarding Patient and the correct behavior on POST

Let's say I send a message like this first:

    {
      "resourceType": "Patient",
      "identifier": [
        {
          "use": "usual",
          "type": {"coding": [{"system": "http://hl7.org/fhir/v2/0203", "code": "MR"}]},
          "system": "urn:oid:1.2.3.4.5",
          "value": "89765a87b"
        },
        {
          "use": "usual",
          "type": {"coding": [{"system": "http://hl7.org/fhir/v2/0203", "code": "MR"}]},
          "system": "urn:oid:1.2.3.4.6",
          "value": "123123123"
        }
      ],
      "active": true,
      "name": [
        {
          "family": [ "Doe" ],
          "given": [ "John" ]
        }
      ],
      "gender": "male",
      "birthDate": "1956-05-27",
      "address": [
        {
          "line": [ "100 Main St" ],
          "city": "Metropolis",
          "state": "Il",
          "postalCode": "44130",
          "country": "USA"
        }
      ]
    }

Then the server creates a resource with identifier 1000

Now I send another POST with this

    {
      "resourceType": "Patient",
      "identifier": [
        {
          "use": "usual",
          "type": {"coding": [{"system": "http://hl7.org/fhir/v2/0203", "code": "MR"}]},
          "system": "urn:oid:1.2.3.4.7",
          "value": "99999999"
        }
      ],
      "active": true,
      "name": [
        {
          "family": [ "Doe" ],
          "given": [ "John" ]
        }
      ],
      "gender": "male",
      "birthDate": "1956-05-27",
      "address": [
        {
          "line": [ "100 Main St" ],
          "city": "Metropolis",
          "state": "Il",
          "postalCode": "44130",
          "country": "USA"
        }
      ]
    }

Is the server allowed to merge the 2 resources or is it required to create a new resource with id 1001?

view this post on Zulip Ewout Kramer (Jan 30 2017 at 15:07):

A POST is supposed to create a new resource, so yes. In this example, it looks like there's a matching algorithm on the server side which determines that these are the same patients - based on the address/gender/name. If you'd need, you could have the server refuse the POST and return an error to the caller with an OperationOutcome in the body, which states that a duplicate patient already exists. This is behaviour is not mandated by the spec, but is certainly allowed.


Last updated: Apr 12 2022 at 19:14 UTC