Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions src/converter/__tests__/fce.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import fce_encounter_create from './resources/questionnaire_fce/encounter_create
import fce_gad_7 from './resources/questionnaire_fce/gad_7.json';
import fce_immunization from './resources/questionnaire_fce/immunization.json';
import fce_medication from './resources/questionnaire_fce/medication.json';
import fce_md_editor_feature from './resources/questionnaire_fce/md_editor_feature.json';
import fce_mixed_fce_with_extensions from './resources/questionnaire_fce/mixed-fce-with-extensions.json';
import fce_multiple_type_launch_context from './resources/questionnaire_fce/multiple_type_launch_context.json';
import fce_occurs from './resources/questionnaire_fce/occurs.json';
Expand Down Expand Up @@ -57,6 +58,7 @@ import fhir_encounter_create from './resources/questionnaire_fhir/encounter_crea
import fhir_gad_7 from './resources/questionnaire_fhir/gad_7.json';
import fhir_immunization from './resources/questionnaire_fhir/immunization.json';
import fhir_medication from './resources/questionnaire_fhir/medication.json';
import fhir_md_editor_feature from './resources/questionnaire_fhir/md_editor_feature.json';
import fhir_mixed_fce_with_extensions from './resources/questionnaire_fhir/mixed-fce-with-extensions.json';
import fhir_multiple_type_launch_context from './resources/questionnaire_fhir/multiple_type_launch_context.json';
import fhir_occurs from './resources/questionnaire_fhir/occurs.json';
Expand Down Expand Up @@ -126,7 +128,8 @@ describe('Questionanire and QuestionnaireResponses transformation', () => {
['enable-chart', fhir_enable_chart, fce_enable_chart],
['enable-filtering', fhir_enable_filtering, fce_enable_filtering],
['enable-sort', fhir_enable_sort, fce_enable_sort],
['default_sort', fhir_default_sort, fce_default_sort],
['default-sort', fhir_default_sort, fce_default_sort],
['md-editor-features', fhir_md_editor_feature, fce_md_editor_feature],
])('Each FHIR Questionnaire should convert to FCE %s', async (_, fhir_questionnaire, fce_questionnaire) => {
expect(toFirstClassExtension(fhir_questionnaire as FHIRQuestionnaire)).toStrictEqual(fce_questionnaire);
});
Expand Down Expand Up @@ -172,7 +175,8 @@ describe('Questionanire and QuestionnaireResponses transformation', () => {
['enable-chart', fce_enable_chart, fhir_enable_chart],
['enable-filtering', fce_enable_filtering, fhir_enable_filtering],
['enable-sort', fce_enable_sort, fhir_enable_sort],
['default_sort', fce_default_sort, fhir_default_sort],
['default-sort', fce_default_sort, fhir_default_sort],
['md-editor-features', fce_md_editor_feature, fhir_md_editor_feature],
])('Each FCE Questionnaire should convert to FHIR %s', async (_, fce_questionnaire, fhir_questionnaire) => {
expect(sortExtensionsList(fromFirstClassExtension(fce_questionnaire as FCEQuestionnaire))).toStrictEqual(
sortExtensionsList(fhir_questionnaire),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"item": [
{
"text": "Note",
"type": "string",
"linkId": "note",
"itemControl": {
"Coding": [
{
"code": "markdown-editor"
}
]
},
"mdEditorFeature": ["image"]
}
],
"status": "draft",
"subjectType": ["Patient"],
"assembledFrom": "note",
"id": "example",
"resourceType": "Questionnaire",
"meta": {
"profile": ["https://emr-core.beda.software/StructureDefinition/fhir-emr-questionnaire"],
"lastUpdated": "2026-02-10T00:09:00.000000Z",
"versionId": "205"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{
"item": [
{
"text": "Note",
"type": "string",
"linkId": "note",
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",
"valueCodeableConcept": {
"Coding": [
{
"code": "markdown-editor"
}
]
}
},
{
"url": "https://emr-core.beda.software/StructureDefinition/mdEditorFeature",
"valueCode": "image"
}
]
}
],
"status": "draft",
"subjectType": ["Patient"],
"extension": [
{
"url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembledFrom",
"valueCanonical": "note"
}
],
"id": "example",
"resourceType": "Questionnaire",
"meta": {
"profile": ["https://emr-core.beda.software/StructureDefinition/fhir-emr-questionnaire"],
"lastUpdated": "2026-02-10T00:09:00.000000Z",
"versionId": "205"
}
}
4 changes: 4 additions & 0 deletions src/converter/extensions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ export enum ExtensionIdentifier {
EnableFiltering = 'https://emr-core.beda.software/StructureDefinition/enableFiltering',
EnableSort = 'https://emr-core.beda.software/StructureDefinition/enableSort',
DefaultSort = 'https://emr-core.beda.software/StructureDefinition/defaultSort',
MDEditorFeature = 'https://emr-core.beda.software/StructureDefinition/mdEditorFeature',
}

export type ExtensionTransformer = {
Expand Down Expand Up @@ -451,6 +452,9 @@ export const extensionTransformers: ExtensionTransformer = {
},
},
},
[ExtensionIdentifier.MDEditorFeature]: {
path: { extension: 'valueCode', questionnaire: 'mdEditorFeature', isCollection: true },
},
};

function getExtensionValue(extension: FHIRExtension) {
Expand Down
2 changes: 2 additions & 0 deletions src/fce.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ export interface FCEQuestionnaireItem extends QuestionnaireItem {
enableFiltering?: boolean;
enableSort?: boolean;
defaultSort?: FCEQuestionnaireItemDefaultSort;
mdEditorFeature?: string[];
}

export interface FCEQuestionnaireItemText {
Expand Down Expand Up @@ -185,6 +186,7 @@ export interface FCEQuestionnaireItemDefaultSort {
linkId?: string;
sort?: 'asc' | 'desc';
}

export interface FCEQuestionnaireLaunchContext {
/** NOTE: from extension description */
description?: string;
Expand Down