Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit af05e46

Browse files
lgallgal
authored andcommitted
SORMAS-Foundation#2975 export first sample in BAG export
1 parent d8524f5 commit af05e46

1 file changed

Lines changed: 24 additions & 10 deletions

File tree

sormas-backend/src/main/java/de/symeda/sormas/backend/bagexport/BAGExportFacadeEjb.java

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.HashMap;
2222
import java.util.List;
2323
import java.util.Map;
24+
import java.util.Optional;
2425
import java.util.stream.Collectors;
2526

2627
import javax.ejb.EJB;
@@ -39,6 +40,7 @@
3940
import de.symeda.sormas.api.bagexport.BAGExportCaseDto;
4041
import de.symeda.sormas.api.bagexport.BAGExportFacade;
4142
import de.symeda.sormas.api.person.PersonAddressType;
43+
import de.symeda.sormas.api.sample.PathogenTestResultType;
4244
import de.symeda.sormas.api.utils.YesNoUnknown;
4345
import de.symeda.sormas.backend.caze.Case;
4446
import de.symeda.sormas.backend.location.Location;
@@ -71,7 +73,7 @@ public List<BAGExportCaseDto> getCaseExportList(int first, int max) {
7173

7274
Join<Case, Person> person = caseCaseJoins.getPerson();
7375

74-
Expression<String> TODO = cb.literal(TODO_VALUE);
76+
Expression<String> mobileNumber = cb.literal(TODO_VALUE);
7577

7678
cq.multiselect(
7779
caseRoot.get(Case.CASE_ID_ISM),
@@ -80,7 +82,7 @@ public List<BAGExportCaseDto> getCaseExportList(int first, int max) {
8082
person.get(Person.LAST_NAME),
8183
person.get(Person.FIRST_NAME),
8284
person.get(Person.PHONE),
83-
TODO,
85+
mobileNumber,
8486
person.get(Person.EMAIL_ADDRESS),
8587
person.get(Person.SEX),
8688
person.get(Person.BIRTHDATE_DD),
@@ -136,7 +138,7 @@ public List<BAGExportCaseDto> getCaseExportList(int first, int max) {
136138
Root<Sample> samplesRoot = samplesCq.from(Sample.class);
137139

138140
Path<Object> caseIdExpr = samplesRoot.join(Sample.ASSOCIATED_CASE, JoinType.LEFT).get(Case.ID);
139-
samplesCq.where(caseIdExpr.in(caseIdIds)).orderBy(cb.desc(samplesRoot.get(Sample.REPORT_DATE_TIME)));
141+
samplesCq.where(caseIdExpr.in(caseIdIds)).orderBy(cb.asc(samplesRoot.get(Sample.REPORT_DATE_TIME)));
140142

141143
List<Sample> samplesList = em.createQuery(samplesCq).setHint(ModelConstants.HINT_HIBERNATE_READ_ONLY, true).getResultList();
142144
samples.putAll(samplesList.stream().collect(Collectors.groupingBy(s -> s.getAssociatedCase().getId())));
@@ -181,19 +183,31 @@ public List<BAGExportCaseDto> getCaseExportList(int first, int max) {
181183

182184
List<Sample> caseSamples = samples.get(caze.getCaseId());
183185
if (caseSamples != null && caseSamples.size() > 0) {
184-
Sample newestSample = caseSamples.get(0);
185-
caze.setSampleDate(newestSample.getSampleDateTime());
186-
newestSample.getPathogenTests().stream().max(Comparator.comparing(PathogenTest::getTestDateTime)).ifPresent(pathogenTest -> {
187-
caze.setLabReportDate(pathogenTest.getTestDateTime());
188-
caze.setTestType(pathogenTest.getTestType());
189-
caze.setTestResult(pathogenTest.getTestResult());
190-
});
186+
Sample firstSample = caseSamples.get(0);
187+
caze.setSampleDate(firstSample.getSampleDateTime());
188+
189+
List<PathogenTest> sortedTests =
190+
firstSample.getPathogenTests().stream().sorted(Comparator.comparing(PathogenTest::getTestDateTime)).collect(Collectors.toList());
191+
192+
Optional<PathogenTest> positiveTest =
193+
sortedTests.stream().filter(t -> t.getTestResult() == PathogenTestResultType.POSITIVE).findFirst();
194+
if (positiveTest.isPresent()) {
195+
setExportTestData(caze, positiveTest.get());
196+
} else if (sortedTests.size() > 0) {
197+
setExportTestData(caze, sortedTests.get(0));
198+
}
191199
}
192200
});
193201

194202
return exportList;
195203
}
196204

205+
private void setExportTestData(BAGExportCaseDto caze, PathogenTest test) {
206+
caze.setLabReportDate(test.getTestDateTime());
207+
caze.setTestType(test.getTestType());
208+
caze.setTestResult(test.getTestResult());
209+
}
210+
197211
@LocalBean
198212
@Stateless
199213
public static class BAGExportFacadeEjbLocal extends BAGExportFacadeEjb {

0 commit comments

Comments
 (0)