diff --git a/docs/CSV_Templates.xlsx b/docs/CSV_Templates.xlsx index e350d737..512870c7 100755 Binary files a/docs/CSV_Templates.xlsx and b/docs/CSV_Templates.xlsx differ diff --git a/docs/ctc-adverse-event.csv b/docs/ctc-adverse-event.csv index e2357065..c062b8b9 100644 --- a/docs/ctc-adverse-event.csv +++ b/docs/ctc-adverse-event.csv @@ -1,4 +1,4 @@ -mrn,adverseEventId,adverseEventCode,adverseEventCodeSystem,adverseEventDisplayText,suspectedCauseId,suspectedCauseType,seriousness,seriousnessCodeSystem,seriousnessDisplayText,category,categoryCodeSystem,categoryDisplayText,studyId,effectiveDate,recordedDate,grade -mrn-full-example,example-id-1,event-code,code-system,code-display,cause-id,resourceType,seriousness-code,code-system,seriousness-display,category-code,code-system,category-dislpay,id,1994-12-09,1994-12-09,1, -mrn-two-category-example,example-id-2,event-code,code-system,code-display,cause-id,resourceType,seriousness-code,code-system,seriousness-display,category-code|category-code,code-system|code-system,category-display|category-display,id,1994-12-09,1994-12-09,3 -mrn-minimal-example,,code-from-default-system,,,,,,,,,,,,1994-12-09,,1 +mrn,adverseEventId,adverseEventCode,adverseEventCodeSystem,adverseEventCodeVersion,adverseEventDisplayText,adverseEventText,suspectedCauseId,suspectedCauseType,seriousness,seriousnessCodeSystem,seriousnessDisplayText,category,categoryCodeSystem,categoryDisplayText,studyId,effectiveDate,recordedDate,grade +mrn-full-example,example-id-1,event-code,code-system,code-version,code-display,event-text,cause-id,resourceType,seriousness-code,code-system,seriousness-display,category-code,code-system,category-dislpay,id,1994-12-09,1994-12-09,1, +mrn-two-category-example,example-id-2,event-code,code-system,code-version,code-display,event-text,cause-id,resourceType,seriousness-code,code-system,seriousness-display,category-code|category-code,code-system|code-system,category-display|category-display,id,1994-12-09,1994-12-09,3 +mrn-minimal-example,,code-from-default-system,,,,,,,,,,,,,,1994-12-09,,1 diff --git a/src/extractors/CSVCTCAdverseEventExtractor.js b/src/extractors/CSVCTCAdverseEventExtractor.js index e99b4fdb..5b1177af 100644 --- a/src/extractors/CSVCTCAdverseEventExtractor.js +++ b/src/extractors/CSVCTCAdverseEventExtractor.js @@ -14,7 +14,9 @@ function formatData(adverseEventData, patientId) { adverseeventid: adverseEventId, adverseeventcode: adverseEventCode, adverseeventcodesystem: adverseEventCodeSystem, + adverseeventcodeversion: adverseEventCodeVersion, adverseeventdisplaytext: adverseEventDisplayText, + adverseeventtext: adverseEventText, suspectedcauseid: suspectedCauseId, suspectedcausetype: suspectedCauseType, seriousness, @@ -47,7 +49,9 @@ function formatData(adverseEventData, patientId) { subjectId: patientId, code: adverseEventCode, system: !adverseEventCodeSystem ? 'http://snomed.info/sct' : adverseEventCodeSystem, + version: adverseEventCodeVersion, display: adverseEventDisplayText, + text: adverseEventText, suspectedCauseId, suspectedCauseType, seriousnessCode: seriousness, diff --git a/src/templates/CTCAdverseEventTemplate.js b/src/templates/CTCAdverseEventTemplate.js index 082fa8b0..a00f661f 100644 --- a/src/templates/CTCAdverseEventTemplate.js +++ b/src/templates/CTCAdverseEventTemplate.js @@ -1,12 +1,15 @@ const { coding, reference, extensionArr } = require('./snippets'); -const { ifAllArgsObj, ifSomeArgsObj, ifAllArgs, ifSomeArgsArr } = require('../helpers/templateUtils'); +const { + ifAllArgsObj, ifSomeArgsObj, ifAllArgs, ifSomeArgs, ifSomeArgsArr, +} = require('../helpers/templateUtils'); -function eventTemplate(eventCoding) { +function eventTemplate(eventCoding, eventText) { return { event: { coding: [ coding(eventCoding), ], + ...(eventText && { text: eventText }), }, }; } @@ -71,11 +74,11 @@ function gradeTemplate(grade) { } function CTCAdverseEventTemplate({ - id, subjectId, code, system, display, suspectedCauseId, suspectedCauseType, seriousnessCode, seriousnessCodeSystem, seriousnessDisplayText, category, + id, subjectId, code, system, version, display, text, suspectedCauseId, suspectedCauseType, seriousnessCode, seriousnessCodeSystem, seriousnessDisplayText, category, studyId, effectiveDateTime, recordedDateTime, grade, }) { if (!(subjectId && code && system && effectiveDateTime && grade)) { - throw Error('Trying to render an AdverseEventTemplate, but a required argument is messing; ensure that subjectId, code, system, actuality, grade, and effectiveDateTime are all present'); + throw Error('Trying to render an AdverseEventTemplate, but a required argument is messing; ensure that subjectId, code, system, grade, and effectiveDateTime are all present'); } return { @@ -83,7 +86,7 @@ function CTCAdverseEventTemplate({ id, ...extensionArr(gradeTemplate(grade)), subject: reference({ id: subjectId, resourceType: 'Patient' }), - ...ifSomeArgsObj(eventTemplate)({ code, system, display }), + ...ifSomeArgs(eventTemplate)({ code, system, version, display }, text), ...ifAllArgsObj(suspectedCauseTemplate)({ suspectedCauseId, suspectedCauseType }), ...ifSomeArgsObj(seriousnessTemplate)({ code: seriousnessCode, system: seriousnessCodeSystem, display: seriousnessDisplayText }), ...ifSomeArgsArr(categoryArrayTemplate)(category), diff --git a/test/extractors/fixtures/csv-ctc-adverse-event-bundle.json b/test/extractors/fixtures/csv-ctc-adverse-event-bundle.json index cac09cd3..b6bf0be1 100644 --- a/test/extractors/fixtures/csv-ctc-adverse-event-bundle.json +++ b/test/extractors/fixtures/csv-ctc-adverse-event-bundle.json @@ -30,9 +30,11 @@ { "system": "code-system", "code": "109006", + "version": "code-version", "display": "Anxiety disorder of childhood OR adolescence" } - ] + ], + "text": "event-text" }, "suspectEntity": [ { diff --git a/test/extractors/fixtures/csv-ctc-adverse-event-module-response.json b/test/extractors/fixtures/csv-ctc-adverse-event-module-response.json index 8c2b868c..732d7c1d 100644 --- a/test/extractors/fixtures/csv-ctc-adverse-event-module-response.json +++ b/test/extractors/fixtures/csv-ctc-adverse-event-module-response.json @@ -4,7 +4,9 @@ "adverseeventid": "adverseEventId-1", "adverseeventcode": "109006", "adverseeventcodesystem": "code-system", + "adverseeventcodeversion": "code-version", "adverseeventdisplaytext": "Anxiety disorder of childhood OR adolescence", + "adverseeventtext": "event-text", "suspectedcauseid": "procedure-id", "suspectedcausetype": "Procedure", "seriousness": "serious", diff --git a/test/sample-client-data/ctc-adverse-event-information.csv b/test/sample-client-data/ctc-adverse-event-information.csv index aed2d5a3..0b10ab05 100644 --- a/test/sample-client-data/ctc-adverse-event-information.csv +++ b/test/sample-client-data/ctc-adverse-event-information.csv @@ -1,4 +1,4 @@ -mrn,adverseEventId,adverseEventCode,adverseEventCodeSystem,adverseEventDisplayText,suspectedCauseId,suspectedCauseType,seriousness,seriousnessCodeSystem,seriousnessDisplayText,category,categoryCodeSystem,categoryDisplayText,studyId,effectiveDate,recordedDate,grade -123,adverseEventId-1,109006,code-system,Anxiety disorder of childhood OR adolescence,procedure-id,Procedure,serious,http://terminology.hl7.org/CodeSystem/adverse-event-seriousness,Serious,product-use-error|product-quality|wrong-rate,http://terminology.hl7.org/CodeSystem/adverse-event-category|http://snomed.info/sct|http://terminology.hl7.org/CodeSystem/adverse-event-category,Product Use Error|Product Quality|Wrong Rate,researchId-1,12-09-1994,12-09-1994,1 -456,adverseEventId-2,134006,http://snomed.info/sct,Decreased hair growth,medicationId-1,Medication,non-serious,http://terminology.hl7.org/CodeSystem/adverse-event-seriousness,Non-serious,product-quality|wrong-rate,http://terminology.hl7.org/CodeSystem/adverse-event-category|,Product Quality|,researchId-2,12-10-1995,12-10-1995,2 -789,adverseEventId-3,150003,,,,,,,,product-use-error,,,,12-09-1994,,3 \ No newline at end of file +mrn,adverseEventId,adverseEventCode,adverseEventCodeSystem,adverseEventCodeVersion,adverseEventDisplayText,adverseEventText,suspectedCauseId,suspectedCauseType,seriousness,seriousnessCodeSystem,seriousnessDisplayText,category,categoryCodeSystem,categoryDisplayText,studyId,effectiveDate,recordedDate,grade +123,adverseEventId-1,10012174,http://terminology.hl7.org/CodeSystem/MDRAE,20.0,Dehydration,DHN IV given,procedure-id,Procedure,serious,http://terminology.hl7.org/CodeSystem/adverse-event-seriousness,Serious,product-use-error|product-quality|wrong-rate,http://terminology.hl7.org/CodeSystem/adverse-event-category|http://snomed.info/sct|http://terminology.hl7.org/CodeSystem/adverse-event-category,Product Use Error|Product Quality|Wrong Rate,researchId-1,12-09-1994,12-09-1994,1 +456,adverseEventId-2,C143283,http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl,20.0,Anemia,AIHA NGTD,medicationId-1,Medication,non-serious,http://terminology.hl7.org/CodeSystem/adverse-event-seriousness,Non-serious,product-quality|wrong-rate,http://terminology.hl7.org/CodeSystem/adverse-event-category|,Product Quality|,researchId-2,12-10-1995,12-10-1995,2 +789,adverseEventId-3,150003,,,,,,,,,,product-use-error,,,,12-09-1994,,3 \ No newline at end of file diff --git a/test/templates/ctcAdverseEvent.test.js b/test/templates/ctcAdverseEvent.test.js index 19608cbc..2e2d0e1f 100644 --- a/test/templates/ctcAdverseEvent.test.js +++ b/test/templates/ctcAdverseEvent.test.js @@ -9,7 +9,9 @@ const VALID_DATA = { id: 'adverseEventId-1', code: '109006', system: 'code-system', + version: 'code-version', display: 'Anxiety disorder of childhood OR adolescence', + text: 'event-text', suspectedCauseId: 'procedure-id', suspectedCauseType: 'Procedure', seriousnessCode: 'serious', @@ -30,7 +32,9 @@ const MINIMAL_DATA = { effectiveDateTime: '1994-12-09', id: 'adverseEventId-1', grade: { code: '2', display: 'Moderate Adverse Event' }, + version: null, display: null, + text: null, suspectedCauseId: null, suspectedCauseType: null, seriousnessCode: null, @@ -49,7 +53,9 @@ const INVALID_DATA = { system: null, effectiveDateTime: null, grade: null, + text: 'event-text', id: 'adverseEventId-1', + version: 'code-version', display: 'Anxiety disorder of childhood OR adolescence', suspectedCauseId: 'procedure-id', suspectedCauseType: 'Procedure', @@ -79,7 +85,9 @@ describe('test Adverse Event template', () => { test('missing non-required data should not throw an error', () => { const OPTIONAL_DATA = { id: 'adverseEventId-1', + version: 'code-version', display: 'Anxiety disorder of childhood OR adolescence', + text: 'event-text', suspectedCauseId: 'procedure-id', suspectedCauseType: 'Procedure', seriousnessCode: 'Serious', diff --git a/test/templates/fixtures/maximal-ctc-adverse-event-resource.json b/test/templates/fixtures/maximal-ctc-adverse-event-resource.json index 81acb308..9e076f09 100644 --- a/test/templates/fixtures/maximal-ctc-adverse-event-resource.json +++ b/test/templates/fixtures/maximal-ctc-adverse-event-resource.json @@ -24,9 +24,11 @@ { "system": "code-system", "code": "109006", + "version": "code-version", "display": "Anxiety disorder of childhood OR adolescence" } - ] + ], + "text": "event-text" }, "suspectEntity": [ {