Exemplo n.º 1
0
        public void displayNormalBatterystatus()
        {
            Display.lcdClear();
            Display.lcdNoBlink();
            string a = Convert.ToString(Bstatus);

            string[] NormalB = new string[3] {
                "Batteristatus:", a + "%", "Tilbage"
            };
            byte c = 0;

            foreach (var item in NormalB) // Hovedmenu bliver indlæst
            {
                Display.lcdGotoXY(0, c);
                Display.lcdPrint(NormalB[c]);
                c++;
            }
            Display.lcdBlink();

            while (true)
            {
                if (Encoder.isPressed())
                {
                    Program.mainMenu();
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Metode til indtastning af CPR-nummer. Gemmer indtastede værdier som værdier i en liste,
        /// og konverterer afslutningsvis listen til én samlet string.
        /// </summary>
        public void GetSocSecNumber()
        {
            byte xValueCPRLine         = 0;                 //variabel
            byte xStartValueNumberLine = Convert.ToByte(0); //konstant
            byte countingIsPressed     = 0;

            lcd.lcdClear();
            twist.setCount(0);
            lcd.lcdGotoXY(0, 0);
            lcd.lcdPrint("Indtast CPR nummer");
            WritenumberLine();                       // Kører denne metode for at få vist NumberLine

            lcd.lcdGotoXY(xStartValueNumberLine, 1); //starter samme sted som numberline

            while (countingIsPressed < 11)
            {
                while (twist.isPressed() == false)
                {
                    if (twist.getCount() < 0) //Limit-metode - hvis cursoren går forbi 0-tallet, hopper den hen på 9
                    {
                        lcd.lcdGotoXY(9, 1);
                        twist.setCount(9);
                    }

                    else if (twist.getCount() > 9) //Limit-metode - hvis cursoren går forbi 9-tallet, hopper den hen på 0
                    {
                        lcd.lcdGotoXY(0, 1);
                        twist.setCount(0);
                    }

                    else if (twist.getCount() >= 0 || twist.getCount() <= 9)
                    {
                        byte getCount = Convert.ToByte(twist.getCount() + xStartValueNumberLine);
                        lcd.lcdGotoXY(getCount, 1);
                    }
                }
                Thread.Sleep(500);
                cprNumbersL.Add(twist.getCount());         //Tilføj til en liste som vi senere kan videresende
                lcd.lcdGotoXY(xValueCPRLine, 2);           //Bruger ser cpr nummer på denne linje
                lcd.lcdPrint(twist.getCount().ToString()); //udskriver på pladsen til cpr nummer
                xValueCPRLine++;
                twist.setCount(twist.getCount());          // Her bliver cursoren stående på positionen på numberline

                //Sætter cursoren tilbage der hvor den sluttede
                byte getCountEnd = Convert.ToByte(twist.getCount() + xStartValueNumberLine);
                lcd.lcdGotoXY(getCountEnd, 1);
                countingIsPressed++;

                if (countingIsPressed == 6) //Der skal være en bindestreg efter tal nr 6
                {
                    lcd.lcdGotoXY((xValueCPRLine++), 2);
                    lcd.lcdPrint("-");
                    countingIsPressed++;
                }
            }
            SocSecNumberAsString = string.Join("", cprNumbersL.ToArray());
        }
Exemplo n.º 3
0
        //RPI batteristatus
        //RPI rpi = new RPI();
        //Key knap = new Key(rpi);
        //Led LD1 = new Led()
        //Led LD2 = new Led()
        //Led LD3 = new Led()
        //Led LD4 = new Led()
        //Led LD5 = new Led()

        #endregion

        //THE MAIN PROGRAM
        static void Main()
        {
            Initialisere();

            while (1 == 1)
            {
                //if (Knap.ispressed == true)
                //{
                Batteristatus();
                //}

                History(Patient.CPR);
                Console.WriteLine("Start maaling");
                StartMaaling();

                if (turn == endcoder.getCount())
                {
                }
                else
                {
                    turn = endcoder.getCount();
                    IsMoved();
                }
                if (endcoder.isPressed() == true)
                {
                    IsPressed();
                }
            }
        }
Exemplo n.º 4
0
        public void registrerPatientMenu()
        {
            byte b = 0;

            Display.lcdClear();
            Display.lcdPrint("Register Patient:");
            Display.lcdGotoXY(0, 1);
            Display.lcdPrint("Scan sygesikring");
            Display.lcdGotoXY(0, 2);
            Display.lcdPrint("Indtast CPR-nummer");
            Display.lcdGotoXY(0, 3);
            Display.lcdPrint("Default Patient");
            Display.lcdHome();

            //Her skal indtastning af CPR_nummer ske
            CPRNumber1 = 1234567890;

            int a = Encoder.getDiff(true);

            if (a < 0)
            {
                a = -a;
            }

            for (int i = a; i >= 0; i = i - 4)
            {
                if (i < 4)
                {
                    b = Convert.ToByte(i);
                    Display.lcdGotoXY(0, b);
                    Display.lcdBlink();
                }
            }

            if (Encoder.isPressed() == true)
            {
                switch (b)
                {
                case 1:
                    RPcontrol.cardScan();
                    break;

                case 2:
                    //Her skal indtastning af CPR_nummer ske
                    CPRNumber1 = 1234567890;
                    RPcontrol.registrerPatient(CPRNumber1);
                    break;

                case 3:
                    RPcontrol.defaultPatient();
                    break;
                }

                //skal der kunne komme tilbage til hovedmenu?
                Program.mainMenu(); //Der behøver ikke oprettes et objekt, når det er static class.
            }
        }
Exemplo n.º 5
0
        public static void mainMenu()
        {
            byte b = 0;

            Display.lcdClear();
            Display.lcdPrint("HovedMenu:");
            Display.lcdBlink();
            Display.lcdGotoXY(0, 1);
            Display.lcdPrint("Registrer Patient");
            Display.lcdGotoXY(0, 2);
            Display.lcdPrint("Start Maaling");
            Display.lcdGotoXY(0, 3);
            Display.lcdPrint("Vis batteristatus");
            Display.lcdGotoXY(0, 0);
            while (true)
            {
                //måske clear b og lave alle om til d igen, så det fungere ens. test
                int a = Encoder.getDiff(true);
                if (a < 0)
                {
                    a = -a;
                }

                for (int i = a; i >= 0; i = i - 4)
                {
                    if (i < 4)
                    {
                        b = Convert.ToByte(i);
                        Display.lcdGotoXY(0, b);
                        Display.lcdBlink();
                    }
                }

                if (Encoder.isPressed() == true)
                {
                    switch (b)
                    {
                    case 1:
                        registrerPatientUI.registrerPatientMenu();
                        break;

                    case 2:
                        measureECGUI.startMaaling();
                        break;

                    case 3:
                        visBatteristatusUI.visBatteristatus();
                        break;
                    }
                }
            }
        }
Exemplo n.º 6
0
        public void startMaaling()
        {
            byte c = 0;

            Display.lcdClear();
            Display.lcdNoBlink();
            Display.lcdNoCursor();
            Display.lcdPrint("Maalingen er i");
            Display.lcdGotoXY(0, 1);
            Display.lcdPrint("gang...");
            System.Threading.Thread.Sleep(1000); //skal være 10sek
            Display.lcdHome();
            blinkBlack();
            Display.lcdPrint("Afventer analyse");
            Display.lcdGotoXY(0, 1);
            Display.lcdPrint("Vaelg for at forsætte:");
            Display.lcdGotoXY(0, 2);
            Display.lcdPrint("Ingen STEMI");
            Display.lcdGotoXY(0, 3);
            Display.lcdPrint("Mulig STEMI");
            Display.lcdBlink();
            while (true)
            {
                int a = Encoder.getDiff(true);
                for (int i = a; i >= 0; i = i - 2)
                {
                    if (i < 2)
                    {
                        c = Convert.ToByte(i + 2);
                        Display.lcdGotoXY(0, c);
                    }
                }
                if (Encoder.isPressed())
                {
                    if (c == 2)
                    {
                        Display.lcdClear();
                        Display.lcdPrint("Ingen STEMI fundet,");
                        Display.lcdGotoXY(0, 1);
                        Display.lcdPrint("afvent svar fra");
                        Display.lcdGotoXY(0, 2);
                        Display.lcdPrint("sygehus");
                        if (Encoder.isPressed())
                        {
                            break;
                        }
                    }
                    if (c == 3)
                    {
                        Display.lcdClear();
                        blinkYellow();
                        if (Encoder.isPressed())
                        {
                            break;
                        }
                    }
                    else
                    {
                        break;
                    }
                }
            }
            //Denne metode er lang fra done.
            //Er stoppet efter mulig STEMI
        }
Exemplo n.º 7
0
        public void startMaaling(string CPRNumber) //Modtager CPRN fra hovedmenu, når UC1 er gennemført
        {
            byte c        = 0;
            byte d        = 0;
            byte e        = 0;
            bool udbryder = false;
            bool RPiAnalyse;
            int  doctorAnalyse = 2; // så der ikke er svar før lægen har indrapporteret det

            Display.lcdClear();
            string[] ECGMenu = new string[3] {
                "Meassure ECG", "Start Maaling", "Tilbage"
            };
            foreach (var item in ECGMenu) // ECGMenu bliver indlæst
            {
                Display.lcdGotoXY(0, d);
                Display.lcdPrint(ECGMenu[d]);
                d++;
            }
            while (true)
            {
                int a = Encoder.getDiff(true);
                if (a < 0)
                {
                    a = -a;
                }
                for (int i = a; i >= 0; i = i - 2)
                {
                    if (i < 2)
                    {
                        c = Convert.ToByte(i + 1);
                        Display.lcdGotoXY(0, c);
                        Display.lcdBlink();
                    }
                }
                if (Encoder.isPressed())
                {
                    switch (c)
                    {
                    case 1:     //starter hele maalingen. Ikke muligt at vende retur efter
                    {
                        informECGStart();
                        startECG();
                        informECGEnd();
                        udbryder = true;
                        break;
                    }

                    case 2:     // Vender retur ved fortrydelse
                        Program.mainMenu();
                        break;
                    }
                }
                if (udbryder) // sikrer at vi kommer helt ud, så ECG kan analyseres.
                {
                    break;
                }
            }

            RPiAnalyse = ECGControl.analyzeECG(ECGMaalinger); // Systemet analyserer ECG, og giver informationen til DTO-objektet
            if (RPiAnalyse == true)
            {
                informPossibleSTEMI();
                eCGControl.GetLokalinfo()._STEMI_suspected = true;
            }
            else
            {
                informPossibleNoSTEMI();
                eCGControl.GetLokalinfo()._STEMI_suspected = false;
            }
            //Nu skal ECG oploades i databasen
            maalingID = ECGControl.convertToBlobAndUpload(eCGControl.GetLokalinfo()); // metoden går igennem logiklaget, så reglerne overholdes.
            //Nu er målingen uploaded og vi afventer nu svar fra hospitalet om hvad diagnosen er
            Display.lcdClear();
            string[] ECGtjekLaegeSvar = new string[2] {
                "Maaling foretaget", "Tjek Laege svar"
            };
            foreach (var item in ECGtjekLaegeSvar)
            {
                Display.lcdGotoXY(0, e);
                Display.lcdPrint(ECGtjekLaegeSvar[e]);
                e++;
            }
            while (true)
            {
                if (Encoder.isPressed()) //Ved tryk forsøger systemet at hente svaret fra lægen i den loakle database.
                {
                    doctorAnalyse = ECGControl.confirmSTEMI(Convert.ToString(maalingID));
                }
                if (doctorAnalyse == 0 || doctorAnalyse == 1)
                {
                    break;
                }

                //afventer svar
            }

            switch (doctorAnalyse)
            {
            case 1:
                alarmSTEMI();
                break;

            case 0:
                noSTEMI();
                break;
            }
            //Herefter skal lige tænkes over, hvor den så skal hen.
            System.Threading.Thread.Sleep(5000);
            Program.mainMenu();
        }
Exemplo n.º 8
0
        public static void mainMenu()
        {
            byte b = 0;

            string[] hovedmenu = new string[4] {
                "HovedMenu:", "Registrer Patient", "Start Maaling", "Vis batteristatus"
            };
            Display.lcdClear();
            Display.lcdBlink();
            byte c = 0;

            Display.lcdSetBackLight(0, 255, 0); // Vi ønsker at skærmen er grøn

            foreach (var item in hovedmenu)     // Hovedmenu bliver indlæst
            {
                Display.lcdGotoXY(0, c);
                Display.lcdPrint(hovedmenu[c]);
                c++;
            }
            Display.lcdHome();                  // curserblink sættes til 0,0
            System.Threading.Thread.Sleep(500); //Forebygger antiprell ved tryk fra andre menuer

            while (true)                        //Kører indtil en menu vælges
            {
                int a = Encoder.getDiff(true);
                if (a < 0)
                {
                    a = -a;                        // Hvis den er rullet negativt spejles tallet - det sikrer, at vores programs ikke crasher
                }
                for (int i = a; i >= 0; i = i - 4) //sikrer hele tiden, at man kun ruller mellem de mulige menuer
                {
                    if (i < 4)
                    {
                        b = Convert.ToByte(i);
                        Display.lcdGotoXY(0, b); // placere curserblink det ønskede sted
                        Display.lcdBlink();
                    }
                }

                if (Encoder.isPressed() == true) // Sender brugeren til den valgte menu
                {
                    switch (b)                   // de 4 menuer
                    {
                    case 0:
                        Display.lcdClear();
                        Display.lcdSetBackLight(0, 0, 0);
                        Display.lcdNoBlink();
                        //Display.lcdNoDisplay();
                        Environment.Exit(0);    // her er det muligt at slukke systemet
                        break;

                    case 1:
                        registrerPatientUI.registrerPatientMenu();     // vælger registrer patient
                        break;

                    case 2:
                        if (CPRNumber.Length == 10)
                        {
                            measureECGUI.startMaaling(CPRNumber);   //Der skal være givet en værdi til CPRNumber fra UC1
                        }
                        else
                        {
                            Display.lcdClear();
                            Display.lcdHome();
                            Display.lcdPrint("Ugyldigt CPR");
                            System.Threading.Thread.Sleep(3000);
                            mainMenu();   // Der vendes tilbage til hovedmenu, hvis CPR nummer ikke godkendes.
                        }
                        break;

                    case 3:
                        visBatteristatusUI.visBatteristatus();     // batteristatus metode
                        break;
                    }
                }
            }
        }
        public void registrerPatientMenu()
        {
            byte m = 0;

            Display.lcdClear();
            string[] rpMenu = new string[4] {
                "Registrer Patient:", "Scan sygesikring", "Indtast CPR-nummer", "Default Patient"
            };
            byte c = 0;

            foreach (var item in rpMenu) // rpMenu bliver indlæst
            {
                if (c < 4)
                {
                    Display.lcdGotoXY(0, c);
                    Display.lcdPrint(rpMenu[c]);
                    c++;
                }
            }

            Display.lcdHome(); // curserblink sættes til 0,0
            while (true)
            {
                int a = Encoder.getDiff(true);
                if (a < 0)
                {
                    a = -a;                        // modvirker crash ved negativ værdi fra getDiff
                }
                for (int i = a; i >= 0; i = i - 4) // samme metode som main
                {
                    if (i < 4)
                    {
                        m = Convert.ToByte(i);
                        Display.lcdGotoXY(0, m);
                    }
                }

                if (Encoder.isPressed() == true)
                {
                    switch (m) // De fire valgmuligheder fra Register patient
                    {
                    case 0:
                    {
                        Program.mainMenu();
                        break;
                    }

                    case 1:
                    {
                        patientData       = RPcontrol.cardScan("0101010101"); // Det er kun patient, der har sygesikrin med;)
                        Program.CPRNumber = "0101010101";                     // Ellers skulle en scanner få CPR fra sygesikring.
                        displayValidatedPatient(patientData);
                        break;
                    }

                    case 2:
                    {
                        //Her skal indtastning af CPR_nummer ske
                        Program.CPRNumber = indtatstCPR();
                        patientData       = RPcontrol.registrerPatient(Program.CPRNumber);
                        displayValidatedPatient(patientData);
                        break;
                    }

                    case 3:
                    {
                        patientData       = RPcontrol.defaultPatient("9999990000");
                        Program.CPRNumber = "9999990000";
                        displayValidatedPatient(patientData);
                        break;
                    }
                    }
                }
            }
        }