The XML4Pharma Application Server

XML4Pharma CDISC SDS (SDTM+SEND) Variable Services


A number of web services about CDISC SDS (=SDTM+SEND) variables and versions have been developed (we decided to keep the older designation "SDS" as we find the term "SDTM" for as well "real SDTM" as for "SEND" confusing and discriminating).

This page also contains a number of RESTful web services that implement the corresponding Implementation Guides (IGs) of both the SDTM and SEND model.

The SDTM-IG versions supported are 3.1.2, 3.1.3, 3.2 and 3.3. The SEND-IG versions supported are 3.0 (3.1 coming).

Depending on what your application requests, XML or JSON structures will be returned.

NEW: 2020-05-01: Remark that the base of the service has been altered. The old base ("/CDISCCTService") can still be used until the end of June 2020.
Please change the base from "/CDISCCTService" to "/SDSService" in your applications!

NEW: 2018-12-06: SDTM 1.7 / SDTM-IG 3.3 implemented

REMARK: SDS Version 1.5 (the base for the SEND-IG 3.1) is NOT implemented yet (work in progress)

REMARK on accept-headers. In your applications, typically, an "accept header" will be send with the request, asking for either XML or JSON format for the response. Some applications however, such as XSLT or XQuery applications, do not send an "accept header", and what format will be returned is unsure. In such cases, you can either add ".xml" or ".json" at the end of the request string to ensure that either the XML format or JSON format is returned for the response.

IMPORTANT: There is some overlap in functionality with that of the CDISC-Library. We ENCOURAGE you to use the CDISC-Library instead of the services of this page. We do however keep our own services available for several reasons:

In all cases, the base of the RESTful web service is: http://www.xml4pharmaserver.com:8080/SDSService/rest/.
The base is followed by the name of the service (e.g. "SDSVariableInfo")

The following RESTful CDISC SDS variables services are currently available


  • Get SDS Variable Info
  • With this web service, when you to submit an SDS variable name (e.g. "LBTESTCD"), you will obtain a list of SDS standard versions in which the variable has been defined, together with a lot of information about that variable.

    The request structure is:

    http://www.xml4pharmaserver.com:8080/SDSService/rest/SDSVariableInfo/{sdsvarname}

    where {sdsvarname} is the variable name, like "LBTESTCD" or "AETERM" or "USUBJID". In case the variable is generic and for more than one domain, you can also use it require for it with the domain name replaced by "--", e.g. "--TESTCD" or "--TERM".

    For example, if you use:

    http://www.xml4pharmaserver.com:8080/SDSService/rest/SDSVariableInfo/LBTESTCD

    You will obtain the following XML (at least if your application/browser requests to get XML):

    stating that the SDS variable "LBTESTCD" is and can be used in SDS version 1.2, version 1.3, version 1.4 and recently also in version 1.7

    If your application requests JSON, you will get something like:




  • Get SDS Variable Info for a specific SDS Version
  • This web service is very similar to the previous one: when you to submit an SDS variable name (e.g. "AETERM") and an SDS Version (e.g. "1.4") you will obtain information about that specific variable in the specific SDS version.

    REMARK: as SEND 3.0 is based on SDS 1.2, use "1.2" for the version in case you are looking for a variable name that is specific to SEND.

    The request structure is:

    http://www.xml4pharmaserver.com:8080/SDSService/rest/SDSVariableInfo/{sdsversion}/{sdsvarname}

    For example, if you use:

    http://www.xml4pharmaserver.com:8080/SDSService/rest/SDSVariableInfo/1.4/ECPORTOT

    You will obtain the following XML (at least if your application/browser requests to get XML):

    Depending on application request, you will get similar structures as above for JSON requests

    Besides getting the information itself, these services are especially useful to test whether a variable was already defined in a specific SDS version.
    For example, the variable "--PORTOT" was defined in SDS Version 1.4, but not yet in version 1.3. So if your application requests:

    http://www.xml4pharmaserver.com:8080/SDSService/rest/SDSVariableInfo/1.3/ECPORTOT

    and your application requests XML, you will get:



  • Get SDS Variable Info for "generic" SDS Variable
  • The request structure is:

    http://www.xml4pharmaserver.com:8080/SDSService/rest/SDSGenericVariableInfo/{sdsvarname}

    Submit a "generic" SDS variable name (e.g. "--REASND") and a list of SDS variables and versions is returned.
    This service is especially useful to find out in which domains the variable is usually used (as defined by its appearance in the SDTM-IG) and to see what differences there are (in label, CDISC notes, ...) between domains

    For example:

    http://www.xml4pharmaserver.com:8080/SDSService/rest/SDSGenericVariableInfo/--LOC

    returns (when XML is requested):

    First, the "generic" implementations are displayed, followed by the "domain implementations":

    Remark 1: In your request, you can as well use "--LOC" as "LOC".

    Remark 2: For variables that have no domain prefix (like "VISITNUM"), just us as is, e.g.: http://www.xml4pharmaserver.com:8080/SDSService/rest/SDSGenericVariableInfo/VISITNUM

    The web service will then show you in which domain (and SDS Version) "VISITNUM" is used according to the SDTM-IG.

    The number of results in the set may considerably vary. For example, for "--PORTOT", which is a new variable as of SDS 1.4, you will get 7 results (3 generic ones for each of the 3 main classes, for EC, PR, MO and for TU),
    whereas for "USUBJID" you will get 100 results (well, not surprising isn't it). For "--TESTCD" you will obtain 57 results.

    (first 6 XML nodes are collapsed)



  • Get all variables (with detailed info) for a given Implementation Guide, Version and Domain
  • IMPORTANT: Currently only implemented for SDTM (3.1.2, 3.1.3, 3.2, 3.3) and SEND (3.0), not implemented yet for ADaM

    The request structure is:

    http://www.xml4pharmaserver.com:8080/SDSService/rest/VariablesForDomain/{model}/{version}/{domain}

    For example for SDTM-IG v.3.3 domain:

    http://www.xml4pharmaserver.com:8080/SDSService/rest/VariablesForDomain/SDTM/3.3/LB

    returns (when XML is requested):

    Or for a SEND 3.0 domain:

    http://www.xml4pharmaserver.com:8080/SDSService/rest/VariablesForDomain/SEND/3.0/FW

    returns (when XML is requested - some elements are collapsed):



  • Get SDTM variable detailed information for a given SDTM-IG version, domain and variable name
  • The request structure is:

    http://www.xml4pharmaserver.com:8080/SDSService/rest/SDTMVariableInfoForDomainAndVersion/{sdtmigversion}/{domain}/{varname}

    For example:

    http://www.xml4pharmaserver.com:8080/SDSService/rest/SDTMVariableInfoForDomainAndVersion/3.2/LB/LBDTC

    returns (when XML is requested):

    or similarly for SDTM-IG 3.3:
    http://www.xml4pharmaserver.com:8080/SDSService/rest/SDTMVariableInfoForDomainAndVersion/3.3/LB/LBDTC

    This Web Service is also IDEAL to find out whether a variable not directly mentioned in the SDTM-IG (e.g. LBSTDTC) is allowed as a variable in the LB domain. In this case, as --STDTC is a "timing variable" it is allowed in ALL general observation classes.
    We then automatically obtain all necessary information, e.g. for label, data type, ... from the SDTM model (so not from the SDTM-IG) which can be used in e.g. validation.

    Remark that the response is slightly different. There is no "Format" element (as this is only defined in the SDTM-IG, not in the model), but there now is a "CDISC_Notes" element. "Core" is set the "Perm" (permissible), as added non-IG variables are always permissible.
    Very important is that the element "Variable_Label" is replaced by the element "Variable_Label_From_Model". The reason for this is that the latter is only a suggested label, which should not be used for validation.

    If we try the same for e.g. "OCCUR" (which is not allowed in "Findings" domains at all), we will get for "LBOCCUR":



  • Get SEND variable detailed information for a given SEND-IG version (currently limited to 3.0), domain and variable name
  • The request structure is:

    http://www.xml4pharmaserver.com:8080/SDSService/rest/SENDVariableInfoForDomainAndVersion/{sendigversion}/{domain}/{varname}

    For example:

    http://www.xml4pharmaserver.com:8080/SDSService/rest/SENDVariableInfoForDomainAndVersion/3.0/FW/FWREASEX

    returns (when XML is requested):

    Remark: The SEND-IG version can currently only be "3.0", we are currently working on implementing version "3.1".


  • Suggest SDTM variable based on the similarity between the SDTM variable label and the provided search string, for a given SDTM-IG version (3.1.2, 3.1.3, 3.2. or 3.3)
  • The request structure is:

    http://www.xml4pharmaserver.com:8080/SDSService/rest/SuggestSDTMVariable/{sdtmigversion}/{searchstring}

    For example:

    http://www.xml4pharmaserver.com:8080/SDSService/rest/SuggestSDTMVariable/3.2/hospital
    will return all variable information about the SDTM variables --HOSP and AEHOSP

    You can also add several words, for example:

    http://www.xml4pharmaserver.com:8080/SDSService/rest/SuggestSDTMVariable/3.2/requires hospital
    or: http://www.xml4pharmaserver.com:8080/SDSService/rest/SuggestSDTMVariable/3.3/adverse event

    The responses are ordered by similarity (highest similarity first).

    Remarks:


  • Get whether an SDTM variable is "required", "expected" or "permissible"
  • This service returns the the result "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 SDTM-IG (3.1.2, 3.1.3, 3.2, 3.3).
    ATTENTION: SDTM-IG 3.4 nor SENDIGs have not been implemented yet

    P.S. You can also provide the corresponding SDS model version, as there is a 1:1 correspondence between the model version and the IG version.
    URL: http://www.xml4pharmaserver.com:8080/SDSService/rest/CDISCCoreFromSDTMVariable/{version}/{domain}/{varName}
    Example:
    http://www.xml4pharmaserver.com:8080/SDSService/rest/CDISCCoreFromSDTMVariable/3.2/SV/VISITNUM
    OR (same result): http://www.xml4pharmaserver.com:8080/SDSService/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 VERY 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 for an SDTM variable (uppercase written) given the domain code (uppercase), and the version of the SDTM-IG ("3.1.2", "3.1.3" or "3.2") or the version of the corresponding SDS standard ("1.2", "1.3", or "1.4")
    (There is a 1:1 relationship between the SDTM-IG version and the SDS version).

    ATTENTION: SDTM-IG 3.3 has not been implemented yet)
    URL: http://www.xml4pharmaserver.com:8080/SDSService/rest/CDISCVariableLabelFromSDTMVariable/{version}/{domain}/{varName}
    Example:
    http://www.xml4pharmaserver.com:8080/SDSService/rest/CDISCVariableLabelFromSDTMVariable/1.3/SV/VISITNUM
    OR (same result): http://www.xml4pharmaserver.com:8080/SDSService/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 SDTM-IG (3.1.2, 3.1.3, 3.2 - 3.3 not supported yet) or the version of the corresponding SDS standard (1.2, 1.3, 1.4 - 1.7 not supported yet) or

    URL: http://www.xml4pharmaserver.com:8080/SDSService/rest/CDISCRoleFromSDTMVariable/{version}/{domain}/{varName}
    Example:
    http://www.xml4pharmaserver.com:8080/SDSService/rest/CDISCRoleFromSDTMVariable/1.3/SV/VISITNUM
    OR (same result): http://www.xml4pharmaserver.com:8080/SDSService/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, 1.4 or 1.7) or the version of the SDTM-IG (3.1.2, 3.1.3, 3.2 - 3.4 not supported yet)

    URL: http://www.xml4pharmaserver.com:8080/SDSService/rest/CDISCSASXPTDataTypeFromSDTMVariable/{version}/{domain}/{varName}
    Example:
    http://www.xml4pharmaserver.com:8080/SDSService/rest/CDISCSASXPTDataTypeFromSDTMVariable/1.3/AE/AESEQ
    OR (same result): http://www.xml4pharmaserver.com:8080/SDSService/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 result for an SDTM variable (uppercase written) given the domain code (uppercase), and the version of the SDS standard (1.2, 1.3, 1.4, 1.7) or the version of the SDTM-IG (3.1.2, 3.1.3 or 3.2 - 3.3 not supported yet)


    URL: http://www.xml4pharmaserver.com:8080/SDSService/rest/CDISCNotesFromSDTMVariable/{version}/{domain}/{varName}
    Example:
    http://www.xml4pharmaserver.com:8080/SDSService/rest/CDISCNotesFromSDTMVariable/1.3/SV/VISITNUM
    OR (same result): http://www.xml4pharmaserver.com:8080/SDSService/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


    Courtesy of XML4Pharma - last update: May 2020