Create your first Resource

Snow Owl is now running but does not contain any content whatsoever. To be able to import or author terminology data a resource has to be created beforehand. There are three major resource types in the system:

  • Code Systems (e.g. SNOMED CT, ATC, LOINC, ICD-10)

  • Value Sets

  • Concept Maps

For the sake of this quick start guide, we will follow along the path of how to create a SNOMED CT code system, import content and query concepts based on different criteria.

Create a Code System

If we take a look at eg. the list of known code systems, we get an empty result set:

curl -u "test:test" http://localhost:8080/snowowl/codesystems?pretty
{
  "items" : [ ],
  "limit" : 0,
  "total" : 0
}

To import SNOMED CT content, we have to create a code system first using the following request:

curl -X POST \
-u "test:test" \
-H "Content-type: application/json" \
http://localhost:8080/snowowl/codesystems \
-d '{
  "id": "SNOMEDCT",
  "url": "http://snomed.info/sct/900000000000207008",
  "title": "SNOMED CT International Edition",
  "description": "SNOMED CT International Edition",
  "status": "active",
  "copyright": "(C) 2023 International Health Terminology Standards Development Organisation 2002-2023. All rights reserved.",
  "contact": "https://snomed.org",
  "oid": "2.16.840.1.113883.6.96",
  "toolingId": "snomed",
  "settings": {
    "moduleIds": [
      "900000000000207008",
      "900000000000012004"
    ],
    "locales": [
      "en-x-900000000000508004",
      "en-x-900000000000509007"
    ],
    "languages": [
      {
        "languageTag": "en",
        "languageRefSetIds": [
          "900000000000509007",
          "900000000000508004"
        ]
      },
      {
        "languageTag": "en-us",
        "languageRefSetIds": [
          "900000000000509007"
        ]
      },
      {
        "languageTag": "en-gb",
        "languageRefSetIds": [
          "900000000000508004"
        ]
      }
    ],
    "publisher": "SNOMED International",
    "namespace": "373872000",
    "maintainerType": "SNOMED_INTERNATIONAL"
  }
}'

Use of SNOMED CT is subject to additional conditions not listed here, and the full copyright notice has been shortened for brevity in the request above. Please see here for details.

The request body includes:

  • The code system identifier (SNOMEDCT)

  • Various pieces of metadata offering a human-readable title, status, contact information, URL and OID for identification, etc.

  • The tooling identifier snomed that points to the repository that will store content

  • Additional code system settings stored as key-value pairs

If the request succeeds the server returns a "204 No Content" response. We can verify that the code system has been registered correctly with the following request:

curl -u "test:test" http://localhost:8080/snowowl/codesystems/SNOMEDCT?pretty

The expected response is:

{
  "id": "SNOMEDCT",
  "url": "http://snomed.info/sct/900000000000207008",
  "title": "SNOMED CT International Edition",
  "language": "en",
  ...
  "branchPath": "MAIN/SNOMEDCT",
  ...
}

In addition to the submitted values, you will find that additional administrative properties also appear in the output. One example is branchPath which specifies the working branch of the code system within the repository.

The code system now exists but is empty. To verify this claim, we can list concepts using either Snow Owl's native API tailored for SNOMED CT or the standardized FHIR API for a representation that is uniform across different kinds of code systems – for the sake of simplicity, we will use the former in this example.

The following request can be used to list all available concepts in a SNOMED CT code system:

curl -u "test:test" http://localhost:8080/snowowl/snomedct/SNOMEDCT/concepts?pretty

The expected response is:

{
  "items": [ ],
  "limit": 50,
  "total": 0
}

At this point, we can either import or create content in the SNOMED CT code system. Follow the instructions on the next page to import your SNOMED CT RF2 release into Snow Owl.

Last updated