From b8e795d22e846ff4fb024682b5ecced2538971e7 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Tue, 29 Aug 2023 09:19:33 +0200 Subject: Issue #42: Verschiebe Pluginklassen in Paket 'analyzer' und passe an --- src/main/java/DNPM/DNPMHelper.java | 284 ------------------------------------- 1 file changed, 284 deletions(-) delete mode 100644 src/main/java/DNPM/DNPMHelper.java (limited to 'src/main/java/DNPM/DNPMHelper.java') diff --git a/src/main/java/DNPM/DNPMHelper.java b/src/main/java/DNPM/DNPMHelper.java deleted file mode 100644 index 838ca9a..0000000 --- a/src/main/java/DNPM/DNPMHelper.java +++ /dev/null @@ -1,284 +0,0 @@ -package DNPM; - -import DNPM.analyzer.AnalyzerUtils; -import DNPM.security.IllegalSecuredObjectAccessException; -import DNPM.security.PermissionType; -import DNPM.security.PersonPoolBasedPermissionEvaluator; -import DNPM.services.systemtherapie.SystemtherapieService; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -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 org.hibernate.SQLQuery; -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.hibernate.transform.Transformers; -import org.hibernate.type.StandardBasicTypes; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.security.core.context.SecurityContextHolder; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class DNPMHelper implements IProcedureAnalyzer { - - private static final Logger logger = LoggerFactory.getLogger(DNPMHelper.class); - - private final IOnkostarApi onkostarApi; - - private final SystemtherapieService systemtherapieService; - - private final PersonPoolBasedPermissionEvaluator personPoolBasedPermissionEvaluator; - - public DNPMHelper( - final IOnkostarApi onkostarApi, - final SystemtherapieService systemtherapieService, - final PersonPoolBasedPermissionEvaluator permissionEvaluator - ) { - this.onkostarApi = onkostarApi; - this.systemtherapieService = systemtherapieService; - this.personPoolBasedPermissionEvaluator = permissionEvaluator; - } - - @Override - public OnkostarPluginType getType() { - // Typ des Plugins - // Für das Interface IProcedureAnalyzer gültig sind ANALYZER und BACKEND_SERVICE - return OnkostarPluginType.BACKEND_SERVICE; - } - - @Override - public String getVersion() { - return "0.4.0"; - } - - @Override - public String getName() { - return "UMR DNPM"; - } - - @Override - public String getDescription() { - return "Methoden für DNPM-Formulare"; - } - - @Override - public boolean isRelevantForDeletedProcedure() { - return false; - } - - @Override - public boolean isSynchronous() { - return true; - } - - @Override - public AnalyzerRequirement getRequirement() { - return AnalyzerRequirement.PROCEDURE; - } - - @Override - public boolean isRelevantForAnalyzer(Procedure entry, Disease currentDisease) { - // Plugin enthält nur Methoden für Formulare und soll nicht ausgeführt werden - return false; - } - - @Override - public void analyze(Procedure entry, Disease currentDisease) { - // wird nicht benötigt, da dass Plugin nicht ausgeführt wird - } - - @SuppressWarnings("unchecked") - 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; - } - - var verbundeneFormulare = new ArrayList>(); - - try { - SessionFactory sessionFactory = onkostarApi.getSessionFactory(); - Session session = sessionFactory.getCurrentSession(); - - String sql = "SELECT prozedur.id AS procedure_id, prozedur.data_form_id, data_catalogue.name AS data_catalogue, data_catalogue_entry.name AS data_catalogue_entry, data_form.description AS formname, prozedur.beginndatum AS datum " + - "FROM prozedur " + - "LEFT JOIN data_form_data_catalogue ON data_form_data_catalogue.data_form_id = prozedur.data_form_id " + - "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.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"; - - SQLQuery query = session.createSQLQuery(sql) - .addScalar("procedure_id", StandardBasicTypes.INTEGER) - .addScalar("data_form_id", StandardBasicTypes.INTEGER) - .addScalar("data_catalogue", StandardBasicTypes.STRING) - .addScalar("data_catalogue_entry", StandardBasicTypes.STRING) - .addScalar("formname", StandardBasicTypes.STRING) - .addScalar("datum", StandardBasicTypes.DATE); - - query.setResultTransformer(Transformers.aliasToBean(VerweisVon.class)); - List result = query.list(); - try { - int value = 0; - for (VerweisVon verweisVon : result) { - sql = verweisVon.getSQL(); - query = session.createSQLQuery(sql) - .addScalar("value", StandardBasicTypes.INTEGER); - if (query.uniqueResult() != null) { - value = (Integer) query.uniqueResult(); - } - if (value == procedureId.get()) { - verbundeneFormulare.add(Map.of("formular", verweisVon.getVerbundenesFormular())); - value = 0; - } - } - } catch (Exception e) { - logger.warn("Fehler beim Hinzufügen eines Formularverweises", e); - } - } catch (Exception e) { - logger.error("Fehler beim Ermitteln der Formularverweise", e); - return null; - } - return verbundeneFormulare; - } - - public List> getSystemischeTherapienFromDiagnose(final Map input) { - var diagnoseId = AnalyzerUtils.getRequiredId(input, "DiagnoseId"); - if (diagnoseId.isEmpty()) { - logger.error("Kein Parameter 'DiagnoseId' angegeben, gebe 'null' zurück"); - return null; - } - - return systemtherapieService.getSystemischeTherapienFromDiagnose(diagnoseId.get()); - } - - 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 ""; - } - - var formulare = new ArrayList>(); - 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.get()) && Prozedur.getFormName().contains(dataForm.get())) { - // alle Werte auslesen - // System.out.println(WerteListe.getKey() + ": " + WerteListe.getValue()); - formulare.add(Map.of( - "Formular", Prozedur.getFormName(), - "Felder", new HashMap<>(Prozedur.getAllValues()) - )); - } - } - try { - ObjectMapper objectMapper = new ObjectMapper(); - return objectMapper.writeValueAsString(formulare); - } catch (JsonProcessingException e) { - logger.error("Kann Formulare nicht in JSON mappen", e); - } - return ""; - } - - public Object getEmpfehlung(final Map input) { - var procedureID = AnalyzerUtils.getRequiredId(input, "ProcedureID"); - - if (procedureID.isEmpty()) { - logger.error("Kein Parameter 'ProcedureID' angegeben, gebe 'null' zurück"); - return null; - } - - try { - SessionFactory sessionFactory = onkostarApi.getSessionFactory(); - Session session = sessionFactory.getCurrentSession(); - var sql = "SELECT prozedur.id, genname, geneid, geneidlink, empfehlung, beginndatum FROM prozedur " - + "LEFT JOIN dk_mtb_einzelempfehlung em ON em.id = prozedur.id " - + "JOIN data_form df ON prozedur.data_form_id = df.id AND df.name = 'MR.MTB_Einzelempfehlung' " - + "WHERE prozedur.hauptprozedur_id = " + procedureID.get() + " AND prozedur.geloescht = 0 " - + "ORDER BY beginndatum"; - - SQLQuery query = session.createSQLQuery(sql) - .addScalar("id", StandardBasicTypes.STRING) - .addScalar("genname", StandardBasicTypes.STRING) - .addScalar("geneid", StandardBasicTypes.STRING) - .addScalar("geneidlink", StandardBasicTypes.STRING) - .addScalar("empfehlung", StandardBasicTypes.STRING) - .addScalar("beginndatum", StandardBasicTypes.STRING); - - @SuppressWarnings("unchecked") - List rows = query.list(); - return rows; - } catch (Exception e) { - logger.error("Fehler bei Abfrage von Empfehlungen", e); - return null; - } - } - - public Object updateEmpfehlungPrio(final Map input) { - // Auslesen und Prüfen der Parameter aus 'input' - var rid = AnalyzerUtils.getRequiredId(input, "rid"); - if (rid.isEmpty()) { - logger.error("Kein Parameter 'rid' angegeben, gebe 'false' zurück"); - return false; - } - - var strDate = AnalyzerUtils.getRequiredValueMatching(input, "bd", "[\\d]{4}-[\\d]{2}-[\\d]{2}"); - if (strDate.isEmpty()) { - logger.error("Kein oder ungültiger Parameter 'bd' angegeben, gebe 'false' zurück"); - return false; - } - - //String strD = strDate.toString(); - //String CompareDate = strD.substring(1, 11); - //DateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd"); - - try { - String sql = "UPDATE prozedur SET beginndatum = '" + strDate.get() + "' WHERE id = '" + rid.get() + "' "; - SQLQuery result = onkostarApi.getSessionFactory().getCurrentSession().createSQLQuery(sql); - result.executeUpdate(); - return true; - } catch (Exception e) { - return "Achtung: Ein Fehler ist aufgetreten, Änderung konnte nicht gespeichert werden!"; - //return null; - } - - } - - // TODO Achtung, keine Sicherheitsprüfung, darüber kann für jeden Patienten die Liste mit ECOG-Status abgerufen werden! - public List getEcogStatus(final Map input) { - var pid = AnalyzerUtils.getRequiredId(input, "PatientId"); - if (pid.isEmpty()) { - logger.error("Kein Parameter 'PatientId' angegeben, gebe leere Liste zurück"); - return List.of(); - } - - var patient = onkostarApi.getPatient(pid.get()); - if (null == patient) { - logger.error("Patient nicht gefunden, gebe leere Liste zurück"); - return List.of(); - } - - if (personPoolBasedPermissionEvaluator.hasPermission(SecurityContextHolder.getContext().getAuthentication(), patient, PermissionType.READ)) { - return systemtherapieService.ecogSatus(patient); - } - - throw new IllegalSecuredObjectAccessException("Kein Zugriff auf diesen Patienten"); - } -} \ No newline at end of file -- cgit v1.2.3