1
0
mirror of https://github.com/pcvolkmer/onkostar-plugin-dnpm.git synced 2025-07-05 02:22:54 +00:00

Issue #7: Aktualisiere MTB + Datum in Reevaluation und gen. Beratung

This commit is contained in:
2023-03-14 11:05:31 +01:00
parent 53ee3f8645
commit c3e96d18fc
3 changed files with 222 additions and 58 deletions

54
pom.xml
View File

@ -77,6 +77,60 @@
<version>2.6</version> <version>2.6</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<!-- Test dependencies -->
<!-- Wird nur für Unit-tests benoetigt -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.9.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.24.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>4.11.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>4.11.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-base</artifactId>
<version>2.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ca.uhn.hapi</groupId>
<artifactId>hapi-structures-v26</artifactId>
<version>2.2</version>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.22.2</version>
</plugin>
</plugins>
</build>
</project> </project>

View File

@ -89,17 +89,57 @@ public class TherapieplanAnalyzer implements IProcedureAnalyzer {
@Override @Override
public void analyze(Procedure procedure, Disease disease) { public void analyze(Procedure procedure, Disease disease) {
updateMtbInSections(procedure);
updateMtbInSubforms(procedure); updateMtbInSubforms(procedure);
} }
/**
* Verlinke MTB und Übernahme Datum aus Hauptformular in weiteren Bereichen
* "Humangenetische Beratung" und "Reevaluation", wenn erforderlich.
*
* @param procedure Die Prozedur mit Hauptformular
*/
private void updateMtbInSections(Procedure procedure) {
if (
null != onkostarApi.getGlobalSetting("mehrere_mtb_in_mtbepisode")
&& onkostarApi.getGlobalSetting("mehrere_mtb_in_mtbepisode").equals("true")
||
!procedure.getValue("humangenberatung").getString().equals("1")
&& !procedure.getValue("reevaluation").getString().equals("1")
) {
return;
}
var mtbReference = procedure.getValue("referstemtb").getInt();
var mtbDate = procedure.getValue("datum").getDate();
if (mtbReference != procedure.getValue("reftkhumangenber").getInt() && !mtbDate.equals(procedure.getValue("datumtkhumangenber").getDate())) {
procedure.setValue("reftkhumangenber", new Item("ref_tk_humangenber", mtbReference));
procedure.setValue("datumtkhumangenber", new Item("datum_tk_humangenber", mtbDate));
}
if (mtbReference != procedure.getValue("reftkreevaluation").getInt() && !mtbDate.equals(procedure.getValue("datumtkreevaluation").getDate())) {
procedure.setValue("reftkreevaluation", new Item("ref_tk_reevaluation", mtbReference));
procedure.setValue("datumtkreevaluation", new Item("datum_tk_reevaluation", mtbDate));
}
try {
onkostarApi.saveProcedure(procedure, false);
} catch (Exception e) {
logger.error("Formular 'DNPM Therapieplan' konnte nicht aktualisiert werden", e);
}
}
/** /**
* Verlinke MTB und Übernahme Datum aus Hauptformular in Unterformularen * Verlinke MTB und Übernahme Datum aus Hauptformular in Unterformularen
* *
* @param procedure Die Prozedur mit Hauptformular * @param procedure Die Prozedur mit Hauptformular
*/ */
// TODO: 13.03.23 Onkostar führt nach Speicherung eines Unterformulars erneut eine Speicherung des Hauptformulars aus - ggf eigene Speicher-Methode ohne Verwendung der Onkostar-API implementieren.
private void updateMtbInSubforms(Procedure procedure) { private void updateMtbInSubforms(Procedure procedure) {
if (onkostarApi.getGlobalSetting("mehrere_mtb_in_mtbepisode").equals("true")) { if (
null != onkostarApi.getGlobalSetting("mehrere_mtb_in_mtbepisode")
&& onkostarApi.getGlobalSetting("mehrere_mtb_in_mtbepisode").equals("true")
) {
return; return;
} }

View File

@ -0,0 +1,70 @@
package DNPM.forms;
import DNPM.services.FormService;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Item;
import de.itc.onkostar.api.Procedure;
import de.itc.onkostar.api.constants.JaNeinUnbekannt;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.Date;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.*;
@ExtendWith(MockitoExtension.class)
public class TherapieplanAnalyzerTest {
@Mock
private IOnkostarApi onkostarApi;
@Mock
private FormService formService;
private TherapieplanAnalyzer therapieplanAnalyzer;
@BeforeEach
void setUp() {
this.therapieplanAnalyzer = new TherapieplanAnalyzer(onkostarApi, formService);
}
@Test
void shouldNotUpdateSubformsOrSectionsIfMultipleMtbConfiguration() throws Exception {
doAnswer(invocationOnMock -> {
var settingName = invocationOnMock.getArgument(0, String.class);
if (settingName.equals("mehrere_mtb_in_mtbepisode")) {
return "true";
}
return null;
}).when(onkostarApi).getGlobalSetting(anyString());
this.therapieplanAnalyzer.analyze(new Procedure(onkostarApi), null);
verify(onkostarApi, never()).saveProcedure(any(Procedure.class), anyBoolean());
}
@Test
void shouldNotUpdateSectionsIfSectionsNotEnabled() throws Exception {
when(onkostarApi.getGlobalSetting(anyString())).thenReturn(null);
var testProcedure = new Procedure(onkostarApi);
testProcedure.setId(1000);
// Setzen MTB Referenz und Datum MTB
testProcedure.setValue("referstemtb", new Item("ref_tumorkonferenz", 1234));
testProcedure.setValue("datum", new Item("datum", new Date()));
// Keine humangenetische Beratung und keine Reevaluation empfohlen
testProcedure.setValue("humangenberatung", new Item("humangen_beratung", JaNeinUnbekannt.NEIN));
testProcedure.setValue("reevaluation", new Item("reevaluation", JaNeinUnbekannt.NEIN));
this.therapieplanAnalyzer.analyze(testProcedure, null);
verify(onkostarApi, never()).saveProcedure(any(Procedure.class), anyBoolean());
}
}