Skip to content

Commit

Permalink
#13084 - Linked SelfReporting message should be shown as side compone…
Browse files Browse the repository at this point in the history
…nt in UI
  • Loading branch information
sergiupacurariu committed Jun 3, 2024
1 parent 9655678 commit c95618e
Show file tree
Hide file tree
Showing 25 changed files with 503 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2189,6 +2189,7 @@ public interface Captions {
String SelfReport_birthdateDD = "SelfReport.birthdateDD";
String SelfReport_birthdateMM = "SelfReport.birthdateMM";
String SelfReport_birthdateYYYY = "SelfReport.birthdateYYYY";
String SelfReport_caseReference = "SelfReport.caseReference";
String SelfReport_comment = "SelfReport.comment";
String SelfReport_contactDate = "SelfReport.contactDate";
String SelfReport_dateOfSymptoms = "SelfReport.dateOfSymptoms";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -777,6 +777,7 @@ public interface Strings {
String headingSelectCampaign = "headingSelectCampaign";
String headingSelectPerson = "headingSelectPerson";
String headingSelectSourceCase = "headingSelectSourceCase";
String headingSelfReportSideComponent = "headingSelfReportSideComponent";
String headingSetOutbreakStatus = "headingSetOutbreakStatus";
String headingShareRequestCases = "headingShareRequestCases";
String headingShareRequestContacts = "headingShareRequestContacts";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@

import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.EntityRelevanceStatus;
import de.symeda.sormas.api.caze.CaseReferenceDto;
import de.symeda.sormas.api.contact.ContactReferenceDto;
import de.symeda.sormas.api.disease.DiseaseVariant;
import de.symeda.sormas.api.sample.SampleCriteria;
import de.symeda.sormas.api.utils.DateFilterOption;
import de.symeda.sormas.api.utils.IgnoreForUrl;
import de.symeda.sormas.api.utils.criteria.BaseCriteria;
Expand All @@ -44,6 +47,9 @@ public class SelfReportCriteria extends BaseCriteria implements Serializable {
private Date reportDateFrom;
private Date reportDateTo;

private CaseReferenceDto caze;
private ContactReferenceDto contact;

@IgnoreForUrl
public String getFreeText() {
return freeText;
Expand Down Expand Up @@ -133,4 +139,22 @@ public void reportDateBetween(Date reportDateFrom, Date reportDateTo, DateFilter
this.reportDateTo = reportDateTo;
this.dateFilterOption = dateFilterOption;
}

public CaseReferenceDto getCaze() {
return caze;
}

public SelfReportCriteria setCaze(CaseReferenceDto caze) {
this.caze = caze;
return this;
}

public ContactReferenceDto getContact() {
return contact;
}

public SelfReportCriteria setContact(ContactReferenceDto contact) {
this.contact = contact;
return this;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@

import de.symeda.sormas.api.CoreFacade;

import java.util.List;

@Remote
public interface SelfReportFacade extends CoreFacade<SelfReportDto, SelfReportIndexDto, SelfReportReferenceDto, SelfReportCriteria> {

List<SelfReportListEntryDto> getEntriesList(SelfReportCriteria selfReportCriteria, Integer first, Integer max);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package de.symeda.sormas.api.selfreport;

import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.utils.pseudonymization.PseudonymizableIndexDto;

import java.io.Serializable;
import java.util.Date;

public class SelfReportListEntryDto extends PseudonymizableIndexDto implements Serializable {

public static final String I18N_PREFIX = "SelfReport";




private Date reportingDate;
private String caseReference;
private Disease disease;
private Date dateOfTest;


public SelfReportListEntryDto(String uuid, Date reportingDate, String caseReference, Disease disease, Date dateOfTest) {
super(uuid);
this.reportingDate = reportingDate;
this.caseReference = caseReference;
this.disease = disease;
this.dateOfTest = dateOfTest;
}

public Date getReportingDate() {
return reportingDate;
}

public void setReportingDate(Date reportingDate) {
this.reportingDate = reportingDate;
}

public String getCaseReference() {
return caseReference;
}

public void setCaseReference(String caseReference) {
this.caseReference = caseReference;
}

public Disease getDisease() {
return disease;
}

public void setDisease(Disease disease) {
this.disease = disease;
}

public Date getDateOfTest() {
return dateOfTest;
}

public void setDateOfTest(Date dateOfTest) {
this.dateOfTest = dateOfTest;
}
}
1 change: 1 addition & 0 deletions sormas-api/src/main/resources/captions.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2962,6 +2962,7 @@ specailCaseAccessNoAccessGranted=No special access granted for this case
SelfReport = Self report
SelfReport.type = Type
SelfReport.reportDate = Report date
SelfReport.caseReference = Case Reference
SelfReport.disease = Disease
SelfReport.diseaseVariant = Disease variant
SelfReport.firstName = First name
Expand Down
1 change: 1 addition & 0 deletions sormas-api/src/main/resources/strings.properties
Original file line number Diff line number Diff line change
Expand Up @@ -672,6 +672,7 @@ headingSecurityAlert=Security Alert
headingSelectCampaign = Select a campaign
headingSetOutbreakStatus = Set status of all districts:
headingShowExternalMessage = Message
headingSelfReportSideComponent = Self reporting
headingSignsAndSymptoms = Clinical Signs and Symptoms
headingSimilarImmunization = Similar immunizaton
headingSyncUsers = Sync Users
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import de.symeda.sormas.backend.selfreport.SelfReport;
import org.hibernate.annotations.Type;

import de.symeda.sormas.api.Disease;
Expand Down Expand Up @@ -244,6 +245,7 @@ public class Case extends CoreAdo implements IsCase, SormasToSormasShareable, Ha
public static final String DUPLICATE_OF = "duplicateOf";
public static final String CREATION_VERSION = "creationVersion";
public static final String SPECIAL_CASE_ACCESSES = "specialCaseAccesses";
public static final String SELF_REPORT = "selfReport";

private Person person;
private String description;
Expand Down Expand Up @@ -426,6 +428,8 @@ public class Case extends CoreAdo implements IsCase, SormasToSormasShareable, Ha

private List<SpecialCaseAccess> specialCaseAccesses = new ArrayList<>(0);

private List<SelfReport> selfReport;

public static Case build() {
Case caze = new Case();
caze.setSystemCaseClassification(CaseClassification.NOT_CLASSIFIED);
Expand Down Expand Up @@ -1765,4 +1769,13 @@ public List<SpecialCaseAccess> getSpecialCaseAccesses() {
public void setSpecialCaseAccesses(List<SpecialCaseAccess> specialCaseAccesses) {
this.specialCaseAccesses = specialCaseAccesses;
}

@OneToMany(mappedBy = SelfReport.RESULTING_CASE, fetch = FetchType.LAZY)
public List<SelfReport> getSelfReport() {
return selfReport;
}

public void setSelfReport(List<SelfReport> selfReport) {
this.selfReport = selfReport;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -486,7 +486,8 @@ public ADO getByUuid(String uuid, boolean fetchReferences) {
hints.put("javax.persistence.fetchgraph", entityGraph);
return em.find(getElementClass(), id, hints);
} else {
return em.find(getElementClass(), id);
ADO ado = em.find(getElementClass(), id);
return ado;
}
} else {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,11 @@
import de.symeda.sormas.backend.infrastructure.region.Region;
import de.symeda.sormas.backend.person.Person;
import de.symeda.sormas.backend.sample.Sample;
import de.symeda.sormas.backend.selfreport.SelfReport;
import de.symeda.sormas.backend.sormastosormas.entities.SormasToSormasShareable;
import de.symeda.sormas.backend.sormastosormas.origin.SormasToSormasOriginInfo;
import de.symeda.sormas.backend.sormastosormas.share.outgoing.SormasToSormasShareInfo;
import de.symeda.sormas.backend.specialcaseaccess.SpecialCaseAccess;
import de.symeda.sormas.backend.task.Task;
import de.symeda.sormas.backend.user.User;
import de.symeda.sormas.backend.visit.Visit;
Expand Down Expand Up @@ -166,6 +168,7 @@ public class Contact extends CoreAdo implements IsContact, SormasToSormasShareab
public static final String VACCINATION_STATUS = "vaccinationStatus";
public static final String VISITS = "visits";
public static final String DUPLICATE_OF = "duplicateOf";
public static final String SELF_REPORT ="selfReport";

private Date reportDateTime;
private User reportingUser;
Expand Down Expand Up @@ -266,6 +269,8 @@ public class Contact extends CoreAdo implements IsContact, SormasToSormasShareab
private Date previousQuarantineTo;
private String quarantineChangeComment;

private List<SelfReport> selfReport;

@Diseases({
Disease.AFP,
Disease.GUINEA_WORM,
Expand Down Expand Up @@ -1090,4 +1095,13 @@ public String getQuarantineChangeComment() {
public void setQuarantineChangeComment(String quarantineChangeComment) {
this.quarantineChangeComment = quarantineChangeComment;
}

@OneToMany(mappedBy = SelfReport.RESULTING_CONTACT, fetch = FetchType.LAZY)
public List<SelfReport> getSelfReport() {
return selfReport;
}

public void setSelfReport(List<SelfReport> selfReport) {
this.selfReport = selfReport;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@
import de.symeda.sormas.api.selfreport.SelfReportInvestigationStatus;
import de.symeda.sormas.api.selfreport.SelfReportProcessingStatus;
import de.symeda.sormas.api.selfreport.SelfReportType;
import de.symeda.sormas.backend.caze.Case;
import de.symeda.sormas.backend.common.CoreAdo;
import de.symeda.sormas.backend.contact.Contact;
import de.symeda.sormas.backend.disease.DiseaseVariantConverter;
import de.symeda.sormas.backend.location.Location;
import de.symeda.sormas.backend.user.User;
Expand Down Expand Up @@ -67,6 +69,9 @@ public class SelfReport extends CoreAdo {
public static final String RESPONSIBLE_USER = "responsibleUser";
public static final String INVESTIGATION_STATUS = "investigationStatus";
public static final String PROCESSING_STATUS = "processingStatus";
public static final String RESULTING_CASE = "resultingCase";
public static final String RESULTING_CONTACT = "resultingContact";
public static final String DATE_OF_TEST = "dateOfTest";

private SelfReportType type;
private Date reportDate;
Expand Down Expand Up @@ -96,6 +101,10 @@ public class SelfReport extends CoreAdo {
private SelfReportInvestigationStatus investigationStatus;
private SelfReportProcessingStatus processingStatus;

private Case resultingCase;

private Contact resultingContact;

@Enumerated(EnumType.STRING)
@Column(nullable = false)
public SelfReportType getType() {
Expand Down Expand Up @@ -344,4 +353,22 @@ public SelfReportProcessingStatus getProcessingStatus() {
public void setProcessingStatus(SelfReportProcessingStatus processingStatus) {
this.processingStatus = processingStatus;
}

@ManyToOne(fetch = FetchType.LAZY)
public Case getResultingCase() {
return resultingCase;
}

public void setResultingCase(Case resultingCase) {
this.resultingCase = resultingCase;
}

@ManyToOne(fetch = FetchType.LAZY)
public Contact getResultingContact() {
return resultingContact;
}

public void setResultingContact(Contact resultingContact) {
this.resultingContact = resultingContact;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package de.symeda.sormas.backend.selfreport;

import de.symeda.sormas.api.Disease;
import de.symeda.sormas.api.selfreport.SelfReportListEntryDto;
import org.hibernate.transform.ResultTransformer;

import java.util.Date;
import java.util.List;

public class SelfReportEntryDtoResultTransformer implements ResultTransformer {
@Override
public Object transformTuple(Object[] objects, String[] strings) {

boolean referred = objects[4] !=null;
return new SelfReportListEntryDto((String) objects[0], (Date) objects[1], (String) objects[2], (Disease) objects[3], (Date) objects[4]);
}

@Override
public List transformList(List list) {
return list;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import javax.validation.Valid;
import javax.validation.constraints.NotNull;

import de.symeda.sormas.api.selfreport.SelfReportListEntryDto;
import org.apache.commons.lang3.NotImplementedException;

import de.symeda.sormas.api.common.DeletableEntityType;
Expand Down Expand Up @@ -77,6 +78,8 @@ public class SelfReportFacadeEjb

@EJB
private LocationFacadeEjbLocal locationFacade;
@EJB
private SelfReportService selfReportService;

public SelfReportFacadeEjb() {
}
Expand Down Expand Up @@ -272,6 +275,11 @@ private List<Order> getOrderList(List<SortProperty> sortProperties, SelfReportQu
return orderList;
}

@Override
public List<SelfReportListEntryDto> getEntriesList(SelfReportCriteria selfReportCriteria, Integer first, Integer max) {
return selfReportService.getEntriesList(selfReportCriteria, first, max);
}

@Override
public void validate(SelfReportDto dto) throws ValidationRuntimeException {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@
import javax.persistence.criteria.Join;
import javax.persistence.criteria.JoinType;

import de.symeda.sormas.backend.caze.Case;
import de.symeda.sormas.backend.common.QueryJoins;
import de.symeda.sormas.backend.contact.Contact;
import de.symeda.sormas.backend.location.Location;
import de.symeda.sormas.backend.location.LocationJoins;
import de.symeda.sormas.backend.user.User;
Expand All @@ -30,6 +32,10 @@ public class SelfReportJoins extends QueryJoins<SelfReport> {
private LocationJoins addressJoins;
private Join<SelfReport, User> responsibleUser;

private Join<SelfReport, Case> caseJoin;

private Join<SelfReport, Contact> contactJoin;

public SelfReportJoins(From<?, SelfReport> root) {
super(root);
}
Expand Down Expand Up @@ -57,4 +63,20 @@ public Join<SelfReport, User> getResponsibleUser() {
private void setResponsibleUser(Join<SelfReport, User> responsibleUser) {
this.responsibleUser = responsibleUser;
}

public Join<SelfReport, Case> getCaseJoin() {
return getOrCreate(caseJoin, SelfReport.RESULTING_CASE, JoinType.LEFT, this::setCaseJoin);
}

public void setCaseJoin(Join<SelfReport, Case> caseJoin) {
this.caseJoin = caseJoin;
}

public Join<SelfReport, Contact> getContactJoin() {
return getOrCreate(contactJoin, SelfReport.RESULTING_CONTACT, JoinType.LEFT, this::setContactJoin);
}

public void setContactJoin(Join<SelfReport, Contact> contactJoin) {
this.contactJoin = contactJoin;
}
}
Loading

0 comments on commit c95618e

Please sign in to comment.