Skip to content

Commit

Permalink
test: TimingCode
Browse files Browse the repository at this point in the history
  • Loading branch information
jy95 committed Jan 2, 2025
1 parent 48a23ce commit 06fb289
Show file tree
Hide file tree
Showing 4 changed files with 85 additions and 5 deletions.
4 changes: 2 additions & 2 deletions src/main/java/jy95/fhir/r4/dosage/utils/config/FDUConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ public class FDUConfig {
DisplayOrder.BOUNDS_PERIOD,
DisplayOrder.BOUNDS_RANGE,
DisplayOrder.COUNT_COUNT_MAX,
DisplayOrder.EVENT,
DisplayOrder.CODE,
DisplayOrder.TIMING_EVENT,
DisplayOrder.TIMING_CODE,
DisplayOrder.MAX_DOSE_PER_PERIOD,
DisplayOrder.MAX_DOSE_PER_ADMINISTRATION,
DisplayOrder.MAX_DOSE_PER_LIFETIME,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public Translators(FDUConfig config) {
Map.entry(DisplayOrder.PATIENT_INSTRUCTION, new PatientInstruction(config)),
Map.entry(DisplayOrder.DAY_OF_WEEK, new DayOfWeek(config)),
Map.entry(DisplayOrder.TIME_OF_DAY, new TimeOfDay(config)),
Map.entry(DisplayOrder.CODE, new TimingCode(config)),
Map.entry(DisplayOrder.TIMING_CODE, new TimingCode(config)),
Map.entry(DisplayOrder.METHOD, new Method(config)),
Map.entry(DisplayOrder.ROUTE, new Route(config)),
Map.entry(DisplayOrder.SITE, new Site(config)),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,11 @@ public enum DisplayOrder {
/**
* Display "timing.event"
*/
EVENT("event"),
TIMING_EVENT("event"),
/**
* Display "timing.code"
*/
CODE("code"),
TIMING_CODE("code"),
/**
* Display "maxDosePerPeriod"
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
package jy95.fhir.r4.dosage.utils.translators;

import jy95.fhir.r4.dosage.utils.AbstractFhirTest;
import jy95.fhir.r4.dosage.utils.classes.FhirDosageUtils;
import jy95.fhir.r4.dosage.utils.types.DisplayOrder;
import org.hl7.fhir.r4.model.CodeableConcept;
import org.hl7.fhir.r4.model.Coding;
import org.hl7.fhir.r4.model.Dosage;
import org.hl7.fhir.r4.model.Timing;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;

import java.util.List;
import java.util.Locale;
import java.util.concurrent.ExecutionException;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class TimingCodeTest extends AbstractFhirTest {

@ParameterizedTest
@MethodSource("localeProvider")
void testNoCode(Locale locale) throws ExecutionException, InterruptedException {
Dosage dosage = new Dosage();
FhirDosageUtils dosageUtils = getDosageUtilsInstance(locale, DisplayOrder.TIMING_CODE);
String result = dosageUtils.asHumanReadableText(dosage).get();
assertEquals("", result);
}

@ParameterizedTest
@MethodSource("localeProvider")
void testWithTimingCodeText(Locale locale) throws ExecutionException, InterruptedException {
Dosage dosage = new Dosage();
CodeableConcept cc1 = new CodeableConcept();
cc1.setText("Take medication in the morning on weekends and days off work");
Timing timing = new Timing();
timing.setCode(cc1);
dosage.setTiming(timing);
FhirDosageUtils dosageUtils = getDosageUtilsInstance(locale, DisplayOrder.TIMING_CODE);
String result = dosageUtils.asHumanReadableText(dosage).get();
assertEquals("Take medication in the morning on weekends and days off work", result);
}

@ParameterizedTest
@MethodSource("localeProvider")
void testWithTimingCodeCodeAndDisplay(Locale locale) throws ExecutionException, InterruptedException {
Dosage dosage = new Dosage();
CodeableConcept cc1 = new CodeableConcept();
cc1.setCoding(
List.of(
new Coding("http://hl7.org/fhir/ValueSet/timing-abbreviation", "BID", "Two times a day at institution specified time")
)
);
Timing timing = new Timing();
timing.setCode(cc1);
dosage.setTiming(timing);
FhirDosageUtils dosageUtils = getDosageUtilsInstance(locale, DisplayOrder.TIMING_CODE);
String result = dosageUtils.asHumanReadableText(dosage).get();
assertEquals("Two times a day at institution specified time", result);
}

@ParameterizedTest
@MethodSource("localeProvider")
void testWithTimingCodeCodeOnly(Locale locale) throws ExecutionException, InterruptedException {
Dosage dosage = new Dosage();
CodeableConcept cc1 = new CodeableConcept();
cc1.setCoding(
List.of(
new Coding("http://hl7.org/fhir/ValueSet/timing-abbreviation", "BID", null)
)
);
Timing timing = new Timing();
timing.setCode(cc1);
dosage.setTiming(timing);
FhirDosageUtils dosageUtils = getDosageUtilsInstance(locale, DisplayOrder.TIMING_CODE);
String result = dosageUtils.asHumanReadableText(dosage).get();
assertEquals("BID", result);
}

}

0 comments on commit 06fb289

Please sign in to comment.