From 10eb6f5b547ac9a53f6bd9660951a42e4b30199a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=BCning?= Date: Mon, 1 Dec 2025 10:52:39 +0100 Subject: [PATCH 1/3] #6: refactor study manager interfaces --- pom.xml | 6 ++ .../org/aktin/dwh/optinout/ErrorType.java | 9 ++ .../org/aktin/dwh/optinout/PatientEntry.java | 13 --- .../aktin/dwh/optinout/PatientEntryData.java | 22 +++++ .../java/org/aktin/dwh/optinout/Study.java | 84 ++++++++++++------- .../org/aktin/dwh/optinout/StudyManager.java | 3 - .../aktin/dwh/optinout/ValidationResult.java | 19 +++++ 7 files changed, 109 insertions(+), 47 deletions(-) create mode 100644 src/main/java/org/aktin/dwh/optinout/ErrorType.java create mode 100644 src/main/java/org/aktin/dwh/optinout/PatientEntryData.java create mode 100644 src/main/java/org/aktin/dwh/optinout/ValidationResult.java diff --git a/pom.xml b/pom.xml index 1fc35dc..2ba24f7 100644 --- a/pom.xml +++ b/pom.xml @@ -68,5 +68,11 @@ junit junit + + org.projectlombok + lombok + 1.18.38 + provided + diff --git a/src/main/java/org/aktin/dwh/optinout/ErrorType.java b/src/main/java/org/aktin/dwh/optinout/ErrorType.java new file mode 100644 index 0000000..45e0ade --- /dev/null +++ b/src/main/java/org/aktin/dwh/optinout/ErrorType.java @@ -0,0 +1,9 @@ +package org.aktin.dwh.optinout; + +// errors that occur during CRUD operations on opt-in data +public enum ErrorType { + STUDY_NOT_FOUND, + PATIENT_NOT_FOUND, + PATIENT_ALREADY_EXISTS, + SIC_ALREADY_EXISTS, +} diff --git a/src/main/java/org/aktin/dwh/optinout/PatientEntry.java b/src/main/java/org/aktin/dwh/optinout/PatientEntry.java index a74f788..9f6cd58 100644 --- a/src/main/java/org/aktin/dwh/optinout/PatientEntry.java +++ b/src/main/java/org/aktin/dwh/optinout/PatientEntry.java @@ -13,13 +13,9 @@ public interface PatientEntry { String getIdRoot(); String getIdExt(); String getSIC(); - void setSIC(String sic); String getUser(); - void setUser(String user); Instant getTimestamp(); - void setTimestamp(Instant timestamp); String getComment(); - void setComment(String comment); /** * Get the i2b2 patient_num field. Only available, if the patient was linked @@ -27,15 +23,6 @@ public interface PatientEntry { * @return patient_num from i2b2, or {@code null} if no link is available. */ Integer getI2b2PatientNum(); - void setI2b2PatientNum(Integer i2b2PatientNum); - - /** - * Delete this entry - * @param user user name who requested the delete operation - * @throws FileNotFoundException if the patient was not found - * @throws IOException any other IO error - */ - void delete(String user) throws FileNotFoundException, IOException; /** * Determine whether a second patient is equal (study, pat_ref,pat_root,pat_ext) diff --git a/src/main/java/org/aktin/dwh/optinout/PatientEntryData.java b/src/main/java/org/aktin/dwh/optinout/PatientEntryData.java new file mode 100644 index 0000000..671a142 --- /dev/null +++ b/src/main/java/org/aktin/dwh/optinout/PatientEntryData.java @@ -0,0 +1,22 @@ +package org.aktin.dwh.optinout; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * This class serves as input POJO for (batch) patient entry write actions (create, update) + */ + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PatientEntryData { + private String root; + private String extension; + private String sic; + private String comment; + private boolean generateSic; + private Participation participation; + private PatientReference reference; +} diff --git a/src/main/java/org/aktin/dwh/optinout/Study.java b/src/main/java/org/aktin/dwh/optinout/Study.java index ad59cf7..d8294f0 100644 --- a/src/main/java/org/aktin/dwh/optinout/Study.java +++ b/src/main/java/org/aktin/dwh/optinout/Study.java @@ -16,11 +16,17 @@ public interface Study { String getDescription(); Instant getCreatedTimestamp(); - Instant getClosedTimestamp(); - boolean isOptIn(); - boolean isOptOut(); + /** + * when the study was closed. {@code null} if still open + */ + Instant getClosedTimestamp(); + /** + * Get the participation option for this study. + * @return participation option + */ + Participation getParticipation(); /** * Determine whether this study allows the specified participation option. @@ -35,19 +41,18 @@ public interface Study { * @return sic generation enum */ SICGeneration getSicGeneration(); - void setSicGeneration(SICGeneration sic); + /** + * Get the generator of automatic SIC generation. + * @return generator name or {@code null} if no generator is used + */ String getSicGenerator(); - void setSicGenerator(String sicGenerator); - String getSicGeneratorState(); - void setSicGeneratorState(String sicGeneratorState); /** - * Validate the syndax for a (usually manually entered) subject identification code - * @param sic code - * @return validation error message, or {@code null} if valid + * Get the state of the generator. + * @return generator state (e.g. last generated SIC (sequence)) */ - String validateSIC(String sic); + String getSicGeneratorState(); /** * Generate a new subject identification code (SIC). This is a transaction which @@ -86,31 +91,24 @@ public interface Study { List allPatients() throws IOException; /** - * Persists single patient - * @param ref Patient reference like Encounter id, billing number or patient id - * @param idRoot Root id, depends on the patient reference - * @param idExt unique patient extension - * @param opt participation, Opt-In or Opt-Out - * @param sic sic subject identification code - * @param comment + * Persists multiple patients + * @param patients patient entries * @param user creator - * @return added patient entry + * @return list of created entries * @throws IOException */ - PatientEntry addPatient(PatientReference ref, String idRoot, String idExt, Participation opt, String sic, String comment, String user) throws IOException; + List addPatients(List patients, String user) throws IOException; /** - * Persists multiple patients - * @param ref Patient reference like Encounter id, billing number or patient id - * @param idRoot Root id, depends on the patient reference - * @param entries map for unique patient extensions (key) and sics (value) - sic may be {@code null} - * @param opt participation, Opt-In or Opt-Out - * @param comment - * @param user creator - * @return list of created entries - * @throws IOException + * Validates a list of patient entry data and returns a map associating each entry with a list of validation results. + * This method is used to ensure that the provided patient data complies with predefined validation rules. + * + * @param entries the list of {@link PatientEntryData} objects representing the patient entries to validate. + * @return a map where each {@link PatientEntryData} is associated with a list of {@link ValidationResult} objects + * indicating the outcome of the validation process for that entry. When list is empty, the entry is valid. + * @throws IOException if there is an I/O exception during the validation process. */ - List addPatients(PatientReference ref, String idRoot, Map entries, Participation opt, String comment, String user) throws IOException; + Map> validatePatients(List entries) throws IOException; /** * Update an old entry @@ -119,5 +117,29 @@ public interface Study { * @return updated entry * @throws IOException */ - PatientEntry updatePatient(PatientEntry oldEntry, PatientEntry newEntry) throws IOException; + PatientEntry updatePatient(PatientReference ref, String root, String extension, PatientEntryData newData, String user) throws IOException; + + /** + * Delete a patient entry + * @param ref patient reference + * @param root patient root id + * @param extension patient extension + * @param user user who requested the deletion + * @throws IOException + */ + void deletePatient(PatientReference ref, String root, String extension, String user) throws IOException; + + /** + * Load master data for a patient + * @return master data of the patient or null if no master data was found + * @throws IOException + */ + PatientMasterData loadMasterData(PatientReference ref, String root, String extension) throws IOException; + + /** + * load all encounters for a patient + * @return List of encounters + * @throws IOException + */ + List loadEncounters(PatientReference ref, String root, String extension) throws IOException; } diff --git a/src/main/java/org/aktin/dwh/optinout/StudyManager.java b/src/main/java/org/aktin/dwh/optinout/StudyManager.java index 9ca4cff..98ff070 100644 --- a/src/main/java/org/aktin/dwh/optinout/StudyManager.java +++ b/src/main/java/org/aktin/dwh/optinout/StudyManager.java @@ -7,9 +7,6 @@ public interface StudyManager { List getStudies() throws IOException; - PatientMasterData loadMasterData(PatientReference ref, String root, String ext) throws IOException; - List loadEncounters(PatientReference ref, String root, String ext) throws IOException; - /** * Try to link all entries which have not been linked yet to * the actual existing data. After a successful link has been established, diff --git a/src/main/java/org/aktin/dwh/optinout/ValidationResult.java b/src/main/java/org/aktin/dwh/optinout/ValidationResult.java new file mode 100644 index 0000000..696c9ea --- /dev/null +++ b/src/main/java/org/aktin/dwh/optinout/ValidationResult.java @@ -0,0 +1,19 @@ +package org.aktin.dwh.optinout; +/** + * Validation result of a inserted entry data + */ +public enum ValidationResult { + // User Input States + DUPLICATE_PAT_REF, // User entered a patient reference at least twice + DUPLICATE_SIC, // User entered a SIC at least twice + + // Database States + ENTRY_FOUND, // Patient entry already exists + SIC_FOUND, // SIC already exists + MASTER_DATA_NOT_FOUND, // No master data in db found + ENCOUNTERS_NOT_FOUND, // No encounters in db found + + // Processing States + VALID, + PENDING, // Validation has not occurred yet +} From 57dae2bbb70b6a71d1343e7ef0278ef43c730a3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=BCning?= Date: Tue, 30 Dec 2025 14:20:32 +0100 Subject: [PATCH 2/3] #6: refactor study manager interfaces - renamed StudyManager to StudyService - introduced PatientService and PatientValidator - moved methods to more suitable interfaces --- .../org/aktin/dwh/optinout/Participation.java | 24 ++++- .../aktin/dwh/optinout/PatientEncounter.java | 4 +- .../org/aktin/dwh/optinout/PatientEntry.java | 12 --- .../aktin/dwh/optinout/PatientMasterData.java | 2 +- .../aktin/dwh/optinout/PatientReference.java | 30 +++++- .../aktin/dwh/optinout/PatientService.java | 72 ++++++++++++++ .../aktin/dwh/optinout/PatientValidator.java | 23 +++++ .../java/org/aktin/dwh/optinout/Study.java | 97 ------------------- .../org/aktin/dwh/optinout/StudyManager.java | 17 ---- .../org/aktin/dwh/optinout/StudyService.java | 13 +++ 10 files changed, 159 insertions(+), 135 deletions(-) create mode 100644 src/main/java/org/aktin/dwh/optinout/PatientService.java create mode 100644 src/main/java/org/aktin/dwh/optinout/PatientValidator.java delete mode 100644 src/main/java/org/aktin/dwh/optinout/StudyManager.java create mode 100644 src/main/java/org/aktin/dwh/optinout/StudyService.java diff --git a/src/main/java/org/aktin/dwh/optinout/Participation.java b/src/main/java/org/aktin/dwh/optinout/Participation.java index 41c45ac..ec96533 100644 --- a/src/main/java/org/aktin/dwh/optinout/Participation.java +++ b/src/main/java/org/aktin/dwh/optinout/Participation.java @@ -1,8 +1,28 @@ package org.aktin.dwh.optinout; +import java.util.Arrays; + public enum Participation { /** Patient specifically wants to participate */ - OptIn, + OptIn("I"), /** Patient wants to be excluded */ - OptOut + OptOut("O"); + + /** + * helper functions for (de-)serialization + */ + private String code; + + Participation(String code) { + this.code = code; + } + + public String getCode() { + return code; + } + + public static Participation fromCode(String code) { + return Arrays.stream(values()).filter(a -> a.code.equals(code)).findFirst() + .orElseThrow(() -> new IllegalArgumentException("Unknown database value: " + code)); + } } diff --git a/src/main/java/org/aktin/dwh/optinout/PatientEncounter.java b/src/main/java/org/aktin/dwh/optinout/PatientEncounter.java index 6b5ce35..52fc3df 100644 --- a/src/main/java/org/aktin/dwh/optinout/PatientEncounter.java +++ b/src/main/java/org/aktin/dwh/optinout/PatientEncounter.java @@ -3,8 +3,8 @@ import java.time.Instant; public interface PatientEncounter { - int getEncounterId(); - int getPatientId(); + String getPseudonym(); + String getEncounterId(); Instant getStartDate(); Instant getEndDate(); } diff --git a/src/main/java/org/aktin/dwh/optinout/PatientEntry.java b/src/main/java/org/aktin/dwh/optinout/PatientEntry.java index 9f6cd58..66bd19a 100644 --- a/src/main/java/org/aktin/dwh/optinout/PatientEntry.java +++ b/src/main/java/org/aktin/dwh/optinout/PatientEntry.java @@ -1,13 +1,8 @@ package org.aktin.dwh.optinout; -import java.io.FileNotFoundException; -import java.io.IOException; import java.time.Instant; -import java.util.List; public interface PatientEntry { - - Study getStudy(); Participation getParticipation(); PatientReference getReference(); String getIdRoot(); @@ -23,11 +18,4 @@ public interface PatientEntry { * @return patient_num from i2b2, or {@code null} if no link is available. */ Integer getI2b2PatientNum(); - - /** - * Determine whether a second patient is equal (study, pat_ref,pat_root,pat_ext) - * @param other other entry - * @return true if the ids are equal, false otherwise - */ - boolean equalsId(PatientEntry other); } diff --git a/src/main/java/org/aktin/dwh/optinout/PatientMasterData.java b/src/main/java/org/aktin/dwh/optinout/PatientMasterData.java index a33b799..f2b8dce 100644 --- a/src/main/java/org/aktin/dwh/optinout/PatientMasterData.java +++ b/src/main/java/org/aktin/dwh/optinout/PatientMasterData.java @@ -3,7 +3,7 @@ import java.time.Instant; public interface PatientMasterData { - int getPatientId(); + String getPseudonym(); String getSex(); String getZip(); Instant getBirthDate(); diff --git a/src/main/java/org/aktin/dwh/optinout/PatientReference.java b/src/main/java/org/aktin/dwh/optinout/PatientReference.java index be91dd1..a7342df 100644 --- a/src/main/java/org/aktin/dwh/optinout/PatientReference.java +++ b/src/main/java/org/aktin/dwh/optinout/PatientReference.java @@ -1,23 +1,45 @@ package org.aktin.dwh.optinout; +import java.util.Arrays; + public enum PatientReference { /** patient specific id * CDA element: /ClinicalDocument/recordTarget/patientRole/id * hash in i2b2 DB: i2b2crcdata.patient_mapping in column patient_ide [type: character varying(200) */ - Patient, + Patient("PAT"), /** visit id, a visit can contain multiple encounters * Not used in this project. */ - Visit, + Visit("VIS"), /** encounter (with a practitioner) * CDA element: /ClinicalDocument/componentOf/encompassingEncounter/id[1] * hash in i2b2 DB: i2b2crcdata.encounter_mapping in column encounter_ide [type: character varying(200) */ - Encounter, + Encounter("ENC"), /** billing / accounting number of the hospital, used for financial transactions * CDA element: /ClinicalDocument/componentOf/encompassingEncounter/id[2] * hash in i2b2 DB: i2b2crcdata.observation_fact in column tval_char where concept_cd=AKTIN:Fallkennzeichen [type: character varying(255)] */ - Billing + Billing("BIL"); + + + /** + * helper functions for (de-)serialization + */ + + private final String code; + + PatientReference(String code) { + this.code = code; + } + + public String getCode() { + return code; + } + + public static PatientReference fromCode(String code) { + return Arrays.stream(values()).filter(a -> a.code.equals(code)).findFirst() + .orElseThrow(() -> new IllegalArgumentException("Unknown value: " + code)); + } } diff --git a/src/main/java/org/aktin/dwh/optinout/PatientService.java b/src/main/java/org/aktin/dwh/optinout/PatientService.java new file mode 100644 index 0000000..ca69026 --- /dev/null +++ b/src/main/java/org/aktin/dwh/optinout/PatientService.java @@ -0,0 +1,72 @@ +package org.aktin.dwh.optinout; + +import java.io.IOException; +import java.util.List; + +public interface PatientService { + /** + * Get all patients of a study. + * @param studyId study id + * @return list of patients + * @throws IOException + */ + List getAllPatientsOfStudy(String studyId) throws IOException; + + /** + * Get a patient by ID. + * @param studyId study id + * @param ref patient reference + * @param extension patient extension + * @return patient entry + * @throws IOException + */ + PatientEntry getPatientByID(String studyId, PatientReference ref, String extension) throws IOException; + + /** + * Add a list of patients to a study. + * @param studyId study id + * @param patientEntryData patient entries + * @param user user who added the patients + * @throws IOException + */ + void addPatients(String studyId, List patientEntryData, String user) throws IOException; + + /** + * Delete a patient from a study. + * @param studyId study id + * @param ref patient reference + * @param extension patient extension + * @param user user who deleted the patient + * @throws IOException + */ + void deletePatient(String studyId, PatientReference ref, String extension, String user) throws IOException; + + /** + * Update a patient entry. + * @param studyId study id + * @param ref patient reference + * @param extension patient extension + * @param newData new patient data + * @param user user who updated the patient + * @throws IOException + */ + void updatePatient(String studyId, PatientReference ref, String extension, PatientEntryData newData, String user) throws IOException; + + /** + * Get all encounters for a patient. + * @param ref patient reference + * @param extension patient extension + * @return list of encounters + * @throws IOException + */ + List getEncounters(PatientReference ref, String extension) throws IOException; + + /** + * Get master data (like sex, zip, etc.) for a patient. + * @param ref patient reference + * @param extension patient extension + * @return master data + * @throws IOException + */ + PatientMasterData getMasterData(PatientReference ref, String extension) throws IOException; +} diff --git a/src/main/java/org/aktin/dwh/optinout/PatientValidator.java b/src/main/java/org/aktin/dwh/optinout/PatientValidator.java new file mode 100644 index 0000000..562bb41 --- /dev/null +++ b/src/main/java/org/aktin/dwh/optinout/PatientValidator.java @@ -0,0 +1,23 @@ +package org.aktin.dwh.optinout; + +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** + * Interface for validating patient data in a study context. The purpose of this interface + * is to ensure that the provided patient data meets the requirements and validation rules + * defined for a specific study. + */ +public interface PatientValidator { + /** + * Validates a list of patient entry data for a specific study and associates each entry with its respective validation results. + * This method ensures that the provided patient data complies with the validation rules defined for the given study. + * + * @param studyId the unique identifier for the study in which the patients are being validated. + * @param patients the list of {@link PatientEntryData} objects representing the patient entries to be validated. + * @return a map where each {@link PatientEntryData} is associated with a list of {@link ValidationResult} objects + * indicating the outcome of the validation process for that entry. An empty list indicates the entry is valid. + */ + Map> validatePatients(String studyId, List patients) throws IOException; +} diff --git a/src/main/java/org/aktin/dwh/optinout/Study.java b/src/main/java/org/aktin/dwh/optinout/Study.java index d8294f0..8972320 100644 --- a/src/main/java/org/aktin/dwh/optinout/Study.java +++ b/src/main/java/org/aktin/dwh/optinout/Study.java @@ -27,14 +27,6 @@ public interface Study { * @return participation option */ Participation getParticipation(); - - /** - * Determine whether this study allows the specified participation option. - * A study may support multiple participation options. - * @param participation participation option (OptIn, OptOut) - * @return true if the study allows the specified option - */ - boolean isParticipationSupported(Participation participation); /** * Get the method of SIC generation @@ -53,93 +45,4 @@ public interface Study { * @return generator state (e.g. last generated SIC (sequence)) */ String getSicGeneratorState(); - - /** - * Generate a new subject identification code (SIC). This is a transaction which - * guarantees that two calls never return the same SIC. - * @return locally unique SIC - * @throws UnsupportedOperationException if the study does not support generation of SICs - * @throws IllegalStateException if the generator is in an invalid state and unable to perform the next calculation - * @throws IOException for IO errors during state loading/saving - */ - String generateSIC() throws UnsupportedOperationException, IllegalStateException, IOException; - - /** - * Find a patient by his SIC. A patient does not necessarily need a SIC, therefore - * some entries might exist which cannot be found via this method - * @param sic subject identification code - * @return entry or {@code null} if not found - * @throws IOException IO error - */ - PatientEntry getPatientBySIC(String sic) throws IOException; - - /** - * Find a patient by their reference type, root id and extension - * @param ref Patient reference like Encounter id, billing number or patient id - * @param idRoot Root id, depends on the patient reference - * @param idExt unique patient extension - * @return Patient entry or null of not found - * @throws IOException - */ - PatientEntry getPatientByID(PatientReference ref, String idRoot, String idExt) throws IOException; - - /** - * Returns all patients registered in this study - * @return all patients registered in this study - * @throws IOException - */ - List allPatients() throws IOException; - - /** - * Persists multiple patients - * @param patients patient entries - * @param user creator - * @return list of created entries - * @throws IOException - */ - List addPatients(List patients, String user) throws IOException; - - /** - * Validates a list of patient entry data and returns a map associating each entry with a list of validation results. - * This method is used to ensure that the provided patient data complies with predefined validation rules. - * - * @param entries the list of {@link PatientEntryData} objects representing the patient entries to validate. - * @return a map where each {@link PatientEntryData} is associated with a list of {@link ValidationResult} objects - * indicating the outcome of the validation process for that entry. When list is empty, the entry is valid. - * @throws IOException if there is an I/O exception during the validation process. - */ - Map> validatePatients(List entries) throws IOException; - - /** - * Update an old entry - * @param oldEntry entry to be updated - * @param newEntry new entry - * @return updated entry - * @throws IOException - */ - PatientEntry updatePatient(PatientReference ref, String root, String extension, PatientEntryData newData, String user) throws IOException; - - /** - * Delete a patient entry - * @param ref patient reference - * @param root patient root id - * @param extension patient extension - * @param user user who requested the deletion - * @throws IOException - */ - void deletePatient(PatientReference ref, String root, String extension, String user) throws IOException; - - /** - * Load master data for a patient - * @return master data of the patient or null if no master data was found - * @throws IOException - */ - PatientMasterData loadMasterData(PatientReference ref, String root, String extension) throws IOException; - - /** - * load all encounters for a patient - * @return List of encounters - * @throws IOException - */ - List loadEncounters(PatientReference ref, String root, String extension) throws IOException; } diff --git a/src/main/java/org/aktin/dwh/optinout/StudyManager.java b/src/main/java/org/aktin/dwh/optinout/StudyManager.java deleted file mode 100644 index 98ff070..0000000 --- a/src/main/java/org/aktin/dwh/optinout/StudyManager.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.aktin.dwh.optinout; - -import java.io.IOException; -import java.util.List; - -public interface StudyManager { - - List getStudies() throws IOException; - - /** - * Try to link all entries which have not been linked yet to - * the actual existing data. After a successful link has been established, - * the {@link PatientEntry#getI2b2PatientNum()} will be not {@code null}. - * @throws IOException IO error - */ - void linkPatientEntriesToData() throws IOException; -} diff --git a/src/main/java/org/aktin/dwh/optinout/StudyService.java b/src/main/java/org/aktin/dwh/optinout/StudyService.java new file mode 100644 index 0000000..7638aad --- /dev/null +++ b/src/main/java/org/aktin/dwh/optinout/StudyService.java @@ -0,0 +1,13 @@ +package org.aktin.dwh.optinout; + +import java.io.IOException; +import java.util.List; + +public interface StudyService { + /** + * Get all studies. + * @return list of studies + * @throws IOException + */ + List getStudies() throws IOException; +} From b945c3be5683a15f347f125b1ed72dbbe3f0e936 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=BCning?= Date: Wed, 21 Jan 2026 16:28:05 +0100 Subject: [PATCH 3/3] #6: move files to separate packages --- src/main/java/org/aktin/dwh/PreferenceKey.java | 2 +- .../java/org/aktin/dwh/optinout/{ => model}/ErrorType.java | 2 +- .../org/aktin/dwh/optinout/{ => model}/Participation.java | 2 +- .../aktin/dwh/optinout/{ => model}/PatientEncounter.java | 3 +-- .../org/aktin/dwh/optinout/{ => model}/PatientEntry.java | 2 +- .../aktin/dwh/optinout/{ => model}/PatientEntryData.java | 2 +- .../aktin/dwh/optinout/{ => model}/PatientMasterData.java | 2 +- .../aktin/dwh/optinout/{ => model}/PatientReference.java | 2 +- .../org/aktin/dwh/optinout/{ => model}/SICGeneration.java | 2 +- src/main/java/org/aktin/dwh/optinout/{ => model}/Study.java | 5 +---- .../aktin/dwh/optinout/{ => model}/ValidationResult.java | 2 +- .../aktin/dwh/optinout/{ => service}/PatientService.java | 6 ++++-- .../aktin/dwh/optinout/{ => service}/PatientValidator.java | 5 ++++- .../org/aktin/dwh/optinout/{ => service}/StudyService.java | 4 +++- 14 files changed, 22 insertions(+), 19 deletions(-) rename src/main/java/org/aktin/dwh/optinout/{ => model}/ErrorType.java (82%) rename src/main/java/org/aktin/dwh/optinout/{ => model}/Participation.java (93%) rename src/main/java/org/aktin/dwh/optinout/{ => model}/PatientEncounter.java (70%) rename src/main/java/org/aktin/dwh/optinout/{ => model}/PatientEntry.java (93%) rename src/main/java/org/aktin/dwh/optinout/{ => model}/PatientEntryData.java (92%) rename src/main/java/org/aktin/dwh/optinout/{ => model}/PatientMasterData.java (81%) rename src/main/java/org/aktin/dwh/optinout/{ => model}/PatientReference.java (97%) rename src/main/java/org/aktin/dwh/optinout/{ => model}/SICGeneration.java (84%) rename src/main/java/org/aktin/dwh/optinout/{ => model}/Study.java (89%) rename src/main/java/org/aktin/dwh/optinout/{ => model}/ValidationResult.java (93%) rename src/main/java/org/aktin/dwh/optinout/{ => service}/PatientService.java (91%) rename src/main/java/org/aktin/dwh/optinout/{ => service}/PatientValidator.java (89%) rename src/main/java/org/aktin/dwh/optinout/{ => service}/StudyService.java (72%) diff --git a/src/main/java/org/aktin/dwh/PreferenceKey.java b/src/main/java/org/aktin/dwh/PreferenceKey.java index a20a90c..8ef897c 100644 --- a/src/main/java/org/aktin/dwh/PreferenceKey.java +++ b/src/main/java/org/aktin/dwh/PreferenceKey.java @@ -1,6 +1,6 @@ package org.aktin.dwh; -import org.aktin.dwh.optinout.PatientReference; +import org.aktin.dwh.optinout.model.PatientReference; /** * Preferences keys for the data warehouse diff --git a/src/main/java/org/aktin/dwh/optinout/ErrorType.java b/src/main/java/org/aktin/dwh/optinout/model/ErrorType.java similarity index 82% rename from src/main/java/org/aktin/dwh/optinout/ErrorType.java rename to src/main/java/org/aktin/dwh/optinout/model/ErrorType.java index 45e0ade..a680ce3 100644 --- a/src/main/java/org/aktin/dwh/optinout/ErrorType.java +++ b/src/main/java/org/aktin/dwh/optinout/model/ErrorType.java @@ -1,4 +1,4 @@ -package org.aktin.dwh.optinout; +package org.aktin.dwh.optinout.model; // errors that occur during CRUD operations on opt-in data public enum ErrorType { diff --git a/src/main/java/org/aktin/dwh/optinout/Participation.java b/src/main/java/org/aktin/dwh/optinout/model/Participation.java similarity index 93% rename from src/main/java/org/aktin/dwh/optinout/Participation.java rename to src/main/java/org/aktin/dwh/optinout/model/Participation.java index ec96533..89f50b2 100644 --- a/src/main/java/org/aktin/dwh/optinout/Participation.java +++ b/src/main/java/org/aktin/dwh/optinout/model/Participation.java @@ -1,4 +1,4 @@ -package org.aktin.dwh.optinout; +package org.aktin.dwh.optinout.model; import java.util.Arrays; diff --git a/src/main/java/org/aktin/dwh/optinout/PatientEncounter.java b/src/main/java/org/aktin/dwh/optinout/model/PatientEncounter.java similarity index 70% rename from src/main/java/org/aktin/dwh/optinout/PatientEncounter.java rename to src/main/java/org/aktin/dwh/optinout/model/PatientEncounter.java index 52fc3df..8facae1 100644 --- a/src/main/java/org/aktin/dwh/optinout/PatientEncounter.java +++ b/src/main/java/org/aktin/dwh/optinout/model/PatientEncounter.java @@ -1,10 +1,9 @@ -package org.aktin.dwh.optinout; +package org.aktin.dwh.optinout.model; import java.time.Instant; public interface PatientEncounter { String getPseudonym(); - String getEncounterId(); Instant getStartDate(); Instant getEndDate(); } diff --git a/src/main/java/org/aktin/dwh/optinout/PatientEntry.java b/src/main/java/org/aktin/dwh/optinout/model/PatientEntry.java similarity index 93% rename from src/main/java/org/aktin/dwh/optinout/PatientEntry.java rename to src/main/java/org/aktin/dwh/optinout/model/PatientEntry.java index 66bd19a..78d6f93 100644 --- a/src/main/java/org/aktin/dwh/optinout/PatientEntry.java +++ b/src/main/java/org/aktin/dwh/optinout/model/PatientEntry.java @@ -1,4 +1,4 @@ -package org.aktin.dwh.optinout; +package org.aktin.dwh.optinout.model; import java.time.Instant; diff --git a/src/main/java/org/aktin/dwh/optinout/PatientEntryData.java b/src/main/java/org/aktin/dwh/optinout/model/PatientEntryData.java similarity index 92% rename from src/main/java/org/aktin/dwh/optinout/PatientEntryData.java rename to src/main/java/org/aktin/dwh/optinout/model/PatientEntryData.java index 671a142..77abf89 100644 --- a/src/main/java/org/aktin/dwh/optinout/PatientEntryData.java +++ b/src/main/java/org/aktin/dwh/optinout/model/PatientEntryData.java @@ -1,4 +1,4 @@ -package org.aktin.dwh.optinout; +package org.aktin.dwh.optinout.model; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/src/main/java/org/aktin/dwh/optinout/PatientMasterData.java b/src/main/java/org/aktin/dwh/optinout/model/PatientMasterData.java similarity index 81% rename from src/main/java/org/aktin/dwh/optinout/PatientMasterData.java rename to src/main/java/org/aktin/dwh/optinout/model/PatientMasterData.java index f2b8dce..aa192ab 100644 --- a/src/main/java/org/aktin/dwh/optinout/PatientMasterData.java +++ b/src/main/java/org/aktin/dwh/optinout/model/PatientMasterData.java @@ -1,4 +1,4 @@ -package org.aktin.dwh.optinout; +package org.aktin.dwh.optinout.model; import java.time.Instant; diff --git a/src/main/java/org/aktin/dwh/optinout/PatientReference.java b/src/main/java/org/aktin/dwh/optinout/model/PatientReference.java similarity index 97% rename from src/main/java/org/aktin/dwh/optinout/PatientReference.java rename to src/main/java/org/aktin/dwh/optinout/model/PatientReference.java index a7342df..f36ab15 100644 --- a/src/main/java/org/aktin/dwh/optinout/PatientReference.java +++ b/src/main/java/org/aktin/dwh/optinout/model/PatientReference.java @@ -1,4 +1,4 @@ -package org.aktin.dwh.optinout; +package org.aktin.dwh.optinout.model; import java.util.Arrays; diff --git a/src/main/java/org/aktin/dwh/optinout/SICGeneration.java b/src/main/java/org/aktin/dwh/optinout/model/SICGeneration.java similarity index 84% rename from src/main/java/org/aktin/dwh/optinout/SICGeneration.java rename to src/main/java/org/aktin/dwh/optinout/model/SICGeneration.java index 5e4825e..c3d2354 100644 --- a/src/main/java/org/aktin/dwh/optinout/SICGeneration.java +++ b/src/main/java/org/aktin/dwh/optinout/model/SICGeneration.java @@ -1,4 +1,4 @@ -package org.aktin.dwh.optinout; +package org.aktin.dwh.optinout.model; /** * Method of Sic generation diff --git a/src/main/java/org/aktin/dwh/optinout/Study.java b/src/main/java/org/aktin/dwh/optinout/model/Study.java similarity index 89% rename from src/main/java/org/aktin/dwh/optinout/Study.java rename to src/main/java/org/aktin/dwh/optinout/model/Study.java index 8972320..9591e1f 100644 --- a/src/main/java/org/aktin/dwh/optinout/Study.java +++ b/src/main/java/org/aktin/dwh/optinout/model/Study.java @@ -1,9 +1,6 @@ -package org.aktin.dwh.optinout; +package org.aktin.dwh.optinout.model; -import java.io.IOException; import java.time.Instant; -import java.util.List; -import java.util.Map; public interface Study { diff --git a/src/main/java/org/aktin/dwh/optinout/ValidationResult.java b/src/main/java/org/aktin/dwh/optinout/model/ValidationResult.java similarity index 93% rename from src/main/java/org/aktin/dwh/optinout/ValidationResult.java rename to src/main/java/org/aktin/dwh/optinout/model/ValidationResult.java index 696c9ea..cd2ada5 100644 --- a/src/main/java/org/aktin/dwh/optinout/ValidationResult.java +++ b/src/main/java/org/aktin/dwh/optinout/model/ValidationResult.java @@ -1,4 +1,4 @@ -package org.aktin.dwh.optinout; +package org.aktin.dwh.optinout.model; /** * Validation result of a inserted entry data */ diff --git a/src/main/java/org/aktin/dwh/optinout/PatientService.java b/src/main/java/org/aktin/dwh/optinout/service/PatientService.java similarity index 91% rename from src/main/java/org/aktin/dwh/optinout/PatientService.java rename to src/main/java/org/aktin/dwh/optinout/service/PatientService.java index ca69026..5541fc0 100644 --- a/src/main/java/org/aktin/dwh/optinout/PatientService.java +++ b/src/main/java/org/aktin/dwh/optinout/service/PatientService.java @@ -1,4 +1,6 @@ -package org.aktin.dwh.optinout; +package org.aktin.dwh.optinout.service; + +import org.aktin.dwh.optinout.model.*; import java.io.IOException; import java.util.List; @@ -29,7 +31,7 @@ public interface PatientService { * @param user user who added the patients * @throws IOException */ - void addPatients(String studyId, List patientEntryData, String user) throws IOException; + void addPatientsToStudy(String studyId, List patientEntryData, String user) throws IOException; /** * Delete a patient from a study. diff --git a/src/main/java/org/aktin/dwh/optinout/PatientValidator.java b/src/main/java/org/aktin/dwh/optinout/service/PatientValidator.java similarity index 89% rename from src/main/java/org/aktin/dwh/optinout/PatientValidator.java rename to src/main/java/org/aktin/dwh/optinout/service/PatientValidator.java index 562bb41..aeafe35 100644 --- a/src/main/java/org/aktin/dwh/optinout/PatientValidator.java +++ b/src/main/java/org/aktin/dwh/optinout/service/PatientValidator.java @@ -1,4 +1,7 @@ -package org.aktin.dwh.optinout; +package org.aktin.dwh.optinout.service; + +import org.aktin.dwh.optinout.model.PatientEntryData; +import org.aktin.dwh.optinout.model.ValidationResult; import java.io.IOException; import java.util.List; diff --git a/src/main/java/org/aktin/dwh/optinout/StudyService.java b/src/main/java/org/aktin/dwh/optinout/service/StudyService.java similarity index 72% rename from src/main/java/org/aktin/dwh/optinout/StudyService.java rename to src/main/java/org/aktin/dwh/optinout/service/StudyService.java index 7638aad..2fce73e 100644 --- a/src/main/java/org/aktin/dwh/optinout/StudyService.java +++ b/src/main/java/org/aktin/dwh/optinout/service/StudyService.java @@ -1,4 +1,6 @@ -package org.aktin.dwh.optinout; +package org.aktin.dwh.optinout.service; + +import org.aktin.dwh.optinout.model.Study; import java.io.IOException; import java.util.List;