3838import de .symeda .sormas .api .i18n .Captions ;
3939import de .symeda .sormas .api .i18n .I18nProperties ;
4040import de .symeda .sormas .api .sample .PathogenTestDto ;
41+ import de .symeda .sormas .api .sample .PathogenTestResultType ;
4142import de .symeda .sormas .api .sample .PathogenTestType ;
4243import de .symeda .sormas .ui .samples .events .DiseaseChangedEvent ;
44+ import de .symeda .sormas .ui .samples .events .TestResultChangedEvent ;
4345import de .symeda .sormas .ui .samples .events .TestTypeChangedEvent ;
4446import de .symeda .sormas .ui .utils .FormComponent ;
4547import de .symeda .sormas .ui .utils .FormEventBus ;
@@ -63,6 +65,7 @@ public class DiseaseVariantComponent extends FormComponent<PathogenTestDto> {
6365 private final FormEventBus eventBus ;
6466 private Disease currentDisease ;
6567 private PathogenTestType currentTestType ;
68+ private PathogenTestResultType currentResult ;
6669 private List <DiseaseVariant > currentVariants ;
6770
6871 private ComboBox <DiseaseVariant > diseaseVariantField ;
@@ -126,6 +129,12 @@ private void wireEvents() {
126129 currentTestType = event .getTestType ();
127130 updateVisibility ();
128131 }));
132+
133+ // Test result change -> the subtype/variant is only relevant for a positive result
134+ track (eventBus .on (TestResultChangedEvent .class , event -> {
135+ currentResult = event .getTestResult ();
136+ updateVisibility ();
137+ }));
129138 }
130139
131140 private void refreshVariantItems () {
@@ -134,7 +143,10 @@ private void refreshVariantItems() {
134143 }
135144
136145 private void updateVisibility () {
146+ // Subtype/variant is only meaningful for a positive result; any other result
147+ // (pending, negative, indeterminate, not done, or none) hides and clears it.
137148 boolean visible = currentDisease != null
149+ && currentResult == PathogenTestResultType .POSITIVE
138150 && DiseaseHelper .SUBTYPE_ALLOWED_DISEASES .contains (currentDisease )
139151 && VARIANT_ALLOWED_TEST_TYPES .contains (currentTestType )
140152 && CollectionUtils .isNotEmpty (currentVariants );
0 commit comments