Commit 8a1cb28f authored by Reiner Jung's avatar Reiner Jung

fixing checkin

parent 6d83f84e
package de.medidex
//Antibiotika bearbeiten
class AntibiotikaController {
def beforeInterceptor = [action:this.&checkUser] //eingeloggt?
def scaffold = true
def checkUser() {
if(!session.user) {
// i.e. user not logged in
redirect(controller:'benutzer',action:'login')
return false
}
}
}
\ No newline at end of file
package de.medidex
import grails.converters.JSON
//Benutzerverwaltung
class BenutzerController {
def beforeInterceptor = [action:this.&checkUser, except:['login','doLogin']] //eingeloggt? (auer whrend des Einloggprozesses)
def scaffold = true
def checkUser() {
if(!session.user) {
// i.e. user not logged in
redirect(controller:'benutzer',action:'login')
return false
}
}
def login = {
}
//Gucke ob der angegebene Nutzer existiert und logge dich dann ein
def doLogin = {
def user = Benutzer.findWhere(name:params['name'],
password:params['password'])
session.user = user
if (user) {
redirect(controller:'stationen',action:'list')
} else {
redirect(controller:'benutzer',action:'login')
}
}
//Den Nutzer aus der Session lschen
def doLogout = {
session.user = null
redirect(controller:'benutzer', action:'login')
}
}
package de.medidex
//Daten anzeigen und exportieren
class DatenController {
def beforeInterceptor = [action:this.&checkUser]
def checkUser() {
if(!session.user) {
// i.e. user not logged in
redirect(controller:'benutzer',action:'login')
return false
}
}
def showData = {
}
def exportService
def grailsApplication
//Exportiere die ausgewhlten Daten als csv
def exportData = {
if(params?.format && params.format != "html"){
response.contentType = grailsApplication.config.grails.mime.types[params.format]
if(params.data == "antibiotikum") {
def antibiotikum = Antibiotika.findAll()
response.setHeader("Content-disposition", "attachment; filename=antibiotika.${params.extension}")
exportService.export(params.format, response.outputStream, antibiotikum, [:], [:])
}
if(params.data == "haeufigkeit") {
def haeufigkeit = Haeufigkeiten.findAll()
response.setHeader("Content-disposition", "attachment; filename=haeufigkeiten.${params.extension}")
exportService.export(params.format, response.outputStream, haeufigkeit, [:], [:])
}
if(params.data == "infektionsdiagnose") {
def infektionsdiagnose = Infektionsdiagnosen.findAll()
response.setHeader("Content-disposition", "attachment; filename=infektionsdiagnosen.${params.extension}")
exportService.export(params.format, response.outputStream, infektionsdiagnose, [:], [:])
}
if(params.data == "intervention") {
def intervention = Interventionen.findAll()
response.setHeader("Content-disposition", "attachment; filename=interventionen.${params.extension}")
exportService.export(params.format, response.outputStream, intervention, [:], [:])
}
if(params.data == "interventionsmoeglichkeit") {
def interventionsmoeglichkeit = Interventionsmoeglichkeiten.findAll()
response.setHeader("Content-disposition", "attachment; filename=interventionsmoeglichkeiten.${params.extension}")
exportService.export(params.format, response.outputStream, interventionsmoeglichkeit, [:], [:])
}
if(params.data == "staerke") {
def staerke = Staerken.findAll()
response.setHeader("Content-disposition", "attachment; filename=staerken.${params.extension}")
exportService.export(params.format, response.outputStream, staerke, [:], [:])
}
if(params.data == "station") {
def station = Stationen.findAll()
response.setHeader("Content-disposition", "attachment; filename=stationen.${params.extension}")
exportService.export(params.format, response.outputStream, station, [:], [:])
}
if(params.data == "turnus") {
def turnus = Turnie.findAll()
response.setHeader("Content-disposition", "attachment; filename=turnie.${params.extension}")
exportService.export(params.format, response.outputStream, turnus, [:], [:])
}
if(params.data == "user") {
def user = Benutzer.findAll()
response.setHeader("Content-disposition", "attachment; filename=benutzer.${params.extension}")
exportService.export(params.format, response.outputStream, user, [:], [:])
}
}
}
}
\ No newline at end of file
package de.medidex
//Infektionsdiagnosen bearbeiten
class InfektionsdiagnosenController {
def beforeInterceptor = [action:this.&checkUser] //eingeloggt?
def scaffold = true
def checkUser() {
if(!session.user) {
// i.e. user not logged in
redirect(controller:'benutzer',action:'login')
return false
}
}
}
package de.medidex
//Interventionsmöglichkeiten bearbeiten
class InterventionsmoeglichkeitenController {
def beforeInterceptor = [action:this.&checkUser] //eingeloggt?
def scaffold = true
def checkUser() {
if(!session.user) {
// i.e. user not logged in
redirect(controller:'benutzer',action:'login')
return false
}
}
}
\ No newline at end of file
package de.medidex
//Stationen bearbeiten
class StationenController {
def beforeInterceptor = [action:this.&checkUser] //eingeloggt?
def scaffold = true
def checkUser() {
if(!session.user) {
// i.e. user not logged in
redirect(controller:'benutzer',action:'login')
return false
}
}
}
package de.medidex
import groovy.sql.Sql
//Anzeigen der Statistiken
class StatistikController {
def beforeInterceptor = [action:this.&checkUser] //eingeloggt?
def checkUser() {
if(!session.user) {
// i.e. user not logged in
redirect(controller:'benutzer',action:'login')
return false
}
}
//bersicht der Statistiken
def statistik = {
}
class Pair {
String string
Integer integer
}
class PairTurnus {
Turnie turnus
Integer integer
}
def statistik1() {
//Vom Benutzer ausgewhlte Daten
def station = params.station
def from = params.from
def to = params.to
def interventionen = Interventionen.findAll() //alle Eintrge der Datenbank
def allStationen = new ArrayList() //alle Stationen, die es gibt
def allCalendar = new ArrayList() //alle Turnie, die es gibt
//setze aus allen Interventionen alle Turnie und alle Stationen
interventionen.each { intervention ->
allStationen.add(intervention.getStation())
def c = GregorianCalendar.getInstance()
c.set(intervention.year, intervention.month - 1, intervention.day)
allCalendar.add(c)
}
allStationen.unique()
allStationen = allStationen.sort { it.toString().toUpperCase() }
allCalendar.sort()
allCalendar = uniqueCalendar(allCalendar)
//wandle die vom Benutzer ausgewhlten Daten in Calendar Objekte um
def fromCalendar = stringToCalendar(from)
def toCalendar = stringToCalendar(to)
def ergs = new ArrayList()
//Hole fr alle ausgewhlten Turnie die Daten
allCalendar.each { calendar ->
if ((calendar.after(fromCalendar) && calendar.before(toCalendar)) || dateToString(calendar) == dateToString(fromCalendar)) {
ergs.addAll(Interventionen.findAllByStationAndYearAndMonthAndDay(station, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1, calendar.get(Calendar.DATE)))
}
}
//sorteren nach Interventionesmglichkeiten um Duplikate zu finden
ergs = ergs.sort { it.intervention }
def ArrayList pairs = new ArrayList()
def preErg = null
ergs.each { erg ->
if (!preErg || erg.intervention != preErg.intervention) { //War vorher eine andere Interventionsmglichkeit
//dann lege ein neues Paar aus Interventionsmglichkeit und Anzahl an
def p = new Pair()
p.string = erg.intervention
p.integer = erg.numberOfInterventions
pairs.add(p)
preErg = erg
} else {
//wenn nein, dann aktualiesiere die Anzahl beim Vorherigen
pairs.last().integer = pairs.last().integer + erg.numberOfInterventions
}
}
//Sortiere dann nach Hufigkeit
pairs = pairs.sort { -it.integer }
//Verpacke die Daten in JavaScript
def javascriptStation = new String()
javascriptStation += "new station ('"+station+"',["
pairs.each { pair ->
javascriptStation += "['"+pair.string+"',"+pair.integer+"],"
}
javascriptStation = javascriptStation.substring(0, javascriptStation.length() - 1)
javascriptStation += "]);"
//Stelle fr die View die Ausgewhlten Daten zur Verfgung
[javascriptStation1: javascriptStation, allStationen1: allStationen, allDate1: allCalendarToString(allCalendar), station1: station, from1: from, to1: to]
}
def statistik2() {
//Vom Benutzer ausgewhlte Daten
def from = params.from
def to = params.to
def turnie = Turnie.findAll() //alle Eintrge der Datenbank
def allCalendar = new ArrayList() //alle Turnie, die es gibt
//setze aus allen Turnie der Datenbank alle Turnie
turnie.each { turnus ->
def c = GregorianCalendar.getInstance()
c.set(turnus.year, turnus.month - 1, turnus.day)
allCalendar.add(c)
}
allCalendar.sort()
allCalendar = uniqueCalendar(allCalendar)
//wandle die vom Benutzer ausgewhlten Daten in Calendar Objekte um
def fromCalendar = stringToCalendar(from)
def toCalendar = stringToCalendar(to)
def ergs = new ArrayList()
allCalendar.each { calendar ->
//Fr jeden ausgewhlten Turnus
if ((calendar.after(fromCalendar) && calendar.before(toCalendar)) || dateToString(calendar) == dateToString(fromCalendar)) {
//finde alle Eintrge
def ergs2 = Turnie.findAllByYearAndMonthAndDay(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1, calendar.get(Calendar.DATE))
//finde einen Eintrag
def t = Turnie.findByYearAndMonthAndDay(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1, calendar.get(Calendar.DATE))
def sumOfPatients = 0
ergs2.each { erg ->
//summiere die Anzahl der Patienten
sumOfPatients += erg.numberOfPatients
}
//lege ein Paar mit Turnus und summierter Anzahl an
def p = new PairTurnus()
p.turnus = t
p.integer = sumOfPatients
ergs.add(p)
}
}
//sortiere nach Turnus
ergs = ergs.sort { it.turnus.day }
ergs = ergs.sort { it.turnus.month }
ergs = ergs.sort { it.turnus.year }
//Verpacke die Daten in JavaScript
def javascriptStation = new String()
javascriptStation += "new turnus ('"+"Interventionen"+"',["
ergs.each { erg ->
//hole die Interventionen, die zum Turnus passen
def interventionen = Interventionen.findAllByYearAndMonthAndDay(erg.turnus.year,erg.turnus.month,erg.turnus.day)
def sum = 0
//summiere deren Anzahl
interventionen.each { intervention ->
sum += intervention.numberOfInterventions
}
def sumPerPatient = 0
//Teile durch die Anzahl der Patienten
if (erg.integer != 0) {
sumPerPatient = sum / erg.integer
}
javascriptStation += "['"+erg.turnus.day + "." + erg.turnus.month + "." + erg.turnus.year +"',"+sumPerPatient+"],"
}
javascriptStation = javascriptStation.substring(0, javascriptStation.length() - 1)
javascriptStation += "]);"
//Stelle fr die View die Ausgewhlten Daten zur Verfgung
[javascriptStation2: javascriptStation, allDate2: allCalendarToString(allCalendar), from2: from, to2: to]
}
def statistik3() {
//Vom Benutzer ausgewhlte Daten
def team = params.team
def date = params.date
def turnie = Turnie.findAll()
def allCalendar = new ArrayList() //alle Turnie, die es gibt
def allTeams = new ArrayList() //alle team, die es gibt
//Hole fr alle Turnie die Daten
turnie.each { turnus ->
allTeams.add(turnus.getTeam())
def c = GregorianCalendar.getInstance()
c.set(turnus.year, turnus.month - 1, turnus.day)
allCalendar.add(c)
}
allTeams.unique()
allTeams = allTeams.sort { it.toString().toUpperCase() }
allCalendar.sort()
allCalendar = uniqueCalendar(allCalendar)
//wandle die vom Benutzer ausgewhlten Daten in Calendar Objekte um
def dateCalendar = stringToCalendar(date)
//Hole die gewhlten Turnie fr die Zeit und das Team
def ergs = Turnie.findAllByTeamAndYearAndMonthAndDay(team, dateCalendar.get(Calendar.YEAR), dateCalendar.get(Calendar.MONTH) + 1, dateCalendar.get(Calendar.DATE), [sort: "duration", order: 'desc'])
//Verpacke die Daten in JavaScript
def javascriptStation = new String()
javascriptStation += "new turnus ('"+team+"',["
ergs.each { erg ->
javascriptStation += "['"+erg.station+"',"+erg.duration+"],"
}
javascriptStation = javascriptStation.substring(0, javascriptStation.length() - 1)
javascriptStation += "]);"
//Stelle fr die View die Ausgewhlten Daten zur Verfgung
[javascriptStation3: javascriptStation, allTeams3: allTeams, allDate3: allCalendarToString(allCalendar), team3: team, date3: date]
}
//Wandelt einen String der Form "dd.mm.yy" in einen Calendar um
def stringToCalendar(String s) {
if (s == null) {
return GregorianCalendar.getInstance()
}
def sArray = s.split("\\.")
def day = sArray[0].toInteger()
def month = sArray[1].toInteger()
def year = sArray[2].toInteger()
def cal = GregorianCalendar.getInstance()
cal.set(year, month - 1 , day)
return cal
}
//lscht aus einer sortierten liste von Calendar alle doppelten Eintrge
def static uniqueCalendar(ArrayList arrayList) {
def arrayListTemp = new ArrayList()
arrayListTemp.add(arrayList.get(0))
def i = 1
while(i < arrayList.size()) {
if (dateToString(arrayList.get(i)) != dateToString(arrayList.get(i-1))) {
arrayListTemp.add(arrayList.get(i))
}
i++
}
return arrayListTemp
}
//Wandelt eine Liste von Calendar in eine Liste von String um
def static allCalendarToString(ArrayList calendar) {
def erg = new ArrayList()
calendar.each { date ->
erg.add(dateToString(date))
}
return erg
}
//wandelt einen Calendar in ein String um
def static dateToString (Calendar calendar) {
return calendar.get(Calendar.DATE) + "." + (calendar.get(Calendar.MONTH) + 1) + "." + calendar.get(Calendar.YEAR)
}
}
\ No newline at end of file
package de.medidex
import grails.converters.JSON
import org.json.simple.JSONArray
import org.json.simple.JSONObject
//Kommunikation mit der App
class SyncController {
def beforeInterceptor = [action:this.&checkSync] //sind die mitgesendeten Nutzerdaten richtig?
def checkSync() {
//System.out.println("Benutzer: " + request.getHeader("user") + " Passwort: " + request.getHeader("pw"))
def u = new Benutzer()
u = Benutzer.findByNameAndPassword(request.getHeader("user"), request.getHeader("pw"))
//existiert der Benutzer
if(!u) {
response.sendError(401)
return false
}
}
//Sendet, je nach dem was im Header unter "data" mitgegeben wurde, die entsprechenden Tabellen
def sendData() {
//println "User: " + request.getHeader("user") + " Password: " + request.getHeader("pw") + " Data: " + request.getHeader("data")
def string = "INSERT INTO " + request.getHeader("data")
if (request.getHeader("data") == "antibiotika") {
string += " (id, name) VALUES"
def daten = Antibiotika.getAll()
daten.each { datum ->
string += " (" + datum.id +" ,'" + datum.name + "') ,"
}
}
if (request.getHeader("data") == "benutzer") {
string += " (id, name, passwort) VALUES"
def daten = Benutzer.getAll()
daten.each { datum ->
string += " (" + datum.id +" ,'" + datum.name + "' ,'" + datum.password + "') ,"
}
}
if (request.getHeader("data") == "haeufigkeiten") {
string += " (id, name) VALUES"
def daten = Haeufigkeiten.getAll()
daten.each { datum ->
string += " (" + datum.id +" ,'" + datum.name + "') ,"
}
}
if (request.getHeader("data") == "infektionsdiagnosen") {
string += " (id, name) VALUES"
def daten = Infektionsdiagnosen.getAll()
daten.each { datum ->
string += " (" + datum.id +" ,'" + datum.name + "') ,"
}
}
if (request.getHeader("data") == "interventionsmoeglichkeiten") {
string += " (id, name) VALUES"
def daten = Interventionsmoeglichkeiten.getAll()
daten.each { datum ->
string += " (" + datum.id +" ,'" + datum.name + "') ,"
}
}
if (request.getHeader("data") == "staerken") {
string += " (id, name) VALUES"
def daten = Staerken.getAll()
daten.each { datum ->
string += " (" + datum.id +" ,'" + datum.name + "') ,"
}
}
if (request.getHeader("data") == "stationen") {
string += " (id, name) VALUES"
def daten = Stationen.getAll()
daten.each { datum ->
string += " (" + datum.id +" ,'" + datum.name + "') ,"
}
}
string = string.substring(0, string.size() - 2);
string += ";"
render ( text: string )
}
//Speichert die gesendeten Daten in die Datenbank
def receiveData() {
def data = request.JSON
println data
def dataString = data.toString()
if (dataString.contains("de.medidex.Interventionen")) {
data.each { d ->
def intervention = new Interventionen(d)
intervention.save()
}
}
if(dataString.contains("de.medidex.Turnie")) {
data.each { d ->
def turnus = new Turnie(d)
turnus.save()
}
}
}
}
\ No newline at end of file
package de.medidex
class TestController {
def testData() {
render ( text: "ok" )
}
}
package de.medidex
class Antibiotika {
Long id
Long version
String name
static constraints = {
name unique:true, blank:false, nullable:false
}
}
\ No newline at end of file
package de.medidex
class Benutzer {
Long id
Long version
String name
String password
String toString() { "$name" }
static constraints = {
name(blank:false, unique:true)
password(blank:false, password:true)
}
}
package de.medidex
class Haeufigkeiten {
Long id
Long version
String name
static constraints = {
name unique:true, blank:false, nullable:false
}
}
package de.medidex
class Infektionsdiagnosen {
Long id
Long version
String name
static constraints = {
name unique:true, blank:false, nullable:false
}
}
\ No newline at end of file
package de.medidex
import java.util.Date;
//Fr jeden Zeitraum, fr jede Station, fr alle Interventionsmglichkeiten die Anzahl, wie oft sie angewendet wurden
class Interventionen {