Skip to content

Commit 6119f20

Browse files
authored
Merge pull request #13587 from SORMAS-Foundation/feature-13563-tuberculosis_lab_messages
#13563 - Added support for Tuberculosis IGRA tests
2 parents d647594 + 4f7d0c4 commit 6119f20

18 files changed

Lines changed: 1106 additions & 50 deletions

File tree

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

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import de.symeda.sormas.api.infrastructure.country.CountryReferenceDto;
1414
import de.symeda.sormas.api.sample.GenoTypeResult;
1515
import de.symeda.sormas.api.sample.PCRTestSpecification;
16+
import de.symeda.sormas.api.sample.PathogenSpecie;
1617
import de.symeda.sormas.api.sample.PathogenTestResultType;
1718
import de.symeda.sormas.api.sample.PathogenTestType;
1819
import de.symeda.sormas.api.sample.RsvSubtype;
@@ -46,6 +47,15 @@ public class TestReportDto extends EntityDto {
4647
public static final String CT_VALUE_S = "ctValueS";
4748
public static final String CT_VALUE_ORF_1 = "ctValueOrf1";
4849
public static final String CT_VALUE_RDRP_S = "ctValueRdrpS";
50+
public static final String SPECIE = "specie";
51+
public static final String TUBE_NIL = "tubeNil";
52+
public static final String TUBE_NIL_GT10 = "tubeNilGT10";
53+
public static final String TUBE_AG_TB1 = "tubeAgTb1";
54+
public static final String TUBE_AG_TB1_GT10 = "tubeAgTb1GT10";
55+
public static final String TUBE_AG_TB2 = "tubeAgTb2";
56+
public static final String TUBE_AG_TB2_GT10 = "tubeAgTb2GT10";
57+
public static final String TUBE_MITOGENE = "tubeMitogene";
58+
public static final String TUBE_MITOGENE_GT10 = "tubeMitogeneGT10";
4959
public static final String PRESCRIBER_PHYSICIAN_CODE = "prescriberPhysicianCode";
5060
public static final String PRESCRIBER_FIRST_NAME = "prescriberFirstName";
5161
public static final String PRESCRIBER_LAST_NAME = "prescriberLastName";
@@ -102,6 +112,24 @@ public class TestReportDto extends EntityDto {
102112
private Float ctValueOrf1;
103113
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
104114
private Float ctValueRdrpS;
115+
private PathogenSpecie specie;
116+
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
117+
private Float tubeNil;
118+
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
119+
private Boolean tubeNilGT10;
120+
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
121+
private Float tubeAgTb1;
122+
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
123+
private Boolean tubeAgTb1GT10;
124+
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
125+
private Float tubeAgTb2;
126+
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
127+
private Boolean tubeAgTb2GT10;
128+
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
129+
private Float tubeMitogene;
130+
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
131+
private Boolean tubeMitogeneGT10;
132+
105133
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
106134
@SensitiveData
107135
@Size(max = FieldConstraints.CHARACTER_LIMIT_TEXT, message = Validations.textTooLong)
@@ -351,6 +379,78 @@ public void setCtValueRdrpS(Float ctValueRdrpS) {
351379
this.ctValueRdrpS = ctValueRdrpS;
352380
}
353381

382+
public PathogenSpecie getSpecie() {
383+
return specie;
384+
}
385+
386+
public void setSpecie(PathogenSpecie specie) {
387+
this.specie = specie;
388+
}
389+
390+
public Float getTubeNil() {
391+
return tubeNil;
392+
}
393+
394+
public void setTubeNil(Float tubeNil) {
395+
this.tubeNil = tubeNil;
396+
}
397+
398+
public Boolean getTubeNilGT10() {
399+
return tubeNilGT10;
400+
}
401+
402+
public void setTubeNilGT10(Boolean tubeNilGT10) {
403+
this.tubeNilGT10 = tubeNilGT10;
404+
}
405+
406+
public Float getTubeAgTb1() {
407+
return tubeAgTb1;
408+
}
409+
410+
public void setTubeAgTb1(Float tubeAgTb1) {
411+
this.tubeAgTb1 = tubeAgTb1;
412+
}
413+
414+
public Boolean getTubeAgTb1GT10() {
415+
return tubeAgTb1GT10;
416+
}
417+
418+
public void setTubeAgTb1GT10(Boolean tubeAgTb1GT10) {
419+
this.tubeAgTb1GT10 = tubeAgTb1GT10;
420+
}
421+
422+
public Float getTubeAgTb2() {
423+
return tubeAgTb2;
424+
}
425+
426+
public void setTubeAgTb2(Float tubeAgTb2) {
427+
this.tubeAgTb2 = tubeAgTb2;
428+
}
429+
430+
public Boolean getTubeAgTb2GT10() {
431+
return tubeAgTb2GT10;
432+
}
433+
434+
public void setTubeAgTb2GT10(Boolean tubeAgTb2GT10) {
435+
this.tubeAgTb2GT10 = tubeAgTb2GT10;
436+
}
437+
438+
public Float getTubeMitogene() {
439+
return tubeMitogene;
440+
}
441+
442+
public void setTubeMitogene(Float tubeMitogene) {
443+
this.tubeMitogene = tubeMitogene;
444+
}
445+
446+
public Boolean getTubeMitogeneGT10() {
447+
return tubeMitogeneGT10;
448+
}
449+
450+
public void setTubeMitogeneGT10(Boolean tubeMitogeneGT10) {
451+
this.tubeMitogeneGT10 = tubeMitogeneGT10;
452+
}
453+
354454
public String getPrescriberPhysicianCode() {
355455
return prescriberPhysicianCode;
356456
}

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

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,48 @@ public List<String[]> mapToPathogenTest(TestReportDto sourceTestReport, Pathogen
345345
pathogenTest::setRsvSubtype,
346346
pathogenTest.getRsvSubtype(),
347347
sourceTestReport.getRsvSubtype(),
348-
PathogenTestDto.RSV_SUBTYPE))));
348+
PathogenTestDto.RSV_SUBTYPE),
349+
Mapping.of(
350+
pathogenTest::setTubeNil,
351+
pathogenTest.getTubeNil(),
352+
sourceTestReport.getTubeNil(),
353+
PathogenTestDto.TUBE_NIL),
354+
Mapping.of(
355+
pathogenTest::setTubeNilGT10,
356+
pathogenTest.getTubeNilGT10(),
357+
sourceTestReport.getTubeNilGT10(),
358+
PathogenTestDto.TUBE_NIL_GT10),
359+
Mapping.of(
360+
pathogenTest::setTubeAgTb1,
361+
pathogenTest.getTubeAgTb1(),
362+
sourceTestReport.getTubeAgTb1(),
363+
PathogenTestDto.TUBE_AG_TB1),
364+
Mapping.of(
365+
pathogenTest::setTubeAgTb1GT10,
366+
pathogenTest.getTubeAgTb1GT10(),
367+
sourceTestReport.getTubeAgTb1GT10(),
368+
PathogenTestDto.TUBE_AG_TB1_GT10),
369+
Mapping.of(
370+
pathogenTest::setTubeAgTb2,
371+
pathogenTest.getTubeAgTb2(),
372+
sourceTestReport.getTubeAgTb2(),
373+
PathogenTestDto.TUBE_AG_TB2),
374+
Mapping.of(
375+
pathogenTest::setTubeAgTb2GT10,
376+
pathogenTest.getTubeAgTb2GT10(),
377+
sourceTestReport.getTubeAgTb2GT10(),
378+
PathogenTestDto.TUBE_AG_TB2_GT10),
379+
Mapping.of(
380+
pathogenTest::setTubeMitogene,
381+
pathogenTest.getTubeMitogene(),
382+
sourceTestReport.getTubeMitogene(),
383+
PathogenTestDto.TUBE_MITOGENE),
384+
Mapping.of(
385+
pathogenTest::setTubeMitogeneGT10,
386+
pathogenTest.getTubeMitogeneGT10(),
387+
sourceTestReport.getTubeMitogeneGT10(),
388+
PathogenTestDto.TUBE_MITOGENE_GT10),
389+
Mapping.of(pathogenTest::setSpecie, pathogenTest.getSpecie(), sourceTestReport.getSpecie(), PathogenTestDto.SPECIE))));
349390
}
350391

351392
changedFields.addAll(

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2275,6 +2275,14 @@ public interface Captions {
22752275
String PathogenTest_testScale = "PathogenTest.testScale";
22762276
String PathogenTest_testType = "PathogenTest.testType";
22772277
String PathogenTest_testTypeText = "PathogenTest.testTypeText";
2278+
String PathogenTest_tubeAgTb1 = "PathogenTest.tubeAgTb1";
2279+
String PathogenTest_tubeAgTb1GT10 = "PathogenTest.tubeAgTb1GT10";
2280+
String PathogenTest_tubeAgTb2 = "PathogenTest.tubeAgTb2";
2281+
String PathogenTest_tubeAgTb2GT10 = "PathogenTest.tubeAgTb2GT10";
2282+
String PathogenTest_tubeMitogene = "PathogenTest.tubeMitogene";
2283+
String PathogenTest_tubeMitogeneGT10 = "PathogenTest.tubeMitogeneGT10";
2284+
String PathogenTest_tubeNil = "PathogenTest.tubeNil";
2285+
String PathogenTest_tubeNilGT10 = "PathogenTest.tubeNilGT10";
22782286
String PathogenTest_typingId = "PathogenTest.typingId";
22792287
String PathogenTest_viaLims = "PathogenTest.viaLims";
22802288
String pathogenTestAdd = "pathogenTestAdd";
@@ -3118,13 +3126,22 @@ public interface Captions {
31183126
String TestReport_prescriberPhoneNumber = "TestReport.prescriberPhoneNumber";
31193127
String TestReport_prescriberPhysicianCode = "TestReport.prescriberPhysicianCode";
31203128
String TestReport_prescriberPostalCode = "TestReport.prescriberPostalCode";
3129+
String TestReport_specie = "TestReport.specie";
31213130
String TestReport_testDateTime = "TestReport.testDateTime";
31223131
String TestReport_testLabCity = "TestReport.testLabCity";
31233132
String TestReport_testLabExternalId = "TestReport.testLabExternalId";
31243133
String TestReport_testLabName = "TestReport.testLabName";
31253134
String TestReport_testLabPostalCode = "TestReport.testLabPostalCode";
31263135
String TestReport_testResult = "TestReport.testResult";
31273136
String TestReport_testType = "TestReport.testType";
3137+
String TestReport_tubeAgTb1 = "TestReport.tubeAgTb1";
3138+
String TestReport_tubeAgTb1GT10 = "TestReport.tubeAgTb1GT10";
3139+
String TestReport_tubeAgTb2 = "TestReport.tubeAgTb2";
3140+
String TestReport_tubeAgTb2GT10 = "TestReport.tubeAgTb2GT10";
3141+
String TestReport_tubeMitogene = "TestReport.tubeMitogene";
3142+
String TestReport_tubeMitogeneGT10 = "TestReport.tubeMitogeneGT10";
3143+
String TestReport_tubeNil = "TestReport.tubeNil";
3144+
String TestReport_tubeNilGT10 = "TestReport.tubeNilGT10";
31283145
String Therapy_beijingLineage = "Therapy.beijingLineage";
31293146
String Therapy_directlyObservedTreatment = "Therapy.directlyObservedTreatment";
31303147
String Therapy_mdrXdrTuberculosis = "Therapy.mdrXdrTuberculosis";

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ public interface Validations {
201201
String patchNoSuchFieldException = "patchNoSuchFieldException";
202202
String patchUnsupportedCollectionFieldType = "patchUnsupportedCollectionFieldType";
203203
String patchWrongUuid = "patchWrongUuid";
204+
String pathogenTestInvalidIgraValueCombination = "pathogenTestInvalidIgraValueCombination";
204205
String pathogenTestValidDisease = "pathogenTestValidDisease";
205206
String pathogenTestValidDrugSusceptibility = "pathogenTestValidDrugSusceptibility";
206207
String pathogenTestValidPathogen = "pathogenTestValidPathogen";

sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestDto.java

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,14 @@ public class PathogenTestDto extends PseudonymizableDto {
114114
public static final String GENOTYPE_RESULT = "genoTypeResult";
115115
public static final String GENOTYPE_RESULT_TEXT = "genoTypeResultText";
116116
public static final String RSV_SUBTYPE = "rsvSubtype";
117+
public static final String TUBE_NIL = "tubeNil";
118+
public static final String TUBE_NIL_GT10 = "tubeNilGT10";
119+
public static final String TUBE_AG_TB1 = "tubeAgTb1";
120+
public static final String TUBE_AG_TB1_GT10 = "tubeAgTb1GT10";
121+
public static final String TUBE_AG_TB2 = "tubeAgTb2";
122+
public static final String TUBE_AG_TB2_GT10 = "tubeAgTb2GT10";
123+
public static final String TUBE_MITOGENE = "tubeMitogene";
124+
public static final String TUBE_MITOGENE_GT10 = "tubeMitogeneGT10";
117125

118126
private SampleReferenceDto sample;
119127
private EnvironmentSampleReferenceDto environmentSample;
@@ -253,6 +261,46 @@ public class PathogenTestDto extends PseudonymizableDto {
253261
@Diseases(value = {
254262
Disease.RESPIRATORY_SYNCYTIAL_VIRUS })
255263
private RsvSubtype rsvSubtype;
264+
@SensitiveData
265+
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
266+
@Diseases(value = {
267+
Disease.TUBERCULOSIS })
268+
private Float tubeNil;
269+
@SensitiveData
270+
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
271+
@Diseases(value = {
272+
Disease.TUBERCULOSIS })
273+
private Boolean tubeNilGT10;
274+
@SensitiveData
275+
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
276+
@Diseases(value = {
277+
Disease.TUBERCULOSIS })
278+
private Float tubeAgTb1;
279+
@SensitiveData
280+
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
281+
@Diseases(value = {
282+
Disease.TUBERCULOSIS })
283+
private Boolean tubeAgTb1GT10;
284+
@SensitiveData
285+
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
286+
@Diseases(value = {
287+
Disease.TUBERCULOSIS })
288+
private Float tubeAgTb2;
289+
@SensitiveData
290+
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
291+
@Diseases(value = {
292+
Disease.TUBERCULOSIS })
293+
private Boolean tubeAgTb2GT10;
294+
@SensitiveData
295+
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
296+
@Diseases(value = {
297+
Disease.TUBERCULOSIS })
298+
private Float tubeMitogene;
299+
@SensitiveData
300+
@HideForCountriesExcept(countries = CountryHelper.COUNTRY_CODE_LUXEMBOURG)
301+
@Diseases(value = {
302+
Disease.TUBERCULOSIS })
303+
private Boolean tubeMitogeneGT10;
256304

257305
public static PathogenTestDto build(SampleDto sample, UserDto currentUser) {
258306

@@ -785,6 +833,70 @@ public void setRsvSubtype(RsvSubtype rsvSubtype) {
785833
this.rsvSubtype = rsvSubtype;
786834
}
787835

836+
public Float getTubeNil() {
837+
return tubeNil;
838+
}
839+
840+
public void setTubeNil(Float tubeNil) {
841+
this.tubeNil = tubeNil;
842+
}
843+
844+
public Boolean getTubeNilGT10() {
845+
return tubeNilGT10;
846+
}
847+
848+
public void setTubeNilGT10(Boolean tubeNilGT10) {
849+
this.tubeNilGT10 = tubeNilGT10;
850+
}
851+
852+
public Float getTubeAgTb1() {
853+
return tubeAgTb1;
854+
}
855+
856+
public void setTubeAgTb1(Float tubeAgTb1) {
857+
this.tubeAgTb1 = tubeAgTb1;
858+
}
859+
860+
public Boolean getTubeAgTb1GT10() {
861+
return tubeAgTb1GT10;
862+
}
863+
864+
public void setTubeAgTb1GT10(Boolean tubeAgTb1GT10) {
865+
this.tubeAgTb1GT10 = tubeAgTb1GT10;
866+
}
867+
868+
public Float getTubeAgTb2() {
869+
return tubeAgTb2;
870+
}
871+
872+
public void setTubeAgTb2(Float tubeAgTb2) {
873+
this.tubeAgTb2 = tubeAgTb2;
874+
}
875+
876+
public Boolean getTubeAgTb2GT10() {
877+
return tubeAgTb2GT10;
878+
}
879+
880+
public void setTubeAgTb2GT10(Boolean tubeAgTb2GT10) {
881+
this.tubeAgTb2GT10 = tubeAgTb2GT10;
882+
}
883+
884+
public Float getTubeMitogene() {
885+
return tubeMitogene;
886+
}
887+
888+
public void setTubeMitogene(Float tubeMitogene) {
889+
this.tubeMitogene = tubeMitogene;
890+
}
891+
892+
public Boolean getTubeMitogeneGT10() {
893+
return tubeMitogeneGT10;
894+
}
895+
896+
public void setTubeMitogeneGT10(Boolean tubeMitogeneGT10) {
897+
this.tubeMitogeneGT10 = tubeMitogeneGT10;
898+
}
899+
788900
@Override
789901
public PathogenTestDto clone() throws CloneNotSupportedException {
790902
return (PathogenTestDto) super.clone();

sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestType.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ public enum PathogenTestType {
3737

3838
RAPID_TEST,
3939

40-
@Diseases(value = {
41-
Disease.RESPIRATORY_SYNCYTIAL_VIRUS })
4240
CULTURE,
4341

4442
@Diseases(value = {

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1893,6 +1893,14 @@ PathogenTest.seroGroupSpecification=Serogroup Specification
18931893
PathogenTest.seroGroupSpecificationText=Specify Serogroup Specification Method
18941894
PathogenTest.genoTypeResult=Genotype result
18951895
PathogenTest.genoTypeResultText=Specify Genotype result text
1896+
PathogenTest.tubeNil=Tube Nil
1897+
PathogenTest.tubeNilGT10=Tube Nil >10
1898+
PathogenTest.tubeAgTb1=Tube Ag TB1
1899+
PathogenTest.tubeAgTb1GT10=Tube Ag TB1 >10
1900+
PathogenTest.tubeAgTb2=Tube Ag TB2
1901+
PathogenTest.tubeAgTb2GT10=Tube Ag TB2 >10
1902+
PathogenTest.tubeMitogene=Tube Mitogen
1903+
PathogenTest.tubeMitogeneGT10=Tube Mitogen >10
18961904
# Person
18971905
personPersonsList=Person list
18981906
personCreateNew=Create a new person
@@ -3000,6 +3008,15 @@ TestReport.ctValueRdrp=Ct target RDRP
30003008
TestReport.ctValueS=Ct target S
30013009
TestReport.ctValueOrf1=Ct target ORF1
30023010
TestReport.ctValueRdrpS=Ct target RDRP/S
3011+
TestReport.specie=Pathogen species
3012+
TestReport.tubeNil=Tube Nil
3013+
TestReport.tubeNilGT10=Tube Nil >10
3014+
TestReport.tubeAgTb1=Tube Ag TB1
3015+
TestReport.tubeAgTb1GT10=Tube Ag TB1 >10
3016+
TestReport.tubeAgTb2=Tube Ag TB2
3017+
TestReport.tubeAgTb2GT10=Tube Ag TB2 >10
3018+
TestReport.tubeMitogene=Tube Mitogen
3019+
TestReport.tubeMitogeneGT10=Tube Mitogen >10
30033020
TestReport.prescriberPhysicianCode=Physician code
30043021
TestReport.prescriberFirstName=First name
30053022
TestReport.prescriberLastName=Last name

0 commit comments

Comments
 (0)