Initial commit

This commit is contained in:
2025-07-13 13:54:10 +02:00
commit da526a39af
14 changed files with 831 additions and 0 deletions

View File

@@ -0,0 +1,106 @@
package dev.pcvolkmer.onco.dnpmexport;
import de.itc.onkostar.api.Disease;
import de.itc.onkostar.api.IOnkostarApi;
import de.itc.onkostar.api.Procedure;
import de.itc.onkostar.api.analysis.AnalyzerRequirement;
import de.itc.onkostar.api.analysis.IProcedureAnalyzer;
import de.itc.onkostar.api.analysis.OnkostarPluginType;
import dev.pcvolkmer.onco.datamapper.mapper.MtbDataMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.sql.DataSource;
/**
* Analyzer to start export if DNPM Klinik/Anamnese or DNPM Therapieplan form gets locked
*
* @author Paul-Christian Volkmer
* @since 0.1
*/
@Component
public class ExportAnalyzer implements IProcedureAnalyzer {
private static final Logger logger = LoggerFactory.getLogger(ExportAnalyzer.class);
private final IOnkostarApi onkostarApi;
private final MtbDataMapper mtbDataMapper;
public ExportAnalyzer(final IOnkostarApi onkostarApi, final DataSource dataSource) {
this.onkostarApi = onkostarApi;
// Reuse default Onkostar DataSource for MtbDataMapper
this.mtbDataMapper = MtbDataMapper.create(dataSource);
}
@Override
public OnkostarPluginType getType() {
return OnkostarPluginType.ANALYZER;
}
@Override
public String getVersion() {
return "0.1.0";
}
@Override
public String getName() {
return "DNPM-Export-Plugin";
}
@Override
public String getDescription() {
return "OS Export-Plugin für das DNPM-Datenmodell 2.1";
}
@Override
public boolean isSynchronous() {
return false;
}
@Override
public AnalyzerRequirement getRequirement() {
return AnalyzerRequirement.PROCEDURE;
}
@Override
public boolean isRelevantForDeletedProcedure() {
return false;
}
@Override
public boolean isRelevantForAnalyzer(final Procedure procedure, final Disease disease) {
return null != procedure
&& ("DNPM Klinik/Anamnese".equals(procedure.getFormName()) || "DNPM Therapieplan".equals(procedure.getFormName()));
}
@Override
public void analyze(final Procedure procedure, final Disease disease) {
logger.info("Starting export for procedure {}", procedure.getId());
try {
String caseId = "";
switch (procedure.getFormName()) {
case "DNPM Klinik/Anamnese":
caseId = procedure.getValue("FallnummrMV").getString();
break;
case "DNPM Therapieplan":
var kpaProcedure = onkostarApi.getProcedure(
procedure.getValue("ref_dnpm_klinikanamnese").getInt()
);
caseId = kpaProcedure.getValue("FallnummrMV").getString();
break;
default:
logger.info("Cannot handle procedure form {}", procedure.getFormName());
return;
}
var mtb = mtbDataMapper.getByCaseId(caseId);
// TODO: Send MTB data to remote application
} catch (Exception e) {
logger.error("Could export mtb data for procedure {}", procedure.getId(), e);
}
}
}

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<context:component-scan base-package="dev.pcvolkmer.onco.dnpmexport" />
</beans>

View File

@@ -0,0 +1 @@
onkostar-api=2.14.1

View File

@@ -0,0 +1,34 @@
package dev.pcvolkmer.onco.dnpmexport;
import de.itc.onkostar.api.IOnkostarApi;
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 javax.sql.DataSource;
@ExtendWith(MockitoExtension.class)
class ExportAnalyzerTest {
private IOnkostarApi onkostarApi;
private DataSource dataSource;
private ExportAnalyzer analyzer;
@BeforeEach
void setup(
@Mock IOnkostarApi onkostarApi,
@Mock DataSource dataSource
) {
this.onkostarApi = onkostarApi;
this.dataSource = dataSource;
this.analyzer = new ExportAnalyzer(onkostarApi, dataSource);
}
@Test
void testShouldTestSomeAnalyzerImplementation() {
// Implement your first test
}
}