Skip to content

Commit f25e4e2

Browse files
authored
Merge pull request #40 from beda-software/md-editor-features
Add support for mdEditorFeature extension
2 parents bb54ef3 + 8bea015 commit f25e4e2

5 files changed

Lines changed: 79 additions & 2 deletions

File tree

src/converter/__tests__/fce.test.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import fce_encounter_create from './resources/questionnaire_fce/encounter_create
1919
import fce_gad_7 from './resources/questionnaire_fce/gad_7.json';
2020
import fce_immunization from './resources/questionnaire_fce/immunization.json';
2121
import fce_medication from './resources/questionnaire_fce/medication.json';
22+
import fce_md_editor_feature from './resources/questionnaire_fce/md_editor_feature.json';
2223
import fce_mixed_fce_with_extensions from './resources/questionnaire_fce/mixed-fce-with-extensions.json';
2324
import fce_multiple_type_launch_context from './resources/questionnaire_fce/multiple_type_launch_context.json';
2425
import fce_occurs from './resources/questionnaire_fce/occurs.json';
@@ -57,6 +58,7 @@ import fhir_encounter_create from './resources/questionnaire_fhir/encounter_crea
5758
import fhir_gad_7 from './resources/questionnaire_fhir/gad_7.json';
5859
import fhir_immunization from './resources/questionnaire_fhir/immunization.json';
5960
import fhir_medication from './resources/questionnaire_fhir/medication.json';
61+
import fhir_md_editor_feature from './resources/questionnaire_fhir/md_editor_feature.json';
6062
import fhir_mixed_fce_with_extensions from './resources/questionnaire_fhir/mixed-fce-with-extensions.json';
6163
import fhir_multiple_type_launch_context from './resources/questionnaire_fhir/multiple_type_launch_context.json';
6264
import fhir_occurs from './resources/questionnaire_fhir/occurs.json';
@@ -126,7 +128,8 @@ describe('Questionanire and QuestionnaireResponses transformation', () => {
126128
['enable-chart', fhir_enable_chart, fce_enable_chart],
127129
['enable-filtering', fhir_enable_filtering, fce_enable_filtering],
128130
['enable-sort', fhir_enable_sort, fce_enable_sort],
129-
['default_sort', fhir_default_sort, fce_default_sort],
131+
['default-sort', fhir_default_sort, fce_default_sort],
132+
['md-editor-features', fhir_md_editor_feature, fce_md_editor_feature],
130133
])('Each FHIR Questionnaire should convert to FCE %s', async (_, fhir_questionnaire, fce_questionnaire) => {
131134
expect(toFirstClassExtension(fhir_questionnaire as FHIRQuestionnaire)).toStrictEqual(fce_questionnaire);
132135
});
@@ -172,7 +175,8 @@ describe('Questionanire and QuestionnaireResponses transformation', () => {
172175
['enable-chart', fce_enable_chart, fhir_enable_chart],
173176
['enable-filtering', fce_enable_filtering, fhir_enable_filtering],
174177
['enable-sort', fce_enable_sort, fhir_enable_sort],
175-
['default_sort', fce_default_sort, fhir_default_sort],
178+
['default-sort', fce_default_sort, fhir_default_sort],
179+
['md-editor-features', fce_md_editor_feature, fhir_md_editor_feature],
176180
])('Each FCE Questionnaire should convert to FHIR %s', async (_, fce_questionnaire, fhir_questionnaire) => {
177181
expect(sortExtensionsList(fromFirstClassExtension(fce_questionnaire as FCEQuestionnaire))).toStrictEqual(
178182
sortExtensionsList(fhir_questionnaire),
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{
2+
"item": [
3+
{
4+
"text": "Note",
5+
"type": "string",
6+
"linkId": "note",
7+
"itemControl": {
8+
"Coding": [
9+
{
10+
"code": "markdown-editor"
11+
}
12+
]
13+
},
14+
"mdEditorFeature": ["image"]
15+
}
16+
],
17+
"status": "draft",
18+
"subjectType": ["Patient"],
19+
"assembledFrom": "note",
20+
"id": "example",
21+
"resourceType": "Questionnaire",
22+
"meta": {
23+
"profile": ["https://emr-core.beda.software/StructureDefinition/fhir-emr-questionnaire"],
24+
"lastUpdated": "2026-02-10T00:09:00.000000Z",
25+
"versionId": "205"
26+
}
27+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{
2+
"item": [
3+
{
4+
"text": "Note",
5+
"type": "string",
6+
"linkId": "note",
7+
"extension": [
8+
{
9+
"url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",
10+
"valueCodeableConcept": {
11+
"Coding": [
12+
{
13+
"code": "markdown-editor"
14+
}
15+
]
16+
}
17+
},
18+
{
19+
"url": "https://emr-core.beda.software/StructureDefinition/mdEditorFeature",
20+
"valueCode": "image"
21+
}
22+
]
23+
}
24+
],
25+
"status": "draft",
26+
"subjectType": ["Patient"],
27+
"extension": [
28+
{
29+
"url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembledFrom",
30+
"valueCanonical": "note"
31+
}
32+
],
33+
"id": "example",
34+
"resourceType": "Questionnaire",
35+
"meta": {
36+
"profile": ["https://emr-core.beda.software/StructureDefinition/fhir-emr-questionnaire"],
37+
"lastUpdated": "2026-02-10T00:09:00.000000Z",
38+
"versionId": "205"
39+
}
40+
}

src/converter/extensions.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ export enum ExtensionIdentifier {
5656
EnableFiltering = 'https://emr-core.beda.software/StructureDefinition/enableFiltering',
5757
EnableSort = 'https://emr-core.beda.software/StructureDefinition/enableSort',
5858
DefaultSort = 'https://emr-core.beda.software/StructureDefinition/defaultSort',
59+
MDEditorFeature = 'https://emr-core.beda.software/StructureDefinition/mdEditorFeature',
5960
}
6061

6162
export type ExtensionTransformer = {
@@ -451,6 +452,9 @@ export const extensionTransformers: ExtensionTransformer = {
451452
},
452453
},
453454
},
455+
[ExtensionIdentifier.MDEditorFeature]: {
456+
path: { extension: 'valueCode', questionnaire: 'mdEditorFeature', isCollection: true },
457+
},
454458
};
455459

456460
function getExtensionValue(extension: FHIRExtension) {

src/fce.types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ export interface FCEQuestionnaireItem extends QuestionnaireItem {
118118
enableFiltering?: boolean;
119119
enableSort?: boolean;
120120
defaultSort?: FCEQuestionnaireItemDefaultSort;
121+
mdEditorFeature?: string[];
121122
}
122123

123124
export interface FCEQuestionnaireItemText {
@@ -185,6 +186,7 @@ export interface FCEQuestionnaireItemDefaultSort {
185186
linkId?: string;
186187
sort?: 'asc' | 'desc';
187188
}
189+
188190
export interface FCEQuestionnaireLaunchContext {
189191
/** NOTE: from extension description */
190192
description?: string;

0 commit comments

Comments
 (0)