Skip to content

Commit 1a7a8e9

Browse files
authored
Add support for columnWidth extension (#50)
1 parent a4a9229 commit 1a7a8e9

5 files changed

Lines changed: 117 additions & 0 deletions

File tree

src/converter/__tests__/fce.test.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import fce_beverages from './resources/questionnaire_fce/beverages.json';
99
import fce_chart_highlight from './resources/questionnaire_fce/chart_highlight.json';
1010
import fce_chart_y_axis_range from './resources/questionnaire_fce/chart_y_axis_range.json';
1111
import fce_choice_answer_option from './resources/questionnaire_fce/choice_answer_option.json';
12+
import fce_column_width from './resources/questionnaire_fce/column_width.json';
1213
import fce_consent from './resources/questionnaire_fce/consent.json';
1314
import fce_constraint from './resources/questionnaire_fce/constraint.json';
1415
import fce_cqf_examples from './resources/questionnaire_fce/cqf-examples.json';
@@ -50,6 +51,7 @@ import fhir_beverages from './resources/questionnaire_fhir/beverages.json';
5051
import fhir_chart_highlight from './resources/questionnaire_fhir/chart_highlight.json';
5152
import fhir_chart_y_axis_range from './resources/questionnaire_fhir/chart_y_axis_range.json';
5253
import fhir_choice_answer_option from './resources/questionnaire_fhir/choice_answer_option.json';
54+
import fhir_column_width from './resources/questionnaire_fhir/column_width.json';
5355
import fhir_consent from './resources/questionnaire_fhir/consent.json';
5456
import fhir_constraint from './resources/questionnaire_fhir/constraint.json';
5557
import fhir_cqf_examples from './resources/questionnaire_fhir/cqf-examples.json';
@@ -136,6 +138,7 @@ describe('Questionanire and QuestionnaireResponses transformation', () => {
136138
['md-editor-features', fhir_md_editor_feature, fce_md_editor_feature],
137139
['chart-y-axis-range', fhir_chart_y_axis_range, fce_chart_y_axis_range],
138140
['chart-highlight', fhir_chart_highlight, fce_chart_highlight],
141+
['column-width', fhir_column_width, fce_column_width],
139142
])('Each FHIR Questionnaire should convert to FCE %s', async (_, fhir_questionnaire, fce_questionnaire) => {
140143
expect(toFirstClassExtension(fhir_questionnaire as FHIRQuestionnaire)).toStrictEqual(fce_questionnaire);
141144
});
@@ -185,6 +188,7 @@ describe('Questionanire and QuestionnaireResponses transformation', () => {
185188
['md-editor-features', fce_md_editor_feature, fhir_md_editor_feature],
186189
['chart-y-axis-range', fce_chart_y_axis_range, fhir_chart_y_axis_range],
187190
['chart-highlight', fce_chart_highlight, fhir_chart_highlight],
191+
['column-width', fce_column_width, fhir_column_width],
188192
])('Each FCE Questionnaire should convert to FHIR %s', async (_, fce_questionnaire, fhir_questionnaire) => {
189193
expect(sortExtensionsList(fromFirstClassExtension(fce_questionnaire as FCEQuestionnaire))).toStrictEqual(
190194
sortExtensionsList(fhir_questionnaire),
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
{
2+
"item": [
3+
{
4+
"text": "Table",
5+
"type": "group",
6+
"repeats": true,
7+
"itemControl": {
8+
"Coding": [
9+
{
10+
"code": "group-table"
11+
}
12+
]
13+
},
14+
"item": [
15+
{
16+
"text": "Date",
17+
"type": "date",
18+
"linkId": "date"
19+
},
20+
{
21+
"text": "Weight",
22+
"type": "quantity",
23+
"linkId": "weight",
24+
"columnWidth": 200,
25+
"unitOption": [
26+
{
27+
"code": "kg",
28+
"system": "http://unitsofmeasure.org",
29+
"display": "kg"
30+
}
31+
]
32+
}
33+
]
34+
}
35+
],
36+
"status": "draft",
37+
"subjectType": ["Patient"],
38+
"assembledFrom": "column-width",
39+
"id": "example",
40+
"resourceType": "Questionnaire",
41+
"meta": {
42+
"profile": ["https://emr-core.beda.software/StructureDefinition/fhir-emr-questionnaire"],
43+
"lastUpdated": "2026-02-10T00:09:00.000000Z",
44+
"versionId": "205"
45+
}
46+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
{
2+
"item": [
3+
{
4+
"text": "Table",
5+
"type": "group",
6+
"repeats": true,
7+
"extension": [
8+
{
9+
"url": "http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",
10+
"valueCodeableConcept": {
11+
"Coding": [
12+
{
13+
"code": "group-table"
14+
}
15+
]
16+
}
17+
}
18+
],
19+
"item": [
20+
{
21+
"text": "Date",
22+
"type": "date",
23+
"linkId": "date"
24+
},
25+
{
26+
"text": "Weight",
27+
"type": "quantity",
28+
"linkId": "weight",
29+
"extension": [
30+
{
31+
"url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unitOption",
32+
"valueCoding": {
33+
"code": "kg",
34+
"system": "http://unitsofmeasure.org",
35+
"display": "kg"
36+
}
37+
},
38+
{
39+
"url": "https://emr-core.beda.software/StructureDefinition/columnWidth",
40+
"valueInteger": 200
41+
}
42+
]
43+
}
44+
]
45+
}
46+
],
47+
"status": "draft",
48+
"subjectType": ["Patient"],
49+
"extension": [
50+
{
51+
"url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembledFrom",
52+
"valueCanonical": "column-width"
53+
}
54+
],
55+
"id": "example",
56+
"resourceType": "Questionnaire",
57+
"meta": {
58+
"profile": ["https://emr-core.beda.software/StructureDefinition/fhir-emr-questionnaire"],
59+
"lastUpdated": "2026-02-10T00:09:00.000000Z",
60+
"versionId": "205"
61+
}
62+
}

src/converter/extensions.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ export enum ExtensionIdentifier {
5959
MDEditorFeature = 'https://emr-core.beda.software/StructureDefinition/mdEditorFeature',
6060
ChartYAxisRange = 'https://emr-core.beda.software/StructureDefinition/chartYAxisRange',
6161
ChartHighlight = 'https://emr-core.beda.software/StructureDefinition/chartHighlight',
62+
CoolumnWidth = 'https://emr-core.beda.software/StructureDefinition/columnWidth',
6263
}
6364

6465
export type ExtensionTransformer = {
@@ -512,6 +513,9 @@ export const extensionTransformers: ExtensionTransformer = {
512513
},
513514
},
514515
},
516+
[ExtensionIdentifier.CoolumnWidth]: {
517+
path: { extension: 'valueInteger', questionnaire: 'columnWidth' },
518+
},
515519
};
516520

517521
function getExtensionValue(extension: FHIRExtension) {

src/fce.types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ export interface FCEQuestionnaireItem extends QuestionnaireItem {
122122
mdEditorFeature?: string[];
123123
chartYAxisRange?: Range;
124124
chartHighlight?: FCEQuestionnaireItemChartHighlight[];
125+
columnWidth?: number;
125126
}
126127

127128
export interface FCEQuestionnaireItemText {

0 commit comments

Comments
 (0)