Skip to content

Commit 93ec50f

Browse files
committed
MORE-Platform#204: Added a removal of the observation seed property keys when an observation updates
1 parent 182c817 commit 93ec50f

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

studymanager-services/src/main/java/io/redlink/more/studymanager/repository/ObservationRepository.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ public class ObservationRepository {
5151
private static final String GET_OBSERVATION_PROPERTIES_FOR_PARTICIPANT = "SELECT properties FROM participant_observation_properties WHERE study_id = ? AND participant_id = ? AND observation_id = ?";
5252
private static final String GET_ALL_OBSERVATION_PROPERTIES_FOR_PARTICIPANT = "SELECT * FROM participant_observation_properties WHERE study_id = ?";
5353
private static final String DELETE_OBSERVATION_PROPERTIES_FOR_PARTICIPANT = "DELETE FROM participant_observation_properties WHERE study_id = ? AND participant_id = ? AND observation_id = ?";
54+
private static final String REMOVE_PARTICIPANT_PROPERTY_KEY = "UPDATE participant_observation_properties SET properties = properties - :key WHERE study_id = :study_id AND observation_id = :observation_id";
5455

5556
private final JdbcTemplate template;
5657
private final NamedParameterJdbcTemplate namedTemplate;
@@ -203,6 +204,19 @@ public void mergeParticipantProperties(Long studyId, Integer participantId, Inte
203204
namedTemplate.update(SET_OBSERVATION_PROPERTIES_FOR_PARTICIPANT, data);
204205
}
205206

207+
public void removeParticipantsPropertyKey(Long studyId, Integer observationId, String keyToRemove) {
208+
if (keyToRemove == null || keyToRemove.isBlank()) {
209+
throw new BadRequestException("keyToRemove must not be null or blank");
210+
}
211+
212+
MapSqlParameterSource params = new MapSqlParameterSource()
213+
.addValue("study_id", studyId)
214+
.addValue("observation_id", observationId)
215+
.addValue("key", keyToRemove);
216+
217+
namedTemplate.update(REMOVE_PARTICIPANT_PROPERTY_KEY, params);
218+
}
219+
206220
@Transactional
207221
public List<ParticipantWithObservationProperties> getParticipantObservationProperties(Long studyId) {
208222
try {

studymanager-services/src/main/java/io/redlink/more/studymanager/service/ObservationService.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import io.redlink.more.studymanager.model.Study;
2424
import io.redlink.more.studymanager.repository.ObservationRepository;
2525
import io.redlink.more.studymanager.sdk.MoreSDK;
26+
import io.redlink.more.studymanager.utils.RandomSchedulerUtils;
2627
import org.springframework.stereotype.Service;
2728

2829
import java.util.ArrayList;
@@ -88,7 +89,9 @@ public List<Observation> listObservationsForGroup(Long studyId, Integer studyGro
8889

8990
public Observation updateObservation(Observation observation) {
9091
studyStateService.assertStudyNotInState(observation.getStudyId(), Study.Status.CLOSED);
91-
return repository.updateObservation(validate(observation));
92+
Observation updatedObservation = repository.updateObservation(validate(observation));
93+
repository.removeParticipantsPropertyKey(observation.getStudyId(), observation.getObservationId(), RandomSchedulerUtils.OBSERVATION_SCHEDULE_SEED_KEY);
94+
return updatedObservation;
9295
}
9396

9497
public void alignObservationsWithStudyState(Study study) {

0 commit comments

Comments
 (0)