FHIR Chat · implementationguide-page is unknown, and not allowed here · shorthand

Stream: shorthand

Topic: implementationguide-page is unknown, and not allowed here


view this post on Zulip Carl Anderson (Jul 13 2020 at 16:13):

I'm struggling to get the IG publisher to accept a markdown-only IG that was processed using sushi. Right now the IG publisher is complaining about the presence of an implementationguide-page extension on an example resource, which appears in the sushi-generated output. So, I'm thinking sushi is putting this extension there and it shouldn't - but I don't understand what it is or why it's there (or how to suppress it).

Here's the exact set of errors from the publisher's qa.html page:

/Users/can/code/smart-web-messaging/docs/ImplementationGuide-hl7.fhir.smart-web-messaging.xml
    Path        ImplementationGuide/hl7.fhir.smart-web-messaging: ImplementationGuide.definition.resource[0].extension[1]
    Severity    error
    Message     The extension http://hl7.org/fhir/StructureDefinition/implementationguide-page is unknown, and not allowed here
    Path        ImplementationGuide/hl7.fhir.smart-web-messaging: ImplementationGuide.definition.resource[0].extension[1].url
    Severity    error
    Message     URL value "http://hl7.org/fhir/StructureDefinition/implementationguide-page" does not resolve

I have this in my config.yaml:

resources:
  Patient/example:
    exampleBoolean: true
    name: Ignore
    description: Ignore

And I have this in my fish tank at fsh/ig-data/input/examples/patient-example.json:

{
  "resourceType": "Patient",
  "id": "example"
}

I'm using the latest versions of sushi v0.14.0 and the publisher.jar v1.1.2.

After running sushi, these are all the files that contain the implementationguide-page token that the publisher is complaining about.

can@msft-mbp ~/code/work/ig/build (master) $ find . -type f | xargs grep -l 'implementationguide-page'
./temp/qa/ImplementationGuide-hl7.fhir.smart-web-messaging-xml-html.html
./temp/qa/ImplementationGuide-hl7.fhir.smart-web-messaging-json-html.html
./temp/qa/ImplementationGuide-hl7.fhir.smart-web-messaging-ttl-html.html
./temp/pages/_includes/ImplementationGuide-hl7.fhir.smart-web-messaging.escaped.json
./temp/pages/_includes/ImplementationGuide-hl7.fhir.smart-web-messaging-json-html.xhtml
./temp/pages/_includes/ImplementationGuide-hl7.fhir.smart-web-messaging.json
./temp/pages/_includes/ImplementationGuide-hl7.fhir.smart-web-messaging-ttl-html.xhtml
./temp/pages/_includes/ImplementationGuide-hl7.fhir.smart-web-messaging-xml-html.xhtml
./temp/pages/ImplementationGuide-hl7.fhir.smart-web-messaging.ttl
./temp/pages/ImplementationGuide-hl7.fhir.smart-web-messaging.xml
./temp/pages/ImplementationGuide-hl7.fhir.smart-web-messaging.json
./template/onGenerate-ig-working.1.xml
./template/onGenerate-ig-working.xml
./template/onGenerate-ig-updated.xml
./template/scripts/onGenerate.data.xslt
./template/scripts/createArtifactSummary.xslt
./template/scripts/onGenerate.final.xslt
./template/onGenerate-ig-working.json
./output/ImplementationGuide-hl7.fhir.smart-web-messaging.ttl
./output/ImplementationGuide-hl7.fhir.smart-web-messaging.xml
./output/ImplementationGuide-hl7.fhir.smart-web-messaging.json

Finally, this is the resource generated in the json IG:

    "resource": [
      {
        "extension": [
          {
            "url": "http://hl7.org/fhir/tools/StructureDefinition/resource-information",
            "valueString": "Patient"
          },
          {
            "url": "http://hl7.org/fhir/StructureDefinition/implementationguide-page",
            "valueUri": "Patient-example.html"
          }
        ],
        "reference": {
          "reference": "Patient/example"
        },
        "name": "Ignore",
        "description": "Ignore",
        "exampleBoolean": true
      }
    ],

Any ideas what I'm doing wrong here?

view this post on Zulip Nick Freiter (Jul 13 2020 at 18:32):

This is strange, but those extensions are not coming from sushi. The outputs from sushi are the inputs to the IG Publisher, so sushi builds into the input folder. Note that no implementationguide-page tokens are found in the input folder, but rather in the folders containing the results of the IG Publisher build (temp and output). Sushi generates an ImplementationGuide-id.json file, but then the IG Publisher does its own processing on that file, and that processing does generally include adding those extensions.

In running some simple testing, I got the same extensions added into my resource array when running a simple IG through the publisher. So I'm not sure what is going on here, since the IG Publisher is seemingly adding that extension and then getting mad that it is there.

view this post on Zulip Carl Anderson (Jul 13 2020 at 19:10):

Ah, thank you, Nick. I keep forgetting that the sushi 'output' is called 'input'.

view this post on Zulip David Hay (Jul 13 2020 at 21:55):

Yeah - that confused me for the longest time too!

view this post on Zulip Mark Kramer (Sep 22 2020 at 13:23):

@Grahame Grieve It seems this still a current publisher issue that is preventing validation of IGs. Any ideas?

view this post on Zulip Grahame Grieve (Sep 22 2020 at 15:53):

no. how do I reproduce this?

view this post on Zulip Mark Kramer (Sep 22 2020 at 16:01):

@Max Masnick or @Nick Freiter can you provide an example for Grahame?

view this post on Zulip Jose Costa Teixeira (Sep 22 2020 at 17:11):

Can I try to understand what you are trying to do @Carl Anderson

  • you have a patient resource as an example, and that patient resource has an extension?
  • or is the extension in the resource declaration within the IG

I can't find what is http://hl7.org/fhir/StructureDefinition/implementationguide-page

view this post on Zulip Carl Anderson (Sep 22 2020 at 17:48):

What I'm trying to do is - have an IG that doesn't have any resources at all. To satisfy the publisher tool, I had to have something for it to iterate over, so I gave it an extremely trivial 'throwaway' patient example.

view this post on Zulip Grahame Grieve (Sep 22 2020 at 17:50):

that's not a tooling issue, that's a definitional issue to take up with FHIR-I

view this post on Zulip Mark Kramer (Sep 22 2020 at 17:53):

@Max Masnick experienced this error in an IG with plenty of profiles. Here’s a list of the errors you can see if you’re curious: ig-validation-errors.txt

view this post on Zulip Grahame Grieve (Sep 22 2020 at 17:55):

back to my question then: how do I reproduce this?

view this post on Zulip Lloyd McKenzie (Sep 22 2020 at 18:03):

FHIR-I has taken it up and agreed to make resource optional. Just hasn't been applied yet

view this post on Zulip Carl Anderson (Sep 22 2020 at 18:07):

@Lloyd McKenzie - thanks.

@Grahame Grieve & @Mark Kramer - I'm not sure I can remember how to produce this error, after 2 months. :grimacing: Maybe @Max Masnick can share his details.

view this post on Zulip Max Masnick (Sep 23 2020 at 10:12):

@Grahame Grieve reproduction instructions using the mCODE IG are below.

  1. Download http://hl7.org/fhir/us/mcode/definitions.json.zip and extract ImplementationGuide-hl7.fhir.us.mcode.json
  2. Run java -jar org.hl7.fhir.validator.jar -version 4.0.0 -ig hl7.fhir.us.mcode#1.0.0 -ig hl7.fhir.us.core ImplementationGuide-hl7.fhir.us.mcode.json
  3. I then see these errors: https://gist.github.com/masnick/5d93d60f9696018821165b02acbcb39b

view this post on Zulip Max Masnick (Sep 23 2020 at 10:25):

I see the same errors when following the same instructions on a fresh build of the IG from https://github.com/HL7/fhir-mCODE-ig/tree/master.

view this post on Zulip Max Masnick (Sep 23 2020 at 10:26):

When I run the validator on the IG output by SUSHI (fhir-mCODE-ig/input/ImplementationGuide-hl7.fhir.us.mcode.json), I get different errors: https://gist.github.com/masnick/8ebb48d9f06a963b708626c9f35affd2

view this post on Zulip Max Masnick (Oct 07 2020 at 10:34):

@Grahame Grieve were you able to reproduce this yourself?

view this post on Zulip Grahame Grieve (Oct 07 2020 at 23:43):

I can. @Lloyd McKenzie This extension come from the template, and is never used by the IGPublisher: http://hl7.org/fhir/StructureDefinition/implementationguide-page. What's going on with this?

view this post on Zulip Lloyd McKenzie (Oct 08 2020 at 01:35):

The extension is set by the IGPublisher. It's used by the templates - it indicates the URL for the page associated with the artifact.

view this post on Zulip Lloyd McKenzie (Oct 08 2020 at 01:37):

It's been in the code since prior to April 2019 - when everything got refactored, making it harder to trace when it was introduced.

view this post on Zulip Grahame Grieve (Oct 14 2020 at 00:19):

ok, well, all existing IGs are affected by this, but new ones won't be from now on

view this post on Zulip Max Masnick (Oct 15 2020 at 12:21):

@Grahame Grieve is there a way to resolve this for existing IGs?

view this post on Zulip Grahame Grieve (Oct 15 2020 at 12:42):

no. is it an operational issue? validating the IG resource itself is pretty obscure

view this post on Zulip Max Masnick (Oct 21 2020 at 20:33):

This is not an operational issue...it was mentioned in a HL7 Jira issue but it's not causing any issues as far as I know.


Last updated: Apr 12 2022 at 19:14 UTC