Skip to content

Commit 16f6e77

Browse files
Merge pull request #13259 from SORMAS-Foundation/feature-#13194-survey-card-on-case
#13194 Add a "Survey" Card to the case view
2 parents 9afc965 + 010dd6b commit 16f6e77

19 files changed

+519
-21
lines changed

sormas-api/src/main/java/de/symeda/sormas/api/FacadeProvider.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@
103103
import de.symeda.sormas.api.sormastosormas.share.outgoing.ShareRequestInfoFacade;
104104
import de.symeda.sormas.api.sormastosormas.share.outgoing.SormasToSormasShareInfoFacade;
105105
import de.symeda.sormas.api.specialcaseaccess.SpecialCaseAccessFacade;
106+
import de.symeda.sormas.api.survey.SurveyTokenFacade;
106107
import de.symeda.sormas.api.symptoms.SymptomsFacade;
107108
import de.symeda.sormas.api.systemevents.SystemEventFacade;
108109
import de.symeda.sormas.api.systemevents.sync.SyncFacade;
@@ -554,6 +555,10 @@ public static SelfReportImportFacade getSelfReportImportFacade() {
554555
return get().lookupEjbRemote(SelfReportImportFacade.class);
555556
}
556557

558+
public static SurveyTokenFacade getSurveyTokenFacade() {
559+
return get().lookupEjbRemote(SurveyTokenFacade.class);
560+
}
561+
557562
@SuppressWarnings("unchecked")
558563
public <P> P lookupEjbRemote(Class<P> clazz) {
559564
try {

sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2688,6 +2688,18 @@ public interface Captions {
26882688
String SurveillanceReport_uuid = "SurveillanceReport.uuid";
26892689
String surveillanceReportNewReport = "surveillanceReportNewReport";
26902690
String surveillanceReportNoReportsForCase = "surveillanceReportNoReportsForCase";
2691+
String surveyGenerate = "surveyGenerate";
2692+
String surveyNew = "surveyNew";
2693+
String surveySend = "surveySend";
2694+
String SurveyToken = "SurveyToken";
2695+
String SurveyToken_assignmentDate = "SurveyToken.assignmentDate";
2696+
String SurveyToken_caseAssignedTo = "SurveyToken.caseAssignedTo";
2697+
String SurveyToken_generatedDocument = "SurveyToken.generatedDocument";
2698+
String SurveyToken_recipientEmail = "SurveyToken.recipientEmail";
2699+
String SurveyToken_responseReceived = "SurveyToken.responseReceived";
2700+
String SurveyToken_survey = "SurveyToken.survey";
2701+
String SurveyToken_token = "SurveyToken.token";
2702+
String SurveyToken_uuid = "SurveyToken.uuid";
26912703
String symptomJournalOptionsButton = "symptomJournalOptionsButton";
26922704
String Symptoms = "Symptoms";
26932705
String Symptoms_abdominalPain = "Symptoms.abdominalPain";

sormas-api/src/main/java/de/symeda/sormas/api/i18n/Strings.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,7 @@ public interface Strings {
484484
String headingCasesRestored = "headingCasesRestored";
485485
String headingCasesResultingFromContacts = "headingCasesResultingFromContacts";
486486
String headingCaseStatusMap = "headingCaseStatusMap";
487+
String headingCaseSurveyDetails = "headingCaseSurveyDetails";
487488
String headingcasesWithReferenceDefinitionFulfilled = "headingcasesWithReferenceDefinitionFulfilled";
488489
String headingCaution = "headingCaution";
489490
String headingChangeCaseDisease = "headingChangeCaseDisease";
@@ -853,6 +854,7 @@ public interface Strings {
853854
String headingSpecailCaseAccess = "headingSpecailCaseAccess";
854855
String headingStoppedFollowUp = "headingStoppedFollowUp";
855856
String headingSurveillanceReports = "headingSurveillanceReports";
857+
String headingSurveySideComponent = "headingSurveySideComponent";
856858
String headingSymptomJournalAccountCreation = "headingSymptomJournalAccountCreation";
857859
String headingSyncUsers = "headingSyncUsers";
858860
String headingTasksDeleted = "headingTasksDeleted";
@@ -1043,6 +1045,7 @@ public interface Strings {
10431045
String infoNoSourceCaseSelectedLineListing = "infoNoSourceCaseSelectedLineListing";
10441046
String infoNoSubordinateEvents = "infoNoSubordinateEvents";
10451047
String infoNoSuperordinateEvent = "infoNoSuperordinateEvent";
1048+
String infoNoSurveys = "infoNoSurveys";
10461049
String infoObserverMissingEmail = "infoObserverMissingEmail";
10471050
String infoObserverMissingEmailOrPhoneNumber = "infoObserverMissingEmailOrPhoneNumber";
10481051
String infoPersonMergeConfirmation = "infoPersonMergeConfirmation";
@@ -1098,6 +1101,8 @@ public interface Strings {
10981101
String infoStatisticsFilter = "infoStatisticsFilter";
10991102
String infoStatisticsResults = "infoStatisticsResults";
11001103
String infoSurveillanceDashboard = "infoSurveillanceDashboard";
1104+
String infoSurveyResponseNotReceived = "infoSurveyResponseNotReceived";
1105+
String infoSurveyResponseReceived = "infoSurveyResponseReceived";
11011106
String infoSyncUsers = "infoSyncUsers";
11021107
String infoTasksWithMultipleJurisdictionsSelected = "infoTasksWithMultipleJurisdictionsSelected";
11031108
String infoUploadDocumentTemplate = "infoUploadDocumentTemplate";

sormas-api/src/main/java/de/symeda/sormas/api/survey/SurveyTokenCriteria.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
package de.symeda.sormas.api.survey;
1717

18+
import de.symeda.sormas.api.caze.CaseReferenceDto;
1819
import de.symeda.sormas.api.utils.criteria.BaseCriteria;
1920

2021
public class SurveyTokenCriteria extends BaseCriteria {
@@ -23,6 +24,7 @@ public class SurveyTokenCriteria extends BaseCriteria {
2324

2425
private SurveyReferenceDto survey;
2526
private String tokenLike;
27+
private CaseReferenceDto caseAssignedTo;
2628

2729
public SurveyReferenceDto getSurvey() {
2830
return survey;
@@ -49,4 +51,17 @@ public SurveyTokenCriteria tokenLike(String tokenLike) {
4951
setTokenLike(tokenLike);
5052
return this;
5153
}
54+
55+
public CaseReferenceDto getCaseAssignedTo() {
56+
return caseAssignedTo;
57+
}
58+
59+
public void setCaseAssignedTo(CaseReferenceDto caseAssignedTo) {
60+
this.caseAssignedTo = caseAssignedTo;
61+
}
62+
63+
public SurveyTokenCriteria caseAssignedTo(CaseReferenceDto caseAssignedTo) {
64+
setCaseAssignedTo(caseAssignedTo);
65+
return this;
66+
}
5267
}

sormas-api/src/main/java/de/symeda/sormas/api/survey/SurveyTokenDto.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.util.Date;
1919

2020
import javax.validation.constraints.NotBlank;
21+
import javax.validation.constraints.NotNull;
2122
import javax.validation.constraints.Size;
2223

2324
import de.symeda.sormas.api.EntityDto;
@@ -35,7 +36,16 @@ public class SurveyTokenDto extends EntityDto {
3536
private static final long serialVersionUID = -4598785341989656729L;
3637

3738
public static final String I18N_PREFIX = "SurveyToken";
38-
39+
public static final String SURVEY = "survey";
40+
public static final String TOKEN = "token";
41+
public static final String CASE_ASSIGNED_TO = "caseAssignedTo";
42+
public static final String ASSIGNMENT_DATE = "assignmentDate";
43+
public static final String RECIPIENT_EMAIL = "recipientEmail";
44+
public static final String GENERATED_DOCUMENT = "generatedDocument";
45+
public static final String RESPONSE_RECEIVED = "responseReceived";
46+
47+
@NotNull(message = Validations.requiredField)
48+
private SurveyReferenceDto survey;
3949
@NotBlank(message = Validations.requiredField)
4050
@Size(max = FieldConstraints.CHARACTER_LIMIT_SMALL, message = Validations.textTooLong)
4151
private String token;
@@ -53,6 +63,14 @@ public static SurveyTokenDto build() {
5363
return token;
5464
}
5565

66+
public SurveyReferenceDto getSurvey() {
67+
return survey;
68+
}
69+
70+
public void setSurvey(SurveyReferenceDto survey) {
71+
this.survey = survey;
72+
}
73+
5674
public String getToken() {
5775
return token;
5876
}

sormas-api/src/main/java/de/symeda/sormas/api/survey/SurveyTokenIndexDto.java

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,47 @@
1515

1616
package de.symeda.sormas.api.survey;
1717

18+
import java.util.Date;
19+
1820
import de.symeda.sormas.api.caze.CaseReferenceDto;
19-
import de.symeda.sormas.api.uuid.AbstractUuidDto;
21+
import de.symeda.sormas.api.utils.pseudonymization.PseudonymizableIndexDto;
2022

21-
public class SurveyTokenIndexDto extends AbstractUuidDto {
23+
public class SurveyTokenIndexDto extends PseudonymizableIndexDto {
2224

2325
private static final long serialVersionUID = 4358173798026207265L;
2426

27+
private final String surveyUuid;
28+
private final String surveyName;
2529
private final String token;
2630
private final CaseReferenceDto caseAssignedTo;
27-
private final String assignmentDate;
31+
private final Date assignmentDate;
32+
private final String recipientEmail;
33+
private final Boolean responseReceived;
2834

29-
public SurveyTokenIndexDto(String uuid, String token, CaseReferenceDto caseAssignedTo, String assignmentDate) {
35+
public SurveyTokenIndexDto(
36+
String uuid,
37+
String surveyUuid,
38+
String surveyName,
39+
String token,
40+
CaseReferenceDto caseAssignedTo,
41+
Date assignmentDate,
42+
String recipientEmail, Boolean responseReceived) {
3043
super(uuid);
44+
this.surveyUuid = surveyUuid;
45+
this.surveyName = surveyName;
3146
this.token = token;
3247
this.caseAssignedTo = caseAssignedTo;
3348
this.assignmentDate = assignmentDate;
49+
this.recipientEmail = recipientEmail;
50+
this.responseReceived = responseReceived;
51+
}
52+
53+
public String getSurveyUuid() {
54+
return surveyUuid;
55+
}
56+
57+
public String getSurveyName() {
58+
return surveyName;
3459
}
3560

3661
public String getToken() {
@@ -41,7 +66,19 @@ public CaseReferenceDto getCaseAssignedTo() {
4166
return caseAssignedTo;
4267
}
4368

44-
public String getAssignmentDate() {
69+
public Date getAssignmentDate() {
4570
return assignmentDate;
4671
}
72+
73+
public String getRecipientEmail() {
74+
return recipientEmail;
75+
}
76+
77+
public Boolean getResponseReceived() {
78+
return responseReceived;
79+
}
80+
81+
public SurveyTokenReferenceDto toReference() {
82+
return new SurveyTokenReferenceDto(getUuid(), getSurveyName());
83+
}
4784
}

sormas-api/src/main/resources/captions.properties

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3398,3 +3398,17 @@ selfReportProcess=Process
33983398
confirmChangesField=Field:
33993399
confirmChangesValue=Will be changed to:
34003400

3401+
# Survey
3402+
surveyNew=New Survey
3403+
surveyGenerate=Generate Document
3404+
surveySend=Send Document
3405+
3406+
SurveyToken = Survey token
3407+
SurveyToken.uuid = ID
3408+
SurveyToken.survey = Survey
3409+
SurveyToken.token = Token
3410+
SurveyToken.caseAssignedTo = Case assigned to
3411+
SurveyToken.assignmentDate = Assignment date
3412+
SurveyToken.recipientEmail = Recipient email
3413+
SurveyToken.generatedDocument = Generated document
3414+
SurveyToken.responseReceived = Response received

sormas-api/src/main/resources/strings.properties

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -910,6 +910,8 @@ headingAefiSelectPrimarySuspectVaccine=Select primary suspect vaccine
910910
headingAefiReportInvestigations=Investigations
911911
headingAefiInvestigationSelectConcernedVaccine=Select concerned vaccine
912912
headingAefiInvestigationFormSubHeading=(Only for Serious Adverse Events Following Immunization ? Death / Disability / Hospitalization / Cluster)
913+
headingSurveySideComponent=Surveys
914+
headingCaseSurveyDetails=Survey details
913915

914916
# Info texts
915917
infoActivityAsCaseInvestigation = <i>Please document ALL relevant activities after infection:</i>
@@ -1117,6 +1119,9 @@ infoAefiSelectPrimarySuspectVaccine = The list below contains all vaccinations o
11171119
infoArchivedAefiEntries = Adverse event entries are automatically archived after %d days without changes to the data.
11181120
infoNoAefiInvestigations = No investigations have been created for this adverse event
11191121
infoHeadingAefiDashboardMap=Adverse events are shown using the GPS coordinate of the facility or person's home address.
1122+
infoNoSurveys=There are no surveys created or sent for this case
1123+
infoSurveyResponseReceived=Response received
1124+
infoSurveyResponseNotReceived=No response received yet
11201125

11211126
# Messages
11221127
messageActionOutsideJurisdictionDeletionDenied = The action outside user's jurisdiction cannot be deleted

sormas-backend/src/main/java/de/symeda/sormas/backend/survey/SurveyFacadeEjb.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import de.symeda.sormas.api.survey.SurveyDto;
4242
import de.symeda.sormas.api.survey.SurveyFacade;
4343
import de.symeda.sormas.api.survey.SurveyIndexDto;
44+
import de.symeda.sormas.api.survey.SurveyReferenceDto;
4445
import de.symeda.sormas.api.user.UserRight;
4546
import de.symeda.sormas.api.utils.SortProperty;
4647
import de.symeda.sormas.backend.FacadeHelper;
@@ -193,7 +194,15 @@ private SurveyDto toDto(Survey source) {
193194
return target;
194195
}
195196

196-
@LocalBean
197+
public SurveyReferenceDto convertToReferenceDto(Survey survey) {
198+
return toSurveyReferenceDto(survey);
199+
}
200+
201+
public static SurveyReferenceDto toSurveyReferenceDto(Survey survey) {
202+
return new SurveyReferenceDto(survey.getUuid(), survey.getName());
203+
}
204+
205+
@LocalBean
197206
@Stateless
198207
public static class SurveyFacadeEjbLocal extends SurveyFacadeEjb {
199208

sormas-backend/src/main/java/de/symeda/sormas/backend/survey/SurveyToken.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ public class SurveyToken extends AbstractDomainObject {
3838
public static final String SURVEY = "survey";
3939
public static final String CASE_ASSIGNED_TO = "caseAssignedTo";
4040
public static final String ASSIGNMENT_DATE = "assignmentDate";
41+
public static final String RECIPIENT_EMAIL = "recipientEmail";
42+
public static final String RESPONSE_RECEIVED = "responseReceived";
4143

4244
private String token;
4345
private Survey survey;

0 commit comments

Comments
 (0)