ahdis / matchbox

Apache License 2.0
28 stars 20 forks source link

Autoinstall of IG's by ig / canoncial / current (ci-build) support and dev support #306

Open oliveregger opened 2 weeks ago

oliveregger commented 2 weeks ago

we have different possibilites to add ig's to matchbox:

  1. provide it during startup time
  2. upload it in the gui if not disabled by read-only mode parameter httpReadOnly

feature a) specified ig not availabe

what would be nice would be to have for the second option (when not in read-only) mode, that a guide would also get uploaded when the ig is not availabe:

e.g. validate FHIR IPS document with ig hl7.fhir.uv.ips#1.1.0, if ig hl7.fhir.uv.ips with version 1.1.0 is not yet avaible it would be tried to resolve from the package cache and installed.

feature b) if no ig is specified the ig could be identified with the FHIR Package API

https://app.swaggerhub.com/apis-docs/firely/Simplifier.net_FHIR_Package_API/1.0.1#/default/get_catalog

curl -X 'GET' \ 'https://packages.simplifier.net/catalog?canonical=http%3A%2F%2Ffhir.ch%2Fig%2Fch-core%2FStructureDefinition%2Fch-core-patient&prerelease=false' \ -H 'accept: application/json'

feature c) support for current?

if a validation would be done on the #current version it would check if an updated ci-build version is available and if yes, that updated version should be validated (should that support then also check dependent current dependenciesI). caveat: probably the latest (default) version on matchbox should always be the last published, even though a cibuild would be newer.

feature d) dev support

we have reading support for npm package installed on matchbox, could we extend also the API to upload directly a binary npm package? this would be helpful in CI/CD pipeline to not need to configure the startup parameters.

qligier commented 1 week ago

Feature a) The new config property matchbox.fhir.context.autoInstallMissingIgs allows the server to fetch an unknown IG from the registry (https://packages2.fhir.org/packages/) when performing a validation. Implemented in 4e2ec7a04ede39dec28f87ebe3b34a9681ff3e13

Feature b) The Simplifier API is queried to find an IG associated with a canonical. Implemented in 8b374a2827abdc1fc6089d0e829dd5314e544a80

Feature c) not implemented yet.

Feature d) The global operation $install-npm-package allows installing an IG by pushing an NPM package through the FHIR API. Implemented in 179dc4501907008287fea0e8b4c72c483632d0a6