FHIR Chat · Bad implementations · implementers

Stream: implementers

Topic: Bad implementations


view this post on Zulip Michele Mottini (Apr 03 2020 at 01:57):

Reference do not resolve? Your problem! https://github.com/virencehealth/apiserver.virencehealth.com/issues/59

view this post on Zulip Grahame Grieve (Apr 03 2020 at 02:20):

well, technically, the specification says that references don't have to resolve. We've always taken it for granted, though (and said in the spec_, that a real healthcare system would ensure that they did in fact maintain referential integrity.

Can't help stupid...

Guess we can mention these guys when we're asked about this in tutorials

view this post on Zulip René Spronk (Apr 03 2020 at 06:49):

In distributed environments it may be near impossible to maintain referential integrity, unless one requires (for all applications) that resources can never be deleted.. As such some guidance as to how one should deal with this erroneous situation would be helpful.

view this post on Zulip Grahame Grieve (Apr 03 2020 at 06:51):

I don't see how we can provide general guidance more than we do - that would be an IG thing

view this post on Zulip Michele Mottini (Apr 03 2020 at 13:58):

The spec say 'Whether or not the reference is to a FHIR RESTful server, the reference SHALL point to a Resource as defined by this specification' - seems to me that it means they should resolve. Also: they should use Argonaut, that say that MedicationOrder must have a medication. Also also: a MedicationOrder without the medication does not make any sense - but they don't believe me, everything is fine

view this post on Zulip Vassil Peytchev (Apr 03 2020 at 14:02):

What does it mean "Whether or not the reference is to a FHIR RESTful server"? Is it to cover contained resources, and resources in a Bundle? Or does it mean that you can put an identifier in there, that is not retrievable?

view this post on Zulip Peter Scholz (Apr 03 2020 at 14:11):

This specification uses the conformance verbs SHALL, SHOULD, and MAY as defined in RFC 2119. Unlike RFC 2119, however, this specification allows that different applications might not be able to interoperate because of how they use optional features.

That reads a bit like : "SHALL is an absolute must, unless you are not able to"

@Grahame Grieve did I get that right ?

view this post on Zulip Michele Mottini (Apr 03 2020 at 14:21):

@Vassil Peytchev : that language is at http://hl7.org/fhir/DSTU2/references.html - it mean that a reference can point to a static file somewhere for example, that must still be a valid FHIR resource

view this post on Zulip Michele Mottini (Apr 03 2020 at 14:37):

But this is the 'Bad implementations' (plural) topic, so here's something else
...what should we put in this Bundle 'next' link? Why not a link to every entry in the bundle for example?

{
  "type": "searchset",
  "entry": [
    {
      "fullUrl": "https://greenfield-apis.meditech.com:443/v1/argonaut/v1/Condition/2b7f42c7-58a8-4f68-4c88-5d166729ad17",
      "resource": {
        "id": "2b7f42c7-58a8-4f68-4c88-5d166729ad17",
          . . .
        "resourceType": "Condition"
      },
      "search": {
        "mode": "match"
      }
    },
    {
      "fullUrl": "https://greenfield-apis.meditech.com:443/v1/argonaut/v1/Condition/2d5fc10c-f4d3-463f-2196-c7a19a20cc43",
      "resource": {
        "id": "2d5fc10c-f4d3-463f-2196-c7a19a20cc43",
          . . .
        "resourceType": "Condition"
      },
      "search": {
        "mode": "match"
      }
    },
    {
      "fullUrl": "https://greenfield-apis.meditech.com:443/v1/argonaut/v1/Condition/321c9f35-1053-4a0e-f6af-4fcd7f0b2c73",
      "resource": {
        "id": "321c9f35-1053-4a0e-f6af-4fcd7f0b2c73",
          . . .
        "resourceType": "Condition"
      },
      "search": {
        "mode": "match"
      }
    },
    {
      "fullUrl": "https://greenfield-apis.meditech.com:443/v1/argonaut/v1/Condition/c7bd1ffb-9ca2-4900-83ae-fe5b6c0cd4b7",
      "resource": {
        "id": "c7bd1ffb-9ca2-4900-83ae-fe5b6c0cd4b7",
          . . .
        "resourceType": "Condition"
      },
      "search": {
        "mode": "match"
      }
    },
    {
      "fullUrl": "https://greenfield-apis.meditech.com:443/v1/argonaut/v1/Condition/e5441aac-4cc2-456c-e7a0-c2585c0563b1",
      "resource": {
        "id": "e5441aac-4cc2-456c-e7a0-c2585c0563b1",
          . . .
        "resourceType": "Condition"
      },
      "search": {
        "mode": "match"
      }
    }
  ],
  "link": [
    {
      "relation": "next",
      "url": "https://greenfield-apis.meditech.com:443/v1/argonaut/v1/Condition/2b7f42c7-58a8-4f68-4c88-5d166729ad17"
    },
    {
      "relation": "next",
      "url": "https://greenfield-apis.meditech.com:443/v1/argonaut/v1/Condition/2d5fc10c-f4d3-463f-2196-c7a19a20cc43"
    },
    {
      "relation": "next",
      "url": "https://greenfield-apis.meditech.com:443/v1/argonaut/v1/Condition/321c9f35-1053-4a0e-f6af-4fcd7f0b2c73"
    },
    {
      "relation": "next",
      "url": "https://greenfield-apis.meditech.com:443/v1/argonaut/v1/Condition/c7bd1ffb-9ca2-4900-83ae-fe5b6c0cd4b7"
    },
    {
      "relation": "next",
      "url": "https://greenfield-apis.meditech.com:443/v1/argonaut/v1/Condition/e5441aac-4cc2-456c-e7a0-c2585c0563b1"
    },
    {
      "relation": "self",
      "url": "https://greenfield-apis.meditech.com:443/v1/argonaut/v1/Condition?patient=I0-B20190530093628792"
    }
  ],
  "total": 5,
  "resourceType": "Bundle"
}

view this post on Zulip Grahame Grieve (Apr 03 2020 at 19:10):

we've struggled with this language. What we're trying to say is that you can't point to something that isn't a FHIR resource - e.g. a PDF that describes something, in a Reference().

view this post on Zulip Grahame Grieve (Apr 03 2020 at 19:10):

we aren't trying to say that the link can't be broken

view this post on Zulip Lloyd McKenzie (Apr 03 2020 at 19:22):

Well, we're also saying the link isn't guaranteed to be resolvable - network issues, permission issues, site issues, etc. mean that there's never a guarantee of resolution

view this post on Zulip Michele Mottini (Apr 03 2020 at 19:27):

So MedicationOrder pointing to Medication that do not exist are OK?

view this post on Zulip René Spronk (Apr 04 2020 at 10:05):

It's definitely not OK .. but in the real world, s* happens.

view this post on Zulip Lloyd McKenzie (Apr 04 2020 at 13:46):

It's entirely possible that the items being referenced aren't under the control of the server doing the referencing, so enforcing referential integrity just isn't possible in all spaces.

view this post on Zulip Robert McClure (Apr 04 2020 at 21:53):

just passing through so you can ignore ;-0 but seems you are mashing together the idea of elegant error handling and specification expectations. If a reference is expecting a resolvable FHIR resource then it should be a SHALL and then you need to have error handling processes. Saying it SHOULD be a resource but allowing anything to happen is not the same thing. Assuming you thought about all that, I'd assume getting a resource is "nice to have" and you expect implementers to design systems where things other than a resource must be accepted and used. Right?


Last updated: Apr 12 2022 at 19:14 UTC