Skip to content

Feature 13918 salmonellosis form enhancements#13934

Open
roldy wants to merge 4 commits into
developmentfrom
feature-13918-salmonellosis-form-enhancements
Open

Feature 13918 salmonellosis form enhancements#13934
roldy wants to merge 4 commits into
developmentfrom
feature-13918-salmonellosis-form-enhancements

Conversation

@roldy
Copy link
Copy Markdown
Contributor

@roldy roldy commented May 15, 2026

Fixes #13917 #13918

Summary by CodeRabbit

Release Notes

New Features

  • Added support for Salmonellosis disease with expanded sample material options
  • Introduced new pathogen test types (CGMLST, SNP_TYPING, SEROTYPING)
  • Implemented disease-aware filtering for exposure subsettings and test type text display

Improvements

  • Vaccination status, immunizations, and ICU-related hospitalization fields now correctly hidden for Salmonellosis cases
  • Contact visit column visibility adjusted for Salmonellosis contacts
  • Test type text field visibility now dynamically determined by disease context
  • Enhanced sample export to include SNOMED codes and tested disease information

UI/Style Updates

  • Added CSS styling support for preserving original text casing in captions

Review Change Stack

roldy added 2 commits May 15, 2026 13:47
Resolved conflict in sormas_schema.sql: kept both the External Survey
integration (#13832) at v629 and the Salmonellosis FoodHistory work
(#13918, #13917), renumbering the FoodHistory inserts from 629/630/631
to 630/631/632 so the version sequence stays contiguous.
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 15, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 633b0427-9c22-4bc5-8998-aa3568ac5057

📥 Commits

Reviewing files that changed from the base of the PR and between 8e337ea and 145c20f.

📒 Files selected for processing (4)
  • sormas-api/src/main/resources/enum.properties
  • sormas-backend/src/main/java/de/symeda/sormas/backend/epidata/EpiDataFacadeEjb.java
  • sormas-backend/src/main/resources/sql/sormas_schema.sql
  • sormas-ui/src/main/java/de/symeda/sormas/ui/epidata/EpiDataForm.java
✅ Files skipped from review due to trivial changes (1)
  • sormas-ui/src/main/java/de/symeda/sormas/ui/epidata/EpiDataForm.java

📝 Walkthrough

Walkthrough

This PR extends disease-aware visibility filtering infrastructure and sample export enhancements for Salmonellosis. Core changes include a new @RevealsTestTypeText annotation for conditional test-type-text display, disease-filtered PathogenTestType and SampleMaterial enums with SNOMED-CT mappings, disease-aware ExposureSubSetting filtering overloads, sample export DTOs tracking tested disease, and Salmonellosis-specific field hiding across case, contact, hospitalization, exposure, and test UIs.

Changes

Salmonellosis Disease-Aware Visibility and Sample Context

Layer / File(s) Summary
Test Type & Sample Material Disease Metadata with SNOMED Codes
sormas-api/src/main/java/de/symeda/sormas/api/sample/RevealsTestTypeText.java, sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java, sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleMaterial.java, sormas-api/src/main/resources/enum.properties
@RevealsTestTypeText annotation controls test-type-text visibility; PathogenTestType constants extended with Salmonellosis disease hiding and reveals annotations; PathogenTestType.toString(...) conditionally appends details via revealsTestTypeText(testType, disease) reflection-based utility; SampleMaterial adds 12 Salmonellosis-specific material constants and getSnomedCode() method backed by unmodifiable SNOMED-codes map; enum captions localized in properties file.
Disease-Aware Exposure Sub-Setting Filtering
sormas-api/src/main/java/de/symeda/sormas/api/exposure/ExposureSubSetting.java
ExposureSubSetting enum imports @Diseases and adds two public overloads: getValues(category, setting, disease) and getValuesForCategoryOnly(category, disease) that filter results by disease visibility via isVisibleForDisease() helper using DiseasesConfiguration annotation checks.
Sample Export Disease Tracking and SNOMED Integration
sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleExportDto.java, sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleFacadeEjb.java, sormas-ui/src/main/java/de/symeda/sormas/ui/samples/pathogentestlink/PathogenTestListEntry.java
SampleExportDto adds getSampleMaterialSnomedCode() method; SampleExportPathogenTest tracks new testedDisease field for disease-aware formatting; formatType() calls PathogenTestType.toString(...) with tested disease; backend integration passes pathogenTest.getTestedDisease() when constructing export DTOs; UI label generation incorporates tested disease into display string.
Case & Contact Vaccination/Immunization Disease Gating
sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseDataDto.java, sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseDataView.java, sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactDataView.java
CaseDataDto.vaccinationStatus field hidden for Salmonellosis via additional @Diseases annotation; CaseDataView extends immunization-panel exclusion to include Salmonellosis; ContactDataView introduces resolvedDisease fallback from contact to case disease, extends immunization-panel visibility to exclude Salmonellosis, and updates immunization/vaccination list criteria to use resolved-disease filtering.
Hospitalization ICU & Contact Grid Salmonellosis Field Hiding
sormas-ui/src/main/java/de/symeda/sormas/ui/hospitalization/HospitalizationForm.java, sormas-ui/src/main/java/de/symeda/sormas/ui/contact/AbstractContactGrid.java
HospitalizationForm explicitly hides ICU-related fields (length-of-stay, oxygen, dates) for Salmonellosis while preserving "still hospitalized" field; AbstractContactGrid refactors imports to explicit style, rewrites proximity renderer as stream-lambda, and combines follow-up and disease checks to hide visit-count column for Salmonellosis.
Exposure Form & Test Method Component Disease-Aware Visibility
sormas-ui/src/main/java/de/symeda/sormas/ui/exposure/ExposureForm.java, sormas-ui/src/main/java/de/symeda/sormas/ui/samples/components/TestMethodComponent.java
ExposureForm field listeners for Salmonellosis now show/hide venue and food-details fields without clearing values; updateSubSettingsFieldItems uses disease-filtered ExposureSubSetting.getValuesForCategoryOnly(category, disease) overload; TestMethodComponent generalizes text-field visibility from hardcoded type checks to PathogenTestType.revealsTestTypeText(type, disease) utility.
CSS Styling Support & Form Layout Cleanup
sormas-ui/src/main/java/de/symeda/sormas/ui/utils/CssStyles.java, sormas-ui/src/main/webapp/VAADIN/themes/sormas/global.scss, sormas-ui/src/main/java/de/symeda/sormas/ui/epidata/EpiDataForm.java, sormas-backend/src/main/java/de/symeda/sormas/backend/epidata/EpiDataFacadeEjb.java, sormas-backend/src/main/resources/sql/sormas_schema.sql
CssStyles adds CAPTION_NO_UPPERCASE constant; SCSS adds .v-caption-no-uppercase rule for text-transform override; EpiDataForm reformats layout constant for readability; EpiDataFacadeEjb adds null-guard for eating-out-venues collection; database migration (version 630) drops broken trigger on exposures_eatingoutvenues.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • SORMAS-Foundation/SORMAS-Project#13921: Salmonellosis exposure additions (food/shopping sub-settings) that directly depend on the disease-aware ExposureSubSetting filtering overloads introduced in this PR.
  • SORMAS-Foundation/SORMAS-Project#13746: Disease context propagation in pathogen test forms that pairs with this PR's disease-aware PathogenTestType.toString(...) and revealsTestTypeText() utilities.
  • SORMAS-Foundation/SORMAS-Project#13571: TB-specific pathogen test display logic in PathogenTestListEntry that shares the same disease-context-aware refactoring pattern as this PR's testedDisease label enhancement.

Suggested reviewers

  • obinna-h-n
  • KarnaiahPesula
  • raulbob

Poem

🐰 Hops through the fields of visibility rules,
Where Salmonella meets the schema's jewels,
SNOMED codes gleam, reflection flows free,
Disease-aware gating—filtering's decree!
From test-type text to venues unseen,
The cleanest of schemas the web's ever seen!

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 10.29% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Linked Issues check ❓ Inconclusive While many changes support #13917 (#13918 objectives such as DTO extensions, disease annotations, and form enhancements for Salmonellosis visibility), key acceptance criteria are missing code evidence, including the required PlaceOfWork rendering, StillHospitalized checkbox, EpiDataForm date-range validation, PathogenTestForm test-type subset restriction, SymptomsForm isFoodborneGastrointestinal flag, and PathogenTestForm SalmonellosisSectionComponent. Verify that PersonEditForm placeOfWork rendering, HospitalizationForm stillHospitalized checkbox, EpiDataForm date validation, PathogenTestForm test-type restriction, and SymptomsForm isFoodborneGastrointestinal flag were implemented, as code evidence is not present in the changeset.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The PR title 'Feature 13918 salmonellosis form enhancements' clearly summarizes the main objective—adding Salmonellosis-specific form enhancements—which is well-represented across the changeset.
Description check ✅ Passed The description links the two relevant issues (#13917 and #13918) which is sufficient given the template's minimal required format.
Out of Scope Changes check ✅ Passed All changes directly relate to Salmonellosis form enhancements: DTOs, disease visibility annotations, form field visibility logic, CSS styling, and sample material/pathogen test type enhancements align with issue objectives.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature-13918-salmonellosis-form-enhancements

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Nitpick comments (1)
sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactDataView.java (1)

147-150: ⚡ Quick win

Use the same disease fallback for criteria building as for panel visibility.

Line 255 gates rendering with resolvedDisease, but the immunization/vaccination criteria still use refreshedContact.getDisease(). For contacts with null disease and case-derived disease, this can produce inconsistent filtering.

♻️ Proposed adjustment
- return new ImmunizationListCriteria.Builder(refreshedContact.getPerson()).withDisease(refreshedContact.getDisease()).build();
+ Disease criteriaDisease = refreshedContact.getDisease();
+ if (criteriaDisease == null && refreshedContact.getCaze() != null) {
+ 	CaseDataDto refreshedCase = FacadeProvider.getCaseFacade().getCaseDataByUuid(refreshedContact.getCaze().getUuid());
+ 	criteriaDisease = refreshedCase != null ? refreshedCase.getDisease() : null;
+ }
+ return new ImmunizationListCriteria.Builder(refreshedContact.getPerson()).withDisease(criteriaDisease).build();
- return new VaccinationCriteria.Builder(refreshedContact.getPerson()).withDisease(refreshedContact.getDisease())
+ Disease criteriaDisease = refreshedContact.getDisease() != null
+ 	? refreshedContact.getDisease()
+ 	: refreshedCase != null ? refreshedCase.getDisease() : null;
+ return new VaccinationCriteria.Builder(refreshedContact.getPerson()).withDisease(criteriaDisease)
 	.build()

Also applies to: 255-257

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactDataView.java`
around lines 147 - 150, The criteria building is using
refreshedContact.getDisease() while panel visibility uses resolvedDisease
(computed from contactDto and caseDto), causing inconsistent filtering; update
the criteria construction in ContactDataView to use the same resolvedDisease
variable (the one computed from contactDto and caseDto) instead of
refreshedContact.getDisease() so immunization/vaccination criteria and the
visibility gate both use the same disease fallback logic (ensure any references
in methods that build criteria or call into the immunization/vaccination filters
use resolvedDisease).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@sormas-api/src/main/java/de/symeda/sormas/api/epidata/EpiDataDto.java`:
- Around line 204-209: EpiDataDto now contains a mutable nested field
foodHistory (FoodHistoryDto) but its clone() currently performs a shallow copy;
update EpiDataDto.clone() to deep-copy foodHistory by invoking its copy/clone
constructor or a toDto/deepClone method (handle nulls), so the cloned EpiDataDto
gets an independent FoodHistoryDto instance; also apply the same deep-copy
pattern to the other similar nested fields referenced around the other ranges
(the blocks around lines shown for 448-454 and 463-479) to prevent shared
mutable state between original and clone.

In `@sormas-api/src/main/java/de/symeda/sormas/api/epidata/FoodHistoryDto.java`:
- Around line 57-59: In setConsumedItemsDetails on FoodHistoryDto, normalize the
incoming Map<FoodConsumptionItem,String> instead of assigning it directly: if
the argument is null, set this.consumedItemsDetails to an empty
EnumMap<>(FoodConsumptionItem.class); otherwise create a new
EnumMap<>(FoodConsumptionItem.class) and putAll from the provided map (or copy
directly if it already is an EnumMap) so consumedItemsDetails is never null and
always an EnumMap, preserving DTO invariants.

In `@sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java`:
- Around line 262-284: The formatting method
PathogenTestType.toString(PathogenTestType, String) currently appends the
details text only for OTHER, so new free-text types annotated with
`@RevealsTestTypeText` (e.g., MULTILOCUS_SEQUENCE_TYPING, CGMLST, SNP_TYPING,
SEROTYPING) lose their testTypeText; update toString (and the formatType()
callers) to also include the provided details when the enum constant is
annotated with `@RevealsTestTypeText` (detect via the enum constant's annotation
or an existing helper such as a reveals-test-type flag), i.e., if details is
non-empty and the constant has `@RevealsTestTypeText` then append/format the
details the same way as OTHER.

In `@sormas-backend/src/main/java/de/symeda/sormas/backend/epidata/EpiData.java`:
- Around line 350-357: The OneToOne mapping on EpiData.getFoodHistory()
currently uses cascade = CascadeType.ALL but lacks orphan removal, so when
EpiDataFacadeEjb calls target.setFoodHistory(null) the detached FoodHistory is
not deleted; update the mapping on the getFoodHistory() method in class EpiData
to include orphanRemoval = true (retain existing cascade and fetch settings) so
that removing the reference will delete the orphaned FoodHistory entity.

In `@sormas-backend/src/main/resources/sql/sormas_schema.sql`:
- Around line 16035-16038: The trigger creation for delete_history_trigger on
the composite-PK join table foodhistory_consumeditems is incorrect because the
trigger function is only parameterized by foodhistory_id and will mis-handle
sibling rows; remove the DROP TRIGGER / CREATE TRIGGER statements for
delete_history_trigger referring to foodhistory_consumeditems and do not
register this trigger for that table (or replace with a table-specific history
cleanup that considers both keys) — locate the CREATE TRIGGER ... AFTER DELETE
ON foodhistory_consumeditems and the call to
delete_history_trigger('foodhistory_consumeditems_history','foodhistory_id') and
remove or omit those lines.

---

Nitpick comments:
In `@sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactDataView.java`:
- Around line 147-150: The criteria building is using
refreshedContact.getDisease() while panel visibility uses resolvedDisease
(computed from contactDto and caseDto), causing inconsistent filtering; update
the criteria construction in ContactDataView to use the same resolvedDisease
variable (the one computed from contactDto and caseDto) instead of
refreshedContact.getDisease() so immunization/vaccination criteria and the
visibility gate both use the same disease fallback logic (ensure any references
in methods that build criteria or call into the immunization/vaccination filters
use resolvedDisease).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: cf685b63-64b2-4c65-8753-4122980c7c9e

📥 Commits

Reviewing files that changed from the base of the PR and between 4d01e4f and c79835c.

⛔ Files ignored due to path filters (1)
  • sormas-api/src/main/resources/doc/SORMAS_Data_Dictionary.xlsx is excluded by !**/*.xlsx
📒 Files selected for processing (33)
  • sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseDataDto.java
  • sormas-api/src/main/java/de/symeda/sormas/api/epidata/EpiDataDto.java
  • sormas-api/src/main/java/de/symeda/sormas/api/epidata/FoodConsumptionItem.java
  • sormas-api/src/main/java/de/symeda/sormas/api/epidata/FoodHistoryDto.java
  • sormas-api/src/main/java/de/symeda/sormas/api/exposure/ExposureSubSetting.java
  • sormas-api/src/main/java/de/symeda/sormas/api/i18n/Captions.java
  • sormas-api/src/main/java/de/symeda/sormas/api/i18n/Strings.java
  • sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java
  • sormas-api/src/main/java/de/symeda/sormas/api/sample/RevealsTestTypeText.java
  • sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleExportDto.java
  • sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleMaterial.java
  • sormas-api/src/main/resources/captions.properties
  • sormas-api/src/main/resources/enum.properties
  • sormas-api/src/main/resources/strings.properties
  • sormas-backend/src/main/java/de/symeda/sormas/backend/epidata/EpiData.java
  • sormas-backend/src/main/java/de/symeda/sormas/backend/epidata/EpiDataFacadeEjb.java
  • sormas-backend/src/main/java/de/symeda/sormas/backend/epidata/FoodHistory.java
  • sormas-backend/src/main/java/de/symeda/sormas/backend/epidata/FoodHistoryMapper.java
  • sormas-backend/src/main/resources/META-INF/persistence.xml
  • sormas-backend/src/main/resources/sql/sormas_schema.sql
  • sormas-backend/src/test/resources/META-INF/persistence.xml
  • sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseDataView.java
  • sormas-ui/src/main/java/de/symeda/sormas/ui/contact/AbstractContactGrid.java
  • sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactDataView.java
  • sormas-ui/src/main/java/de/symeda/sormas/ui/epidata/EpiDataForm.java
  • sormas-ui/src/main/java/de/symeda/sormas/ui/epidata/FoodHistoryForm.java
  • sormas-ui/src/main/java/de/symeda/sormas/ui/epidata/FoodHistoryItemsField.java
  • sormas-ui/src/main/java/de/symeda/sormas/ui/exposure/ExposureForm.java
  • sormas-ui/src/main/java/de/symeda/sormas/ui/hospitalization/HospitalizationForm.java
  • sormas-ui/src/main/java/de/symeda/sormas/ui/samples/components/TestMethodComponent.java
  • sormas-ui/src/main/java/de/symeda/sormas/ui/utils/CssStyles.java
  • sormas-ui/src/main/webapp/VAADIN/themes/sormas/global.scss
  • sormas-ui/src/test/resources/META-INF/persistence.xml

Comment thread sormas-api/src/main/java/de/symeda/sormas/api/epidata/EpiDataDto.java Outdated
Comment thread sormas-api/src/main/java/de/symeda/sormas/api/epidata/FoodHistoryDto.java Outdated
Comment thread sormas-backend/src/main/java/de/symeda/sormas/backend/epidata/EpiData.java Outdated
Comment thread sormas-backend/src/main/resources/sql/sormas_schema.sql Outdated
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
sormas-api/src/main/java/de/symeda/sormas/api/epidata/FoodHistoryDto.java (1)

57-60: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Guard against EnumMap construction failure for empty generic maps.

Line 59 can throw at runtime when consumedItemsDetails is empty and not already an EnumMap. Build with explicit key type, then copy entries.

Proposed fix
 public void setConsumedItemsDetails(Map<FoodConsumptionItem, String> consumedItemsDetails) {
-	this.consumedItemsDetails =
-		consumedItemsDetails == null ? new EnumMap<>(FoodConsumptionItem.class) : new EnumMap<>(consumedItemsDetails);
+	EnumMap<FoodConsumptionItem, String> normalized = new EnumMap<>(FoodConsumptionItem.class);
+	if (consumedItemsDetails != null) {
+		normalized.putAll(consumedItemsDetails);
+	}
+	this.consumedItemsDetails = normalized;
 }
In Java, does `new EnumMap<>(map)` throw when `map` is empty and not an EnumMap (e.g., Collections.emptyMap())? Please cite the JDK behavior.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@sormas-api/src/main/java/de/symeda/sormas/api/epidata/FoodHistoryDto.java`
around lines 57 - 60, In setConsumedItemsDetails in FoodHistoryDto the current
new EnumMap<>(consumedItemsDetails) can throw for empty generic maps (e.g.,
Collections.emptyMap()); instead construct an EnumMap with the key type (new
EnumMap<>(FoodConsumptionItem.class)) and then, if the incoming
consumedItemsDetails is non-null, call putAll(consumedItemsDetails) to copy
entries; preserve the null-to-empty behavior by initializing the field to a new
EnumMap<>(FoodConsumptionItem.class) when the argument is null.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In `@sormas-api/src/main/java/de/symeda/sormas/api/epidata/FoodHistoryDto.java`:
- Around line 57-60: In setConsumedItemsDetails in FoodHistoryDto the current
new EnumMap<>(consumedItemsDetails) can throw for empty generic maps (e.g.,
Collections.emptyMap()); instead construct an EnumMap with the key type (new
EnumMap<>(FoodConsumptionItem.class)) and then, if the incoming
consumedItemsDetails is non-null, call putAll(consumedItemsDetails) to copy
entries; preserve the null-to-empty behavior by initializing the field to a new
EnumMap<>(FoodConsumptionItem.class) when the argument is null.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 257eb1d6-d730-4802-aa8e-4378d41c716b

📥 Commits

Reviewing files that changed from the base of the PR and between c79835c and 8e337ea.

📒 Files selected for processing (9)
  • sormas-api/src/main/java/de/symeda/sormas/api/epidata/EpiDataDto.java
  • sormas-api/src/main/java/de/symeda/sormas/api/epidata/FoodHistoryDto.java
  • sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java
  • sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleExportDto.java
  • sormas-backend/src/main/java/de/symeda/sormas/backend/epidata/EpiData.java
  • sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleFacadeEjb.java
  • sormas-backend/src/main/resources/sql/sormas_schema.sql
  • sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactDataView.java
  • sormas-ui/src/main/java/de/symeda/sormas/ui/samples/pathogentestlink/PathogenTestListEntry.java
🚧 Files skipped from review as they are similar to previous changes (2)
  • sormas-backend/src/main/java/de/symeda/sormas/backend/epidata/EpiData.java
  • sormas-ui/src/main/java/de/symeda/sormas/ui/contact/ContactDataView.java

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DTOs + persistence + facades

1 participant