112
Universitatea Politehnica Bucure¸ sti Facultatea de Automatic˘ si Calculatoare LUCRARE DE LICENT ¸ ˘ A Proiectarea unui sistem avansat pentru cazurile de urgent ¸˘ a medical˘ a COORDONATOR S ¸TIINT ¸ IFIC: Prof. Dr. Ing. Nicolae Constantin ABSOLVENT: an˘ ail˘ a Marius Octavian Bucure¸ sti - 2010 -

telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Embed Size (px)

DESCRIPTION

Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Citation preview

Page 1: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Universitatea Politehnica BucurestiFacultatea de Automatica si Calculatoare

LUCRARE DE LICENTA

Proiectarea unui sistem avansat pentru cazurilede urgenta medicala

COORDONATOR STIINTIFIC:Prof. Dr. Ing. Nicolae Constantin

ABSOLVENT:Manaila Marius Octavian

Bucuresti

- 2010 -

Page 2: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala
Page 3: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Cuprins

1 Telemedicina 11.1 Definirea conceptului de Telemedicina . . . . . . . . . . . . . 21.2 Clasificare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Continut si caracteristici . . . . . . . . . . . . . . . . . . . . . 51.4 Bariere ın telemedicina . . . . . . . . . . . . . . . . . . . . . . 51.5 Domenii de dezvoltarea a proiectelor de

telemedicina . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.6 Etapele dezvoltarii unui proiect de

telemedicina . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.7 Evaluare si deontologie ın telemedicina . . . . . . . . . . . . . 6

2 Achizitia si prelucrarea datelor biomedicale 72.1 Monitorizarea si ınregitrarea testelor medicale . . . . . . . . . 82.2 Achizitie semnal . . . . . . . . . . . . . . . . . . . . . . . . . 102.3 Algoritmi de procesare a semnalelor . . . . . . . . . . . . . . 12

2.3.1 Algoritmi de detectie bazati pe amplitudine si primaderivata . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.4 Compresia semnalelor biomedicale . . . . . . . . . . . . . . . 16

3 Transmisia datelor 223.1 Prezentarea generala a sistemului de

telecomunicatii . . . . . . . . . . . . . . . . . . . . . . . . . . 223.1.1 Retele PSTN . . . . . . . . . . . . . . . . . . . . . . . 243.1.2 Retele ISDN . . . . . . . . . . . . . . . . . . . . . . . 243.1.3 Retele TCP/IP . . . . . . . . . . . . . . . . . . . . . . 253.1.4 Retele prin fibra optica . . . . . . . . . . . . . . . . . 253.1.5 Retele xDSL . . . . . . . . . . . . . . . . . . . . . . . 26

3.2 Utilizarea retelelor fara fir . . . . . . . . . . . . . . . . . . . . 263.2.1 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . 273.2.2 ZigBee . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.2.3 GSM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.2.4 UMTS . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.2.5 WLAN . . . . . . . . . . . . . . . . . . . . . . . . . . 32

i

Page 4: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

3.2.6 Comunicatii prin satelit . . . . . . . . . . . . . . . . . 333.3 Standardul de comunicatie si imagistica medicala . . . . . . . 343.4 Arhitectura retelei unitatilor sanitare fixe . . . . . . . . . . . 343.5 Arhitectura unitate sanitara fixa - unitate sani-tara mobila . 35

4 Securizarea datelor ın telemedicina 384.1 Norme de securitate ın telemedicina . . . . . . . . . . . . . . 394.2 Modelarea unei arhitecturi de securitate . . . . . . . . . . . . 414.3 Tehnici de securizare a sistemului medical . . . . . . . . . . . 46

5 Sistem de telemonitorizare 505.1 Implementarea software a sistemului . . . . . . . . . . . . . . 52

5.1.1 Modul server . . . . . . . . . . . . . . . . . . . . . . . 525.1.2 Modul client . . . . . . . . . . . . . . . . . . . . . . . 53

5.2 Modul Chat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545.3 Modul video . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555.4 Modul grafice . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

6 Concluzii 60

Bibliografie 62

Anexe 64

ii

Page 5: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Capitolul 1

Telemedicina

Una dintre cele mai mari provocari cu care se confrunta omenirea ın secolul21 este aceea de a face asistenta medicala de ınalta calitate care sa fie disponi-bila tuturor. O asemenea viziune a fost exprimata de catre OrganizatiaMondiala a Sanatatii (WHO) si a fost adoptata ca o strategie a secolului21.[1]

In mod traditional, cea mai dificila parte ın realizarea unui acces echitabilla asistenta medicala a fost faptul ca prestatorul si destinatarul trebuie safie prezenti ın acelasi loc si ın acela si timp. Recentele progrese, care auavut loc ın domeniul informaticii si a comunicarii, au creat oportunitati faraprecedent pentru depasirea acestei probleme, prin cresterea numarului demodalitati ın care asistenta medicala poate fi asigurata. Aceasta se aplicaatat tarilor ın curs de dezvoltare cu economii slabe sau instabile cat si ıntarile industrializate. Posibilitatile de utilizare a noilor tehnologii pot ducela o ımbunatatire a furnizarii de sanatate (acest domeniu poarta numele detelemedicina ), iar acest lucru ıncepe sa fie recunoscut tot mai mult. WHOa declarat ca va recomanda tuturor membrilor sai sa ıncerce sa adopte, ıncel mai scurt timp, o astfel de strategie:

” Integrati utilizarea telemedicinei ın politica generala. Aceastava fi strategia pentru atingerea eficientei maxime in domeniulsanatatii pentru toata populatia, ındeplinind astfel o viziune aunei lumi ın care avantajele stiintei, tehnologiei si dezvoltariisanatatii publice sunt facute echitabil pentru a fi disponibile tu-turor oamenilor de pretutindeni.”[2]

Un astfel de angajament pentru a ımbunatati serviciul de sanatate, prinutilizarea tehnologiilor informatiei si telecomunicatiilor,este punctat si deComisia Europeana. Comisia Europeana participa la multe proiecte pentrua ıncuraja o dezvoltare cat mai rapida si mai eficienta a telemedicinei. Da-torita comunicatelor de presa realizate de cele doua organizatii, la nivel na-tional si local, a inceput sa apara interesul in dezvoltarea tehnologiilor exis-

1

Page 6: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

tente pentru un serviciu de sanatate mai eficient. De exemplu, ın Marea Bri-tanie, tehnologia informatiei, inclusiv telemedicina se afla ın centrul strate-giei guvernului de a moderniza si de a ımbunatati Serviciul Sanitar National(NHS). Telemedicina, zona ın care medicina si tehnologia informatiei sitelecomunicatiei se ıntrepatrund este parte din aceasta revolutie care arputea avea cel mai mare impact asupra serviciului de sanatate.

1.1 Definirea conceptului de Telemedicina

Definita larg, telemedicina este transferul pe cale electronica a datelor med-icale, imagini de ınalta definitie, sunete, transmisii video pe viu, ınregistrarireferitoare la pacient, dintr-un loc ıntr-altul, la mare distanta.

Acest transfer de date medicale poate utiliza diferite tehnologii, in-cluzand - ınsa fara sa se limiteze la enumerarea urmatoare - linii telefonicenormale, ISDN, ATM, Internet, Intra-neturi si sateliti. Telemedicina estefolosita de furnizori ıntr-un numar din ce ın ce mai mare de specialitati careinclud dermatologia, oncologia, radiologia, chirurgia, cardiologia si psihia-tria. Tendintele observate se refera la folosirea telemedicinei ın asigurareasanatatii la distanta, cu respectarea criteriilor de calitate ın serviciile respec-tive; scopurile urmarite sunt ın crestere si pot reduce semnificativ timpul sicosturile de ıngrijire a pacientului, precum si cele legate de transport.

Un sistem de telemedicina integreaza mai multe componente tehnologiceprecum: educare si formare profesionala, gestionarea informatiilor medicale(numite informatica) si servicii administrative, astfel formand o infrastruc-tura comuna. Relatia dintre aceste componente sunt prezentate ın figura1.1.

Figura 1.1: Componentele care stau la baza unui sistem de telemedicina

2

Page 7: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Tehnologia utilizata permite asadar medicilor sa efectueze ımpreuna cerce-tari clinice, ın ciuda distantelor geografice care ıi separa, partajand vizionareaınregistrarilor pacientului si a imaginilor de diagnostic.

1.2 Clasificare

Telemedicina pot fi ımpartita ın trei categorii principale:

• stocarea si transmiterea ( store-and-forward )

• monitorizarea de la distanta

• servicii interactive

Stocarea si transmitereaTehnologia stocarii si transmiterii este asincrona si este folosita pentru

transferul imaginilor digitale de la o locatie la alta. Imaginea obtinuta cuajutorul unei camere video digitale este stocata pe suport magnetic si apoitransmisa spre destinatie. Tehnologia se utilizeaza cu precadere ın cazurilemai putin urgente, cand diagnosticul si rezultatul consultatiei medicale tre-buie obtinute ın 24-48 de ore. Imaginea digitala poate fi transmisa ıntredoua puncte din cadrul aceleiasi cladiri, din cladiri diferite, din localitatidiferite sau ıntre oricare doua puncte de pe glob. Aplicatiile care folosescpreponderent aceasta tehnologie sunt teleradiologia, telepatologia si teled-ermatologia.

Teleradiologia este cea mai larg utilizata aplicatie a telemedicinei, aparu-ta ın 1950, fiind considerata ”strabunica” aplicatiilor cu teleimagini [3].Sistemele teleradiologice sunt compuse din aparate de captaresi afisare aimaginilor conectate la capetele unei retele de comunicatii. Imaginile curadiografiile transmise prin retea sunt afisate la receptor pe un monitor siinterpretate de o aplicatie-diagnostic de calitate. Dupa acest proces, imag-inile vor fi interpretate de un medic specialist radiolog, care va emite di-agnosticul final.Solutia traditionala era data de transportarea radiografieila medicul radiolog sau apelarea la serviciile unui radiolog care venea ladomiciliul pacientului. Datorita teleradiologiei, cheltuielile se limiteaza laobtinerea frecventelor de transmisie digitala si la achizitia echipamentelor.Ultima noutate ın domeniu se refera la integrarea ın tehnologia teleradio-logica a sistemelor de comunicare si arhivare a imaginilor.

Momentan, integrarea functioneaza doar pentru aplicatiile de teleradi-ologie care se executa la nivelul unei institutii si are drept scop sporireacalitatii si reducerea costurilor pentru serviciile de diagnosticare teleradio-logica.

3

Page 8: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Monitorizarea de la distantaMonitorizarea de la distanta, de asemenea, cunoscuta sub numele de self-

monitoring/testing, permite personalului medical sa monitorizeze un pacientla distanta, folosind diverse dispozitive tehnologice. Aceasta metoda este ınprimul rand folosita pentru gestionarea bolilor cronice sau a conditiilor speci-fice, cum ar fi boli de inima, diabet zaharat sau astm. Aceste servicii potoferi rezultate comparabile cu cele traditionale, medicul putand monitorizamai multi pacienti ın acelasi timp, ceea ce ınseamna o eficienta mult maimare, care va genera o scadere a cheltuielilor.

Servicii interactiveTehnologia televiziunii interactive bidirectionale (two-way interactive tele-

vision) este sincrona si se poate utiliza ın domenii precum: psihiatrie, medici-na interna, cardiologie, pediatrie, obstetrica-ginecologie etc. Tehnologiaaduce fata ın fata medicul si pacientul.

Teleradiologia (transmiterea imaginilor radiologice la distanta, dintr-unloc ıntr-altul), poate fi folosita ın numeroase scenarii. Un specialist, echipatcu dispozitive numerice de achizi tionare a datelor pentru imaginile obtinutecu raze X, poate da consultatii unor pacienti situati departe de cabinetulsau radiologic. Ea permite chirurgilor sa revada radiografiile de dinainteaoperatiei si pe cele obtinute dupa efectuarea operatiei, fara sa fie nevoie sa-sivada pacientii. Ea ofera disponibilitatea ın timp a imaginilor radiologice siinterpretarea acestora, atat ın cazuri de urgenta, cat si ın cazuri normalede ıngrijire a sanatatii ın clinici. Ea permite asadar medicilor sa colectezedate asupra pacientului, inclusiv radiografii, pentru prezentarea de cazurimedicilor specialisti prin intermediul unei videoconferinte, evitand calatoriiinutile pentru pacient si grabind terapia.

Un sistem de teleradiologie consta dintr-o sectie de obtinere a imaginii siuna de afisare si interpretare a ei, conectate printr-un sistem de comunicatie(de pilda, o retea).

Imaginile se obtin, de obicei, cu ajutorul unui dispozitiv de numerizarepe film care transforma radiografiile conventionale ıntr-o forma digitala iarcele mai noi aparate dispun de aceasta forma digitala, ın vederea transmisieilor pe o retea de telecomunicatii. Pentru numerizare se folosesc doar tehnicidiferite care utilizeaza fie lasere, fie charged coupled devices (CCD). Dispozi-tivele cu laser ofera un foarte bun contrast si o foarte buna definitie spatiala,dar sunt mai scumpe decat dispozitivele de numerizare CCD. Acestea dinurma ofera o definitie spatiala comparabila, ınsa contrastul lor sau definitiatonurilor pe scara de culori gri (de la alb spre negru) este mai putin buna.Cu toate acestea, ele sunt mai eficiente din punctul de vedere al costului, audimensiuni mai mici si sunt mai usor de ıntretinut .

O alternativa la captarea imaginilor pe un film obitnuit, urmata de nu-merizare, este radiografia computerizata (Computed Radiography CR). CR

4

Page 9: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

foloseste placi de fosfor pentru memorizare, cu scopul de a obtine imagini nu-merizate si ofera o dinamica mai larga, deosebit de utila ın aplicatii cum ar fiaparatele portabile de radiografie. Cum CR este astazi foarte raspandita iarfolosirea ei ın crestere, numerizarea filmului s-ar putea sa devina, cu timpul,ınvechita.

Dupa obtinerea imaginilor, acestea sunt transmise ıntr-un centru de in-terpretare care foloseste retele locale (Local Area Networks LANs) sau reteledistante (Wide Area Networks WANs). O retea locala LAN este un mediude transmisie partajat de toate statiile conectate iar zona ei de acoperire selimiteaza la o arie locala, fara sa traverseze vreo zona publica. In general,LANs au un diametru de serviciu de cativa kilometri si sunt proprietateaunei singure organizatii care le gestioneaza. In mod tipic, WANs acoperaregiuni ıntregi, ba chiar tari.

Unul din principalele scopuri ale telemedicinei, stabilit chiar de la ınceput,a fost asigurarea consultatiilor medicale de la distanta. Tehnologia videointeractiva permite pacientului sa fie consultat de la distanta de mediculspecialist, pacientul putand fi ınsotit, eventual, de medicul generalist local(medicul de familie), care sa prezinte cazul. Pe langa discutia propriu- zisa,medicului specialist i se pot pune la dispozitie diverse date despre pacient:evaluari stetoscopice, oftalmologice, fise medicale, rezultate de laborator,examinari endoscopice, radiologice, patologice, cardiologice etc. Singuralimitare a specialistului este aceea ca nu poate palpa pacientul. Cu toateacestea, consultatiile efectuate ın practica au fost declarate satisfacatoare,atat de catre pacienti, cat si de catre medici.

1.3 Continut si caracteristici

Lipsa

1.4 Bariere ın telemedicina

Lipsa

1.5 Domenii de dezvoltarea a proiectelor detelemedicina

Lipsa

1.6 Etapele dezvoltarii unui proiect detelemedicina

Lipsa

5

Page 10: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

1.7 Evaluare si deontologie ın telemedicina

Cresterea rapida a numarului de site-uri de e-sanatate si a volumului deinforma-tii si servicii disponibile online pentru consumatori se datoreazapartial inexistentei unui control riguros asupra informatiei furnizate pe In-ternet.

Consumatorii bine informati ısi pot asuma acum responsabilitatea pen-tru multe din deciziile pe care le iau privind ıngrijirea sanatatii. Pe dealta parte, nu exista nici o organizatie care sa raspunda pentru suprave-gherea serviciilor si informatiilor medicale furnizate online. Pentru a con-tracara oarecum acest fenomen, unele dintre organizatiile interesate sa asisteconsumatorii ın luarea deciziilor corespunzatoare referitoare la sanatate audezvoltat unele directii care vizeaza evaluarea si normele deontologice dintelemedicina.

Certificarile pentru proiectele de telemedicina pot constitui un instru-ment important pentru profesionisti, pacienti sau familiile acestora, ın ved-erea unei selectii corespunzatoare a site-urilor de e-sanatate. Aceste cer-tificari sunt proiectate astfel ıncat sa asigure existenta unui nivel garantatal calitatii site-urilor care subscriu reglementarilor. Unele aspecte privescdomenii specifice, cum ar fi intimitatea pacientului sau securitatea informatii-lor de natura financiara, ın timp ce altele vizeaza probleme legate de calitateainformatiei oferite. Site-urile care respecta anumite reglementari afiseaza deobicei un logo, indicand faptul ca dezvoltatorul proiectului de telemedicinagaranteaza aderarea la anumite principii. Pacientii si furnizorii de sanatatepot alege acele site-uri ca parte a procesului de selectare a proiectelor dee-sanatate corespunzatoarea nevoilor proprii.

6

Page 11: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Capitolul 2

Achizitia si prelucrareadatelor biomedicale

Achizitia semnalului biomedical si ınregistrarea acestuia reprezinta dezvolta-rea investigatiilor medicale pe parcursul timpului. In mod normal testelemedicale (investigatiile medicale) se faceau ıntr-un anumit moment ın caremedicul efectiv intra ın contact cu pacientul. Pe langa testele medicaledoctorul verifica pulsul, ia probe de sange, verifica tensiunea arteriala, iaprobe de urina si, uneori, masoara temperatura corpului si a transpiratiei.Toate aceste teste medicale, ımpreuna, duceau la un diagnostic sau dacanu erau suficiente se cereau investigatii suplimentare. De cele mai multeori investigatiile suplimentare reprezinta teste functionale sau teste pe bazade imagini. Astfel de teste pot fi radiologii sau analize cu ultrasunete sauinvestigatii endoscopice sau angiografice. Testele functionale pot fi elec-trocardiografice, teste pulmonare sau teste psihologice ce masoara nivelulde stres. Toate aceste teste au rezultate destul de generaliste desi implicaimagini sau teste functionale dintr-o perioada scurta de timp. Toate acesterezultate generaliste sunt folosite pentru a se stabili un diagnostic corect.Pebaza diagnosticului medicul ıncearca sa prezica schimbarile ın timp (deex: evolutia bolii sau consecintele medicatiei). Pentru a prezice astfel deschimbari este nevoie de multe ori de a doua sau chiar a treia serie de analizedupa cateva zile sau saptamani cand din nou se obtin rezultate generaliste.Dar mai nou, datorita aplicatiilor care s-au dezvoltat, evolutia bolilor poatefi anticipata prin simulari. Astfel de procedura medicala implica un numarde pasi (Figura 2.1).

Prin natura sa, nu se poate trage nicio concluzie ın legatura cu compor-tamentul dinamic al sistemului fiziologic. A extinde investigatia medicalaın mediul fiziologic este, din punct de vedere al timpului medical, princi-palul scop al biomedicinei sau, din alta perspectiva a timpului, este cumu-lul analizelor medicale. Prin aceasta abordare se poate obtine o mai bunaıntelegere ın ceea ce priveste controlul sistemului fiziologic. Diagnosticurile

7

Page 12: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Figura 2.1: Pasii urmati de o procedura medicala

pot fi ımbunatatite prin o mai buna ıntelegere a acestui sistem.

2.1 Monitorizarea si ınregitrarea testelor medicale

In timpul ultimelor decenii evaluarea si monitorizarea testelor medicale adevenit esentiala ın multe zone ale serviciului medical modern. Asta reflectarecunosterea importantei controlului sistemului fiziologic. Cel mai cunoscutcaz ın ceea ce priveste monitorizarea ın biomedicina este electrocardiografia(ECG). ECG-ul are cu siguranta cel mai vechi statut din istoria monitorizariisi ınregitrarii ın biomedicina pentru ca este un semnal intens (amplitudineaproape de 1mV) dar si foarte robust.

Electrocardiografia poate fi folosita ın scopul de a obtine un diagnosticın cabinetul unui medic generalist cu dispozitive relativ simple si necostisi-toare. Poate ınregistra ıntre 6 si 12 semnale (linii pe achizitie de date) astfelcardiologul poate oferi un diagnistic mai precis ın cazul bolnavilor ce suferadatorita problemelor de inima(de exemplu: semne de ischemie sau atac decord). Acesta analiza este privita ca o investigatie functionala ce reprezintaun anumit pas (punct) din sirul lung de investigatii medicale. In plus, acestpas din sirul lung de investigatii bazat pe ECG, poate fi ınregistrat si peperioade mai lungi de timp (ex : 24 ore) pentru a detecta si, poate, pentrua explica aritmiile. Perioada de 24 de ore este de obicei aleasa pentru a seobtine informatii in legatura cu schimbarile circadiene sau schimbarile dintimpul somnului fata de cele din timpul zilei. Unele probleme cardiace potinterveni doar ın timpul somnului.

Intr-o alta categorie complet diferita de investigatii ECG-ul, aparatulcare monitorizeaza semnele vitale poate fi folosit ın sala de operatii sau candpacientul se afla sub anestezie fiind considerat ca cel mai important aparatce prezinta starea pacientului si ghideaza medicul. In acest caz monitor-izarea continua si alarmarea medicului este foarte importanta. Diagnosticulimediat relatat de ECG nu este ınregistrat permanent, acest lucru nefiindabsolut necesar.

8

Page 13: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Figura 2.2: Determinarea complexului QRS

Inregistrarea analizelor biomedicale nu se rezuma doar la ECG (figura2.2). Mai sunt incluse si masurarea tensiunii arteriale, respiratia, presiuneapulmonara si saturatia de oxigen. In general, biosemnalele deriva fie dinsurse electrice cu surse apropiate (nervi, muschi) fie din traductoare specifice(presiune, debit, tensiune), care pot fi simple (elemente piezo-electrice) sau,mai degraba, semnale sofisticate ale unor sisteme de prelucrare (saturatie ınoxigen).

Biosemnalele pot fi monitorizate ın medii dificile, cum este cazul ter-apiei intensive, sau pot fi ınregistrate (stocata pentru o analiza ulterioara)ın scopul unei diagnosticari. Aparatura care capteaza biosemnalele a evoluatmult ın ultimii ani, astfel ınregistrarile digitale au o mai buna calitate si numai trebuiesc prelucrate ulterior. Aceste ınregistrari se folosesc de regulapentru a se obtine un diagnstic ın cardiologie (ECG, tensiunii arteriale)si ın neurologie / neurofiziologie (EEG, EMG). Anumite cazuri vor nece-sita ınregistrarea mai multor biosemnale de la mai multe aparate ın acelasitimp(creier, inima, circulatie, respiratie). O astfel de monitorizare esteprezentata ın figura 2.3. Inregistrarea biosemnalelor se poate realiza decatre un asistent, nefiind necesara prezenta unui medic. Multitudinea desemnale este stocata sau, dupa caz, transmisa la un centru care va prelucrasi va analiza toate datele

Biosemnalele necesita interpretarea atenta a expertilor ın domeniile speci-fice ale medicinei. Prin urmare adnotarile si expertii ce interpreteaza rezul-tatele sunt la fel de importanti ca si datele digitale ın sine. Numai prin eval-uarea adnotarilor poate un utilizator uman sau un algoritm sa ınteleaga si

9

Page 14: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Figura 2.3: Centru de control/ stocare/ transmitere date medicale

sa reproduca semnele specifice. Prin urmare, adnotarile si evaluarile vizualeale expertilor pot fi considerate cheia pentru urmatorii pasi ai investigatiei.Mai ales ın situatiile mai grele cum ar fi ın cazul terapiei intensive, ar fiimposibil de interpretat fara adnotarile explicative cu privire la conditiile deınregistrare si interventiile medicale efectuate.

2.2 Achizitie semnal

In primul rand atentia va fi mai mare asupra tipului de semnal derivat.Majoritatea semnalelor sunt de origine electrofiziologica si sunt electrice prinnatura (de exemplu, ECG, EEG). Aceste semnale au nevoie de amplificareatenta si filtrare pentru a le obtine cu un maxim de acuratete. Alte semnaleau nevoie de traductoare care sunt mai apropiate de variabilele fiziologicecare urmeaza sa fie studiate (debit, forta, tensiune, miscare, componentebiochimice). Traductoarele trebuie sa aiba o rata mare a semnalului dezgomot si sa fie eficiente din punct de vedere al consumului de energie.Daca este posibil, senzorii nu ar trebui sa fie plasati ın mod excesiv pe piele.Acest aspect implica alegerea unor senzori cu multiple utilizari, dar ridicasi problema sterilizarii acestor senzori.

10

Page 15: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Toate semnalele vitale achizitionate depind de setarile amplificatoruluisi de filtrare. Acest lucru determina rata zgomotului alb pentru informatiileobtinute. In ciuda setarilor similare, semnalele ınregistrate de echipamentesunt de multe ori diferite. Acest lucru se datoreaza diferitelor modalitatide implementare a senzorilor, amplificatoarelor si filtrelor de diferiti pro-ducatori. Raportul semnal-zgomot ın semnale de joasa tensiune, cum ar fiundele cerebrale, este deosebit de sensibil la punerea ın aplicare a amplifi-catoarelor si a circuitelor specifice alese. Prin urmare, datele rezultate suntadesea dependente de dispozitiv si specificatiile dispozitivului trebuie sa fiebine realizate.

De asemenea, este importanta modalitatea prin care sunt interpretatesemnalele de pe mai multe canale, sincronizarea semnalelor trebuie ganditaın amanunt atunci cand se alege echipamentul de ınregistrare (sau chiar con-vertoarele analog-digitale) utilizat ın ıntreag studiu. Sincronizare ıntre sem-nale devine o problema serioasa atunci cand sunt ınregistrate date diferiteutilizand dispozitive diferite cu ceasuri diferite. Asta se ıntampla ın cazulınregistrarii de lunga durata a ECG-ului si ın cazul ınregistrarii pe termenlung a presiunii arteriale. In cazul terapiei intensive este foarte frecventaınregistrarea datelor cu dispozitive diferite. Pe langa monitorizarea sem-nelor vitale mai poate exista ventilator, pompe de perfuzie si un sistemal managementului lichidelor. Pentru o evaluare corecta trebuie asiguratapornirea ın acelasi moment a tuturor dispozitivelor si corectarea unei eroride timp a vreunui dispozitiv. Diferenta de aproximativ un minut pentruo perioada de 24 de ore este des ıntalnita. Pentru serviciul medical nor-mal acest timp nu este important dar pentru studiile stiintifice este foarteimportant.

Rata de esantionare trebuie aleasa ın asa fel ıncat semnalele sa fie re-produse cu o calitate suficient de buna astfel ıncat analiza semnalelor sa nuduca la un rezultat eronat. Aceste atribute sunt specifice terapiei intensive,cardiologiei si neurologiei si sunt prezentate ın tabelul 2.1. Rezolutia digi-tala este strans legata de precizia de masurare a instrumentelor folosite.Trebuie sa se ia ın considerare faptul ca senzorul si caracteristicile speci-fice ale traductorului sunt foarte importante ın ınregistrarea respiratiei ıncazul ın care se face o analiza ulterioara. Cele mai des ıntalnite metode con-stau ın masurarea cantitatii aerului si a presiunii esofagiene datorate efor-tului respirator. Ambele metode provoaca disconfort pacientului si pentruınregistrarile de lunga durata sunt preferate metode mai putin sacaitoaresi obositoare. Pentru ınregistrarile miscarilor respiratorii, traductoarelorpiezoelectrice, centurile pneumatice si traductoare de impedanta sunt uti-lizate ca alternative. Undele care rezulta au caracteristici ale semnalelorcomplet diferite asa ıncat nu poate fi realizata o analiza uniforma a respiratiei.Pentru fluxul aerului respirat se foloseste alt tip de termistori, termocuplurisi senzori pentru presiunea nazala. Senzori de presiune furnizeaza un sem-nal care are o relatie de ordin doi cu fluxul actual al respiratiei. Acest lucru

11

Page 16: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

functiaındeplinita

semnal frecventasem-nalului

rezultatul digi-tal

neurofiziologie electroencefalograma 200 Hz 0.5 µV/bitelectroniograma 200 Hz 0.2 µV/bit

aparatul respiratie nazala 25 Hz -respirator presiunea esofagiana 100 Hz 0.5 mmHg/bit

saturatia de oxigen 1 Hz 1%/bittranscutanarea 1 Hz 0.5 mmHg/bitsunetul pulmonar 5000

Hz-

aparatul ECG 250 Hz 10 µV/bitcardiovascular ritmul cardiac 4 Hz 1 bpm

presiunea sangelui 100 Hz 1 mmHg/bit

aparatura temperatura corpului 1 Hz 0.1o C/bitauxiliara pozitia corpului 1 Hz -

pH esofagului 1 Hz 0.1 pH/bit

Tabelul 2.1: Tabelul ilustreaza cateva dimensiuni ale celor mai importante sem-nale din acest domeniu.

trebuie corectat ınainte de analiza ulterioara. Ulterior, diferentele dintreformele de unda care rezulta sunt mai mici decat diferentele constatate desemnale respiratorii colectate .

Pentru dispozitivele ce masoara saturatia de oxigen sunt folosite dispos-itive oximetrice de la diferiti producatori. Oximetrii pulsului folosesc setaridiferite pentru diferitele variatii ale pulsului si algoritme diferite cand cal-culeaza saturatia de oxigen, bazate pe transmiterea sau reflectarea luminii ınmai multe lungimi de unda. Semnalul final ınregistrat nu este semnalul brutfolosit de oximetru ci rezultatul unui algoritm care proceseaza informatia siva fi folosit ca o experienta ulterioara.

2.3 Algoritmi de procesare a semnalelor

Aplicarea metodelor de procesare a semnalelor si dezvoltarea unor noi meto-de este principalul scop al ınregistrarii si evaluarii ın biomedicina. Metodelede procesare a semnalelor au fost dezvoltate pentru a observa ritmul car-diac prin ECG, pentru a detecta si a clasifica aritmii si pentru a obtinemai mult informatii despre respiratie, efort fizic si psihic. Procesarea sem-nalelor poate ajuta la stabilirea unui diagnostic sau poate ajuta la simpli-ficarea monitorizarii pacientului ın timpul anesteziei dand alarme ın cazulunor anomalii ale undelor ECG-ului sau ale batailor inimii ca rezultat alunor analize ın timp real. Monitorizarea ın biomedicina este, prin urmare,

12

Page 17: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

aplicarea metodelor dezvoltate pentru a analiza seriile de timp, a procesariisemnalelor ın domeniul biologic si , ın special, ın domeniul medical.

Detectia complexului QRS este importanta pentru procesarea semnalu-lui ECG: calcularea intervalului RR, definirea ferestrei de cautare pentrudetectia undei P si T, etc. Dintre toate componentele semnalului ECG,complexul QRS, datorita formei, este cel mai usor de recunoscut (amplitu-dine si panta mare). Obiectivul detectiei QRS este acela de a determinaınceputul(onset) si sfarsitul(offset) complexului QRS. Dificultatea detectieieste crescuta datorita prezentei zgomotului ın semnalul ECG, dar si a carac-teristicilor morfologice ale inimii pacientului, ın momentul aparitiei complex-ului QRS. De asemenea datorita bolilor care afecteaza ventriculele duratacomplexului QRS poate varia. Toate aceste situatii necesita tehnici robustepentru detectia complexului care sa poata face fata unor situatii din celemai neobisnuite.

Se aplica noi algoritmi derivati din statisticile fizice pentru a detecta si acaracteriza procesele non-lineare ce stau la baza variatiilor fiziologice. ECG-ul reprezinta primul criteriu ın procesarea biosemnalelor, astfel ın continuaresunt enumerati cativa algoritmi de detectie a complexului QRS:

• algoritmi bazati pe amplitudine si prima derivata - Amplitude andFirst Derivative (AF )

• algoritmi bazati pe prima derivata - First Derivative (FD)

• algoritmi bazati pe prima si a doua derivata - First and Second Deriva-tive (FS )

• algoritmi bazati pe filtre digitale - Digital Filters (DF ).

Cu toate ca exista multiple variante de abordari ın detectia QRS, metodelebazate pe amplitudine si prima derivata sunt cele mai folosite ın aplicatiile detimp real sau ın cele care proceseaza ınregistrari de lungimi mare, deoareceefortul de calcul este scazut.

2.3.1 Algoritmi de detectie bazati pe amplitudine si primaderivata

Algoritmii care se bazeaza pe acest tip de metoda au avantajul nesegmentariidatelor. Cu toate acestea s-a aratat ıntr-un studiu comparativ al metodelorde calcul ın timp real ca diminuarea timpilor de calcul provoaca crestereaerorii de detectie [12]. Aceasta metoda este o adaptare a algoritmului propusde catre Moriet-Mahoudeaux.

Fie X = (X[0], X[1], . . . , X[n]) un sir de elemente, unde n este lungimeaınregistrarii ECG. O valoare prag este calculata ca fiind o parte a celei maimari valori pozitive a sirului de elemente X.

13

Page 18: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

A = 0.3×max {X[i]} , i = 1 . . . n (2.1)

Pe baza acestui sir X, se calculeaza prima derivata ın fiecare punct al vec-torului de elemente

Y [i] = X[i+ 1]−X[i− 1], i = 2 . . . n− 1,

Y [1] = Y [n] = 0 (2.2)

Un candidat QRS apare atunci cand trei valori consecutive ale primei derivatea vectorului X, depasesc o valoare prag pozitiva (panta crescatoare), si sunturmate ın urmatoarele 100ms de doua valori consecutive care depasesc ovaloare prag negativa (panta descrescatoare). De asemenea toate valoriledin semnalul X care corespund valorilor vectorului Y care apartin inter-valului dintre panta crescatoare si sfarsitul pantei descrescatoare trebuie sadepaseasca o valoare prag.

Y [i], Y [i+ 1], Y [i+ 2] > 0.5 (2.3)

siY [j], Y [j − 1] < −0.3, i+ 2 < j < i+ 25 (2.4)

X[i], X[i+ 1], . . . , X[j] > A (2.5)

Un al doilea algoritm prezentat ın acest subcapitol este o adaptare a algorit-mului propus de catre Fraden si Neuman. Ca si ın cazul primului algoritm, secalculeaza o amplitudine prag ca o fractie din valoarea maxima a vectoruluiX.

A = 0.4 ∗max {X[i]} , i = 1 . . . n (2.6)

Pentru acest algoritm s-a propus rectificarea vectorului X astfel:

Y0[i] =

{X[i], daca X[i] ≥ 0−X[i], daca X[i] > 0

, i = 1 . . . n (2.7)

Semnalul rectificat este procesat ın continuare astfel:

Y1[i] =

{Y0[i], daca X[i] ≥ 0A, daca X[i] > 0

, i = 1 . . . n (2.8)

Se calculeaza prima derivata a semnalului Y1:

Y2[i] = Y1[i+ 1]− Y1[i− 1], i = 2 . . . n− 1,

Y2[0] = Y2[n] = 0 (2.9)

Un candidat QRS apare atunci cand o valoare din vectorul Y2 depaseste ovaloare prag constanta, Y2[i] > 0.7, i = 1 . . . n. Un al treilea si ultimul

14

Page 19: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

algoritm care se bazeaza pe amplitudine si prima derivata se bazeaza pealgoritmul propus de Gustafson:

Y [i] = X[i+ 1]−X[i− 1], i = 2 . . . n− 1,

Y [0] = Y [n] = 0 (2.10)

In prima derivata, Y, se cauta valorile care depasesc o valoare constantaaleasa ın urma etapei de acordare a algoritmului:

Y [i] ≥ 0.15, i = 1 . . . n (2.11)

In momentul ın care s-a gasit o valoare care sa satisfaca conditia de mai sus,se verifica daca si urmatoarele 3 valori depasesc aceeasi amplitudine prag:

Y [j] ≥ 0.15, j = i+ 1 . . . i+ 3 (2.12)

Daca cele doua conditii de mai sus sunt ındeplinite, valoarea poate fi con-siderata un candidat QRS daca urmatoarele doua puncte respecta relatiilede mai jos:

Y [i+ 1]X[i+ 1] > 0 (2.13)

Y [i+ 2]X[i+ 2] > 0 (2.14)

Testarea primului algoritm se face cu semnalul No. 100 pentru a vedeaperformantele algoritmului ın conditii lipsite de zgomot. In figura de maijos sunt prezente ın primul grafic semnalul ECG folosit pentru simulare,al doilea grafic reprezinta prima derivata, iar cel de-al treilea grafic oferao vizualizare a performantei algoritmului. Linia neagra, din partea dejos, descrie pozitia complexului validat prelevat din fisierul descarcat dinbaza de date PhysioBank, MIT-BIH Arrhythmia Database. Liniile punc-tate reprezinta valorile maxim admisibile ale complexului QRS corect de-tectat. Toate complexurile detectate ın afara acestor intervale reprezintadetectii fals pozitive. Daca ıntre doua linii punctate succesiv nu exista oline albastra si exista una neagra, atunci avem de-a face cu o detectie falsnegativa ( atunci cand candidatul QRS se afla ın afara intervalului dintrecomplexul QRS valid si 88ms ınainte sau dupa acesta).

15

Page 20: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Figura 2.4: Rezultatele aplicarii primului algoritm pentru un semnal ECG

Pentru a stabili performantele unui electrocardiograf care are imple-mentat un astfel de algoritm trebuie sa mai adaugam semnalul de test siperturbatii datorate contractiilor musculare, putand avea un efect nedoritasupra rezultatelor obtinute, datorita frecventelor mari pe care le contin. S-a observat ca pentru valori de pana la 30-40% rezultatele sunt satisfacatoare,daca se creste peste aceste valori, performantele se degradeaza rapid.

Figura 2.5: Rezultatele aplicarii primului algoritm pentru un semnal ECG per-turbat de zgomot

2.4 Compresia semnalelor biomedicale

Metoda propusa, pentru compresia datelor, este bazata pe o modelare para-metrica a versiunii transformate a semnalului. Aplicand acest principiu

16

Page 21: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

parametrilor modelului si sirurilor de date vom obtine o rata de compre-sie care este mult ımbunatatita fata de majoritatea metodelor existenteAZTEC (Amplitude Zone Time Epoch Coding), CORTES (Coordinate Re-duction Time Encoding System) sau SAPA (Scan-Along Polygonal Approx-imation). Principala problema o ıntalnita la compresia datelor este mode-larea amplitudinilor de ınalta si joasa frecventa care va afecta eroarea globalaa criteriului de minimizare a algoritmului. Pentru eficientizarea se separaregiunea de ınalta amplitudine si joasa frecventa (HALF) si amplitudinejoasa si frecventa ınalta (LAHF) a semnalului transformat.

Pasii urmati de algoritmul propus:

a. etapa de transformare

b. modelare

c. cuantizare

d. recontructie.

Figura 2.6: Modelarea si discretizarea semnalului de intrare ECG

a. Etapa de transformareTransformata cosinus discreta DCT (Discrete Cosine Transform) a uneisecvente date, cu N esantioane este calculat ca:

S(0) =

√1

N

N−1∑n=0

s(n) (2.15)

17

Page 22: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

S(k) =

√2

N

N−1∑n=0

s(n)× cos[

(2n+ 1)kπ

2N

](2.16)

,unde S(k) = 0, 1 . . . (N − 1) este secventa de ınceput s(n) a semnaluluitransformat DCT.

b. Modelare Transformata semnalului S(k) este ımpartita ın doua secvente,secventa HALF, SHALF (k) si secventa LAHF, SLAHF (k). Aceste douasecvente sunt aproximate ca un raspuns la impuls a modelului necunoscutSHALF (z) si SLAHF (z).

SHALF (z) = B01 +B1z

−1 + . . .+Bpz−p

1 +A1z−1 + . . .+Apz−p(2.17)

, unde B0 este castigul si p este ordinul de esantionare a modelului HALF.

SLAHF (z) = D01 +D1z

−1 + . . .+ Spz−p

1 + C1z−1 + . . .+ Cpz−p(2.18)

unde D0 este castigul si q este ordinul de esantionare a modelului LAHF.Parametri B0, B1, . . . , Bp, A0, A1, . . . , Ap, D0, D1, . . . , Dp si C0, C1, . . .

, Cp ai modelului SHALF (z) si SLAHF (z) sunt estimati folosind metoda SM(Steiglitz - McBride).

Criteriul pentru ımpartirea transformatei DCTFie :SHALF (k) = S(k), k = 0, . . . ,mSLAHF (k) = S(k), k = m+ 1, . . . , N − 1Am gasit empiric ca urmatorul creiteriu furnizeaza rezultate satisfacatoare.Alegem cea mai mica valoare m pentru care:

max(|SLAHF (k)|) ≈ 0.1×max(|SHALF (k)|) (2.19)

O eroare ın estimarea a lui m de pana la 20 esantioane poate fi tolerata.

c. CuantizareaParametrii modeluluiAi, Bi, Ci siDi sunt foarte sensibili la cuantizare putandda erori. Chiar si cele mai mici cuantizari ale erorilor ın acesti parametriiconduc la foarte mari schimbari a raspunsului ın impuls si de aici reconsti-tuirea se realizeaza ın ecuatiile (2.14) si (2.15) factorizate pentru a obtineradacinile lor.

In concluzie, castigul este deasemenea cuantizat si stocat. Polii si zer-ourile se gasesc ın perechi complex conjugate, deci numai o jumatate din elenecesita a fi stocate. Pentru o reconstructie fidela a formei de unda ECG,numarul bitilor ceruti pentru a fi stocate informatiile: zeroul, polul, castigulHALF si LAHF, sunt 24, 22, 14, si 7 respectiv.

18

Page 23: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

d. ReconstructieDiagrama bloc a procesului reconstituit este aratata ın figura 2.7. Raspunsulla impuls al reconstituirii modelului LAHF este adaugat pentru reconsti-tuirea modelului HALF. IDCT-ul acestei secvente adugate ne dau reconsti-tuirea ECG.

Figura 2.7: Reconstruirea semnalului ECG

Rezultate Pentru a testa eficienta algoritmului s-a utilizat o ınregistrarede 10 secunde, avand rata de 500 de esantioane pe secunda, fiecare esantionavand rezolutia de 12 biti .

CAZ I.In figura 2.8a este prezentat un interval PT al semnalului ECG. Reconsti-tuirea obtinut prin modelare DCT se poate vedea ın figura 2.8b. In figura2.8c se vede reconstructia intervalului RR obtinut ın urma aplicarii algorit-mului HALF/LAHF. Eroarea este de 3.83%.

19

Page 24: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Figura 2.8: (a) Semnal original , (b) Semnal reconstruit prin metoda DCT ,(c) Semnal recontruit prin metoda HALF / LAHF

CAZ II.In acest caz am folosit 4 esantioane a unui semnal ECG, figura 2.9, si amobtinut o eroare de 5,95%, pentru semnalul reconstruit.

Figura 2.9: Semnal format din 4 esantioane recontruit prin metoda HALF /LAHF

Criteriul folosit pentru evaluarea performantei algoritmuluiCalitatea transmisiei pe Internet a fost evaluata folosind ca parametru obiec-tiv PRD (percentage root mean square difference suma patratica medie

20

Page 25: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

procentuala), care evalueaza distorsiunile semnalului ECG reconstruit:

PRD =

√√√√∑N−1n=1 [s(n)− s(n)]2∑N−1

n=1 s(n)× 100 (2.20)

, unde x(n) este semnalul original, iar x(n) este semnalul reconstruit.

21

Page 26: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Capitolul 3

Transmisia datelor

Serviciile medicale si aplicatii folosite ın medicina (cum ar fi telemedic-ina) necesita metode diversificate de acces la diferite resurse ale tehnolo-giei informatiei. Acestea ar putea fi baze de date medicale sau site-uri,ca exemple ale tehnologiilor existente pot enumera camerele video, micro-foanele, monitoare de ınalta rezolutie sau alte dispozitive cu fir sau fara fir,care ajuta la monitorizarea si recuperarea sanatatii pacientului. In acestcapitol voi prezenta o gama larga de tehnici de acces care pot fi folosite ıntelemedicina, atat de catre medici cat si de catre pacienti. Practic accesuleste efectuat folosind internetul, dar mai exista si multe alte tehnici care potfi aplicate.

3.1 Prezentarea generala a sistemului detelecomunicatii

Principalele conditii impuse de institutiile medicale atunci cand vine vorbadespre schimbul de informatii, sunt difuzarea si teleconsultatiile ıntre diferitiutilizatori.

Diferitele optiuni de acces sunt posibile cu ajutorul dat de companiile detelecomunicatii care dispun de o plansa larga de tehnologii precum: retele debanda larga (broadband), retele de banda medie (ISDN) sau retele de bandaıngusta cum ar fi liniile telefonice cu comutatie (GSM, GPRS). S-a constatatca intensitatea fluxurilor de date de intrare si de iesire poate varia de la 10Mbps la cativa zeci de Kbps, astfel ıncat, orice utilizatori care acceseaza obaza de date medicala prin conexiunile ın banda ıngusta sa poata avea acces.In plus, tendinta globala este de a avea acces prin intermediul retelelor farafir astfel utilizatorul va dispune de o mobilitate maxima .O structura deretea tipica este prezentata ın figura 3.1.

In cazul ın care o institutie are mai multe linii si detine si intranet demare viteza (cum ar fi LAN), aceasta poate fi configurata ca servar. Aceastatehnica este adesea folosita, deoarece exista multe astfel de retele si exista

22

Page 27: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Figura 3.1: Arhitectura retea-internet ın telemedicina

si mai multe dispozitive de tip IP. Din acest motiv, aceasta metoda esterelativ necostisitoare, astfel ıncat aproape orice spital sau clinica poate de-cide sa se conecteze la Internet. Securizarea si integritatea ın cadrul retelelepoate fi realizata prin instalarea de firewall-uri, dispozitive speciale care fil-treaza accesul dupa anumite criterii, sau crearea de aplicatii specializatecare cripteaza datele.

In tarile ın curs de dezvoltare nu multe spitale sau clinici ısi pot permiteo conexiune permanenta la Internet sau Intranet. Dar totusi pentru a aveaeficienta dorita este nevoie de o conexiune buna la internet. Acesta estemotivul pentru care folosirea conexiunii ISDN pare a fi o solutie de com-promis: rata de transmisie buna, conexiune permanenta si preturi relativscazute. Exista mai multe tehnici diferite utilizate pentru a accesa resurselemedicale, precum:

• retele de telefonie diginala PSTN (Public Switched Telephone Network

• retele ISDN (Integrated Services Digital Network)

• retele WAN/LAN (Wide Area Network / Local Area Network )

• linii ınchiriate

• linii xDSL (Digital Subscriber Line)

• retele telefonice GSM,UMTS (Groupe Spcial Mobile, Universal MobileTelecommunications System)

• dispozitive Bluetooth, ZigBee

23

Page 28: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

• comunicatii satelit

Unele dintre criteriile pentru a decide daca tehnica de acces este impor-tanta sau nu, sunt legate de costul, disponibilitate si de securitatea servici-ului. Daca costul de acces este prea mare pentru institutie, aceasta nu vaputea sa-si permita sa foloseasca un astfel de serviciu. Din acest motiv, un-ele dintre tehnicile de mai sus desi sunt eficiente nu au sustinerea materialapentru a fi utilizate ın prezent. In urmatoarele paragrafe voi descrie catevatehnici care pot fi implementate cu succes ın domeniul telemedicinei.

3.1.1 Retele PSTN

Public Switched Telephone Network , reprezinta retea de telefonie bazata pecomutare de circuite (ciruit-switched telephone network), ın acelasi fel ın careInternet-ul face schimbul de pachete prin intermediul protocolului TCP/IP.La ınceput o retea de linii analogice, ın prezent PSTN este aproape integraldigitala si include atat telefoane mobile cat si telefoane fixe. Aceasta metodaeste una care necesita o investitie minima dar are un mare dezavantaj, ratamaxima de transfer este de 56 Kbps, dar ın realitate aceasta este ın jur de40 Kbps. O astfel de solutie nu este valida ın cazul de fata deoarece nu oferao siguranta sporita si nici nu asigura o viteza mare de transfer a datelor,care este necesara ın acest domeniu.

3.1.2 Retele ISDN

Aceasta tehnologie a fost proiectata sa permita transmisia de voce si de dateprintr-un cablu de cupru, rezultand o ımbunatatire dramatica a calitatii si avitezei, ın comparatie cu sistemele analogice existente. ISDN este un set deprotocoale folosite pentru stabilirea si ıntreruperea conexiunilor telefonice,cat si pentru functionalitati complexe pentru utilizatorul serviciului tele-fonic.

Doua tipuri de conexiuni au fost definite ın cadrul acestui serviciu:

• basic rate interface (BRI) - consta ın doua canale de tip B, fiecare cuo banda de 64 Kbps, si un canal D cu o banda de 16 Kbps. Impreunaaceste trei canale pot fi descrise de notatia 2B+D

• primary rate interface (PRI) - au un numar mai mare de canale de tipB precum si un canal D cu o latime a benzii de 64 Kbps. Numarul decanale B dintr-un PRI variaza de la tara la alta, de exemplu, ın Europasi Australia numarul de canale este de 30B+1D, avand o banda totalade 2.048 Mbps.

Folosind tehnica codarii cu marcarea inversarilor, datele apelului telefonicse transmit pe canale de tip (B), iar canalele de tip (D) sunt folosite pentrustabilirea apelului si administrarea legaturii create. Dupa ce o comunicatie

24

Page 29: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

a fost stabilita, ıntre cele doua parti exista o legatura sincrona bidirectionalade 64 Kbps care este mentinuta pana la terminarea transmisiei. Numarulapelurilor simultane este direct proportional cu numarul canalelor de date.

3.1.3 Retele TCP/IP

Unele unitati medicale pot realiza accesul la internet folosind o retea de cal-culatoare. Avantajul utilizarii unei astfel de conexiuni este larga raspandirea retelelor de acest tip, costurile de conectare si de mentenanta sunt foartemici, astfel orice unitate medicala ısi va permite sa achizitioneze un servicide tip Internet. Acest mod de conectare este foarte indicat dar exista si unrisc destul de ridicat ca reteau sa fie penetrata. Din acest motiv sistemulde securitatea a datelor trebuie sa fie principala grija. Acest lucru poatefi realizat prin instalarea de firewall-uri, dispozitive speciale, implementatepentru restrictionarea si codificarea informatiilor. Se pare ca cea mai bunasolutie pentru a putea securiza reteaua unitatilor medicale este folosirea IPspeciale care nu pot fi accesate decat de anumite clase de IP-uri.

Dar spitatele au nevoie si de conexiuni WAN, pentru a asigura conexiunela internet ıntr-o anumita zona. Daca reteau va fi prea mare si la ea voravea multi doctori acces, cu siguranta vor aparea probleme de integritatea datelor. O solutie plauzibila ar fi crearea unei camere speciale ın caremedicii sa aiba acces la toata baza de date si de unde sa poata sa coordoneze,daca este cazul, alte puncte de lucru. Acest loc trebuie amplasat cat maiaproape de server, astfel doctorii sa poata dispune de calitate maxima ıntransmiterea si achizitionarea datelor, care este o necesitate primordiala ınteleconsultatii. Pe de alta parte, crearea unui singur loc ın care se vorstocarea datele, pastreaza o mai mare siguranta asupra integritatii acestora.

3.1.4 Retele prin fibra optica

Fibra optica poate fi utilizata ca mediu de telecomunicatii si retele deoareceeste flexibila si poate fi stransa in cabluri. Este deosebit de avantajoasapentru comunicatii pe distante mari, deoarece lumina se propaga prin fi-bra cu atenuare mica ın comparatie cu cablurile electrice. Aceasta permiteacoperirea de distante mari cu doar cateva repetoare. In plus, semnalele lu-minoase propagate ın fibra pe fiecare canal pot fi modulate la viteze de panala 111 Gbps. Fiecare fibra poate transmite mai multe canale independente,fiecare folosind o alta lungime de unda a luminii.

Pe distante scurte, cum ar fi reteaua unei cladiri, fibra optica economisestespatiu ın conductele de cablu deoarece o singura fibra poate transportamai multe date decat un singur cablu electric. Fibra este imuna si lainterferentele electrice, nu culege zgomote electromagnetice din mediu.

Prin urmare, securitatea este putin mai mare, ın cazul acesta, atuncicand vorbim de conectarea ıntre o unitate sanitara si centrul bazei de date.

25

Page 30: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Conexiunea punct-la-punct PPPoE, client-server, este ın momentul de fataconexiunea cea mai sigura, utilizatorul trebuind sa se autentifice, pentru aputea accesa baza de date. Accesul se realizeaza centralizat, fapt ce duce laun control eficient al traficului, nepermitand scurgerea de date. O astfel deconexiune se dovedeste a fi greu de penetrat.

3.1.5 Retele xDSL

Tehnologia DSL este o tehnologie de transmisie utilizand cabluri de cupru,care aduce informatia din banda larga la statiile de lucru cu ajutorul sis-temului telefonic. Clasa de protocoale xDSL se refera generic la mai multeprotocoale de tip DSL cum ar fi ADSL, HDSL, RADSL, SDSL etc. Conex-iunea DSL ofera teoretic 8.448 Mbps, dar de cele mai multe ori conexiunileindividuale ofera o viteza ıncepand de la 512 Kb si pana la 1544 Mbpsdownload si 128 Kbps upload.

Deoarece tehnologia DSL ofera o crestere dramatica de viteza ın comparatiecu alte tehnologii, puterea reala a serviciilor bazate pe tehnologie DSL constaın oportunitati conduse de aplicatii multimedia necesare utilizatorilor actualiai retelei.

Unul din cele mai importante avantaje ale tehnologiei DSL este acelaca permite providerilor de retea Network Service Provider (NSP) si utiliza-torilor deserviti avantaj deplin al infrastructurii existente. Protocoalele denivel 2 si 3 OSI (cum ar fi Frame Relay, ATM si IP) si serviciile fiabile deretea au devenit de ıncredere. Suportand tipuri multiple de servicii pe osingura platforma ofera o importanta protectie a investitiilor. TehnologiaDSL include ambele servicii bazate pe pachete si celule ca si ATM, FrameRelay si IP, cat si servicii canalizate sincron.

Urmatoarea generatie, arhitectura DSLAM (Digital Subscriber Line Ac-cess Multiplexer) care suporta servicii multiple, tehnologie si transport,asigura ca investitiile ın infrastructura existenta sa ramana protejate. DSLpoate garanta securitatea unitatilor sanitare, astfel acest serviciu va juca unrol important ın alegerea unei resurse de internet.

3.2 Utilizarea retelelor fara fir

Reteaua faru fir este cea mai noua tehnologie dar si cea mai dinamica dindomeniul comunicatiilor. Aceasta tehnologie va fi cea mai raspandita ınurmatorii cativa ani. Dar nu trebuie sa uitam ca implementarea unui astfelde mediu ın sistemul sanitar este foarte dificil de realizat de companiiledezvoltatoare, acest lucru datorandu-se reglementarilor foarte drastice carese impun ın acest caz. Exista multe aspecte tehnice care trebuiesc urmarite,precum : consumul de energie, fiabilitatea, interopabilitatea si securitateacare este cel mai important aspect. In momentul de fata exista trei noi

26

Page 31: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

tehnologii care sunt ın curs se dezvoltare si care ar putea sa rezolve uneleprobleme de comunicare, aceste sunt ZigBee, UMTS si LMDS.[14]

3.2.1 Bluetooth

Bluetooth-ul este un set de specificatii bazate pe undele radio, pentru o reteawireless personala (PAN - personal area network). Bluetooth-ul creeazao cale prin care se poate face schimb de informatii ıntre aparate precumtelefoane mobile, laptop-uri, calculatoare personale, imprimante si camerevideo printr-o frecventa radio sigura si de raza mica.

Aparatele bluetooth comunica ıntre ele atunci cand acestea se afla ınaceeasi raza de actiune. Ele folosesc un sistem de comunicatii radio asa canu este nevoie sa fie aliniate fata ın fata pentru a transmite, pot fi chiarın camere diferite daca transmisia este suficient de puternica. Un masterpoate utiliza ın comun un canal cu pana la 7 dispozitive ”slave” simultanactive, sau ınca 255 de dispozitive ”slave” daca acestea sunt ın modul inactiv,reteaua formata numindu-se piconet si este ilustrata ın figura 3.2. Acestaeste un mare avantaj, astfel pe masina ambulantei se poate amplasa unmaster care va interactiona cu toate dispozitivele tip ”slave” din interiorulunitatii mobile.

Figura 3.2: pico-retea

In tehnologia Bluetooth, se utilizeaza o banda de frecvente nelicentiateISM (Industrial Scientific and Medical) ıntre 2.402 GHz si 2.480 GHz alo-cata pentru domeniul industrial, stiintific, medical si poate fi folosita astfelaproape oriunde ın lume. Banda este divizata ın 79 de canale radio, fiecarecanal avand o largime de banda de 1 MHz. Deoarece ın aceasta banda maiopereaza si alte tehnologii de comunicatie, pentru eliminarea interferentelorradio, Bluetooth foloseste tehnica de ımprastiere spectrala cu schimbare ınsalturi de frecventa, aceasta schimbare de frecventa producandu-se de 1600ori pe secunda. Fiecare dispozitiv avand o gama de alegere a 79 de frecventecare se schimba de 1600 ori pe secunda, fiind putin probabil ca doua dispozi-tive sa fie pe aceeasi frecventa ın acelasi moment, iar daca totusi interferenta

27

Page 32: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

are loc, ea dureaza doar o mica fractiune de secunda.O caracteristica de baza a tehnologiei Bluetooth este capabilitatea de a

transmite si receptiona simultan atat comunicatiile vocale cat si comunicatiilede date. Bluetooth utilizeaza simultan 3 canale vocale sincrone sau un canalcare suporta simultan transmisie vocala sincrona si transmisie de date as-incrona. Fiecare canal vocal suporta sincron 64 Kbps ın fiecare sens. Uncanal de date asincron poate suporta maxim 723,2 Kbps ın sens direct ınconexiune asimetrica sau 433,9 Kbps ın conexiune simetrica.

Tehnologia Bluetooth, care nu ofera decat cativa biti pe secunda pe oraza de 10 metri, este dezvoltata ın special pe telefoane mobile si headset-uri.Dar de curand grupul industrial Bluetooth SIG a dezvoltat o noua clasa careasigura o distanta mult mai mare, de 100 metri, si o securitate sporita. Acestpachet ofera securitate la nivelul conexiunii (prin autentificare si criptareadatelor) astfel putem spune ca este o tehnologie care poate fi folosita cusucces ın transmisia de date din cadrul institutiilor medicale.

3.2.2 ZigBee

ZigBee este un standard ce defineste un set de protocoale de telecomunicatiipentru reteaua wireless.Standardul ZigBee a fost dezvoltat pentru primadata de ZigBee Alliance, organizatie ce are sute de companii membre. Aceastaorganizatie a fost fondata ın anul 2002, ca o organizatie non-profit, deschisaoricarui doritor sa se alature.

Dispozitivele ce utilizeaza ZigBee opereaza ın benzile de frecventa de868Mhz, 915Mhz, si 2,4Ghz. Rata maxima de date este de 250 Kbps. ZigBeeeste folosit la aplicatii ce au ca principale cerinte rata mica de transfer, pretscazut si autonomie mare. In multe aplicatii ZigBee, timpul total ın caredispozitivul wireless este activ ın aplicatie este limitat, dispozitivul petrecemare parte a timpului ın stand-by, cunoscut ca si modul asteptare (sleep).

Una dintre aplicatiile acestei tehnologii este monitorizarea pacientului ladomiciliu [15]. Presiunea sangelui si tensiunea unui pacient pot fi masuratecu dispozitive ce utilizeaza tehnologia ZigBee. Dupa masurare datele sunttransmise wireless la un server local, de exemplu un calculator personal aflatın casa pacientului, unde sunt procesate analizele. In final informatia vitalaeste transmisa, pentru analize, la unitatea sanitara prin internet.

Standardul ZigBee ajuta la reducerea costurilor implementarii prin sim-plificarea protocoalelor de telecomunicatii si reducerea ratei de date. Timpulde serviciu este perioada de timp ın care dispozitivul este activ, fata de tim-pul total. De exemplu daca un dispozitiv se activeaza la fiecare minut siramane activ pentru 60 ms, atunci timpul de serviciu al acestui dipozitiveste 0.1%. In multe aplicatii ZigBee, dispozitivele au timpul de serviciu maimic de 1% pentru a asigura o durata de viata a bateriei de cativa ani.

ZigBee este un standard radio bine definit, cu caracteristici bogate.Domeniul de aplicatie este vast, si este ideal ın dezvoltarea tehnologiilor

28

Page 33: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

ce necesita o rata de transfer scazuta. Unul dintre avantejele importante aleacestuia ıl reprezinta numarul mare de noduri pe care ıl poate include ıntr-oretea, pana la 250. O aplicatie realizata cu standardul ZigBee este de 2, 3ori mai ieftina fata de cea realizata cu Bluetooth. Alte avantaje importantesunt reprezentate de gradul mare de operabilitate, un nivel de securitateridicat si durata mare de viata a bateriei. Toate aceste avantaje ne duc laconcluzia ca acest sistem are un raport pret-calitate foarte bun.

3.2.3 GSM

Global System for Mobile communications, prescurtat GSM, este standardulde telefonie mobila cel mai raspandit din lume. Acest sistem este functionalıncepand cu anul 1991. Serviciile de telecomunicatii oferite de sistemul GSMse clasifica ın doua categorii principale: servicii suport si teleservicii. Ser-viciile suport sunt utilizate la transmisia semnalelor ıntre punctele de accesale retelei, numite, ın standardul GSM, interfete utilizator-retea. Teleser-viciile asigura cominicatiile ıntre utilizatori, ın conformitate cu protocoalelestabilite de operatorii de retea.

Retelele GSM opereaza ın benzile de frecventa 890-915/935-960 MHzprin intermediul a 124 canale radio duplex, fiecare cu o largime de bandade 200 KHz. Intervalul de frecventa dintre aceste doua benzi este de 45MHz, care este si largimea de banda dintre frecventa de transmisie si ceade receptie a unui terminal GSM (figura 3.3). Se foloseste o tehnica nu-mita Time Division Multiple Access (TDMA) pentru a ımparti un canalradio de 200 KHz ın 8 sloturi de timp, fiecare dintre acestea constituind uncanal de semnal vocal separat. Avantajul tehnicii TDMA consta ın reuti-lizarea frecventelor ıntr-o vecinatate apropiata cu o probabilitate mai micade interferenta. Aceasta asigura o eficienta mult mai mare si permite de-servirea mai multor utilizatori.

Figura 3.3: Retea GSM

29

Page 34: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Exista trei servicii oferite de companiile care folosesc tehnologia GPS,pentru a mari substantial viteza de transmitere a datelor, acestea sunt:High-Speed Circuit-Switched Data Service (HSCSD), General Packet RadioService (GPRS), si Enhanced Data Rate for Global Evolution (EDGE).

HSCSD este o tehnologie ce permite cresterea substantiala a vitezei detransfer a datelor ın reteaua GSM. Viteza de transfer obtinuta poate fi depana la 38,4 Kbps prin folosirea a 4 canale radio de 9,6 Kbps sau de panala 57,6 Kbps prin utilizarea a 4 canale radio de 14,4 Kbps.

Cele mai importante aplicatii care folosesc HSCSD sunt: acces inter-net; acces e-mail; transfer de date FTP (File Transfer Protocol); telemetrie,care cuprinde monitorizare trafic, controlul de la distanta al echipamentelor.

GPRS General packet radio service este una dintre cele mai moderne tehno-logii de transmisii de date care folosesc o adresare de tip IP (Internet Proto-col). Serviciul GPRS a permis sa se asigure: rate de transfer mari, conexiunepermanenta, robusta, suport pentru aplicatiile de banda larga si mecanismede securitate.

Serviciul GPRS poate asigura o rata medie de transfer de 115K, daraceasta este obtinuta doar prin folosirea tuturor celor opt canale tempo-rale pentru GPRS. In mod curent, echipamentele terminale sunt configuratepentru a folosi un anumit numar de canale temporale pentru fluxul de dateascendent si respectiv descentent. In conditiile ın care semnalul radio estefoarte bun, daca se folosesc patru canale temporale pe sensul ascendent siunul pe cel descendent, se poate asigura o rata de 80Kbps pe calea descen-denta si respectiv, 20 kbps pe calea ascendenta

Avand ın vedere folosirea de catre tehnologia GPRS a tehnicii de co-mutare de pachete, tehnica folosita si ın internet, la o rata de transfer su-perioara fata de solutiile existente ın GSM, noua tehnologie permite accesulutilizatorilor la o gama larga de aplicatii bazate pe IP, iar rata de transfereste undeva ın jurul valorii de 172,1 Kbps.

EDGE Enhanced Data rates for Global Evolution este o tehnologie deevolutie a retelei GSM/GPRS care este destinata sa aduca o ımbunatatireın calitatea serviciilor de date.Acest serviciu permite conexiuni de date detrei ori mai rapide decat GPRS (215 Kbps) cu acceasi clasa multislot.

In consecinta, EDGE este o ımbunatatire adusa GPRS-ului si nu poatelucra ın mod independent. In concluzie tehnologiile GPRS si EDGE au per-mis ca retelele GSM sa ofere utilizatorilor transmisiuni de date performantecare sa asigure conectarea la internet cu toata gama de servicii asociate:e-mail, transfer de fisiere, explorarea paginilor WEB etc, ın conditii com-petitive.

30

Page 35: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

3.2.4 UMTS

Universal Mobile Telecommunications System este o noua tehnologie decomunicatie pentru retelele de telefonie mobila care integreaza astazi pa-chete de voce si date. Licentele UMTS sunt deja acordate ın majoritateatarilor europene. Lansarea comerciala a serviciului se asteapta a avea locın 2001, ın momentul de fata efectuandu-se ın ıntreaga lume testele pen-tru ımbunatatirea serviciului de catre producatorii de echipamente mobile.In Europa, gama de frecventa alocata pentru retelele UMTS este cuprinsaıntre 1880 MHz si 1980 MHz. Tehnologia de transmisie folosita este CDMA( Code Division Multiple Access ) de banda larga ( Wideband-CDMA - W-CDMA ) prin care semnalele se transmit simultan, partajand latimea debanda a spectrului de frecventa alocat serviciului. Retelele mobile din atreia generatie denumite ın Europa UMTS ( 3G - Third Generation ) suntfoarte diferite de retelele din generatia precedenta ( 2G - Second Gener-ation ). Datorita noului mediu multimedia se poate face o clasificare alfunctionalitatii, precum: aplicatii cu timp de raspuns scurt (cazul videotelefoniei, videoconferintei) si aplicatii care nu necesita timpi de raspunsatat de scurti ( transfer de date, acces la Internet ). In tabelul comparativalaturat sunt prezentate cateva diferente ıntre cele doua tipuri de retele.

In cazul retelei UMTS se foloseste o arhitectura stratificata orizontal,grupata pe baza nodurilor functionale ale retelei. Aceasta separare ın stra-turi functionale este caracteristica retelelor moderne de telecomunicatii. Inceea ce priveste reteaua UMTS, aceasta este impartita pe trei niveluri.

Nivelul aplicatieEste nivelul la care sunt stocate aplicatiile accesibile utilizatorului. In ma-joritatea cazurilor aplicatiile sunt ıncorporate ın terminalele mobile si ınserverele de aplicatii dedicate acestui scop. Operatorii se pot diferentia uniifata de altii pe baza pachetelor de servicii unice pe care le ofera abonatilorla acest nivel. In plus, operatorii pot apela la firme specializate pentru dez-voltarea, rularea, sau depanarea acestor aplicatii, ceea ce duce la un numarfoarte mare de aplicatii posibile oferite abonatilor retelei. Nivelul aplicatieeste conectat la nivelul controlului de retea prin intermediul unor API-uri(Application Program Interface).

Nivelul control reteaAcest nivel include toate functiile necesare asigurarii unor servicii de cali-tate superioara pe diferite tipuri de retele. Diferitele tipuri de retele pot fiprivite ca si un set de domenii, fiecare dintre acestea avand ın componentaservere de control care controleaza fiecare tip de retea ın parte. Serverelede control administreaza apelurile si sesiunile de comunicatie ıntre utiliza-tori, asigura serviciile de securitate, sau ındeplinesc alte functii similare cuacestea. Nivelul control de retea contine si serverul HSS ( Home Subscriber

31

Page 36: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Server ) care are un rol foarte important, devenind o entitate multidomeniu.Acesta poate administra autorizari, autentificari si poate administra locatiidin toate domeniile prezente ın reteaua respectiva. Legatura ıntre nivelulcontrol de retea si nivelul conectivitate este realizat cu ajutorul protocoalelorGCP ( Gateway Control Protocol ).

Nivelul conectivitateLa acest nivel vorbim despre un mecanism de transmisie capabil de trans-portul oricarui tip de informatie prin intermediul conexiunilor vocale, dedate sau ale fluxurilor multimedia. Arhitectura acestui nivel ıncorporeazarutere sau comutatoare care directioneaza traficul, precum si echipamentecare colecteaza date si informatii privind facturarea serviciului si asiguragarantii cu privire la asigurarea unei bune calitati a serviciului ( QoS -Quality of Service ) oferit abonatilor. Solutiile oferite la acest nivel se potbaza pe transmisii ATM ( Asynchronous Transfer Mode ) sau IP. Este destulde clar ca pe termen lung rolul protocolului ATM, ca si tehnologie de trans-port, va scadea considerabil, lasand din ce ın ce mai mult teren transmisieiIP ca si tehnologie predominanta.

3.2.5 WLAN

Wireless Local Area Network WLAN este un sistem de comunicatii im-plementat ca extensie, sau ca si alternativa pentru un LAN cablat, ıntr-ocladire sau campus, combinand conectivitatea la viteza mare cu mobilitateautilizatorilor, ıntr-o configuratie mult simplificata. Avantaje evidente, cumar fi: mobilitate, flexibilitate, simplitate ın instalare, costuri de intretinerereduse si scalabilitate au impus WLAN ca o solutie tot mai mult utilizata.

WLAN utilizeaza standardele de comunicatie din familia IEEE 802.11.Standardele din familia IEEE 802.11 descriu protocoalele de comunicatieaflate la nivelul fizic (PHY) si la nivelul legaturii de date (MAC) ale uneiretele locale wireless. Implementarile IEEE 802.11 trebuie sa primeascapachetele de date de la protocoalele de la nivelul retelei si sa se ocupe cutransmiterea lor evitand eventualele coliziuni cu alte statii wireless din zona.IEEE 802.11 este compatibil cu Ethernet-ul care este standardizat de IEEEın seria de standarde 802.3. Spectrul si limitarile operationale nu sunt ace-leasi ın ıntreaga lume. In mare parte din Europa este permisa utilizarea aınca 2 canale aditionale fata de cele din US. Un aspect care este de multe oriconfundat este acela ca Wi-Fi ocupa 5 canale din banda 2,4 GHz, ın loc de3 canale ın SUA : 1,6 ,11 si 4 canale ın Europa: 1,5,9,13. Puterea izotropaechivalenta radiata ın Europa este limitata la 20 dBm (0.1W). Energia nece-sara este mai mica decat a celorlate standarde de joasa largime de banda,ca de exemplu Zigbee sau Bluetooth, avand astfel grija de viata bateriei.

Retele Wi-Fi au arie de acoperire limitata. Un router Wi-Fi normal ce

32

Page 37: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

foloseste standardele 802.11b, 802.11g, cu o antena standard, are o arie deacoperire de circa 32 de metri ın spatiu ınchis si 95 de metri ın spatiu de-schis. Aria de acoperire variaza ın functie de frecventa de banda. Pentruo frecventa mai mare (5 GHz) aria de acoperire este putin mai mica decatpentru o frecventa mai mica (ex. 2.4 GHz). Aria de acoperire ın spatiuliber poate fi ımbunatatita daca se folosesc antene directionale, ajungandpana la cativa kilometri daca echipamentele sunt ın linie dreapta. De aseme-nea, performantele Wi-Fi descresc proportional pe masura ce distanta dintreemitator si receptor creste.

WiMAX (Worldwide Interoperability for Microwave Access) este o nouatehnologie fara fir care poate capta datele de sapte ori mai repede si de omie de ori mai departe decat populara tehnologie Wireless Fidelity (Wi-Fi),utilizand standardul IEEE 802.16. In timp ce retelele Wi-Fi simple au o razade actiune de 30m - 100m, WiMax utilizeaza o tehnologie de microunde radiocare mareste distanta la aproximativ 50km. Astfel, se pot construi retelemetropolitane WiMAX. Iar aceasta tehnologie este optima pentru echipareamasinilor de ambulanta cu asemenea sisteme, astfel este asigurata legaturacu unitatile sanitare in permanenta.

3.2.6 Comunicatii prin satelit

Satelitii de telecomunicatii ComSat (Communication Satellite) fac posibilarealizarea unor canale de telecomunicatii. Sunt ıntrebuintati aproape ıntoate domeniile comunicatiilor: telefonie, televiziune, radio, internet, trans-misii de date, videoconferinte, etc. Satelitii de telecomunicatii sunt de douatipuri:

• activi - echipati cu aparatura de emisie-receptie, efectuand anumitemodificari asupra semnalului primit

• pasivi - retransmit semnalele primite ın urma reflexiei acestora pesuprafata lor.

Aceste dispozitive au cateva avantaje destul de importante care nu se regasescın cazul altor retele de comunicatii, precum :

• utilizatorii serviciilor conventionale terestre mobile vor putea comutape serviciul de satelit cand se afla ın afara ariei de acoperire a reteleiclasice

• se lucreaza cu viteze mari, viteza de transmisie a datelor poate variaıntre 1Mbps si 15Mbps

• ıntarzierea este doar de 10ms

• sistem global multifunctional asigura interfete ıntre toate sistemeleterestre mobile existente: GSM, AMPS, NMT, DCS, IS-95.[18]

33

Page 38: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Asadar comunicatiile prin intermediul satelitilor este o varianta viabila pen-tru sistemul sanitar , astfel se asigura semnal pe 99.9% din suprafata terestrasi o buna securitate a datelor, utilizatorii trebuind sa se autentifice pentrua avea acces la un astfel de sistem.

3.3 Standardul de comunicatie si imagistica med-icala

DICOM (Digital Imaging and Communication in Medicine) este un protocolde retea la nivelul aplicatie pentru transmiterea imaginilor medicale, semnaledigitale si informatii auxiliare, ce suporta un domeniu larg de imagini si datemedicale pe domeniile radiologie, cardiologie, patologie si stomatologie.

Scopul standardului DICOM este de a asigura schimbul standardizatde imagini ıntre sisteme diferite. Standardul a fost dezvoltat cu accent peimagistica medicala de diagnosticare, practicata ın radiologie, cardiologie sialte domenii legate de acestea, dar este extins la informatii legate sau nu deimagine, interschimbate ıntre clinici sau alte medii medicale, [21].

3.4 Arhitectura retelei unitatilor sanitare fixe

Transmiterea datelor ıntre doua parti medicale reflecta nevoia de a ımpartasiınregistrarile medicale si confidentiale atunci cand urmeaza a se face oteleconsultatie sau urmeaza a se stabili un diagnostic. Trebuie sa se tinacont de faptul ca termenul ”unitate sanitara” cuprinde toate partile medi-cale implicate ın procesul de ıngrijire a pacientului, nu numai institutia insine. Conexiunea tipica unitate sanitara-unitate sanitara solicita o bandalarga pentru a asigura transmiterea unui volum mare de date ın orice mo-ment.

Topologia optima pentru reteaua unitatilor sanitare este cea inel-steafiind o combinatie ıntre cele doua topologii (inel - calculatoarele formeaza obucla, iar daca o statie se defecteaza semnalul poate merge pe cealalta parte;stea - toate calculatoarele sunt conectate la un nod central,avand rolul deserver) astfel statiile sunt conectate printr-un concentrator principal (figura3.4). Avantajul principal consta ın faptul ca, daca va exista o problemafizica pe o parte a inelului, informatii vor fi transmise pe cealalta parte,astfel nu se va bloca transmiterea de informatii.

Legatura ıntre judete va fi o retea de tip WAN, liniile de transmisievor fi de tipul fibra optica si se va folosi standardul 1000BaseLX. Aceststandard Ethernet cu 1000 Mbps (Gigabit Ethernet) prin fibra de sticlamulti sau monomode la o lungime de unda de 1300nm. Lungimea maximaa cablului, ın functie de tipul si calitatea fibrei, este ıntre 550m si 5000mıntre distribuitor si statia LAN. Convertoarele de mediu speciale pot acoperidistante ıntre 5 km (1300 nm lungime de unda) si aproximativ 25 km (1310

34

Page 39: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Figura 3.4: Topologia inel - stea

nm lungime de unda), fara a fi nevoie de repetoare. Acest tip de linii oferacateva avantaje foarte importante: rezistenta la zgomote, atenuare scazuta,securitate sporita.

Reteaua din interiorul unui judet va fi de tipul LAN si va fi privata. Sevor folosi atat fibra optica cat si cabluri UTP Unshielded Twisted Pair sauSTP (Shielded Twisted Pair). Aceste retele functioneaza la viteze cuprinseıntre 10 Mbps si 10 Gbps, sunt afectate de zgomot dar pentru un bugetredus sunt recomandate.

Pentru a asigura o securitate cat mai buna, va trebui unilizat un setde servicii impuse de organismul international numit IANA (Internet As-signed Numbers Authority). Reteaua va fi configurata static, ın server sevor introduce MAC-rile (Media Access Control) calculatoarelor retelei, ast-fel se va evita penetrarea retelei. De asemenea, se vor folosi din protocolulIPv6 clasa A. Este cea mai sigura clasa de adrese IP, astfel matematic, sepot aloca maxim 127 de adrese de clasa A, fiecare putand aloca un numarde 16.777.214 adrese gazda. Intervalul adreselor de clasa A este: 1.0.0.0− 126.255.255.255, iar continutul din primul octet ramane fix odata ce ealocat.

3.5 Arhitectura unitate sanitara fixa - unitate sani-tara mobila

In acest subcapitol voi prezenta doua scenarii posibile necesare realizariiunei comunicatii de tip telemedicina ıntre o unitate mobila (de tip primajutor) si o unitate fixa (spital, centru de e-sanatate) . Unitatile mobile se

35

Page 40: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

vor deplasa catre zonele ın care sunt solicitate si apoi vor transmite datelemedicale catre spital sau catre centrul de monitorizare pentru a fi analizatede personalul de monitorizare, doctori, ce verifica simptomele existente sivor aplica procedura de urgenta dupa caz.

O conexiune ıntre cele doua parti poate fi stabilita pe ıntreaga durata amonitorizarii sau doar pe anumite perioade de timp cand aparatura trimtedatele medicale colectate. Aplicatiile de tele-monitorizare moderne presupuno mobilitate ın crestere a personalului. In continuare voi prezenta variantacare este disponibila la ora actuala si care nu ofera o mobilitate satisfacatoaresi varianta care este putin mai costisitoare dar dispune de mai multe avan-taje.

Prima varianta consta ıntr-o conexiune ıntre unitatea mobila si spi-tal prin intermediul unui modul de comunicatii(spre exemplu modem) am-plasat pe plafonul masinii de ambulanta care asigura o transmisie de tipGSM, cu ajutorul standardelor GPRS si EDGE. Toata aparatura aferentainterventiilor de urgenta este conectata prin Bluetooth, iar camerele video(deobicei doua) sunt conectate prin cablu UTP. Un astfel de sistem intampinacateva probleme precum:

• portabilitate scazuta - tehnologia bluetooth permite transmiterea date-lor la o distanta de 10m ıntre dinspozitive, astfel pacientul va trebui safie transportat pana la unitatea mobila, astfel se pierde timp si poatescadea si sansele de supravietuire, ın unele cazuri

• semnal slab - datorita reliefului tarii noastre, muntii si dealurile ocupaaproximativ 45% din teritoriu, exista sanse destul de mari ca semnalulGSM sa nu aiba puterea necesara, sau chiar sa nu fie disponibil ınanumite zone, astfel se pericliteaza comunicatia

• viteza mica - datorita specificatiilor tehnice componentelor utilizateın acest sistem, viteza de transmitere a datelor este una medie, dacapentru a transmite date avem nevoie de cativa Kbps, pentru a trans-mite video va fi necesara o viteza care variaza ıntre 178 si 340 Kbps(ın functie de calitatea echipamentului folosit), existand risculul ca lacentru sa fie primite doar frame-uri.

Cea de-a doua varianta presupune o conexiune de tip ZigBee ıntre echipa-mentele cu care este dotata o unitatea sanitara, astfel vom rezolva problemade portabilitate, iar pretul echipamentului este cu 5% mai mic decat ın cazulmai sus prezentat.

Iar pentru a realiza legatura ıntre unitatea sanitara fixa si cea mobilapropun utilizarea unei tehnologii WiMAX folosind protocolul IEE 802.16e.Astfel va trebui sa realizam o retea formata din celule radio. Retelele celu-lare ofera un numar de avantaje fata de alte solutii alternative, precum:capacitate crescuta, consum energetic redus, arie larga de acoperire si gradde interferenta scazut.

36

Page 41: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Figura 3.5: Comparatie ıntre standardul Bluetooh si ZigBee

In alegerea modului ın care vor fi pozitionate antenele trebuie avuteın vedere caracteristicile mediului geografic( latitudine, longitudine, cote,etc). Alegerea coordonatelor antenelor se va face cu ajutorul unui algoritmgenetic ce va minimiza o functie de cost aleasa astfel ıncat sa ne conducala o pozitionare cat mai buna a antenelor. Algoritmii genetici reprezintao metoda de cautare a unei solutii la o problema data prin trecerea dela o populatie de cromozomi (solutii potentiale ale problemei de rezolvat)la o noua populatie, apeland la operatori de inspiratie genetica: selectia(reprezinta pasul de supravietuire a celor mai buni indivizi), mutatia (creste-rea varietatii populatiei) si ıncrucisarea (parcurgerea pasilor care duc la onoua populatie).

37

Page 42: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Capitolul 4

Securizarea datelor ıntelemedicina

Agentiile si organizatiile guvernamentale ale mai multor natiuni au dezoltatnumeroase criterii pentru securitatea tehnologiei computerizate. In SUA,documentul ın cauza se numeste ”Criteriul de securitate al sistemelor com-puterizate” sau TCSEC ”Trusted Computer System Security EvaluationCriteria,”. Comisia europeana a publicat ”Criteriul securitatii tehnlogieiinformatiei” cunoscut si ca ITSEC (Information Technology Security Eval-uation Criteria) iar guvernul canadian a publicat ”Criteriul de securitateal produselor computerizate canadiene” sau CTCPEC (Canadian TrustedComputer Product Evaluation Criteria). In 1996, aceste initiative au fostoficial reunite ın documentul cunoscut sub numele Criteriul Comun CC. In1999 acest document a fost aprobat ca fiind un standard de catre OrganizatiaInternationala de Standardizare IOS. Aceasta initiativa deschide calea catreo recunoasterea reciproca a rezultatelor la nivel mondial de evaluare a pro-duselor.

Nevoia industriei medicale de a fi sigura, nevoia confidentialitatii schim-bului de informatii, ıntre pacient si medic, ın sprijinul portabilitatii asigurariimedicale, sprijinirea firmelor de asigurari de sanatate, toate acestea au avutca rezultat un document numit ”The Health Insurance Portability and Ac-countability Act of 1996” (HIPAA). Pentru a sustine confidentialitate sischimbul electronic de informatii ın domeniul sanatatii, departamentul desanatate si serviciu uman din SUA a elaborat reglementari ce sustin siıntaresc securitatea si confidentialitatea HIPAA. Aceste reglementari pre-supun o atentie sporita atat ın manevrarea documentelor scrise de mana catsi acelora electronice. Documentele protejate care sunt stocate ın sistemul e-medical de informatii prezinta permanent riscul modificarilor sau accesarilorinadecvate. Acestea din urma sunt considerate un abuz.

O arhitectura de securitatea asemanatoare, dar cu un domeniu de apli-cabilitate mai larg va trebui dezvoltat de agentia guvernamentala a tarii

38

Page 43: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

noastre. Aceasta strategie a fost elaborata deja, de exemplu, de catre gu-vernul britanic. Acest document vizeaza organismele implicate ın procurareasi furnizarea de servicii electronice pentru guvern, inclusiv departamenteleguvernului central, sectorul cu organisme publice non-departamentale, au-toritatile locale si alte organisme guvernamentale locale responsabile cufurnizarea de servicii electronice pentru guvern. Aceasta cuprinde, de aseme-nea, organismele de reglementare responsabile cu auditarea si controlul adec-vat al bunurilor publice si bunurilor informatice. Alte arhitecturi de securi-tate pot fi gasite, de exemplu, ın [19].

Acest capitol arata cum se poate securiza un sistem e-medical folosindtehnologia si mecanismele digitale de securitate la o scara larga.

4.1 Norme de securitate ın telemedicina

Securitatea HIPPA stabileste urmatoarele reguli de siguranta: ”Asigurareaconfidentialitatii, integritatii si disponibilitatii tuturor informatiilor electron-ice despre protejarea sanatatii (PHI) pe care entitatea subiectului(pacientului)le creaza, le primeste, le pastreaza si le transmite.” Principalele obiective alesistemului de securitate sunt:

• asigurare medicala pentru angajati

• reducerea fraudelor si abuzurilor din domeniul medical

• introducerea/implemetarea simplificarilor administrative cu scopul dea spori eficacitatea si eficienta sistemului medical

• protejarea informatiilor medicale ımpotriva accesului fara consimtamantsau fara autorizatie

HIPPA prezinta o tripla provocare furnizorilor de dispozitice medicale sicelor care produc aplicatiile:

1. ıncorporarea unei tehnologii de securizare a produselor pentru a protejaconfidentialitatea informatiilor medicale generale,

2. reevaluarea si consolidarea propriile politici, interne si de formare, pentrua asigura un tratament sigur si confidential al informatiilor medicaleexpuse ın timpul testarii, serviciilor de teren, de evaluare a produsuluisi de cercetare

3. un flux de lucru ce include si produsele proprii, asigurandu-se ın acelasitimp ca aceste produse incluse ın fluxul de lucru nu impiedica comu-nicarea clinica sau nu afecteaza ın mod negativ ıngrijirea pacientului.

39

Page 44: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Furnizorii de dispozitive si de aplicatii nu sunt de obicei direct responsabilipentru politicile si procedurile organizatorice ale clientilor lor. Cu toate aces-tea, propriile lor politici si proceduri trebuie sa protejeze confidentialitateainformatiilor si produsele lor trebuie dezvoltate pentru a corespunde principi-ilor HIPAA. Mai exact, HIPPA specifica exact anumite politici si tehnilogiide securitate, printre care:

• ID-uri unice pentru utilizatorii autorizati

• delogare automata

• audit pentru accesul la anumite tipuri de informatii protejate

• criptare (optional)

• semnatura digitala (optional)

• dezvoltare de antivirus

• planuri de recuperare/restaurare a datelor

• planuri pentru a reveni dupa un eventual dezastru

• program de audit

• programe de testare

• programe de formare profesionala

Este necesar de remarcat faptul ca solutiile de securitate necesita mai multdecat putina tehnologie. Pentru a fi eficiente, solutiile de securitate tre-buie sa fie complementate de formare/traninguri, securitatea fizica, core-spunzatoare celor mai bune practici derivate politicilor de securitate si con-figurarea corespunzatoare a sistemelor de operare si a aplicatiilor.

Securitatea fizica poate varia de la simplul acces prin autentificare, ajungandpana la supravegherea cu camere video. Provocarea consta ın determinareanivelului de securitate necesar, avand ın vedere sensibilitatea informatiilor,importanta securitatii tehnice, accesibilitatea personalului uman la mediulde calcul.

ReteleInformatiile, fiind schimbate ıntre sistemele de sanatate, sunt expuse diferitelormodalitati de a putea fi interceptate. Securitatea fizica a componentelor deretea si a mediilor de comunicatii poate fi suficienta ın medii restranse. Inmedii mai largi si oriunde informatiile despre sanatate ce trebuie protejatesunt schimbare printr-o retea publica, securitatea acestora trebuie asigurataprin criptare si tehnologii de securitate.

40

Page 45: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Sisteme de operareCele mai moderne sisteme de operare furnizeaza securitate suficienta pen-tru protejarea dosarele medicale. Cu toate acestea, sistemul de securitateatrebuie sa fie configurat corect pe baza celor mai bune politici de securitate.Configurare trebuie sa includa stergerea automata a conturilor neutilizatesi inutile, precum si faptul ca toate parolele sa respecte cele 66 de cerintemoderne de securitate. Un sistem de operare securizat ın mod corespunzatortrebuie sa includa atat eliminarea automata a lipsurilor de securitate cat sipolitici ce impiedica utilizatorii sa creeze astfel de lipsuri.

Application SoftwareCa si ın cazul sistemele de operare, aplicatiile cele mai moderne au potentia-lul de a fi configurate pentru utilizari sigure. Cu toate acestea, ca si ın cazulsistemelor de operare , cele mai multe aplicatii sunt configurate pentru aavea sisteme de siguranta foarte slabe sau inexistente(de ex sistemele ın carelipseste cu desavarsire conectarea prin nume-utilizator si parola). Fiecareaplicatie trebuie sa fie configurata pentru utilizari sigure.

DateMulte tipuri de informatii pot fi citite de mai multe aplicatii (de exemplu,fisiere imagine). Bazandu-se exclusiv pe securitatea de baza a aplicatiilor,siguranta informatiilor poate fi usor afectata daca un utilizator schimbapur si simplu aplicatia pentru a citi acea informatie. Controlul accesului lainformatii trebuie aplicat la cel mai de baza nivel(fisiere, baza de date,etc)ın care acea informatie este stocata. In plus, ın cazul ın care informatia estestocata ın baza de date, securitatea trebuie aplicata pentru nivelul minimal ınregistrarii individuale. In unele cazuri, informatia din baza de datenecesita sa fie protejata prin intermediul controlului accesului din interiorulınregistrarilor individuale.

4.2 Modelarea unei arhitecturi de securitate

Criteriul CC prevede o taxonomie a evaluarii securitatii functionabila printr-o serie de cerinte functionale si de asigurare. Criteria include 11 cate-gorii functionale : audit de securitate, de comunicare, suport criptografic,protectie prin crearea de utilizatori, identificare si autentificare, gestionareafunctiilor de securitate, confidentialitate, protectia securitatii functionale,utilizarea resurselor, accesul la componente si o cale sau un canal de ıncredere.Aceste 11 categorii functionale sunt ımpartite ın 66 de familii, fiecare conti-nand un numar de criterii [20]. Exista aproximativ 130 de criterii docu-mentate ın prezent, cu mentiunea faptului ca designeri pot adauga criteriisuplimentare ın functie de proiect. Exista un proces oficial prin care se

41

Page 46: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

adopta criterii specifice corpului administrativ al CC.Guvernele si grupurile industriale dezvolta descrieri functionale pentru

securitatea retelelor si soft-urilor, utilizand CC. Aceste documente, cunos-cute sub numele de profile de protectie, descriu grupuri de functii de secu-ritate care sunt adecvate pentru o anumita componenta de securitate sautehnologie. Motivatia principala pentru dezvoltarea profilurilor de protectieeste motivarea furnizorilor de a distribui produse securizate si a reduce risculın procurarea infomatiei tehnologice.

Clasele si familiile din cadrul Criteriului Comun reprezinta o agregare decerinte. Agregarea reflecta mai mult termeni abstracti de securitate, precumoperatiunile criptografice si protectia datelor, decat securitate ın contextulfunctiilor operationale IT. O cartografiere rezumata a categoriilor Criteriu-lui Comun este prevazuta ın tabelul 4.1.

Categorii Clasele Criteriului Comunfunctionale

Auditul audit, componente de protectie

Controlul accesului protejarea datelor, protectia componentelor,management-ul securitatii, restrictionareaaccesului, suport criptografic, identificare siautentificare, canale/linii securizate

Controlul fluxului suport criptografic, protectia datelor,protectia resurselor, sisteme codificate

Acreditare protejarea datelor, protectia resurselor, sis-teme de comunicatii, acces prin autentifi-care, sisteme incriptate

Solutii de integritate suport criptografic, protejarea datelor, uti-lizarea resurselor, management-ul securitatii

Tabelul 4.1: Relatiile dintre categoriile functionale si clasele Criteriului Comun.

Aceasta structura sustine afirmatia potrivit careia cele cinci categorii de-scrise ın tabelul 4.1 reprezinta un set de procese interdependente sau sub-sisteme.

Subsistemul auditului de securitateSubsistemul auditului care se ocupa de securitate este responsabil pentrucaptarea, analiza, raportare, arhivare si ınapoierea ınregistrarilor de eveni-mente, precum si a conditiile din interiorul unei sistem server. Conform CC,cerintele de securitate pentru un subsistem de audit ar include:

• colectarea datelor de securitate, inclusiv captarea corespunzatoare dedate, transferul sigur al datelor precum si sincronizarea cronologiilor

42

Page 47: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

• protectia datelor, inclusiv utilizarea etichetelor de timp, semnareaevenimentelor si integritatea stocarii pentru a preveni pierderea dedate

• analizarea datelor de securitate ale auditului, inclusiv revizuirea, de-tectarea anomaliilor, analiza erorilor si analiza atacurilor din afararetelei folosind euristica simpla sau complexa

• alarme pe praguri de pierderi, conditii de avertizare si evenimentecritice.

Solutia subsistemului de integritateScopul implementarii unui subsistem de integritate ıntr-un cadru IT estede a satisface cerintele de fiabilitate si corectitudine ale solutiei de calculpentru a atinge standardele legale si tehnice ale procesului. Conform Cri-teriului Comun, accentul pe implementare subsistemului de integritate poateinclude:

• integritatea si fiabilitatea resurselor

• protectii fizice pentru date, cum ar fi chei criptografice si componentefizice, cum ar fi cabluri, hard-uri, etc

• operatii continue incluzand toleranta la erori, recuperarea dupa esecsi autotestare

• mecanismele de stocare; module de securitate hardware si criptografice

• acuratete maxima ın masurarea timpului

• alcatuirea unei liste a serviciilor prioritare prin alocarea de resurse saucote

• izolare functionala utilizand domenii de separare sau monitorizareaactivitatilor

• alarme atunci cand un atac fizic sau pasiv este detectat.

Subsistem al controlului de accesScopul unui subsistem al controlului de acces ıntr-o solutie IT este de a sporipoliticile de securitate prin separarea accesului, executarea proceselor si ser-viciilor conform solutiilor computerizate folosind identificare, autentificaresi prin procesele de autorizare, ımpreuna cu mecanisme de securitate carefolosesc acreditari si atribute.Conform CC, un subsistem al controlului deacces functional include:

• contorizare/control acces

• monitorizarea si ıntarirea accesului ın cazurile de urgenta

43

Page 48: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

• mecanisme de identificare si autorizare incluzand criptografia (criptaresi semnare) si mecanisme de autentificare singulare sau multiple

• mecanismele de autorizare ce includ atribute, privilegii si permisiuni

• mecaniste ale controlului accesului ce includ controlul accesului bazatpe atribute, asupra subiectelor, obiectelor si subiectilor-utilizatori cucaracter obligatoriu

• mecanisme de aplicare inclusiv manipularea obiectelor deteriorate, pre-venirea defectiunilor, captarea evenimentelor precum si componente dedecizie si de ınregistare a rezultatelor.

Controlul nivelului fluxului de informatii Scopul unui astfel de sub-sistem ıntr-un cadru IT este de a pune ın aplicare politicile de securitateprin separarea fluxul de informatii printr-o solutie de calcul ce afecteazavizibilitatea informatiei ın termenii solutiei de calcul si asigura integritateadatelor astfel ımplicand o solutie de calcul. Conform CC, un subsistem alcontrolului fluxului de informatii include urmatoarele cerinte functionale:

• monitorizare fluxului datelor si punerea ın aplicare/executarea

• mediile de transfer: un canal deschis sau de ıncredere, o cale deıncredere sau deschisa, conversii media, transferul manual, importulsau exportul ıntre domenii

• mecanisme de observabilitate: de a bloca criptarea

• mecanismele de depozitare: criptografie si module de securitate alehard-ului

• mecanisme de aplicare: atributele obligatorii de stocare si active, capta-rea evenimentelor, componentele de decizie si de autentificare, moni-torizare datelor stocate, reducere, protectia si distrugerea informatiilorreziduale

Subsistem de acreditare sau identificare Scopul unui subsistem deacreditare sau identificare ıntr-un cadru IT este de a genera, distribui sia gestiona date care sa transmita identitate si permisiunea ıntre retele siıntre platforme, ıntre procese, precum si subsistemele de securitate ıntr-osolutie IT. Conform Criteriului Comun, un subsistem acreditar trebuie saincluda urmatoarele cerinte functionale:

• mecanisme simple si/sau complexe, care folosesc sau nu criptarea

• identitati si acreditari utilizate pentru a proteja fluxurile de date

• identitati si acreditari pentru a fi utilizate ca protectie a activelor:integritatea sau neobservabilitate

44

Page 49: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

• identitati si acreditari pentru a fi utilizate ın controlul accesului: iden-tificare, autentificare si controlul accesului ın scopul de a juca rolulunei coperti protectoare pentru utilizatori

• acreditari pentru a fi utilizate ın scopuri de identitate din punct devedere juridic pentru tranzactii

• data si ora la care s-a realizat autentificarea

• ciclului de viata al acreditarii

• mecanisme anonime

Aspectul obiectivelor de securitate si solutia mediului au un rol central ınselectia si enumerarea subsistemelor. Tabelul 4.2 prezinta o posibila car-tografiere a obiectivelor de proiectare pentru subsistemele de securitate.Acesta indica ın care caz un subsistem poate fi necesar (N) sau suplimen-tar (S) ın a satisface cerintele de securitate individuala. Selectia reala asubsistemelor necesita o documentare rationala.

Proiectarea Audit Integritate Control Control Legitimaresecuritatii acces pe nivele Legitimare

Concrolul ac-cesului asuprasistemului /proceselor

N N S N N

Controlul accesu-lui la informatii

N N N S S

Controlul lafiecare nivel alinformatiilor

N N N S N

Componente via-bile si functionale

N S N N N

Prevenirea /ınlaturarea at-acurilor

S S S S N

Responsabilizareprin identificare

S S N N S

Prevenirea/ eliminareafraudei

S S S S S

Tabelul 4.2: Reprezentarea obiectivelor ın functie de subsistemele de securitate.

45

Page 50: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

4.3 Tehnici de securizare a sistemului medical

Tehnicile prin care sistemul e-medical devine sigur, ın special cele ce facreferire la subsisteme sunt ilustrate ın figura 4.1 si vor fi prezentate maiamanuntit ın continuare. Acestea vizeaza trei domenii majore: date siaplicatii, infrastructura sistemului si retele.

Figura 4.1: Componentele care stau la baza unui sistem de telemedicina

Cristografie Serviciile informatice de securitate care sunt necesare pentrua proteja informatiile electronice se bazeaza pe o tehnologie numita crip-tografie. Cele mai multe tehnici de securitate au la baza fie o criptare cu”algoritm secret, special implementat” fie criptare cu ”algoritm cunoscut”.Criptarea poate fi implementata folosind fie o singura metoda de codificaresi decodificare a textului(algoritm simetric) sau o ımbinare de mai multialgoritmi. Fiecare tehnologie de baza necesita un alt set de concepte simecanisme de sprijin.

Certificatele digitale sunt documente ecriptate generate de Autoritateade Certificare, care confirma identitatea proprietarului unei perechi de cheiprivate sau publice.

Autentificare utilizatorAutentificarea este procesul de verificare a identitatii unui potential utiliza-tor al unui sistem. Cele mai multe mecanisme de autentificare se bazeazape o combinatie de una sau mai multe ”parole”, dispozitive de securitate(deexemplu: card de acces) si/sau caracteristici fizice(de exemplu: amprentedigitale). O combinatie comuna (numita uneori ”autentificare ın mai multi

46

Page 51: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

factori”) este autentificarea bazata pe ceva ce detii(de exemplu: cardul ban-car) si ceva ce cunosti(de exemplu: codul Pin al cardului bancar). In ceamai simpla forma a ei, autentificarea se face prin verificarea unui cod deacces sau a numelui de utilizator si a parolei introduse de catre utilizatorın momentul ın care doreste acces la sistem. Mecanismele de autentifi-care mai sofisticate includ folosirea ”cartelelor inteligente” pentru a stocaacreditarile codificare si chiar analize biometrice ale amprentelor digitale,scanarea fetei sau scanarea retinei. Autentificarea proprie nu ınseamna ac-ces la orice informatie sau serviciu specific sistemului; doar verifica, cu unanumit nivel de certitudine, daca sunteti cine pretindeti a fi.

Autorizarea accesului la informatii protejateControl accesului este uneori numit si autorizare, ın special atunci cand serefera la procesul de a determina daca un utilizator este autorizat sa aibaacces la un sistem sau o aplicatie. Accesul la o informatie poate fi acor-dat numai ın urma unei autentificari corecte, a unui utilizator autorizat cuniveluri adecvate de acces (de exemplu, un medic poate avea acces completla informatii despre pacientii proprii, dar au acces doar la informatii gen-erale sau statistici despre pacientii altor medici).

Responsabilitatea modificarilor infomatiilor protejateUtilizatorii informatiilor protejate din mediul sanatatii sunt responsabilipentru toate caile de acces, modificarile sau distribuirea informatiilor prote-jate. Orice acces neaprobat la informatiile protejate din mediul sanatatii tre-buie raportat. Jurnalele de audit se folosesc pe post de instrumente pentruınregistrarea logarilor autorizare si neautorizate ın aplicatiile si/sau serviciilesistemului, precum si pentru accesul si/sau schimbarile informatiilor prote-jate. Inspectia periodica a jurnalelor de audit este esentiala pentru a protejasecuritatea sistemului, integritatea informatiilor protejate si pastrarea statu-tului juridiciar al organizatiei.

Integritatea informatiilor protejateInformatiile protejate din mediul sanatatii trebuie sa fie reprezentate, stocatesi distribuite astfel ıncat orice ıncercare de a altera informatiile (ıncercareautorizata sau nu) sa poata fi identificata si urmarita. Un mecanism cusistem independent strans legat de informatii(de exemplu: control, CRC,semnatura digitala) asigura consolidarea, ıntarirea integritatii informatiei.

Protejarea informatiilorMecanismele de urmarire a utilizatorilor furnizeaza dovezi care nu pot ficombatute ale crearii, stergerii, modificarii sau distribuirii de informatii.Acest lucru asigura ca nici macar un utilizator autorizat sa nu poata accesa,modifica sau ımpartasi informatii si apoi sa nege aceste lucruri.

47

Page 52: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Confidentialitatea informatiilor protejateDatele dintr-un singur sistem sau datele schimbate ıntre sistemele unorunitati sanitare nu trebuie sa fie vizibile de utilizatori sau sisteme neau-torizate. Utilizatorii neautorizati pot obtine informatii importante despredatele din sistemul prin crearea unui pod (bridge) ıntre cele doua unitati.

Informatiile confidentiale nu ar trebui sa fie stocate ın texte simplepe un sistem nesigur. In cazul ın care securitatea fizica sau electronica aunui sistem este suspecta, informatiile confidentiale trebuie sa fie criptatefolosind chei care nu sunt stocate pe sisteme nesigure. In functie de naturainformatiilor, acestea pot fi stocate ıntr-un fisier text, sau stocate ca fisierecriptate ın cadrul unei baze de date.

Protejarea datelor care urmeaza sa fie trimise catre o alta unitate sani-tara se realizeaza prin codificarea acestora. Aceasta criptare se poate realizala diferite niveluri ın procesul de comunicare:

• nivelul de criptare al retelei

• nivelul de criptare al sesiunii

• criptare la nivelul aplicatiilor

Criptarea nivelului retelei este de obicei pusa ın aplicare ıntre routerele uneiretele securizate bazate pe standardul IETF IP. Aceste routere cripteazatot traficul( capacitatea utila a IP-ului) dintre ele si ıntre ele si alte routereautentificate mutual. In cazul ın care trimiterea si primirea prin retelelelocale (LAN) si asociate sunt sigure, precum si calea dintre ele este sigura(de exemplu, sa fie configurat ca o retea virtuala privata folosind nivelulretelei de criptare), atunci stratul de criptare al retelei si al sesiunii nu estenecesar.

Nivelul de criptare al retelei consta ın faptul ca informatia este crip-tata doar ıntre marginile LAN-urilor fiecarei organizatii. Informatia seregaseste ın text simplu ın cadrul fiecarui LAN si pe sistemul final al fiecareiorganizatii. Cand nu suntem siguri ca reteaua dintre sistemele de finaleste sigura, stratul de criptare al sesiunii poate fi folosit pentru a securizainformatia fiind schimbat ıntre sisteme finale independente indiferent dacareteaua ın sine este criptata sau nu. Nivelul de criptare al sesiunii este ade-sea pus ın aplicare la nivelul socket Secure Sockets Layer (SSL) atunci candse realizeaza partea hard a produsului. SSL este folosit pentru tranzactiisecurizate prin Web, aplicatii de e-mail si transfer de fisiere.

Monitorizarea accesului atunci cand vorbim de informatii confiden-tialeFiecare din mecanismele de securitate utilizate pentru a proteja sistemelesensibile si informatiile poate fi tinta pentru potentiale atacuri neautorizate.Pentru a mentine securitatea si integritatea informatiilor protejate, discretia

48

Page 53: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

este necesara, nu numai ın selectarea tehnologiei si punerea ın aplicare apoliticilor, ci si ın monitorizarea sistemelor pentru a suprinde eventualeleautentificari esuate, precum si ıncercarilor suspecte de acces. Monitorizareaeste realizata de catre audit care realizeaza o diagrama a accesarilor, aalarmelor si raporteaza evenimentele daca este necesar.

49

Page 54: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Capitolul 5

Sistem de telemonitorizare

Tele-asistenta medicala este ımbinarea mai multor sisteme electronice, teleco-municatie si tehnologia informatiei(TI), necesare ın a transfera informatiilemedicale de la un sistem de tip client la altul de tip server. Principaleleprobleme la rezolvarea carora telemedicina isi aduce contributii majore sunt:

• asistenta medicala / ingrijirea sanatatii ın locuri izolate, ın acest caztimpul putand sa fie hotarator pentru viata pacientului

• asistenta medicala la domiciliul pacientilor, atat pentru persoanelegreu deplasabile cat si pentru a micsora costurile prin evitarea spi-talizarii

• asistenta medicala de ınalta competenta

• asistenta medicala ın cooperare - discutarea unui caz medical ın comunde catre mai multi specialisti aflati ın aceeasi locatie

• medicina de urgenta primeste un ajutor substantial, uneori decisivpentru salvarea vietilor ın situatii critice, din partea sistemelor aflateın unitatile mobile

Putem observa ca astfel accesul la sistemul de sanatate national va fi maibun, desi necesita o investitie importanta ın faza de implementare a proiectu-lui, costurile vor fi mult mai mici, pe viitor, ın comparatie cu cele ınregistrateın prezent, si cel mai important aspect ıl reprezinta calitatea care va fi sem-nificativ ımbunatatita.

Aplicatia propusa consta ıntr-un sistem de telemonitorizare (figura 5.1)bazat pe doua module de transmisie ın timp real a semnelor vitale si aimaginilor video prin Internet de la o unitate sanitara secundara catre uncentru de monitorizare. Pachetul software dispune si de un camp ın carecele doua instante implicate pot schimba pareri fara ca pacientul sa poatavedea acest lucru.

50

Page 55: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Figura 5.1: Fereastra interfetei Server

51

Page 56: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Pentru o utilizare eficienta a aplicatiei este necesar ca interfata sa fieusor de utilizat de catre personalul medical.

5.1 Implementarea software a sistemului

Pentru a realiza o implementare software a interfetei Internet cat mai sim-pla si ieftina, am ales protocol de retea de comunicatii TCP/IP. Pentru aprocesa informatiile, necesare uneu sistem de telemedicina am folosit pro-gramul Microsoft Visual C# 2008 Express Edition. Schimbul de date se faceprin intermediul unui aplicatii client-server, figura 5.2.

Figura 5.2: Arhitectura client server

Pentru a facilita comunicatiia ıntre tascuri s-au utilizat fire de executie(Thread), folosind clasa ’System.Threading’. Firul de executie principaleste metoda ’main’ si atunci cand acesta se termina, se incheie si transmisia.Aplicatia poate executa ın paralel doua sau mai multe fire de executie, darın realitate un singur fir se executa la un moment dat, comutand controlulde la un thread la altul.

5.1.1 Modul server

Serverul, ın cazul de fata, este un program specific care ruleaza ın modcontinuu, cu unicul scop de a primi date de la alte programe. In cadrulaceastei aplicatie, trebuie definit modul de comunicare cu clientul si modulde interactiune server - client. Regulile de comunicare pe care trebuie sa lerespecte ambele programe sunt implementate ın cadrul protocoalelor.

Atunci cand doua aplicatii trebuie sa comunice, ele se vor cauta reciproc.Daca doua aplicatii isi recunosc reciproc protocoalele, ele pot crea o conex-iune. Responsabilitatea este a clientului de a cauta serverul initializand ocerere. Serverul creeaza un fir pe care ıl va utiliza pentru comunicarea cuclientul si ısi va transmite propria adresa catre aplicatia client ın primul saumesaj de raspuns.

52

Page 57: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

In figura 5.3 sunt prezentate facilitatile server-ului. In partea de sus a fig-urii este afisat IP statiei pe care este utilizata aplicatia, am folosit clasa ’Tc-pListener’ utilizand instructiunea (new IPEndPoint(IPAddress.Any, port))pentru a realiza acest lucru. Mai jos se va putea selecta portul pe carese va produce schimbul de date, campul este unul de tip ’TextBox’ iarinstructiunea care va realiza conexiunea este ’System.Convert.ToInt32(portStr)’din clasa mai sus mentionata. In centrul ferestrei se afla un camp (ex.: Client# 1 connected) care va prezenta ın permanenta starea sistemului.

Figura 5.3: Icon-urile servarului

Utilizatorul are la dispozitie 4 butoane care ii ofera tot ceea ce are nevoiepentru a initia o conexiune si pentru a vizualiza datele primite de la un client.Pentru initializarea conexiunii butonul Start Server va deschide un thread(m mainSocket.BeginAccept (new AsyncCallback (OnClientConnect)), iarbutonul Stop Server va ıntrerupe legatura server-client (CloseSockets();),ıntrerupand firul de executie.

Cele doua butoane de Start si Stop vor fi utilizate pentru a porni respec-tiv a ıntrerupe fluxul de date. De exemplu, daca un pacient va avea nevoiede o supraveghere pe o durata de timp mai mare, medicul va ıntrerupe (apasand butonul Stop) fluxul de date, si ıl va reporni ( apasand butonulStart) atunci cand va avea nevoie, astfel se vor evita blocajele.

5.1.2 Modul client

Pentru implementarea aplicatiei client ın C#, se foloseste clasa ’TcpClient’precizand IP-ul (GetIP()) respectiv portul server-ului. Atunci cand un client

53

Page 58: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

lanseaza o cerere de conectare ( utilizand butonul Conectare), metoda ’Ac-ceptTcpClient’ va returna soclul server-ului (un obiect de tip TcpClient),prin care se va realiza comunicarea dintre cele doua aplicatii. De asemeneaclientul va verifica daca legatura a fost realizata corect (CheckForIllegal-CrossThreadCalls).

Figura 5.4: Fereastra Client

Sincronizarea celor doua fire de executie este vitala si previne deadlock-ul si bottleneck-urile posibile ın situatiile de transfer de date. Pentru aasigura sincronizarea, mediul de dezvoltare pune la dispozitie metoda ’Syn-chronize()’, dar server-ul este nucleul functionarii corecte si eficiente a arhi-tecturii propuse.

Aplicatia se va testa pornind prima data serverul si apoi clientul. Pentrua ıntrerupe conexiunea se va apasa butonul Deconectare.

5.2 Modul Chat

Am considerat util crearea unui camp de chat, astfel se va pastra o discretieıntre asistenti si pacient. Recomandarile medicilor care se afla la unitateacentrala se vor auzi ın difuzoarele ambulantei, iar pacientul va auzi ce seıntampla ın jurul sau. Prin utilizarea acestui camp se vor evita eventualeleneplaceri. Fereasta este prezentata ın figura 5.5.

Utilizatorul va avea accesul la campul de jos, acolo va scrie informatiicare vor fi stransmise, prin apasarea butonului Trimite (obiectul creeat ’obj-Data’ va trimite informatia codata bit cu bit ’System.Text. Encoding.ASCII.

54

Page 59: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Figura 5.5: Fereastra Chat

GetBytes (objData.ToString())’ ).Casuta de sus va contine textul primit de la operatorii aflati la server

(afisarea este realizata ıntr-o rubrica ’MessageBox.Show (se.Message)’ prinintermediul instructiunii ’richTextBoxReceivedMsg. AppendText (szData)care tipareste string-ul’ ).

5.3 Modul video

Video-conferinta presupune ca mai multi participanti sa poata comunicasonor si vizual ıntre ei, ca si cand s-ar afla ın aceeasi sala. In cazul de fatasistemul este configurat pentru o legatura de tipul punct-la-punct (point-to-point).

Standardele actuale recunoscute pe plan mondial pentru aparatura devideo-conferinta sunt: H.320 pentru video - conferintele ISDN si H.323 pen-tru video-conferintele ın cadrul retele TCP/IP. Iar ın ceea ce consta rata detrasnfer pentru a asigura o calitate satisfacatoare a imaginii este de 768Kbps,astfel se obtin 30 de frame-uri pe secunda.

Pentru realizarea acestui tip de comunicatie s-a utilizat clasa ’WebCam-Control’ care asigura interfata cu utilizatorul. Fereastra care reda imaginivideo este ilustrata ın figura care urmeaza.

In continuare voi descrie succint cateva din instructiunile / metodelefolosite, care au o importanta mai mare:

• FindCaptureDevice() - identifica dispozitivul

• System.Drawing.SizeF (6F, 13F) - metoda seteaza dimensiunile imag-inii primite pentru a se potrivi cu fereastra utilizatorului

• GetInterfaces() - preia blocurile de date

• this.mediaEventEx.FreeEventParams (evCode, evParam1, evParam2)- seteaza parametrii pentru a evita blocajele de date

55

Page 60: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Figura 5.6: Modul video

• CaptureGraphBuilder.SetStream (this.graphBuilder); - ıncarca imag-inile primite de la camera

• this.videoWindow.put Visible(OABool.True) - face ca imaginea sa poatafi afisata

• this.videoWindow.NotifyOwnerMessage(m.HWnd, m.Msg, m.WParam.ToInt32(), m.LParam.ToInt32()) - metoda SendMessage transmitemesaje ferestrei de captura. Sunt necesare diferite supraıncarcari alemetodei SendMessage deoarece mesajele transmise folosesc parametriide formate diferite

• ApplicationException - afiseaza mesaje de eroare ın functie de prob-lemele pe care le ıntampina

Fereastra utilizator contine un control ’PictureBox’ ın care se afiseaza cadrelepreluate de la camera web. In clasa ’WebCamControl’ se creaza o instantaa clasei care porneste si opreste fluxul de date.

5.4 Modul grafice

Sistemul realizat va permite monitorizare continua a semnelor vitale alepacientului aflat ın unitatile sanitare mobile sau fixe (de tip client). Fereastraserver-ului contine 5 grafice care ınglobeaza semnalele vitale preluate de unaparat de monitorizare. Pe primul canal este semnalul ECG, pe al doileacanal este prima derivata a semnalului ECG, pe canalul cu numarul trei

56

Page 61: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Presiunea Arterial, pe canalul patru este Presiunea Pulmonara si ın cele dinurma pe canalul cinci este redata variatia ritmului respitator, figura 5.7.

Fisierul folosit este din baza de date MIT-BIH Arrhythmia Database siare numarul 246mgh.

Figura 5.7: Semnalele vitale

Pentru configurarea modulului care traseaza graficele am folosit biblioteca’GraphLib’. Graphics.h contine functii care realizeaza initializarea acestuimodul, selectarea culorilor si setarea diferitelor caracteristici ale setului dedate.

Voi prezenta functionalitatea interfetei prin descrierea celor mai impor-tante instructiuni sau metode folosite, astfel:

• FileStream(”date.dat”, FileMode.OpenOrCreate, FileAccess.Read) -citire fisier de intrare

• display.Refresh() - executa refresh dupa fiecare unitate

• display.SetDisplayRangeX(0, 220) - fereastra curenta este descrisa de220 de unitati

• src.OnRenderYAxisLabel = RenderYLabel ; display.DataSources[j].OnRenderXAxisLabel += RenderXLabel - face scalarea dupa axa or-izontala, respectiv verticala

57

Page 62: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

• ApplyColorSchema() - seteaza culorile

• System.Drawing.Drawing2D.SmoothingMode.AntiAlias - metoda careautoseteaza calitatea imaginii, apeland un dll din windows , prin in-termediul bibliotecii ’Drawing’

• PrecisionTimer - clasa aceasta aliniaza toate semnalele

Optiunea de tiparire a semnalelorO facilitate importanta care a fost implementata este listarea datelor laimprimanta. Medicii au nevoie si de o astfel de facilitate care le va usuramunca, pentru ca nu de fiecare data au timp sa caute imaginile pe care ledoresc.

Figura 5.8: Facilitatea tiparire

Utilizatorul va avea mai multe optiuni de tiparire a semnalelor, figura 5.9.Campurile sunt de tip select si check.

a printDoc.PrinterSettings.PaperSizes - din facilitatile softului impri-mantei se alege un mod de tiparire dintre cele disponibile

b Orientation SelectedIndexChanged - se va selecta printarea pe verti-cala sau orizontala a imaginilor

c Scale.Display - exista trei optiuni pentru a afisa rezultatele: ın formatoriginal, scalare pe toata dimensiunea paginii si ıncadrare optima ınpagina.

58

Page 63: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Figura 5.9: Optiuni tiparire

59

Page 64: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Capitolul 6

Concluzii

Domeniul telemedicinei este unul ın care consumatorul trebuie sa acceadaınca cu grija, identificarea solutiilor de e-sanatate adecvate nefiind o sarcinausoara pentru cei mai multi. Este important de retinut ca, ın timp ceInternet-ul este un instrument puternic pentru obtinerea de informatii dindomeniul medicinei, totusi, el este numai una din diversitatea surselor deinformatii existente. Profesionistii si specialistii sunt cei chemati sa joacerolul principal ın instruirea si educarea consumatorilor. Instrumentele menti-onate ın aceasta lucrare sunt concepute sa usureze procesul de selectie, atatpentru medic, cat si pentru pacient.

Monitorizarea si ınregistrarea datelor ın biomedicina este parte integrataa diagnosticului medical si a mecanismului de control al tratamentului.Abordarile moderne ale tehnicii realizarii senzorilor, algoritmilor analitici,algoritmilor de compresie si ale tehnicii stocarii datelor ımping domeniul spreevolutie. Aceasta evolutie va reduce costurile, timpul si va oferi o solutieviabila pentru tratarea pacientilor prin serviciul de telemedicina.

Din varietatea tehnicilor fixe sau mobile se poate stabili ce tehnologie trebuiefolosita ın functie de criteriile de selectie. Luand ın considerare atat solutiileın curs de dezvoltare cat si pe cele existente deja, fiecare parte medicala darsi pacientii trebuie sa obtina cat mai multe beneficii.

Cand situatia necesita o prezentare telemetrica a sanatatii pacientului,conexiunile GSM /EGDE sau WiMAX pot fi utilizate. Cand specialistiiın medicina trebuie sa sustina o video-conferinta sau o interventie chirur-gicala ”live” , pot utiliza tehnici cu benzi largi precum xDSL sau retele IP(LAN/WAN).

Sistemul de telemedicina contine si furnizeaza informatii care sunt extrem desensibile. Divulgarea sau deteriorarea informatiilor ıntr-un mod neautorizatpoate fi catastrofala, atat pentru organizatii cat si pentru pacienti. Pen-

60

Page 65: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

tru a asigura securitatea sistemelor de telemedicina trebuie aplicate politiciadecvate de securitate, proiecte si mecanisme de securitate. In plus, tre-buie asigurat un mediu de lucru sigur si securizat. Regulile referitoare laınfiintarea unui astfel de mediu sunt coordonate de Commun Criteria.

Cel mai bun sistem de telemedicina practicat ar trebui sa ındeplineascacriteriile TCSEC si ITSEC. A fi ın conformitate cu aceste standarde asiguraatingerea unui sistem de securitate foarte bine protejat.

Sistemul de telemonitorizare va putea fi folosit ın toate situatiile de maximaurgenta, putand astfel salva vieti. Caracteristici importante sunt modulari-tatea si flexibilitatea sistemului, astfel ıncat nucleul sau va permite achizitiasi monitorizarea biosemnalelor precum si a imaginilor video. Astfel se vordeschide noi orizonturi pentru procedurile practicii medicale.

Sistemul poate fi extins cu noi tipuri de intrari de date, ceea ce ar puteadezvolta semnificativ interfata si interactiunea om-calculator.

Tehnologia informatiei si sistemul de telecomunicatii, ın cazul nostrubazata pe conexiune Internet si sisteme embedded, concura activ si eficientla cresterea calitatii deciziei medicale, mai ales in situatii ın care lipsa spe-cialistului, a profesionistului este ınca o realitate ın mileniul trei.

Telemedicina este va fi un instrument la ındemana medicilor si nu unınlocuitor al acestora.

Consider ca viata unui om este mai importanta decat costurile financiarelegate de implementarea unui sistem de telemonitorizare ın Romania.

61

Page 66: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Bibliografie

[1] Richard Wootton, Victor Patterson (2007) Introduction toTelemedicine, The Royal Society of Medicine Press , (Wiley Company), England.

[2] McDowell CA, Challis Lockyer, Adams White (1987) TeleconferincingCME programs to rural physicians, (CAN. FAM. PHYSICIAN Vol. 33:JULY 1987).

[3] Anthony Charles Norris (2005) Essentials of telemedicine and telecare,(Wiley Company) , England .

[4] Marilyn Jane Field (1999) Telemedicine: a guide to assessing telecom-munications in health care, (Springer Press), Washington .

[5] Marlene M. Maheu, Pamela Whitten, Ace Allen (2001) E-Health, tele-health, and telemedicine: a guide to start-up and success, (Wiley Com-pany) , New York .

[6] Rifat Latifi (2008) Current principles and practices of telemedicine ande-health, (IOS Press) , Amsterdam.

[7] Richard Wootton, Jennifer Batch (2005) Telepediatrics: telemedicineand child health, London .

[8] Olga Ferrer-Roca, Marcelo C. Sosa-Iudicissa (2003) Handbook oftelemedicine, (IOS Press) , Amsterdam .

[9] Gunter Burg (2006) Telemedicine and teledermatology, (KorgenAgency) , (Karger) , Basel .

[10] Yang Xiao, Hui Chen (2009) Mobile Telemedicine: A Computing andNetworking Perspective, (CRC Press) , USA .

[11] Thomas William Mayo, Thomas Wm. Mayo, American Health LawyersAssociation, Tara E. Kepler (2008) Telemedicine: survey and analysisof federal and state laws, USA.

62

Page 67: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

[12] Krzysztof Zielinski, Mariusz Duplaga, David Ingram (2006) Informa-tion Technology Solutions for Healthcare, (Springer - Verlag), London.

[13] Lodewijk Bos (2008) Mobile Telemedicine: A Medical and Care Com-punetics, Amsterdam.

[14] Ivan Chorbev, Gjorgji Madzarov, Dragan Mihajlov. (2010) WirelessTelemedicine as Part of an Integrated System for EMedicine, Replubicof Macedonia.

[15] Vintila Petrisor (2009) Tehnologia ZigBee, Romania.

[16] Jeffrey Lee, Sanjeev Oghra (2007) Biomedical Telemedicine, (CSCIE-170, January 11) Quebec.

[17] Upkar Varshney (2006) Using wireless technologies in healthcare, Geor-gia.

[18] PhysioBank, MIT-BIH database and Software Cataloghttp://ecg.mit.edu/dbinfo.html.

[19] Security Architecture for Open Systems Interconnection for CCITTApplications http://www.itu.int/itudoc/itu-t/rec/x/x500up/x800.html.

[20] G. Pekhteryev, Sahinoglu, N. Challa (2008) Real-Time and SecureWireless Health Monitoring, (Mitsubishi Electric Research Laboratories,Inc., 2008), USA.

[21] Titu I. Bajenescu (2009) Aspecte Ale Calitatii In E-Service:Telemedicina, Videoconferinte, Multimedia si Aplicatii de Banda Larga, comunicat: La Conversion, Elvetia.

63

Page 68: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Anexe

Anexa 1: Detectie QRS prin algoritmul bazat pe amplitudine siprima derivata.

clear all; close all; clc;

load(’signal100’);

ekg=SigMIT.Samples(1:8192)/SigMIT.ADCGain;

ekg_fft=fft(ekg);

% ekg=ekg-1.5850;

ekg=ekg-abs(fft(ekg(1)));

ekg_fft=fft(ekg);

fvz=250;

ekg=-ekg;

t=1/fvz:1/fvz:length(ekg)/fvz;

%AMPL. ALGORITM 1

prg1=0.01; prg2=-0.05; prah=0.01*max(ekg);

i=2:length(ekg)-1;

Y1(i)=ekg(i+1)-ekg(i-1);

dalsi=0; k=0;

for i=1:length(ekg)-26;

if Y1(i)>prg1&Y1(i+1)>prg1&Y1(i+2)>prg1,

for j=i+2:i+25,

if (Y1(j)<prg2)&(Y1(j+1)<prg2)&

(sum(Y1(i:j+1)>length(Y1(i:j+1))*prah)),

if dalsi<i,

k=k+1;

qrsAF10z(k)=i;

qrsAF10k(k)=i+40;

dalsi=i+180;

end

end

end

end

end

figure;

plot(t,ekg); hold on;

for i=1:k,

plot(qrsAF10z(i)/fvz,-0.2:0.001:0.2,’r’);

64

Page 69: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

end

title(’QRS metoda AF1 ’); xlabel(’t [s]’); ylabel(’Ampl. [mV]’);

set(gcf,’Name’,’QRS Ampl. AF1 ’,’NumberTitle’,’off’,’MenuBar’,’none’);

legend(’EKG’,’detectie QRS’);

% saveas(gcf,’QRS_AF1’,’jpg’);

Figura 1: Graficul obtinut prin aplicarea metodei AF1

% AMPL. 2

prah=0.1*max(ekg);

for i=1:length(ekg),

if ekg(i)>prah,

Y1(i)=ekg(i);

else

Y1(i)=prah;

end

end

k=0; dalsi=0;

for i=2:length(ekg)-1,

Y2(i)=Y1(i+1)-Y1(i-1);

if Y2(i)>0.01

if dalsi<i,

k=k+1;

qrsAF20z(k)=i;

qrsAF20k(k)=i+40;

dalsi=i+180;

end

end

end

figure;

65

Page 70: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

plot(t,ekg); hold on;

for i=1:k,

plot(qrsAF20z(i)/fvz,-0.2:0.001:0.2,’r’);

end

title(’QRS AF2’); xlabel(’t[s]’); ylabel(’Amplit. [mV]’);

set(gcf,’Name’,’DET QRS AF2’,’NumberTitle’,’off’,’MenuBar’,’none’);

legend(’EKG’,’Det. QRS’);

% saveas(gcf,’QRS_AF2’,’jpg’);

Figura 2: Graficul obtinut prin aplicarea metodei AF2

% AMPL. 3

prah=0.10;

i=2:length(ekg)-1;

Y1(i)=ekg(i+1)-ekg(i-1);

k=0;dalsi=0;

for i=1:length(ekg)-2,

if Y1(i)>prah&Y1(i+1)>prah&Y1(i+2)>prah&Y1(i+2)>prah,

if Y1(i)*ekg(i)>0&Y1(i+1)*ekg(i+1),

if dalsi<i,

k=k+1;

qrsAF30z(k)=i;

qrsAF30k(k)=i+40;

dalsi=i+140;

end

end

end

end

figure;

plot(t,ekg); hold on;

for i=1:k,

66

Page 71: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

plot(qrsAF30z(i)/fvz,-0.2:0.001:0.2,’r’);

end

title(’QRS metoda AF3’); xlabel(’t [s]’); ylabel(’Ampl. [mV]’);

set(gcf,’Name’,’DET QRS AF3’,’NumberTitle’,’off’,’MenuBar’,’none’);

legend(’EKG’,’Det QRS’);

% saveas(gcf,’QRS_AF3_1261’,’jpg’);

Figura 3: Graficul obtinut prin aplicarea metodei AF2

67

Page 72: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Anexa 2: Algoritmi de detectie complex qrs.

close all; clear all;

sigfile = {’sigcor1.mat’,’sigmit1.mat’,’sigmit2.mat’,

’goldstandard.mat’};

alg = {’balda’,’okada’,’menard’};

for fileNo = 1:length(sigfile),

% ************ ***********

load(char(sigfile(fileNo)));

sf = SamplingFrequency;

siglen = length(signal);

if (siglen < sf*30)

signal = signal(1:end);

else

signal = signal(1:30*sf);

end

siglen = length(signal);

smed = signal - median(signal);

% ***************** filtrare ******************

sigf = signal;

[B,A] = butter(2,0.3/sf,’high’);

sigf = filter(B,A,sigf);

[B,A] = butter(2,60/sf);

sigf = filter(B,A, sigf);

fd = 50; %

BW = 2; %

w0 = 2*pi*(fd/sf); %

omega = 2*pi*(BW/sf); %

a1 = 2*cos(w0)/(1+tan(omega/2));

a2 = (1-tan(omega/2))/(1+tan(omega/2));

B = [(1+a2)/2 -a1 (1+a2)/2];

A = [1 -a1 a2];

sigf = filter(B,A,sigf);

sfmed = sigf - median(sigf);

%sigf(find(sigf > 60)) = 60;

%sigf(find(sigf < -10)) = -5;

% ************* grafic*********

offs = 2500;

figure;

68

Page 73: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

subplot(2,1,1);

plot(signal(offs:end)); %

subplot(2,1,2);

plot(sigf(offs:end)); %

% ************* spectru *************

nb=2^13;

nb2=nb/2;

S = fft(signal(offs:end),nb2);

SF = fft(sigf(offs:end),nb2);

w=((0:nb2-1)/nb2*sf)’;

Sa=abs(S(1:nb2));

SFa=abs(SF(1:nb2));

figure; grid on; zoom on;

subplot(2,1,1);

plot(w,Sa,’b’);

xlabel(’Frekvence (Hz)’);

ylabel(’Magnituda FFT’);

title(’Spectru’);

axis([5 140 min(min(Sa(5:256))) max(max(Sa(5:256)))]);

subplot(2,1,2);

plot(w,SFa,’r’);

xlabel(’Frevcventa (Hz)’);

ylabel(’Mag. FFT’);

title(’Spectru semnal filtrat’);

axis([5 140 min(min(SFa(5:256))) max(max(SFa(5:256)))]);

figure;

for method = 1:length(alg)

subplot(3,1,method);

[xQ, yQ, xR, yR, xS, yS] = qrs_detect(sigf(offs:end), char(alg(method)));

plot(sigf(offs:end));

hold on;

plot(xQ, yQ,’g*’);

plot(xR, yR,’r*’);

plot(xS, yS,’y*’);

title(char(alg(method)));

end

end

69

Page 74: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Anexa 3: Codul aferent aplicatiei.

A. Client-ul

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Net;

using System.Net.Sockets;

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

byte[] m_dataBuffer = new byte[10];

IAsyncResult m_result;

public AsyncCallback m_pfnCallBack;

public Socket m_clientSocket;

public Form1()

{

InitializeComponent();

label2.Text = GetIP();

textBox1.Text = GetIP();

textBox2.Text = "8000";

RichTextBox.CheckForIllegalCrossThreadCalls = false;

}

String GetIP()

{

String strHostName = Dns.GetHostName();

IPHostEntry iphostentry = Dns.GetHostByName(strHostName);

String IPStr = "";

foreach (IPAddress ipaddress in iphostentry.AddressList)

{

IPStr = ipaddress.ToString();

return IPStr;

}

return IPStr;

}

70

Page 75: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

private void Form1_Load(object sender, EventArgs e)

{

}

public void WaitForData()

{

try

{

if (m_pfnCallBack == null)

{

m_pfnCallBack = new AsyncCallback(OnDataReceived);

}

SocketPacket theSocPkt = new SocketPacket();

theSocPkt.thisSocket = m_clientSocket;

m_result = m_clientSocket.BeginReceive

(theSocPkt.dataBuffer,

0, theSocPkt.dataBuffer.Length,

SocketFlags.None, m_pfnCallBack,

theSocPkt);

}

catch (SocketException se)

{

MessageBox.Show(se.Message);

}

}

public class SocketPacket

{

public System.Net.Sockets.Socket thisSocket;

public byte[] dataBuffer = new byte[1];

}

public void OnDataReceived(IAsyncResult asyn)

{

try

{

SocketPacket theSockId = (SocketPacket)asyn.AsyncState;

int iRx = theSockId.thisSocket.EndReceive(asyn);

char[] chars = new char[iRx + 1];

System.Text.Decoder d = System.Text.Encoding.UTF8.GetDecoder();

int charLen = d.GetChars(theSockId.dataBuffer, 0, iRx, chars, 0);

System.String szData = new System.String(chars);

if (richTextRxMessage.Lines.Length > 6)

richTextRxMessage.Text = "";

richTextRxMessage.Text = richTextRxMessage.Text + szData;

WaitForData();

71

Page 76: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

}

catch (ObjectDisposedException)

{

System.Diagnostics.Debugger.Log(0, "1",

"\nOnDataReceived: Socket has been closed\n");

}

catch (SocketException se)

{

MessageBox.Show(se.Message);

}

}

private void UpdateControls(bool connected)

{

button1.Enabled = !connected;

button2.Enabled = connected;

string connectStatus = connected ? "Connected" : "Not Connected";

textBoxConnectStatus.Text = connectStatus;

}

private void button1_Click(object sender, EventArgs e)

{

if (textBox1.Text == "" || textBox2.Text == "")

{

MessageBox.Show("Introduce-ti IP server si PORT\n");

return;

}

try

{

UpdateControls(false);

m_clientSocket = new Socket(AddressFamily.InterNetwork,

SocketType.Stream, ProtocolType.Tcp);

IPAddress ip = IPAddress.Parse(textBox1.Text);

int iPortNo = System.Convert.ToInt16(textBox2.Text);

IPEndPoint ipEnd = new IPEndPoint(ip, iPortNo);

m_clientSocket.Connect(ipEnd);

if (m_clientSocket.Connected)

{

UpdateControls(true);

WaitForData();

}

}

catch (SocketException se)

72

Page 77: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

{

string str;

str = "\nConnection failed,

is the server running?\n" + se.Message;

MessageBox.Show(str);

UpdateControls(false);

}

}

private void button3_Click(object sender, EventArgs e)

{

try

{

Object objData = richTextTxMessage.Text+"\n";

richTextTxMessage.Text = "";

byte[] byData = System.Text.Encoding.ASCII.GetBytes

(objData.ToString());

if (m_clientSocket != null)

{

m_clientSocket.Send(byData);

}

}

catch (SocketException se)

{

MessageBox.Show(se.Message);

}

}

private void button2_Click(object sender, EventArgs e)

{

try

{

Object objData = "~";

byte[] byData = System.Text.Encoding.ASCII.GetBytes

(objData.ToString());

if (m_clientSocket != null)

{

m_clientSocket.Send(byData);

}

}

catch (SocketException se)

{

MessageBox.Show(se.Message);

}

if (m_clientSocket != null)

{

73

Page 78: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

m_clientSocket.Close();

m_clientSocket = null;

UpdateControls(false);

}

}

}

}

B. Server-ul

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Threading;

using System.Net;

using System.Net.Sockets;

namespace GraficDisplay

{

using GraphLib;

using System.IO;

public partial class MainForm : Form

{

private int NumGraphs = 5;

private String CurExample = "STACKED";

private String CurColorSchema = "GRAY";

private PrecisionTimer.Timer mTimer = null;

private DateTime lastTimerTick = DateTime.Now;

private float[] date = new float[5800];

const int MAX_CLIENTS = 2;

public AsyncCallback pfnWorkerCallBack;

private Socket m_mainSocket;

private Socket[] m_workerSocket = new Socket[10];

private int m_clientCount = 0;

public MainForm()

{

InitializeComponent();

RichTextBox.CheckForIllegalCrossThreadCalls = false;

Label.CheckForIllegalCrossThreadCalls = false;

74

Page 79: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

display.Hide();

label2.Text = GetIP();

display.Smoothing = System.Drawing.Drawing2D.

SmoothingMode.AntiAlias;

read_file();

CalcDataGraphs();

display.Refresh();

UpdateGraphCountMenu();

UpdateColorSchemaMenu();

mTimer = new PrecisionTimer.Timer();

mTimer.Period = 40;

mTimer.Tick += new EventHandler(OnTimerTick);

lastTimerTick = DateTime.Now;

mTimer.Start();

}

public class SocketPacket

{

public System.Net.Sockets.Socket m_currentSocket;

public byte[] dataBuffer = new byte[1];

}

private void UpdateControls( bool listening )

{

button3.Enabled = !listening;

button4.Enabled = listening;

}

public void OnClientConnect(IAsyncResult asyn)

{

try

{

m_workerSocket[m_clientCount] =

m_mainSocket.EndAccept(asyn);

WaitForData(m_workerSocket[m_clientCount]);

++m_clientCount;

String str = String.Format

("Client # {0} connected", m_clientCount);

textBoxMsg.Text = str;

75

Page 80: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

m_mainSocket.BeginAccept(new AsyncCallback

(OnClientConnect), null);

}

catch (ObjectDisposedException)

{

System.Diagnostics.Debugger.Log(0, "1", "\n

OnClientConnection: Socket has been closed\n");

}

catch (SocketException se)

{

MessageBox.Show(se.Message);

}

}

public void WaitForData(System.Net.Sockets.Socket soc)

{

try

{

if (pfnWorkerCallBack == null)

{

pfnWorkerCallBack = new AsyncCallback

(OnDataReceived);

}

SocketPacket theSocPkt = new SocketPacket();

theSocPkt.m_currentSocket = soc;

soc.BeginReceive(theSocPkt.dataBuffer, 0,

theSocPkt.dataBuffer.Length,

SocketFlags.None,

pfnWorkerCallBack,

theSocPkt);

}

catch (SocketException se)

{

MessageBox.Show(se.Message);

}

}

public void OnDataReceived(IAsyncResult asyn)

{

try

{

SocketPacket socketData = (SocketPacket)

asyn.AsyncState;

76

Page 81: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

int iRx = 0;

iRx = socketData.m_currentSocket.EndReceive(asyn);

char[] chars = new char[iRx + 1];

System.Text.Decoder d = System.Text.Encoding.

UTF8.GetDecoder();

int charLen = d.GetChars(socketData.dataBuffer,

0, iRx, chars, 0);

System.String szData = new System.String(chars);

if (szData.Contains("~"))

{

m_clientCount--;

display.Hide();

webCamControl21.Hide();

}

if (richTextBoxReceivedMsg.Lines.Length > 6)

richTextBoxReceivedMsg.Text = "";

richTextBoxReceivedMsg.AppendText(szData);

WaitForData(socketData.m_currentSocket);

}

catch (ObjectDisposedException)

{

System.Diagnostics.Debugger.Log(0, "1",

"\nOnDataReceived: Socket has been closed\n");

}

catch (SocketException se)

{

MessageBox.Show(se.Message);

}

}

void ButtonStopListenClick(object sender, System.EventArgs e)

{

CloseSockets();

UpdateControls(false);

}

void CloseSockets()

{

if (m_mainSocket != null)

{

m_mainSocket.Close();

}

for (int i = 0; i < m_clientCount; i++)

{

if (m_workerSocket[i] != null)

77

Page 82: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

{

m_workerSocket[i].Close();

m_workerSocket[i] = null;

}

}

}

String GetIP()

{

String strHostName = Dns.GetHostName();

IPHostEntry iphostentry =

Dns.GetHostByName(strHostName);

String IPStr = "";

foreach (IPAddress ipaddress in iphostentry.AddressList)

{

IPStr = ipaddress.ToString();

return IPStr;

}

return IPStr;

}

private void read_file()

{

FileStream file = new FileStream("date.txt",

FileMode.OpenOrCreate, FileAccess.Read);

StreamReader sr = new StreamReader(file);

string s = sr.ReadToEnd();

string[] numere = s.Split(’;’);

int nr = Convert.ToInt32(numere[0]);

for (int i = 0; i < (numere.Length - 1);i++)

date[i] = Convert.ToInt32(numere[i+1]);

int j = 0;

for (int i = nr;i < 5800; i++)

{

if (j == nr)

j = 0;

date[i] = date[j];

j++;

}

sr.Close();

file.Close();

78

Page 83: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

}

protected override void OnClosed(EventArgs e)

{

mTimer.Stop();

mTimer.Dispose();

base.OnClosed(e);

}

private void OnTimerTick(object sender, EventArgs e)

{

if (m_clientCount == 0)

{

display.Hide();

webCamControl21.Hide();

}

if (CurExample == "ANIMATED_AUTO" )

{

try

{

TimeSpan dt = DateTime.Now - lastTimerTick;

}

}

private void RefreshGraph()

{

display.Refresh();

}

protected void CalcTrace(DataSource src, int idx)

{

Random random = new Random();

for (int i = 0; i < src.Length; i++)

{

src.Samples[i].x = i;

}

if (idx == 0)

{

for (int i = 0; i < src.Length; i++)

{

src.Samples[i].y = date[i];

}

}

79

Page 84: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

else if (idx == 1)

{

for (int i = 0; i < src.Length; i++)

{

src.Samples[i].y = date1[i];

}

}

else if (idx == 2)

{

for (int i = 0; i < src.Length; i++)

{

src.Samples[i].y = date2[i];

}

}

else if (idx == 3)

{

for (int i = 0; i < src.Length; i++)

{

src.Samples[i].y = date3[i];

}

}

else if (idx == 4)

{

for (int i = 0; i < src.Length; i++)

{

src.Samples[i].y = date4[i];

}

}

src.OnRenderYAxisLabel = RenderYLabel;

}

private void ApplyColorSchema()

{

switch (CurColorSchema)

{

case "DARK_GREEN":

{

80

Page 85: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Color[] cols = { Color.FromArgb(0,255,0),

Color.FromArgb(0,255,0),

Color.FromArgb(0,255,0),

Color.FromArgb(0,255,0),

Color.FromArgb(0,255,0) ,

Color.FromArgb(0,255,0), Color.FromArgb(0,255,0) };

for (int j = 0; j < NumGraphs; j++)

{

display.DataSources[j].GraphColor = cols[j % 7];

}

display.BackgroundColorTop =

Color.FromArgb(0, 64, 0);

display.BackgroundColorBot =

olor.FromArgb(0, 64, 0);

display.SolidGridColor = Color.FromArgb(0, 128, 0);

display.DashedGridColor = Color.FromArgb(0, 128, 0);

}

break;

case "WHITE":

{

Color[] cols = { Color.DarkRed,

Color.DarkSlateGray,

Color.DarkCyan,

Color.DarkGreen,

Color.DarkBlue ,

Color.DarkMagenta,

Color.DeepPink };

for (int j = 0; j < NumGraphs; j++)

{

display.DataSources[j].GraphColor = cols[j%7];

}

display.BackgroundColorTop = Color.White;

display.BackgroundColorBot = Color.White;

display.SolidGridColor = Color.LightGray;

display.DashedGridColor = Color.LightGray;

}

break;

case "BLUE":

{

Color[] cols = { Color.Red,

Color.Orange,

Color.Yellow,

Color.LightGreen,

Color.Blue ,

81

Page 86: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Color.DarkSalmon,

Color.LightPink };

for (int j = 0; j < NumGraphs; j++)

{

display.DataSources[j].GraphColor = cols[j%7];

}

display.BackgroundColorTop = Color.Navy;

display.BackgroundColorBot =

Color.FromArgb(0, 0, 64);

display.SolidGridColor = Color.Blue;

display.DashedGridColor = Color.Blue;

}

break;

case "GRAY":

{

Color[] cols = { Color.DarkRed,

Color.DarkSlateGray,

Color.DarkCyan,

Color.DarkGreen,

Color.DarkBlue ,

Color.DarkMagenta,

Color.DeepPink };

for (int j = 0; j < NumGraphs; j++)

{

display.DataSources[j].GraphColor =

cols[j % 7];

}

display.BackgroundColorTop = Color.White;

display.BackgroundColorBot = Color.LightGray;

display.SolidGridColor = Color.LightGray;

display.DashedGridColor = Color.LightGray;

}

break;

case "RED":

{

Color[] cols = { Color.DarkCyan,

Color.Yellow,

Color.DarkCyan,

Color.DarkGreen,

Color.DarkBlue ,

Color.DarkMagenta,

Color.DeepPink };

82

Page 87: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

for (int j = 0; j < NumGraphs; j++)

{

display.DataSources[j].GraphColor = cols[j % 7];

}

display.BackgroundColorTop = Color.DarkRed;

display.BackgroundColorBot = Color.Black;

display.SolidGridColor = Color.Red;

display.DashedGridColor = Color.Red;

}

break;

case "LIGHT_BLUE":

{

Color[] cols = { Color.DarkRed,

Color.DarkSlateGray,

Color.DarkCyan,

Color.DarkGreen,

Color.DarkBlue ,

Color.DarkMagenta,

Color.DeepPink };

for (int j = 0; j < NumGraphs; j++)

{

display.DataSources[j].GraphColor = cols[j % 7];

}

display.BackgroundColorTop = Color.White;

display.BackgroundColorBot =

Color.FromArgb(183,183,255);

display.SolidGridColor = Color.Blue;

display.DashedGridColor = Color.Blue;

}

break;

case "BLACK":

{

Color[] cols = { Color.FromArgb(255,0,0),

Color.FromArgb(0,255,0),

Color.FromArgb(255,255,0),

Color.FromArgb(64,64,255),

Color.FromArgb(0,255,255) ,

Color.FromArgb(255,0,255),

Color.FromArgb(255,128,0) };

for (int j = 0; j < NumGraphs; j++)

{

display.DataSources[j].GraphColor =

cols[j % 7];

83

Page 88: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

}

display.BackgroundColorTop = Color.Black;

display.BackgroundColorBot = Color.Black;

display.SolidGridColor = Color.DarkGray;

display.DashedGridColor = Color.DarkGray;

}

break;

}

}

protected void CalcDataGraphs( )

{

this.SuspendLayout();

display.DataSources.Clear();

display.SetDisplayRangeX(0, 220);

for (int j = 0; j < NumGraphs; j++)

{

display.DataSources.Add(new DataSource());

display.DataSources[j].OnRenderXAxisLabel +=

RenderXLabel;

switch (CurExample)

{

case "NORMAL":

this.Text = "Normal Graph";

display.DataSources[j].Length = 5800;

display.PanelLayout =

PlotterGraphPaneEx.LayoutMode.NORMAL;

display.DataSources[j].AutoScaleY = false;

display.DataSources[j].SetDisplayRangeY(-300, 300);

display.DataSources[j].SetGridDistanceY(100);

display.DataSources[j].OnRenderYAxisLabel = RenderYLabel;

break;

case "NORMAL_AUTO":

this.Text = "Normal Graph Autoscaled";

display.DataSources[j].Length = 5800;

display.PanelLayout =

PlotterGraphPaneEx.LayoutMode.NORMAL;

display.DataSources[j].AutoScaleY = true;

display.DataSources[j].SetDisplayRangeY(-250, 250);

display.DataSources[j].SetGridDistanceY(100);

84

Page 89: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

display.DataSources[j].OnRenderYAxisLabel = RenderYLabel;

break;

case "STACKED":

this.Text = "Stacked Graph";

display.PanelLayout =

PlotterGraphPaneEx.LayoutMode.STACKED;

display.DataSources[j].Length = 5800;

display.DataSources[j].AutoScaleY = false;

display.DataSources[j].SetDisplayRangeY(-80,80);

display.DataSources[j].SetGridDistanceY(100);

break;

case "VERTICAL_ALIGNED":

this.Text = "Vertical aligned Graph";

display.PanelLayout =

PlotterGraphPaneEx.LayoutMode.VERTICAL_ARRANGED;

display.DataSources[j].Length = 5800;

display.DataSources[j].AutoScaleY = false;

display.DataSources[j].SetDisplayRangeY(-300, 300);

display.DataSources[j].SetGridDistanceY(100);

break;

case "VERTICAL_ALIGNED_AUTO":

this.Text = "Vertical aligned Graph autoscaled";

display.PanelLayout = PlotterGraphPaneEx.LayoutMode.VERTICAL_ARRANGED;

display.DataSources[j].Length = 5800;

display.DataSources[j].AutoScaleY = true;

display.DataSources[j].SetDisplayRangeY(-300, 300);

display.DataSources[j].SetGridDistanceY(100);

break;

case "TILED_VERTICAL":

this.Text = "Tiled Graphs (vertical prefered)";

display.PanelLayout =

PlotterGraphPaneEx.LayoutMode.TILES_VER;

display.DataSources[j].Length = 5800;

display.DataSources[j].AutoScaleY = false;

display.DataSources[j].SetDisplayRangeY(-300, 600);

display.DataSources[j].SetGridDistanceY(100);

break;

case "TILED_VERTICAL_AUTO":

this.Text = "Tiled Graphs (vertical prefered) autoscaled";

85

Page 90: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

display.PanelLayout =

PlotterGraphPaneEx.LayoutMode.TILES_VER;

display.DataSources[j].Length = 5800;

display.DataSources[j].AutoScaleY = true;

display.DataSources[j].SetDisplayRangeY(-300, 600);

display.DataSources[j].SetGridDistanceY(100);

break;

case "TILED_HORIZONTAL":

this.Text = "Tiled Graphs (horizontal prefered)";

display.PanelLayout =

PlotterGraphPaneEx.LayoutMode.TILES_HOR;

display.DataSources[j].Length = 5800;

display.DataSources[j].AutoScaleY = false;

display.DataSources[j].SetDisplayRangeY(-300, 600);

display.DataSources[j].SetGridDistanceY(100);

break;

case "TILED_HORIZONTAL_AUTO":

this.Text = "Tiled Graphs (horizontal prefered) autoscaled";

display.PanelLayout =

PlotterGraphPaneEx.LayoutMode.TILES_HOR;

display.DataSources[j].Length = 5800;

display.DataSources[j].AutoScaleY = true;

display.DataSources[j].SetDisplayRangeY(-300, 600);

display.DataSources[j].SetGridDistanceY(100);

break;

case "ANIMATED_AUTO":

this.Text = "Animated graphs fixed x range";

display.PanelLayout =

PlotterGraphPaneEx.LayoutMode.TILES_HOR;

display.DataSources[j].Length = 402;

display.DataSources[j].AutoScaleY = false;

display.DataSources[j].AutoScaleX = true;

display.DataSources[j].SetDisplayRangeY(-300, 500);

display.DataSources[j].SetGridDistanceY(100);

display.DataSources[j].XAutoScaleOffset = 50;

display.DataSources[j].OnRenderYAxisLabel = RenderYLabel;

break;

}

}

display.DataSources[0].Name = "I";

86

Page 91: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

display.DataSources[1].Name = "II" ;

display.DataSources[2].Name = "III" ;

display.DataSources[3].Name = "IV" ;

display.DataSources[4].Name = "V";

ApplyColorSchema();

this.ResumeLayout();

display.Refresh();

}

private String RenderXLabel(DataSource s, int idx)

{

if (s.AutoScaleX)

{

//if (idx % 2 == 0)

{

int Value = (int)(s.Samples[idx].x );

return "" + Value;

}

return "";

}

else

{

int Value = (int)(s.Samples[idx].x / 200);

String Label = "" + Value + "\"";

return Label;

}

}

private String RenderYLabel(DataSource s, float value)

{

return String.Format("{0:0.0}", value);

}

protected override void OnClosing(CancelEventArgs e)

{

display.Dispose();

base.OnClosing(e);

}

private void stackedToolStripMenuItem_Click

(object sender, EventArgs e)

{

display.PanelLayout =

PlotterGraphPaneEx.LayoutMode.NORMAL;

}

87

Page 92: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

private void verticalALignedToolStripMenuItem_Click

(object sender, EventArgs e)

{

display.PanelLayout =

PlotterGraphPaneEx.LayoutMode.VERTICAL_ARRANGED;

}

private void tiledVerticallyToolStripMenuItem_Click

(object sender, EventArgs e)

{

display.PanelLayout =

PlotterGraphPaneEx.LayoutMode.TILES_VER;

}

private void tiledHorizontalyToolStripMenuItem_Click

(object sender, EventArgs e)

{

display.PanelLayout =

PlotterGraphPaneEx.LayoutMode.TILES_HOR;

}

private void noneToolStripMenuItem_Click

(object sender, EventArgs e)

{

display.Smoothing =

System.Drawing.Drawing2D.SmoothingMode.None;

}

private void antiAliasedToolStripMenuItem_Click

(object sender, EventArgs e)

{

display.Smoothing =

System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

}

private void highSpeedToolStripMenuItem_Click

(object sender, EventArgs e)

{

display.Smoothing =

System.Drawing.Drawing2D.SmoothingMode.HighQuality;

}

private void highQualityToolStripMenuItem_Click

(object sender, EventArgs e)

{

display.Smoothing =

System.Drawing.Drawing2D.SmoothingMode.HighSpeed;

}

88

Page 93: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

private void normalToolStripMenuItem_Click

(object sender, EventArgs e)

{

CurExample = "NORMAL";

CalcDataGraphs();

}

private void normalAutoscaledToolStripMenuItem_Click

(object sender, EventArgs e)

{

CurExample = "NORMAL_AUTO";

CalcDataGraphs();

}

private void stackedToolStripMenuItem_Click_1

(object sender, EventArgs e)

{

CurExample = "STACKED";

CalcDataGraphs();

}

private void verticallyAlignedToolStripMenuItem_Click

(object sender, EventArgs e)

{

CurExample = "VERTICAL_ALIGNED";

CalcDataGraphs();

}

private void

verticallyAlignedAutoscaledToolStripMenuItem_Click

(object sender, EventArgs e)

{

CurExample = "VERTICAL_ALIGNED_AUTO";

CalcDataGraphs();

}

private void tiledVerticalToolStripMenuItem_Click

(object sender, EventArgs e)

{

CurExample = "TILED_VERTICAL";

CalcDataGraphs();

}

private void

tiledVerticalAutoscaledToolStripMenuItem_Click

(object sender, EventArgs e)

{

CurExample = "TILED_VERTICAL_AUTO";

CalcDataGraphs();

89

Page 94: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

}

private void tiledHorizontalToolStripMenuItem_Click

(object sender, EventArgs e)

{

CurExample = "TILED_HORIZONTAL";

CalcDataGraphs();

}

private void tiledHorizontalAutoscaledToolStripMenuItem_Click

(object sender, EventArgs e)

{

CurExample = "TILED_HORIZONTAL_AUTO";

CalcDataGraphs();

}

private void animatedGraphDemoToolStripMenuItem_Click

(object sender, EventArgs e)

{

CurExample = "ANIMATED_AUTO";

CalcDataGraphs();

}

private void blueToolStripMenuItem_Click

(object sender, EventArgs e)

{

CurColorSchema = "BLUE";

CalcDataGraphs();

UpdateColorSchemaMenu();

}

private void whiteToolStripMenuItem_Click

(object sender, EventArgs e)

{

CurColorSchema = "WHITE";

CalcDataGraphs();

UpdateColorSchemaMenu();

}

private void grayToolStripMenuItem_Click

(object sender, EventArgs e)

{

CurColorSchema = "GRAY";

CalcDataGraphs();

UpdateColorSchemaMenu();

}

private void lightBlueToolStripMenuItem_Click

90

Page 95: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

(object sender, EventArgs e)

{

CurColorSchema = "LIGHT_BLUE";

CalcDataGraphs();

UpdateColorSchemaMenu();

}

private void blackToolStripMenuItem_Click

(object sender, EventArgs e)

{

CurColorSchema = "BLACK";

CalcDataGraphs();

UpdateColorSchemaMenu();

}

private void redToolStripMenuItem_Click

(object sender, EventArgs e)

{

CurColorSchema = "RED";

CalcDataGraphs();

UpdateColorSchemaMenu();

}

private void UpdateColorSchemaMenu()

{

blueToolStripMenuItem.Checked = false;

whiteToolStripMenuItem.Checked = false;

grayToolStripMenuItem.Checked = false;

lightBlueToolStripMenuItem.Checked = false;

blackToolStripMenuItem.Checked = false;

redToolStripMenuItem.Checked = false;

if (CurColorSchema == "WHITE")

whiteToolStripMenuItem.Checked = true;

if (CurColorSchema == "BLUE")

blueToolStripMenuItem.Checked = true;

if (CurColorSchema == "GRAY")

grayToolStripMenuItem.Checked = true;

if (CurColorSchema == "LIGHT_BLUE")

lightBlueToolStripMenuItem.Checked = true;

if (CurColorSchema == "BLACK")

blackToolStripMenuItem.Checked = true;

if (CurColorSchema == "RED")

redToolStripMenuItem.Checked = true;

}

private void UpdateGraphCountMenu()

91

Page 96: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

{

toolStripMenuItem2.Checked = false;

toolStripMenuItem3.Checked = false;

toolStripMenuItem4.Checked = false;

toolStripMenuItem5.Checked = false;

toolStripMenuItem6.Checked = false;

switch (NumGraphs)

{

case 1: toolStripMenuItem2.Checked = true; break;

case 2: toolStripMenuItem3.Checked = true; break;

case 3: toolStripMenuItem4.Checked = true; break;

case 4: toolStripMenuItem5.Checked = true; break;

case 5: toolStripMenuItem6.Checked = true; break;

}

}

private void toolStripMenuItem2_Click

(object sender, EventArgs e)

{

NumGraphs = 1;

CalcDataGraphs();

UpdateGraphCountMenu();

}

private void toolStripMenuItem3_Click

(object sender, EventArgs e)

{

NumGraphs = 2;

CalcDataGraphs();

UpdateGraphCountMenu();

}

private void toolStripMenuItem4_Click

(object sender, EventArgs e)

{

NumGraphs = 3;

CalcDataGraphs();

UpdateGraphCountMenu();

}

private void toolStripMenuItem5_Click

(object sender, EventArgs e)

{

NumGraphs = 4;

CalcDataGraphs();

UpdateGraphCountMenu();

92

Page 97: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

}

private void toolStripMenuItem6_Click

(object sender, EventArgs e)

{

NumGraphs = 5;

CalcDataGraphs();

UpdateGraphCountMenu();

}

private void display_Load(object sender, EventArgs e)

{

}

private void button1_Click(object sender, EventArgs e)

{

if (m_clientCount > 0)

{

webCamControl21.Show();

display.Show();

display.Start();

}

else

MessageBox.Show("Nici un client conectat!");

}

private void button2_Click(object sender, EventArgs e)

{

}

private void MainForm_Load(object sender, EventArgs e)

{

}

private void button3_Click(object sender, EventArgs e)

{

try

{

if (textBoxPort.Text == "")

{

93

Page 98: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

MessageBox.Show("Please enter a Port Number");

return;

}

string portStr = textBoxPort.Text;

int port = System.Convert.ToInt32(portStr);

// Create the listening socket...

m_mainSocket = new Socket(AddressFamily.InterNetwork,

SocketType.Stream,

ProtocolType.Tcp);

IPEndPoint ipLocal = new IPEndPoint(IPAddress.Any, port);

m_mainSocket.Bind(ipLocal);

m_mainSocket.Listen(4);

m_mainSocket.BeginAccept

(new AsyncCallback(OnClientConnect), null);

UpdateControls(true);

}

catch (SocketException se)

{

MessageBox.Show(se.Message);

}

}

private void button4_Click(object sender, EventArgs e)

{

CloseSockets();

UpdateControls(false);

}

private void button5_Click(object sender, EventArgs e)

{

try

{

Object objData = richTextBox1.Text+ "\n";

richTextBox1.Text = "";

byte[] byData = System.Text.Encoding.ASCII.GetBytes

(objData.ToString());

for (int i = 0; i < m_clientCount; i++)

{

if (m_workerSocket[i] != null)

{

if (m_workerSocket[i].Connected)

{

94

Page 99: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

m_workerSocket[i].Send(byData);

}

}

}

}

catch (SocketException se)

{

MessageBox.Show(se.Message);

}

}

private void richTextBox1_KeyDown

(object sender, KeyEventArgs e)

{

if (e.KeyCode == Keys.Enter)

{

button5_Click(sender, e);

}

}

}

}

C. WebCam

using System;

using System.Diagnostics;

using System.Drawing;

using System.Runtime.InteropServices;

using System.Windows.Forms;

using DirectShowLib;

using System.Runtime.InteropServices.ComTypes;

namespace WebCamControl

{

public partial class WebCamControl : UserControl

{

public enum PlayState : int

{

Stopped,

Paused,

Running,

Init

}

private PlayState CurrentState = PlayState.Stopped;

private int WM_GRAPHNOTIFY = Convert.ToInt32("0X8000", 16) + 1;

95

Page 100: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

private IVideoWindow videoWindow = null;

private IMediaControl mediaControl = null;

private IMediaEventEx mediaEventEx = null;

private IGraphBuilder graphBuilder = null;

private ICaptureGraphBuilder captureGraphBuilder = null;

public WebCamControl2()

{

InitializeComponent();

}

private void WebCamControl_Load

(object sender, System.EventArgs e)

{

this.Resize += new

System.EventHandler(WebCamControl_Resize);

CaptureVideo();

}

private void InitializeComponent()

{

this.SuspendLayout();

//

// WebCamControl2

//

this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

this.Name = "WebCamControl2";

this.Size = new System.Drawing.Size(176, 165);

this.Load += new System.EventHandler(this.WebCamControl_Load);

this.ResumeLayout(false);

}

private void CaptureVideo()

{

int hr = 0;

IBaseFilter sourceFilter = null;

try

{

GetInterfaces();

hr = this.captureGraphBuilder.SetFiltergraph

(this.graphBuilder);

DsError.ThrowExceptionForHR(hr);

sourceFilter = FindCaptureDevice();

hr = this.graphBuilder.AddFilter

96

Page 101: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

(sourceFilter, "WebCamControl Video");

DsError.ThrowExceptionForHR(hr);

hr = this.captureGraphBuilder.RenderStream

(PinCategory.Preview, MediaType.Video, sourceFilter, null, null);

Debug.WriteLine(DsError.GetErrorText(hr));

DsError.ThrowExceptionForHR(hr);

Marshal.ReleaseComObject(sourceFilter);

SetupVideoWindow();

hr = this.mediaControl.Run();

DsError.ThrowExceptionForHR(hr);

this.CurrentState = PlayState.Running;

}

catch (Exception ex)

{

MessageBox.Show("An unrecoverable error has

occurred.\r\n" + ex.ToString());

}

}

private void GetInterfaces()

{

this.graphBuilder = (IGraphBuilder)(new FilterGraph());

this.captureGraphBuilder = (ICaptureGraphBuilder2)

(new CaptureGraphBuilder2());

this.mediaControl = (IMediaControl)this.graphBuilder;

this.videoWindow = (IVideoWindow)this.graphBuilder;

this.mediaEventEx = (IMediaEventEx)this.graphBuilder

int hr = this.mediaEventEx.SetNotifyWindow

(this.Handle, WM_GRAPHNOTIFY, IntPtr.Zero);

DsError.ThrowExceptionForHR(hr);

}

private IBaseFilter FindCaptureDevice()

{

UCOMIEnumMoniker classEnum = null;

UCOMIMoniker[] moniker = new UCOMIMoniker[1];

object source = null;

ICreateDevEnum devEnum =

(ICreateDevEnum)(new CreateDevEnum());

int hr = devEnum.CreateClassEnumerator

(FilterCategory.VideoInputDevice, out classEnum, CDef.None);

DsError.ThrowExceptionForHR(hr);

97

Page 102: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Marshal.ReleaseComObject(devEnum);

int none = 0;

if (classEnum.Next(moniker.Length, moniker, out none) == 0)

{

Guid iid = typeof(IBaseFilter).GUID;

moniker[0].BindToObject(null, null, ref iid, out source);

}

else

{

throw new ApplicationException

("Unable to access video capture device!");

}

Marshal.ReleaseComObject(moniker[0]);

Marshal.ReleaseComObject(classEnum);

return (IBaseFilter)source;

}

private void SetupVideoWindow()

{

int hr = 0;

hr = this.videoWindow.put_Owner(this.Handle);

DsError.ThrowExceptionForHR(hr);

hr = this.videoWindow.put_WindowStyle

(WindowStyle.Child | WindowStyle.ClipChildren);

DsError.ThrowExceptionForHR(hr);

WebCamControl_Resize(this, null);

hr = this.videoWindow.put_Visible(OABool.True);

DsError.ThrowExceptionForHR(hr);

}

protected override void WndProc(ref Message m)

{

if (m.Msg == WM_GRAPHNOTIFY)

{

HandleGraphEvent();

}

if (this.videoWindow != null)

{

m.WParam.ToInt32() = m.LParam.ToInt32();

}

base.WndProc(ref m);

}

98

Page 103: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

private void HandleGraphEvent()

{

int hr = 0;

EventCode evCode = 0;

int evParam1 = 0;

int evParam2 = 0;

while (this.mediaEventEx != null &&

this.mediaEventEx.GetEvent

(out evCode, out evParam1, out evParam2, 0) == 0)

{

hr = this.mediaEventEx.FreeEventParams

(evCode, evParam1, evParam2);

DsError.ThrowExceptionForHR(hr);

}

}

private void ReleaseInterfaces()

{

if (this.mediaControl != null)

this.mediaControl.StopWhenReady();

this.CurrentState = PlayState.Stopped;

if (this.mediaEventEx != null)

this.mediaEventEx.SetNotifyWindow

(IntPtr.Zero, WM_GRAPHNOTIFY, IntPtr.Zero);

if (this.videoWindow != null)

{

this.videoWindow.put_Visible(OABool.False);

this.videoWindow.put_Owner(IntPtr.Zero);

}

Marshal.ReleaseComObject(this.mediaControl);

this.mediaControl = null;

Marshal.ReleaseComObject(this.mediaEventEx);

this.mediaEventEx = null;

Marshal.ReleaseComObject(this.videoWindow);

this.videoWindow = null;

Marshal.ReleaseComObject(this.graphBuilder);

this.graphBuilder = null;

99

Page 104: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

Marshal.ReleaseComObject(this.captureGraphBuilder);

this.captureGraphBuilder = null;

}

private void WebCamControl_Resize(object sender, System.EventArgs e)

{

if (this.videoWindow != null)

this.videoWindow.SetWindowPosition

(0, 0, this.Width, this.ClientSize.Height);

}

}

}

C. Facilitatea printare

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Drawing.Printing;

namespace GraphLib

{

public partial class PrintPreviewForm : Form

{

private PrintDocument printDoc = new PrintDocument();

private PlotterGraphPaneEx gpane = null;

private String strDefaultPrinter = String.Empty;

private bool bBestScale = false;

private bool bPageScale = false;

private bool bUnscaled = false;

private bool bLandscape = false;

private int selPrinterIndex = -1;

public PrintPreviewForm()

{

InitializeComponent();

printPreviewCtrl.Zoom = 1;

rb_BestFit.Checked = true;

rb_Scale.Checked = false;

rb_Unscaled.Checked = false;

cb_Orientation.SelectedIndex = 0;

100

Page 105: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

printDoc.PrintPage += new

PrintPageEventHandler(printDoc_PrintPage);

this.VisibleChanged +=

new EventHandler(OnVisibleChanged);

FormClosing +=

new FormClosingEventHandler(OnFormClosing);

}

void FillInInstalledPrinters()

{

strDefaultPrinter =

printDoc.PrinterSettings.PrinterName;

cb_Printer.Items.Clear();

foreach (String strPrinter in

PrinterSettings.InstalledPrinters)

{

cb_Printer.Items.Add(strPrinter);

if (strPrinter == strDefaultPrinter)

{

cb_Printer.SelectedIndex =

cb_Printer.Items.IndexOf(strPrinter);

}

}

}

void OnVisibleChanged(object sender, EventArgs e)

{

if (this.Visible)

{

bLandscape = cb_Orientation.SelectedIndex == 1;

FillInInstalledPrinters();

FillInPaperSizes();

UpdateScaleRadioButtons();

InvalidatePrintPreview();

}

else

{

}

}

void OnFormClosing(object sender, FormClosingEventArgs e)

{

this.Hide();

101

Page 106: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

e.Cancel = true;

}

void UpdateScaleRadioButtons()

{

bBestScale = rb_BestFit.Checked;

bPageScale = rb_Scale.Checked;

bUnscaled = rb_Unscaled.Checked;

}

double AutoZoomPreview()

{

float zoom = 1.0f;

float step = 0.05f;

float PaperWidth =

printDoc.DefaultPageSettings.PaperSize.Width;

float PaperHeight =

printDoc.DefaultPageSettings.PaperSize.Height;

if (bLandscape)

{

PaperHeight =

printDoc.DefaultPageSettings.PaperSize.Width * zoom;

PaperWidth =

printDoc.DefaultPageSettings.PaperSize.Height * zoom;

}

while (zoom > 0.1f)

{

double CurW = PaperWidth * zoom;

double CurH = PaperHeight * zoom;

if (splitContainer1.Panel1.Width < (CurW+10)

|| splitContainer1.Panel1.Height < (CurH+10))

{

zoom -= step;

}

else

{

break;

}

}

return zoom;

}

void FillInPaperSizes()

{

102

Page 107: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

cb_PaperSize.Items.Clear();

foreach (PaperSize s in

printDoc.PrinterSettings.PaperSizes)

{

cb_PaperSize.Items.Add(s.PaperName.ToString());

}

if (cb_PaperSize.SelectedIndex == -1 ||

cb_PaperSize.SelectedIndex >= cb_PaperSize.Items.Count)

{

int idx = cb_PaperSize.Items.IndexOf

(printDoc.DefaultPageSettings.PaperSize.PaperName);

if (idx >= 0 && idx < cb_PaperSize.Items.Count)

{

cb_PaperSize.SelectedIndex = idx;

}

else

{

cb_PaperSize.SelectedIndex = 0;

}

}

}

void InvalidatePrintPreview()

{

printDoc.DefaultPageSettings.Landscape = bLandscape;

printPreviewCtrl.Document = printDoc;

printPreviewCtrl.Document.DocumentName = "Preview";

printPreviewCtrl.Zoom = AutoZoomPreview();

printPreviewCtrl.InvalidatePreview();

}

public PlotterGraphPaneEx GraphPanel

{

set

{

gpane = value;

}

}

private void AutoScaleDocument

(ref float w, ref float h, ref float x, ref float y)

{

float CurGraphWidth = gpane.Width;

float CurGraphHeight = gpane.Height;

float CurPaperWidth =

103

Page 108: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

printDoc.DefaultPageSettings.PaperSize.Width;

float CurPaperHeight =

printDoc.DefaultPageSettings.PaperSize.Height;

if (bLandscape)

{

CurPaperWidth =

printDoc.DefaultPageSettings.PaperSize.Height;

CurPaperHeight =

printDoc.DefaultPageSettings.PaperSize.Width;

}

if (bPageScale)

{

CurGraphWidth = CurPaperWidth;

CurGraphHeight = CurPaperHeight;

}

if (bBestScale)

{

float zoom = 1.0f;

float step = 0.05f;

if (CurGraphWidth > (CurPaperWidth ) ||

CurGraphHeight > (CurPaperHeight ))

{

// scale down

while ((zoom * gpane.Width > CurPaperWidth ||

zoom * gpane.Height > CurPaperHeight) && zoom > step)

{

zoom -= step;

}

zoom -= step;

}

else if (CurGraphWidth < CurPaperWidth &&

CurGraphHeight < CurPaperHeight)

{

while (((zoom+step) * gpane.Width <

CurPaperWidth && (zoom+step) * gpane.Height <

CurPaperHeight) && zoom > step)

{

zoom += step;

}

}

CurGraphWidth = zoom * gpane.Width;

104

Page 109: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

CurGraphHeight = zoom * gpane.Height;

}

w = CurGraphWidth;

h = CurGraphHeight;

// center print

x = (CurPaperWidth - w) / 2.0f;

y = (CurPaperHeight - h) / 2.0f;

}

private void printDoc_PrintPage

(object sender, PrintPageEventArgs e)

{

if (gpane != null)

{

float x=0, y=0, w=gpane.Width, h=gpane.Height;

AutoScaleDocument(ref w, ref h, ref x, ref y);

e.Graphics.SmoothingMode =

System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

gpane.PaintControl(e.Graphics, w, h, x, y, false);

}

}

private void bt_print_Click(object sender, EventArgs e)

{

if (printDoc != null)

{

printDoc.Print();

this.Hide();

}

}

private void bt_Cancel_Click(object sender, EventArgs e)

{

this.Hide();

}

private void cb_PaperSize_SelectedIndexChanged

(object sender, EventArgs e)

{

if (cb_PaperSize.SelectedIndex >= 0 &&

cb_PaperSize.SelectedIndex < cb_PaperSize.Items.Count)

{

foreach (PaperSize s in

printDoc.PrinterSettings.PaperSizes)

{

105

Page 110: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

if (s.PaperName ==

(string)cb_PaperSize.Items[cb_PaperSize.SelectedIndex])

{

printDoc.DefaultPageSettings.PaperSize = s;

InvalidatePrintPreview();

}

}

}

}

private void rb_BestFit_CheckedChanged

(object sender, EventArgs e)

{

if (rb_BestFit.Checked)

{

rb_Scale.Checked = !rb_BestFit.Checked;

rb_Unscaled.Checked = !rb_BestFit.Checked;

}

UpdateScaleRadioButtons();

InvalidatePrintPreview();

}

private void rb_Scale_CheckedChanged

(object sender, EventArgs e)

{

if (rb_Scale.Checked)

{

rb_BestFit.Checked = !rb_Scale.Checked;

rb_Unscaled.Checked = !rb_Scale.Checked;

}

UpdateScaleRadioButtons();

InvalidatePrintPreview();

}

private void rb_Unscaled_CheckedChanged

(object sender, EventArgs e)

{

if (rb_Unscaled.Checked)

{

rb_Scale.Checked = !rb_Unscaled.Checked;

rb_BestFit.Checked = !rb_Unscaled.Checked;

}

UpdateScaleRadioButtons();

InvalidatePrintPreview();

}

106

Page 111: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

private void cb_Printer_SelectedIndexChanged

(object sender, EventArgs e)

{

selPrinterIndex = cb_Printer.SelectedIndex;

if (selPrinterIndex >= 0 && selPrinterIndex <

cb_Printer.Items.Count)

{

printDoc.PrinterSettings.PrinterName =

(string)cb_Printer.Items[selPrinterIndex];

this.Text = "Print Preview - " +

printDoc.PrinterSettings.PrinterName;

}

FillInPaperSizes();

InvalidatePrintPreview();

}

private void cb_Orientation_SelectedIndexChanged

(object sender, EventArgs e)

{

if (cb_Orientation.SelectedIndex == 0)

{

bLandscape = false;

}

else

{

bLandscape = true;

}

InvalidatePrintPreview();

}

private void cb_PrintBackground_CheckedChanged

(object sender, EventArgs e)

{

InvalidatePrintPreview();

}

private void printPreviewCtrl_Click

(object sender, EventArgs e)

{

}

private void groupBox1_Enter

(object sender, EventArgs e)

}

107

Page 112: telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

}

108