Page tree
Skip to end of metadata
Go to start of metadata

This page hopes to provide the steps to create a managed service extension (also relevant for the training server).

  1. First step is to create a new RF2 file containing the following new concepts and their relevant components (description, relationships, language refset acceptability). The new ID's to be used can be found HERE. More details on what this involves can be found on the New extension RF2 creation page:
    1. Module concept 
    2. Language reference set

For the purpose as an example, this is the RF2 file which is used for SNOMEDLand for an example blank RF2 file to be used on the training server

In order to post to an endpoint (instead of using the web ui) the command would be something like:

curl -u Username:Password -X POST https://

So as an example with step 4 that might look like:

curl -u Username:Password -X POST -F 'file=@/path/to/zipfile/'"

Supporting systems setup

Before the termServer setup, please create an INFRA ticket and assign to Michael Chu, requesting him to setup the following to enable the Release:

  1. Create new release center in the SRS, and add to Jenkins drop down options 
  2. Create new assertion group for the new extension in the RVF, containing any new product-specific rules to the new group (eg) if someone has specifically asked for a validation check on the new Norway refsets, etc

Terminology server setup

On the relevant terminology server instance the following steps should be followed, in order:

1. Create a new branch using the /snowowl/snomed-ct/v2/branches POST endpoint with the following request parameter:

   "metadata": {
    "assertionGroupNames": "common-authoring",
    "defaultNamespace": "1000003", <add the relevant namespace here>
    "dependencyRelease": "20170731", <modify to reflect the relevant release here>
    "codeSystemShortName": "SNOMEDCT-LAND", <modify for the relevant codeSystemShortName - this is usually in the format SNOMEDCT-<2 letter ISO country code, i.e. BE for Belgium>
    "defaultModuleId": "900000000000012004", <this is the international module at this stage, but will be modified once the data has been imported>
	"languageSearch": "en-us;q=0.8,en-gb;q=0.5", <this property should be provided in the case that there are multiple or no language refsets associated with the extension. It provides a default search weighting. Currently this is used within BE and US>
    "requiredLanguageRefset.zz": "231000003105", <this key contains the 2 letter ISO language code. The value is the concept id of the language reference set. This is applicable to extensions with a single required language refset.>
	"requiredLanguageRefsets": [
        "fr": "21000172104",
        "default": "true"
        "nl": "31000172101",
        "default": "true"
    ] <Alternatively for extensions with multiple language resets associated, an array should be provided as shown here. The first property contains the language code for the language as it's property name, the value being the refsetId. The default property should default to true (it's present for forward compatibility at this stage. The example given is for Belgium)>
    "shortname": "ld" <this must be 2 letters and should match the prefix of the RVF previous release archive>
  "parent": "MAIN/2017-07-31",
  "name": "SNOMEDCT-LAND" <this usually should match up to the codeSystemShortName>

Or paste the above into (using uat-ms-authoring as an example (change to suit instance name)) :!/branches/createBranch

2. Create a new codesystem using the /snowowl/admin/codesystems POST endpoint with the following request parameter:

      "oid": "2.16.840.1.113883.6.965", <this is simply modified by adding 1 to the final number - i.e. the next one would be 2.16.840.1.113883.6.966>
      "name": "SNOMED CT SnomedLand Edition",
      "shortName": "SNOMEDCT-LAND", <this should matched the codeSystemShortName above>
      "organizationLink": "",
      "primaryLanguage": "ENG",
      "citation": "SNOMED CT contributes to the improvement of patient care by underpinning the development of Electronic Health Records that record clinical information in ways that enable meaning-based retrieval. This provides effective access to information required for decision support and consistent reporting and analysis. Patients benefit from the use of SNOMED CT because it improves the recording of EHR information and facilitates better communication, leading to improvements in the quality of care.", <this is generally the same for every extension>
      "branchPath": "MAIN/2017-07-31/SNOMEDCT-LAND", <the path of the branch created above>
      "iconPath": "icons/snomed.png",
      "terminologyId": "com.b2international.snowowl.terminology.snomed",
      "repositoryUuid": "snomedStore",
      "extensionOf": "SNOMEDCT"

Or paste the above into (using uat-ms-authoring as an example (change to suit instance name)) :!/code-systems/createCodeSystem

3. Create a new blank version of the new codesystem. A previous version is required for the authoring platform to work as normal. Use the /snowowl/admin/codesystems/{shortName}/versions POST endpoint with something like the following request body:

  "effectiveDate": "20171001",
  "description": "Empty first version.",
  "version": "2017-10-01"

Or paste the above into (using uat-ms-authoring as an example (change to suit instance name)) :!/code-systems/createVersion

4. Next an import needs to be created, to import onto the branch created in 1, using the /snowowl/snomed-ct/v2/imports POST endpoint using the following request parameter, modifying the relevant parameters with the values previously used:

  "createVersions": false,
  "codeSystemShortName": "SNOMEDCT-LAND",
  "branchPath": "MAIN/2017-07-31/SNOMEDCT-LAND",
  "type": "DELTA"

Or paste the above into (using uat-ms-authoring as an example (change to suit instance name)) :!/imports/create

This will return an import identifier to be used in the next step.

4. Once created, to upload the file use the  /snowowl/snomed-ct/v2/imports/<id>/archive POST passing the Import id created in Step 3 and the RF2 file initially created.

or using uat-ms-authoring as an example (change to suit instance name) :!/imports/startImport

5. The URL /snowowl/snomed-ct/v2/imports/<id> can be used to track the progress of the import.

6. Once completed, the branch metadata needs to changed again using the /snowowl/snomed-ct/v2/branches/{path} PUT endpoint passing the branch path (i.e. MAIN/2017-07-31/SNOMEDCT-LAND) with the following request parameter:

 "metadata": {
 "assertionGroupNames": "common-authoring",
 "defaultNamespace": "1000003", 
 "previousRelease": "20171001", <this should be added, where the date should match the effectiveDate of the empty codesystem version>
 "dependencyRelease": "20170731",
 "codeSystemShortName": "SNOMEDCT-LAND",
 "defaultModuleId": "221000003108", <this should be added, where the new module identifier (found in the RF2 file) should be entered>
 "requiredLanguageRefset.zz": "231000003105",
 "shortname": "ld"

Or paste the above into (using uat-ms-authoring as an example (change to suit instance name)) :!/branches/updateBranch

7. Once completed, go the project in the authoring front end, rebase the project and then classify before promoting the project again. If the project has not yet been created then this can be done by following instructions HERE

8. You will then need to inform devops as they will need to add the following to the relevant hostvar in ansible for deployment: 

  1. local_jiraFilter: "DK,SE,US,BE" Note you will have to run an update of both Termserver and Authoring services so this new string is written to the relevant config files or else the new extension will not appear.
  2. nginx_maint_hostnames: "''" for use with the maintainence pages for upgrading in the future you will need to device on a url e.g. "be-authoring" for the extension
  3. Assuming you have done the above then devops need to add a entry into the dns for that.

9. You will also need to ensure the new extension has the necessary permissions to allow the authoring platform to request new ID's from CIS, this would have been done in PROD to create the ID's for Step 1.

10. Drools will need to be updated with any country specific assertion groups. Instructions on how to do this HERE - (Michael Chu are you able to add a confluence page to describe how this is updated?)

11. Classification Service will need to be configured. Instructions to do this are HERE

  • No labels