From 9d66c42460dda63a6380ba0f30004fcd92a4f5c4 Mon Sep 17 00:00:00 2001 From: Busfreak Date: Fri, 10 Mar 2023 00:30:42 +0100 Subject: erste Version --- DNPMPlugins/src/main/java/DNPM/ConsentManager.java | 151 ++++++++++ DNPMPlugins/src/main/java/DNPM/DNPMHelper.java | 315 +++++++++++++++++++++ .../src/main/java/DNPM/Merkmalskatalog.java | 98 +++++++ DNPMPlugins/src/main/java/DNPM/VerweisVon.java | 54 ++++ DNPMPlugins/src/main/java/DNPM/logger.java | 7 + 5 files changed, 625 insertions(+) create mode 100644 DNPMPlugins/src/main/java/DNPM/ConsentManager.java create mode 100644 DNPMPlugins/src/main/java/DNPM/DNPMHelper.java create mode 100644 DNPMPlugins/src/main/java/DNPM/Merkmalskatalog.java create mode 100644 DNPMPlugins/src/main/java/DNPM/VerweisVon.java create mode 100644 DNPMPlugins/src/main/java/DNPM/logger.java (limited to 'DNPMPlugins/src/main/java/DNPM') diff --git a/DNPMPlugins/src/main/java/DNPM/ConsentManager.java b/DNPMPlugins/src/main/java/DNPM/ConsentManager.java new file mode 100644 index 0000000..d6b9994 --- /dev/null +++ b/DNPMPlugins/src/main/java/DNPM/ConsentManager.java @@ -0,0 +1,151 @@ +package DNPM; + +import java.util.List; +import java.util.Map; + +import org.hibernate.SQLQuery; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.transform.Transformers; +import org.hibernate.type.StandardBasicTypes; +import org.springframework.beans.factory.annotation.Autowired; + +import de.itc.onkostar.api.Disease; +import de.itc.onkostar.api.IOnkostarApi; +import de.itc.onkostar.api.Item; +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; + +public class ConsentManager implements IProcedureAnalyzer { + + @Autowired + private IOnkostarApi onkostarApi; + + @Override + public String getDescription() { + return "Aktualisiert Consent Daten in verknüpften Formularen"; + } + + @Override + public String getName() { + return "Consent Manager"; + } + + @Override + public AnalyzerRequirement getRequirement() { + return AnalyzerRequirement.PROCEDURE; + } + + @Override + public OnkostarPluginType getType() { + return OnkostarPluginType.ANALYZER; + } + + @Override + public String getVersion() { + return "1"; + } + + @Override + public boolean isRelevantForAnalyzer(Procedure Prozedur, Disease Erkrankung) { + return Prozedur.getFormName().equals(onkostarApi.getGlobalSetting("consentform")); + } + + @Override + public boolean isRelevantForDeletedProcedure() { + // TODO is relevant for deleted procedure = true + return false; + } + + @Override + public boolean isSynchronous() { + return true; + } + + @Override + public void analyze(Procedure Prozedur, Disease Erkrankung) { + int value = 0; + try { + SessionFactory sessionFactory = onkostarApi.getSessionFactory(); + Session session = sessionFactory.getCurrentSession(); + // geänderte Werte checken + String sql1 = "select id, max(timestamp) AS datum from aenderungsprotokoll where entity_id = '" + Prozedur.getId() + "'"; + SQLQuery query1 = session.createSQLQuery(sql1) + .addScalar("id", StandardBasicTypes.INTEGER) + .addScalar("datum", StandardBasicTypes.TIMESTAMP); + System.out.println(query1.uniqueResult().toString()); + + try { + 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 = " + Prozedur.getPatientId() + " " + + "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 { + for (VerweisVon var : result) { + sql = var.getSQL(); + query = session.createSQLQuery(sql) + .addScalar("value", StandardBasicTypes.INTEGER); + if (query.uniqueResult() != null) { + value = (Integer)query.uniqueResult(); + } + if (value == Prozedur.getId()) { + Procedure andereprozedur = onkostarApi.getProcedure(var.getProcedure_id()); + try { + Map Felder = Prozedur.getAllValues(); + for (Map.Entry Feld: Felder.entrySet()) { + if (Feld.getKey().length() > 6 && Feld.getKey().substring(0, 7).equals("Consent")) { + if (Feld.getKey().equals("ConsentStatusEinwilligungDNPM")) { + switch (Feld.getValue().getValue().toString()) { + case "z": + andereprozedur.setValue(Feld.getKey(), new Item(Feld.getKey(), "active")); + break; + case "a": + andereprozedur.setValue(Feld.getKey(), new Item(Feld.getKey(), "rejected")); + break; + case "w": + andereprozedur.setValue(Feld.getKey(), new Item(Feld.getKey(), "rejected")); + break; + } + } else { + andereprozedur.setValue(Feld.getKey(), Prozedur.getValue(Feld.getKey())); + } + } + } + onkostarApi.saveProcedure(andereprozedur); + } catch (Exception e) { + e.printStackTrace(); + } + value = 0; + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } catch (Exception e) { + System.out.println(e.getMessage()); + } + } + +} diff --git a/DNPMPlugins/src/main/java/DNPM/DNPMHelper.java b/DNPMPlugins/src/main/java/DNPM/DNPMHelper.java new file mode 100644 index 0000000..408c262 --- /dev/null +++ b/DNPMPlugins/src/main/java/DNPM/DNPMHelper.java @@ -0,0 +1,315 @@ +package DNPM; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.hibernate.SQLQuery; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.transform.Transformers; +import org.hibernate.type.StandardBasicTypes; +import org.springframework.beans.factory.annotation.Autowired; + +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.Item; +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; + +public class DNPMHelper implements IProcedureAnalyzer{ + + // Laden der API + @Autowired + private IOnkostarApi onkostarApi; + + @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 "1"; + } + + @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 Object getVerweise(final Map input) { + int ProcedureId = (int) input.get("ProcedureId"); + int PatientId = (int) input.get("PatientId"); + int value = 0; + List> VerbundeneFormulare = new ArrayList>(); + + try { + SessionFactory sessionFactory = onkostarApi.getSessionFactory(); + Session session = sessionFactory.getCurrentSession(); + try { + 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 + " " + + "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 { + for (VerweisVon var : result) { + sql = var.getSQL(); + query = session.createSQLQuery(sql) + .addScalar("value", StandardBasicTypes.INTEGER); + if (query.uniqueResult() != null) { + value = (Integer)query.uniqueResult(); + } + if (value == ProcedureId) { + VerbundeneFormulare.add(Map.of("formular", var.getVerbundenesFormular())); + value = 0; + } + } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } catch (Exception e) { + return null; + } + } catch (Exception e) { + return null; + } + return VerbundeneFormulare; + } + + public Object getSystemischeTherapienFromDiagnose(final Map input) { + int DiagnoseId = (int) input.get("DiagnoseId"); + + String jsonStr = ""; + List Rueckgabewerte = new ArrayList(); + List Prozeduren = onkostarApi.getProceduresForDiseaseByForm(DiagnoseId, "OS.Systemische Therapie"); + // für jede Prozedur + for (Procedure Prozedur : Prozeduren) { + String Beginn = new String(); + String Ende = new String(); + String Wirkstoffe = new String(); + String Beendigung = new String(); + String Ergebnis = new String(); + + // SubstanzenCodesListe enthält die Liste der SubstanzenCodes + List> SubstanzenCodesListe = new ArrayList>(); + + // alle Werte der Prozedur auslesen + Map alleWerte = Prozedur.getAllValues(); + // Prozedurwerte enthält nur die interessanten Werte + Map Prozedurwerte = new HashMap<>(); + // alle Werte durchgehen und die interessanten übernehmen + for (Map.Entry WerteListe : alleWerte.entrySet()) { + // Datum des Hauptformulars merken + if (WerteListe.getKey().equals("Beendigung")) { + Beendigung = WerteListe.getValue().getValue(); + } + if (WerteListe.getKey().equals("Ergebnis")) { + Ergebnis = WerteListe.getValue().getValue(); + } + if (WerteListe.getKey().equals("Beginn")) { + Beginn = WerteListe.getValue().getString();// + "," + WerteListe.getValue().getDateAccuracy(); + } + if (WerteListe.getKey().equals("Ende")) { + Ende = WerteListe.getValue().getString();// + "," + WerteListe.getValue().getDateAccuracy(); + } + // im Subformular (SubstanzenList) Substanzen auslesen + if (WerteListe.getKey().equals("SubstanzenList")) { + int Index = -1; + // SubstanzenCodesListe enthält die Liste der SubstanzenCodes eines Subformulars + ArrayList>> Subformular = new ArrayList<>(); + Subformular = WerteListe.getValue().getValue(); + // Werte aus Subformular verarbeiten + for (Map> SubformularWerte: Subformular) { + + // SubstanzenCodes enthält den Code und den Namen einer Substanz + Map SubstanzenCodes = new HashMap(); + // Index des Codes (Substanz) + Index = Arrays.asList((SubformularWerte.keySet().toArray())).indexOf("Substanz"); + if (SubformularWerte.values().toArray()[Index].toString().matches("[A-V]0[1-9][A-Z]{2}[0-9]{0,2}")) { + SubstanzenCodes.put("system", "ATC"); + } else { + SubstanzenCodes.put("system", "other"); + } + + SubstanzenCodes.put("code", (String) SubformularWerte.values().toArray()[Index]); + // Index der Substanz (Substanz_shortDescription) + Index = Arrays.asList((SubformularWerte.keySet().toArray())).indexOf("Substanz_shortDescription"); + SubstanzenCodes.put("substance", (String) SubformularWerte.values().toArray()[Index]); + SubstanzenCodesListe.add(SubstanzenCodes); + Wirkstoffe = Wirkstoffe + (String) SubformularWerte.values().toArray()[Index] + ", "; + } + } + } + ObjectMapper Obj = new ObjectMapper(); + try { + jsonStr = Obj.writeValueAsString(SubstanzenCodesListe); + } catch (JsonProcessingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + Prozedurwerte.put("Beginn", Beginn); + Prozedurwerte.put("Ende", Ende); + Prozedurwerte.put("Beendigung", Beendigung); + Prozedurwerte.put("Ergebnis", Ergebnis); + Prozedurwerte.put("Wirkstoffe", Wirkstoffe.substring(0, Wirkstoffe.length()-2)); + Prozedurwerte.put("WirkstoffCodes", jsonStr); + Rueckgabewerte.add(Prozedurwerte); + } + return Rueckgabewerte; + } + + public Object getProzedurenFromDiagnose(final Map input) { + String dataForm = (String) input.get("dataForm"); + int DiagnoseId = (int) input.get("DiagnoseId"); + int PatientId = (int) input.get("PatientId"); + // Prozedur, Feldname, Wert + + List Formulare = new ArrayList(); + String jsonStr = ""; + List Prozeduren = onkostarApi.getProceduresByPatientId(PatientId); + for (Procedure Prozedur: Prozeduren ) { + // Formular gehört zur aktuellen Diagnose und hat den angegebenen Namen + if (Prozedur.getDiseaseIds().contains(DiagnoseId) && Prozedur.getFormName().contains(dataForm)) { + // alle Werte auslesen + Map Werte = Prozedur.getAllValues(); + Map Values = new HashMap<>(); + for (Map.Entry WerteListe: Werte.entrySet()) { + Values.put(WerteListe.getKey(), WerteListe.getValue()); +// System.out.println(WerteListe.getKey() + ": " + WerteListe.getValue()); + } + Map Formular = new HashMap<>(); + Formular.put("Formular", Prozedur.getFormName()); + Formular.put("Felder", Values); + Formulare.add(Formular); + } + } + ObjectMapper Obj = new ObjectMapper(); + try { + jsonStr = Obj.writeValueAsString(Formulare); + } catch (JsonProcessingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return jsonStr; + } + + public Object getEmpfehlung(final Map input) { + // Auslesen der Parameter aus 'input' + int ProcedureID = (int) input.get("ProcedureID"); + + String sql; + try { + SessionFactory sessionFactory = onkostarApi.getSessionFactory(); + Session session = sessionFactory.getCurrentSession(); + try { + sql = "SELECT * FROM prozedur " + + "LEFT JOIN dk_mtb_einzelempfehlung em ON em.id = prozedur.id " + + "WHERE prozedur.hauptprozedur_id = " + ProcedureID + " AND prozedur.geloescht = 0 AND prozedur.data_form_id = 489 " + + "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) { + return null; + } + } catch (Exception e) { + return null; + } + } + + public Object updateEmpfehlungPrio(final Map input) { + // Auslesen der Parameter aus 'input' + //int rid = (int) input.get("rid"); + Object rid = input.get("rid"); + Object strDate = input.get("bd"); + SQLQuery result = null; + + //String strD = strDate.toString(); + //String CompareDate = strD.substring(1, 11); + + //DateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd"); + + String sql; + + try { + sql = "UPDATE prozedur SET beginndatum = '"+ strDate +"' WHERE id = '"+ rid +"' "; + 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; + } + + } +} \ No newline at end of file diff --git a/DNPMPlugins/src/main/java/DNPM/Merkmalskatalog.java b/DNPMPlugins/src/main/java/DNPM/Merkmalskatalog.java new file mode 100644 index 0000000..8160156 --- /dev/null +++ b/DNPMPlugins/src/main/java/DNPM/Merkmalskatalog.java @@ -0,0 +1,98 @@ +package DNPM; + +import java.util.List; +import java.util.Map; + +import org.hibernate.SQLQuery; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.type.StandardBasicTypes; +import org.springframework.beans.factory.annotation.Autowired; + +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; + +public class Merkmalskatalog implements IProcedureAnalyzer{ + @Autowired + private IOnkostarApi onkostarApi; + + @Override + public OnkostarPluginType getType() { + return OnkostarPluginType.BACKEND_SERVICE; + } + + @Override + public String getVersion() { + return "1"; + } + + @Override + public String getName() { + return "UMR Merkmalskatalog"; + } + + @Override + public String getDescription() { + return "Methoden für Merkmalskataloge"; + } + + @Override + public boolean isRelevantForDeletedProcedure() { + return false; + } + + @Override + public boolean isSynchronous() { + return true; + } + + @Override + public AnalyzerRequirement getRequirement() { + return AnalyzerRequirement.PROCEDURE; + } + + @Override + public boolean isRelevantForAnalyzer(Procedure procedure, Disease currentDisease) { + return false; + } + + @Override + public void analyze(Procedure procedurea, Disease disease) {} + + public Object getMerkmalskatalog(final Map input) { + String Merkmalskatalog = (String) input.get("Merkmalskatalog"); + String Spalten = (String) input.get("Spalten"); + String[] SpaltenArray = Spalten.split("\\s*,\\s*"); + String sql; + try { + SessionFactory sessionFactory = onkostarApi.getSessionFactory(); + Session session = sessionFactory.getCurrentSession(); + try { + sql = "SELECT p.id, p.code, p.shortdesc, p.description, p.note, p.synonyms " + + "FROM property_catalogue " + + "LEFT JOIN property_catalogue_version ON property_catalogue_version.datacatalog_id = property_catalogue.id " + + "LEFT JOIN property_catalogue_version_entry p ON p.property_version_id = property_catalogue_version.id " + + "WHERE name = '" + Merkmalskatalog + "' AND aktiv = 1 " + + "ORDER BY position ASC"; + + SQLQuery query = session.createSQLQuery(sql); + + for (int i = 0; i < SpaltenArray.length; i++) { + query.addScalar(SpaltenArray[i], StandardBasicTypes.STRING); + } + + @SuppressWarnings("unchecked") + List rows = query.list(); + return rows; + } catch (Exception e) { + return null; + } + } catch (Exception e) { + return null; + } + } +} diff --git a/DNPMPlugins/src/main/java/DNPM/VerweisVon.java b/DNPMPlugins/src/main/java/DNPM/VerweisVon.java new file mode 100644 index 0000000..afb6824 --- /dev/null +++ b/DNPMPlugins/src/main/java/DNPM/VerweisVon.java @@ -0,0 +1,54 @@ +package DNPM; + +import java.text.SimpleDateFormat; +import java.util.Date; + +public class VerweisVon { + private int procedure_id; + private int data_form_id; + private String data_catalogue; + private String data_catalogue_entry; + private String formname; + private Date datum; + + public VerweisVon() { + } + + @SuppressWarnings("unused") + public int getProcedure_id() { return this.procedure_id; } + public int getData_form_id() { return this.data_form_id; } + public String getData_catalogue_name() { return this.data_catalogue; } + public String getData_catalogue_entry_name() { return this.data_catalogue_entry; } + public String getFormname() { return this.formname; } + public Date getDate() { return this.datum; } + public String getTable() { + return "dk_" + this.data_catalogue.toLowerCase().replaceAll("[^a-zA-Z0-9]", "_"); + } + public String getField() { + return this.data_catalogue_entry.toLowerCase(); + } + public String getSQL() { + return "SELECT " + this.getField() + " AS value FROM " + this.getTable() + " WHERE id = " + this.getProcedure_id(); + } + private String getDatumAsString() { + SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yyyy"); + String Datum = null; + if (this.getDate() != null) { + Datum = DATE_FORMAT.format(this.getDate()); + } + return Datum; + } + public String getVerbundenesFormular() { + String FName = "Formular " + this.getFormname(); + if (this.getDatumAsString() != null ) { FName += " vom " + this.getDatumAsString(); } + return FName; + } + + @SuppressWarnings("unused") + public void setProcedure_id(int procedure_id) {this.procedure_id = procedure_id; } + public void setData_form_id(int data_form_id) {this.data_form_id = data_form_id; } + public void setData_catalogue_name(String data_catalogue_name) {this.data_catalogue = data_catalogue_name; } + public void setData_catalogue_entry_name(String data_catalogue_entry) {this.data_catalogue_entry = data_catalogue_entry; } + public void setDate(Date datum) { this.datum = datum; } + public void setFormname(String formname) { this.formname = formname; } +} diff --git a/DNPMPlugins/src/main/java/DNPM/logger.java b/DNPMPlugins/src/main/java/DNPM/logger.java new file mode 100644 index 0000000..15dadb6 --- /dev/null +++ b/DNPMPlugins/src/main/java/DNPM/logger.java @@ -0,0 +1,7 @@ +package DNPM; + +public class logger { + public static void error (String messagetext) { + System.out.println(messagetext); + } +} -- cgit v1.2.3