diff --git a/common/src/main/java/jy95/fhir/common/translators/AbstractBoundsDuration.java b/common/src/main/java/jy95/fhir/common/translators/AbstractBoundsDuration.java index 677d36217..0cbb74670 100644 --- a/common/src/main/java/jy95/fhir/common/translators/AbstractBoundsDuration.java +++ b/common/src/main/java/jy95/fhir/common/translators/AbstractBoundsDuration.java @@ -3,9 +3,9 @@ import com.ibm.icu.text.MessageFormat; import jy95.fhir.common.config.FDSConfig; -import jy95.fhir.common.types.AbstractTranslator; +import jy95.fhir.common.types.AbstractTranslatorTiming; -public abstract class AbstractBoundsDuration extends AbstractTranslator { +public abstract class AbstractBoundsDuration extends AbstractTranslatorTiming { // Translations protected final MessageFormat boundsDurationMsg; diff --git a/common/src/main/java/jy95/fhir/common/translators/AbstractBoundsPeriod.java b/common/src/main/java/jy95/fhir/common/translators/AbstractBoundsPeriod.java index 4e620f5b2..8906dca7e 100644 --- a/common/src/main/java/jy95/fhir/common/translators/AbstractBoundsPeriod.java +++ b/common/src/main/java/jy95/fhir/common/translators/AbstractBoundsPeriod.java @@ -3,9 +3,9 @@ import com.ibm.icu.text.MessageFormat; import jy95.fhir.common.config.FDSConfig; -import jy95.fhir.common.types.AbstractTranslator; +import jy95.fhir.common.types.AbstractTranslatorTiming; -public abstract class AbstractBoundsPeriod extends AbstractTranslator { +public abstract class AbstractBoundsPeriod extends AbstractTranslatorTiming { // Translations protected final MessageFormat boundsPeriodMsg; diff --git a/common/src/main/java/jy95/fhir/common/translators/AbstractBoundsRange.java b/common/src/main/java/jy95/fhir/common/translators/AbstractBoundsRange.java index b093c1339..4a80c9d9e 100644 --- a/common/src/main/java/jy95/fhir/common/translators/AbstractBoundsRange.java +++ b/common/src/main/java/jy95/fhir/common/translators/AbstractBoundsRange.java @@ -3,9 +3,9 @@ import com.ibm.icu.text.MessageFormat; import jy95.fhir.common.config.FDSConfig; -import jy95.fhir.common.types.AbstractTranslator; +import jy95.fhir.common.types.AbstractTranslatorTiming; -public abstract class AbstractBoundsRange extends AbstractTranslator { +public abstract class AbstractBoundsRange extends AbstractTranslatorTiming { // Translations protected final MessageFormat boundsRangeMsg; diff --git a/common/src/main/java/jy95/fhir/common/translators/AbstractCountCountMax.java b/common/src/main/java/jy95/fhir/common/translators/AbstractCountCountMax.java index 5acbbfd9d..6023057be 100644 --- a/common/src/main/java/jy95/fhir/common/translators/AbstractCountCountMax.java +++ b/common/src/main/java/jy95/fhir/common/translators/AbstractCountCountMax.java @@ -3,11 +3,11 @@ import com.ibm.icu.text.MessageFormat; import jy95.fhir.common.config.FDSConfig; -import jy95.fhir.common.types.AbstractTranslator; +import jy95.fhir.common.types.AbstractTranslatorTiming; import java.util.Map; -public abstract class AbstractCountCountMax extends AbstractTranslator { +public abstract class AbstractCountCountMax extends AbstractTranslatorTiming { // Translations protected final MessageFormat countMaxMsg; diff --git a/common/src/main/java/jy95/fhir/common/translators/AbstractDayOfWeek.java b/common/src/main/java/jy95/fhir/common/translators/AbstractDayOfWeek.java index e3030c69a..8f9ea1a3e 100644 --- a/common/src/main/java/jy95/fhir/common/translators/AbstractDayOfWeek.java +++ b/common/src/main/java/jy95/fhir/common/translators/AbstractDayOfWeek.java @@ -4,12 +4,12 @@ import jy95.fhir.common.config.FDSConfig; import jy95.fhir.common.functions.ListToString; -import jy95.fhir.common.types.AbstractTranslator; +import jy95.fhir.common.types.AbstractTranslatorTiming; import java.util.List; import java.util.Map; -public abstract class AbstractDayOfWeek extends AbstractTranslator { +public abstract class AbstractDayOfWeek extends AbstractTranslatorTiming { // Translations protected final MessageFormat dayOfWeekMsg; diff --git a/common/src/main/java/jy95/fhir/common/translators/AbstractDurationDurationMax.java b/common/src/main/java/jy95/fhir/common/translators/AbstractDurationDurationMax.java index 01618ab4d..4fdf4a51c 100644 --- a/common/src/main/java/jy95/fhir/common/translators/AbstractDurationDurationMax.java +++ b/common/src/main/java/jy95/fhir/common/translators/AbstractDurationDurationMax.java @@ -3,14 +3,14 @@ import com.ibm.icu.text.MessageFormat; import jy95.fhir.common.config.FDSConfig; -import jy95.fhir.common.types.AbstractTranslator; +import jy95.fhir.common.types.AbstractTranslatorTiming; import java.math.BigDecimal; import java.util.ArrayList; import java.util.concurrent.CompletableFuture; import java.util.List; -public abstract class AbstractDurationDurationMax extends AbstractTranslator { +public abstract class AbstractDurationDurationMax extends AbstractTranslatorTiming { // Translations protected final MessageFormat durationMsg; diff --git a/common/src/main/java/jy95/fhir/common/translators/AbstractFrequencyFrequencyMax.java b/common/src/main/java/jy95/fhir/common/translators/AbstractFrequencyFrequencyMax.java index 4b77f7371..36f472411 100644 --- a/common/src/main/java/jy95/fhir/common/translators/AbstractFrequencyFrequencyMax.java +++ b/common/src/main/java/jy95/fhir/common/translators/AbstractFrequencyFrequencyMax.java @@ -3,12 +3,12 @@ import com.ibm.icu.text.MessageFormat; import jy95.fhir.common.config.FDSConfig; -import jy95.fhir.common.types.AbstractTranslator; +import jy95.fhir.common.types.AbstractTranslatorTiming; import java.util.Map; import java.util.concurrent.CompletableFuture; -public abstract class AbstractFrequencyFrequencyMax extends AbstractTranslator { +public abstract class AbstractFrequencyFrequencyMax extends AbstractTranslatorTiming { // Translations protected final MessageFormat frequencyAndFrequencyMaxMsg; diff --git a/common/src/main/java/jy95/fhir/common/translators/AbstractOffsetWhen.java b/common/src/main/java/jy95/fhir/common/translators/AbstractOffsetWhen.java index 0013ac446..568dbe87e 100644 --- a/common/src/main/java/jy95/fhir/common/translators/AbstractOffsetWhen.java +++ b/common/src/main/java/jy95/fhir/common/translators/AbstractOffsetWhen.java @@ -8,9 +8,9 @@ import jy95.fhir.common.config.FDSConfig; import jy95.fhir.common.functions.ListToString; -import jy95.fhir.common.types.AbstractTranslator; +import jy95.fhir.common.types.AbstractTranslatorTiming; -public abstract class AbstractOffsetWhen extends AbstractTranslator { +public abstract class AbstractOffsetWhen extends AbstractTranslatorTiming { public AbstractOffsetWhen(C config) { super(config); diff --git a/common/src/main/java/jy95/fhir/common/translators/AbstractPeriodPeriodMax.java b/common/src/main/java/jy95/fhir/common/translators/AbstractPeriodPeriodMax.java index fdc7b1955..d1673dce5 100644 --- a/common/src/main/java/jy95/fhir/common/translators/AbstractPeriodPeriodMax.java +++ b/common/src/main/java/jy95/fhir/common/translators/AbstractPeriodPeriodMax.java @@ -3,13 +3,13 @@ import com.ibm.icu.text.MessageFormat; import jy95.fhir.common.config.FDSConfig; -import jy95.fhir.common.types.AbstractTranslator; +import jy95.fhir.common.types.AbstractTranslatorTiming; import java.math.BigDecimal; import java.util.Map; import java.util.concurrent.CompletableFuture; -public abstract class AbstractPeriodPeriodMax extends AbstractTranslator { +public abstract class AbstractPeriodPeriodMax extends AbstractTranslatorTiming { // Translations protected final MessageFormat periodMaxMsg; diff --git a/common/src/main/java/jy95/fhir/common/translators/AbstractTimeOfDay.java b/common/src/main/java/jy95/fhir/common/translators/AbstractTimeOfDay.java index 3df88de5c..8df919e83 100644 --- a/common/src/main/java/jy95/fhir/common/translators/AbstractTimeOfDay.java +++ b/common/src/main/java/jy95/fhir/common/translators/AbstractTimeOfDay.java @@ -4,13 +4,13 @@ import jy95.fhir.common.config.FDSConfig; import jy95.fhir.common.functions.ListToString; -import jy95.fhir.common.types.AbstractTranslator; +import jy95.fhir.common.types.AbstractTranslatorTiming; import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; -public abstract class AbstractTimeOfDay extends AbstractTranslator { +public abstract class AbstractTimeOfDay extends AbstractTranslatorTiming { // Translations protected final MessageFormat timeOfDayMsg; diff --git a/common/src/main/java/jy95/fhir/common/translators/AbstractTimingEvent.java b/common/src/main/java/jy95/fhir/common/translators/AbstractTimingEvent.java index fc729278e..5eb0f7b5c 100644 --- a/common/src/main/java/jy95/fhir/common/translators/AbstractTimingEvent.java +++ b/common/src/main/java/jy95/fhir/common/translators/AbstractTimingEvent.java @@ -4,13 +4,13 @@ import jy95.fhir.common.config.FDSConfig; import jy95.fhir.common.functions.ListToString; -import jy95.fhir.common.types.AbstractTranslator; +import jy95.fhir.common.types.AbstractTranslatorTiming; import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; -public abstract class AbstractTimingEvent extends AbstractTranslator { +public abstract class AbstractTimingEvent extends AbstractTranslatorTiming { // Translations protected final MessageFormat timingEventMsg; diff --git a/common/src/main/java/jy95/fhir/common/types/AbstractTranslatorTiming.java b/common/src/main/java/jy95/fhir/common/types/AbstractTranslatorTiming.java new file mode 100644 index 000000000..0f66fcc79 --- /dev/null +++ b/common/src/main/java/jy95/fhir/common/types/AbstractTranslatorTiming.java @@ -0,0 +1,21 @@ +package jy95.fhir.common.types; + +import jy95.fhir.common.config.FDSConfig; + +public abstract class AbstractTranslatorTiming extends AbstractTranslator{ + + public AbstractTranslatorTiming(C config) { + super(config); + } + + // To check if dosage object truly has a "Timing" object + protected abstract boolean hasTiming(D dosage); + + // To check if timing object truly has the required condition for this translator + protected abstract boolean hasRequiredElements(D dosage); + + @Override + public boolean isPresent(D dosage) { + return hasTiming(dosage) && hasRequiredElements(dosage); + } +} diff --git a/common/src/test/java/jy95/fhir/common/AbstractTranslatorTest.java b/common/src/test/java/jy95/fhir/common/AbstractTranslatorTest.java new file mode 100644 index 000000000..20ad20172 --- /dev/null +++ b/common/src/test/java/jy95/fhir/common/AbstractTranslatorTest.java @@ -0,0 +1,47 @@ +package jy95.fhir.common; + +import jy95.fhir.common.types.AbstractTranslator; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.concurrent.CompletableFuture; + +import jy95.fhir.common.config.FDSConfig; +import static org.junit.jupiter.api.Assertions.*; + +public class AbstractTranslatorTest { + + // Concrete implementation of AbstractTranslator + private static class TestTranslator extends AbstractTranslator { + + public TestTranslator(FDSConfig config) { + super(config); + } + + @Override + public CompletableFuture convert(String dosage) { + return CompletableFuture.completedFuture("Converted: " + dosage); + } + } + + private AbstractTranslator translator; + + @BeforeEach + void setUp() { + translator = new TestTranslator(FDSConfig.builder().build()); + } + + @Test + void testConvert() { + String input = "dosage123"; + CompletableFuture result = translator.convert(input); + + assertNotNull(result); + assertEquals("Converted: dosage123", result.join()); + } + + @Test + void testIsPresent() { + assertFalse(translator.isPresent("dosage123")); + } +} diff --git a/r4/src/main/java/jy95/fhir/r4/translators/BoundsDurationR4.java b/r4/src/main/java/jy95/fhir/r4/translators/BoundsDurationR4.java index b9389dca2..32bc57f4b 100644 --- a/r4/src/main/java/jy95/fhir/r4/translators/BoundsDurationR4.java +++ b/r4/src/main/java/jy95/fhir/r4/translators/BoundsDurationR4.java @@ -16,6 +16,11 @@ public BoundsDurationR4(FDSConfigR4 config) { quantityToStringR4 = new QuantityToStringR4(); } + @Override + protected boolean hasTiming(Dosage dosage) { + return dosage.hasTiming(); + } + @Override public CompletableFuture convert(Dosage dosage) { var bundle = getResources(); @@ -26,8 +31,7 @@ public CompletableFuture convert(Dosage dosage) { } @Override - public boolean isPresent(Dosage dosage) { - return dosage.hasTiming() && dosage.getTiming().hasRepeat() - && dosage.getTiming().getRepeat().hasBoundsDuration(); + protected boolean hasRequiredElements(Dosage dosage) { + return dosage.getTiming().hasRepeat() && dosage.getTiming().getRepeat().hasBoundsDuration(); } } diff --git a/r4/src/main/java/jy95/fhir/r4/translators/BoundsPeriodR4.java b/r4/src/main/java/jy95/fhir/r4/translators/BoundsPeriodR4.java index 93b8f06b1..afdac1f21 100644 --- a/r4/src/main/java/jy95/fhir/r4/translators/BoundsPeriodR4.java +++ b/r4/src/main/java/jy95/fhir/r4/translators/BoundsPeriodR4.java @@ -46,7 +46,12 @@ public CompletableFuture convert(Dosage dosage) { } @Override - public boolean isPresent(Dosage dosage) { - return dosage.hasTiming() && dosage.getTiming().hasRepeat() && dosage.getTiming().getRepeat().hasBoundsPeriod(); + protected boolean hasRequiredElements(Dosage dosage) { + return dosage.getTiming().hasRepeat() && dosage.getTiming().getRepeat().hasBoundsPeriod(); + } + + @Override + protected boolean hasTiming(Dosage dosage) { + return dosage.hasTiming(); } } diff --git a/r4/src/main/java/jy95/fhir/r4/translators/BoundsRangeR4.java b/r4/src/main/java/jy95/fhir/r4/translators/BoundsRangeR4.java index fb3c21625..8c401a92a 100644 --- a/r4/src/main/java/jy95/fhir/r4/translators/BoundsRangeR4.java +++ b/r4/src/main/java/jy95/fhir/r4/translators/BoundsRangeR4.java @@ -16,6 +16,11 @@ public BoundsRangeR4(FDSConfigR4 config) { rangeToStringR4 = new RangeToStringR4(); } + @Override + protected boolean hasTiming(Dosage dosage) { + return dosage.hasTiming(); + } + @Override public CompletableFuture convert(Dosage dosage) { var boundsRange = dosage.getTiming().getRepeat().getBoundsRange(); @@ -27,7 +32,7 @@ public CompletableFuture convert(Dosage dosage) { } @Override - public boolean isPresent(Dosage dosage) { - return dosage.hasTiming() && dosage.getTiming().hasRepeat() && dosage.getTiming().getRepeat().hasBoundsRange(); + protected boolean hasRequiredElements(Dosage dosage) { + return dosage.getTiming().hasRepeat() && dosage.getTiming().getRepeat().hasBoundsRange(); } } diff --git a/r4/src/main/java/jy95/fhir/r4/translators/CountCountMaxR4.java b/r4/src/main/java/jy95/fhir/r4/translators/CountCountMaxR4.java index 0eee2feb7..812464ad3 100644 --- a/r4/src/main/java/jy95/fhir/r4/translators/CountCountMaxR4.java +++ b/r4/src/main/java/jy95/fhir/r4/translators/CountCountMaxR4.java @@ -26,9 +26,14 @@ public CompletableFuture convert(Dosage dosage) { } @Override - public boolean isPresent(Dosage dosage) { - return dosage.hasTiming() && dosage.getTiming().hasRepeat() - && (dosage.getTiming().getRepeat().hasCount() || - dosage.getTiming().getRepeat().hasCountMax()); + protected boolean hasRequiredElements(Dosage dosage) { + return dosage.getTiming().hasRepeat() + && (dosage.getTiming().getRepeat().hasCount() + || dosage.getTiming().getRepeat().hasCountMax()); + } + + @Override + protected boolean hasTiming(Dosage dosage) { + return dosage.hasTiming(); } } diff --git a/r4/src/main/java/jy95/fhir/r4/translators/DayOfWeekR4.java b/r4/src/main/java/jy95/fhir/r4/translators/DayOfWeekR4.java index d90b98cd8..4c2d8844b 100644 --- a/r4/src/main/java/jy95/fhir/r4/translators/DayOfWeekR4.java +++ b/r4/src/main/java/jy95/fhir/r4/translators/DayOfWeekR4.java @@ -12,6 +12,16 @@ public DayOfWeekR4(FDSConfigR4 config) { super(config); } + @Override + protected boolean hasTiming(Dosage dosage) { + return dosage.hasTiming(); + } + + @Override + protected boolean hasRequiredElements(Dosage dosage) { + return dosage.getTiming().hasRepeat() && dosage.getTiming().getRepeat().hasDayOfWeek(); + } + @Override public CompletableFuture convert(Dosage dosage) { return CompletableFuture.supplyAsync(() -> { @@ -27,9 +37,4 @@ public CompletableFuture convert(Dosage dosage) { return daysToText(dayOfWeeksCodes); }); } - - @Override - public boolean isPresent(Dosage dosage) { - return dosage.hasTiming() && dosage.getTiming().hasRepeat() && dosage.getTiming().getRepeat().hasDayOfWeek(); - } } diff --git a/r4/src/main/java/jy95/fhir/r4/translators/DurationDurationMaxR4.java b/r4/src/main/java/jy95/fhir/r4/translators/DurationDurationMaxR4.java index 29af3ae93..a18387bd2 100644 --- a/r4/src/main/java/jy95/fhir/r4/translators/DurationDurationMaxR4.java +++ b/r4/src/main/java/jy95/fhir/r4/translators/DurationDurationMaxR4.java @@ -20,6 +20,18 @@ protected boolean hasDurationMax(Dosage dosage) { return dosage.getTiming().getRepeat().hasDurationMax(); } + @Override + protected boolean hasRequiredElements(Dosage dosage) { + return dosage.getTiming().hasRepeat() + && dosage.getTiming().getRepeat().hasDurationUnit() + && (hasDuration(dosage) || hasDurationMax(dosage)); + } + + @Override + protected boolean hasTiming(Dosage dosage) { + return dosage.hasTiming(); + } + @Override protected String turnDurationToString(Dosage dosage) { var repeat = dosage.getTiming().getRepeat(); @@ -39,11 +51,4 @@ protected String turnDurationMaxToString(Dosage dosage) { var durationText = quantityToString(durationUnit, durationQuantity); return durationMaxMsg.format(new Object[]{durationText}); } - - @Override - public boolean isPresent(Dosage dosage) { - return dosage.hasTiming() && dosage.getTiming().hasRepeat() - && dosage.getTiming().getRepeat().hasDurationUnit() - && (hasDuration(dosage) || hasDurationMax(dosage)); - } } diff --git a/r4/src/main/java/jy95/fhir/r4/translators/FrequencyFrequencyMaxR4.java b/r4/src/main/java/jy95/fhir/r4/translators/FrequencyFrequencyMaxR4.java index b7d26d8c0..f94f2c4e5 100644 --- a/r4/src/main/java/jy95/fhir/r4/translators/FrequencyFrequencyMaxR4.java +++ b/r4/src/main/java/jy95/fhir/r4/translators/FrequencyFrequencyMaxR4.java @@ -10,6 +10,11 @@ public FrequencyFrequencyMaxR4(FDSConfigR4 config) { super(config); } + @Override + protected boolean hasTiming(Dosage dosage) { + return dosage.hasTiming(); + } + @Override protected boolean hasFrequency(Dosage dosage) { return dosage.getTiming().getRepeat().hasFrequency(); @@ -20,6 +25,11 @@ protected boolean hasFrequencyMax(Dosage dosage) { return dosage.getTiming().getRepeat().hasFrequencyMax(); } + @Override + protected boolean hasRequiredElements(Dosage dosage) { + return dosage.getTiming().hasRepeat() && (hasFrequency(dosage) || hasFrequencyMax(dosage)); + } + @Override protected String turnFrequencyAndFrequencyMaxToString(Dosage dosage) { var repeat = dosage.getTiming().getRepeat(); @@ -41,10 +51,4 @@ protected String turnFrequencyToString(Dosage dosage) { var frequency = repeat.getFrequency(); return formatFrequencyText(frequency); } - - @Override - public boolean isPresent(Dosage dosage) { - return dosage.hasTiming() && dosage.getTiming().hasRepeat() - && (hasFrequency(dosage) || hasFrequencyMax(dosage)); - } } diff --git a/r4/src/main/java/jy95/fhir/r4/translators/OffsetWhenR4.java b/r4/src/main/java/jy95/fhir/r4/translators/OffsetWhenR4.java index fb9cd5332..b93937682 100644 --- a/r4/src/main/java/jy95/fhir/r4/translators/OffsetWhenR4.java +++ b/r4/src/main/java/jy95/fhir/r4/translators/OffsetWhenR4.java @@ -27,6 +27,18 @@ public CompletableFuture convert(Dosage dosage) { .collect(Collectors.joining(" "))); } + @Override + protected boolean hasRequiredElements(Dosage dosage) { + var timing = dosage.getTiming(); + // Rule: If there's an offset, there must be a when (and not C, CM, CD, CV) + return timing.hasRepeat() && (timing.getRepeat().hasOffset() || timing.getRepeat().hasWhen()); + } + + @Override + protected boolean hasTiming(Dosage dosage) { + return dosage.hasTiming(); + } + private CompletableFuture turnWhenToText(Dosage dosage) { var bundle = getResources(); var repeat = dosage.getTiming().getRepeat(); @@ -55,12 +67,4 @@ private CompletableFuture turnOffsetToText(Dosage dosage) { } return turnOffsetValueToText(repeat.getOffset()); } - - @Override - public boolean isPresent(Dosage dosage) { - // Rule: If there's an offset, there must be a when (and not C, CM, CD, CV) - return dosage.hasTiming() - && (dosage.getTiming().getRepeat().hasOffset() || - dosage.getTiming().getRepeat().hasWhen()); - } } diff --git a/r4/src/main/java/jy95/fhir/r4/translators/PeriodPeriodMaxR4.java b/r4/src/main/java/jy95/fhir/r4/translators/PeriodPeriodMaxR4.java index 21679a142..412b450c7 100644 --- a/r4/src/main/java/jy95/fhir/r4/translators/PeriodPeriodMaxR4.java +++ b/r4/src/main/java/jy95/fhir/r4/translators/PeriodPeriodMaxR4.java @@ -20,6 +20,17 @@ protected boolean hasPeriodMax(Dosage dosage) { return dosage.getTiming().getRepeat().hasPeriodMax(); } + @Override + protected boolean hasRequiredElements(Dosage dosage) { + var timing = dosage.getTiming(); + return timing.hasRepeat() && timing.hasRepeat() && (hasPeriod(dosage) || hasPeriodMax(dosage)); + } + + @Override + protected boolean hasTiming(Dosage dosage) { + return dosage.hasTiming(); + } + @Override protected String turnPeriodAndPeriodMaxToString(Dosage dosage) { @@ -42,11 +53,4 @@ protected String turnPeriodToString(Dosage dosage) { var unitText = getUnit(periodUnit, period); return formatPeriodText(period, unitText); } - - @Override - public boolean isPresent(Dosage dosage) { - return dosage.hasTiming() && dosage.getTiming().hasRepeat() - && dosage.getTiming().getRepeat().hasPeriodUnit() - && (hasPeriod(dosage) || hasPeriodMax(dosage)); - } } diff --git a/r4/src/main/java/jy95/fhir/r4/translators/TimeOfDayR4.java b/r4/src/main/java/jy95/fhir/r4/translators/TimeOfDayR4.java index 3ac7e2953..bb5a8633c 100644 --- a/r4/src/main/java/jy95/fhir/r4/translators/TimeOfDayR4.java +++ b/r4/src/main/java/jy95/fhir/r4/translators/TimeOfDayR4.java @@ -25,7 +25,13 @@ protected List getTimes(Dosage dosage) { } @Override - public boolean isPresent(Dosage dosage) { - return dosage.hasTiming() && dosage.getTiming().hasRepeat() && dosage.getTiming().getRepeat().hasTimeOfDay(); + protected boolean hasRequiredElements(Dosage dosage) { + var timing = dosage.getTiming(); + return timing.hasRepeat() && timing.getRepeat().hasTimeOfDay(); + } + + @Override + protected boolean hasTiming(Dosage dosage) { + return dosage.hasTiming(); } } diff --git a/r4/src/main/java/jy95/fhir/r4/translators/TimingCodeR4.java b/r4/src/main/java/jy95/fhir/r4/translators/TimingCodeR4.java index e1ad2ca92..3951f4c0b 100644 --- a/r4/src/main/java/jy95/fhir/r4/translators/TimingCodeR4.java +++ b/r4/src/main/java/jy95/fhir/r4/translators/TimingCodeR4.java @@ -1,17 +1,22 @@ package jy95.fhir.r4.translators; -import jy95.fhir.common.types.AbstractTranslator; +import jy95.fhir.common.types.AbstractTranslatorTiming; import jy95.fhir.r4.config.FDSConfigR4; import org.hl7.fhir.r4.model.Dosage; import java.util.concurrent.CompletableFuture; -public class TimingCodeR4 extends AbstractTranslator { +public class TimingCodeR4 extends AbstractTranslatorTiming { public TimingCodeR4(FDSConfigR4 config) { super(config); } + @Override + protected boolean hasTiming(Dosage dosage) { + return dosage.hasTiming(); + } + @Override public CompletableFuture convert(Dosage dosage) { return this @@ -23,7 +28,7 @@ public CompletableFuture convert(Dosage dosage) { } @Override - public boolean isPresent(Dosage dosage) { - return dosage.hasTiming() && dosage.getTiming().hasCode(); + protected boolean hasRequiredElements(Dosage dosage) { + return dosage.getTiming().hasCode(); } } diff --git a/r4/src/main/java/jy95/fhir/r4/translators/TimingEventR4.java b/r4/src/main/java/jy95/fhir/r4/translators/TimingEventR4.java index f77f2b2b2..7672837b7 100644 --- a/r4/src/main/java/jy95/fhir/r4/translators/TimingEventR4.java +++ b/r4/src/main/java/jy95/fhir/r4/translators/TimingEventR4.java @@ -18,13 +18,18 @@ public TimingEventR4(FDSConfigR4 config) { } @Override - protected List getEvents(Dosage dosage) { - DateTimeType[] events = dosage.getTiming().getEvent().toArray(DateTimeType[]::new); - return formatDateTimesR4.convert(this.getConfig().getLocale(), events); + protected boolean hasTiming(Dosage dosage) { + return dosage.hasTiming(); } @Override - public boolean isPresent(Dosage dosage) { - return dosage.hasTiming() && dosage.getTiming().hasEvent(); + protected boolean hasRequiredElements(Dosage dosage) { + return dosage.getTiming().hasEvent(); + } + + @Override + protected List getEvents(Dosage dosage) { + DateTimeType[] events = dosage.getTiming().getEvent().toArray(DateTimeType[]::new); + return formatDateTimesR4.convert(this.getConfig().getLocale(), events); } } diff --git a/universal-coverage/pom.xml b/universal-coverage/pom.xml index 5cec66b4e..d9ed0c4b1 100644 --- a/universal-coverage/pom.xml +++ b/universal-coverage/pom.xml @@ -7,6 +7,7 @@ ${revision} universal-coverage + pom Universal Coverage A comprehensive module for handling global coverage, ensuring seamless integration with FHIR R4 and R5 standards.