Skip to content

Commit 185c77a

Browse files
committed
Add support for variable in FCE converter
1 parent f9baefe commit 185c77a

File tree

4 files changed

+75
-0
lines changed

4 files changed

+75
-0
lines changed

src/converter/__tests__/fce.test.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import fce_review_of_systems from './resources/questionnaire_fce/review_of_syste
2727
import fce_source_queries from './resources/questionnaire_fce/source_queries.json';
2828
import fce_unit_option from './resources/questionnaire_fce/unit-option.json';
2929
import fce_vitals from './resources/questionnaire_fce/vitals.json';
30+
import fce_variable from './resources/questionnaire_fce/variable.json';
3031
// fhir questionnaire
3132
import fhir_allergies from './resources/questionnaire_fhir/allergies.json';
3233
import fhir_beverages from './resources/questionnaire_fhir/beverages.json';
@@ -53,6 +54,7 @@ import fhir_review_of_systems from './resources/questionnaire_fhir/review_of_sys
5354
import fhir_source_queries from './resources/questionnaire_fhir/source_queries.json';
5455
import fhir_unit_option from './resources/questionnaire_fhir/unit-option.json';
5556
import fhir_vitals from './resources/questionnaire_fhir/vitals.json';
57+
import fhir_variable from './resources/questionnaire_fhir/variable.json';
5658
import { FCEQuestionnaire } from '../../fce.types';
5759

5860
import { toFirstClassExtension, fromFirstClassExtension } from '../../converter';
@@ -85,6 +87,7 @@ describe('Questionanire and QuestionnaireResponses transformation', () => {
8587
[fhir_cqf_examples, fce_cqf_examples],
8688
[fhir_constraint, fce_constraint],
8789
[fhir_unit_option, fce_unit_option],
90+
[fhir_variable, fce_variable],
8891
])('Each FHIR Questionnaire should convert to FCE', async (fhir_questionnaire, fce_questionnaire) => {
8992
expect(toFirstClassExtension(fhir_questionnaire as FHIRQuestionnaire)).toStrictEqual(fce_questionnaire);
9093
});
@@ -115,6 +118,7 @@ describe('Questionanire and QuestionnaireResponses transformation', () => {
115118
[fce_cqf_examples, fhir_cqf_examples],
116119
[fce_constraint, fhir_constraint],
117120
[fce_unit_option, fhir_unit_option],
121+
[fce_variable, fhir_variable],
118122
])('Each FCE Questionnaire should convert to FHIR', async (fce_questionnaire, fhir_questionnaire) => {
119123
expect(sortExtensionsList(fromFirstClassExtension(fce_questionnaire as FCEQuestionnaire))).toStrictEqual(
120124
sortExtensionsList(fhir_questionnaire),
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"resourceType": "Questionnaire",
3+
"id": "variable",
4+
"meta": {
5+
"profile": [
6+
"https://emr-core.beda.software/StructureDefinition/fhir-emr-questionnaire"
7+
]
8+
},
9+
"status": "active",
10+
"assembledFrom": "variable",
11+
"item": [
12+
{
13+
"type": "string",
14+
"linkId": "test",
15+
"variable": [
16+
{
17+
"name": "First",
18+
"language": "text/fhirpath",
19+
"expression": "'First'"
20+
},
21+
{
22+
"name": "Second",
23+
"language": "text/fhirpath",
24+
"expression": "'Second'"
25+
}
26+
]
27+
}
28+
]
29+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
{
2+
"item": [
3+
{
4+
"type": "string",
5+
"linkId": "test",
6+
"extension": [
7+
{
8+
"url": "http://hl7.org/fhir/StructureDefinition/variable",
9+
"valueExpression": {
10+
"name": "First",
11+
"language": "text/fhirpath",
12+
"expression": "'First'"
13+
}
14+
},
15+
{
16+
"url": "http://hl7.org/fhir/StructureDefinition/variable",
17+
"valueExpression": {
18+
"name": "Second",
19+
"language": "text/fhirpath",
20+
"expression": "'Second'"
21+
}
22+
}
23+
]
24+
}
25+
],
26+
"meta": {
27+
"profile": ["https://emr-core.beda.software/StructureDefinition/fhir-emr-questionnaire"]
28+
},
29+
"extension": [
30+
{
31+
"url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembledFrom",
32+
"valueCanonical": "variable"
33+
}
34+
],
35+
"status": "active",
36+
"id": "variable",
37+
"resourceType": "Questionnaire"
38+
}

src/converter/extensions.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export enum ExtensionIdentifier {
3535
EnableWhenExpression = 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-enableWhenExpression',
3636
AnswerExpression = 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-answerExpression',
3737
CqfExpression = 'http://hl7.org/fhir/StructureDefinition/cqf-expression',
38+
Variable = 'http://hl7.org/fhir/StructureDefinition/variable',
3839

3940
AdjustLastToRight = 'https://emr-core.beda.software/StructureDefinition/adjust-last-to-right',
4041
SliderStart = 'https://emr-core.beda.software/StructureDefinition/slider-start',
@@ -225,6 +226,9 @@ export const extensionTransformers: ExtensionTransformer = {
225226
},
226227
},
227228
},
229+
[ExtensionIdentifier.Variable]: {
230+
path: { extension: 'valueExpression', questionnaire: 'variable', isCollection: true },
231+
},
228232
[ExtensionIdentifier.InitialExpression]: {
229233
path: { extension: 'valueExpression', questionnaire: 'initialExpression' },
230234
},

0 commit comments

Comments
 (0)