Skip to content

Commit 18ccae2

Browse files
authored
Merge pull request #17 from beda-software/0.3.24
Support both mapping URLs when convert from FCE to FHIR
2 parents 8f193a6 + 0220bab commit 18ccae2

File tree

6 files changed

+18
-11
lines changed

6 files changed

+18
-11
lines changed

src/converter/__tests__/resources/questionnaire_fce/allergies.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"subjectType": ["Encounter", "Patient"],
33
"meta": {
4-
"profile": ["https://beda.software/beda-emr-questionnaire"],
4+
"profile": ["https://emr-core.beda.software/StructureDefinition/fhir-emr-questionnaire"],
55
"lastUpdated": "2023-04-10T03:43:34.792167Z",
66
"createdAt": "2023-04-05T05:22:35.752466Z",
77
"versionId": "694"

src/converter/__tests__/resources/questionnaire_fhir/allergies.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"subjectType": ["Encounter", "Patient"],
33
"meta": {
4-
"profile": ["https://beda.software/beda-emr-questionnaire"],
4+
"profile": ["https://emr-core.beda.software/StructureDefinition/fhir-emr-questionnaire"],
55
"lastUpdated": "2023-04-10T03:43:34.792167Z",
66
"versionId": "694",
77
"extension": [
@@ -416,7 +416,7 @@
416416
]
417417
},
418418
{
419-
"url": "http://beda.software/fhir-extensions/questionnaire-mapper",
419+
"url": "https://emr-core.beda.software/StructureDefinition/questionnaire-mapper",
420420
"valueReference": {
421421
"reference": "Mapping/allergy-extract"
422422
}

src/converter/constants.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export const legacyQuestionnaireProfileUrl = 'https://beda.software/beda-emr-questionnaire';
2+
export const questionnaireProfileUrl = 'https://emr-core.beda.software/StructureDefinition/fhir-emr-questionnaire';
3+
export const legacyMappingExtensionUrl = 'http://beda.software/fhir-extensions/questionnaire-mapper';
4+
export const mappingExtensionUrl = 'https://emr-core.beda.software/StructureDefinition/questionnaire-mapper';

src/converter/fceToFhir/questionnaire/processExtensions.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Extension as FHIRExtension, Questionnaire as FHIRQuestionnaire } from 'fhir/r4b';
22

33
import { Questionnaire as FCEQuestionnaire } from '@beda.software/aidbox-types';
4+
import { legacyMappingExtensionUrl, legacyQuestionnaireProfileUrl, mappingExtensionUrl } from '../../constants';
45

56
export function processExtensions(questionnaire: FCEQuestionnaire): FHIRQuestionnaire {
67
const { launchContext, mapping, sourceQueries, targetStructureMap, assembledFrom, ...fhirQuestionnaire } =
@@ -39,10 +40,13 @@ export function processExtensions(questionnaire: FCEQuestionnaire): FHIRQuestion
3940
}
4041

4142
if (mapping) {
43+
const extensionUrl =
44+
questionnaire.meta?.profile?.[0] === legacyQuestionnaireProfileUrl
45+
? legacyMappingExtensionUrl
46+
: mappingExtensionUrl;
4247
extensions = extensions.concat(
4348
mapping.map((m) => ({
44-
// url: 'https://emr.beda.software/StructureDefinition/questionnaire-mapper',
45-
url: 'http://beda.software/fhir-extensions/questionnaire-mapper',
49+
url: extensionUrl,
4650
valueReference: {
4751
reference: `Mapping/${m.id}`,
4852
},

src/converter/fhirToFce/questionnaire/processExtensions.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { canonical } from '@beda.software/aidbox-types';
2+
import { legacyMappingExtensionUrl, mappingExtensionUrl } from '../../constants';
23
import { Questionnaire as FHIRQuestionnaire } from 'fhir/r4b';
34

45
export function processExtensions(fhirQuestionnaire: FHIRQuestionnaire): {
@@ -70,9 +71,7 @@ export function processLaunchContext(fhirQuestionnaire: FHIRQuestionnaire): any[
7071

7172
function processMapping(fhirQuestionnaire: FHIRQuestionnaire): any[] | undefined {
7273
const mapperExtensions = fhirQuestionnaire.extension?.filter(
73-
(ext: any) =>
74-
ext.url === 'http://beda.software/fhir-extensions/questionnaire-mapper' ||
75-
ext.url === 'https://emr.beda.software/StructureDefinition/questionnaire-mapper',
74+
(ext: any) => ext.url === legacyMappingExtensionUrl || ext.url === mappingExtensionUrl,
7675
);
7776

7877
if (!mapperExtensions) {

src/converter/fhirToFce/utils.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1+
import { legacyQuestionnaireProfileUrl, questionnaireProfileUrl } from '../constants';
12
import { Questionnaire as FHIRQuestionnaire } from 'fhir/r4b';
23

34
export function checkFhirQuestionnaireProfile(fhirQuestionnaire: FHIRQuestionnaire): void {
45
if (
56
!(
67
(fhirQuestionnaire.meta?.profile?.length ?? 0) === 1 &&
7-
(fhirQuestionnaire.meta?.profile?.[0] === 'https://beda.software/beda-emr-questionnaire' ||
8-
fhirQuestionnaire.meta?.profile?.[0] ===
9-
'https://emr-core.beda.software/StructureDefinition/fhir-emr-questionnaire')
8+
(fhirQuestionnaire.meta?.profile?.[0] === legacyQuestionnaireProfileUrl ||
9+
fhirQuestionnaire.meta?.profile?.[0] === questionnaireProfileUrl)
1010
)
1111
) {
1212
throw new Error('Only beda emr questionanire supported');

0 commit comments

Comments
 (0)