The XML4Pharma Application Server

XML4Pharma Web Services


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

2017-04-01: NEW: CDISC-CT version 2017-03-31 added

2016-12-31: NEW: CDISC-CT version 2016-12-16 added

2016-06: NEW: Additional SDS Variable Web Services, including for SEND domains, CDISC-CT version 2016-06-24 installed

2016-04-10: NEW: CDISC-CT services to check whether a CDISC-CT Codelist is extensible or not

2016-04-03: NEW: CDISC-CT services for earlier versions of CDISC Controlled Terminilogy (down to 2014-03-28)

2016-03-08: NEW: CDISC SDS Variable Web Services

2016-02-12: NEW: new webservices: get "Role" and get "SAS-XPT DataType" from SDTM variable name, domain and SDS Version

2017-03-22: NEW: new webservice: get SDTM Term from NCI code

2016-01-03: NEW: new webservice: get CDISC Preferred Term from NCI code

2016-04-17: NEW: latest CDISC-CT (2016-03-25), including SDTM, Questionnaires, Ratings, and Scales terminology codelists (CRS), ADaM and 'Clinical Data Element Glossary' has been loaded into the underlying database!

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

2015-02-21: Remark: Resource names have been changed to better comply with RESTful naming conventions. The old resources will however keep working until 2015-05-01

2015-02-05: NEW: you can now also query for Trial Summary Parameter codes

2015-02-05: NEW: latest CDISC-CT (2014-12-19), including Questionnaires codelists (Clinical Outcome Assessments - COA) has been loaded into the underlying database!

2015-04-17: NEW: latest CDISC-CT (2015-03-27), including SDTM, Questionnaires codelists (Clinical Outcome Assessments - COA), ADaM and 'Clinical Data Element Glossary' has been loaded into the underlying database!

2015-04-23: New: New set of CDISC Domains / Standards Versions 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

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

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.



A good number of RESTful CDISC Controlled Terminology web services, listed below, is currently available.
The SDTM and COA/QRS/QRS-FT of the CDISC-CT are usually covered by these web services.
We will soon also implement ADaM and SEND Controlled Terminology.

Following versions of the CDISC-CT are supported:

  • 2014-03-28
  • 2014-06-27
  • 2014-09-26
  • 2014-10-06 - WARNING: This version did not contain COA/QS/QRS-FT
  • 2014-12-19
  • 2015-03-27
  • 2015-06-26
  • 2015-09-25
  • 2015-12-18
  • 2016-03-25
  • 2016-06-24
  • 2016-09-30 - WARNING: see CDISC bug warning
  • 2016-12-16
  • 2017-03-31
  • 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 2016-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.


  • 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 2016-12-16) 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 2016-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.


  • 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 '2016-12-16') 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 32 allowed values from the latest codelist version (currently '2016-12-16'), 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 '2016-12-16') 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 32 allowed values from the latest codelist version (currently '2016-12-16'), 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


  • 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: June 2016