Configuration API (REST) Version 1.0

DRAFT

Overview

Identifiers in the URL are to be managed externally.  As such, internal consistency will hold insofar as resources are consistently linked in external sources.

PUT is used for both update and create, as the client knows beforehand what the configuration URL will be.

PUT is also used for collection replacement.  Effectively, is the collection URL is used to PUT data, all configuration data that exist for the given data element will be removed and replaced with the data from the input collection.

POST may still used for creation; the identifier for the POST is extracted from the input XML, and used to build the URL; this will ensure consistency with the URL used with PUT.

Concept Determination Methods

/config/v1/conceptdeterminationmethods

MethodMime TypeRequiresReturnsStatus Code(s)Description
GETapplication/xml conceptDeterminationMethods200 (OK)Provides the list of supported ConceptDeterminationMethods.
POSTapplication/xmlconceptDeterminationMethod 

201 (Created)

409 (Conflict)

Adds a new ConceptDeterminationMethod.

Returns an error (status code 409) if the ConceptDeterminationMethod already exists.

PUTapplication/xmlconceptDeterminationMethods 204 (No Content)Replaces the entire existing ConceptDeterminationMethod collection with the collection provided in the request.

 

/config/v1/conceptdeterminationmethods/<cdmId>

MethodMime TypeRequiresReturnsStatus Code(s)Description
GET

application/xml

cdmIdconceptDeterminationMethod200 (OK)

Provides the ConceptDeterminationMethod associated with the given CDMId, or an error if it is not found.

PUT

application/xml

cdmId

conceptDeterminationMethod

 

201 (Created)

204 (No Content)

Adds or Updates the ConceptDeterminationMethod associated with the provided CDMId.
DELETE cdmId 

204 (No Content)

404 (Not Found)

Deletes the ConceptDeterminationMethod associated with the provided CDMId.

Returns an error if it is not found.

The cdmId is a unique identifier to each ConceptDeterminationMethod.  The cdmId contains three elements separated by a carat (^).  The three elements must be presented in the following order:

  1. Code System (optional)
  2. Code (required)
  3. Version (optional)

The following are examples in the expected format:

  • NQF^C45^1.0
  • ^C2511^1.0 (this example contains no Code System)

 

Execution Engines

/config/v1/executionengines

MethodMime TypeRequiresReturnsStatus Code(s)

Description

GETapplication/xml 

executionEngines

200 (OK)Provides the list of ExecutionEngine definitions associated with the service.
POSTapplication/xmlexecutionEngine

 

201 (Created)

409 (Conflict)

Adds a new ExecutionEngine definition.

Returns an error (status code 409) if the ExecutionEngine definition already exists.

PUTapplication/xmlexecutionEngines 204 (No Content)Replaces the entire existing ExecutionEngine collection with the collection provided in the request.

 

/config/v1/executionengines/<executionEngineId>

MethodMime TypeRequiresReturnsStatus Code(s)

Description

GET

application/xml

executionEngineId

executionEngine

 

200 (OK)

204 (No Content)

Provides the ExecutionEngine metadata associated with the provided ExecutionEngineId.
PUTapplication/xml

executionEngineId

executionEngine

 

200 (OK)

204 (NoContent)

Adds or Updates the ExecutionEngine definition.
DELETE 

executionEngineId

 204 (No Content)Deletes an ExecutionEngine.

The executionEngineId is a unique identifier for each ExecutionEngine.  The executionEngineId is the fully-qualified class name of the execution engine.  The v1.3 instance of OpenCDS uses a DroolsAdapter, and thus the executionEngineId is as follows:

  • org.opencds.service.drools.v55.DroolsAdapter


Knowledge Modules

/config/v1/knowledgemodules

MethodMime TypeRequiresReturnsStatus Code(s)Description

GET

application/xml 

knowledgeModules

200 (OK)


Provides the list of configured KnowledgeModules.
POSTapplication/xmlknowledgeModule

 

201 (Created)

409 (Conflict)

Adds a new KnowledgeModule.

Returns an error (status code 409) if the KnowledgeModule already exists.

PUTapplication/xmlknowledgeModules 204 (No Content)Replaces the entire existing KnowledgeModule collection with the collection provided in the request.

/config/v1/knowledgemodules/<kmId>

MethodMime TypeRequiresReturnsStatus Code(s)Description
GETapplication/xmlkmId

knowledgeModule

200 (OK)

404 (Not Found)

Provides the KnowledgeModule metadata, or returns an error if it does not exist.
PUTapplication/xml

kmId

knowledgeModule

 

201 (Created)

204 (No Content)

Adds or Updates the KnowledgeModule.
DELETE kmId

 

204 (No Content)

404 (Not Found)

Delete the KnowledgeModule associated with the given KMId, along with its associated KnowledgePackage and SupportingData.

Returns an error if not found.

The kmId is a unique identifier to each KnowledgeModule.  The kmId contains three elements separated by a carat (^).  The three required elements must be presented in the following order:

  1. scopingEntityId
  2. businessId
  3. version

The following are examples in the expected format:

  • edu.utah^AHRQ_PSI_15^4.3.1
  • edu.utah^HEDIS_AMR^2014.0.0

 

Knowledge Package

/config/v1/knowledgemodules/<kmId>/package

MethodMime TypeRequiresReturnsStatus Code(s)Description
GETapplication/octet-streamkmId

package content

 

200 (OK)

404 (Not Found)

Returns the KnowledgePackage associated with the KnowledgeModule (KMId).

Returns an error if the KnowledgePackage or the KnowledgeModule is not found.

PUTapplication/octet-stream

kmId

package content

 

204 (No Content)

404 (Not Found)

Adds or Updates the KnowledgePackage associated with the KnoweldgeModule (KMId).

Returns an error if the KnowledgeModule is not found.

DELETE kmId

 

204 (No Content)

404 (Not Found)

Deletes the KnowledgePackage associated with the KnowledgeModule (KMId).

Returns an error if the KnowledgePackage or KnowledgeModule is not found.


Supporting Data

/config/v1/knowledgemodules/<kmId>/supportingdata

MethodMime TypeRequiresReturnsStatus Code(s)Description
GETapplication/xmlkmId

supportingData

200 (OK)

404 (Not Found)

Returns the list of SupportingData (metadata) associated with the given KnowledgeModule (KMId), or an error if the KnowledgeModule is not found.
POSTapplication/xml

kmId

supportingData

supportingData

201 (Created)

409 (Conflict)

404 (Not Found)

Creates the SupportingData metadata associated with the KnowledgeModule (KMId).

Returns an error (status code 409) if the metadata already exists.

Returns an error (status code 404) if the KnowledgeModule is not found.

 

/config/v1/knowledgemodules/<kmId>/supportingdata/<supportingDataId>

MethodMime TypeRequiresReturnsStatus Code(s)Description
GETapplication/xml

kmId

supportingDataId

supportingData

 

200 (OK)

404 (Not Found) 

Returns the SupportingData metadata associated with the given KnowledgeModule (KMId) and SupportingData (SupportingDataId).

Returns an error (status code 404) if either the SupportingData or KnowledgeModule are not found.

PUTapplication/xml

kmId

supportingDataId

 

201 (Created)

204 (No Content)

404 (Not Found)

Updates the SupportingData metadata associated with the given KnowledgeModule (KMId) and SupportingData (SupportingDataId).

Returns an error (status code 404) if either the SupportingData or KnowledgeModule are not found.

DELETE 

kmId

supportingDataId

 

204 (No Content)

404 (Not Found)

Deletes the SupportingData metadata (and its package) associated with the givenKnowledgeModule (KMId) and SupportingData (SupportingDataId).

Returns an error (status code 404) if either the SupportingData or KnowledgeModule are not found.

The supportingDataId is a unique identifier for each SupportingData, and can be any chosen identifier.


/config/v1/knowledgemodules/<kmId>/supportingdata/<supportingDataId>/package

MethodMime TypeRequiresReturnsStatus Code(s)Description

GET

application/octet-stream

kmId

supportingDataId

package content

200 (OK)

404 (Not Found)

Returns the package associated with the given KnowledgeModule (KMId) and SupportingData (SupportingDataId).

Returns an error if either the SupportingData or KnowledgeModule are not found.

 PUTapplication/octet-stream 

kmId

supportingDataId

package content 

 

201 (Created)

204 (No Content)

404 (Not Found)

Adds or Creates the package associated with the given KnowledgeModule (KMId) and SupportingData (SupportingDataId).

 

Returns an error (status code 404) if either the SupportingData or KnowledgeModule are not found.

 DELETE 

kmId

supportingDataId 

 

204 (No Content)

404 (Not Found) 

Deletes the SupportingData package associated with the given KnowledgeModule (KMId) and SupportingData (SupportingDataId).

Returns an error (status code 404) if either the SupportingData or KnowledgeModule are not found.



Semantic Signifiers

/config/v1/semanticsignifiers

MethodMime TypeRequiresReturnsStatus Code(s)Description
GETapplication/xml 

semanticSignifiers

200 (OK)

Returns the list of SemanticSignifiers associated with the service.
POSTapplication/xmlsemanticSignifier

 

 

201 (Created)

409 (Conflict)

Adds a new SemanticSignifier.

Returns an error (status code 409) if the SemanticSignifier already exists.

PUTapplication/xmlsemanticSignifiers 204 (No Content)Replaces the entire existing SemanticSignifier collection with the collection provided in the request.

 

/config/v1/semanticsignifiers/<SSId>

MethodMime TypeRequiresReturnsStatus Code(s)Description
GETapplication/xmlssId

semanticSignifier

200 (OK)

404 (Not Found)

Returns the SemanticSignifier associated with the given SSId, or returns an error if it is not found.
PUTapplication/xml

ssId

semanticSignifier

 

201 (Created)

204 (No Content)

Adds or Updates the SemanticSignifier associated with the given SSId.

DELETE ssId

 

204 (No Content)

404 (Not Found)

Deletes the SemanticSignifier associated with the given SSId.

Returns an error (status code 404) if it is not found.

The ssId is a unique identifier to each SemanticSignifier.  The ssId contains three elements separated by a carat (^).  The three elements must be presented in the following order:

  1. scopingEntityId
  2. businessId
  3. version

The following is the ssId for the SemanticSignifier supported by OpenCDS v1.3:

  • org.opencds.vmr^VMR^1.0



Plugin Packages

/config/v1/pluginpackages

MethodMime TypeRequiresReturnsStatus Code(s)Description
GETapplication/xml 

pluginPackages

200 (OK)

Returns the list of PluginPackages associated with the service.
POSTapplication/xmlpluginPackage

 

 

201 (Created)

409 (Conflict)

Adds a new PluginPackage.

Returns an error (status code 409) if the PluginPackage already exists.

PUTapplication/xmlpluginPackages 204 (No Content)Replaces the entire existing PluginPackage collection with the collection provided in the request.

 

/config/v1/pluginpackages/<PPId>

MethodMime TypeRequiresReturnsStatus Code(s)Description
GETapplication/xmlppId

pluginPackage

200 (OK)

404 (Not Found)

Returns the PluginPackage associated with the given PPId, or returns an error if it is not found.
PUTapplication/xml

ppId

pluginPackage

 

201 (Created)

204 (No Content)

Adds or Updates the PluginPackage associated with the given PPId.

DELETE ppId

 

204 (No Content)

404 (Not Found)

Deletes the PluginPackage associated with the given PPId.

Returns an error (status code 404) if it is not found.

/config/v1/pluginpackages/<PPId>/jar

MethodMime TypeRequiresReturnsStatus Code(s)Description
GETapplication/octet-streamppId

package content (jar)

200 (OK)

404 (Not Found)

Returns the jar associated with the PluginPackage (PPId), or returns an error if it is not found.
PUTapplication/octet-stream

ppId

package content

 

204 (No Content)

404 (Not Found)

Adds or Updates the jar associated with the PluginPackage (PPId).

Returns an error if the PluginPackage is not found.

DELETE ppId

 

204 (No Content)

404 (Not Found)

Deletes the jar associated with the PluginPackage (PPId).

Returns an error (status code 404) if it is not found.

The ppId is a unique identifier to each PluginPackage.  The ppId contains three elements separated by a carat (^).  The three elements must be presented in the following order:

  1. scopingEntityId
  2. businessId
  3. version