Skip to content

Commit 339cdf5

Browse files
authored
Merge pull request #178 from mcode/adverse-event-context
Adverse Event context additions
2 parents e786e29 + a5462d0 commit 339cdf5

File tree

3 files changed

+47
-2
lines changed

3 files changed

+47
-2
lines changed

src/extractors/FHIRAdverseEventExtractor.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,12 @@ class FHIRAdverseEventExtractor extends BaseFHIRExtractor {
1818
try {
1919
allResearchStudyResources = getResearchStudiesFromContext(context);
2020
} catch (e) {
21-
logger.error(e.message);
21+
logger.debug(e.message);
2222
logger.debug(e.stack);
23+
if (!this.study) {
24+
logger.error('There is no ResearchStudy id to complete a request for Adverse Event resources; please include a ClinicalTrialInformationExtractor,'
25+
+ ' ResearchStudyExtractor, or "study" constructorArg in your extraction configuration.');
26+
}
2327
}
2428

2529
// The patient is referenced in the 'subject' field of an AdverseEvent

src/helpers/contextUtils.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,36 @@ function getConditionsFromContext(context) {
4747
return conditionsResourcesInContext;
4848
}
4949

50+
/**
51+
* Parses context for AdverseEvent resources
52+
* @param {Object} context - Context object consisting of a FHIR Bundle
53+
* @return {Array} All the AdverseEvent resources found in context
54+
*/
55+
function getAdverseEventsFromContext(context) {
56+
logger.debug('Getting adverse event resources from context');
57+
const adverseEventResourcesInContext = getBundleResourcesByType(context, 'AdverseEvent', {}, false);
58+
if (_.isEmpty(adverseEventResourcesInContext)) {
59+
throw Error('Could not find any adverse events in context; ensure that an AdverseEventExtractor is used earlier in your extraction configuration');
60+
}
61+
logger.debug(`AdverseEvent resources found in context. Found ${adverseEventResourcesInContext.length} adverse event resources.`);
62+
return adverseEventResourcesInContext;
63+
}
64+
65+
/**
66+
* Parses context for AdverseEvent entries, which themselves contain resources
67+
* @param {Object} context - Context object consisting of a FHIR Bundle
68+
* @return {Array} All the AdverseEvents entries found in context
69+
*/
70+
function getAdverseEventEntriesFromContext(context) {
71+
logger.debug('Getting adverse event entries from context');
72+
const adverseEventEntriesInContext = getBundleEntriesByResourceType(context, 'AdverseEvent', {}, false);
73+
if (adverseEventEntriesInContext.length === 0) {
74+
throw Error('Could not find any adverse events in context; ensure that an AdverseEventExtractor is used earlier in your extraction configuration');
75+
}
76+
logger.debug(`AdverseEvent entries found in context. Found ${adverseEventEntriesInContext.length} adverse event resources.`);
77+
return adverseEventEntriesInContext;
78+
}
79+
5080
/**
5181
* Parses context for Encounter resources
5282
* @param {Object} context - Context object consisting of a FHIR Bundle
@@ -78,4 +108,6 @@ module.exports = {
78108
getEncountersFromContext,
79109
getPatientFromContext,
80110
getResearchStudiesFromContext,
111+
getAdverseEventEntriesFromContext,
112+
getAdverseEventsFromContext,
81113
};

src/index.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,14 @@ const {
6565
const { getDiseaseStatusCode, getDiseaseStatusEvidenceCode, mEpochToDate } = require('./helpers/diseaseStatusUtils');
6666
const { formatDate, formatDateTime } = require('./helpers/dateUtils');
6767
const { lowercaseLookupQuery, createLowercaseLookup, createInvertedLookup } = require('./helpers/lookupUtils');
68-
const { getConditionEntriesFromContext, getConditionsFromContext, getEncountersFromContext, getPatientFromContext } = require('./helpers/contextUtils');
68+
const {
69+
getConditionEntriesFromContext,
70+
getConditionsFromContext,
71+
getEncountersFromContext,
72+
getPatientFromContext,
73+
getAdverseEventsFromContext,
74+
getAdverseEventEntriesFromContext,
75+
} = require('./helpers/contextUtils');
6976
const { parsePatientIds } = require('./helpers/appUtils');
7077
const { getConfig, validateConfig } = require('./helpers/configUtils');
7178
const configSchema = require('./helpers/schemas/config.schema.json');
@@ -150,6 +157,8 @@ module.exports = {
150157
getConditionsFromContext,
151158
getEncountersFromContext,
152159
getPatientFromContext,
160+
getAdverseEventEntriesFromContext,
161+
getAdverseEventsFromContext,
153162
// Configuration file schema
154163
configSchema,
155164
};

0 commit comments

Comments
 (0)