Skip to content

Commit

Permalink
Merge pull request #51 from jy95/timingModifierExtension
Browse files Browse the repository at this point in the history
feat: timingModifierExtension
  • Loading branch information
jy95 authored Apr 29, 2024
2 parents b30728a + dabfe99 commit 2086bbe
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 0 deletions.
78 changes: 78 additions & 0 deletions __tests__/fromDosageToText/timingModifierExtension.test.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
// For typings autocomplete whatever your IDE
import { expect, test, describe } from "@jest/globals";
import FhirDosageUtils from "../../src/index";

// types
import type { Dosage } from "fhir/r4";

describe("fromDosageToText - timingModifierExtension", () => {
let dosageUtils: FhirDosageUtils;

beforeAll(async () => {
dosageUtils = await FhirDosageUtils.build({
displayOrder: ["timingModifierExtension"],
});
});

test("No extension", () => {
const dosage: Dosage = {
text: "no timingModifierExtension",
};

let result = dosageUtils.fromDosageToText(dosage);
expect(result).toBe("");
});

test("Empty", () => {
const dosage: Dosage = {
timing: {
modifierExtension: [],
},
};

let result = dosageUtils.fromDosageToText(dosage);
expect(result).toBe("");
});

test("1 item", () => {
const dosage: Dosage = {
timing: {
modifierExtension: [
{
url: "https://www.ehealth.fgov.be/standards/fhir/medication/StructureDefinition/DosageOverride",
valueBoolean: true,
},
],
},
};

let result = dosageUtils.fromDosageToText(dosage);
expect(result).toBe(
'{"url":"https://www.ehealth.fgov.be/standards/fhir/medication/StructureDefinition/DosageOverride","valueBoolean":true}',
);
});

test("N+1 items", () => {
const dosage: Dosage = {
timing: {
modifierExtension: [
{
url: "https://www.ehealth.fgov.be/standards/fhir/medication/StructureDefinition/DosageOverride",
valueBoolean: true,
},
{
url: "https://www.ehealth.fgov.be/standards/fhir/medication/StructureDefinition/DosageOverrideReason",
valueCodeableConcept: {
text: "Respect my authority ! - Eric Cartman",
},
},
],
},
};

let result = dosageUtils.fromDosageToText(dosage);
expect(result).toBe(
'{"url":"https://www.ehealth.fgov.be/standards/fhir/medication/StructureDefinition/DosageOverride","valueBoolean":true} {"url":"https://www.ehealth.fgov.be/standards/fhir/medication/StructureDefinition/DosageOverrideReason","valueCodeableConcept":{"text":"Respect my authority ! - Eric Cartman"}}',
);
});
});
4 changes: 4 additions & 0 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,10 @@ export enum DisplayOrderEnum {
* Display "modifierExtension"
*/
modifierExtension = "modifierExtension",
/**
* Display "timing.modifierExtension"
*/
timingModifierExtension = "timingModifierExtension",
}

export type DisplayOrder = keyof typeof DisplayOrderEnum;
Expand Down
5 changes: 5 additions & 0 deletions src/utils/fromDisplayOrderToResult.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,11 @@ const displayOrders = {
language: config.language,
extensions: dos.modifierExtension,
}),
timingModifierExtension: ({ dos, config }) =>
config.fromExtensionsToString({
language: config.language,
extensions: dos.timing?.modifierExtension,
}),
} satisfies Record<DisplayOrder, ResultFct>;

type fromDisplayOrderToResultFct = DisplayOrderParams & {
Expand Down

0 comments on commit 2086bbe

Please sign in to comment.