Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature request: gazelle - connect matchbox through new validation-service API #141

Closed
oliveregger opened this issue Sep 22, 2023 · 9 comments · Fixed by #190
Closed

feature request: gazelle - connect matchbox through new validation-service API #141

oliveregger opened this issue Sep 22, 2023 · 9 comments · Fixed by #190
Assignees

Comments

@oliveregger
Copy link
Member

Background

gazelle has integrated matchbox with the $validate FHIR operation with the Gazelle FHIR Validator R4, see example:

CH EMED Medication Card Document, note that the following parameters have to been set:

implementation is done in net.ihe.gazelle.fhir.validator.validation.peripherals.ws.IGFhirServerClientImpl

this integration works very well, however it has two disadvantages

  1. profile configuration needs to be done manually, matchbox enables to list al profiles/ig's which are available
  2. additional validation parameters which matchbox offers (eg txServer, displayIssuesAreWarnings) cannot be configured

all of those information can be accessed over the OperationDefintion for $validate

gazelle FHIR Validation API

gazelle has incorporated a new validation service API:
This project is a library that provides all required APIs to build and integrate
a new validation service with Gazelle Test Bed.

if matchbox implements this API, a dynamically configuration could be adapted, and other clients could then call also directly matchbox validation if they don't want to use the FHIR $validate API but use the EVSClient API for validation like described here

The swagger description is located here

(don't know if a bridge is already implemented).

@oliveregger
Copy link
Member Author

matchbox gui validate should then also to do the call to new validation api (support both)

@oliveregger
Copy link
Member Author

http validator from gazelle uses this new logic too:

https://gitlab.inria.fr/gazelle/applications/test-execution/validator/http-validator

@oliveregger
Copy link
Member Author

@oliveregger
Copy link
Member Author

http validator:

add to docker file the following

gazelle/http-validator/http-validator-service

ENV GZL_PROFILE_REPOSITORY_PATH=/opt/http-validator/validationProfiles
ENV GZL_PROFILE_CACHE_MAX_ELEMENTS=50
ENV GZL_TOKEN_API_URL=http://localhost:8082
ENV APPLICATION_URL=http://localhost:8080/http-validator

then afterwards:

docker build -t validator .

port 8080 needs to be exposed

http script attached (as http.txt, rename to http)

http.txt

@qligier qligier self-assigned this Jan 16, 2024
qligier added a commit that referenced this issue Jan 26, 2024
qligier added a commit that referenced this issue Jan 26, 2024
qligier added a commit that referenced this issue Jan 26, 2024
qligier added a commit that referenced this issue Feb 1, 2024
qligier added a commit that referenced this issue Feb 20, 2024
qligier added a commit that referenced this issue Feb 21, 2024
qligier added a commit that referenced this issue Feb 21, 2024
qligier added a commit that referenced this issue Feb 21, 2024
@oliveregger
Copy link
Member Author

It would be nice to have additional info on the "Additional Metadata Matchbox QLIG-local" all values which we provide in hte operation outcome (a lot a are already there):

  "extension": [ {
      "url": "http://matchbox.health/validiation",
      "extension": [ {
        "url": "profile",
        "valueUri": "http://hl7.org/fhir/StructureDefinition/Patient"
      }, {
        "url": "profileVersion",
        "valueUri": "4.0.1"
      }, {
        "url": "profileDate",
        "valueDateTime": "2019-11-01T09:29:23+11:00"
      }, {
        "url": "total",
        "valueDuration": {
          "value": 39,
          "unit": "ms"
        }
      }, {
        "url": "validatorVersion",
        "valueString": "powered by matchbox 3.5.4, hapi-fhir 6.10.0 and org.hl7.fhir.core 6.1.16"
      }, {
        "url": "ig",
        "valueString": "hl7.fhir.r4.core#4.0.1"
      }, {
        "url": "hintAboutNonMustSupport",
        "valueBoolean": false
      }, {
        "url": "recursive",
        "valueBoolean": false
      }, {
        "url": "showMessagesFromReferences",
        "valueBoolean": false
      }, {
        "url": "doDebug",
        "valueBoolean": false
      }, {
        "url": "assumeValidRestReferences",
        "valueBoolean": false
      }, {
        "url": "canDoNative",
        "valueBoolean": false
      }, {
        "url": "noExtensibleBindingMessages",
        "valueBoolean": false
      }, {
        "url": "noUnicodeBiDiControlChars",
        "valueBoolean": false
      }, {
        "url": "noInvariants",
        "valueBoolean": false
      }, {
        "url": "displayIssuesAreWarnings",
        "valueBoolean": true
      }, {
        "url": "wantInvariantsInMessages",
        "valueBoolean": false
      }, {
        "url": "doImplicitFHIRPathStringConversion",
        "valueBoolean": false
      }, {
        "url": "securityChecks",
        "valueBoolean": false
      }, {
        "url": "crumbTrails",
        "valueBoolean": false
      }, {
        "url": "forPublication",
        "valueBoolean": false
      }, {
        "url": "httpReadOnly",
        "valueBoolean": false
      }, {
        "url": "allowExampleUrls",
        "valueBoolean": false
      }, {
        "url": "txServer",
        "valueUri": "http://localhost:8081/matchboxv3/fhir"
      }, {
        "url": "lang"
      }, {
        "url": "snomedCT"
      }, {
        "url": "fhirVersion",
        "valueString": "4.0.1"
      }, {
        "url": "ig",
        "valueString": "hl7.fhir.r4.core#4.0.1"
      }, {
        "url": "locale",
        "valueString": "English"
      }, {
        "url": "jurisdiction",
        "valueString": "urn:iso:std:iso:3166#CH"
      }, {
        "url": "sessionId",
        "valueString": "211057106"
      }, {
        "url": "package",
        "valueString": "hl7.fhir.xver-extensions#4.0"
      }, {
        "url": "package",
        "valueString": "hl7.fhir.r4.core#4.0.1"
      }, {
        "url": "package",
        "valueString": "hl7.fhir.uv.extensions.r4#1.0.0"
      }, {
        "url": "package",
        "valueString": "hl7.terminology#5.4.0"
      } ]
    } ],

see also #194

qligier added a commit that referenced this issue Feb 22, 2024
@qligier
Copy link
Member

qligier commented Feb 22, 2024

Use the profile name instead of URL.
Allow Gazelle to filter by IG.

qligier added a commit that referenced this issue Feb 26, 2024
qligier added a commit that referenced this issue Feb 27, 2024
qligier added a commit that referenced this issue Feb 27, 2024
@oliveregger
Copy link
Member Author

For the profile name we could maybe use NpmPackageVersionResourceEntity FileName in MatchboxPackageInstallerImpl

@oliveregger
Copy link
Member Author

private org.hl7.fhir.r5.model.Resource loadPackageEntity(NpmPackageVersionResourceEntity contents) {

@qligier
Copy link
Member

qligier commented Feb 27, 2024

Also return the StructureDefinition title, IG title and version in the $validate OperationDefinition (add extensions to the targetProfile).

qligier added a commit that referenced this issue Feb 27, 2024
qligier added a commit that referenced this issue Feb 28, 2024
qligier added a commit that referenced this issue Feb 28, 2024
qligier added a commit that referenced this issue Feb 29, 2024
qligier added a commit that referenced this issue Mar 4, 2024
qligier added a commit that referenced this issue Mar 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants