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) 2025 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": "INT",
    "namespaceConceptId": "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, mostly used as fall back values when not explicitly specified in a given API call targeting this resource

If the request succeeds the server returns a 201 Created response with a Location header value pointing to the created terminology resource's location.

We can verify that the code system has been registered correctly when following that Location header value (ℹ️ NOTE: pretty is added to the request to format the response):

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 on the next page.

Last updated