The XML4Pharma Application Server

XML4Pharma Web Services

Categories:

CDISC Controlled Terminology web services

CDISC Domains / Standards Versions Web Services

CDISC SDS/SDTM Variable Web Services

LOINC RESTful web services

RESTful web services for UCUM unit conversion, validation and use in CDISC

CDISC, FDA and PMDA rules as XQuery: an open, vendor-neutral, human-readable and machine-executable representation of CDISC and FDA rules for SDTM


We have developed a good number of RESTful Web Services for use with CDISC standards

These web services are also used as a testbed for future CDISC SHARE web services (through the SHARE API).
We continuously develop and test new prototype web services in cooperation with the SHARE team.
If you think an important web service is missing, please let us know, and we will try to develop it.




The SDTM and COA/QRS/QRS-FT of the CDISC-CT are usually covered by these web services.
We will in future (sponsoring welcome!) also implement ADaM and SEND Controlled Terminology.

Following versions of the CDISC-CT are supported:

  • 2018-06-29
  • 2018-03-30
  • 2017-12-22
  • 2017-09-29
  • 2017-06-30
  • 2017-03-31
  • 2016-12-16
  • 2016-09-30 - WARNING: see CDISC bug warning
  • 2016-06-24
  • 2016-03-25
  • 2015-12-18
  • 2015-09-25
  • 2015-06-26
  • 2015-03-27
  • 2014-12-19
  • 2014-10-06 - WARNING: This version did not contain COA/QS/QRS-FT
  • 2014-09-26
  • 2014-06-27
  • 2014-03-28
  • Where appropriate, the CodeList version can be provided by the path parameter {codelistversion}. Examples are given below.
    When no version is provided, the latest version (currently 2018-06-29) 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.

    The following RESTful web services have been developed:

  • Get the latest CDISC-CT version identifier
  • Get all the (supported) codelist versions
  • Get whether a specific codelist version supported (or is a valid version)
  • Get whether a CDISC-CT Codelist is extensible or not
  • Get all valid codes for a given CDISC-CT Codelist by CodeList Name
  • Get all valid codes for a given CDISC-CT Codelist by CodeList NCI code
  • Get CDISC test name (--TEST) from CDISC test code (--TESTCD)
  • Get NCI code from CDISC test code (--TESTCD)
  • Get CDISC Definition from CDISC test code (--TESTCD)
  • Get whether a coded value is a valid value for the given codelist
  • Get whether a coded value is a valid value for the given codelist by CodeList NCI Code and CodeList version
  • Get the decoded value from a coded value in a specific CodeList and CodeList version
  • Get the SDTM Term from the NCI code
  • Get CDISC Preferred Term from NCI code
  • Get CDISC Definition from NCI code
  • Get UCUM notation of CDISC unit
  • Get whether a CDISC unit is a correct CDISC unit
  • Get whether a CDISC unit is a correct unit for a given (VS) test code
  • Get whether a Vital signs "position" (VSPOS) is a correct "position" for a given (VS) test code
  • Get whether a Character Result/Finding in Standard Format text value (EGSTRESC,RSSTRESC,CVFARS) for a given Test code (EGTESTCD,RSTESTCD,CVFATSCD) is a valid value
  • Get whether an SDTM variable is "required", "expected" or "permissible"
  • Get the Label for a given SDTM variable
  • Get the "Role" for a given SDTM variable
  • Get the SAS Datatype for a given variable
  • Get the "CDISC Notes" for a given SDTM variable
  • Get the SDTM submission value from a CDISC synonym
  • Get all synonyms for a given SDTM submission value
  • Get all synonyms for a given SDTM submission value NCI code

  • Get the latest CDISC-CT version identifier
  • 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/CDISCCTService/rest/LatestCodeListVersion

    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.

    Remark that currently (latest version 2017-12-22) all "latest" versions are identical, 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 latest version of CDISC-CT for a specific standard.


  • Get all the (supported) codelist versions
  • This will return a list of all the codelist versions that have been implemented, embedded in XML or JSON or just as text, according to your request.
    URL:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodeListVersions

    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!


  • Get whether a specific codelist version supported (or is a valid version)
  • 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/CDISCCTService/rest/validcodelistversion/{codelistversion}
    Examples:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/validcodelistversion/2016-12-16
    will return "true",
    whereas: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/validcodelistversion/2016-12-15
    will return "false".

    Remark that currently (latest version 2017-12-22) 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.


  • Get whether a CDISC-CT Codelist is extensible or not
  • When the name of a codelist or its NCI code is submitted together with the codelist version, 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/CDISCCTService/rest/CodeListExtensibleCodeListName/{codelistname}/{codelistversion}
    and: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodeListExtensibleCodeListNCICode/{codelistncicode}/{codelistversion}

    Examples:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodeListExtensibleCodeListName/LBTESTCD/2015-06-26
    will return "true",
    whereas: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodeListExtensibleCodeListName/ACN/2015-12-18
    will return "false".

    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodeListExtensibleCodeListNCICode/C65047/2014-12-19
    will return "true"
    whereas: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodeListExtensibleCodeListNCICode/C66767/2016-03-25
    will return "false".

    This resource requires you to give the version of the CDISC-CT, 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.


  • Get all valid codes for a given CDISC-CT Codelist by CodeList Name
  • The name of the codelist (e.g. "FREQ") needs to be provided. If no codelist version is provided, the latest version (currently '2017-12-22') is taken.


    URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodedValuesFromCodeListName/{codelistname}
    and: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodedValuesFromCodeListName/{codelistname}/{codelistversion}

    Examples:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodedValuesFromCodeListName/LAT/2014-03-28
    will return 7 allowed values, from 'BILATERAL' to 'UNILATERAL',
    whereas: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodedValuesFromCodeListName/DIR
    will return 33 allowed values from the latest codelist version (currently '2017-12-22'), from 'TEMPORAL' to 'VENTROLATERAL'.

    You can also use this service to look up the allowed values for trial summary parameters. For example:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodedValuesFromCodeListName/TTYPE
    will return all allowed values for the trial summary parameter "Trial Type" (TSPARMCD=TTYPE)


  • Get all valid codes for a given CDISC-CT Codelist by CodeList NCI code
  • The NCI code of the codelist (e.g. "C71113") needs to be provided. If no codelist version is provided, the latest version (currently '2017-12-22') is taken.


    URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodedValuesFromCodeListNCICode/{codelistncicode}
    and: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodedValuesFromCodeListNCICode/{codelistncicode}/{codelistversion}

    Examples:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodedValuesFromCodeListNCICode/C99073/2014-03-28
    will return 7 allowed values, from 'BILATERAL' to 'UNILATERAL',
    whereas: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodedValuesFromCodeListNCICode/C99074
    will return 33 allowed values from the latest codelist version (currently '2017-12-22'), from 'TEMPORAL' to 'VENTROLATERAL'.


  • Get CDISC test name (--TEST) from CDISC test code (--TESTCD)
  • When a CDISC test code (e.g. "SYSBP") is submitted together with the codelist name (e.g. "LBTESTCD") 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/CDISCCTService/rest/TestNameFromTestCode/{testcd}/{codelist}
    OR: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/TestNameFromTestCode/{testcd}/{codelist}/{codelistversion}
    Example:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/TestNameFromTestCode/ALB/LBTESTCD
    Or (for an earlier version of CDISC-CT): http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/TestNameFromTestCode/ALB/LBTESTCD/2014-03-28

    You can also query for Trial Summary Parameter names given the parameter code
    Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/TestNameFromTestCode/TBLIND/TSPARMCD OR: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/TestNameFromTestCode/TBLIND/TSPARMCD/2014-03-28
    Returning: 'Trial Blinding Schema'


  • Get NCI code from CDISC test code (--TESTCD)
  • 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/CDISCCTService/rest/NCICodeFromTestCode/{testcd}/{codelist}
    OR: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/NCICodeFromTestCode/{testcd}/{codelist}/{codelistversion}
    Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/NCICodeFromTestCode/ALB/LBTESTCD

    You can also do the same for a Trial Summary Parameter.
    Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/NCICodeFromTestCode/TBLIND/TSPARMCD/2015-06-26
    Returning: 'C49658'


  • Get CDISC Definition from CDISC test code (--TESTCD)
  • 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/CDISCCTService/rest/CDISCDefinitionFromCDISCTestCode/{testcd}/{codelist}
    OR: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCDefinitionFromCDISCTestCode/{testcd}/{codelist}/{codelistversion}
    Example:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCDefinitionFromCDISCTestCode/ALB/LBTESTCD

    And similar for a Trial Summary parameter.
    Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCDefinitionFromCDISCTestCode/TBLIND/TSPARMCD
    Returning: 'The name of a code list that contains terms to define the type of blinding for the trial. (NCI)'


  • Get whether a coded value is a valid value for the given codelist
  • URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidValueInSDTMCodeList/{codedvalue}/{codelist}
    OR: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidValueInSDTMCodeList/{codedvalue}/{codelist}/{codelistversion}
    Example:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidValueInSDTMCodeList/COMPLETED/NCOMPLT
    returns the string "true"
    Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidValueInSDTMCodeList/INCOMPLETED/NCOMPLT
    returns the string "false"

    The coded value itself may contain blanks, that is no problem, e.g.:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidValueInSDTMCodeList/ADVERSE EVENT/NCOMPLT/2015-09-25

    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


  • Get whether a coded value is a valid value for the given codelist by CodeList NCI Code and CodeList version
  • URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidValueInSDTMCodeList/{codedvalue}/{codelistncicode}/{codelistversion}
    Example:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidValueInSDTMCodeListNCICode/MULTIPLE/C74457/2016-03-25
    returns the string "false"
    Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidValueInSDTMCodeListNCICode/WHITE/C74457/2016-03-25
    returns the string "true"


  • Get the decoded value from a coded value in a specific CodeList and CodeList version
  • URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCSDSValueDecode/{codedvalue}/{codelistname}
    OR: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCSDSValueDecode/{codedvalue}/{codelistname}/{codelistversion}
    Examples:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCSDSValueDecode/M/SEX/2016-06-24
    returns the value "Male"
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCSDSValueDecode/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/CDISCCTService/rest/CDISCSDSValueDecode/ALB/COUNTRY/2016-06-24
    will return "Albania",
    whereas:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCSDSValueDecode/ALB/LBTESTCD
    returns the value "Albumin"

  • Get the SDTM Term from the NCI code
  • When an NCI code (e.g. "C64431") is submitted the SDTM (submission) term or terms are returned.
    In the example case the response is: "ALB" and "Albumin".
    URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMTermFromNCICode/{ncicode}
    URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMTermFromNCICode/{ncicode}/{codelistversion}
    Example:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMTermFromNCICode/C64431
    OR e.g.: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMTermFromNCICode/C64431/2016-03-25

    You can also do so for a trial summary parameter value.
    Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMTermFromNCICode/C15228
    OR e.g.: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMTermFromNCICode/C15228/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 "SDTMTerm" 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".

  • Get CDISC Preferred Term from NCI code
  • When an NCI code (e.g. "C64431") is submitted 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/CDISCCTService/rest/CDISCPreferredTermFromNCICode/{ncicode}
    URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCPreferredTermFromNCICode/{ncicode}/{codelistversion}
    Example:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCPreferredTermFromNCICode/C64431

    You can also do so for a trial summary parameter value.
    Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCPreferredTermFromNCICode/C15228
    OR: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCPreferredTermFromNCICode/C15228/2015-03-27
    Returning: 'Double Blind Study'


  • Get CDISC Definition from NCI code
  • 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/CDISCCTService/rest/CDISCDefinitionFromNCICode/{ncicode}
    OR: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCDefinitionFromNCICode/{ncicode}/{codelistversion}
    Example:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCDefinitionFromNCICode/C64431

    You can also do so for a trial summary parameter value.
    Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCDefinitionFromNCICode/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)'


  • Get UCUM notation of CDISC unit
  • 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/CDISCCTService/rest/UCUMFromCDISCUnit/{cdiscunit}
    Example:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/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/CDISCCTService/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 switch to UCUM, see e.g. http://cdiscguru.blogspot.co.at/2014/04/using-ucum-units-for-cdisc-send.html and/or http://cdisc-end-to-end.blogspot.co.at/2014/09/the-meaning-of-unit.html
    A presentation given at the CDISC German-speaking User Group Meeting 2013 can be found here.


  • Get whether a CDISC unit is a correct CDISC unit
  • 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".
    URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidCDISCUnit/{cdiscunit}
    Example:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidCDISCUnit/mmHg
    No fear if the CDISC unit contains a slash "/" itself. For example if you submit "beats/min" using:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidCDISCUnit/beats/min
    the correct result "true" will be obtained.

    Addition December 2016: 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/CDISCCTService/rest/ValidCDISCUnit/{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/CDISCCTService/rest/ValidCDISCUnit/BEATS/MIN/2015-03-27
    the result will be "true".
    If you however sumbit http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidCDISCUnit/BEATS/MIN/2015-06-26
    the result will be "false",
    and if you submit:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidCDISCUnit/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.


  • Get whether a CDISC unit is a correct unit for a given (VS) test code
  • 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/CDISCCTService/rest/ValidCDISCUnitForCDISCTestCode/{testcode}/{cdiscunit}
    Example:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/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...


  • Get whether a Vital signs "position" (VSPOS) is a correct "position" for a given (VS) test code
  • 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/CDISCCTService/rest/ValidPositionForCDISCTestCode/{testcode}/{position}
    Example:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidPositionForCDISCTestCode/DIABP/LATERAL DECUBITUS

    Remark: blanks in the "position" are unproblematic.


  • Get whether a Character Result/Finding in Standard Format text value (EGSTRESC,RSSTRESC,CVFARS) for a given Test code (EGTESTCD,RSTESTCD,CVFATSCD) is a valid value
  • 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/CDISCCTService/rest/ValidStandardResultForCDISCTestCode/{testcode}/{egstresc}

    Examples:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidStandardResultForCDISCTestCode/MI/ACUTE ANTEROLATERAL WALL MYOCARDIAL INFARCTION
    OR:
    http://xml4pharmaserver.com:8080/CDISCCTService/rest/ValidStandardResultForCDISCTestCode/AXISVOLT/NORTHWEST AXIS
    OR:
    http://xml4pharmaserver.com:8080/CDISCCTService/rest/ValidStandardResultForCDISCTestCode/CYTORESP/CYTOGENETIC CR
    OR:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidStandardResultForCDISCTestCode/HFPEFNW/CLINICAL 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 SHARE, they will be implemented


  • Get whether an SDTM variable is "required", "expected" or "permissible"
  • This service returns the the text "Req" (for "required"), "Exp" (for "expected) or "Perm" (for "permissible") for an SDTM variable (uppercase written) given the domain code (uppercase), and the version of the SDS standard ("1.2", "1.3", or "1.4") or the version of the SDTM-IG ("3.1.2", "3.1.3" or "3.2")
    (There is a 1:1 relationship between the SDTM-IG version and the SDS version)


    URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCCoreFromSDTMVariable/{version}/{domain}/{varName}
    Example:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCCoreFromSDTMVariable/1.3/SV/VISITNUM
    OR (same result): http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCCoreFromSDTMVariable/3.1.3/SV/VISITNUM

    It is important to also pass the domain code, as e.g. the variable VISITNUM is required, expected or permissible, depending on the domain.
    The version of the SDS/SDTM-IG standard is also important as the "core" of many variables has been changed upon a new version!


  • Get the Label for a given SDTM variable
  • This service returns the the label text for an SDTM variable (uppercase written) given the domain code (uppercase), and the version of the SDS standard ("1.2", "1.3", or "1.4") or the version of the SDTM-IG ("3.1.2", "3.1.3" or "3.2")
    (There is a 1:1 relationship between the SDTM-IG version and the SDS version)

    URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCVariableLabelFromSDTMVariable/{version}/{domain}/{varName}
    Example:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCVariableLabelFromSDTMVariable/1.3/SV/VISITNUM
    OR (same result): http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCVariableLabelFromSDTMVariable/3.1.3/SV/VISITNUM

    It is important to also pass the domain code, as some variables have different labels (althought this should NOT be the case) depending on the domain.
    The version of the SDS standard is also important as the variable labels may depend on the SDS version


  • Get the "Role" for a given SDTM variable
  • This service returns the SDTM "Role" of an SDTM variable given the domain code (uppercase), and the version of the SDS standard ("1.2", "1.3", or "1.4") or the version of the SDTM-IG ("3.1.2", "3.1.3" or "3.2")

    URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCRoleFromSDTMVariable/{version}/{domain}/{varName}
    Example:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCRoleFromSDTMVariable/1.3/SV/VISITNUM
    OR (same result): http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCRoleFromSDTMVariable/3.1.3/SV/VISITNUM

    The version of the SDS/SDTM-IG standard is important as the roles have in some cases changed over time and the value may depend on the SDS/SDTM-IG version


  • Get the SAS Datatype for a given variable
  • This service returns the SAS-XPT datatype (which can either be "char" or "num") of an SDTM variable given the domain code (uppercase), and the version of the SDS standard ("1.2", "1.3", or "1.4") or the version of the SDTM-IG ("3.1.2", "3.1.3" or "3.2")

    URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCSASXPTDataTypeFromSDTMVariable/{version}/{domain}/{varName}
    Example:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCSASXPTDataTypeFromSDTMVariable/1.3/AE/AESEQ
    OR (same result): http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCSASXPTDataTypeFromSDTMVariable/3.1.3/AE/AESEQ

    The version of the SDS/SDTM-IG standard is important for a small number of cases, the datatypes have changed over time and the value may depend on the SDS/SDTM-IG version


  • Get the "CDISC Notes" for a given SDTM variable
  • This service returns the the "CDISC Notes" as text for an SDTM variable (uppercase written) given the domain code (uppercase), and the version of the SDS standard ("1.2", "1.3", or "1.4") or the version of the SDTM-IG ("3.1.2", "3.1.3" or "3.2")


    URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCNotesFromSDTMVariable/{version}/{domain}/{varName}
    Example:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCNotesFromSDTMVariable/1.3/SV/VISITNUM
    OR (same result): http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCNotesFromSDTMVariable/3.1.3/SV/VISITNUM

    It is important to also pass the domain code, as some variables have different CDISC notes depending on the domain.
    The version of the SDS/SDTM-IG standard is also important as the "CDISC Notes" oftendepend on the SDS/SDTM-IG version


  • Get the SDTM submission value from a CDISC synonym
  • Recent discussions in different forums have made it clear that the SDTM-IG 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/CDISCCTService/rest/SDTMTermFromSynonym/{synonym}/{codelistversion}
    Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMTermFromSynonym/mol/m3/2016-12-16
    OR: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMTermFromSynonym/mol/m3 - supposes latest codelist version.

    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/CDISCCTService/rest/SDTMTermFromSynonym/Myeloid Maturation Index, delivering the submission value "MYCEMIDX".

    Remarks:


  • Get all synonyms for a given SDTM submission value
  • Returns all synonyms for a given SDTM submission value term

    URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMSynonymFromSDTMSubmissionValue/{sdtmterm}
    OR:
    URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMSynonymFromSDTMSubmissionValue/{sdtmterm}/{codelistversion}
    Example:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMSynonymFromSDTMSubmissionValue/Albumin - supposes latest codelist version
    OR: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMSynonymFromSDTMSubmissionValue/Albumin/2017-12-22

    Will in both cases return 'Microalbumin'


  • Get all synonyms for a given SDTM submission value NCI code
  • Returns all synonyms for a given SDTM submission value term by its NCI code

    URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMSynonymFromNCICode/{ncicode} URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMSynonymFromNCICode/{ncicode}/{codelistversion}
    Example:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMSynonymFromNCICode/C12472 - supposes latest codelist version
    OR: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMSynonymFromNCICode/C12472/2017-12-22

    Will in both cases return 'Body Fat' and 'Fat Tissue'

    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.



  • Soon coming: get whether a FASTRESC value is a valid value for a given FATESTCD when the "Findings About" is about "Cardiovascular" (Cardiovascular Studies Therapeutic Area Data Standard User Guide v1).


  • Remark for all services: Test codes and codelist names are case sensitive, so if you use:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidPositionForCDISCTestCode/diaBP/LATERAL DECUBITUS
    "unrecognized test code" will be returned, and if you use:
    http://www.xml4pharmaserver.com:8080/CDISCCTService/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:

    So depending on what your HTPP request looks like (i.e. which media type and in which order), you may get a text response, an XML response, or a JSON response.
    The XML response will look like:

    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.


    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.

    Courtesy of XML4Pharma - last update: February 2018