Important: February 2019: these web services have been updated to cover SDTM, SEND, ADaM, CDASH (and: older: COA and CRS) models.
This is thanks to the use of a new Native XML database in which all published CDISC-CT has been stored "as is".
The old CDISC-CT RESTful web services are described and can be found here
NEW (April 2022): Implementation of all new and updated CDISC codetable mappings.
Following versions of the CDISC-CT are supported:
Controlled Terminology for following CDISC models (parameter {model}) are supported:
Where appropriate, the CodeList version can be provided by the path parameter {codelistversion}, which is a date. Examples are given below.
When no version is provided, the latest version (currently '2022-12-16') is taken.
If you would like to use the latest codelist version, the better practice is however that you query for it (resource "LatestCodeListVersion") and use the
response in the next query.
For a number of the services, the codelist version (a date), can be replaced by the keyword "history". These services are marked with a "(*)".
When "history" is provided, the response is provided for each of the available codelist versions. For example:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/SynonymsFromNCICode/SDTM/C64818/history
The common base for all these CDISC-CT web services is: http://xml4pharmaserver.com:8080/CDISCCTService2/rest/
The following RESTful web services have been developed:
This will return a string (currently a date), embedded in XML or JSON or just as text, according to your request.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/LatestCodeListVersion/{model}
For example, to get the latest CDISC-CT version for the SDTM standard, use:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/LatestCodeListVersion/SDTM
For example, to get the latest CDISC-CT version for the ADaM standard, use:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/LatestCodeListVersion/ADaM
This resource is very useful for "chaining", i.e. your query requires a codelist version, and you would like your application to automatically get the latest one. In this case you use the output of this resource as a part of the input of your next query.
This will return a list of all the codelist versions that have been implemented for the given model, embedded in XML or JSON or just as text, according to your request.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodeListVersions/{model}
For example, if you want to obtain all the published CDISC-CT versions for the ADaM model, you will use:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodeListVersions/ADaM
This resource is very useful for "chaining" and for "iteration", it will e.g. allow you have your software iterate over all versions, and find out what the differences are.
For example, you will then find out that CDISC changes definitions of terms between versions!
This will return a string ("true" or "false"), embedded in XML or JSON or just as text, according to your request.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidCodeListVersion/{model}/{codelistversion}
Examples:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidCodeListVersion/SDTM/2016-12-16
will return "true",
whereas: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidCodeListVersion/SDTM/2016-12-15
will return "false".
Remark that currently (latest version '2022-12-16') all "supported" versions are independent of the standard used (SDTM, SEND, ADaM, CDASH). If this changes in future, we will add a web service where you can query for the supported version of CDISC-CT for a specific standard.
When the name of a codelist or its NCI code is submitted together with the codelist version and the model, the string "true" is returned when the codelist is extensible.
When the codelist is not extensible, the string "false" is returned. In case the combination of codelist version and name or NCI code cannot be found, the string
"Invalid CodeList" is returned.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodeListExtensibleCodeListName/{model}/{codelistname}/{codelistversion} (*)
and: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodeListExtensibleCodeListNCICode/{model}/{codelistncicode}/{codelistversion} (*)
Examples:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodeListExtensibleCodeListName/SDTM/LBTESTCD/2015-06-26
will return "true",
whereas: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodeListExtensibleCodeListName/SDTM/ACN/2015-12-18
will return "false".
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodeListExtensibleCodeListNCICode/SDTM/C65047/2014-12-19
will return "true"
whereas: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodeListExtensibleCodeListNCICode/SDTM/C66767/2016-03-25
will return "false"
CDASH example:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodeListExtensibleCodeListName/CDASH/EGORRESU/2016-03-25
SEND example:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodeListExtensibleCodeListName/SEND/EGTESTCD/2016-03-25
This resource requires you to give the version of the CDISC-CT (or the keyword "history"), as some codelists were extensible in the past and are not anymore in the latest version, and vice versa.
If you just want to know whether the latest version of your codelist is extensible, let your application use the resource "LatestCodeListVersion" and use the response of
it as input in the current request.
Example with "history":
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodeListExtensibleCodeListName/SDTM/ACN/history
The name of the codelist (e.g. "FREQ") needs to be provided. If no codelist version is provided, the latest version (currently '2022-12-16') is taken.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodeListNCICodeFromCodeListName/{model}/{codelistname}
and: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodeListNCICodeFromCodeListName/{model}{codelistname}/{codelistversion} (*)
Examples:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodeListNCICodeFromCodeListName/SDTM/LAT/2014-03-28
will return "C99073",
whereas: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/SDTM/CodeListNCICodeFromCodeListName/DIR
will return "C99074"
SEND example:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodeListNCICodeFromCodeListName/SEND/FXRESCAT
will return the value "C124313".
The name of the codelist (e.g. "FREQ") needs to be provided. If no codelist version is provided, the latest version (currently '2022-12-16') is taken.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodedValuesFromCodeListName/{model}/{codelistname}
and: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodedValuesFromCodeListName/{model}{codelistname}/{codelistversion} (*)
Examples:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodedValuesFromCodeListName/SDTM/LAT/2014-03-28
will return 7 allowed values, from 'BILATERAL' to 'UNILATERAL',
whereas: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/SDTM/CodedValuesFromCodeListName/DIR
will return 42 allowed values from the latest codelist version (currently '2022-12-16'), from 'TEMPORAL' to 'VENTROLATERAL'.
SEND example:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodedValuesFromCodeListName/SEND/FXRESCAT
will return the values "MALFORMATION", "OSSIFICATION", "UNCLASSIFIED" and "VARIATION"
You can also use this service to look up the allowed values for trial summary parameters. For example:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodedValuesFromCodeListName/SDTM/TTYPE
will return all allowed values for the trial summary parameter "Trial Type" (TSPARMCD=TTYPE) in the SDTM model
Example with "history" (nicely demonstrating the growth of this codelist over time:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodedValuesFromCodeListName/SDTM/TTYPE/history
The NCI code of the codelist (e.g. "C71113") needs to be provided. If no codelist version is provided, the latest version (currently '2022-12-16' in the case of SDTM) is taken.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodedValuesFromCodeListNCICode/{model}/{codelistncicode}
and: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodedValuesFromCodeListNCICode/{model}/{codelistncicode}/{codelistversion} (*)
Examples:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodedValuesFromCodeListNCICode/SDTM/C99073/2014-03-28
will return 7 allowed values, from 'BILATERAL' to 'UNILATERAL',
whereas: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodedValuesFromCodeListNCICode/SDTM/C99074
will return 53 allowed values from the latest codelist version (currently '2022-12-16'), from 'ANTERIOR' to 'VOLAR'.
Exmple with "history":
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CodedValuesFromCodeListNCICode/SDTM/C99074/history
When a CDISC test code (e.g. "SYSBP") is submitted together with the codelist name (e.g. "LBTESTCD") and model (usually "SDTM" or "SEND") the CDISC test name is returned. It is important that the codelist name is also provided,
as the test code is context dependent. For example "ALB" is both "Albumin" (LBTESTCD) as "Albania" (COUNTRY).
In the example case the response is: "Albumin"
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/TestNameFromTestCode/{model}/{testcd}/{codelist}
OR: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/TestNameFromTestCode/{model}/{testcd}/{codelist}/{codelistversion} (*)
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/TestNameFromTestCode/SDTM/ALB/LBTESTCD
Or (for an earlier version of CDISC-CT): http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/TestNameFromTestCode/SDTM/ALB/LBTESTCD/2014-03-28
You can also query for Trial Summary Parameter names given the parameter code for the SDTM model
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/TestNameFromTestCode/SDTM/TBLIND/TSPARMCD
OR: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/TestNameFromTestCode/SDTM/TBLIND/TSPARMCD/2014-03-28
Returning: 'Trial Blinding Schema'
A similar SEND example is:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/TestNameFromTestCode/SEND/ALTSTDID/STSPRMCD
Returning: "Alternate Study ID"
Example with "history":
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/TestNameFromTestCode/SDTM/TBLIND/TSPARMCD/history
When a CDISC test code (e.g. "SYSBP") is submitted together with the codelist name (e.g. "LBTESTCD") the NCI code is returned. It is important that the codelist name is also provided,
as the test code is context dependent. For more information about NCI codes for CDISC controlled terminology see:
http://www.cancer.gov/cancertopics/cancerlibrary/terminologyresources/cdisc
In the example case the response is: "C64431"
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/NCICodeFromTestCode/{model}{testcd}/{codelist}
OR: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/NCICodeFromTestCode/{model}{testcd}/{codelist}/{codelistversion} (*)
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/NCICodeFromTestCode/SDTM/ALB/LBTESTCD
You can also do the same for a Trial Summary Parameter.
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/NCICodeFromTestCode/SDTM/TBLIND/TSPARMCD/2015-06-26
Returning: 'C49658'
Example with "history":
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/NCICodeFromTestCode/SDTM/TBLIND/TSPARMCD/history
When a CDISC test code (e.g. "SYSBP") is submitted together with the codelist name (e.g. "LBTESTCD") the CDISC definition is returned. It is important that the codelist name is also provided,
as the test code is context dependent.
In the example case the response is: "A measurement of the albumin protein in a biological specimen".
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCDefinitionFromCDISCTestCode/{model}/{testcd}/{codelist}
OR: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCDefinitionFromCDISCTestCode/{model}/{testcd}/{codelist}/{codelistversion} (*)
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCDefinitionFromCDISCTestCode/SDTM/ALB/LBTESTCD
And similar for a Trial Summary parameter.
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCDefinitionFromCDISCTestCode/SDTM/TBLIND/TSPARMCD
Returning: 'The name of a code list that contains terms to define the type of blinding for the trial. (NCI)'
Example with "history", demonstrating how the definition of "TBLIND" changed over time (!):
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCDefinitionFromCDISCTestCode/SDTM/TBLIND/TSPARMCD/history
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidValueInCodeList/{model}{codedvalue}/{codelist}
OR: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidValueInCodeList/{model}{codedvalue}/{codelist}/{codelistversion} (*)
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidValueInCodeList/SDTM/COMPLETED/NCOMPLT
returns the string "true"
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidValueInCodeList/SDTM/INCOMPLETED/NCOMPLT
returns the string "false"
The coded value itself may contain blanks, that is no problem, e.g.:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidValueCodeList/SDTM/ADVERSE EVENT/NCOMPLT/2015-09-25
Example with "history" (where "Leukocyte Cell Differential" is new as of version 2019-06-28):
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidValueInCodeList/SDTM/Leukocyte Cell Differential/LBTEST/history
IMPORTANT REMARK: Do NOT use this service to validate terms from the CDISC "UNIT" codelist, use the method "Get whether a CDISC unit is a correct CDISC unit" instead. Reason: some units contain a forward slash, which may be misinterpreted by the RESTful web service
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidValueInCodeList/{model}/{codedvalue}/{codelistncicode}/{codelistversion} (*)
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidValueInCodeListNCICode/SDTM/MULTIPLE/C74457/2016-03-25
returns the string "false"
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidValueInCodeListNCICode/SDTM/WHITE/C74457/2016-03-25
returns the string "true"
Example with "history" (where "Leukocyte Cell Differential" is new as of version 2019-06-28):
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidValueInCodeListNCICode/SDTM/Leukocyte Cell Differential/C67154/history
Example for SEND: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidValueInCodeListNCICode/SEND/DENTAL%20EXAM/C158118/history
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCCodeListValueDecode/{model}/{codedvalue}/{codelistname}
OR: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCCodeListValueDecode/{model}/{codedvalue}/{codelistname}/{codelistversion} (*)
Examples:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCCodeListValueDecode/SDTM/M/SEX/2016-06-24
returns the value "Male"
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCCodeListValueDecode/SDTM/Y/NY
returns the value "Yes"
It is important that the name of the codelist is given, as a coded value may have different decodes depending on the codelist. For example:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCCodeListValueDecode/SDTM/ALB/COUNTRY/2016-06-24
will return "Albania",
whereas:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCCodeListValueDecode/SDTM/ALB/LBTESTCD
returns the value "Albumin"
SEND example:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCCodeListValueDecode/SEND/NEUTHYGR/LBTESTCD
returns the value "Hypogranular Neutrophils"
Example with "history":
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCCodeListValueDecode/SEND/NEUTHYGR/LBTESTCD/history
When an NCI code (e.g. "C64431" for SDTM) is submitted the submission) term or terms are returned.
In the example case the response contains: "ALB" and "Albumin".
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCTermsFromNCICode/{model}/{ncicode}
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCTermsFromNCICode/{model}/{ncicode}/{codelistversion} (*)
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCTermsFromNCICode/SDTM/C64431
OR e.g.: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCTermsFromNCICode/SDTM/C64431/2016-03-25
Example specific for SEND: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCTermsFromNCICode/SEND/C158324
You can also do so for a trial summary parameter value.
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCTermsFromNCICode/SDTM/C15228
OR e.g.: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCTermsFromNCICode/SDTM/15228/2015-03-27
Returning: 'DOUBLE BLIND'
IMPORTANT REMARK: slight change as of 2017-04-16: The structure of the response was slightly changed. The returned terms are now packed within an "CDISCTerm" element.
The reason is that in some cases, the same NCI code stands for two terms, i.e. once the "coded term" (such as "ALB") and once the "decoded term" (such as "Albumin").
Although we understand the reasoning behind this, we consider this as major CDISC-CT design error. The NCI code is essentially the key, and a key should never have different values.
Essentially, the "decoded term" is nothing else than the English representation of the "coded term". However, there can and will be representations in other languages too.
However, the CDISC-CT team considers the "coded value" and the "decoded value" (i.e. the English representation) as being equal, thereby ignoring that there are other languages in the world than English.
This enormously hinders the use of the system. At least, the "decoded term" should have a "language attribute", stating that e.g. "Albumin" is the English term for the code "ALB".
ADaM example:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCTermsFromNCICode/ADaM/C139176
Returning "EXTRAP"
Example with "history" (demonstrating a term/code that was completely removed as of 2019-06-28):
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCTermsFromNCICode/SDTM/C74629/history
When an NCI code (e.g. "C64431") is submitted with the model, the CDISC preferred term is returned.
In the example case the response is: "Albumin Measurement" (remark that this is not the submission value).
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCPreferredTermFromNCICode/{model}/{ncicode}
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCPreferredTermFromNCICode//{model}{ncicode}/{codelistversion} (*)
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCPreferredTermFromNCICode/SDTM/C64431
You can also do so for a trial summary parameter value.
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCPreferredTermFromNCICode/SDTM/C15228
OR: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCPreferredTermFromNCICode/SDTM/C15228/2015-03-27
Returning: 'Double Blind Study'
Example with "history":
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCPreferredTermFromNCICode/SDTM/C64431/history
When an NCI code (e.g. "C64431") is submitted the CDISC definition is returned.
In the example case the response is: "A measurement of the albumin protein in a biological specimen".
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCDefinitionFromNCICode/{model}/{ncicode}
OR: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCDefinitionFromNCICode/{model}/{ncicode}/{codelistversion} (*)
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCDefinitionFromNCICode/SDTM/C64431
You can also do so for a trial summary parameter value.
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCDefinitionFromNCICode/SDTM/C15228
Returning: 'A study in which neither the subject nor the investigator nor the research team interacting with the subject or data during the trial knows what treatment a subject is receiving. (CDISC glossary)'
ADaM example:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCDefinitionFromNCICode/ADaM/C81205
Returning: 'Penultimate Observation Carried Forward: A data imputation technique which populates missing values with the subject's next-to-last nonmissing value.'
Example with "history":
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCDefinitionFromNCICode/ADaM/C81205/history
When a CDISC unit (e.g. "mmHg") is submitted the corresponding universal UCUM notation is returned.
In the example case the response is: "mm[Hg]".
If "IN" (inches) is submitted, "[in_i]" is returned.
This service has been established as the whole world (including the EHR world) is using UCUM notation for units, but CDISC decided to reinvent the wheel.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/UCUMFromCDISCUnit/{cdiscunit}
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/UCUMFromCDISCUnit/mmHg
No fear if the CDISC unit contains a slash "/" itself. For example if you submit "BEATS/MIN" using:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/UCUMFromCDISCUnit/BEATS/MIN
the correct result "{beats}/min" will be obtained.
For more information about the UCUM notation and its specification, see: http://www.unitsofmeasure.org
For more information about why CDISC should move to UCUM, see e.g.
When a CDISC unit (e.g. "mmHg") is submitted the string "true" (valid) or "false" (invalid) will be returned.
In the example case the response is: "true".
If e.g. "mm[Hg]" is submitted, the result is "false", as CDISC does unfortunately not allow UCUM notation for units
The value for "model" will usually be either "SDTM" or "SEND" (ADaM-CT does not define units)
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidCDISCUnit/{model}/{cdiscunit}
OR:: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidCDISCUnit/{model}/{cdiscunit}/{codelistversion} (*)
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidCDISCUnit/SDTM/mmHg
No fear if the CDISC unit contains a slash "/" itself. For example if you submit "beats/min" using:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidCDISCUnit/SDTM/beats/min
the correct result "true" will be obtained.
IMPORTANT: as we found out that CDISC units are NOT consistent across versions (i.e. the way of writing the unit sometimes changed between versions),
one can now also add the Controlled Terminology Version as an extra parameter.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidCDISCUnit/{model}/{cdiscunit}/{codelistversion}
For example the unit "BEATS/MIN" was replaced by "beats/min" as of version 2015-06-26.
So if you (or your system) submits:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidCDISCUnit/SDTM/BEATS/MIN/2015-03-27
the result will be "true".
If you however sumbit http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidCDISCUnit/SDTM/BEATS/MIN/2015-06-26
the result will be "false",
and if you submit:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidCDISCUnit/SDTM/beats/min/2015-06-2
the result will be again "true".
If you do NOT provide a codelist version, the latest version that is available will be used.
Example with "history" (demonstrating a sudden change in how to write the unit for "heart rate"):
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidCDISCUnit/SDTM/BEATS/MIN/history
When a CDISC unit (e.g. "mmHg") together with a vital signs test code is submitted the string "true" (valid) or "false" (invalid) will be returned.
In case the value for the test code itself is invalid, the string "unrecognized test code" is returned.
If e.g. "DIABP" together with "kg/m2" is submitted, the string "false" is returned.
If however "BMI" together with "kg/m2" is submitted, the string "true" is returned.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidCDISCUnitForCDISCTestCode/{testcode}/{cdiscunit}
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidCDISCUnitForCDISCTestCode/DIABP/mmHg
IMPORTANT REMARK: in some cases the "casing" of some CDISC units over time, which makes the later version "out of sync" with the earlier published combination unit/test-code.
For example, CDISC has published that "BEATS/MIN" is valid value for the test "HR" (heart rate), but the latest versions of the CDISC controlled terminology do not contain "BEATS/MIN" anymore. They contain "beats/min".
Just ignoring casing is however not a solution for this either...
When a "position" (e.g. "DECUBITUS") together with a vital signs test code (e.g. "DIABP") is submitted the string "true" (valid) or "false" (invalid) will be returned.
In case the value for the test code itself is invalid, the string "unrecognized test code" is returned.
If e.g. "DIABP" together with "LYING" is submitted, the string "false" is returned.
If however "DIABP" together with "LATERAL DECUBITUS" is submitted, the string "true" is returned.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidPositionForCDISCTestCode/{testcode}/{position}
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidPositionForCDISCTestCode/DIABP/LATERAL DECUBITUS
Remark: blanks in the "position" are unproblematic.
Last update: 2021-06-07, with information from all newest CDISC codetables, for TU, TR, RS (oncology), CV, DD, DS, EG, RP, SC, SS and VS.
The following table provides a list of the variable names (first argument in the query) and for what "standardized test value variable" the results are returned:
Test code variable | Test result variable |
---|---|
CVFATSCD | CVFARS |
DDTESTCD | DDSTRESC |
EGTESTCD (*) | EGSTRESC |
RPTESTCD | RPSTRESC |
SCTESTCD | SCSTRESC |
SSTESTCD | SSSTRESC |
TRTESTCD | TRSTRESC |
TSPARMCD | TSVAL |
TUTESTCD | TUSTRESC |
VSTESTCD | VSSTRESC |
(*): Includes both codelists EGTESTCD and HETESTCD (Holger tests)
For use with RSTESTCD, an additional parameter is necessary, providing the categorization system
The latter can be either (case sensitive): "CDISC", "RECIST-1-0", "RECIST-1-1", "iRECIST", "Lugano", "Rajkumar", or "Rano".
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidStandardResultsForCDISCTestCode/RSTESTCD/{testcode}/{system}
Examples:
http://xml4pharmaserver.com:8080/CDISCCTService2/rest/StandardizedResultsForCDISCTestCode/RSTESTCD/OVRLRESP/CDISC
will return 36 values, from "CR" to "PSEUDORESPONSE" with their NCI codes, whereas:
http://xml4pharmaserver.com:8080/CDISCCTService2/rest/StandardizedResultsForCDISCTestCode/RSTESTCD/OVRLRESP/Rano
will return 7 values, with their NCI codes, and:
http://xml4pharmaserver.com:8080/CDISCCTService2/rest/StandardizedResultsForCDISCTestCode/RSTESTCD/OVRLRESP/Rajkumar
will return 10 values with their NCI codes.
When a standardized character result (e.g. "ACUTE RIGHT VENTRICULAR WALL MYOCARDIAL INFARCTION") for a given TESTCD (e.g. "MI" - Myocardial infarction in the EG domain) is sumbitted,
the string "true" (valid) or "false" (invalid) will be returned. In case the value for the test code itself is invalid, the string "unrecognized test code" is returned.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidStandardResultForCDISCTestCode/{testcode}/{egstresc}
Examples: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidStandardResultForCDISCTestCode/MI/ACUTE ANTEROLATERAL WALL MYOCARDIAL INFARCTION
OR:
http://xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidStandardResultForCDISCTestCode/AXISVOLT/NORTHWEST AXIS
OR:
http://xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidStandardResultForCDISCTestCode/CYTORESP/CYTOGENETIC CR
OR:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidStandardResultForCDISCTestCode/HFPEFNW/CLINICALLY SIGNIFICANT OR RAPID WEIGHT GAIN
Remark: blanks in the "position" are unproblematic, and also here the underlying database is case-unsensitive.
As soon as more of these codetables are published on the CDISC website or available from the CDISC Library, they will be implemented
SEND codetables have not been implemented yet
Recent discussions in different forums have made it clear that the SDTM-IG (and other IGs) must be interpreted in such a way that when a variable has controlled terminology, the collected value must be mapped to the "CDISC Submission Value". This also (no exception!) applies to units in the variable --ORRESU. For example, if a concentration was measured in "mol/m3", one still must put the value "mmol/L" in LBORRESU, as the latter is the "CDISC submission value" from the "UNIT" codelist, and "mol/m3" is a "CDISC synonym" for it.
Checking whether a collected term or unit is a synonym for a "CDISC submission value" is an extremely challenging (usually manual) task. Therefore we created a RESTful web service allowing to find out whether your value is a (by CDISC published) synonym of an SDTM submission value. This webservice can help in automating replacing "synonyms" into the "CDISC submission values".
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCSubmissionTermsFromSynonym/{model}/{synonym}Example with "history":
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/CDISCSubmissionTermsFromSynonym/SDTM/mol/m3/history
As can easily be found out, this web service especially makes sense for units, and less for other terms, as usually the "CDISC synonym" is more a description than a real synonym. For example, you can submit:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/SDTM/CDISCSubmissionTermsFromSynonym/myeloid maturation index, delivering the submission value "MYCEMIDX" as well as the correct (case-sensitive) writing "Myeloid Maturation Index".Remarks:
Returns all synonyms for a given CDISC submission value term and model
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/SynonymsFromCDISCSubmissionValue/{model}/{cdiscterm}Will in both cases return 'Microalbumin' as well as 'Albumin' itself
Example with "history" (demonstrating how synonyms were added in the course of time):
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/SynonymsFromCDISCSubmissionValue/SDTM/LYMAT/history
Returns all synonyms for a given SDTM submission value term by its NCI code
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/SynonymsFromNCICode/{ncicode} URL: http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/SynonymsFromNCICode/{ncicode}/{codelistversion} (*)Will in both cases return 'Body Fat' and 'Fat Tissue'
Example with "history":
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/SynonymsFromNCICode/SDTM/C64818/history
Remark: CDISC has been very inconsequent here. When you ask for the "synonyms" by the NCI code (which is the unique identifier), you will sometimes also get the "preferred term" (the "submission value"), and sometimes not at all. We have not tried to correct this.
Remark: for the two "synonym" services, you can use the service for finding all possible "allowed" ways of writing a unit.
The CDISC way of implementing "units" is however far from ideal: it is based on "tradition"
(i.e. all possible ways of "traditionally" writing a unit), rather than on science.
Unfortunately, CDISC is still refusing to allow the use of UCUM notation for units.
Remark for all services: Test codes and codelist names are case sensitive, so if you use:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidPositionForCDISCTestCode/diaBP/LATERAL DECUBITUS
"unrecognized test code" will be returned, and if you use:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/ValidPositionForCDISCTestCode/DIABP/Lateral Decubitus
"false" will be returned, as the valid value is "LATERAL DECUBITUS" (all uppercase).
IMPORTANT: In the future, we will extend these "ValueList" services to other SDTM domains such as LB.
For example, if you would submit "ml" together with "ALB" ("Albumin"), the answer would be "false", as the "Albumin" test is about a concentration
Of course, it would be much better when CDISC switches to UCUM anyway, but also then, a similar web service can be provided (for example: is "mm[Hg]" a valid unit for test "SYSBP"?)
Media types
Our web services support the following media types:
whereas the JSON response will look like:
i.e. the server date time (UTC) will be returned, together with the original HTTP request URL (in the "WebServiceRequest" element) as well as the response of the query (in the element "Response").
You can of course use the information to ensure that in your own application, the response is correctly treated.
In case your application does not send an ACCEPT header, like in many XSLT and XQuery applications, you can still steer whether you get either XML or JSON, by appending either ".xml" or ".json" to the end of the request string.
For example, the following will ALWAYS return XML:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/LatestCodeListVersion/SDTM.xml
whereas the following will ALWAYS return JSON:
http://www.xml4pharmaserver.com:8080/CDISCCTService2/rest/LatestCodeListVersion/SDTM.json
Most of these services have been implemented in the Smart Dataset-XML Viewer, but you can of course use them
in any software application that you want using RESTful web services.
Also see our blogs at blogspot
If you have any suggestions for other web services which have to do with CDISC and CDISC Controlled Terminology, please let us know.
SDTM-CT version 2020-09-25
SDTM-CT version 2020-09-25 (as published by CDISC) contains a serious quality issue: Codelist "Vital Signs Test Name" (NCI code C67153), contains contains an entry "TEMP", whereas it must be "Temperature" (NCI code C174446). As a consequence, CDISC published an "interim update" (2020-11-06), so we decided to retreat the version 2020-09-25.
Courtesy of XML4Pharma - last update: April 2024