Skip to content

Commit

Permalink
FMK-2702 ASCP00070684 Dosis-2-text komprimering af 2 stk 4 gange dagl…
Browse files Browse the repository at this point in the history
…ig afh. af den øvrige dosering
  • Loading branch information
chjtrifork committed Oct 5, 2016
1 parent 46e63eb commit ceba494
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 1 deletion.
Expand Up @@ -135,6 +135,16 @@ else if(day.getNumberOfDoses()>1 && day.allDosesAreTheSame()) {
else
s.append(" "+day.getNumberOfDoses()+" "+TextHelper.gange(day.getNumberOfDoses())+daglig+supplText);
}
else if(day.getNumberOfDoses()>2 && day.allDosesButTheFirstAreTheSame()) {
// Eks.: 1 stk. kl. 08:00 og 2 stk. 4 gange daglig

s.append((CharSequence)makeOneDose(day.getDose(0), unitOrUnits, structure.getSupplText())+supplText);
if(0<day.getNumberOfDoses()-1) {
s.append(" + ");
}
DayWrapper dayWithoutFirstDose = DayWrapper.makeDay(day.getDayNumber(), day.getAllDoses().subList(1, day.getAllDoses().size()).toArray(new DoseWrapper[0]));
s.append(makeDaysDosage(unitOrUnits, structure, dayWithoutFirstDose, false));
}
else {
for(int d=0; d<day.getNumberOfDoses(); d++) {
// The cast to CharSequence is needed to circumvent a gwt bug:
Expand Down
20 changes: 20 additions & 0 deletions src/dk/medicinkortet/dosisstructuretext/vowrapper/DayWrapper.java
Expand Up @@ -47,6 +47,7 @@ public class DayWrapper {

// Helper / cached values
private Boolean areAllDosesTheSame;
private Boolean areAllDosesExceptTheFirstTheSame;
private Boolean areAllDosesHaveTheSameQuantity;
private ArrayList<DoseWrapper> accordingToNeedDoses;

Expand Down Expand Up @@ -157,6 +158,25 @@ else if(!dose0.theSameAs(dose)) {
}
return areAllDosesTheSame;
}


public boolean allDosesButTheFirstAreTheSame() {
if(areAllDosesExceptTheFirstTheSame==null) {
areAllDosesExceptTheFirstTheSame = true;
DoseWrapper dose0 = null;
for(int i = 1; i < getNumberOfDoses();i++) {
if(dose0==null) {
dose0 = getAllDoses().get(i);
}
else if(!dose0.theSameAs(getAllDoses().get(i))) {
areAllDosesExceptTheFirstTheSame = false;
break;
}
}
}
return areAllDosesExceptTheFirstTheSame;
}


/**
* Compares dosage quantities (but not the dosages label)
Expand Down
Expand Up @@ -119,7 +119,7 @@ public void testFixedAndPNEquals2() throws Exception {
Assert.assertEquals(
"Doseringsforløbet starter lørdag den 1. januar 2011, gentages hver dag, og ophører tirsdag den 11. januar 2011:\n"+
" Doseringsforløb:\n"+
" 2 stk efter behov + 2 stk + 2 stk",
" 2 stk efter behov + 2 stk 2 gange daglig",
LongTextConverter.convert(dosage));
Assert.assertEquals(
"ParacetamolConverterImpl",
Expand Down
Expand Up @@ -37,6 +37,7 @@
import dk.medicinkortet.dosisstructuretext.vowrapper.DayWrapper;
import dk.medicinkortet.dosisstructuretext.vowrapper.DosageWrapper;
import dk.medicinkortet.dosisstructuretext.vowrapper.MorningDoseWrapper;
import dk.medicinkortet.dosisstructuretext.vowrapper.PlainDoseWrapper;
import dk.medicinkortet.dosisstructuretext.vowrapper.StructureWrapper;
import dk.medicinkortet.dosisstructuretext.vowrapper.StructuresWrapper;
import dk.medicinkortet.dosisstructuretext.vowrapper.TimedDoseWrapper;
Expand Down Expand Up @@ -120,5 +121,54 @@ public void testTimes() throws Exception {
Assert.assertNull(DailyDosisCalculator.calculate(dosage).getValue());
Assert.assertEquals(DosageType.Temporary, DosageTypeCalculator.calculate(dosage));
}

@Test
public void testDifferentFirstDosage() throws Exception {
DosageWrapper dosage = DosageWrapper.makeDosage(
StructuresWrapper.makeStructures(
UnitOrUnitsWrapper.makeUnits("tablet", "tabletter"),
StructureWrapper.makeStructure(
0, null, DateOrDateTimeWrapper.makeDate("2012-04-18"), null,
DayWrapper.makeDay(
1,
TimedDoseWrapper.makeDose(new LocalTime(10,0), new BigDecimal(1), false),

PlainDoseWrapper.makeDose(BigDecimal.valueOf(2)),
PlainDoseWrapper.makeDose(BigDecimal.valueOf(2)),
PlainDoseWrapper.makeDose(BigDecimal.valueOf(2)),
PlainDoseWrapper.makeDose(BigDecimal.valueOf(2))
))));
Assert.assertEquals(
"Doseringsforløbet starter onsdag den 18. april 2012 og ophører efter det angivne forløb:\n" +
" Doseringsforløb:\n" +
" Onsdag den 18. april 2012: 1 tablet kl. 10:00 + 2 tabletter 4 gange daglig",
LongTextConverter.convert(dosage));
Assert.assertNull(ShortTextConverter.convert(dosage));
Assert.assertEquals(9, DailyDosisCalculator.calculate(dosage).getValue().intValue());
Assert.assertEquals(DosageType.Temporary, DosageTypeCalculator.calculate(dosage));
}

@Test
public void testFirstDosageDiffersOnPN() throws Exception {
DosageWrapper dosage = DosageWrapper.makeDosage(
StructuresWrapper.makeStructures(
UnitOrUnitsWrapper.makeUnits("tablet", "tabletter"),
StructureWrapper.makeStructure(
0, null, DateOrDateTimeWrapper.makeDate("2012-04-18"), null,
DayWrapper.makeDay(
1,
PlainDoseWrapper.makeDose(BigDecimal.valueOf(2), true),
PlainDoseWrapper.makeDose(BigDecimal.valueOf(2), false),
PlainDoseWrapper.makeDose(BigDecimal.valueOf(2), false)
))));
Assert.assertEquals(
"Doseringsforløbet starter onsdag den 18. april 2012 og ophører efter det angivne forløb:\n" +
" Doseringsforløb:\n" +
" Onsdag den 18. april 2012: 2 tabletter efter behov + 2 tabletter 2 gange daglig",
LongTextConverter.convert(dosage));
Assert.assertNull(ShortTextConverter.convert(dosage));
Assert.assertNull(DailyDosisCalculator.calculate(dosage).getValue());
Assert.assertEquals(DosageType.Combined, DosageTypeCalculator.calculate(dosage));
}

}

0 comments on commit ceba494

Please sign in to comment.