The Automatable Discovery and Access Matrix (ADA-M) provides a standardized way to unambiguously represent the conditions related to data discovery and access. By adopting ADA-M, data custodians can generally describe what their data are (the Header section), who can access them (the Permissions section), terms related to their use (the Terms section), and special conditions (the Meta-Conditions). By doing so, data custodians can participate in data sharing and collaboration by making meta information about their data computer-readable and hence directly available for digital communication, searching and automation activities.
The ADA-M standard began development in late 2015 with the participation of over 50 volunteers form academia and industry and the first version (version 1.0) completed in late 2016. More about ADA-M is available on the Regulatory and Ethics Toolkit page.
This repository is focussed on providing an API implementation of ADA-M version 1.0 using OpenAPI Specifications to describe how to interface ADA-M API services.
ADA-M aims to help data custodians assign a discovery and access 'Profile' to their dataset by stipulating formally and in a machine-readable way the conditions for access to these data. The following describes the four sections that comprise the fields according to ADA-M version 1.
The Header section is used to generally describe the source of the data and what they are. The Protocol Buffer .proto description of ADA-M is defined according to the following 11 Header section fields:
matrixNamea string describing the custom name of the matrixmatrixVersiona string the version of the matrix e.g., "1.0"matrixReferencesan array of strings to state any reference to this matrix e.g., publications, URLs, DOIs for the matrix (there can be many).matrixProfileCreateDatea string describing the creation date of this matrix.matrixProfileUpdatesan array of ProfileUpdates describing the date and description of any updates made to the fields of this matrix (there can be many).resourceNamea string describing the name of the data resource this matrix relates to.resourceReferencesan array of strings describing to state any existing reference to the data resource e.g., publications, URLs, DOIs for the resource (there can be many).resourceDescriptiona string description of the data resource.resourceDataLevelan option to define the type of level of the data resource (either UNKNOWN, DATABASE, METADATA, SUMMARISED, DATASET, RECORDSET, RECORD, or RECORDFIELD)resourceContactNamesan array of Contact describing the name and email of the contacts (there can be many) for the data resource.resourceContactOrganisationsan array of strings describing the organisation that is the custodian of the data resource.
The Profile section is used to describe the individual or organisation profile for the data requestor.
-
countryan Unlimited or Limited option setting -
allowedCountriesan array of country names allowed to access this data -
organisationan Unlimited or Limited option setting -
allowedOrganisationsan array of country names allowed to access this data -
nonProfitOrganisationan Unlimited, Limited, Unlimited Obligatory, Limited Obligatory, or Forbidden option setting -
allowedNonProfitOrganisationsan array of non-profit organisations allowed to access this data -
profitOrganisationan Unlimited, Limited, Unlimited Obligatory, Limited Obligatory, or Forbidden option setting -
allowedProfitOrganisationsan array of for-profit organisations allowed to access this data -
personan Unlimited or Limited option setting -
allowedPersonsan array of persons allowed to access this data -
academicProfessionalan Unlimited, Limited, Unlimited Obligatory, Limited Obligatory, or Forbidden option setting -
allowedAcademicProfessionalsan array of academic professional types allowed to access this data -
clinicalProfessionalan Unlimited, Limited, Unlimited Obligatory, Limited Obligatory, or Forbidden option setting -
allowedClinicalProfessionalsan array of clinical professional types allowed to access this data -
profitProfessionalan Unlimited, Limited, Unlimited Obligatory, Limited Obligatory, or Forbidden option setting -
allowedProfitProfessionalsan array of for-profit professional types allowed to access this data -
nonProfessionalan Unlimited, Limited, Unlimited Obligatory, Limited Obligatory, or Forbidden option setting -
allowedNonProfessionalsan array of non professional types allowed to access this data -
nonProfitPurposean Unlimited, Limited, Unlimited Obligatory, Limited Obligatory, or Forbidden option setting -
allowedNonProfitPurposesan array of non-profit purposes allowed for this data -
profitPurposean Unlimited, Limited, Unlimited Obligatory, Limited Obligatory, or Forbidden option setting -
allowedProfitPurposesan array of for-profit purposes allowed for this data -
researchPurposean Unlimited, Limited, Unlimited Obligatory, Limited Obligatory, or Forbidden option setting -
allowedResearchPurposesan array of research purposes allowed for this data -
allowedResearchProfilesan array of research types allowed to access this data -
clinicalPurposean Unlimited, Limited, Unlimited Obligatory, Limited Obligatory, or Forbidden option setting -
allowedClinicalPurposean array of clinical purposes allowed for this data -
allowedClinicalProfilesan array of clinical types allowed to access this data
The Term section is used to describe the terms or conditions under which a data requestor must abide to with respect to the use of the data.
-
noAuthorizationTermsboolean value, if true then no authorization terms must be met by requestor -
whichAuthorizationTermsan array of strings describing any authorization terms -
noPublicationTermsboolean value, if true then no publication terms must be met by requestor -
whichPublicationTermsan array of strings describing any publication terms -
noTimelineTermsboolean value, if true then no timeline terms must be met by requestor -
whichTimelineTermsan array of strings describing any timeline terms -
noSecurityTermsboolean value, if true then no security terms must be met by requestor -
whichSecurityTermsan array of strings describing any security terms -
noExpungingTermsboolean value, if true then no data expunging terms must be met by requestor -
whichExpungingTermsan array of strings describing any data expunging terms -
noLinkingTermsboolean value, if true then no data linking terms must be met by requestor -
whichLinkingTermsan array of strings describing any data linking terms -
noRecontactTermsboolean value, if true then no recontact terms must be met by requestor -
allowedRecontactTermsan array of strings describing any recontact terms -
compulsoryRecontactTermsan array of strings describing any compulsory recontact terms -
noIPClaimTermsboolean value, if true then no intellectual property claim terms must be met by requestor -
whichIPClaimTermsan array of strings describing any intellectual property claim terms -
noReportingTermsboolean value, if true then no reporting terms must be met by requestor -
whichReportingTermsan array of strings describing any reporting terms -
noCollaborationTermsboolean value, if true then no collaboration terms must be met by requestor -
whichCollaborationTermsan array of strings describing any collaboration terms -
noPaymentTermsboolean value, if true then no payment terms must be met by requestor -
whichPaymentTermsan array of strings describing any payment terms
The Meta-Conditions section is used to describe aspects of the data that have to do with how the matrix should be used and othe special conditions.
sharingModeoption to select the mode of data sharing among: Unknown, Discovery, Access, Discovery and AccessmultipleObligationsRulethe intepretation rule if multiple obligatory profiles are specified.noOtherConditionsboolean value to state if there are no other use restrictions/limitations in force which are not herein specified.whichOtherConditionsan array of strings describing other permissions/limitations that may apply as specified.sensitivePopulationsboolean value to state if there is a special evaluation required for access requests involving sensitive/restricted populations.uniformConsentboolean value to state if identical consent permissions have been provided by all subjects