This page is part of the CDISC Mapping FHIR IG (v0.1.0: STU 1 Ballot 1) based on FHIR R4. The current version which supercedes this version is 1.0.0. For a full list of available versions, see the Directory of published versions
Adverse event data in FHIR is handled by the AdverseEvent resource. This resource is the focus of the mappings in this guide. However, when using it to map to CDISC, implementers should consider two things
In the latter circumstance, research systems may also need to consult some or all of the following resources:
These latter resources won't convey information on relatedness to the study drug, mitigating actions, etc. However, they could trigger an investigation that would allow gathering of that information.
Guidance on interpreting the table can be found here.
CDISC | FHIR map (or gap) | Comment | |||
---|---|---|---|---|---|
Name | CDASH | SDTM | Element | FHIRPath | |
Study ID or Number | STUDYID | STUDYID | AdverseEvent.researchSubject |
AdverseEvent.study.resolve().partOf.resolve().identifier.value ResearchSubject.where(subject=AdverseEvent.subject).study.resolve().partOf.resolve().identifier.value |
Mapping is based on presumption that research subject will be tied to site-specific ResearchStudy, which will then be part of overall ResearchStudy. The direct path using AdverseEvent.study will only exist if the system maintaining the AdverseEvent is aware of its relevance to the Study. |
Study Site ID | SITEID | DM.SITEID | ResearchStudy.site |
AdverseEvent.study.resolve().identifier.value ResearchSubject.where(subject=AdverseEvent.subject).study.resolve().identifier.value |
Mapping is based on presumption that research subject will be tied to site-specific ResearchStudy, which will then be part of overall ResearchStudy. The direct path using AdverseEvent.study will only exist if the system maintaining the AdverseEvent is aware of its relevance to the Study. |
Subject ID for the Study | SUBJID | DM.SUBJID | ResearchSubject.identifier |
ResearchSubject.where(individual=AdverseEvent.subject).identifier.value |
Study subject is found by finding the StudySubject that corresponds to the same Patient and ResearchStudy as the AdverseEvent. No standard way to decide which subject identifier to use |
Any AdverseEvent | AEYN | In FHIR, this would be determined by searching for AdverseEvents with a given subject (possibly also filtered by research study) and excluding those that were entered in error. If a flag were necessary, it would be an extension on Study, not sent on AdverseEvent. It might also be necessary to search for Condition instances, Observation instances, Encounters with particular reasons and other resources if the desire is to have the full set of potential adverse reactions. | |||
Category for AdverseEvent | AECAT | AECAT | AdverseEvent.category |
AdverseEvent.category |
This is typically sponsor-specific and we would not expect this to come from the site. In FHIR, an AdverseEvent can be categorized in as many ways as desired with whatever granularity is desired. When converting from FHIR to CDASH, systems will need to look at the FHIR categories (and potentially other information) to determine how best to populate AECAT and AESCAT based on the study-designed categories (unless they've pre-arranged with the EHR to ensure it captures the same codes) |
Subcategory for AdverseEvent | AESCAT | AESCAT | AdverseEvent.category |
AdverseEvent.category |
This is typically sponsor-specific and we would not expect this to come from the site. In FHIR, an AdverseEvent can be categorized in as many ways as desired with whatever granularity is desired. When converting from FHIR to CDASH, systems will need to look at the FHIR categories (and potentially other information) to determine how best to populate AECAT and AESCAT based on the study-designed categories (unless they've pre-arranged with the EHR to ensure it captures the same codes) |
A sponsor defined identifier | AESPID | AESPID | AdverseEvent.identifier |
AdverseEvent.identifier.where(assigner=sponsor).value AdverseEvent.refID |
The assigner of the identifier can be explicit or inferred by the Identifier.system. |
Reported Term for the Adverse Event | AETERM | AETERM | Condition.code |
AdverseEvent.resultingCondition.resolve().code |
|
AdverseEvent Occurrence | AEOCCUR | FAORRES | FHIR only captures AdverseEvents that have actually occurred. A flag about whether a particular potential adverse reaction has been detected or not could be captured using Questionnaire Response | ||
Prespecified AdverseEvent | AEPRESP | AEPRESP | If captured within an EHR, this would be an extension on the existing extension that references the ResearchStudy. (An AdverseEvent might be pre-specified for one study and not for another.) | ||
Adverse Event Start Date | AESTDAT | AESTDTC | AdverseEvent.date |
AdverseEvent.date(date portion) |
|
Adverse Event Start Time | AESTTIM | AESTDTC | AdverseEvent.date |
AdverseEvent.date(time portion) |
|
AE Location of Event | AELOC | AELOC | AdverseEvent.resultingCondition.bodySite |
AdverseEvent.resultingCondition.bodySite |
Requires knowledge or review of data to ensure location, laterality and directionality are included in the code and can be parsed. |
Adverse Event Laterality | AELAT | AELAT | AdverseEvent.resultingCondition.bodySite |
AdverseEvent.resultingCondition.bodySite |
Requires knowledge or review of data to ensure location, laterality and directionality are included in the code and can be parsed. |
Adverse Event Directionality | AEDIR | AEDIR | AdverseEvent.resultingCondition.bodySite |
AdverseEvent.resultingCondition.bodySite |
Requires knowledge or review of data to ensure location, laterality and directionality are included in the code and can be parsed. |
AE Location Portion or Totality | AEPORTOT | AEPORTOT | AdverseEvent.resultingCondition.bodySite |
AdverseEvent.resultingCondition.bodySite |
Review of data to ensure location, laterality and directionality are included in the code and can be parsed. |
Ongoing AdverseEvent | AEONGO | AEENRTPT; AEENRF | The concept of ongoing for an AE in the context of CDASH/SDTM is non-existent as it is based on a Y or N flag and an NULL end date indicates the AdverseEvent is ongoing. | ||
Adverse Event End Date | AEENDAT | AEENDTC | AdverseEvent.extension |
AdverseEvent.extension(AdverseEvent.occurrence).valuePeriod.end |
Need to use a standard extension to pre-adopt the type allowed in R5. Element contains both date and time (if specified). |
Adverse Event End Time | AEENTIM | AEENDTC | AdverseEvent.extension |
AdverseEvent.extension(AdverseEvent.occurrence).valuePeriod.end |
Need to use a standard extension to pre-adopt the type allowed in R5. Element contains both date and time (if specified). |
Adverse Event Severity Intensity | AESEV | AESEV | AdverseEvent.severity |
AdverseEvent.severity |
|
AE Standard Toxicity Grade | AETOXGR | AETOXGR | Recommendation is to add extension for oncology or other studies requiring toxicity grades. | ||
AE Serious Event | AESER | AESER | AdverseEvent.seriousness |
AdverseEvent.seriousness |
|
Results in Death | AESDTH | AESDTH | AdverseEvent.outcome |
AdverseEvent.outcome='fatal' |
|
Death Date | DTHDAT | DM.DTHDTC | Patient.deceasedDateTime |
Patient.deceasedDateTime |
|
Is Life Threatening | AESLIFE | AESLIFE | AdverseEvent.seriousness |
AdverseEvent.seriousness |
These would typically be flagged by seriousness or outcome codes. Will need to propose change request to support capturing more than one |
Requires or Prolongs Hospitalization | AESHOSP | AESHOP | Note: there is Encounter.hospitalization.[x], but its relevance to AESHOSP may not be explicit and would require additional analysis. | ||
Persist or Signify Disability Incapacity | AESDISAB | AESDISAB | AdverseEvent.outcome |
AdverseEvent.outcome |
These would typically be flagged by seriousness or outcome codes. Will need to propose change request to support capturing more than one |
Congenital Anomaly or Birth Defect | AESCONG | AESCONG | AdverseEvent.outcome |
AdverseEvent.outcome |
These would typically be flagged by seriousness or outcome codes. Will need to propose change request to support capturing more than one |
Needs Intervention to Prevent Impairment | AESINTV | SUPPAE.QVAL | AdverseEvent.outcome |
AdverseEvent.outcome |
These would typically be flagged by seriousness or outcome codes. Will need to propose change request to support capturing more than one |
Other Medically Important Serious Event | AESMIE | AESMIE | AdverseEvent.outcome |
AdverseEvent.outcome |
Additional outcomes or seriousness codes would be specified |
Involves Cancer | AESCAN | AESCAN | AdverseEvent.outcome |
AdverseEvent.outcome |
Additional outcomes or seriousness codes would be specified |
Occurred with Overdose | AESOD | AESOD | AdverseEvent.causality.productRelatedness |
AdverseEvent.causality.productRelatedness |
Product Relatedness implies that the product is involved in the AE, but it doesn't indicate overdose. After looking through other fields, it does not look like there is a field that would cover this situation. In studies, OD would be a reason why the AE was marked as an SAE. |
AE Causality | AEREL | AEREL | AdverseEvent.suspectEntity.causality.productRelatedness |
AdverseEvent.suspectEntity.causality.productRelatedness |
|
Action Taken with study Treatment | AEACN | AEACN | AdverseEvent.extension |
AdverseEvent.extension(AdverseEvent.mitigatingAction).extension(item).valueCodeableConcept |
Pre-adopting R5 capability via a standard extension. Note that the extension captures all actions taken, so filtration would be needed to select only those related to study treatment |
Actions Taken with Device | AEACNDEV | SUPPAE.QVAL | AdverseEvent.extension |
AdverseEvent.extension(AdverseEvent.mitigatingAction).extension(item).valueCodeableConcept |
Pre-adopting R5 capability via a standard extension. Note that the extension captures all actions taken, so filtration would be needed to select only those related to devices |
Other Action Taken | AEACNOTH | AEACNOTH | AdverseEvent.extension |
AdverseEvent.extension(AdverseEvent.mitigatingAction).extension(item).valueCodeableConcept |
Pre-adopting R5 capability via a standard extension. Note that the extension captures all actions taken, so filtration would be needed to exclude actions related to study treatment or device |
Outcome of Adverse Event | AEOUT | AEOUT | AdverseEvent.outcome |
AdverseEvent.outcome |
The coded equivalents matching up the CDISC controlled terminology. Meaning, in the EHR we may not have value-based coordination from FHIR-to-CDISC |
AE Caused Study Discontinuation | AEDIS | SUPPAE.QVAL | Add an extension - would need to be specific to study as relationship might vary by study. | ||
AE Related to Non-Study Treatment | AERLYSYN | Add an extension - would need to be specific to study as relationship might vary by study. | |||
AE Relationship to Non-Study Treatment | AERELNST | AERELNST | Add an extension - would need to be specific to study as relationship might vary by study. | ||
AdverseEvent of Special Interest | AESI | Add extension, probably on a study-specific link. (Adverse events of interst to one study wouldn't necessarily be of interest to others.) | |||
Pattern of AdverseEvent | AEPATT | AEPATT | Add extension | ||
Concomitant or Additional Treatment Given | AECONTRT | AECONTRT | AdverseEvent.extension |
AdverseEvent.extension(AdverseEvent.mitigatingAction).extension(item).valueCodeableConcept |
R5 pre-adoption extension. Note that mitigatingActions aren't necessarily treatments, so codes would need to be examined to only map those that were treatments |
AE Modified Reported Term | AEMODIFY | AEMODIFY | The fact one of the codings was modified would be captured as an extension | ||
AE Dictionary-Derived Term | AEDECOD | AEDECOD | AdverseEvent.resultingCondition.code |
AdverseEvent.resultingCondition.code |
Sponsors will populate this through the coding process and is applicable to items using MedDRA coding. |
AE Lowest Level Term | AELLT | AELLT | AdverseEvent.resultingCondition.code |
AdverseEvent.resultingCondition.code |
Sponsors will populate this through the coding process and is applicable to items using MedDRA coding. |
AE Lowest Level Term Code | AELLTCD | AELLTCD | AdverseEvent.resultingCondition.code |
AdverseEvent.resultingCondition.code |
Sponsors will populate this through the coding process and is applicable to items using MedDRA coding. |
AE Preferred Term Code | AEPTCD | AEPTCD | AdverseEvent.resultingCondition.code |
AdverseEvent.resultingCondition.code |
Sponsors will populate this through the coding process and is applicable to items using MedDRA coding. |
AE High Level Term | AEHLT | AEHLT | AdverseEvent.resultingCondition.code |
AdverseEvent.resultingCondition.code |
Sponsors will populate this through the coding process and is applicable to items using MedDRA coding. |
AE High Level Term Code | AEHLTCD | AEHLTCD | AdverseEvent.resultingCondition.code |
AdverseEvent.resultingCondition.code |
Sponsors will populate this through the coding process and is applicable to items using MedDRA coding. |
AE High Level Group Term | AEHLGT | AEHLGT | AdverseEvent.resultingCondition.code |
AdverseEvent.resultingCondition.code |
Sponsors will populate this through the coding process and is applicable to items using MedDRA coding. |
AE High Level Group Term Code | AEHLGTCD | AEHLGTCD | AdverseEvent.resultingCondition.code |
AdverseEvent.resultingCondition.code |
Sponsors will populate this through the coding process and is applicable to items using MedDRA coding. |
AE Primary System Organ Class | AESOC | AESOC | AdverseEvent.resultingCondition.code |
AdverseEvent.resultingCondition.code |
Sponsors will populate this through the coding process and is applicable to items using MedDRA coding. |
AE Primary System Organ Class Code | AESOCCD | AESOCCD | AdverseEvent.resultingCondition.code |
AdverseEvent.resultingCondition.code |
Sponsors will populate this through the coding process and is applicable to items using MedDRA coding. |
Any Other Actions Taken | AEACNOYN | AdverseEvent.extension |
AdverseEvent.extension(AdverseEvent.mitigatingAction).extension(item).valueCodeableConcept |
R5 pre-adoption extension. Note that mitigatingActions also include treatments, so codes would need to be examined to only map those that were NOT treatments |