Syndication
One of Ontoserver's key features is support for content syndication.
The Syndication Interface is based on the Atom Publishing Protocol and Atom Syndication Format specifications. The NCTS Conformant Server Applications specification’s Syndication Feed section describes the elements in the feed.
In the case where a FHIR Resoure feed entry is particularly large and is known to be valid, the namespaced (xmlns:onto="http://ontoserver.csiro.au/syndication/"
) attribute onto:validated=true
can be added to the link
element along with the ncts:sha256Hash
attribute and validation will be skipped when the entry is added (SHA256 validation is still performed).
Ontoserver instances can be configured to point to any number of upstream syndication feeds. Using the Syndication API, Ontoserver can then find and download supported FHIR Resource types as well as SNOMED CT and LOINC code systems.
Since Ontoserver 6.2, FHIR Packages are supported as a content type. When Ontoserver imports a FHIR Package, it imports all the supported FHIR Resources in the top-level /package folder that are not already present. This approach follows the intent of the FHIR package format.
Update semantics
When attempting to load an item that is identified by a canonical
(the combination of a URI and version) there are some key conditions that are checked:
- If at least one Resource with the same URI and version already exists, then its
date
field is checked, and ONLY IF it is earlier than thedate
of the incoming Resource then the existing Resource (with the latestdate
) is updated. - Otherwise, if there are any resources with the same URI, then a NEW Resource instance is created, possibly changing the
id
of the Resource, and any existing resources with the same URI are left untouched. This results in multiple resources with the same URI but different versions. - Finally, if there are no resources with the same URI, then a new Resource is created and the
id
is preserved (if possible).
For items that do not have identity like this (e.g., NamingSystem
), the Resource's id
is used for identity and again the date
field is used to determine where the existing Resource instance is updated or not.
Preload
Ontoserver also supports preload syndication feeds, where the content of one or more syndication feeds is imported when the server is started or restarted. While one use-case is to support starting with a pre-defined content-set, it is also the mechanism used to populate a read-only Ontoserver instance.
Multiple preload URLs can be specified with the atom.preload.feedLocation
property, and when the preload process is triggered Ontoserver will import the union of entries in the feeds.
If the instance already contains items in the feed they will be skipped.
This process may also be triggered on a running Ontoserver instance without a restart. This is particularly useful if the preload feed content has changed, so that new content can be pulled into the Ontoserver instance without interruptions.
Preload configuration details can be found here.
Scheduled preload
Preloading can be scheduled using a cron syntax to specify the schedule on the atom.preload.schedule.cron
property.
This is useful if a read-only Ontoserver instance is connected to a read/write Ontoserver instance using a continuous delivery model.
The read-only Ontoserver instance can be configured to regularly pull newly available content from the read/write server’s syndication feed which can have content promoted to it as it becomes available.