Sistem Pemantauan Pasien COVID-19 Direnjani LoRa untuk Pelayanan Kesehatan Jarak Jauh
Komponen dan Perlengkapan
| The Things Network The Things Uno |
1 |
| The Things Network The Things Gateway |
1 |
| Maxim Integrated MAXREFDES117# Heart-Rate and Pulse-Oximetry Monitor Development Platform |
1 |
| Seeed Grove - Sensor Suhu |
1 |
| Kabel Jumper (umum) |
1 |
| DFRobot Gravity: Tombol Push Digital (Kuning) |
1 |
| Seeed Grove - Sensor Getaran (SW-420) |
1 |
| Buzzer |
1 |
| LED (umum) |
1 |
| Seeed Grove - Sensor Suhu, Kelembaban, Tekanan dan Gas (BME680) |
1 |
Alat dan Mesin yang Diperlukan
| Pistol Lem (umum) |
| Pakuin (umum) |
Aplikasi dan Layanan Online
| Android Studio |
| Arduino Web Editor |
| Amazon Web Services AWS IoT |
| Ekstensi Microsoft Visual Studio Code untuk Arduino |
Tentang Proyek Ini
Ringkasan
Kami mengusulkan sistem pemantauan pasien pintar untuk memantau kondisi kesehatan pasien secara otomatis melalui sensor berbasis jaringan terhubung. Sistem ini dirancang khusus untuk pasien Covid-19. Beberapa sensor digunakan untuk mengumpulkan perilaku biologis pasien. Informasi biologis yang bermakna kemudian diteruskan ke cloud IoT. Sistem ini lebih cerdas karena mampu mendeteksi kondisi kritis pasien melalui pemrosesan data sensor dan segera memberikan pemberitahuan push kepada dokter/perawat serta petugas rumah sakit. Dokter dan perawat mendapat manfaat dari sistem ini dengan memantau pasien masing-masing secara jarak jauh tanpa perlu berkunjung secara langsung. Keluarga pasien juga dapat mendapat manfaat dari sistem ini dengan akses terbatas.
Deskripsi
Kami menggunakan Things UNO (papan pengembangan LoRa) sebagai pengontrol utama sistem pemantauan ini. Papan Things UNO mengumpulkan informasi tentang parameter kesehatan pasien dari berbagai sensor (dijelaskan dalam bagian daftar komponen hardware). Things UNO juga bertanggung jawab untuk mentransmisikan data ke Gateway LoRa (The Things Gateway). Gateway LoRa terhubung dengan cloud AWS. Platform cloud AWS IoT digunakan sebagai cloud IoT untuk sistem ini.
Daftar Komponen Hardware
Kondisi darurat pasien ditentukan melalui persamaan matematika sederhana Equation-I, di mana notasi matematika rinci tentang tingkat ambang batas dijelaskan dalam Tabel-1.
Kami telah mengembangkan aplikasi mobile untuk memvisualisasikan data sensor. Berbagai grafik dan pengukuran digunakan untuk menampilkan data sensor secara real-time, yang berisi parameter kesehatan saat ini (kondisi kesehatan saat ini) pasien. Melalui aplikasi ini, dokter atau perawat dapat memantau pasien mereka secara jarak jauh tanpa perlu berkunjung ke unit ICU. Karena sifat kecerdasannya, sistem mengirim pemberitahuan push kepada dokter atau perawat yang bersangkutan tentang situasi darurat pasien, di mana Equation-I menentukan kondisi darurat pasien dengan memproses data sensor. Petugas rumah sakit (orang yang bertanggung jawab di ICU) juga secara konsisten memantau lebih dari satu pasien sekaligus melalui aplikasi desktop berbasis cloud kami (ditunjukkan dalam Gambar), yang meningkatkan efisiensi unit ICU. Semua aplikasi terhubung ke cloud IoT dan memvisualisasikan data real-time menggunakan berbagai jenis grafik seperti gauge, sparkline, Teks, dan lain-lain.
Aplikasi mobile sistem pemantauan pasien untuk dokter dan perawat. Perangkat secara terus-menerus streaming data sensor ke cloud IoT dan aplikasi langsung terhubung ke cloud dan memvisualisasikan secara real-time menggunakan berbagai jenis grafik.
Kesimpulan
Sistem yang kami usulkan dalam proyek ini memungkinkan dokter atau perawat, serta petugas rumah sakit yang bertanggung jawab, untuk memantau pasien di unit ICU secara real-time, yang meningkatkan efisiensi dan kualitas layanan. Ada peluang besar untuk memodifikasi sistem ini menjadi perangkat wearable, yang memungkinkan kami memantau orang tua atau bayi secara jarak jauh dari mana saja.
Referensi
1. Uddin, M. S., Alam, J. B., & Banu, S. (2017, September). Real time patient monitoring system based on internet of things. In 2017 4th International Conference on Advances in Electrical Engineering (ICAEE) (pp. 516-521). IEEE. DOI: 10.1109/ICAEE.2017.8255410
Kode
sourceArduino
#include <TheThingsNetwork.h> #include <SPI.h> #include <MAX30100_PulseOximeter.h> #include <Adafruit_Sensor.h> #include <Adafruit_BME280.h> // Set your AppEUI and AppKey const char *appEui = "0000000000000000"; const char *appKey = "00000000000000000000000000000000"; #define loraSerial Serial1 #define debugSerial Serial // Replace REPLACE_ME with TTN_FP_EU868 or TTN_FP_US915 #define freqPlan REPLACE_ME //VARIABLE TO HOLD THE SENSORS DATA int bpm; int spo2; float temp; //the sea level presure in your region (****) Adafruit_BME280 bme; // BME280 Sensnor declaration unsigned long currentMillis; //hold the current time //pulse oximeter time period (measurment time period) #define REPORTING_PERIOD_MS 1000 PulseOximeter pox; uint32_t tsLastReport = 0; // Callback (registered below) fired when a pulse is detected void onBeatDetected() { // Serial.println("Beat!"); } void measured_pulse(){ pox.update(); if (millis() - tsLastReport > REPORTING_PERIOD_MS) { bpm=pox.getHeartRate(); tsLastReport = millis(); } } TheThingsNetwork ttn(loraSerial, debugSerial, freqPlan); void setup() { loraSerial.begin(57600); debugSerial.begin(9600); // Wait a maximum of 10s for Serial Monitor while (!debugSerial && millis() < 10000) ; debugSerial.println("-- STATUS"); ttn.showStatus(); debugSerial.println("-- JOIN"); ttn.join(appEui, appKey); Serial.println(F("BME280 test")); Serial.println("Initializing MAX30100"); pox.begin(); pox.setOnBeatDetectedCallback(onBeatDetected); bool status; status = bme.begin(); if (!status) { Serial.println("Could not find a valid BME280 sensor, check wiring!"); while (1); } pinMode(7, OUTPUT); pinMode(A0,INPUT); pinMode(8,INPUT); pinMode(6,INPUT); } void loop() { debugSerial.println("-- LOOP"); h_rate = analogRead(A0); button = digitalRead(8); temperature = pox.getTemperature(); spo2 = pox.getSpO2(); bpm = bpm; humidity = bme.readHumidity(); movement = digitalRead(6); byte payload[6]; payload[0] = highByte(bpm); payload[1] = lowByte(temperature); payload[2] = highByte(humidity); payload[3] = lowByte(movement); payload[4] = lowByte(spo2); payload[5] = lowByte(button); payload[6] = lowByte(h_rate); debugSerial.print("Temperature: "); debugSerial.println(temperature); debugSerial.print("Humidity: "); debugSerial.println(humidity); debugSerial.print("BPM: "); debugSerial.println(bpm); debugSerial.print("SPO2: "); debugSerial.println(spo2); debugSerial.print("H_rate: "); debugSerial.println(h_rate); debugSerial.print("Button: "); debugSerial.println(button); debugSerial.print("Movement: "); debugSerial.println(movement); ttn.sendBytes(payload, sizeof(payload)); delay(20000); }
Skematik