Skip to content
Snippets Groups Projects
Commit 8a1cb28f authored by Reiner Jung's avatar Reiner Jung
Browse files

fixing checkin

parent 6d83f84e
No related branches found
No related tags found
No related merge requests found
Showing
with 748 additions and 0 deletions
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 {
Long id
Long version
Integer day
Integer month
Integer year
String station
String intervention
Integer numberOfInterventions
static constraints = {
day blank:false, nullable:false
month blank:false, nullable:false
year blank:false, nullable:false
station blank:false, nullable:false
intervention blank:false, nullable:false
numberOfInterventions blank:true, nullable:false
}
}
package de.medidex
class Interventionsmoeglichkeiten {
Long id
Long version
String name
static constraints = {
name unique:true, blank:false, nullable:false
}
}
package de.medidex
class Staerken {
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 Stationen {
Long id
Long version
String name
static constraints = {
name blank:false, unique:true
}
}
package de.medidex
//Fr jeden Zeitraum, fr jede Station, die Anzahl der Patienten, die Dauer der Visite und das Team, das die Visite durchgefhrt hat
class Turnie {
Long id
Long version
Integer day
Integer month
Integer year
String station
Integer numberOfPatients
Long duration
String team
static constraints = {
day blank:false, nullable:false
month blank:false, nullable:false
year blank:false, nullable:false
station blank:false, nullable:false
numberOfPatients blank:true, nullable:true
duration blank:true, nullable:true
team blank:true, nullable:true
}
}
\ No newline at end of file
File added
package de.medidex
import grails.test.mixin.*
import org.junit.*
/**
* See the API for {@link grails.test.mixin.web.ControllerUnitTestMixin} for usage instructions
*/
@TestFor(AntibiotikaController)
class AntibiotikaControllerTests {
void testSomething() {
fail "Implement me"
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment