VITAL SIGNS ALARM SYSTEM AfSøren Gørtz Olesen Jonas Hove Jakobsen.

Slides:



Advertisements
Lignende præsentationer
HUNDE SPEED km h 34,4 HUNDE SPEED km h 34,1 HUNDE SPEED km h 32,8 HUNDE SPEED km h 31,9 HUNDE SPEED km h 31,8 HUNDE SPEED km h 30,9.
Advertisements

Atomer Et programmeret forløb. En måde at lære på.
Forretningsudvikling og Urmennesker
Funktioner Grundbegreber.
Du skal vide nogen om blodtrykket, fordi det fortæller noget om hvordan dit hjerte har det. HUSK - at hjertet ikke er til at undvære ligesom bilen.
VIS HJÆLPELINJER SOM ER EN HJÆLP VED PLACERING AF LOGO: 1.Højreklik på den aktuelle side og vælg ’gitter og hjælpelinjer’ 2. Sæt kryds ved ’Vis’ tegnehjælpelinjer.
Overskrift her Navn på oplægsholder Navn på KU- enhed For at ændre ”Enhedens navn” og ”Sted og dato”: Klik i menulinjen, vælg ”Indsæt” > ”Sidehoved / Sidefod”.
C# introduktion. using System; Namespace MyFirst { class eks1 { public static void Main() { Console.WriteLine("Hej!"); Console.Write("Skriv dit navn her:
Cash dispenser VDM++ modellering Test af udvidet cash dispenser Peter Clausen Raghid Kawash Brian Gram Møller.
av Lajla Ellingsen og Mari By Rise Adresseavisen
RT Speciale Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende ”Java Optimized Processor” (JOP) Speciale – efterår.
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
Array og ArrayList Et slideshow. Som er sødt.. Hvordan virker ArrayList?  ArrayList NAVN = new ArrayList ();  NAVN.add(”Værdi”);  NAVN.add(index, ”værdi”)
Julekalender 2010 For Herren i Huset For Fruen i Huset
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
C#: Udtryk og metoder. Indhold “With regards to programming statements and methods, C# offers what you would come to expect from a modern OOPL…” Udtryk.
Item gennemgang  Item: 01 – Static factory methods  Item: 09 – Override hashCode  Item: 17 – Design & document inheritence  Item: 25 – Lists over arrays.
Collectionklasser Klassifikation og anvendelse. Collections Motivation –hvorfor bruge collections? Realisering af en-til-mange relationer –Importer, erklær,
1 Parsing. 2 Mål: Et program til indlæsning og beregning af aritmetiske udtryk Eksempel: Beregn (3*5 + 4/2) - 1 Løs et lettere problem først: Læs en streng.
Problemer med at bruge tympanometri? Slagelse og Middelfart okt.-nov
Statistik.

Representations for Path Finding in Planar Environments.
Tietgen Skolen Syntaks: while ( betingelse for loop ) statement; Eksempel: int tal = 0; while ( tal/3 != 4 ) { System.Console.WriteLine(tal); tal = tal.
Automated Teller Machine - (ATM ) Lars Schelde Jens S. Olsen.
Relativ vigtighed for elektroniske ressourcer,24,22,20,18,16,14,12,10 Indeks FARM nem at bruge Info om anvendelse af elektroniske.
Pleje og Sundhed Gennemførte719 Inviterede895 Svarprocent80% FREDERICIA KOMMUNE MTU og Psykisk APV 2012 Rapportspecifikationer.
Hex Oplæg til eksamen 28/ Dagsorden Introduktion Præsentation af spillet Vores graf MinimaxDFS/BFS Disjoint sets.
Begreber og Redskaber 9. Plan for idag I dag: Datastrukturer Tabeller Lister, mængder, maps, grafer Hægtede lister.
Et vejledningsværktøj KOT Ansøgningsflow. Forsiden af Optagelse.dk 2.
MATLAB Programmering Anders P. Ravn Institut for Datalogi Aalborg Universitet Forår 2005 d = size(s); for k = 1:d(1), for n = 1:d(2), if (s(k,n) < 0) r(k,n)
ETU 2008 | Elevtilfredshedsundersøgelse Erhvervsskolen Nordsjælland HTX (Teknisk Gymnasium) - Hillerød Baseret på 313 besvarelser.
Begreber og Redskaber 5. Collections i Java 1.2 Framework: samling af datastrukturer og algoritmer som generelt værktøj. En ramme til at arbejde med søgning.
Begreber og Redskaber 5. Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om.
Globaliseringsredegørelsen 24.mar. 14 Figurer fra Danmark tiltrækker for få udenlandske investeringer i Sådan ligger landet
Matematik B 1.
MSBuild & Team Build i C#/C++ solutions VSTS ERFA d. 25 November.
1 Tråde 2 Plan Trådbegrebet Synkronisering Koordinering Eksempel: et flertrådet spil.
Grunde til at jeg elsker dig
1 PC baseret dataanalyse og simulering Week2 A. 2 SAS input/output filer Inddata -textfil - SAS-program -textfil- SAS datasæt SAS system SAS listing -print.
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
Ingeniørhøjskolen i Århus Slide 1 Newton approximation ”Oversæt” til algoritme - Step 5: Skriv kode - Step 4: Skriv pseudokode - Step 3: Specificér pre-
10.mar. 15 Udvikling i løn, priser og konkurrenceevne Dansk Industri.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
Paradigmer i Programmering 1. Program for idag : Funktioner og udtryk i SML : Øvelse : Frokost – 14.00: Deklarative.
Begreber og Redskaber 7. Plan for idag Rekursive underprogrammer Rekursive datastrukturer Rekursion vs iteration Rekursivt: Flette sortering.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Paradigmer i Programmering 1. Plan for kurset 4 x Mads R, 4 x Torben B, 2 x opgave MR: Funktionsprogrammering, SML TB: Logikprogrammering, Prolog Opgave:
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner findEn findAlle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed.
Globaliseringsredegørelse 21.mar. 11 Globaliseringsredegørelsen 2011 Grafer fra temakapitlet Eksporten som drivkraft for vækst og velstand.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
VTU 2008 | Virksomhedstilfredshedsundersøgelse Aalborg Tekniske Skole Svarprocent: 27% (414 besvarelser ud af mulige)
Forelæsning 7.1 – repetition
Identitet vs lighed. Spørgsmål Hvad udskriver run metoden? 1.”Ens!” 2.”Forskellige!” 3.Ved ikke public class Driver{ public static void run(){ String.
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Søgning.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSøgning.2 Søgeproblemer... Søgning efter fil(er) Søgning i databaser.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Quiz – Uge 2 – torsdag – første time
Præsentationens transcript:

VITAL SIGNS ALARM SYSTEM AfSøren Gørtz Olesen Jonas Hove Jakobsen

Indhold i præsentationen  Systemoversigt  Krav til systemet  Klassediagram  Udvalgt VDM++ eksempel 2

Systemoversigt Primær læge Sekundær læge Patient Overvåger livstegn 3

Krav til systemet (1)  Systemet skal kunne overvåge livstegn fra en patient og alarmere ved overskridelse af grænseværdier.  Livstegnene består af puls, EKG, åndedræt, blodtryk og temperatur.  En alarm skal indeholde informationer om hvilket/hvilke livstegn der er kritiske, hvor meget grænseværdien er overskredet og hvor lang tid den har været overskredet.  Hvis grænseværdien for et livstegn overskrides i 15 sek. skal en alarm genereres hos første prioriterede læge. Lægen skal kvittere for alarmen inden 30 sek. ellers skal alarmen videresendes til anden prioriterede læge. 4

Krav til systemet (2) 5  Hvis ingen læge har kvitteret for alarmen indenfor 60 sek. skal en fællesalarm lyde hos alle afdelingens læger.  Alarmgrænseværdierne og tidsgrænser skal kunne indstilles individuelt for hver patient.  En prioriteringsrækkefølge af læger skal kunne tilknyttes en patient. En patient skal have tilknyttet minimum en første og en anden prioritet.  En læge skal kunne afmelde sig alarmhåndtering, så alarmer videresendes til den næste læge i prioriteringsrækkefølgen. Fællesalarmer skal lyde under alle omstændigheder.

Indhold i præsentationen  Systemoversigt  Krav til systemet  Klassediagram  Udvalgt VDM++ eksempel 6 √ √

Klassediagram (1) 7 World/Environment Eksisterende system Alarmsystemet

Klassediagram (2) 8 Det eksisterende overvågningssystem

Klassediagram (3) 9

Klassediagram (4) 10 World/Environment

Klassediagram (5) 11

Klassediagram (6) 12 Alarmsystem

Indhold i præsentationen  Systemoversigt  Krav til systemet  Klassediagram  Udvalgt VDM++ eksempel 13 √ √ √

Udvalgt VDM++ eksempel 14 class Hospital types public CPRNo = int; public String = seq of char; instance variables public static doctors : set of Doctor; public static patientAlarmInfoMap : map CPRNo to PatientAlarmInfo; public static patientMap : map CPRNo to Patient; private vitalSignSurveillanceSystem : VitalSignSurveillanceSystem; public static alarmSystem : AlarmSystem; inv dom patientAlarmInfoMap = dom patientMap; operations public Hospital : () ==> Hospital Hospital() == is not yet specified; end Hospital Hospitalsklassen

Indhold i præsentationen  Systemoversigt  Krav til systemet  Klassediagram  Udvalgt VDM++ eksempel  Udvalgt funktionalitet fra modellen  Test af modellen 15 √ √ √ √

Funktionalitet fra modellen (1)

Funktionalitet fra modellen (2) 17 AlarmSystem – checkForAlarm() public checkForAlarm : Hospital`CPRNo ==> () checkForAlarm(PatientCPRNo) == ( let vitalSigns = Hospital`patientMap(PatientCPRNo).getCurrentVitalSigns(), thresholds = Hospital`patientAlarmInfoMap(PatientCPRNo).getThresholds() in let criticalVitalSigns = {mk_AlarmVitalSign(v.type, v.val, t.val) | v in set vitalSigns, t in set thresholds & v.type = t.type and v.val > t.val} in ( if card criticalVitalSigns > 0 and (not exists a in set alarms & a.getPatientcprno() = PatientCPRNo) then ( dcl alarm :Alarm := new Alarm(PatientCPRNo, criticalVitalSigns); alarms := alarms union {alarm}; let doctor = alarm.findNextDoctor() in if doctor <> nil then doctor.alarmDoctor(alarm) else alarmAllDoctors(alarm); ) ) ) pre {v.type | v in set Hospital`patientMap(PatientCPRNo).getCurrentVitalSigns()} = {t.type | t in set Hospital`patientAlarmInfoMap(PatientCPRNo).getThresholds()};

Funktionalitet fra modellen (3) 18 AlarmSystem – step() public step : () ==> () step() == ( for all a in set {al | al in set alarms & not al.isFinished()} do if a.checkForDoctorTimeOut() then let doctor = a.findNextDoctor() in if doctor <> nil then ( a.setStartTime(World`timeNotionRef.getTime()); doctor.alarmDoctor(a); ) else alarmAllDoctors(a); );

Funktionalitet fra modellen (4) 19 Alarm – checkForDoctorTimeOut() public checkForDoctorTimeOut : () ==> bool checkForDoctorTimeOut() == ( if not accepted then return World`timeNotionRef.getTime() > Hospital`alarmSystem.doctorAlarmTimeOut + startTime else return false; );

Funktionalitet fra modellen (5) 20 Alarm – findNextDoctor() public findNextDoctor : () ==> [Doctor] findNextDoctor() == ( doctorPriority := doctorPriority + 1; if doctorPriority > len (Hospital`patientAlarmInfoMap(patientcprno).getResponsibleDoctors()) then return nil else let respDoctors = Hospital`patientAlarmInfoMap(patientcprno).getResponsibleDoctors()in ( if respDoctors(doctorPriority).getAvailability() = false then findNextDoctor() else return respDoctors(doctorPriority); ) );

Indhold i præsentationen  Systemoversigt  Krav til systemet  Klassediagram  Udvalgt VDM++ eksempel  Udvalgt funktionalitet fra modellen  Test af modellen 21 √ √ √ √ √

Test af modellen (1) 22 Test – instance variables og print() class Test instance variables io : IO := new IO(); public hospital : Hospital := new Hospital(); d1 : Doctor := new Doctor("Soren", 1); d2 : Doctor := new Doctor("Jones", 2); p1 : Patient := new Patient("Jonas Hove", {, }); v1 : Patient`VitalSign := mk_Patient`VitalSign(, 130); v2 : Patient`VitalSign := mk_Patient`VitalSign(, 39); pai1 : PatientAlarmInfo := new PatientAlarmInfo([d1, d2], {v1, v2}); operations public static print : seq of char ==> () print(str) == def - = io.writeval[seq of char](str) in skip;

Test af modellen (2) 23 Test – Constructor public Test : () ==> Test Test() == ( hospital.init({d1, d2},{ |-> pai1}, { |-> p1}); p1.setCurrentVitalSign(mk_Patient`VitalSign(, 140)); hospital.vitalSignSurveillanceSystem.step(); print("Number of alarms: " ^ [Hospital`alarmSystem.numOfAlarms()]); Hospital`alarmSystem.step(); World‘timeNotionRef.stepTime(); ); end Test

Indhold i præsentationen  Systemoversigt  Krav til systemet  Klassediagram  Udvalgt VDM++ eksempel  Udvalgt funktionalitet fra modellen  Test af modellen 24 √ √ √ √ √ √

25 class Environment … operations public Environment : String * String ==> Environment Environment(patientFile, doctorFile) == ( def mk_ (-,input) = io.freadval[seq of Patientline](patientFile) in inlinesPatient := input; def mk_ (-,input) = io.freadval[seq of Doctorline](doctorFile) in inlinesDoctor := input; hospital := new Hospital(); ); public run : () ==> () run () == ( while not (isFinished() and Hospital`alarmSystem.isFinished()) do ( createSignal(); hospital.vitalSignSurveillanceSystem.step(); Hospital`alarmSystem.step(); World‘timeNotionRef.stepTime(); ); showResult() ); … end Environment Environment 1/2

26 class Environment … private createSignal: () ==> () createSignal () == ( dcl curtime : nat := World‘timeNotionRef.getTime(); if len inlinesDoctor > 0 then ( def mk_(doctorID, patientCPRNo, accept, deactivate, runtime) = hd inlinesDoctor in if runtime <= curtime then ( if accept = true then doctorIO.acceptAlarm(doctorID, patientCPRNo); if deactivate = true then doctorIO.deactivateAlarm(doctorID, patientCPRNo); inlinesDoctor := tl inlinesDoctor; ) ); if len inlinesPatient > 0 then ( def mk_(patientCPRNo, vitalSigns, runtime) = hd inlinesPatient in if runtime <= curtime then ( patientIO.setVitalSigns(vitalSigns, patientCPRNo); inlinesPatient := tl inlinesPatient; ) ); … end Environment Environment 2/2

27 class Hospital … operations public init : set of Doctor * map CPRNo to PatientAlarmInfo * map CPRNo to Patient ==> () init(docs, paiMap, pMap) == ( doctors := docs; atomic ( patientAlarmInfoMap := paiMap; patientMap := pMap; ); vitalSignSurveillanceSystem.init(pMap); ); public Hospital : () ==> Hospital Hospital() == vitalSignSurveillanceSystem := new VitalSignSurveillanceSystem(); … end Hospital Hospital

28 class Doctor … operations public getID : () ==> int getID() == return doctorID; public alarmDoctor : Alarm ==> () alarmDoctor(alarm) == World`env.handleEvent(doctorName, alarm.getPatientcprno()); public acceptAlarm : Hospital`CPRNo ==> () acceptAlarm(cprno) == available := not (Hospital`alarmSystem.acceptAlarm(cprno)); public deactivateAlarm : Hospital`CPRNo ==> () deactivateAlarm(cprno) == ( Hospital`alarmSystem.deactivateAlarm(cprno); available := true; ); end Doctor Doctor

29 class VitalSignSurveillanceSystem instance variables public patientMap : map Hospital`CPRNo to Patient; inv dom patientMap = dom Hospital`patientMap; operations public step : () ==> () step() == monitorPatients(); public monitorPatients : () ==> () monitorPatients() == for all cprno in set dom patientMap do Hospital`alarmSystem.checkForAlarm(cprno); public init : map Hospital`CPRNo to Patient ==> () init(patMap) == patientMap := patMap; end VitalSignSurveillanceSystem VitalSignSurveillanceSystem