Release notes Vonk

Release 2.0.1 hotfix

Fix

  • Supported Interactions were not checked for custom operations. In the appsettings.json the custom operations, like $meta, were ignored. This has been fixed now.

Release 2.0.0 final

This is the final release of version 2.0.0, so the -beta is off. If you directly upgrade from version 1.1, please also review all the 2.0.0-beta and -beta2 release notes below.

Attention

We upgraded the version of .NET Core used to 2.2. Please get the latest 2.2.x runtime from the .NET download site. The update was needed for several security patches and speed improvements.

Attention

The structure of the Validation section in the settings has changed. See Validating incoming resources for details.

Attention

This version of Vonk is upgraded to the Hl7.Fhir.API version 1.2.0. Plugin- and Facade builders will transitively get this dependency through the Vonk.Core package.

Database

No changes have been made to any of the database implementations.

Fix

  1. When you created a StructureDefinition for a new resourcetype on /administration, the corresponding endpoint was not enabled.
  2. Vonk does not update references in a transaction when a conditional create is used for an existing resource.
  3. Paths in PipelineOptions would interfere if one was the prefix of the other.
  4. Indexing a HumanName with no values but just extensions failed.
  5. The selflink in a bundle did not contain the sort parameters. In this version the selflink always contains a sort and a count parameter, even if they were not in the request and the default values have been applied.
  6. The import of conformance resources from specification.zip yielded warnings on .sch files.
  7. Errors introduced in the 2.0.0-beta versions:
    1. Syntax errors in the XML or JSON payload yielded an exception, now they are reported with an OperationOutcome upon parsing.
    2. $expand and other terminology operations caused a NullReference exception.
    3. _element did not include the mandatory elements.

Feature

  1. Vonk supports Custom Resources. See Custom Resources.
  2. Operation $meta is now supported, to quickly get the tags, security labels and profiles of a resource.
  3. /metadata, retrieving the CapabilityStatement performs a lot better (just the initial call for a specific Accept-Type takes a bit longer).
  4. Validation can be controlled more detailed. Choose the strictness of parsing independent of the level of validation. With this, the settings section ‘Validation’ has also changed. See Validating incoming resources.

Plugin and Facade API

  1. We upgraded the embedded Fhir.Net API to version 1.2, see its release notes.
  2. Together with the upgrade to .NET Core 2.2, several libraries were updated as well. Most notably Microsoft.EntityFrameworkCore.*, to 2.2.3.

Release 2.0.0-beta2

Fix

  • Fixed RelationalQuery in Vonk.Facade.Relational, so Vonk.Facade.Starter can be used again.

Release 2.0.0-beta

We have refactored Vonk internally to accomodate future changes. There are only minor functional changes to the FHIR Server. Facade and Plugin builders must be aware of a few interface changes, most notably to the IResource interface.

This release is a beta release because of the many internal changes, and because we expect to include a few more in the final release. Have a go with it in your test environment to see whether you encounter any trouble. We also encourage you to build your plugin and/or facade against it to prepare for code changes upon the final release.

You can still access the latest final release (1.1.0):

  • Binaries: through the Simplifier downloads page, choose ‘List previous versions’.
  • Docker: docker pull simplifier/vonk:1.1.0
  • NuGet: <PackageReference Include="Vonk.Core" Version="1.1.0" />

Database

No changes have been made to any of the database implementations.

Fix

  1. The $validate operation processes the profile parameter.
  2. If an update brings a resource ‘back to life’, Vonk returns statuscode 201 (previously it returned 200).
  3. On an initial Administration Import of specification.zip, Vonk found an error in valueset.xml. This file was fixed in the specification.zip that comes with Fhir.NET API 1.1.2.
  4. Transaction: references within the transaction are automatically changed to the id’s the referenced resources get from Vonk when processing the transaction. This did not happen for references inside extensions. It does now.
  5. Administration Import: an Internal Server Error could be triggered with a zip file with nested directories in it.
    • NB: Directories in your zip are still not supported because of Fhir.NET API issue #883, but Vonk will not error on it anymore.
  6. Search: The entry.fullUrl for an OperationOutcome in a Search bundle had a relative url.
  7. Search: Processed _elements and _summary arguments were not reported in the selflink of the bundle (or any of the paging links).
  8. Search: The selflink will include a _count parameter, even if it was not part of the request and hence the default value for _count from the BundleOptions was applied.
  9. Search on :exact with an escaped comma (e.g. /Patient?name:exact=value1\,value2) was executed as a choice. Now the escape is recognized, and the argument processed as one term.

Feature

  1. Upgraded Fhir.NET API to version 1.1.2, see its release notes.
  2. The Vonk Administration API now allows for StructureMap and GraphDefinition resources to be loaded.
  3. The opening page of Vonk (and the only UI part of it) is updated. It no longer contains links that you can only execute with Postman, and it has a button that shows you the CapabilityStatement.
  4. We published our custom operations on Simplifier! And integrated those links into the CapabilityStatement.
  5. You can now access older versions of the Vonk binaries through the Simplifier downloads. (This was already possible for the Docker images and NuGet packages through their respective hubs).
  6. Vonk.IdentityServer.Test and Vonk.Facade.Starter have been integrated into the Continuous Integration system.
  7. In JSON, the order of the output has changed:
    1. If id and/or meta elements were added by Vonk (on a create or update), they will appear at the end of the resource.

Plugin and Facade API

  1. IResource interface and related classes have had several changes. If you encounter problems with adapting your code, please contact us.

    • It derives from the ISourceNode interface from the Fhir.NET API.

    • Change and Currency are properties that were only relevant in the repository domain, and not in the rest of the pipeline. They have been deprecated. You can access the values still with resource.GetChangeIndicator() and resource.GetCurrencyIndicator(). This is implemented with Annotations on the ISourceNode. All of Vonk’s own implementations retain those annotations, but if the relevant annotation is somehow missing, default values are returned (ResourceChange.NotSet resp. ResourceCurrency.Current).

    • The Navigator property is obsolete. The type of it (IElementNavigator) is obsolete in the Fhir.NET API. To run FhirPath you provide type information and run the FhirPath over an ITypedElement:

      //Have IStructureDefinitionSummaryProvider _schemaProvider injected in the constructor.
      var typed = resource.ToTypedElement(_schemaProvider);
      var matchingElements = typed.Select('your-fhirpath-expression');
      
    • Id, Version and LastUpdated can no longer be set directly on the IResource instance. IResource has become immutable (just like ISourceNode). The alternatives are:

      var resourceWithNewId = resource.SetId("newId");
      var resourceWithNewVersion = resource.SetVersion("newVersion");
      var resourceWithNewLastUpdated = resource.SetLastUpdated(DateTimeOffset.UtcNow);
      
    • Because the IChangeRepository is responsible for creating new id’s and versions, we also included extensions methods on it to update all three fields at once:

      var updatedeResource = changeRepository.EnsureMeta(resource, KeepExisting.Id / Version / LastUpdated);
      var updatedResource = changeRepository.FreshMeta(resource); //replaces all three
      
  2. The PocoResource class is obsolete. To go from a POCO (like an instance of the Patient class) to an IResource, use the ToIResource() extension method found in Vonk.Fhir.R3.

  3. The PocoResourceVisitor class is obsolete. Visiting can more effectively be done on an ITypedElement:

    //Have IStructureDefinitionSummaryProvider _schemaProvider injected in the constructor.
    var typed = resource.ToTypedElement(_schemaProvider);
    typed.Visit((depth, element) => {//do what you want with element});
    
  4. SearchOptions has changed:

    • Properties Count and Offset have been removed.
    • Instead, use _count and _skip arguments in the IArgumentCollection provided to the SearchRepository.Search method if you need to.
  5. We have created a template for a plugin on GitHub. Fetch it for a quick start of your plugin.

Release 1.1.0

Attention

New security issues have been identified by Microsoft. See the Security notifications for Vonk for details.

Attention

The setting for the location of the license file has moved. It was in the top level setting LicenseFile. It still has the same name, but it has moved into the section License. See License for details.

Attention

This version of Vonk is upgraded to the Hl7.Fhir.API version 1.1.1. Plugin- and Facade builders will transitively get this dependency through the Vonk.Core package.

Database

No changes have been made to any of the database implementations.

Feature

  1. Vonk will count the number of requests that it processes. See License for settings on that. Because of this change, the LicenseFile setting has moved from the top level to under License.
  2. The plugin folder (Configuring the Vonk Pipeline) may now contain subfolders. Plugins will be read from all underlying folders.
  3. Vonk supports If-Match on update. See Managing Resource Contention in the specification for details.
  4. Plugins may return non-FHIR content. See Returning non-FHIR content from a plugin.
  5. This feature may also be used for Custom Authentication.
  6. A Template for a plugin is added to the documentation.
  7. A documentation page on performance is added: Performance of Vonk FHIR Server.
  8. Upgrade of the Hl7.Fhir.API library to 1.1. See the API releasenotes for 1.1.0 (DSTU2, STU3) (beta - final version to be released 20190128).

Fix

  1. Transaction: forward references from one resource to another in a Transaction were not correctly resolved.
  2. When you set ValidateIncomingResources to true, Vonk no longer accepts resources with extensions that are unknown to it. This is now also reflected in the CapabilityStatement.acceptUnknown.
  3. The links in a bundle response (Bundle.link) were relative links. Now they are absolute links.
  4. HTTP 500 instead of an OO was returned when trying to update a subscription with an invalid request status.
  5. If an error is found in a SearchParameter in the Administration database, Vonk logs the (canonical) url of that SearchParameter for easier reference.
  6. Transaction: Response bundle contained versioned fullUrls. We changed that to unversioned urls.
  7. Bundles: Response bundles with an OperationOutcome contained a versioned fullUrl for the entry containing the OperationOutcome. We changed that to an unversioned url.
  8. Deleting a resource from the Administration API that does not exist would lead to an internal server error.

Supported Plugins

  1. Several fixes have been done on the Document plugin.

Release 1.0.0

Yes! Vonk version 1.0 is out. It is also the first version that is released withouth the -beta postfix. It has been very stable from the very first version, and now we think it is time to make that formal.

Release 1.0.0 is functionally identical to 0.7.4.0. But we optimized the deployment process for Yellow Button - Vonk for your Simplifier project and Docker in general. The contents of the core specification are now preloaded in the SQLite administration database, so your first startup experience is a lot faster.

Release 0.7.4.0

Database

  1. The index definitions for SQL Server have been updated for improved performance. This should be handled automatically when you start Vonk 0.7.4 and have AutoUpdateDatabase enabled.

Fix

  1. Posting a resource with an invalid content-type to the regular FHIR endpoint should result in HTTP 415 and not HTTP 400.
  2. Warning ‘End method “PocoResourceVisitor.VisitByType”, could not cast entity to PocoResource.’ in the log was incorrect.
  3. When running Administration API on SQLite and Vonk on SQL Server, update or delete would fail.
  4. Handle quantity with very low precision (e.g. ‘3 times per year’ - 3|http://unitsofmeasure.org|/a).
  5. POST to <vonk_base>/Administration/* with another Content-Type than application/json or application/xml results in HTTP 500.

Feature

  1. Support forward references in a Transaction bundle. Previously Vonk would only process references back to resources higher up in the bundle.
  2. Performance of Validation and Snapshot Generation has improved by approximately 10 times…
  3. … and correctness has improved as well.
  4. Administration API also support the NamingSystem resource.

Release 0.7.3.0

Fix

  1. Search on /administration/Subscription was broken
  2. Neater termination of the Subscription evaluation process upon Vonk shutdown
  3. A Bundle of type batch is now rejected if it contains internal references.
  4. Urls in the narrative (href and src) are also updated to the actual location on the server.
  5. A system wide search on compartment returns 403, explaining that that is too costly.

Release 0.7.2.1

Fix

  1. Delete on /administration was broken.

Release 0.7.2.0

Database

  1. Fixes 2 and 3 require a reindex for specific searchparameters, if these parameters are relevant to you.

Features and fixes

  1. Fix: Reject a search containing a modifier that is incorrect or not supported.
  2. Fix: The definition for searchparameter Encounter.length was unclear. We added the correct definition from FHIR R4 to the errata.zip, so it works for STU3 as well. If this is relevant for you, you may want to reindex for this searchparameter. See Rebuild the search index for specific searchparameters, just for ‘Encounter.length’.
  3. Fix: Error “Unable to index for element of type ‘base64Binary’”. This type of element is now correctly indexed. One known searchparameter that encounters this type is Device.udi-carrier. If this is relevant to you, you may want to reindex for this searchparameter. See Rebuild the search index for specific searchparameters, just for ‘Device.udi-carrier’.
  4. Fix: Validation would fail on references between contained resources. See also fix #423 in the release notes for the FHIR API.
  5. Fix: E-tag was missing from the response on a delete interaction.
  6. Fix: An invalid mimetype in the _format parameter (like _format=application/foobar) returned response code 400 instead of 415.
  7. Fix: If a subscription errors upon execution, not only set the status to error, but also state the reason in Subscription.error for the user to inspect.
  8. Fix: Search on /Observation?value-string:missing=false did not work. As did the missing modifier on other searchparameters on value[x] elements.
  9. Feature: After /administration/importResources (see Load Conformance Resources on demand), return an OperationOutcome detailing the results of the operation.
  10. Feature: Upon usage of a wrong value for _summary, state the possible, correct values in the OperationOutcome.
  11. Feature: Allow for multiple deletes with a Conditional Delete, see Create, read, update, delete.
  12. Feature: The version of Vonk is included in the log file, at startup.
  13. Configuration: Add Vonk.Smart to the PipelineOptions by default, so the user only needs to set the SmartAuthorizationOptions.Enabled to true.
  14. Upgrade: We upgraded to the latest C# driver for MongoDb (from 2.4.4 to 2.7.0).

Release 0.7.1.1

Fix

Spinning up a Docker container would crash the container because there was no data directory for SQlite (the default repository). This has been solved now: Vonk will create the data directory when it does not exist.

Release 0.7.1.0

Attention

Fix nr. 8 requires a reindex/searchparameters with include=Resource._id,Resource._lastUpdated,Resource._tag. Please review Re-indexing for new or changed SearchParameters on how to perform a reindex and the cautions that go with it. Also note the changes to reindexing in fix nr. 1.

Database

  1. We added support for SQLite! See Using SQLite for details.
  2. We also made SQLite the default setting for both the main Vonk database and the Vonk Administration API.
  3. With the introduction of SQLite we advise running the Administration API on SQLite. In the future we will probably deprecate running the Administration API on any of the other databases.
  4. Support for CosmosDB is expanded, though there are a few limitations.

Facade

  1. If you rejected the value for the _id searchparameter in your repository, Vonk would report an InternalServerError. Now it reports the actual message of your ArgumentException.

Features and fixes

  1. We sped up Re-indexing for new or changed SearchParameters. The request will be responded to immediately, while Vonk starts the actual reindex asynchronously and with many threads in parallel. Users are guarded against unreliable results by blocking other requests for the duration of the reindex. Reindexing is still not to be taken lightly. It is a very heavy operation that may take very long to complete. See Re-indexing for new or changed SearchParameters for details.
  2. A really large bundle could lead Vonk (or more specifically: the validator in Vonk) to a StackOverflow. You can now set limits to the size of incoming data to avoid this.
  3. Reindexing is supported on CosmosDB, but it is less optimized than on MongoDB.
  4. Using _include or _revinclude would yield an OperationOutcome if there are no search results to include anything on. Fixed that to return 404 as it should.
  5. Using the :not modifier could return false positives.
  6. A batch or transaction with an entry having a value for IfModifiedSince would fail.
  7. History could not be retrieved for a deleted resource. Now it can.
  8. Reindex would ignore the generic searchparameters defined on Resource (_id, _lastUpdated, _tag). Because id and lastUpdated are also stored apart from the search index, this was really only a problem for _tag. If you rely on the _tag searchparameter you need to reindex just for the searchparameter ``Resource._tag``.
  9. Vonk logs its configuration at startup. See Log of your configuration for details.

Release 0.7.0.0

Database

  1. Indexes on the SQL Server repository were updated to improve performance. They will automatically be applied with AutoUpdateDatabase.

Facade

  1. Release 0.7.0.0 is compatible again with Facade solutions built on the packages with versions 0.6.2, with a few minor changes. Please review the Vonk.Facade.Starter project for an example of the necessary adjustments. All the differences can be seen in this file comparison.
  2. Fix: The SMART authorization failed when you don’t support all the resourcetypes. It will now take into account the limited set of supported resourcetypes.
  3. Fix: Vonk.Facade.Relational.RelationalQueryFactory would lose a _count argument.
  4. Documentation: We added documentation on how to implement Create, Update and Delete in a facade on a relational database. See Enable changes to the repository. This is also added to the example Facade solution on GitHub.

Features and fixes

  1. Feature: Vonk FHIR Components has been released. You can now add libraries with your own components through configuration.
  2. Feature: Through Vonk FHIR Components you can replace the landing page with one in your own style. We provided an example on how to do that.
  3. Feature: You can now start Vonk from within another directory than the Vonk binaries directory, e.g. c:\programs>dotnet .\vonk\vonk.server.dll.
  4. Feature: You can configure the maximum number of entries allowed in a Batch or Transaction, to avoid overloading Vonk. See Batch and transaction.
  5. Upgrade: We upgraded the FHIR .NET API to version 0.96.0, see their release notes for details. Mainly #599 affects Vonk, since it provides the next…
  6. Fix: Under very high load the FhirPath engine would have concurrency errors. The FhirPath engine is used to extract the search parameters from the resources. This has been fixed.
  7. Fix: Search on a frequently used tag took far too long on a SQL Server repository.
  8. Fix: The Patient.deceased search parameter from the specification had an error in its FhirPath expression. We put a corrected version in the errata.zip.
  9. Fix: Several composite search parameters on Observation are defined incorrectly in the specification, as is reported in GForge issue #16001. Until the specification itself is corrected, we provide corrections in the errata.zip.
  10. Fix: Relative references in a resource that start with a forward slash (like /Patient/123) could not be searched on.
  11. Fix: System wide search within a compartment looked for the pattern <base>/Patient/123/?_tag=bla. Corrected this to <base>/Patient/123/*?_tag=bla
  12. Fix: When loading Simplifier resources, Vonk can now limit this to the changes since the previous import, because the Simplifier FHIR endpoint supports _lastUpdated.
  13. Fix: Conformance resources are always loaded into the Administration API when running on a Memory repository. Or actually, always if there are no StructureDefinitions in the Administration database. To enable this change, imported files are no longer moved to the AdministrationOptions.ImportedDirectory.
  14. Fix: Re-indexing for new or changed SearchParameters would stop if a resource was encountered that could not properly be indexed. It will now continue working and report any errors afterwards in an OperationOutcome.
  15. Fix: The terms and privacy statement on the default landing page have been updated.
  16. Fix: When searching on a search parameter of type date, with an argument precision to the minute (but not seconds), Vonk would reject the argument. It is now accepted.
  17. Fix: DateTime fields are always normalized to UTC before they are stored. This was already the case on MongoDb, and we harmonized SQL and Memory to do the same. There is no need to reindex for this change.
  18. Fix: When you use accents or Chinese characters in the url for a search, Vonk gives an error.
  19. Fix: A reverse chained search on MongoDb sometimes failed with an Internal Server Error.