Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Snow Owl requires Java 11 or newer version. Specifically as of this writing, it is recommended that you use JDK (Oracle of OpenJDK is preferred) version 11.0.2. Java installation varies from platform to platform so we won’t go into those details here. Oracle’s recommended installation documentation can be found on Oracle’s website. Suffice to say, before you install Snow Owl, please check your Java version first by running (and then install/upgrade accordingly if needed):
Once we have Java set up, we can then download and run Snow Owl. The binaries are available at the Releases pages. For each release, you have a choice among a zip or tar archive, a DEB or RPM package.
For simplicity, let's use a zip file.
Let's download the most recent Snow Owl release as follows:
Then extract it as follows:
It will then create a bunch of files and folders in your current directory. We then go into the bin directory as follows:
And now we are ready to start the instance:
If everything goes well with the installation, you should see a bunch of log messages that look like below:
Snow Owl is both a simple and complex product. We’ve so far learned the basics of what it is, how to look inside of it, and how to work with it using some of the available APIs. Hopefully this tutorial has given you a better understanding of what Snow Owl is and more importantly, inspired you to further experiment with the rest of its great features!
There are a few concepts that are core to Snow Owl. Understanding these concepts from the outset will tremendously help ease the learning process.
A terminology (also known as code system, classification and/or ontology) defines and encapsulates a set of terminology components (eg. set of codes with their meanings) and versions. A terminology is identified by a unique name and stored in a repository. Multiple code systems can exist in a single repository besides each other as long as their name is unique.
A terminology component is a basic element in a code system with actual clinical meaning or use. For example in SNOMED CT, the Concept, Description, Relationship and Reference Set Member are terminology components.
A version that refers to an important snapshot in time, consistent across many terminology components, also known as tag or label. It is often created when the state of the terminology is deemed to be ready to be published and distributed to downstream customers or for internal use. A version is identified by its version ID (or version tag) within a given code system.
A repository manages changes to a set of data over time in the form of revisions. Conceptually very similar to a source code repository (like a Git repository), but information stored in the repository must conform to a predefined schema (eg. SNOMED CT Concepts RF2 schema) as opposed to storing it in pure binary or textual format. This way a repository can support various full-text search functionalities, semantical queries and evaluations on the stored, revision-controlled terminology data.
A repository is identified by a name and this name is used to refer to the repository when performing create, read, update, delete and other operations against the revisions in it. Repositories organize revisions into branches and commits.
A revision is the basic unit of information stored in a repository about a terminology component or artifact. It contains two types of information:
one is the actual data that you care about, for example a single code from a code system with its meaining and properties.
the other is revision control information (aka revision metadata). Each revision is identified by a random Universally Unique IDentifier (UUID) that is assigned when performing a commit in the repository. Also, during a commit each revision is associated with a branch and timestamp. Revisions can be compared, restored, and merged.
A set of components under version control may be branched or forked at a point in time so that, from that time forward, two copies of those components may develop at different speeds or in different ways independently of each other. At later point in time the changes made on one of these branches can be merged into the other.
Branches are organized into hierarchies like directories in file systems. A child branch has access to all of the information that is stored on its parent branch up until its baseTimestamp, which is the time the branch was created. Each repository has a predefined root branch, called MAIN
.
A commit represents a set of changes made against a branch in a repository. After a successful commit, the changes made by the commit are immediately available and searchable on the given branch.
A merge/rebase is an operation in which two sets of changes are applied to set of components. A merge/rebase always happens between two branches, denoting one as the source and the other as the target of the operation.
Snow Owl® is a highly scalable, open source terminology server with revision-control capabilities and collaborative authoring platform features. It allows you to store, search and author high volumes of terminology artifacts quickly and efficiently.
Features include:
Revision-controlled authoring
Maintains multiple versions (including unpublished and published) for each terminology artifact and provides APIs to access them all
Independent work branches offer work-in-process isolation, external business workflow integration and team collaboration
SNOMED CT and others
Full SNOMED CT terminology support (full RF2 support, ECL v1.3, SCG 2.3.1, ETL 1.0, Reference Sets, OWL Axioms, OWL 2 EL/DL support, SNOMED Query Language draft specification)
With its modular design, the server can maintain multiple terminologies (including local codes, mapping sets, value sets)
Various set of APIs
SNOMED CT API (RESTful and native Java API)
FHIR API
CIS API
Highly extensible and configurable
Simple to use plug-in system makes it easy to develop and add new terminology tooling/API or any other functionality
Connect to your existing cluster or use the embedded instance
All the power of Elasticsearch is available (full-text search support, monitoring, analytics and many more)
Once you have downloaded the appropriate package:
Run bin/snowowl.sh
on unix, or bin/snowowl.bat
on windows
Run curl http://localhost:8080/snowowl/admin/info
Navigate to http://localhost:8080/snowowl
Snow Owl uses Maven for its build system. In order to create a distribution, simply run the following command in the cloned directory.
The distribution packages can be found in the releng/com.b2international.snowowl.server.update/target
folder, when the build is complete.
To run the test cases, use the following command:
These instructions will get Snow Owl up and running on your local machine for development and testing purposes.
Snow Owl is an Equinox-OSGi based server. To develop plug-ins for Snow Owl you need to use Eclipse as IDE:
Required Eclipse plug-ins (install the listed features via Help
-> Install New Software...
):
Note: you may have to untick the Show only the latest versions of the available software
checkbox to get older versions of a feature. Please use the exact version specified below, not the latest point release.
MWE 2 language SDK 2.11.2 (MWE)
Xtend IDE 2.21.0 (Xtext)
Xtext Complete SDK 2.21.0 (Xtext)
Make sure you have the following preferences enabled/disabled.
Plug-in development API baseline errors is set to Ignored (Preferences > Plug-in Development > API Baselines)
The Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-clean-plugin:2.5:clean type of errors can be ignored or changed to Warnings in Preferences->Maven->Errors/Warnings.
Set the workspace encoding to UTF-8 (Preferences->General->Workspace)
Set the line endings to Unix style (Preferences->General->Workspace)
Make sure the Git line endings are set to input (Preferences->Team->Git->Configuration - add key if missing core.autocrlf = input)
Import all projects into your Eclipse workspace and wait for the build to complete
Select all projects and hit Alt
+ F5
and trigger an update to all Maven projects manually (to download dependencies from Maven)
Open the target-platform/target-platform-local.target
file
Wait until Eclipse resolves the target platform (click on the Resolve
button if it refuses to do so) and then click on Set as Active Target platform
Wait until the build is complete and you have no compile errors
Launch snow-owl-oss
launch configuration in the Run Configurations menu
Navigate to http://localhost:8080/snowowl
Many other organizations have directly and indirectly contributed to Snow Owl, including: Singapore Ministry of Health; American Dental Association; University of Nebraska Medical Center (USA); Federal Public Service of Public Health (Belgium); Danish Health Data Authority; Health and Welfare Information Systems Centre (Estonia); Department of Health (Ireland); New Zealand Ministry of Health; Norwegian Directorate of eHealth; Integrated Health Information Systems (Singapore); National Board of Health and Welfare (Sweden); eHealth Suisse (Switzerland); and the National Library of Medicine (USA).
Now let's take a peek at our code systems:
And the response:
Which means, we have a single Code System in Snow Owl, called SNOMED CT
. It has been created by the SNOMED CT module by default on the first startup of your instance. A Code System lives in a repository and its working branchPath
is currently associated with the default MAIN
branch in the snomedStore
repository.
Now let's import an official SNOMED CT RF2 SNAPSHOT
distribution archive so that we can further explore the available SNOMED CT APIs.
And the response:
The import configuration specifies the type
of the RF2 release (in this case SNAPSHOT
) and the target branchPath
where the content should imported. The response returns an empty body along with a Location
header with a URL pointing to the created import configuration. You can extract the last part of the URL to get the import configuration ID which can be used to retrieve the configuration and to upload the actual archive and start the import.
Depending on the size and type of the RF2 package, hardware and Snow Owl configuration, RF2 imports might take hours to complete. Official SNAPSHOT distributions can be imported in less than 30 minutes by allocating 6 GB of heap size to Snow Owl and configuring Snow Owl to use a solid state disk for its data directory.
The import will start automatically when you upload the archive to the /imports/:id/archive
endpoint:
The import process is asynchronous and its status can be checked by sending a GET request to the /imports/:id
endpoint with the extracted import identifier as follows:
And the response:
The status
field describes the current state of the import, while the startDate
and completionDate
fields specify start
and completion
timestamps.
Built on top of (highly scalable, distributed, open source search engine)
-
-
-
-
This distribution only includes features licensed under the Apache 2.0 license. To get access to the full set of features, please contact .
View the detailed release notes .
Not the version you're looking for? View .
NOTE: You need to have a recent version of Java installed (Java 11+, ).
See ,
Use latest Eclipse IDE for Eclipse Committers package:
Xtext/Xtend ()
Maven integration ()
Please see for details.
Our use . You can find a chronologically ordered list of notable changes in .
This project is licensed under the Apache 2.0 License. See for details and refer to for additional licensing notes and uses of third-party components.
In March 2015, generously licensed the Snow Owl Terminology Server components supporting SNOMED CT. They subsequently made the licensed code available to their and the global community under an open-source license.
In March 2017, licensed the Snow Owl Terminology Server to support the mandatory adoption of SNOMED CT throughout all care settings in the United Kingdom by April 2020. In addition to driving the UK’s clinical terminology efforts by providing a platform to author national clinical codes, Snow Owl will support the maintenance and improvement of the dm+d drug extension which alone is used in over 156 million electronic prescriptions per month. Improvements to the terminology server made under this agreement will be made available to the global community.
To import an RF2 archive you must first create an import configuration using the as follows: