diff --git a/mvc/src/main/java/org/karnak/cache/CachedPatient.java b/mvc/src/main/java/org/karnak/cache/CachedPatient.java index 763c82243..2a395fdb1 100644 --- a/mvc/src/main/java/org/karnak/cache/CachedPatient.java +++ b/mvc/src/main/java/org/karnak/cache/CachedPatient.java @@ -1,63 +1,24 @@ package org.karnak.cache; -import java.io.Serializable; -import java.time.LocalDate; - -public class CachedPatient implements PseudonymPatient, Serializable { - private String pseudonym; - private String patientId; - private String patientName; - private String issuerOfPatientId; +public class CachedPatient extends Patient { public CachedPatient(String pseudonym, String patientId, String patientName, String issuerOfPatientId) { - this.pseudonym = pseudonym; - this.patientId = patientId; - this.patientName = patientName; - this.issuerOfPatientId = issuerOfPatientId; - } - - @Override - public String getPseudonym() { - return pseudonym; + super(pseudonym, patientId, patientName, null, null, issuerOfPatientId); } public void setPseudonym(String pseudonym) { this.pseudonym = pseudonym; } - @Override - public String getPatientId() { - return patientId; - } - public void setPatientId(String patientId) { this.patientId = patientId; } - @Override - public String getPatientName() { - return patientName; - } public void setPatientName(String patientName) { - this.patientName = patientName; - } - - @Override - public String getIssuerOfPatientId() { - return issuerOfPatientId; + updatePatientName(patientName); } public void setIssuerOfPatientId(String issuerOfPatientId) { this.issuerOfPatientId = issuerOfPatientId; } - - @Override - public LocalDate getPatientBirthDate() { - return null; - } - - @Override - public String getPatientSex() { - return null; - } } diff --git a/mvc/src/main/java/org/karnak/cache/MainzellistePatient.java b/mvc/src/main/java/org/karnak/cache/MainzellistePatient.java index 76b6c77d1..88f28c9d9 100644 --- a/mvc/src/main/java/org/karnak/cache/MainzellistePatient.java +++ b/mvc/src/main/java/org/karnak/cache/MainzellistePatient.java @@ -1,94 +1,40 @@ package org.karnak.cache; -import java.io.Serializable; import java.time.LocalDate; -public class MainzellistePatient implements PseudonymPatient, Serializable { - private String pseudonym; - private String patientId; - private String patientFirstName; - private String patientLastName; - private LocalDate patientBirthDate; - private String patientSex; - private String issuerOfPatientId; +public class MainzellistePatient extends Patient { - @Override - public String getPseudonym() { - return pseudonym; + public MainzellistePatient(String pseudonym, String patientId, String patientFirstName, String patientLastName, + LocalDate patientBirthDate, String patientSex, String issuerOfPatientId) + { + super(pseudonym, patientId, patientFirstName, patientLastName, patientBirthDate, patientSex, issuerOfPatientId); } public void setPseudonym(String pseudonym) { this.pseudonym = pseudonym; } - @Override - public String getPatientId() { - return patientId; - } - public void setPatientId(String patientId) { this.patientId = patientId; } - @Override - public String getPatientName() { - return patientFirstName == null || patientFirstName.equals("") ? - patientLastName : String.format("%s^%s", patientLastName == null ? "" : patientLastName, patientFirstName); - } - - public String getPatientFirstName() { - return patientFirstName; - } - public void setPatientFirstName(String patientFirstName) { - this.patientFirstName = patientFirstName; - } - - public String getPatientLastName() { - return patientLastName; + updatePatientFirstName(patientFirstName); } public void setPatientLastName(String patientLastName) { - this.patientLastName = patientLastName; - } - - @Override - public LocalDate getPatientBirthDate() { - return patientBirthDate; + updatePatientLastName(patientLastName); } public void setPatientBirthDate(LocalDate patientBirthDate) { this.patientBirthDate = patientBirthDate; } - @Override - public String getPatientSex() { - return patientSex; - } - public void setPatientSex(String patientSex) { this.patientSex = patientSex; } - @Override - public String getIssuerOfPatientId() { - return issuerOfPatientId; - } - public void setIssuerOfPatientId(String issuerOfPatientId) { this.issuerOfPatientId = issuerOfPatientId; } - - public MainzellistePatient(String pseudonym, String patientId, String patientFirstName, String patientLastName, - LocalDate patientBirthDate, String patientSex, String issuerOfPatientId) - { - this.pseudonym = pseudonym; - this.patientId = patientId; - this.patientFirstName = patientFirstName; - this.patientLastName = patientLastName; - this.patientBirthDate= patientBirthDate; - this.patientSex = patientSex; - this.issuerOfPatientId = issuerOfPatientId; - } - } diff --git a/mvc/src/main/java/org/karnak/cache/Patient.java b/mvc/src/main/java/org/karnak/cache/Patient.java new file mode 100644 index 000000000..64d7c41cd --- /dev/null +++ b/mvc/src/main/java/org/karnak/cache/Patient.java @@ -0,0 +1,119 @@ +package org.karnak.cache; + +import java.io.Serializable; +import java.time.LocalDate; + +public abstract class Patient implements PseudonymPatient, Serializable { + private static final Character SPLIT_CHAR_PATIENT_NAME = '^'; + protected String pseudonym; + protected String patientId; + protected String patientName; + protected String patientFirstName; + protected String patientLastName; + protected LocalDate patientBirthDate; + protected String patientSex; + protected String issuerOfPatientId; + + protected Patient(String pseudonym, String patientId, String patientName, LocalDate patientBirthDate, + String patientSex, String issuerOfPatientId) + { + this.pseudonym = pseudonym; + this.patientId = patientId; + this.patientName = patientName; + this.patientFirstName = createPatientFirstName(patientName); + this.patientLastName = createPatientLastName(patientName); + this.patientBirthDate= patientBirthDate; + this.patientSex = patientSex; + this.issuerOfPatientId = issuerOfPatientId; + } + + protected Patient(String pseudonym, String patientId, String patientFirstName, String patientLastName, + LocalDate patientBirthDate, String patientSex, String issuerOfPatientId) + { + this.pseudonym = pseudonym; + this.patientId = patientId; + this.patientName = createPatientName(patientFirstName, patientLastName); + this.patientFirstName = emptyStringIfNull(patientFirstName); + this.patientLastName = emptyStringIfNull(patientLastName); + this.patientBirthDate= patientBirthDate; + this.patientSex = patientSex; + this.issuerOfPatientId = issuerOfPatientId; + } + + protected static String createPatientLastName(String patientName) { + return patientName.split(String.format("\\%c", SPLIT_CHAR_PATIENT_NAME))[0]; + } + + protected static String createPatientFirstName(String patientName) { + String[] patientNameSplitted = patientName.split(String.format("\\%c", SPLIT_CHAR_PATIENT_NAME)); + if (patientNameSplitted.length > 1) { + return patientNameSplitted[1]; + } + return ""; + } + + protected static String createPatientName(String patientFirstName, String patientLastName) { + if (patientFirstName == null || patientFirstName.equals("")) { + return patientLastName; + } + return String.format("%s%c%s", patientLastName == null ? "" : patientLastName, SPLIT_CHAR_PATIENT_NAME, patientFirstName); + } + + protected void updatePatientName(String patientName) { + this.patientName = patientName; + this.patientFirstName = createPatientFirstName(patientName); + this.patientLastName = createPatientLastName(patientName); + } + + protected void updatePatientLastName(String patientLastName) { + this.patientLastName = emptyStringIfNull(patientLastName); + this.patientName = createPatientName(patientFirstName, patientLastName); + } + + protected void updatePatientFirstName(String patientFirstName) { + this.patientFirstName = emptyStringIfNull(patientFirstName); + this.patientName = createPatientName(patientFirstName, patientLastName); + } + + private static String emptyStringIfNull(String value) { + return value == null ? "" : value; + } + + @Override + public String getPseudonym() { + return pseudonym; + } + + @Override + public String getPatientId() { + return patientId; + } + + @Override + public String getPatientName() { + return patientName; + } + + public String getPatientFirstName() { + return patientFirstName; + } + + public String getPatientLastName() { + return patientLastName; + } + + @Override + public LocalDate getPatientBirthDate() { + return patientBirthDate; + } + + @Override + public String getPatientSex() { + return patientSex; + } + + @Override + public String getIssuerOfPatientId() { + return issuerOfPatientId; + } +} diff --git a/mvc/src/test/java/org/karnak/cache/MainzellistePatientTest.java b/mvc/src/test/java/org/karnak/cache/MainzellistePatientTest.java index a932ffa80..ddb26fe0c 100644 --- a/mvc/src/test/java/org/karnak/cache/MainzellistePatientTest.java +++ b/mvc/src/test/java/org/karnak/cache/MainzellistePatientTest.java @@ -46,4 +46,114 @@ private static Stream providerGetPatientName() { Arguments.of(mainzellistePatientWithFirstNameNull, "Ackermann") ); } + + @ParameterizedTest + @MethodSource("providerGetPatientFirstName") + void getPatientFirstName(MainzellistePatient mainzellistePatient, String output){ + assertEquals(mainzellistePatient.getPatientFirstName(), output); + } + + private static Stream providerGetPatientFirstName() { + return Stream.of( + Arguments.of(mainzellistePatient, "Kenny"), + Arguments.of(mainzellistePatientWithFirstName, "Kenny"), + Arguments.of(mainzellistePatientWithLastName, ""), + Arguments.of(mainzellistePatientWithLastNameNull, "Kenny"), + Arguments.of(mainzellistePatientWithFirstNameNull, "") + ); + } + + @ParameterizedTest + @MethodSource("providerGetPatientLastName") + void getPatientLastName(MainzellistePatient mainzellistePatient, String output){ + assertEquals(mainzellistePatient.getPatientLastName(), output); + } + + private static Stream providerGetPatientLastName() { + return Stream.of( + Arguments.of(mainzellistePatient, "Ackermann"), + Arguments.of(mainzellistePatientWithFirstName, ""), + Arguments.of(mainzellistePatientWithLastName, "Ackermann"), + Arguments.of(mainzellistePatientWithLastNameNull, ""), + Arguments.of(mainzellistePatientWithFirstNameNull, "Ackermann") + ); + } + + @ParameterizedTest + @MethodSource("providerUpdatePatientLastName") + void getUpdatedPatientLastName(MainzellistePatient mainzellistePatient, String output){ + assertEquals(mainzellistePatient.getPatientLastName(), output); + } + + private static Stream providerUpdatePatientLastName() { + mainzellistePatient.setPatientLastName("Katshan"); + mainzellistePatient.setPatientFirstName("Kenny"); + mainzellistePatientWithFirstName.setPatientLastName(null); + mainzellistePatientWithFirstName.setPatientFirstName("Kenny"); + mainzellistePatientWithLastName.setPatientLastName("Katshan"); + mainzellistePatientWithLastName.setPatientFirstName(""); + mainzellistePatientWithLastNameNull.setPatientLastName(""); + mainzellistePatientWithLastNameNull.setPatientFirstName("Kenny"); + mainzellistePatientWithFirstNameNull.setPatientLastName("Katshan"); + mainzellistePatientWithFirstNameNull.setPatientFirstName(null); + return Stream.of( + Arguments.of(mainzellistePatient, "Katshan"), + Arguments.of(mainzellistePatientWithFirstName, ""), + Arguments.of(mainzellistePatientWithLastName, "Katshan"), + Arguments.of(mainzellistePatientWithLastNameNull, ""), + Arguments.of(mainzellistePatientWithFirstNameNull, "Katshan") + ); + } + + @ParameterizedTest + @MethodSource("providerUpdatePatientFirstName") + void getUpdatedPatientFirstName(MainzellistePatient mainzellistePatient, String output){ + assertEquals(mainzellistePatient.getPatientFirstName(), output); + } + + private static Stream providerUpdatePatientFirstName() { + mainzellistePatient.setPatientLastName("Ackermann"); + mainzellistePatient.setPatientFirstName("Bakugo"); + mainzellistePatientWithFirstName.setPatientLastName(""); + mainzellistePatientWithFirstName.setPatientFirstName("Bakugo"); + mainzellistePatientWithLastName.setPatientLastName("Ackermann"); + mainzellistePatientWithLastName.setPatientFirstName(null); + mainzellistePatientWithLastNameNull.setPatientLastName(null); + mainzellistePatientWithLastNameNull.setPatientFirstName("Bakugo"); + mainzellistePatientWithFirstNameNull.setPatientLastName("Ackermann"); + mainzellistePatientWithFirstNameNull.setPatientFirstName(""); + return Stream.of( + Arguments.of(mainzellistePatient, "Bakugo"), + Arguments.of(mainzellistePatientWithFirstName, "Bakugo"), + Arguments.of(mainzellistePatientWithLastName, ""), + Arguments.of(mainzellistePatientWithLastNameNull, "Bakugo"), + Arguments.of(mainzellistePatientWithFirstNameNull, "") + ); + } + + @ParameterizedTest + @MethodSource("providerUpdatePatientName") + void getUpdatedPatientName(MainzellistePatient mainzellistePatient, String output){ + assertEquals(mainzellistePatient.getPatientName(), output); + } + + private static Stream providerUpdatePatientName() { + mainzellistePatient.setPatientLastName("Katshan"); + mainzellistePatient.setPatientFirstName("Bakugo"); + mainzellistePatientWithFirstName.setPatientLastName(null); + mainzellistePatientWithFirstName.setPatientFirstName("Bakugo"); + mainzellistePatientWithLastName.setPatientLastName("Katshan"); + mainzellistePatientWithLastName.setPatientFirstName(""); + mainzellistePatientWithLastNameNull.setPatientLastName(""); + mainzellistePatientWithLastNameNull.setPatientFirstName("Bakugo"); + mainzellistePatientWithFirstNameNull.setPatientLastName("Katshan"); + mainzellistePatientWithFirstNameNull.setPatientFirstName(null); + return Stream.of( + Arguments.of(mainzellistePatient, "Katshan^Bakugo"), + Arguments.of(mainzellistePatientWithFirstName, "^Bakugo"), + Arguments.of(mainzellistePatientWithLastName, "Katshan"), + Arguments.of(mainzellistePatientWithLastNameNull, "^Bakugo"), + Arguments.of(mainzellistePatientWithFirstNameNull, "Katshan") + ); + } } \ No newline at end of file