From 2402a1ff018f0ce762ac17cdc4114f8e3bec6f7f Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Tue, 28 Mar 2023 14:30:36 +0200 Subject: [PATCH] =?UTF-8?q?Verwende=20konkrete=20R=C3=BCckgabetypen=20und?= =?UTF-8?q?=20f=C3=BCge=20weitere=20Pr=C3=BCfungen=20f=C3=BCr=20InputMap?= =?UTF-8?q?=20hinzu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/DNPM/DNPMHelper.java | 33 +++--- src/test/java/DNPM/DNPMHelperTest.java | 144 ++++++++++++++++++------- 2 files changed, 126 insertions(+), 51 deletions(-) diff --git a/src/main/java/DNPM/DNPMHelper.java b/src/main/java/DNPM/DNPMHelper.java index f964cb8..e8a8770 100644 --- a/src/main/java/DNPM/DNPMHelper.java +++ b/src/main/java/DNPM/DNPMHelper.java @@ -83,11 +83,16 @@ public class DNPMHelper implements IProcedureAnalyzer { } @SuppressWarnings("unchecked") - public Object getVerweise(final Map input) { - int ProcedureId = (int) input.get("ProcedureId"); - int PatientId = (int) input.get("PatientId"); + public List> getVerweise(final Map input) { + var procedureId = AnalyzerUtils.getRequiredId(input, "ProcedureId"); + var patientId = AnalyzerUtils.getRequiredId(input, "PatientId"); + + if (procedureId.isEmpty() || patientId.isEmpty()) { + return null; + } + int value = 0; - List> VerbundeneFormulare = new ArrayList>(); + var VerbundeneFormulare = new ArrayList>(); try { SessionFactory sessionFactory = onkostarApi.getSessionFactory(); @@ -99,7 +104,7 @@ public class DNPMHelper implements IProcedureAnalyzer { "LEFT JOIN data_catalogue_entry ON data_catalogue_entry.data_catalogue_id = data_form_data_catalogue.data_catalogue_id " + "LEFT JOIN data_catalogue ON data_catalogue.id = data_catalogue_entry.data_catalogue_id " + "LEFT JOIN data_form ON data_form.id = prozedur.data_form_id " + - "WHERE patient_id = " + PatientId + " " + + "WHERE patient_id = " + patientId.get() + " " + "AND geloescht = 0 " + "AND data_catalogue_entry.type = 'formReference' " + "GROUP BY prozedur.id, prozedur.data_form_id, data_catalogue.name, data_catalogue_entry.name"; @@ -122,7 +127,7 @@ public class DNPMHelper implements IProcedureAnalyzer { if (query.uniqueResult() != null) { value = (Integer) query.uniqueResult(); } - if (value == ProcedureId) { + if (value == procedureId.get()) { VerbundeneFormulare.add(Map.of("formular", var.getVerbundenesFormular())); value = 0; } @@ -150,18 +155,22 @@ public class DNPMHelper implements IProcedureAnalyzer { return systemtherapieService.getSystemischeTherapienFromDiagnose(diagnoseId.get()); } - public Object getProzedurenFromDiagnose(final Map input) { - String dataForm = (String) input.get("dataForm"); - int DiagnoseId = (int) input.get("DiagnoseId"); - int PatientId = (int) input.get("PatientId"); + public String getProzedurenFromDiagnose(final Map input) { // Prozedur, Feldname, Wert + var dataForm = AnalyzerUtils.getRequiredValue(input, "dataForm", String.class); + var diagnoseId = AnalyzerUtils.getRequiredId(input, "DiagnoseId"); + var patientId = AnalyzerUtils.getRequiredId(input, "PatientId"); + + if (dataForm.isEmpty() || diagnoseId.isEmpty() || patientId.isEmpty()) { + return ""; + } List Formulare = new ArrayList(); String jsonStr = ""; - List Prozeduren = onkostarApi.getProceduresByPatientId(PatientId); + List Prozeduren = onkostarApi.getProceduresByPatientId(patientId.get()); for (Procedure Prozedur : Prozeduren) { // Formular gehört zur aktuellen Diagnose und hat den angegebenen Namen - if (Prozedur.getDiseaseIds().contains(DiagnoseId) && Prozedur.getFormName().contains(dataForm)) { + if (Prozedur.getDiseaseIds().contains(diagnoseId.get()) && Prozedur.getFormName().contains(dataForm.get())) { // alle Werte auslesen Map Werte = Prozedur.getAllValues(); Map Values = new HashMap<>(); diff --git a/src/test/java/DNPM/DNPMHelperTest.java b/src/test/java/DNPM/DNPMHelperTest.java index 4c0bb1b..51f91ff 100644 --- a/src/test/java/DNPM/DNPMHelperTest.java +++ b/src/test/java/DNPM/DNPMHelperTest.java @@ -6,6 +6,7 @@ import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentCaptor; @@ -60,57 +61,122 @@ class DNPMHelperTest { assertThat(actual).isNull(); } - @Test - void testShouldReturnFalseIfNoRidAndNoBdCallingUpdateEmpfehlungPrio() { - var actual = dnpmHelper.updateEmpfehlungPrio(new HashMap<>()); + @Nested + class UpdateEmpfehlungPrioTests { + + @Test + void testShouldReturnFalseIfNoRidAndNoBdCallingUpdateEmpfehlungPrio() { + var actual = dnpmHelper.updateEmpfehlungPrio(new HashMap<>()); + + assertThat(actual).isEqualTo(false); + } + + @Test + void testShouldReturnFalseIfNoRidCallingUpdateEmpfehlungPrio() { + var actual = dnpmHelper.updateEmpfehlungPrio(Map.of("bd", "2023-01-01")); + + assertThat(actual).isEqualTo(false); + } + + @Test + void testShouldReturnFalseIfNoBdCallingUpdateEmpfehlungPrio() { + var actual = dnpmHelper.updateEmpfehlungPrio(Map.of("rid", 1234)); + + assertThat(actual).isEqualTo(false); + } + + @Test + void testShouldReturnTrueIfRidAndBdPresentCallingUpdateEmpfehlungPrio() { + var sessionFactory = mock(SessionFactory.class); + var session = mock(Session.class); + var query = mock(SQLQuery.class); + + when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory); + when(sessionFactory.getCurrentSession()).thenReturn(session); + when(session.createSQLQuery(anyString())).thenReturn(query); + + var actual = dnpmHelper.updateEmpfehlungPrio(Map.of("rid", 1234, "bd", "2023-01-01")); + + assertThat(actual).isEqualTo(true); + } + + @Test + void testShouldCreateSqlQueryWithRidAndBdCallingUpdateEmpfehlungPrio() { + var sessionFactory = mock(SessionFactory.class); + var session = mock(Session.class); + var query = mock(SQLQuery.class); + + when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory); + when(sessionFactory.getCurrentSession()).thenReturn(session); + when(session.createSQLQuery(anyString())).thenReturn(query); + + dnpmHelper.updateEmpfehlungPrio(Map.of("rid", 1234, "bd", "2023-01-01")); + + var argumentCaptor = ArgumentCaptor.forClass(String.class); + verify(session, times(1)).createSQLQuery(argumentCaptor.capture()); + assertThat(argumentCaptor.getValue()).isEqualTo("UPDATE prozedur SET beginndatum = '2023-01-01' WHERE id = '1234' "); + } - assertThat(actual).isEqualTo(false); } - @Test - void testShouldReturnFalseIfNoRidCallingUpdateEmpfehlungPrio() { - var actual = dnpmHelper.updateEmpfehlungPrio(Map.of("bd", "2023-01-01")); + @Nested + class GetProzedurenFromDiagnoseTests { + @Test + void testShouldReturnEmptyStringOnParamCheckIfNoDataFormParamGiven() { + var actual = dnpmHelper.getProzedurenFromDiagnose(Map.of("DiagnoseId", 1, "PatientId", 2)); + assertThat(actual).isEqualTo(""); - assertThat(actual).isEqualTo(false); + verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt()); + } + + @Test + void testShouldReturnEmptyStringOnParamCheckIfNoDiagnoseIdParamGiven() { + var actual = dnpmHelper.getProzedurenFromDiagnose(Map.of("dataForm", "OS.Example", "PatientId", 2)); + assertThat(actual).isEqualTo(""); + + verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt()); + } + + @Test + void testShouldReturnEmptyStringOnParamCheckIfNoPatientIdParamGiven() { + var actual = dnpmHelper.getProzedurenFromDiagnose(Map.of("dataForm", "OS.Example", "DiagnoseId", 1)); + assertThat(actual).isEqualTo(""); + + verify(onkostarApi, times(0)).getProceduresByPatientId(anyInt()); + } + + @Test + void testShouldRequestProceduresIfRequiredParamsGiven() { + dnpmHelper.getProzedurenFromDiagnose(Map.of("dataForm", "OS.Example", "DiagnoseId", 1, "PatientId", 2)); + verify(onkostarApi, times(1)).getProceduresByPatientId(anyInt()); + } } - @Test - void testShouldReturnFalseIfNoBdCallingUpdateEmpfehlungPrio() { - var actual = dnpmHelper.updateEmpfehlungPrio(Map.of("rid", 1234)); + @Nested + class GetVerweiseTests { - assertThat(actual).isEqualTo(false); - } + @Test + void testShouldReturnEmptyArrayIfNoProcedureIdParamGiven() { + var actual = dnpmHelper.getVerweise(Map.of("PatientId", 2)); + assertThat(actual).isNull(); - @Test - void testShouldReturnTrueIfRidAndBdPresentCallingUpdateEmpfehlungPrio() { - var sessionFactory = mock(SessionFactory.class); - var session = mock(Session.class); - var query = mock(SQLQuery.class); + verify(onkostarApi, times(0)).getSessionFactory(); + } - when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory); - when(sessionFactory.getCurrentSession()).thenReturn(session); - when(session.createSQLQuery(anyString())).thenReturn(query); + @Test + void testShouldReturnEmptyArrayIfNoPatientIdParamGiven() { + var actual = dnpmHelper.getVerweise(Map.of("ProcedureId", 1)); + assertThat(actual).isNull(); - var actual = dnpmHelper.updateEmpfehlungPrio(Map.of("rid", 1234, "bd", "2023-01-01")); + verify(onkostarApi, times(0)).getSessionFactory(); + } - assertThat(actual).isEqualTo(true); - } + @Test + void testShouldRequestSessionFactoryIfRequiredParamsGiven() { + dnpmHelper.getVerweise(Map.of("ProcedureId", 1, "PatientId", 2)); + verify(onkostarApi, times(1)).getSessionFactory(); + } - @Test - void testShouldCreateSqlQueryWithRidAndBdCallingUpdateEmpfehlungPrio() { - var sessionFactory = mock(SessionFactory.class); - var session = mock(Session.class); - var query = mock(SQLQuery.class); - - when(onkostarApi.getSessionFactory()).thenReturn(sessionFactory); - when(sessionFactory.getCurrentSession()).thenReturn(session); - when(session.createSQLQuery(anyString())).thenReturn(query); - - dnpmHelper.updateEmpfehlungPrio(Map.of("rid", 1234, "bd", "2023-01-01")); - - var argumentCaptor = ArgumentCaptor.forClass(String.class); - verify(session, times(1)).createSQLQuery(argumentCaptor.capture()); - assertThat(argumentCaptor.getValue()).isEqualTo("UPDATE prozedur SET beginndatum = '2023-01-01' WHERE id = '1234' "); } }