Skip to content

Commit ada10be

Browse files
authored
Merge pull request #14074 from SORMAS-Foundation/bugfix-14058-ipi_lab_message_reference_laboratory
#14058 - Add 'performedByReferenceLaboratory' field to TestReport and related classes
2 parents 9a59c61 + f3bf8f0 commit ada10be

6 files changed

Lines changed: 42 additions & 3 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/labmessage/TestReportDto.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public class TestReportDto extends EntityDto {
7171
public static final String PRESCRIBER_POSTAL_CODE = "prescriberPostalCode";
7272
public static final String PRESCRIBER_CITY = "prescriberCity";
7373
public static final String PRESCRIBER_COUNTRY = "prescriberCountry";
74+
public static final String PERFORMED_BY_REFERENCE_LABORATORY = "performedByReferenceLaboratory";
7475

7576
@NotNull(message = Validations.requiredField)
7677
private SampleReportReferenceDto sampleReport;
@@ -220,6 +221,7 @@ public class TestReportDto extends EntityDto {
220221

221222
private PathogenTestCategory pathogenTestCategory;
222223
private boolean fourFoldIncreaseAntibodyTiter;
224+
private Boolean performedByReferenceLaboratory;
223225

224226
public SampleReportReferenceDto getSampleReport() {
225227
return sampleReport;
@@ -932,4 +934,12 @@ public void setFourFoldIncreaseAntibodyTiter(boolean fourFoldIncreaseAntibodyTit
932934
this.fourFoldIncreaseAntibodyTiter = fourFoldIncreaseAntibodyTiter;
933935
}
934936

937+
public Boolean getPerformedByReferenceLaboratory() {
938+
return performedByReferenceLaboratory;
939+
}
940+
941+
public void setPerformedByReferenceLaboratory(Boolean performedByReferenceLaboratory) {
942+
this.performedByReferenceLaboratory = performedByReferenceLaboratory;
943+
}
944+
935945
}

sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/ExternalMessageMapper.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@
5555
import de.symeda.sormas.api.sample.PathogenTestDto;
5656
import de.symeda.sormas.api.sample.PathogenTestResultType;
5757
import de.symeda.sormas.api.sample.SampleDto;
58-
import de.symeda.sormas.api.sample.Serotype;
5958
import de.symeda.sormas.api.therapy.DrugSusceptibilityDto;
6059
import de.symeda.sormas.api.utils.DataHelper;
6160
import de.symeda.sormas.api.utils.DateHelper;
@@ -994,7 +993,12 @@ public List<String[]> mapToPathogenTest(TestReportDto sourceTestReport, Pathogen
994993
pathogenTest::setFourFoldIncreaseAntibodyTiter,
995994
pathogenTest.isFourFoldIncreaseAntibodyTiter(),
996995
sourceTestReport.getFourFoldIncreaseAntibodyTiter(),
997-
PathogenTestDto.FOUR_FOLD_INCREASE_ANTIBODY_TITER))
996+
PathogenTestDto.FOUR_FOLD_INCREASE_ANTIBODY_TITER),
997+
Mapping.of(
998+
pathogenTest::setPerformedByReferenceLaboratory,
999+
pathogenTest.getPerformedByReferenceLaboratory(),
1000+
sourceTestReport.getPerformedByReferenceLaboratory(),
1001+
PathogenTestDto.PERFORMED_BY_REFERENCE_LABORATORY))
9981002

9991003
));
10001004
}

sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/labmessage/TestReport.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ public class TestReport extends AbstractDomainObject {
184184
private String serotypeText;
185185
private PathogenTestCategory pathogenTestCategory;
186186
private boolean fourFoldIncreaseAntibodyTiter;
187+
private Boolean performedByReferenceLaboratory;
187188

188189
@Column(length = CHARACTER_LIMIT_DEFAULT)
189190
public String getTestLabName() {
@@ -955,4 +956,13 @@ public void setFourFoldIncreaseAntibodyTiter(boolean fourFoldIncreaseAntibodyTit
955956
this.fourFoldIncreaseAntibodyTiter = fourFoldIncreaseAntibodyTiter;
956957
}
957958

959+
@Column
960+
public Boolean getPerformedByReferenceLaboratory() {
961+
return performedByReferenceLaboratory;
962+
}
963+
964+
public void setPerformedByReferenceLaboratory(Boolean performedByReferenceLaboratory) {
965+
this.performedByReferenceLaboratory = performedByReferenceLaboratory;
966+
}
967+
958968
}

sormas-backend/src/main/java/de/symeda/sormas/backend/externalmessage/labmessage/TestReportFacadeEjb.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ public static TestReportDto toDto(TestReport source) {
166166
target.setSerotypeText(source.getSerotypeText());
167167
target.setPathogenTestCategory(source.getPathogenTestCategory());
168168
target.setFourFoldIncreaseAntibodyTiter(source.getFourFoldIncreaseAntibodyTiter());
169+
target.setPerformedByReferenceLaboratory(source.getPerformedByReferenceLaboratory());
169170

170171
return target;
171172
}
@@ -219,6 +220,7 @@ public TestReport fillOrBuildEntity(@NotNull TestReportDto source, @NotNull Samp
219220
target.setTubeMitogene(source.getTubeMitogene());
220221
target.setTubeMitogeneGT10(source.getTubeMitogeneGT10());
221222
target.setStrainCallStatus(source.getStrainCallStatus());
223+
target.setPerformedByReferenceLaboratory(source.getPerformedByReferenceLaboratory());
222224

223225
// Drug susceptibility mappings
224226
target.setAmikacinMic(source.getAmikacinMic());
@@ -268,6 +270,7 @@ public TestReport fillOrBuildEntity(@NotNull TestReportDto source, @NotNull Samp
268270
target.setSerotypeText(source.getSerotypeText());
269271
target.setPathogenTestCategory(source.getPathogenTestCategory());
270272
target.setFourFoldIncreaseAntibodyTiter(source.getFourFoldIncreaseAntibodyTiter());
273+
target.setPerformedByReferenceLaboratory(source.getPerformedByReferenceLaboratory());
271274

272275
return target;
273276
}

sormas-backend/src/main/resources/sql/sormas_schema.sql

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16401,6 +16401,14 @@ ALTER TABLE testreport_history ADD COLUMN IF NOT EXISTS fourfoldincreaseantibody
1640116401

1640216402
INSERT INTO schema_version (version_number, comment) VALUES (641, 'Malaria and Dengue DD and Lab message processing fixes');
1640316403

16404+
16405+
-- 2025-06-26 Performed by reference laboratory missing for lab messages
16406+
16407+
ALTER TABLE testreport ADD COLUMN IF NOT EXISTS performedbyreferencelaboratory boolean;
16408+
ALTER TABLE testreport_history ADD COLUMN IF NOT EXISTS performedbyreferencelaboratory boolean;
16409+
16410+
INSERT INTO schema_version (version_number, comment) VALUES (642, '#14058 - Performed by reference laboratory not toggled');
16411+
1640416412
-- 2026-06-29 Remove Malaria-specific "Result details" pathogen test field (issue #14016)
1640516413
-- The Malaria resultdetails field duplicated the generic "Test result details" (testresulttext) field on the
1640616414
-- pathogen test form. Drop it and fold any captured value into testresulttext so no free-text result is lost.
@@ -16458,6 +16466,6 @@ END $$;
1645816466
ALTER TABLE pathogentest DROP COLUMN IF EXISTS resultdetails;
1645916467
ALTER TABLE pathogentest_history DROP COLUMN IF EXISTS resultdetails;
1646016468
ALTER TABLE pathogentest ENABLE TRIGGER versioning_trigger;
16461-
INSERT INTO schema_version (version_number, comment) VALUES (642, 'Remove Malaria-specific result details pathogen test column, preserving values into testresulttext issue #14016');
16469+
INSERT INTO schema_version (version_number, comment) VALUES (643, 'Remove Malaria-specific result details pathogen test column, preserving values into testresulttext issue #14016');
1646216470

1646316471
-- *** Insert new sql commands BEFORE this line. Remember to always consider _history tables. ***

sormas-backend/src/test/java/de/symeda/sormas/backend/externalmessage/labmessage/TestReportFacadeEjbMappingTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ public void testFromDto() {
125125
source.setSeroGroupSpecificationText("SeroGroup A");
126126
source.setSeroTypingMethod(SerotypingMethod.MULTIPLEX_PCR);
127127
source.setSeroTypingMethodText("Multiplex PCR Method");
128+
source.setPerformedByReferenceLaboratory(true);
128129

129130
TestReport result = sut.fromDto(source, true);
130131

@@ -194,6 +195,7 @@ public void testFromDto() {
194195
assertEquals(source.getSeroGroupSpecificationText(), result.getSeroGroupSpecificationText());
195196
assertEquals(source.getSeroTypingMethod(), result.getSeroTypingMethod());
196197
assertEquals(source.getSeroTypingMethodText(), result.getSeroTypingMethodText());
198+
assertEquals(source.getPerformedByReferenceLaboratory(), result.getPerformedByReferenceLaboratory());
197199

198200
}
199201

@@ -275,6 +277,7 @@ public void testToDto() {
275277
source.setSeroTypingMethodText("Multiplex PCR Method");
276278
source.setSerotype(Serotype.OTHER);
277279
source.setSerotypeText("Other Serotype");
280+
source.setPerformedByReferenceLaboratory(true);
278281

279282
TestReportDto result = TestReportFacadeEjb.toDto(source);
280283

@@ -347,5 +350,6 @@ public void testToDto() {
347350
assertEquals(source.getSeroTypingMethodText(), result.getSeroTypingMethodText());
348351
assertEquals(source.getSerotype(), result.getSerotype());
349352
assertEquals(source.getSerotypeText(), result.getSerotypeText());
353+
assertEquals(source.getPerformedByReferenceLaboratory(), result.getPerformedByReferenceLaboratory());
350354
}
351355
}

0 commit comments

Comments
 (0)