Skip to content

Commit 240642e

Browse files
committed
not-evaluated status parsing
1 parent 9dedb04 commit 240642e

File tree

4 files changed

+15
-15
lines changed

4 files changed

+15
-15
lines changed

src/extractors/CSVCancerDiseaseStatusExtractor.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class CSVCancerDiseaseStatusExtractor {
2323
const evidenceDelimiter = '|';
2424
return arrOfDiseaseStatusData.map((record) => ({
2525
status: record.observationStatus || 'final',
26-
value: {
26+
value: record.observationStatus === 'not-evaluated' ? null : {
2727
code: record.diseaseStatusCode,
2828
system: 'http://snomed.info/sct',
2929
display: record.diseaseStatusText ? record.diseaseStatusText : getDiseaseStatusDisplay(record.diseaseStatusCode, this.implementation),

src/templates/CancerDiseaseStatusTemplate.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { coding, extensionArr, reference, valueX } = require('./snippets');
1+
const { coding, extensionArr, reference, valueX, dataAbsentReasonExtension } = require('./snippets');
22

33
function evidenceTemplate({ evidence }) {
44
if (!evidence || evidence.length === 0) return [];
@@ -23,6 +23,11 @@ function subjectTemplate({ subject }) {
2323
};
2424
}
2525

26+
function valueTemplate(valueObj) {
27+
if (valueObj === null) return { valueCodeableConcept: extensionArr(dataAbsentReasonExtension('not-asked')) };
28+
return valueX(valueObj, 'valueCodeableConcept');
29+
}
30+
2631
function cancerDiseaseStatusTemplate({
2732
id,
2833
status,
@@ -32,7 +37,7 @@ function cancerDiseaseStatusTemplate({
3237
value,
3338
evidence,
3439
}) {
35-
if (!(id && status && effectiveDateTime && condition && subject && value)) {
40+
if (!id || !status || !effectiveDateTime || !condition || !subject || (!value && status !== 'not-evaluated')) {
3641
throw Error('Trying to render a CancerDiseaseStatusTemplate, but a required argument is missing; ensure that id, status, effectiveDateTime, condition, subject, and value are all present');
3742
}
3843

@@ -45,7 +50,7 @@ function cancerDiseaseStatusTemplate({
4550
],
4651
},
4752
...extensionArr(...evidenceTemplate({ evidence })),
48-
status,
53+
status: status === 'not-evaluated' ? 'final' : status,
4954
category: [
5055
{
5156
coding: [
@@ -70,7 +75,7 @@ function cancerDiseaseStatusTemplate({
7075
effectiveDateTime,
7176
...focusTemplate({ condition }),
7277
...subjectTemplate({ subject }),
73-
...valueX(value, 'valueCodeableConcept'),
78+
...valueTemplate(value),
7479
};
7580
}
7681

test/templates/cancerDiseaseStatus.test.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,8 @@ describe('test CancerDiseaseStatus template', () => {
4444
const MINIMAL_DATA = {
4545
// Minimal amount of data to be accepted, evidence is excluded
4646
id: 'CancerDiseaseStatus-fixture',
47-
status: 'final',
48-
value: {
49-
code: '385633008',
50-
system: 'http://snomed.info/sct',
51-
display: 'Improving',
52-
},
47+
status: 'not-evaluated',
48+
value: null,
5349
subject: {
5450
id: '123-example-patient',
5551
name: 'Mr. Patient Example',

test/templates/fixtures/minimal-disease-status-resource.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,10 @@
4141
},
4242
"effectiveDateTime" : "1994-12-09T09:07:00Z",
4343
"valueCodeableConcept": {
44-
"coding": [
44+
"extension": [
4545
{
46-
"system": "http://snomed.info/sct",
47-
"code": "385633008",
48-
"display": "Improving"
46+
"url": "http://hl7.org/fhir/StructureDefinition/data-absent-reason",
47+
"valueCode": "not-asked"
4948
}
5049
]
5150
}

0 commit comments

Comments
 (0)