Introduction
This document is a section of the LexEVS 6.0 Programmer's Guide.
The Value Set services are integrated parts of the LexEVS API. It provide three major functions:
- Administration- Ability to load, export and remove value set definitions
- Loader - Ability to load Value Set Definitions programmatically into the LexGrid repository using the domain objects that are available via the LexGrid logical model
- Exporter - Ability to export Value Set Definition and Value Set Resolution to a file in LexGrid XML format
Remove - Ability to remove Value Set Definition from the system
Note
These administration operations can be performed in LexEVS 'Local' environment only. This can not be performed using LexEVS Distributed environment.
- Query - Ability to apply user restrictions (ex: valueSet URI) and dynamically resolve the definitions at run time
- Resolve - Ability to resolve Value Set Definition dynamically against selected Coding Scheme Version(s) and return all the concepts belonging to the value set
The LexEVS Value Set Services expose the API particularly for the Value Set Definition elements of the LexGrid Logical Model. For more information on LexGrid model see the LexBig Model and Schema
LexEVSValueSetDefinitionServices Class Diagram
LexEVSValueSetDefinitionServices is the main interface for all the services provided by LexEVS Value Set API. Here is the class diagram of LexEVSValueSetDefinitionServices:
LexEVS Value Set Definition Services API
LexEVS Value Set Definition Services provides three major functions:
- Administraion function
- Query function and
- Resolve function
Each of these functions are described in following sections.
Administration Functions
LexEVS Value Set Definition Services provide s following administration functions:
- Load
- Export and
- Remove value set definitions.
Note
These administration operations can be performed in LexEVS 'Local' environment only. This can not be performed using LexEVS Distributed environment.
Loading Value Set Definitions
There are two methods that could be used to load Value Set Definitions:
- Loading Value Set Definition Object - This function provides the capability to load supplied ValueSetDefinition object into the system.
- Loading Value Set Definitions in file - This function provides the capability to load Value Set Definitions found in file that are in LexGrid XML format.
Loading Value Set Definition Object
This function provides the capability to load supplied ValueSetDefinition object into the system.
loadSetValueSetDefinition(ValueSetDefinition vsddef, String systemReleaseURI, Mappings mappings)
Description: | Loads supplied valueSetDefinition object. Optionally, it can assign the release URI and mappings (supported attributes like SupportedCodingScheme, SupportedConceptDomain, SupportedAssociation etc) to the valueSetDefinition being loaded. |
---|---|
Input: | org.LexGrid.valueSets.ValueSetDefinition vsdDef - (Mandatory) Value Set Definition object to be loaded. |
Output: | none |
Exception: | LBException |
Implementation Details: | Implementation:
|
Loading Value Set Definitions in File
This function provides the capability to load Value Set Definitions found in file that are in LexGrid XML format.
loadValueSetDefinition(String xmlFileLocation, boolean failOnAllErrors)
Description: | Loads valueSetDefinitions found in input XML file. The input XML file should in LexGrid format i.e. the contents should confirm to LexGrid valueSets schema [ |
---|---|
Input: | java.lang.String xmlFileLocation - (Mandatory) File containing ValueSetDefinitions in LexGrid XML format. |
Output: | none |
Exception: | LBException |
Implementation Details: | Implementation:
|
Export Value Set
There are two export functions available :
1. Export Value Set Definition - This function provides the capability to export Value Set Definition to a file in LexGrid XML format. This will be helpful if there is a need to import this exported Value Set Definition in different instance of LexEVS.
2. Export Value Set Resolution (Expanded Value Set) - This function provides the capability to resolve the Value Set Definition and exports the resolved(expanded) contents as a LexGrid Coding Scheme in XML format.
Export Value Set Definition
This function provides the capability to export Value Set Definition to a file in LexGrid XML format. This will be helpful if there is a need to import this exported Value Set Definition in different instance of LexEVS.
exportValueSetDefinition(URI valueSetDefURI, String valueSetDefinitionRevisionId, String xmlFullPathName, boolean overwrite, boolean failOnAllErrors)
Description: | Export Value Set Definition to a file in LexGrid XML format. |
---|---|
Input: | java.net.URI valueSetDefinitionURI - (Mandatory) the URI of value set definition to be exported. boolean overwrite - True: to override the existing file. boolean failOnAllErrors - True: stops exporting if any error. | |
Output: | none |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
Export Value Set Resolution
This function provides the capability to export Value Set Resolution (Expanded Value Set) to a file in LexGrid XML format as a Coding Scheme. This will be helpful if there is a need to import the contents of a value set as a separate Coding Scheme. The URI of the Coding Scheme will be set to URI of Value Set Definition being exported. And all the contents of the value set will be represented as an entities within that Coding Scheme.
exportValueSetResolution(URI valueSetDefinitionURI, String valueSetDefinitionRevisionId, URI exportDestination, AbsoluteCodingSchemeVersionReferenceList csVersionList, String csVersionTag, boolean overwrite, boolean failOnAllErrors)
Description: | Export Value Set Resolution to a file in LexGrid XML format as a Coding Scheme. |
---|---|
Input: | java.net.URI valueSetDefinitionURI - (Mandatory) the URI of value set definition to be exported. |
Output: | none |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
Remove Value Set Definition
Below is the function to remove value set definition from the system.
removeValueSetDefinition(URI valueSetDefinitionURI)
Description: | Removes supplied value set definition from the system. |
---|---|
Input: | java.net.URI valueSetDefinitionURI - (Mandatory) the URI of value set definition to be removed. |
Output: | none |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
Query Functions
Here are some of the query functions that can be run against value set definitions using the LexEVS Value Set Definition Services.
Validate XML Resources
Function to perform validation of source XML file without loading.
validate(URI xmlFileLocation, int valicationLevel)
Description: | Performs validation of the candidate resource without loading data. |
---|---|
Input: | java.net URI xmlFileLocation - (Mandatory) File containing ValueSetDefinitions in LexGrid XML format.
|
Output: | none |
Exception: | Org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
isEntityInValueSet
There are two methods to check if supplied concept code is part of supplied value set definition.
isEntityInValueSet(String entityCode, URI valueSetDefinitionURI, String valueSetDefinitionRevisionId, String versionTag)
Description: | Determine whether the supplied entity code is a valid entity code somewhere in the supplied value set definition. This function is intended for use with simple value set definition that are drawn from a single coding scheme where most parameters can be defaulted. |
---|---|
Input: | java.lang.String entityCode - (Mandatory) the entity code to search for |
Output: | org.LexGrid.LexBIG.DataModel.Core.AbsoluteCodingSchemeVersionReference - coding scheme and version if the entityCode is valid, null otherwise |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
isEntityInValueSet(String entityCode, URI entityCodeNamespace, URI valueSetDefinitionURI, String valueSetDefinitionRevisionId, AbsoluteCodingSchemeVersionReferenceList csVersionList, String versionTag)
isEntityInValueSet(String entityCode, URI entityCodeNamespace, URI valueSetDefinitionURI, String valueSetDefinitionRevisionId, AbsoluteCodingSchemeVersionReferenceList csVersionList, String versionTag)
Description: | Similar to the previous method, this method determines if the supplied entity code and entity namespace is a valid result for the supplied value set definition when resolved against the supplied Coding Scheme Version or Tag. |
---|---|
Input: | java.lang.String entityCode - (Mandatory) the entity code to search for |
Output: | org.LexGrid.LexBIG.DataModel.Core. AbsoluteCodingSchemeVersionReference - The codingScheme URI and version of that asserts that the code is in the value set |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
listValueSetsWithEntityCode
Returns all the value set definition uris that contains supplied entity code.
listValueSetsWithEntityCode(String entityCode, URI entityCodeNamespace, AbsoluteCodingSchemeVersionReferenceList csVersionList, String versionTag)
Description: | Returns all the value set definition uris that contains supplied entity code. |
---|---|
Input: | java.lang.String entityCode - (Mandatory) the entity code to search for |
Output: | java.util.List<String> - list of value set definition URIs that contain supplied entity code |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
getCodedNodeSetForValueSetDefinition
Returns unresolved CodedNodeSet populated using definition entries in the value set definition.
getCodedNodeSetForValueSetDefinition(URI valueSetDefinitionURI, String valueSetDefinitionRevisionId, AbsoluteCodingSchemeVersionReferenceList csVersionList, String csVersionTag)
Description: | Returns unresolved CodedNodeSet populated using definition entries in the value set definition. |
---|---|
Input: | java.net.URI valueSetDefinitionURI - (Mandatory) the URI of the value set definition |
Output: | org.lexgrid.valuesets.dto.ResolvedValueSetCodedNodeSet - Unresolved CodedNodeSet populated using definition entries in the value set definition. |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
isSubSet
This method checks if childValueSetDefinition is a sub set of parentValueSetDefinition.
isSubSet(URI childValueSetDefinitionURI, URI parentValueSetDefinitionURI, AbsoluteCodingSchemeVersionReferenceList csVersionList, String versionTag)
Description: | Checks whether childValueSetDefinition is a sub set of parentValueSetDefinition |
---|---|
Input: | java.net.URI childValueSetDefinitionURI - (Mandatory) child value set definition URI |
Output: | boolean - YES, if all the elements of the child value set are in the parent value set. NO otherwise. |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
getValueSetDefinition
Utility method that returns value set definition object for the supplied value set URI.
getValueSetDefinition(URI valueSetDefinitionURI, String valueSetDefinitionRevisionId)
Description: | Returns value set definition object for the supplied value set definition URI. |
---|---|
Input: | java.net.URI valueSetDefinitionURI - (Mandatory) value set definition URI |
Output: | org.LexGrid.valueSets.ValueSetDefinition - value set definition object |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
listValueSetDefinitions
Utility method that lists all the URI's of the value set definition(s) for the supplied value set definition name. If the name is null, returns everything. If the name is not null, returns the value set definition(s) that have the assigned name.
listValueSetDefinitions(String valueSetDefinitionName)
Description: | Returns the URI's of the value set definition(s) for the supplied name. If the name is null, returns everything. If the name is not null, returns the value set definition(s) that have the assigned name. Note Plural because there is no guarantee of Value Set Definition name uniqueness. If the name is the empty string "", returns all unnamed valueSetDefinition(s). |
---|---|
Input: | java.lang.String valueSetDefinitionName - (Optional) name of the value set definition. If null, returns URIs all the value set definition(s) in the system, if empty string "", returns all unnamed value set definition URIs. If name is provided, returns value set definition uris with the name that matches supplied valueSetDefinitionName. |
Output: | java.util.List<String> - List of matching value set definition uris |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
listValueSetDefinitionURIs
Utility method that lists all the URI's of the value set definition(s) that are loaded in the system.
listValueSetDefinitionURIs()
Description: | Returns all the URI's of the value set definition(s) that are loaded in the system. |
---|---|
Input: | none |
Output: | java.util.List<String> - List of all the value set definition uris available in the system |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
getAllValueSetDefinitionsWithNoNames
This method returns all the value set definition URI's that contains no names.
getAllValueSetDefinitionsWithNoNames()
Description: | Returns the URI's of all unnamed value set definition(s). |
---|---|
Input: | none |
Output: | java.util.List<String> - List of all unnamed value set definitions URI's |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
getValueSetDefinitionEntitiesForTerm
This method resolves the supplied value set definition and returns only those concept codes that matches the supplied term.
getValueSetDefinitionEntitiesForTerm(String term, String matchAlgorithm, URI valueSetDefinitionURI, AbsoluteCodingSchemeVersionReferenceList csVersionList, String versionTag)
Description: | Resolves the value set definition supplied and restricts it to the term and matchAlgorith supplied. The returned object ResolvedValueSetCodedNodeSet contains the codingScheme URI and Version that was used to resolve and the CodedNodeSet. Note The CodedNodeSet is unresolved. |
---|---|
Input: | java.lang.String term - (Mandatory) text to match. Format is specific to the match algorithm |
Output: | org.lexgrid.valuesets.dto.ResolvedValueSetCodedNodeSet - contains the codingScheme URI and Version that was used to resolve and the unresolved CodedNodeSet. |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
getCodingSchemesInValueSetDefinition
This method returns all the coding scheme referenced by supplied value set definition.
getCodingSchemesInValueSetDefinition(URI valueSetDefinitionURI)
Description: | Returns list of coding scheme summary that is referenced by the supplied value set definition. |
---|---|
Input: | java.net.URI valueSetDefinitionURI - (Mandatory) value set definition uri |
Output: | org.LexGrid.LexBIG.DataModel.Collections.AbsoluteCodingSchemeVersionReferenceList - list of coding scheme summary referenced by the supplied value set definition |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
isValueSetDefinition
This method checks if the supplied entityCode is of type 'valueSetDefinition' in supplued coding scheme and version.
isValueSetDefinition(String entityCode, String codingSchemeName, CodingSchemeVersionOrTag csvt)
Description: | Determines if the supplied entity code is of type valueSetDefinition in the supplied coding scheme and, if it is, returns true; otherwise returns false. |
---|---|
Input: | java.lang.String entityCode - (Mandatory) entity code |
Output: | boolean - TRUE : If entityCode is of type valueSetDefinition in supplied coding scheme, FALSE : otherwise |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
getValueSetDefinitionURIsWithCodingScheme
This method returns a list of Value Set Definition URIs that references supplied coding scheme.
getValueSetDefinitionURIsWithCodingScheme(String codingSchemename, String codingSchemeURI)
Description: | Returns a list of Value Set Definition URIs that references supplied coding scheme. |
---|---|
Input: | java.lang.String codingSchemename - (Mandatory) Name of coding scheme to check |
Output: | java.util.List<String> - List of value set definition URIs that references the supplied coding scheme name |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
getValueSetDefinitionURIsWithConceptDomain
This method returns a list of Value Set Definition URIs that are bound to supplied concept domain.
{{getValueSetDefinitionURIsWithConceptDomain(String conceptDomain, String codingSchemeURI)}
Description: | Returns a list of Value Set Definition URIs that are bound to supplied concept domain. |
---|---|
Input: | java.lang.String conceptDomain- (Mandatory) name or uri of concept domain to check |
Output: | java.util.List<String> - List of value set definition URIs that are bound to supplied concept domain |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
getValueSetDefinitionURIsWithUsageContext
This method returns a list of Value Set Definition URIs that references supplied list of usage context(s).
getValueSetDefinitionURIsWithUsageContext(List<String> usageContexts, String codingSchemeURI)
Description: | Returns a list of Value Set Definition URIs that references supplied list of usage context(s). |
---|---|
Input: | java.util.List<java.lang.String> usageContexts- (Mandatory) list of name or uri of usage context to check |
Output: | java.util.List<String> - List of value set definition URIs that references the supplied list of usage context |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
getValueSetDefinitionURIsWithConceptDomainAndUsageContext
This method Returns list of Value Set Definition URIs that are bound to supplied concept domain and in supplied usage context.
getValueSetDefinitionURIsWithConceptDomainAndUsageContext(String conceptDomain, List<String> usageContexts, String codingSchemeURI)
Description: | Returns list of Value Set Definition URIs that are bound to supplied concept domain and in supplied usage context. |
---|---|
Input: | java.lang.String conceptDomain - (Mandatory) name or uri of concept domain to check |
Output: | java.util.List<String> - List of value set definition URIs that are bound to supplied concept domain and references the supplied list of usage context |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
Resolve Functions
Rsolve functions provides the capability to resolve the value set definition against specific coding scheme version and get back the list of entities that belongs to the value set. If no coding scheme version is provided, the API will pick the latest version of the coding scheme.
There are two separate functions available to resolve value set definition :
- Resolve Stored Value Set Definition - This function allows you to resolve value set definition that are loaded in the system.
- Resolve Supplied Value Set Definition - This function allows you to pass a ValueSetDefinition object that may not be loaded in the system and get it resolved.
Resolving Stored Value Set Definition
This function resolves the value set definition that is loaded in the system and returns set of valied concept codes plus the code systems and its versions that were used.
resolveValueSetDefinition(URI valueSetDefinitionURI, String valueSetDefinitionRevisionId, AbsoluteCodingSchemeVersionReferenceList csVersionList, String versionTag, SortOptionList sortOptionList)
Description: | Resolves a value set definition that is available in the system using the supplied set of coding scheme versions. |
---|---|
Input: | java.net.URI valueSetDefinitionURI - (Mandatory) value set definition uri to resolve |
Output: | org.lexgrid.valuesets.dto.ResolvedValueSetDefinition - Resolved Value Set Definition |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
Resolving Supplied Value Set Definition Objects
This function resolves the value set definition that is supplied against the supplied coding scheme version(s) and returns set of valied concept codes plus the code systems and its versions that were used.
resolveValueSetDefinition(ValueSetDefinition vsDef, AbsoluteCodingSchemeVersionReferenceList csVersionList, String versionTag, SortOptionList sortOptionList)
Description: | Resolves a value set definition that is supplied using the supplied set of coding scheme version(s). |
---|---|
Input: | org.LexGrid.valueSets.ValueSetDefinition vsDef- (Mandatory) value set definition object to resolve |
Output: | org.lexgrid.valuesets.dto.ResolvedValueSetDefinition - Resolved Value Set Definition |
Exception: | org.LexGrid.LexBIG.Exceptions.LBException |
Implementation Details: | Implementation:
|
Resolved Value Set Objects
ResolvedValueSetCodedNodeSet
Contains Coding Scheme Version reference list that was used to resolve the Value Set Definition and the CodedNodeSet.
Note
The CodedNodeSet is not resolved.
ResolvedValueSetDefinition
A resolved Value Set Definition containing the Coding Scheme Version reference list that was used to resolve the Value Set Definition and an iterator for resolved concepts.
Error Handling
LexEVS Value Set Definition services uses org.LexGrid.LexBIG.Impl.loaders.MessageDirector to direct all fatal, error, warning, info messages with appropriate messages to the LexBIG log files in the 'log' folder of LexEVS install directory.
Along with MessageDirector, the services will also make use of org.LexGrid.LexBIG.exception.LBException to throw any fatal and error messages to the log file as well as to the console.
Load Scripts
Following are the scripts that can be used to load value set definition that are in LexGrid XML format into the system :
- LoadValueSetDefinition.bat for Windows environment and
- LoadValueSetDefinition.sh for Unix environment
The above scripts can be found under 'Admin' folder of LexEVS install directory.
Both scripts take in the following parameters:
-in Input <uri> URI or path specifying location of the source file. -v Validate <int> Perform validation of the candidate resource without loading data. Supported levels of validation include: 0 = Verify document is well-formed 1 = Verify document is valid
Example:
sh LoadValueSetDefinition.sh -in "file:///path/to/file.xml"
Sample Value Set Definition XML File
Below is a sample XML file containing Value Set Definitions in LexGrid format that can be loaded using LexEVS Value Set Definition Service.
Â
<source> <lgVD:valueSetDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://LexGrid.org/schema/2010/01/LexGrid/versions http://LexGrid.org/schema/2010/01/LexGrid/versions.xsd" xmlns="http://LexGrid.org/schema/2010/01/LexGrid/versions" xmlns:lgVer="http://LexGrid.org/schema/2010/01/LexGrid/versions" xmlns:lgCommon="http://LexGrid.org/schema/2010/01/LexGrid/commonTypes" xmlns:data="data" xmlns:lgVD="http://LexGrid.org/schema/2010/01/LexGrid/valueSets" xmlns:lgNaming="http://LexGrid.org/schema/2010/01/LexGrid/naming" valueSetDefinitionURI="SRITEST:AUTO:PropertyRefTest1-VSDONLY" valueSetDefinitionName="Property Reference Test 1" defaultCodingScheme="Automobiles" effectiveDate="2009-01-01T11:00:00Z" isActive="true" status="ACTIVE"> <lgVD:mappings> <lgNaming:supportedCodingScheme localId="Automobiles" uri="urn:oid:11.11.0.1"></lgNaming:supportedCodingScheme> <lgNaming:supportedConceptDomain localId="Autos">Autos</lgNaming:supportedConceptDomain> <lgNaming:supportedSource localId="GM">GM</lgNaming:supportedSource> <lgNaming:supportedSource localId="Ford">Ford</lgNaming:supportedSource> </lgVD:mappings> <lgVD:source role="role1" subRef="subRef1">GM</lgVD:source> <lgVD:source role="role2" subRef="subRef2">Ford</lgVD:source> <lgVD:representsRealmOrContext>Automobiles</lgVD:representsRealmOrContext> <lgVD:representsRealmOrContext>Ford</lgVD:representsRealmOrContext> <lgVD:representsRealmOrContext>GM</lgVD:representsRealmOrContext> <lgVD:properties> <lgCommon:property propertyName="textualPresentation"> <lgCommon:source role="PropRole1" subRef="PropSubRef1">GM</lgCommon:source> <lgCommon:source role="PropRole2" subRef="PropSubRef2">Ford</lgCommon:source> <lgCommon:usageContext>PropUsageContext GM</lgCommon:usageContext> <lgCommon:usageContext>PropUsageContext Ford</lgCommon:usageContext> <lgCommon:propertyQualifier propertyQualifierName="PropQual1Namuuuuu" propertyQualifierType="PQual Type 1"> <lgCommon:value dataType="text">PropQualValue GM</lgCommon:value> </lgCommon:propertyQualifier> <lgCommon:propertyQualifier propertyQualifierName="PropQual2Namuuuuu" propertyQualifierType="PQual Type 2"> <lgCommon:value dataType="text">PropQualValue Ford</lgCommon:value> </lgCommon:propertyQualifier> <lgCommon:value>All Automobiles nodes</lgCommon:value> </lgCommon:property> </lgVD:properties> <lgVD:definitionEntry ruleOrder="1" operator="OR"> <lgVD:propertyReference codingScheme="Automobiles"> <lgVD:propertyMatchValue matchAlgorithm="LuceneQuery">General</lgVD:propertyMatchValue> </lgVD:propertyReference> </lgVD:definitionEntry> </lgVD:valueSetDefinition> </source>
System Testing
The System test case for the LexEVS Value Set Definition service is performed using the JUnit test suite:
org.LexGrid.LexBIG.Impl.testUtility.VDAllTests
This test suite will be run as part of regular LexEVS test suites AllTestsAllConfigs and AllTestsNormalConfigs.
Installation / Packaging
Value Set Definition Services are integrated parts of core LexEVS API and are packaged and installed with other LexEVS services.
Value Set GUI
Visit LexEVS 6.0 Value Set GUI for detailed functionality and how tos about using Value Sets developer GUI tool