summaryrefslogtreecommitdiff
path: root/src/main/java/DNPM/ConsentManager.java
blob: d6b99944c77cbeaddc8467d704a8f40a52ebb2d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
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<VerweisVon> 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<String, Item> Felder = Prozedur.getAllValues();
            	  for (Map.Entry<String, Item> 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());
    }
	}
	
}