P. 1
telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

telemedicina - Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

|Views: 571|Likes:
Published by Octavian Manaila
Proiectarea unui sistem avansat pentru cazurile de urgenta medicala
Proiectarea unui sistem avansat pentru cazurile de urgenta medicala

More info:

Published by: Octavian Manaila on Oct 31, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF or read online from Scribd
See more
See less

05/15/2013

Sections

Universitatea Politehnica Bucure¸sti

Facultatea de Automatic˘a ¸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:
M˘an˘ail˘a Marius Octavian
Bucure¸sti
- 2010 -
Cuprins
1 Telemedicina 1
1.1 Definirea conceptului de Telemedicin˘a . . . . . . . . . . . . . 2
1.2 Clasificare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Cont ¸inut ¸si caracteristici . . . . . . . . . . . . . . . . . . . . . 5
1.4 Bariere ˆın telemedicin˘a . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Domenii de dezvoltarea a proiectelor de
telemedicin˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.6 Etapele dezvolt˘arii unui proiect de
telemedicin˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.7 Evaluare ¸si deontologie ˆın telemedicin˘a . . . . . . . . . . . . . 6
2 Achizit ¸ia ¸si prelucrarea datelor biomedicale 7
2.1 Monitorizarea ¸si ˆınregitrarea testelor medicale . . . . . . . . . 8
2.2 Achizit ¸ie semnal . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Algoritmi de procesare a semnalelor . . . . . . . . . . . . . . 12
2.3.1 Algoritmi de detect ¸ie bazat ¸i pe amplitudine ¸si prima
derivat˘a . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4 Compresia semnalelor biomedicale . . . . . . . . . . . . . . . 16
3 Transmisia datelor 22
3.1 Prezentarea general˘a a sistemului de
telecomunicat ¸ii . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.1 Ret ¸ele PSTN . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.2 Ret ¸ele ISDN . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.3 Ret ¸ele TCP/IP . . . . . . . . . . . . . . . . . . . . . . 25
3.1.4 Ret ¸ele prin fibr˘a optic˘a . . . . . . . . . . . . . . . . . 25
3.1.5 Ret ¸ele xDSL . . . . . . . . . . . . . . . . . . . . . . . 26
3.2 Utilizarea ret ¸elelor f˘ar˘a fir . . . . . . . . . . . . . . . . . . . . 26
3.2.1 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.2 ZigBee . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.3 GSM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.4 UMTS . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.5 WLAN . . . . . . . . . . . . . . . . . . . . . . . . . . 32
i
3.2.6 Comunicatii prin satelit . . . . . . . . . . . . . . . . . 33
3.3 Standardul de comunicat ¸ie ¸si imagistic˘a medical˘a . . . . . . . 34
3.4 Arhitectura ret ¸elei unit˘atilor sanitare fixe . . . . . . . . . . . 34
3.5 Arhitectura unitate sanitar˘a fix˘a - unitate sani-tar˘a mobil˘a . 35
4 Securizarea datelor ˆın telemedicin˘a 38
4.1 Norme de securitate ˆın telemedicin˘a . . . . . . . . . . . . . . 39
4.2 Modelarea unei arhitecturi de securitate . . . . . . . . . . . . 41
4.3 Tehnici de securizare a sistemului medical . . . . . . . . . . . 46
5 Sistem de telemonitorizare 50
5.1 Implementarea software a sistemului . . . . . . . . . . . . . . 52
5.1.1 Modul server . . . . . . . . . . . . . . . . . . . . . . . 52
5.1.2 Modul client . . . . . . . . . . . . . . . . . . . . . . . 53
5.2 Modul Chat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.3 Modul video . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.4 Modul grafice . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6 Concluzii 60
Bibliografie 62
Anexe 64
ii
Capitolul 1
Telemedicina
Una dintre cele mai mari provoc˘ari cu care se confrunt˘a omenirea ˆın secolul
21 este aceea de a face asistent ¸˘a medical˘a deˆınalt˘a calitate care s˘a fie disponi-
bil˘a tuturor. O asemenea viziune a fost exprimat˘a de c˘atre Organizat ¸ia
Mondial˘a a S˘an˘at˘at ¸ii (WHO) ¸si a fost adoptat˘a ca o strategie a secolului
21.[1]
ˆ
In mod tradit ¸ional, cea mai dificil˘a parteˆın realizarea unui acces echitabil
la asistent ¸a medical˘a a fost faptul c˘a prestatorul ¸si destinatarul trebuie sa
fie prezent ¸i ˆın acela¸si loc ¸si ˆın acela ¸si timp. Recentele progrese, care au
avut loc ˆın domeniul informaticii ¸si a comunic˘arii, au creat oportunit˘at ¸i f˘ar˘a
precedent pentru dep˘a¸sirea acestei probleme, prin cre¸sterea num˘arului de
modalitat ¸i ˆın care asistent ¸a medical˘a poate fi asigurat˘a. Aceasta se aplic˘a
atˆat t˘arilor ˆın curs de dezvoltare cu economii slabe sau instabile cˆat ¸si ˆın
t ¸˘arile industrializate. Posibilit˘at ¸ile de utilizare a noilor tehnologii pot duce
la o ˆımbun˘at˘at ¸ire a furniz˘arii de s˘an˘atate (acest domeniu poart˘a numele de
telemedicin˘a ), iar acest lucru ˆıncepe s˘a fie recunoscut tot mai mult. WHO
a declarat c˘a va recomanda tuturor membrilor s˘ai s˘a ˆıncerce s˘a adopte, ˆın
cel mai scurt timp, o astfel de strategie:
” Integrat ¸i utilizarea telemedicinei ˆın politica generala. Aceasta
va fi strategia pentru atingerea eficient ¸ei maxime in domeniul
s˘an˘atat ¸ii pentru toata populat ¸ia, ˆındeplinind astfel o viziune a
unei lumi ˆın care avantajele ¸stiint ¸ei, tehnologiei ¸si dezvolt˘arii
s˘an˘at˘at ¸ii publice sunt facute echitabil pentru a fi disponibile tu-
turor oamenilor de pretutindeni.”[2]
Un astfel de angajament pentru a ˆımbunatat ¸i serviciul de s˘an˘atate, prin
utilizarea tehnologiilor informat ¸iei ¸si telecomunicat ¸iilor,este punctat ¸si de
Comisia European˘a. Comisia European˘a particip˘a la multe proiecte pentru
a ˆıncuraja o dezvoltare cˆat mai rapida ¸si mai eficient˘a a telemedicinei. Da-
torit˘a comunicatelor de pres˘a realizate de cele doua organizat ¸ii, la nivel na-
tional ¸si local, a inceput s˘a apar˘a interesul in dezvoltarea tehnologiilor exis-
1
tente pentru un serviciu de s˘an˘atate mai eficient. De exemplu, ˆın Marea Bri-
tanie, tehnologia informat ¸iei, inclusiv telemedicina se afl˘a ˆın centrul strate-
giei guvernului de a moderniza ¸si de a ˆımbunat˘at ¸i Serviciul Sanitar Nat ¸ional
(NHS). Telemedicina, zona ˆın care medicina ¸si tehnologia informat ¸iei ¸si
telecomunicat ¸iei se ˆıntrep˘atrund este parte din aceast˘a revolut ¸ie care ar
putea avea cel mai mare impact asupra serviciului de s˘an˘atate.
1.1 Definirea conceptului de Telemedicin˘a
Definit˘a larg, telemedicina este transferul pe cale electronic˘a a datelor med-
icale, imagini de ˆınalta definit ¸ie, sunete, transmisii video pe viu, ˆınregistr˘ari
referitoare la pacient, dintr-un loc ˆıntr-altul, la mare distant ¸˘a.
Acest transfer de date medicale poate utiliza diferite tehnologii, in-
cluzˆand - ˆıns˘a f˘ar˘a s˘a se limiteze la enumerarea urm˘atoare - linii telefonice
normale, ISDN, ATM, Internet, Intra-neturi ¸si satelit ¸i. Telemedicina este
folosit˘a de furnizori ˆıntr-un num˘ar din ce ˆın ce mai mare de specialit˘at ¸i care
includ dermatologia, oncologia, radiologia, chirurgia, cardiologia ¸si psihia-
tria. Tendint ¸ele observate se refer˘a la folosirea telemedicinei ˆın asigurarea
s˘an˘atat ¸ii la distant ¸˘a, cu respectarea criteriilor de calitate ˆın serviciile respec-
tive; scopurile urm˘arite sunt ˆın cre¸stere ¸si pot reduce semnificativ timpul ¸si
costurile de ˆıngrijire a pacientului, precum ¸si cele legate de transport.
Un sistem de telemedicin˘a integreaz˘a mai multe componente tehnologice
precum: educare ¸si formare profesional˘a, gestionarea informat ¸iilor medicale
(numite informatic˘a) ¸si servicii administrative, astfel formˆand o infrastruc-
tura comuna. Relat ¸ia dintre aceste componente sunt prezentate ˆın figura
1.1.
Figura 1.1: Componentele care stau la baza unui sistem de telemedicin˘a
2
Tehnologia utilizat˘a permite a¸sadar medicilor s˘a efectuezeˆımpreun˘a cerce-
t˘ari clinice, ˆın ciuda distant ¸elor geografice careˆıi separ˘a, partajˆand vizionarea
ˆınregistr˘arilor pacientului ¸si a imaginilor de diagnostic.
1.2 Clasificare
Telemedicina pot fi ˆımp˘art ¸it˘ a ˆın trei categorii principale:
• stocarea ¸si transmiterea ( store-and-forward )
• monitorizarea de la distant ¸a
• servicii interactive
Stocarea ¸si transmiterea
Tehnologia stoc˘arii ¸si transmiterii este asincron˘a ¸si este folosit˘a pentru
transferul imaginilor digitale de la o locat ¸ie la alta. Imaginea obt ¸inut˘a cu
ajutorul unei camere video digitale este stocat˘a pe suport magnetic ¸si apoi
transmis˘a spre destinat ¸ie. Tehnologia se utilizeaz˘a cu prec˘adere ˆın cazurile
mai put ¸in urgente, cˆand diagnosticul ¸si rezultatul consultat ¸iei medicale tre-
buie obt ¸inute ˆın 24-48 de ore. Imaginea digital˘a poate fi transmis˘a ˆıntre
doua puncte din cadrul aceleia¸si cl˘adiri, din cl˘adiri diferite, din localit˘at ¸i
diferite sau ˆıntre oricare doua puncte de pe glob. Aplicat ¸iile care folosesc
preponderent aceast˘a tehnologie sunt teleradiologia, telepatologia ¸si teled-
ermatologia.
Teleradiologia este cea mai larg utilizat˘a aplicat ¸ie a telemedicinei, ap˘aru-
t˘a ˆın 1950, fiind considerat˘ a ”str˘abunica” aplicat ¸iilor cu teleimagini [3].
Sistemele teleradiologice sunt compuse din aparate de captare¸si afi¸sare a
imaginilor conectate la capetele unei ret ¸ele de comunicat ¸ii. Imaginile cu
radiografiile transmise prin ret ¸ea sunt afi¸sate la receptor pe un monitor ¸si
interpretate de o aplicat ¸ie-diagnostic de calitate. Dup˘a acest proces, imag-
inile vor fi interpretate de un medic specialist radiolog, care va emite di-
agnosticul final.Solut ¸ia tradit ¸ional˘a era dat˘a de transportarea radiografiei
la medicul radiolog sau apelarea la serviciile unui radiolog care venea la
domiciliul pacientului. Datorit˘a teleradiologiei, cheltuielile se limiteaza la
obt ¸inerea frecvent ¸elor de transmisie digital˘a ¸si la achizit ¸ia echipamentelor.
Ultima noutate ˆın domeniu se refer˘a la integrarea ˆın tehnologia teleradio-
logica a sistemelor de comunicare ¸si arhivare a imaginilor.
Momentan, integrarea funct ¸ioneaz˘a doar pentru aplicat ¸iile de teleradi-
ologie care se execut˘a la nivelul unei institut ¸ii ¸si are drept scop sporirea
calit˘at ¸ii ¸si reducerea costurilor pentru serviciile de diagnosticare teleradio-
logic˘a.
3
Monitorizarea de la distant ¸˘a
Monitorizarea de la distant ¸˘a, de asemenea, cunoscut˘a sub numele de self-
monitoring/testing, permite personalului medical s˘a monitorizeze un pacient
la distant ¸˘a, folosind diverse dispozitive tehnologice. Aceast˘a metod˘a este ˆın
primul rˆand folosit˘a pentru gestionarea bolilor cronice sau a condit ¸iilor speci-
fice, cum ar fi boli de inim˘a, diabet zaharat sau astm. Aceste servicii pot
oferi rezultate comparabile cu cele tradit ¸ionale, medicul putˆand monitoriza
mai mult ¸i pacient ¸i ˆın acela¸si timp, ceea ce ˆınseamna o eficient ¸a mult mai
mare, care va genera o sc˘adere a cheltuielilor.
Servicii interactive
Tehnologia televiziunii interactive bidirect ¸ionale (two-way interactive tele-
vision) este sincron˘a ¸si se poate utilizaˆın domenii precum: psihiatrie, medici-
n˘a intern˘a, cardiologie, pediatrie, obstetric˘a-ginecologie etc. Tehnologia
aduce fat ¸˘a ˆın fat ¸˘a medicul ¸si pacientul.
Teleradiologia (transmiterea imaginilor radiologice la distant ¸˘a, dintr-un
loc ˆıntr-altul), poate fi folosit˘a ˆın numeroase scenarii. Un specialist, echipat
cu dispozitive numerice de achizi tionare a datelor pentru imaginile obt ¸inute
cu raze X, poate da consultat ¸ii unor pacient ¸i situat ¸i departe de cabinetul
s˘au radiologic. Ea permite chirurgilor s˘a revad˘a radiografiile de dinaintea
operat ¸iei ¸si pe cele obt ¸inute dup˘a efectuarea operat ¸iei, f˘ar˘a s˘a fie nevoie s˘a-¸si
vad˘a pacient ¸ii. Ea ofer˘a disponibilitatea ˆın timp a imaginilor radiologice ¸si
interpretarea acestora, atˆat ˆın cazuri de urgent ¸˘a, cˆat ¸si ˆın cazuri normale
de ˆıngrijire a s˘an˘at˘at ¸ii ˆın clinici. Ea permite a¸sadar medicilor s˘a colecteze
date asupra pacientului, inclusiv radiografii, pentru prezentarea de cazuri
medicilor speciali¸sti prin intermediul unei videoconferint ¸e, evitˆand c˘al˘atorii
inutile pentru pacient ¸si gr˘abind terapia.
Un sistem de teleradiologie const˘a dintr-o sect ¸ie de obt ¸inere a imaginii ¸si
una de afi¸sare ¸si interpretare a ei, conectate printr-un sistem de comunicat ¸ie
(de pild˘a, o ret ¸ea).
Imaginile se obt ¸in, de obicei, cu ajutorul unui dispozitiv de numerizare
pe film care transform˘a radiografiile convent ¸ionale ˆıntr-o form˘a digital˘a iar
cele mai noi aparate dispun de aceast˘a form˘a digital˘a, ˆın vederea transmisiei
lor pe o ret ¸ea de telecomunicat ¸ii. Pentru numerizare se folosesc doar tehnici
diferite care utilizeaz˘a fie lasere, fie charged coupled devices (CCD). Dispozi-
tivele cu laser ofer˘a un foarte bun contrast ¸si o foarte bun˘a definit ¸ie spat ¸ial˘a,
dar sunt mai scumpe decˆat dispozitivele de numerizare CCD. Acestea din
urm˘a ofer˘a o definit ¸ie spat ¸iala comparabil˘a, ˆıns˘a contrastul lor sau definit ¸ia
tonurilor pe scar˘a de culori gri (de la alb spre negru) este mai put ¸in bun˘a.
Cu toate acestea, ele sunt mai eficiente din punctul de vedere al costului, au
dimensiuni mai mici ¸si sunt mai u¸sor de ˆıntret ¸inut .
O alternativ˘a la captarea imaginilor pe un film obit ¸nuit, urmat˘a de nu-
merizare, este radiografia computerizata (Computed Radiography CR). CR
4
folose¸ste pl˘aci de fosfor pentru memorizare, cu scopul de a obt ¸ine imagini nu-
merizate ¸si ofer˘a o dinamic˘a mai larg˘a, deosebit de util˘aˆın aplicat ¸ii cum ar fi
aparatele portabile de radiografie. Cum CR este ast˘azi foarte r˘aspˆandit˘a iar
folosirea ei ˆın cre¸stere, numerizarea filmului s-ar putea s˘a devin˘a, cu timpul,
ˆınvechit˘a.
Dup˘a obt ¸inerea imaginilor, acestea sunt transmise ˆıntr-un centru de in-
terpretare care folose¸ste ret ¸ele locale (Local Area Networks LANs) sau ret ¸ele
distante (Wide Area Networks WANs). O ret ¸ea local˘a LAN este un mediu
de transmisie partajat de toate stat ¸iile conectate iar zona ei de acoperire se
limiteaz˘a la o arie local˘a, f˘ar˘a s˘a traverseze vreo zon˘a public˘a.
ˆ
In general,
LANs au un diametru de serviciu de cˆat ¸iva kilometri ¸si sunt proprietatea
unei singure organizat ¸ii care le gestioneaz˘a.
ˆ
In mod tipic, WANs acoper˘a
regiuni ˆıntregi, ba chiar t ¸˘ari.
Unul din principalele scopuri ale telemedicinei, stabilit chiar de laˆınceput,
a fost asigurarea consultat ¸iilor medicale de la distant ¸˘a. Tehnologia video
interactiv˘a permite pacientului s˘a fie consultat de la distant ¸˘a de medicul
specialist, pacientul putˆand fi ˆınsot ¸it, eventual, de medicul generalist local
(medicul de familie), care s˘a prezinte cazul. Pe lˆang˘a discut ¸ia propriu- zis˘a,
medicului specialist i se pot pune la dispozit ¸ie diverse date despre pacient:
evalu˘ari stetoscopice, oftalmologice, fi¸se medicale, rezultate de laborator,
examin˘ari endoscopice, radiologice, patologice, cardiologice etc. Singura
limitare a specialistului este aceea c˘a nu poate palpa pacientul. Cu toate
acestea, consultat ¸iile efectuate ˆın practic˘a au fost declarate satisf˘ac˘atoare,
atˆat de c˘atre pacient ¸i, cˆat ¸si de c˘atre medici.
1.3 Cont ¸inut ¸si caracteristici
Lipsa
1.4 Bariere ˆın telemedicin˘a
Lipsa
1.5 Domenii de dezvoltarea a proiectelor de
telemedicin˘a
Lipsa
1.6 Etapele dezvolt˘arii unui proiect de
telemedicin˘a
Lipsa
5
1.7 Evaluare ¸si deontologie ˆın telemedicin˘a
Cre¸sterea rapid˘a a num˘arului de site-uri de e-s˘an˘atate ¸si a volumului de
informa-t ¸ii ¸si servicii disponibile online pentru consumatori se datoreaz˘a
part ¸ial inexistent ¸ei unui control riguros asupra informat ¸iei furnizate pe In-
ternet.
Consumatorii bine informat ¸i ˆı¸si pot asuma acum responsabilitatea pen-
tru multe din deciziile pe care le iau privind ˆıngrijirea s˘an˘at˘at ¸ii. Pe de
alt˘a parte, nu exist˘a nici o organizat ¸ie care s˘a r˘aspund˘a pentru suprave-
gherea serviciilor ¸si informat ¸iilor medicale furnizate online. Pentru a con-
tracara oarecum acest fenomen, unele dintre organizat ¸iile interesate s˘a asiste
consumatorii ˆın luarea deciziilor corespunz˘atoare referitoare la s˘an˘atate au
dezvoltat unele direct ¸ii care vizeaz˘a evaluarea ¸si normele deontologice din
telemedicin˘a.
Certific˘arile pentru proiectele de telemedicin˘a pot constitui un instru-
ment important pentru profesioni¸sti, pacient ¸i sau familiile acestora, ˆın ved-
erea unei select ¸ii corespunz˘atoare a site-urilor de e-s˘an˘atate. Aceste cer-
tific˘ari sunt proiectate astfel ˆıncˆat s˘a asigure existent ¸a unui nivel garantat
al calit˘at ¸ii site-urilor care subscriu reglement˘arilor. Unele aspecte privesc
domenii specifice, cum ar fi intimitatea pacientului sau securitatea informat ¸ii-
lor de natur˘a financiar˘a, ˆın timp ce altele vizeaz˘a probleme legate de calitatea
informat ¸iei oferite. Site-urile care respect˘a anumite reglement˘ari afi¸seaz˘a de
obicei un logo, indicˆand faptul c˘a dezvoltatorul proiectului de telemedicin˘a
garanteaz˘a aderarea la anumite principii. Pacient ¸ii ¸si furnizorii de s˘an˘atate
pot alege acele site-uri ca parte a procesului de selectare a proiectelor de
e-s˘an˘atate corespunz˘atoarea nevoilor proprii.
6
Capitolul 2
Achizit ¸ia ¸si prelucrarea
datelor biomedicale
Achizit ¸ia semnalului biomedical ¸si ˆınregistrarea acestuia reprezint˘a dezvolta-
rea investigat ¸iilor medicale pe parcursul timpului.
ˆ
In mod normal testele
medicale (investigat ¸iile medicale) se f˘aceau ˆıntr-un anumit moment ˆın care
medicul efectiv intra ˆın contact cu pacientul. Pe lˆang˘a testele medicale
doctorul verific˘a pulsul, ia probe de sˆange, verific˘a tensiunea arterial˘a, ia
probe de urin˘a ¸si, uneori, m˘asoar˘a temperatura corpului ¸si a transpirat ¸iei.
Toate aceste teste medicale, ˆımpreun˘a, duceau la un diagnostic sau dac˘a
nu erau suficiente se cereau investigat ¸ii suplimentare. De cele mai multe
ori investigat ¸iile suplimentare reprezint˘a teste funct ¸ionale sau teste pe baz˘a
de imagini. Astfel de teste pot fi radiologii sau analize cu ultrasunete sau
investigat ¸ii endoscopice sau angiografice. Testele funct ¸ionale pot fi elec-
trocardiografice, teste pulmonare sau teste psihologice ce m˘asoara nivelul
de stres. Toate aceste teste au rezultate destul de generaliste de¸si implic˘a
imagini sau teste funct ¸ionale dintr-o perioad˘a scurt˘a de timp. Toate aceste
rezultate generaliste sunt folosite pentru a se stabili un diagnostic corect.Pe
baza diagnosticului medicul ˆıncearc˘a s˘a prezic˘a schimb˘arile ˆın timp (de
ex: evolut ¸ia bolii sau consecint ¸ele medicat ¸iei). Pentru a prezice astfel de
schimb˘ari este nevoie de multe ori de a doua sau chiar a treia serie de analize
dup˘a cˆateva zile sau s˘apt˘amˆ ani cˆand din nou se obt ¸in rezultate generaliste.
Dar mai nou, datorit˘a aplicat ¸iilor care s-au dezvoltat, evolut ¸ia bolilor poate
fi anticipat˘a prin simul˘ari. Astfel de procedur˘a medical˘a implic˘a un num˘ar
de pa¸si (Figura 2.1).
Prin natura sa, nu se poate trage nicio concluzie ˆın leg˘atur˘a cu compor-
tamentul dinamic al sistemului fiziologic. A extinde investigat ¸ia medical˘a
ˆın mediul fiziologic este, din punct de vedere al timpului medical, princi-
palul scop al biomedicinei sau, din alt˘a perspectiv˘a a timpului, este cumu-
lul analizelor medicale. Prin aceast˘a abordare se poate obt ¸ine o mai bun˘a
ˆınt ¸elegere ˆın ceea ce prive¸ste controlul sistemului fiziologic. Diagnosticurile
7
Figura 2.1: Pa¸sii urmat ¸i de o procedur˘a medical˘a
pot fi ˆımbun˘at˘at ¸ite prin o mai bun˘a ˆınt ¸elegere a acestui sistem.
2.1 Monitorizarea ¸si ˆınregitrarea testelor medicale
ˆ
In timpul ultimelor decenii evaluarea ¸si monitorizarea testelor medicale a
devenit esent ¸ial˘a ˆın multe zone ale serviciului medical modern. Asta reflect˘a
recuno¸sterea important ¸ei controlului sistemului fiziologic. Cel mai cunoscut
caz ˆın ceea ce prive¸ste monitorizarea ˆın biomedicin˘a este electrocardiografia
(ECG). ECG-ul are cu sigurant ¸˘a cel mai vechi statut din istoria monitoriz˘arii
¸si ˆınregitr˘arii ˆın biomedicin˘a pentru c˘a este un semnal intens (amplitudine
aproape de 1mV) dar ¸si foarte robust.
Electrocardiografia poate fi folosit˘a ˆın scopul de a obt ¸ine un diagnostic
ˆın cabinetul unui medic generalist cu dispozitive relativ simple ¸si necostisi-
toare. Poate ˆınregistra ˆıntre 6 ¸si 12 semnale (linii pe achizit ¸ie de date) astfel
cardiologul poate oferi un diagnistic mai precis ˆın cazul bolnavilor ce sufer˘a
datorit˘a problemelor de inima(de exemplu: semne de ischemie sau atac de
cord). Acest˘a analiz˘a este privit˘a ca o investigat ¸ie funct ¸ional˘a ce reprezint˘a
un anumit pas (punct) din ¸sirul lung de investigat ¸ii medicale.
ˆ
In plus, acest
pas din ¸sirul lung de investigat ¸ii bazat pe ECG, poate fi ˆınregistrat ¸si pe
perioade mai lungi de timp (ex : 24 ore) pentru a detecta ¸si, poate, pentru
a explica aritmiile. Perioada de 24 de ore este de obicei aleas˘a pentru a se
obt ¸ine informat ¸ii in leg˘atur˘a cu schimb˘arile circadiene sau schimb˘arile din
timpul somnului fat ¸˘a de cele din timpul zilei. Unele probleme cardiace pot
interveni doar ˆın timpul somnului.
ˆ
Intr-o alt˘a categorie complet diferit˘a de investigat ¸ii ECG-ul, aparatul
care monitorizeaz˘a semnele vitale poate fi folosit ˆın sala de operat ¸ii sau cˆand
pacientul se afl˘a sub anestezie fiind considerat ca cel mai important aparat
ce prezint˘a starea pacientului ¸si ghideaz˘a medicul.
ˆ
In acest caz monitor-
izarea continu˘a ¸si alarmarea medicului este foarte important˘a. Diagnosticul
imediat relatat de ECG nu este ˆınregistrat permanent, acest lucru nefiind
absolut necesar.
8
Figura 2.2: Determinarea complexului QRS
ˆ
Inregistrarea analizelor biomedicale nu se rezum˘a doar la ECG (figura
2.2). Mai sunt incluse ¸si m˘asurarea tensiunii arteriale, respirat ¸ia, presiunea
pulmonar˘a ¸si saturat ¸ia de oxigen.
ˆ
In general, biosemnalele deriv˘a fie din
surse electrice cu surse apropiate (nervi, mu¸schi) fie din traductoare specifice
(presiune, debit, tensiune), care pot fi simple (elemente piezo-electrice) sau,
mai degrab˘a, semnale sofisticate ale unor sisteme de prelucrare (saturat ¸ie ˆın
oxigen).
Biosemnalele pot fi monitorizate ˆın medii dificile, cum este cazul ter-
apiei intensive, sau pot fi ˆınregistrate (stocat˘a pentru o analiz˘a ulterioar˘a)
ˆın scopul unei diagnostic˘ari. Aparatura care capteaz˘a biosemnalele a evoluat
mult ˆın ultimii ani, astfel ˆınregistr˘arile digitale au o mai bun˘a calitate ¸si nu
mai trebuiesc prelucrate ulterior. Aceste ˆınregistr˘ari se folosesc de regul˘a
pentru a se obt ¸ine 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 acela¸si
timp(creier, inim˘a, circulat ¸ie, respirat ¸ie). O astfel de monitorizare este
prezentat˘a ˆın figura 2.3.
ˆ
Inregistrarea biosemnalelor se poate realiza de
c˘atre un asistent, nefiind necesar˘a prezent ¸a unui medic. Multitudinea de
semnale este stocat˘a sau, dup˘a caz, transmis˘a la un centru care va prelucra
¸si va analiza toate datele
Biosemnalele necesit˘a interpretarea atent˘a a expert ¸ilorˆın domeniile speci-
fice ale medicinei. Prin urmare adnot˘arile ¸si expert ¸ii ce interpreteaz˘a rezul-
tatele sunt la fel de important ¸i ca ¸si datele digitale ˆın sine. Numai prin eval-
uarea adnot˘arilor poate un utilizator uman sau un algoritm s˘a ˆınt ¸eleag˘a ¸si
9
Figura 2.3: Centru de control/ stocare/ transmitere date medicale
s˘a reproduc˘a semnele specifice. Prin urmare, adnot˘arile ¸si evalu˘arile vizuale
ale expert ¸ilor pot fi considerate cheia pentru urm˘atorii pa¸si ai investigat ¸iei.
Mai ales ˆın situat ¸iile mai grele cum ar fi ˆın cazul terapiei intensive, ar fi
imposibil de interpretat f˘ar˘a adnot˘arile explicative cu privire la condit ¸iile de
ˆınregistrare ¸si intervent ¸iile medicale efectuate.
2.2 Achizit ¸ie semnal
ˆ
In primul rˆand atent ¸ia va fi mai mare asupra tipului de semnal derivat.
Majoritatea semnalelor sunt de origine electrofiziologic˘a ¸si sunt electrice prin
natur˘a (de exemplu, ECG, EEG). Aceste semnale au nevoie de amplificare
atent˘a ¸si filtrare pentru a le obt ¸ine cu un maxim de acuratet ¸e. Alte semnale
au nevoie de traductoare care sunt mai apropiate de variabilele fiziologice
care urmeaz˘a s˘a fie studiate (debit, fort ¸˘a, tensiune, mi¸scare, componente
biochimice). Traductoarele trebuie s˘a aib˘a o rat˘a mare a semnalului de
zgomot ¸si s˘a fie eficiente din punct de vedere al consumului de energie.
Dac˘a este posibil, senzorii nu ar trebui s˘a fie plasat ¸i ˆın mod excesiv pe piele.
Acest aspect implic˘a alegerea unor senzori cu multiple utiliz˘ari, dar ridic˘a
¸si problema steriliz˘arii acestor senzori.
10
Toate semnalele vitale achizit ¸ionate depind de set˘arile amplificatorului
¸si de filtrare. Acest lucru determin˘a rata zgomotului alb pentru informat ¸iile
obti ¸nute.
ˆ
In ciuda set˘arilor similare, semnalele ˆınregistrate de echipamente
sunt de multe ori diferite. Acest lucru se datoreaz˘a diferitelor modalit˘at ¸i
de implementare a senzorilor, amplificatoarelor ¸si filtrelor de diferit ¸i pro-
duc˘atori. Raportul semnal-zgomot ˆın semnale de joas˘a tensiune, cum ar fi
undele cerebrale, este deosebit de sensibil la punerea ˆın aplicare a amplifi-
catoarelor ¸si a circuitelor specifice alese. Prin urmare, datele rezultate sunt
adesea dependente de dispozitiv ¸si specificat ¸iile dispozitivului trebuie s˘a fie
bine realizate.
De asemenea, este important˘a modalitatea prin care sunt interpretate
semnalele de pe mai multe canale, sincronizarea semnalelor trebuie gˆandit˘a
ˆın am˘anunt atunci cˆand se alege echipamentul de ˆınregistrare (sau chiar con-
vertoarele analog-digitale) utilizat ˆın ˆıntreag studiu. Sincronizare ˆıntre sem-
nale devine o problem˘a serioas˘a atunci cˆand sunt ˆınregistrate date diferite
utilizˆand dispozitive diferite cu ceasuri diferite. Asta se ˆıntampl˘a ˆın cazul
ˆınregistr˘arii de lung˘a durat˘a a ECG-ului ¸si ˆın cazul ˆınregistr˘arii pe termen
lung a presiunii arteriale.
ˆ
In cazul terapiei intensive este foarte frecvent˘a
ˆınregistrarea datelor cu dispozitive diferite. Pe l˘ang˘a monitorizarea sem-
nelor vitale mai poate exista ventilator, pompe de perfuzie ¸si un sistem
al managementului lichidelor. Pentru o evaluare corect˘a trebuie asigurat˘a
pornirea ˆın acela¸si moment a tuturor dispozitivelor ¸si corectarea unei erori
de timp a vreunui dispozitiv. Diferent ¸a de aproximativ un minut pentru
o perioad˘a de 24 de ore este des ˆıntˆalnit˘a. Pentru serviciul medical nor-
mal acest timp nu este important dar pentru studiile ¸stiint ¸ifice este foarte
important.
Rata de e¸sant ¸ionare trebuie aleas˘a ˆın a¸sa fel ˆıncˆat semnalele s˘a fie re-
produse cu o calitate suficient de bun˘a astfel ˆıncˆat analiza semnalelor s˘a nu
duc˘a la un rezultat eronat. Aceste atribute sunt specifice terapiei intensive,
cardiologiei ¸si neurologiei ¸si sunt prezentate ˆın tabelul 2.1. Rezolut ¸ia digi-
tal˘a este strˆans legat˘a de precizia de m˘asurare a instrumentelor folosite.
Trebuie s˘a se ia ˆın considerare faptul c˘a senzorul ¸si caracteristicile speci-
fice ale traductorului sunt foarte importante ˆın ˆınregistrarea respirat ¸iei ˆın
cazul ˆın care se face o analiz˘a ulterioar˘a. Cele mai des ˆıntˆalnite metode con-
stau ˆın m˘asurarea cantit˘at ¸ii aerului ¸si a presiunii esofagiene datorate efor-
tului respirator. Ambele metode provoac˘a disconfort pacientului ¸si pentru
ˆınregistr˘arile de lung˘a durat˘a sunt preferate metode mai put ¸in sˆacˆaitoare
¸si obositoare. Pentru ˆınregistr˘arile mi¸sc˘arilor respiratorii, traductoarelor
piezoelectrice, centurile pneumatice ¸si traductoare de impedant ¸˘a sunt uti-
lizate ca alternative. Undele care rezult˘a au caracteristici ale semnalelor
complet diferite a¸saˆıncˆat nu poate fi realizat˘a o analiz˘a uniform˘a a respirat ¸iei.
Pentru fluxul aerului respirat se folose¸ste alt tip de termistori, termocupluri
¸si senzori pentru presiunea nazal˘a. Senzori de presiune furnizeaz˘a un sem-
nal care are o relat ¸ie de ordin doi cu fluxul actual al respirat ¸iei. Acest lucru
11
funct ¸ia
ˆındeplinit˘a
semnal frecvent ¸a
sem-
nalului
rezultatul digi-
tal
neurofiziologie electroencefalogram˘a 200 Hz 0.5 µV/bit
electroniogram˘a 200 Hz 0.2 µV/bit
aparatul respirat ¸ie nazal˘a 25 Hz -
respirator presiunea esofagian˘a 100 Hz 0.5 mmHg/bit
saturat ¸ia de oxigen 1 Hz 1%/bit
transcutanarea 1 Hz 0.5 mmHg/bit
sunetul pulmonar 5000
Hz
-
aparatul ECG 250 Hz 10 µV/bit
cardiovascular ritmul cardiac 4 Hz 1 bpm
presiunea sˆangelui 100 Hz 1 mmHg/bit
aparatura temperatura corpului 1 Hz 0.1
o
C/bit
auxiliar˘a pozit ¸ia corpului 1 Hz -
pH esofagului 1 Hz 0.1 pH/bit
Tabelul 2.1: Tabelul ilustreaz˘a cˆateva dimensiuni ale celor mai importante sem-
nale din acest domeniu.
trebuie corectat ˆınainte de analiza ulterioar˘a. Ulterior, diferent ¸ele dintre
formele de und˘a care rezult˘a sunt mai mici decˆat diferent ¸ele constatate de
semnale respiratorii colectate .
Pentru dispozitivele ce m˘ asoar˘a saturat ¸ia de oxigen sunt folosite dispos-
itive oximetrice de la diferit ¸i produc˘atori. Oximetrii pulsului folosesc set˘ari
diferite pentru diferitele variat ¸ii ale pulsului ¸si algoritme diferite cˆand cal-
culeaz˘a saturat ¸ia de oxigen, bazate pe transmiterea sau reflectarea luminii ˆın
mai multe lungimi de und˘a. Semnalul final ˆınregistrat nu este semnalul brut
folosit de oximetru ci rezultatul unui algoritm care proceseaz˘a informat ¸ia ¸si
va fi folosit ca o experient ¸˘a ulterioar˘a.
2.3 Algoritmi de procesare a semnalelor
Aplicarea metodelor de procesare a semnalelor ¸si dezvoltarea unor noi meto-
de este principalul scop al ˆınregistr˘arii ¸si evalu˘arii ˆın biomedicin˘a. Metodele
de procesare a semnalelor au fost dezvoltate pentru a observa ritmul car-
diac prin ECG, pentru a detecta ¸si a clasifica aritmii ¸si pentru a obt ¸ine
mai mult informat ¸ii despre respirat ¸ie, efort fizic si psihic. Procesarea sem-
nalelor poate ajuta la stabilirea unui diagnostic sau poate ajuta la simpli-
ficarea monitoriz˘arii pacientului ˆın timpul anesteziei dˆand alarme ˆın cazul
unor anomalii ale undelor ECG-ului sau ale b˘at˘ailor inimii ca rezultat al
unor analize ˆın timp real. Monitorizarea ˆın biomedicin˘a este, prin urmare,
12
aplicarea metodelor dezvoltate pentru a analiza seriile de timp, a proces˘arii
semnalelor ˆın domeniul biologic ¸si , ˆın special, ˆın domeniul medical.
Detect ¸ia complexului QRS este important˘a pentru procesarea semnalu-
lui ECG: calcularea intervalului RR, definirea ferestrei de c˘autare pentru
detect ¸ia undei P ¸si T, etc. Dintre toate componentele semnalului ECG,
complexul QRS, datorit˘a formei, este cel mai u¸sor de recunoscut (amplitu-
dine ¸si pant˘a mare). Obiectivul detect ¸iei QRS este acela de a determina
ˆınceputul(onset) ¸si sfˆarsitul(offset) complexului QRS. Dificultatea detect ¸iei
este crescut˘a datorit˘a prezent ¸ei zgomotului ˆın semnalul ECG, dar ¸si a carac-
teristicilor morfologice ale inimii pacientului, ˆın momentul aparit ¸iei complex-
ului QRS. De asemenea datorit˘a bolilor care afecteaz˘a ventriculele durata
complexului QRS poate varia. Toate aceste situat ¸ii necesit˘a tehnici robuste
pentru detect ¸ia complexului care s˘a poat˘a face fat ¸˘a unor situat ¸ii din cele
mai neobi¸snuite.
Se aplic˘a noi algoritmi derivat ¸i din statisticile fizice pentru a detecta ¸si a
caracteriza procesele non-lineare ce stau la baza variat ¸iilor fiziologice. ECG-
ul reprezint˘a primul criteriuˆın procesarea biosemnalelor, astfel ˆın continuare
sunt enumerat ¸i cat ¸iva algoritmi de detect ¸ie a complexului QRS:
• algoritmi bazat ¸i pe amplitudine ¸si prima derivat˘a - Amplitude and
First Derivative (AF)
• algoritmi bazat ¸i pe prima derivat˘a - First Derivative (FD)
• algoritmi bazat ¸i pe prima ¸si a doua derivat˘a - First and Second Deriva-
tive (FS)
• algoritmi bazat ¸i pe filtre digitale - Digital Filters (DF).
Cu toate c˘a exist˘a multiple variante de abord˘ari ˆın detect ¸ia QRS, metodele
bazate pe amplitudine ¸si prima derivat˘a sunt cele mai folositeˆın aplicat ¸iile de
timp real sau ˆın cele care proceseaz˘a ˆınregistr˘ari de lungimi mare, deoarece
efortul de calcul este sc˘azut.
2.3.1 Algoritmi de detect ¸ie bazat ¸i pe amplitudine ¸si prima
derivat˘a
Algoritmii care se bazeaz˘a pe acest tip de metod˘a au avantajul nesegment˘arii
datelor. Cu toate acestea s-a ar˘atat ˆıntr-un studiu comparativ al metodelor
de calcul ˆın timp real c˘a diminuarea timpilor de calcul provoac˘a cre¸sterea
erorii de detect ¸ie [12]. Aceast˘a metoda este o adaptare a algoritmului propus
de c˘atre Moriet-Mahoudeaux.
Fie X = (X[0], X[1], . . . , X[n]) un ¸sir de elemente, unde n este lungimea
ˆınregistrarii ECG. O valoare prag este calculat˘a ca fiind o parte a celei mai
mari valori pozitive a ¸sirului de elemente X.
13
A = 0.3 ×max{X[i]} , i = 1 . . . n (2.1)
Pe baza acestui ¸sir X, se calculeaz˘a prima derivat˘a ˆı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 cˆand trei valori consecutive ale primei derivate
a vectorului X, dep˘a¸sesc o valoare prag pozitiv˘a (pant˘a crescatoare), ¸si sunt
urmate ˆın urmatoarele 100ms de doua valori consecutive care dep˘asesc o
valoare prag negativ˘a (pant˘a descresc˘atoare). De asemenea toate valorile
din semnalul X care corespund valorilor vectorului Y care apart ¸in inter-
valului dintre panta crescatoare ¸si sfˆar¸situl pantei descrescˆatoare trebuie s˘a
dep˘aseasc˘a o valoare prag.
Y [i], Y [i + 1], Y [i + 2] > 0.5 (2.3)
si
Y [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 c˘atre Fraden si Neuman. Ca ¸si ˆın cazul primului algoritm, se
calculeaz˘a o amplitudine prag ca o fract ¸ie din valoarea maxim˘a a vectorului
X.
A = 0.4 ∗ max{X[i]} , i = 1 . . . n (2.6)
Pentru acest algoritm s-a propus rectificarea vectorului X astfel:
Y
0
[i] =

X[i], dac˘a X[i] ≥ 0
−X[i], dac˘a X[i] > 0
, i = 1 . . . n (2.7)
Semnalul rectificat este procesat ˆın continuare astfel:
Y
1
[i] =

Y
0
[i], dac˘a X[i] ≥ 0
A, dac˘a X[i] > 0
, i = 1 . . . n (2.8)
Se calculeaza prima derivat˘a a semnalului Y
1
:
Y
2
[i] = Y
1
[i + 1] −Y
1
[i − 1], i = 2 . . . n − 1,
Y
2
[0] = Y
2
[n] = 0 (2.9)
Un candidat QRS apare atunci cˆand o valoare din vectorul Y
2
dep˘a¸se¸ste o
valoare prag constant˘a, Y
2
[i] > 0.7, i = 1 . . . n. Un al treilea ¸si ultimul
14
algoritm care se bazeaz˘a pe amplitudine ¸si prima derivat˘a se bazeaz˘a pe
algoritmul propus de Gustafson:
Y [i] = X[i + 1] −X[i − 1], i = 2 . . . n − 1,
Y [0] = Y [n] = 0 (2.10)
ˆ
In prima derivat˘a, Y, se caut˘a valorile care dep˘asesc o valoare constant˘a
aleas˘a ˆın urma etapei de acordare a algoritmului:
Y [i] ≥ 0.15, i = 1 . . . n (2.11)
ˆ
In momentul ˆın care s-a g˘asit o valoare care s˘a satisfac˘a condit ¸ia de mai sus,
se verific˘a dac˘a ¸si urm˘atoarele 3 valori dep˘a¸sesc aceea¸si amplitudine prag:
Y [j] ≥ 0.15, j = i + 1 . . . i + 3 (2.12)
Dac˘a cele doua condit ¸ii de mai sus sunt ˆındeplinite, valoarea poate fi con-
siderat˘a un candidat QRS dac˘a urm˘atoarele dou˘a puncte respect˘a relat ¸iile
de 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 vedea
performant ¸ele algoritmului ˆın condit ¸ii lipsite de zgomot.
ˆ
In figura de mai
jos sunt prezente ˆın primul grafic semnalul ECG folosit pentru simulare,
al doilea grafic reprezint˘a prima derivat˘a, iar cel de-al treilea grafic ofer˘a
o vizualizare a performant ¸ei algoritmului. Linia neagr˘a, din partea de
jos, descrie pozit ¸ia complexului validat prelevat din fi¸sierul descarcat din
baza de date PhysioBank, MIT-BIH Arrhythmia Database. Liniile punc-
tate reprezint˘a valorile maxim admisibile ale complexului QRS corect de-
tectat. Toate complexurile detectate ˆın afara acestor intervale reprezint˘a
detect ¸ii fals pozitive. Dac˘a ˆıntre dou˘a linii punctate succesiv nu exist˘a o
line albastr˘a ¸si exist˘a una neagra, atunci avem de-a face cu o detect ¸ie fals
negativ˘a ( atunci cˆand candidatul QRS se afl˘a ˆın afara intervalului dintre
complexul QRS valid ¸si 88ms ˆınainte sau dup˘a acesta).
15
Figura 2.4: Rezultatele aplic˘arii primului algoritm pentru un semnal ECG
Pentru a stabili performant ¸ele unui electrocardiograf care are imple-
mentat un astfel de algoritm trebuie s˘a mai ad˘aug˘am semnalul de test ¸si
perturbat ¸ii datorate contract ¸iilor musculare, putˆand avea un efect nedorit
asupra rezultatelor obt ¸inute, datorit˘a frecvent ¸elor mari pe care le cont ¸in. S-
a observat c˘a pentru valori de pˆan˘a la 30-40% rezultatele sunt satisf˘ac˘atoare,
dac˘a se cre¸ste peste aceste valori, performant ¸ele se degradeaz˘a rapid.
Figura 2.5: Rezultatele aplic˘arii primului algoritm pentru un semnal ECG per-
turbat de zgomot
2.4 Compresia semnalelor biomedicale
Metoda propus˘a, pentru compresia datelor, este bazat˘a pe o modelare para-
metric˘a a versiunii transformate a semnalului. Aplicˆand acest principiu
16
parametrilor modelului ¸si ¸sirurilor de date vom obt ¸ine o rat˘a de compre-
sie care este mult ˆımbun˘at˘at ¸it˘a fat ¸˘a de majoritatea metodelor existente
AZTEC (Amplitude Zone Time Epoch Coding), CORTES (Coordinate Re-
duction Time Encoding System) sau SAPA (Scan-Along Polygonal Approx-
imation). Principala problem˘a o ˆıntˆalnit˘a la compresia datelor este mode-
larea amplitudinilor deˆınalt˘a ¸si joas˘a frecvent ¸˘a care va afecta eroarea global˘a
a criteriului de minimizare a algoritmului. Pentru eficientizarea se separ˘a
regiunea de ˆınalt˘a amplitudine ¸si joas˘a frecvent ¸˘a (HALF) ¸si amplitudine
joas˘a ¸si frecvent ¸˘a ˆınalta (LAHF) a semnalului transformat.
Pa¸sii urmat ¸i de algoritmul propus:
a. etapa de transformare
b. modelare
c. cuantizare
d. recontruct ¸ie.
Figura 2.6: Modelarea ¸si discretizarea semnalului de intrare ECG
a. Etapa de transformare
Transformata cosinus discret˘a DCT (Discrete Cosine Transform) a unei
secvent ¸e date, cu N e¸santioane este calculat ca:
S(0) =

1
N
N−1
¸
n=0
s(n) (2.15)
17
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 secvent ¸a de ˆınceput s(n) a semnalului
transformat DCT.
b. Modelare Transformata semnalului S
(k)
esteˆımp˘art ¸it˘aˆın doua secvent ¸e,
secvent ¸a HALF, S
HALF
(k) ¸si secvent ¸a LAHF, S
LAHF
(k). Aceste doua
secvent ¸e sunt aproximate ca un r˘aspuns la impuls a modelului necunoscut
S
HALF
(z) ¸si S
LAHF
(z).
S
HALF
(z) = B
0
1 +B
1
z
−1
+. . . +B
p
z
−p
1 +A
1
z
−1
+. . . +A
p
z
−p
(2.17)
, unde B
0
este cˆastigul ¸si p este ordinul de e¸santionare a modelului HALF.
S
LAHF
(z) = D
0
1 +D
1
z
−1
+. . . +S
p
z
−p
1 +C
1
z
−1
+. . . +C
p
z
−p
(2.18)
unde D
0
este cˆa¸stigul ¸si q este ordinul de e¸santionare a modelului LAHF.
Parametri B
0
, B
1
, . . . , B
p
, A
0
, A
1
, . . . , A
p
, D
0
, D
1
, . . . , D
p
¸si C
0
, C
1
, . . .
, C
p
ai modelului S
HALF
(z) ¸si S
LAHF
(z) sunt estimat ¸i folosind metoda SM
(Steiglitz - McBride).
Criteriul pentru ˆımp˘art ¸irea transformatei DCT
Fie :
S
HALF
(k) = S(k), k = 0, . . . , m
S
LAHF
(k) = S(k), k = m+ 1, . . . , N − 1
Am gasit empiric c˘a urmatorul creiteriu furnizeaz˘a rezultate satisf˘ac˘atoare.
Alegem cea mai mic˘a valoare m pentru care:
max(|S
LAHF
(k)|) ≈ 0.1 × max(|S
HALF
(k)|) (2.19)
O eroare ˆın estimarea a lui m de pˆan˘a la 20 e¸santioane poate fi tolerata.
c. Cuantizarea
Parametrii modelului A
i
, B
i
, C
i
¸si D
i
sunt foarte sensibili la cuantizare putˆand
da erori. Chiar ¸si cele mai mici cuantiz˘ari ale erorilor ˆın ace¸sti parametrii
conduc la foarte mari schimb˘ari a raspunsului ˆın impuls ¸si de aici reconsti-
tuirea se realizeaza ˆın ecuat ¸iile (2.14) ¸si (2.15) factorizate pentru a obt ¸ine
r˘ad˘acinile lor.
ˆ
In concluzie, cˆastigul este deasemenea cuantizat ¸si stocat. Polii ¸si zer-
ourile se g˘asesc ˆın perechi complex conjugate, deci numai o jum˘atate din ele
necesit˘a a fi stocate. Pentru o reconstruct ¸ie fidel˘a a formei de und˘a ECG,
num˘arul bit ¸ilor cerut ¸i pentru a fi stocate informatiile: zeroul, polul, cˆastigul
HALF ¸si LAHF, sunt 24, 22, 14, ¸si 7 respectiv.
18
d. Reconstruct ¸ie
Diagrama bloc a procesului reconstituit este ar˘atat˘aˆın figura 2.7. R˘aspunsul
la impuls al reconstituirii modelului LAHF este ad˘augat pentru reconsti-
tuirea modelului HALF. IDCT-ul acestei secvent ¸e ad˘ ugate ne dau reconsti-
tuirea ECG.
Figura 2.7: Reconstruirea semnalului ECG
Rezultate Pentru a testa eficient ¸a algoritmului s-a utilizat o ˆınregistrare
de 10 secunde, avˆand rata de 500 de e¸santioane pe secund˘a, fiecare e¸santion
avˆand rezolut ¸ia de 12 bit ¸i .
CAZ I.
ˆ
In figura 2.8a este prezentat un interval PT al semnalului ECG. Reconsti-
tuirea obt ¸inut prin modelare DCT se poate vedea ˆın figura 2.8b.
ˆ
In figura
2.8c se vede reconstruct ¸ia intervalului RR obt ¸inut ˆın urma aplic˘arii algorit-
mului HALF/LAHF. Eroarea este de 3.83%.
19
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 e¸santioane a unui semnal ECG, figura 2.9, ¸si am
obt ¸inut 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 performant ¸ei algoritmului
Calitatea transmisiei pe Internet a fost evaluat˘a folosind ca parametru obiec-
tiv PRD (percentage root mean square difference suma p˘atratic˘a medie
20
procentuala), care evalueaz˘a distorsiunile semnalului ECG reconstruit:
PRD =

¸
N−1
n=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
Capitolul 3
Transmisia datelor
Serviciile medicale ¸si aplicat ¸ii folosite ˆın medicin˘a (cum ar fi telemedic-
ina) necesit˘a metode diversificate de acces la diferite resurse ale tehnolo-
giei informat ¸iei. Acestea ar putea fi baze de date medicale sau site-uri,
ca exemple ale tehnologiilor existente pot enumera camerele video, micro-
foanele, monitoare de ˆınalt˘a rezolut ¸ie sau alte dispozitive cu fir sau f˘ar˘a fir,
care ajut˘a la monitorizarea ¸si recuperarea s˘an˘at˘at ¸ii pacientului.
ˆ
In acest
capitol voi prezenta o gam˘a larg˘a de tehnici de acces care pot fi folosite ˆın
telemedicin˘a, atˆat de c˘atre medici cˆat ¸si de c˘atre pacient ¸i. Practic accesul
este efectuat folosind internetul, dar mai exist˘a ¸si multe alte tehnici care pot
fi aplicate.
3.1 Prezentarea general˘a a sistemului de
telecomunicat ¸ii
Principalele condit ¸ii impuse de institut ¸iile medicale atunci cˆand vine vorba
despre schimbul de informat ¸ii, sunt difuzarea ¸si teleconsultat ¸iile ˆıntre diferit ¸i
utilizatori.
Diferitele opt ¸iuni de acces sunt posibile cu ajutorul dat de companiile de
telecomunicat ¸ii care dispun de o plan¸s˘a larg˘a de tehnologii precum: ret ¸ele de
band˘a larg˘a (broadband), ret ¸ele de band˘a medie (ISDN) sau ret ¸ele de band˘a
ˆıngust˘a cum ar fi liniile telefonice cu comutat ¸ie (GSM, GPRS). S-a constatat
c˘a intensitatea fluxurilor de date de intrare ¸si de ie¸sire poate varia de la 10
Mbps la cˆat ¸iva zeci de Kbps, astfel ˆıncˆat, orice utilizatori care acceseaz˘a o
baz˘a de date medical˘a prin conexiunile ˆın band˘aˆıngust˘a s˘a poat˘a avea acces.
ˆ
In plus, tendint ¸a global˘a este de a avea acces prin intermediul ret ¸elelor f˘ar˘a
fir astfel utilizatorul va dispune de o mobilitate maxim˘a .O structur˘a de
ret ¸ea tipic˘a este prezentat˘a ˆın figura 3.1.
ˆ
In cazul ˆın care o institut ¸ie are mai multe linii si det ¸ine ¸si intranet de
mare vitez˘a (cum ar fi LAN), aceasta poate fi configurat˘a ca servar. Aceast˘a
tehnic˘a este adesea folosit˘a, deoarece exist˘a multe astfel de ret ¸ele ¸si exist˘a
22
Figura 3.1: Arhitectura ret ¸ea-internet ˆın telemedicin˘a
¸si mai multe dispozitive de tip IP. Din acest motiv, aceast˘a metod˘a este
relativ necostisitoare, astfel ˆıncˆat aproape orice spital sau clinic˘a poate de-
cide s˘a se conecteze la Internet. Securizarea ¸si integritatea ˆın cadrul ret ¸elele
poate fi realizat˘a prin instalarea de firewall-uri, dispozitive speciale care fil-
treaz˘a accesul dupa anumite criterii, sau crearea de aplicat ¸ii specializate
care cripteaz˘a datele.
ˆ
In t ¸˘arile ˆın curs de dezvoltare nu multe spitale sau clinici ˆı¸si pot permite
o conexiune permanent˘a la Internet sau Intranet. Dar totu¸si pentru a avea
eficient ¸a dorit˘a este nevoie de o conexiune bun˘a la internet. Acesta este
motivul pentru care folosirea conexiunii ISDN pare a fi o solut ¸ie de com-
promis: rata de transmisie bun˘a, conexiune permanent˘a ¸si pret ¸uri relativ
sc˘azute. Exist˘a mai multe tehnici diferite utilizate pentru a accesa resursele
medicale, precum:
• ret ¸ele de telefonie diginala PSTN (Public Switched Telephone Network
• ret ¸ele ISDN (Integrated Services Digital Network)
• ret ¸ele WAN/LAN (Wide Area Network / Local Area Network )
• linii ˆınchiriate
• linii xDSL (Digital Subscriber Line)
• ret ¸ele telefonice GSM,UMTS (Groupe Spcial Mobile, Universal Mobile
Telecommunications System)
• dispozitive Bluetooth, ZigBee
23
• comunicat ¸ii satelit
Unele dintre criteriile pentru a decide dac˘a tehnica de acces este impor-
tant˘a sau nu, sunt legate de costul, disponibilitate ¸si de securitatea servici-
ului. Dac˘a costul de acces este prea mare pentru institut ¸ie, aceasta nu va
putea s˘a-¸si permit˘a s˘a foloseasc˘a un astfel de serviciu. Din acest motiv, un-
ele dintre tehnicile de mai sus de¸si sunt eficiente nu au sust ¸inerea material˘a
pentru a fi utilizate ˆın prezent.
ˆ
In urm˘atoarele paragrafe voi descrie cˆateva
tehnici care pot fi implementate cu succes ˆın domeniul telemedicinei.
3.1.1 Ret ¸ele PSTN
Public Switched Telephone Network , reprezint˘a ret ¸ea de telefonie bazat˘a pe
comutare de circuite (ciruit-switched telephone network), ˆın acela¸si fel ˆın care
Internet-ul face schimbul de pachete prin intermediul protocolului TCP/IP.
La ˆınceput o ret ¸ea de linii analogice, ˆın prezent PSTN este aproape integral
digital˘a ¸si include atˆat telefoane mobile cˆat ¸si telefoane fixe. Aceast˘a metod˘a
este una care necesit˘a o investit ¸ie minim˘a dar are un mare dezavantaj, rata
maxim˘a de transfer este de 56 Kbps, dar ˆın realitate aceasta este ˆın jur de
40 Kbps. O astfel de solut ¸ie nu este valid˘a ˆın cazul de fat ¸˘a deoarece nu ofer˘a
o sigurant ¸˘a sporit˘a ¸si nici nu asigur˘a o vitez˘a mare de transfer a datelor,
care este necesar˘a ˆın acest domeniu.
3.1.2 Ret ¸ele ISDN
Aceast˘a tehnologie a fost proiectat˘a s˘a permit˘a transmisia de voce ¸si de date
printr-un cablu de cupru, rezultˆand o ˆımbun˘at˘at ¸ire dramatic˘a a calit˘at ¸ii ¸si a
vitezei, ˆın comparatie cu sistemele analogice existente. ISDN este un set de
protocoale folosite pentru stabilirea ¸si ˆıntreruperea conexiunilor telefonice,
cˆat ¸si pentru funct ¸ionalit˘at ¸i complexe pentru utilizatorul serviciului tele-
fonic.
Doua tipuri de conexiuni au fost definite ˆın cadrul acestui serviciu:
• basic rate interface (BRI) - const˘a ˆın doua canale de tip B, fiecare cu
o banda de 64 Kbps, ¸si un canal D cu o band˘a de 16 Kbps.
ˆ
Impreun˘a
aceste trei canale pot fi descrise de notat ¸ia 2B+D
• primary rate interface (PRI) - au un num˘ar mai mare de canale de tip
B precum ¸si un canal D cu o l˘at ¸ime a benzii de 64 Kbps. Num˘arul de
canale B dintr-un PRI variaz˘a de la t ¸ar˘a la alta, de exemplu, ˆın Europa
¸si Australia num˘arul de canale este de 30B+1D, avˆand o band˘a total˘a
de 2.048 Mbps.
Folosind tehnica cod˘arii cu marcarea invers˘arilor, datele apelului telefonic
se transmit pe canale de tip (B), iar canalele de tip (D) sunt folosite pentru
stabilirea apelului ¸si administrarea leg˘aturii create. Dup˘a ce o comunicat ¸ie
24
a fost stabilit˘a, ˆıntre cele doua p˘art ¸i exist˘a o leg˘atur˘a sincron˘a bidirect ¸ional˘a
de 64 Kbps care este ment ¸inut˘a pˆan˘a la terminarea transmisiei. Num˘arul
apelurilor simultane este direct proport ¸ional cu num˘arul canalelor de date.
3.1.3 Ret ¸ele TCP/IP
Unele unit˘at ¸i medicale pot realiza accesul la internet folosind o ret ¸ea de cal-
culatoare. Avantajul utiliz˘arii unei astfel de conexiuni este larga r˘aspˆandire
a ret ¸elelor de acest tip, costurile de conectare ¸si de mentenant ¸˘a sunt foarte
mici, astfel orice unitate medical˘a ˆı¸si va permite s˘a achizit ¸ioneze un servici
de tip Internet. Acest mod de conectare este foarte indicat dar exist˘a ¸si un
risc destul de ridicat ca ret ¸eau s˘a fie penetrat˘a. Din acest motiv sistemul
de securitatea a datelor trebuie s˘a fie principal˘a grij˘a. Acest lucru poate
fi realizat prin instalarea de firewall-uri, dispozitive speciale, implementate
pentru restrict ¸ionarea ¸si codificarea informat ¸iilor. Se pare c˘a cea mai bun˘a
solut ¸ie pentru a putea securiza ret ¸eaua unit˘at ¸ilor medicale este folosirea IP
speciale care nu pot fi accesate decˆat de anumite clase de IP-uri.
Dar spitatele au nevoie ¸si de conexiuni WAN, pentru a asigura conexiune
la internet ˆıntr-o anumit˘a zon˘a. Dac˘a ret ¸eau va fi prea mare ¸si la ea vor
avea mult ¸i doctori acces, cu sigurant ¸˘a vor ap˘area probleme de integritate
a datelor. O solut ¸ie plauzibil˘a ar fi crearea unei camere speciale ˆın care
medicii s˘a aib˘a acces la toat˘a baza de date ¸si de unde s˘a poat˘a s˘a coordoneze,
dac˘a este cazul, alte puncte de lucru. Acest loc trebuie amplasat cˆat mai
aproape de server, astfel doctorii s˘a poat˘a dispune de calitate maxim˘a ˆın
transmiterea ¸si achizit ¸ionarea datelor, care este o necesitate primordial˘a ˆın
teleconsultat ¸ii. Pe de alt˘a parte, crearea unui singur loc ˆın care se vor
stocarea datele, p˘astreaz˘a o mai mare sigurant ¸˘a asupra integrit˘at ¸ii acestora.
3.1.4 Ret ¸ele prin fibr˘a optic˘a
Fibra optic˘a poate fi utilizat˘a ca mediu de telecomunicat ¸ii ¸si ret ¸ele deoarece
este flexibil˘a ¸si poate fi strˆans˘a i ¸n cabluri. Este deosebit de avantajoas˘a
pentru comunicat ¸ii pe distant ¸e mari, deoarece lumina se propag˘a prin fi-
bra cu atenuare mic˘a ˆın comparat ¸ie cu cablurile electrice. Aceasta permite
acoperirea de distant ¸e mari cu doar cˆateva repetoare.
ˆ
In plus, semnalele lu-
minoase propagate ˆın fibr˘a pe fiecare canal pot fi modulate la viteze de pˆan˘a
la 111 Gbps. Fiecare fibr˘a poate transmite mai multe canale independente,
fiecare folosind o alt˘a lungime de und˘a a luminii.
Pe distant ¸e scurte, cum ar fi ret ¸eaua unei cl˘adiri, fibra optic˘a economise¸ste
spat ¸iu ˆın conductele de cablu deoarece o singur˘a fibr˘a poate transporta
mai multe date decˆat un singur cablu electric. Fibra este imun˘a ¸si la
interferent ¸ele electrice, nu culege zgomote electromagnetice din mediu.
Prin urmare, securitatea este put ¸in mai mare, ˆın cazul acesta, atunci
cˆand vorbim de conectarea ˆıntre o unitate sanitar˘a ¸si centrul bazei de date.
25
Conexiunea punct-la-punct PPPoE, client-server, este ˆın momentul de fat ¸˘a
conexiunea cea mai sigur˘a, utilizatorul trebuind s˘a se autentifice, pentru a
putea accesa baza de date. Accesul se realizeaz˘a centralizat, fapt ce duce la
un control eficient al traficului, nepermit ¸ˆand scurgerea de date. O astfel de
conexiune se dovede¸ste a fi greu de penetrat.
3.1.5 Ret ¸ele xDSL
Tehnologia DSL este o tehnologie de transmisie utilizˆand cabluri de cupru,
care aduce informat ¸ia din banda larg˘a la stat ¸iile de lucru cu ajutorul sis-
temului telefonic. Clasa de protocoale xDSL se refer˘a generic la mai multe
protocoale de tip DSL cum ar fi ADSL, HDSL, RADSL, SDSL etc. Conex-
iunea DSL ofer˘a teoretic 8.448 Mbps, dar de cele mai multe ori conexiunile
individuale ofer˘a o vitez˘a ˆıncepˆand de la 512 Kb ¸si pˆan˘a la 1544 Mbps
download ¸si 128 Kbps upload.
Deoarece tehnologia DSL ofer˘a o cre¸stere dramatic˘a de vitez˘aˆın comparat ¸ie
cu alte tehnologii, puterea real˘a a serviciilor bazate pe tehnologie DSL const˘a
ˆın oportunit˘at ¸i conduse de aplicat ¸ii multimedia necesare utilizatorilor actuali
ai ret ¸elei.
Unul din cele mai importante avantaje ale tehnologiei DSL este acela
c˘a permite providerilor de ret ¸ea Network Service Provider (NSP) ¸si utiliza-
torilor deservit ¸i avantaj deplin al infrastructurii existente. Protocoalele de
nivel 2 ¸si 3 OSI (cum ar fi Frame Relay, ATM ¸si IP) ¸si serviciile fiabile de
ret ¸ea au devenit de ˆıncredere. Suportˆand tipuri multiple de servicii pe o
singur˘a platform˘a ofer˘a o important˘a protect ¸ie a investit ¸iilor. Tehnologia
DSL include ambele servicii bazate pe pachete ¸si celule ca ¸si ATM, Frame
Relay ¸si IP, cˆat ¸si servicii canalizate sincron.
Urm˘atoarea generat ¸ie, arhitectura DSLAM (Digital Subscriber Line Ac-
cess Multiplexer) care suport˘a servicii multiple, tehnologie ¸si transport,
asigur˘a ca investit ¸iile ˆın infrastructura existent˘a s˘a r˘amˆan˘a protejate. DSL
poate garanta securitatea unit˘atilor sanitare, astfel acest serviciu va juca un
rol important ˆın alegerea unei resurse de internet.
3.2 Utilizarea ret ¸elelor f˘ar˘a fir
Ret ¸eaua f˘aru fir este cea mai noua tehnologie dar ¸si cea mai dinamic˘a din
domeniul comunicat ¸iilor. Aceast˘a tehnologie va fi cea mai r˘aspˆandit˘a ˆın
urm˘atorii cˆat ¸iva ani. Dar nu trebuie s˘a uit˘am c˘a implementarea unui astfel
de mediu ˆın sistemul sanitar este foarte dificil de realizat de companiile
dezvoltatoare, acest lucru datorˆandu-se reglement˘arilor foarte drastice care
se impun ˆın acest caz. Exist˘a multe aspecte tehnice care trebuiesc urm˘arite,
precum : consumul de energie, fiabilitatea, interopabilitatea ¸si securitatea
care este cel mai important aspect.
ˆ
In momentul de fat ¸˘a exist˘a trei noi
26
tehnologii care sunt ˆın curs se dezvoltare ¸si care ar putea s˘a rezolve unele
probleme de comunicare, aceste sunt ZigBee, UMTS ¸si LMDS.[14]
3.2.1 Bluetooth
Bluetooth-ul este un set de specificat ¸ii bazate pe undele radio, pentru o ret ¸ea
wireless personal˘a (PAN - personal area network). Bluetooth-ul creeaz˘a
o cale prin care se poate face schimb de informat ¸ii ˆıntre aparate precum
telefoane mobile, laptop-uri, calculatoare personale, imprimante ¸si camere
video printr-o frecvent ¸a radio sigur˘a ¸si de raz˘a mic˘a.
Aparatele bluetooth comunic˘a ˆıntre ele atunci cˆand acestea se afl˘a ˆın
aceea¸si raz˘a de act ¸iune. Ele folosesc un sistem de comunicat ¸ii radio a¸sa c˘a
nu este nevoie s˘a fie aliniate fat ¸˘a ˆın fat ¸˘a pentru a transmite, pot fi chiar
ˆın camere diferite dac˘a transmisia este suficient de puternic˘a. Un master
poate utiliza ˆın comun un canal cu pˆan˘a la 7 dispozitive ”slave” simultan
active, sauˆınc˘a 255 de dispozitive ”slave” dac˘a acestea sunt ˆın modul inactiv,
ret ¸eaua format˘a numindu-se piconet ¸si este ilustrat˘a ˆın figura 3.2. Acesta
este un mare avantaj, astfel pe ma¸sina ambulant ¸ei se poate amplasa un
master care va interact ¸iona cu toate dispozitivele tip ”slave” din interiorul
unitat ¸ii mobile.
Figura 3.2: pico-ret ¸ea
ˆ
In tehnologia Bluetooth, se utilizeaz˘a o band˘a de frecvent ¸e nelicent ¸iate
ISM (Industrial Scientific and Medical) ˆıntre 2.402 GHz ¸si 2.480 GHz alo-
cat˘a pentru domeniul industrial, ¸stiint ¸ific, medical ¸si poate fi folosit˘a astfel
aproape oriunde ˆın lume. Banda este divizat˘a ˆın 79 de canale radio, fiecare
canal avˆand o l˘argime de band˘a de 1 MHz. Deoarece ˆın aceast˘a band˘a mai
opereaz˘a ¸si alte tehnologii de comunicat ¸ie, pentru eliminarea interferent ¸elor
radio, Bluetooth folose¸ste tehnica de ˆımpr˘a¸stiere spectral˘a cu schimbare ˆın
salturi de frecvent ¸˘a, aceast˘a schimbare de frecvent ¸˘a producˆandu-se de 1600
ori pe secund˘a. Fiecare dispozitiv avˆand o gam˘a de alegere a 79 de frecvent ¸e
care se schimb˘a de 1600 ori pe secund˘a, fiind put ¸in probabil ca doua dispozi-
tive s˘a fie pe aceea¸si frecvent ¸˘a ˆın acela¸si moment, iar dac˘a totu¸si interferent ¸a
27
are loc, ea dureaz˘a doar o mic˘a fract ¸iune de secund˘a.
O caracteristic˘a de baz˘a a tehnologiei Bluetooth este capabilitatea de a
transmite ¸si recept ¸iona simultan atˆat comunicat ¸iile vocale cˆat ¸si comunicat ¸iile
de date. Bluetooth utilizeaz˘a simultan 3 canale vocale sincrone sau un canal
care suport˘a simultan transmisie vocal˘a sincron˘a ¸si transmisie de date as-
incron˘a. Fiecare canal vocal suport˘a sincron 64 Kbps ˆın fiecare sens. Un
canal de date asincron poate suporta maxim 723,2 Kbps ˆın sens direct ˆın
conexiune asimetric˘a sau 433,9 Kbps ˆın conexiune simetric˘a.
Tehnologia Bluetooth, care nu ofer˘a decˆat cˆat ¸iva bit ¸i pe secund˘a pe o
raz˘a de 10 metri, este dezvoltat˘aˆın special pe telefoane mobile ¸si headset-uri.
Dar de curˆand grupul industrial Bluetooth SIG a dezvoltat o nou˘a clas˘a care
asigur˘a o distant ¸˘a mult mai mare, de 100 metri, ¸si o securitate sporit˘a. Acest
pachet ofer˘a securitate la nivelul conexiunii (prin autentificare ¸si criptarea
datelor) astfel putem spune c˘a este o tehnologie care poate fi folosit˘a cu
succes ˆın transmisia de date din cadrul institut ¸iilor medicale.
3.2.2 ZigBee
ZigBee este un standard ce define¸ste un set de protocoale de telecomunicat ¸ii
pentru ret ¸eaua wireless.Standardul ZigBee a fost dezvoltat pentru prima
dat˘a de ZigBee Alliance, organizat ¸ie ce are sute de companii membre. Aceast˘a
organizat ¸ie a fost fondat˘a ˆın anul 2002, ca o organizat ¸ie non-profit, deschis˘a
oric˘arui doritor s˘a se al˘ature.
Dispozitivele ce utilizeaza ZigBee opereaz˘a ˆın benzile de frecvent ¸˘a de
868Mhz, 915Mhz, ¸si 2,4Ghz. Rata maxim˘a de date este de 250 Kbps. ZigBee
este folosit la aplicat ¸ii ce au ca principale cerint ¸e rata mic˘a de transfer, pret ¸
sc˘azut ¸si autonomie mare.
ˆ
In multe aplicat ¸ii ZigBee, timpul total ˆın care
dispozitivul wireless este activ ˆın aplicat ¸ie este limitat, dispozitivul petrece
mare parte a timpului ˆın stand-by, cunoscut ca ¸si modul a¸steptare (sleep).
Una dintre aplicat ¸iile acestei tehnologii este monitorizarea pacientului la
domiciliu [15]. Presiunea sˆangelui ¸si tensiunea unui pacient pot fi m˘asurate
cu dispozitive ce utilizeaz˘a tehnologia ZigBee. Dup˘a m˘asurare datele sunt
transmise wireless la un server local, de exemplu un calculator personal aflat
ˆın casa pacientului, unde sunt procesate analizele.
ˆ
In final informat ¸ia vital˘a
este transmis˘a, pentru analize, la unitatea sanitar˘a prin internet.
Standardul ZigBee ajut˘a la reducerea costurilor implement˘arii prin sim-
plificarea protocoalelor de telecomunicat ¸ii ¸si reducerea ratei de date. Timpul
de serviciu este perioada de timp ˆın care dispozitivul este activ, fat ¸˘a de tim-
pul total. De exemplu dac˘a un dispozitiv se activeaz˘a la fiecare minut ¸si
r˘amˆane activ pentru 60 ms, atunci timpul de serviciu al acestui dipozitiv
este 0.1%.
ˆ
In multe aplicat ¸ii ZigBee, dispozitivele au timpul de serviciu mai
mic de 1% pentru a asigura o durat˘a de viat ¸˘a a bateriei de cˆat ¸iva ani.
ZigBee este un standard radio bine definit, cu caracteristici bogate.
Domeniul de aplicat ¸ie este vast, ¸si este ideal ˆın dezvoltarea tehnologiilor
28
ce necesit˘a o rat˘a de transfer sc˘azut˘a. Unul dintre avantejele importante ale
acestuia ˆıl reprezint˘a num˘arul mare de noduri pe care ˆıl poate include ˆıntr-o
ret ¸ea, pˆan˘a la 250. O aplicat ¸ie realizat˘a cu standardul ZigBee este de 2, 3
ori mai ieftin˘a fat ¸˘a de cea realizat˘a cu Bluetooth. Alte avantaje importante
sunt reprezentate de gradul mare de operabilitate, un nivel de securitate
ridicat ¸si durata mare de viat ¸˘a a bateriei. Toate aceste avantaje ne duc la
concluzia c˘a acest sistem are un raport pret ¸-calitate foarte bun.
3.2.3 GSM
Global System for Mobile communications, prescurtat GSM, este standardul
de telefonie mobil˘a cel mai r˘aspˆandit din lume. Acest sistem este funct ¸ional
ˆıncepˆand cu anul 1991. Serviciile de telecomunicat ¸ii oferite de sistemul GSM
se clasific˘a ˆın doua categorii principale: servicii suport ¸si teleservicii. Ser-
viciile suport sunt utilizate la transmisia semnalelor ˆıntre punctele de acces
ale ret ¸elei, numite, ˆın standardul GSM, interfet ¸e utilizator-ret ¸ea. Teleser-
viciile asigur˘a cominicat ¸iile ˆıntre utilizatori, ˆın conformitate cu protocoalele
stabilite de operatorii de ret ¸ea.
Ret ¸elele GSM opereaz˘a ˆın benzile de frecvent ¸˘a 890-915/935-960 MHz
prin intermediul a 124 canale radio duplex, fiecare cu o l˘argime de band˘a
de 200 KHz. Intervalul de frecvent ¸˘a dintre aceste doua benzi este de 45
MHz, care este ¸si l˘argimea de band˘a dintre frecvent ¸a de transmisie ¸si cea
de recept ¸ie a unui terminal GSM (figura 3.3). Se folose¸ste o tehnic˘a nu-
mit˘a Time Division Multiple Access (TDMA) pentru a ˆımp˘art ¸i un canal
radio de 200 KHz ˆın 8 sloturi de timp, fiecare dintre acestea constituind un
canal de semnal vocal separat. Avantajul tehnicii TDMA const˘a ˆın reuti-
lizarea frecvent ¸elor ˆıntr-o vecin˘atate apropiat˘a cu o probabilitate mai mic˘a
de interferent ¸˘a. Aceasta asigur˘a o eficient ¸˘a mult mai mare ¸si permite de-
servirea mai multor utilizatori.
Figura 3.3: Retea GSM
29
Exist˘a trei servicii oferite de companiile care folosesc tehnologia GPS,
pentru a m˘ari substant ¸ial viteza de transmitere a datelor, acestea sunt:
High-Speed Circuit-Switched Data Service (HSCSD), General Packet Radio
Service (GPRS), ¸si Enhanced Data Rate for Global Evolution (EDGE).
HSCSD este o tehnologie ce permite cre¸sterea substant ¸ial˘a a vitezei de
transfer a datelor ˆın ret ¸eaua GSM. Viteza de transfer obt ¸inut˘a poate fi de
pˆan˘a la 38,4 Kbps prin folosirea a 4 canale radio de 9,6 Kbps sau de pˆan˘a
la 57,6 Kbps prin utilizarea a 4 canale radio de 14,4 Kbps.
Cele mai importante aplicat ¸ii 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 distant ¸˘a 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 s˘a se asigure: rate de transfer mari, conexiune
permanent˘a, robust˘a, suport pentru aplicat ¸iile de band˘a larg˘a ¸si mecanisme
de securitate.
Serviciul GPRS poate asigura o rat˘a medie de transfer de 115K, dar
aceasta este obt ¸inut˘a doar prin folosirea tuturor celor opt canale tempo-
rale pentru GPRS.
ˆ
In mod curent, echipamentele terminale sunt configurate
pentru a folosi un anumit num˘ar de canale temporale pentru fluxul de date
ascendent ¸si respectiv descentent.
ˆ
In condit ¸iile ˆın care semnalul radio este
foarte bun, dac˘a se folosesc patru canale temporale pe sensul ascendent ¸si
unul pe cel descendent, se poate asigura o rat˘a de 80Kbps pe calea descen-
dent˘a ¸si respectiv, 20 kbps pe calea ascendent˘a
Avˆand ˆın vedere folosirea de c˘atre tehnologia GPRS a tehnicii de co-
mutare de pachete, tehnica folosit˘a ¸si ˆın internet, la o rat˘a de transfer su-
perioar˘a fat ¸˘a de solut ¸iile existente ˆın GSM, noua tehnologie permite accesul
utilizatorilor la o gam˘a larg˘a de aplicat ¸ii bazate pe IP, iar rata de transfer
este undeva ˆın jurul valorii de 172,1 Kbps.
EDGE Enhanced Data rates for Global Evolution este o tehnologie de
evolut ¸ie a ret ¸elei GSM/GPRS care este destinat˘a s˘a aduc˘a o ˆımbun˘at˘at ¸ire
ˆın calitatea serviciilor de date.Acest serviciu permite conexiuni de date de
trei ori mai rapide decat GPRS (215 Kbps) cu accea¸si clasa multislot.
ˆ
In consecint ¸˘a, EDGE este o ˆımbun˘at˘at ¸ire adus˘a GPRS-ului ¸si nu poate
lucra ˆın mod independent.
ˆ
In concluzie tehnologiile GPRS ¸si EDGE au per-
mis ca ret ¸elele GSM s˘a ofere utilizatorilor transmisiuni de date performante
care s˘a asigure conectarea la internet cu toata gama de servicii asociate:
e-mail, transfer de fi¸siere, explorarea paginilor WEB etc, ˆın condit ¸ii com-
petitive.
30
3.2.4 UMTS
Universal Mobile Telecommunications System este o noua tehnologie de
comunicat ¸ie pentru ret ¸elele de telefonie mobil˘a care integreaza ast˘azi pa-
chete de voce ˘si date. Licent ¸ele UMTS sunt deja acordate ˆın majoritatea
t ¸˘arilor europene. Lansarea comercial˘a a serviciului se a¸steapt˘a a avea loc
ˆın 2001, ˆın momentul de fat ¸˘a efectuˆandu-se ˆın ˆıntreaga lume testele pen-
tru ˆımbun˘at˘at ¸irea serviciului de c˘atre produc˘atorii de echipamente mobile.
ˆ
In Europa, gama de frecvent ¸˘a alocat˘a pentru ret ¸elele UMTS este cuprins˘a
ˆıntre 1880 MHz ¸si 1980 MHz. Tehnologia de transmisie folosit˘a este CDMA
( Code Division Multiple Access ) de band˘a larg˘a ( Wideband-CDMA - W-
CDMA ) prin care semnalele se transmit simultan, partajˆand l˘at ¸imea de
band˘a a spectrului de frecvent ¸˘a alocat serviciului. Ret ¸elele mobile din a
treia generat ¸ie denumite ˆın Europa UMTS ( 3G - Third Generation ) sunt
foarte diferite de ret ¸elele din generat ¸ia precedent˘a ( 2G - Second Gener-
ation ). Datorit˘a noului mediu multimedia se poate face o clasificare al
funct ¸ionalit˘at ¸ii, precum: aplicat ¸ii cu timp de r˘aspuns scurt (cazul video
telefoniei, videoconferint ¸ei) ¸si aplicat ¸ii care nu necesit˘a timpi de r˘aspuns
atˆat de scurti ( transfer de date, acces la Internet ).
ˆ
In tabelul comparativ
al˘aturat sunt prezentate cˆateva diferent ¸e ˆıntre cele doua tipuri de ret ¸ele.
ˆ
In cazul ret ¸elei UMTS se folose¸ste o arhitectur˘a stratificat˘a orizontal,
grupat˘a pe baza nodurilor funct ¸ionale ale ret ¸elei. Aceasta separare ˆın stra-
turi funct ¸ionale este caracteristic˘a ret ¸elelor moderne de telecomunicat ¸ii.
ˆ
In
ceea ce prive¸ste ret ¸eaua UMTS, aceasta este imp˘art ¸it˘a pe trei niveluri.
Nivelul aplicat ¸ie
Este nivelul la care sunt stocate aplicat ¸iile accesibile utilizatorului.
ˆ
In ma-
joritatea cazurilor aplicat ¸iile sunt ˆıncorporate ˆın terminalele mobile ¸si ˆın
serverele de aplicat ¸ii dedicate acestui scop. Operatorii se pot diferent ¸ia unii
fat ¸˘a de alt ¸ii pe baza pachetelor de servicii unice pe care le ofer˘a abonat ¸ilor
la acest nivel.
ˆ
In plus, operatorii pot apela la firme specializate pentru dez-
voltarea, rularea, sau depanarea acestor aplicat ¸ii, ceea ce duce la un num˘ar
foarte mare de aplicat ¸ii posibile oferite abonat ¸ilor ret ¸elei. Nivelul aplicat ¸ie
este conectat la nivelul controlului de ret ¸ea prin intermediul unor API-uri
(Application Program Interface).
Nivelul control ret ¸ea
Acest nivel include toate funct ¸iile necesare asigur˘arii unor servicii de cali-
tate superioar˘a pe diferite tipuri de ret ¸ele. Diferitele tipuri de ret ¸ele pot fi
privite ca ¸si un set de domenii, fiecare dintre acestea avˆand ˆın component ¸˘a
servere de control care controleaz˘a fiecare tip de ret ¸ea ˆın parte. Serverele
de control administreaz˘a apelurile ¸si sesiunile de comunicat ¸ie ˆıntre utiliza-
tori, asigur˘a serviciile de securitate, sau ˆındeplinesc alte funct ¸ii similare cu
acestea. Nivelul control de ret ¸ea cont ¸ine ¸si serverul HSS ( Home Subscriber
31
Server ) care are un rol foarte important, devenind o entitate multidomeniu.
Acesta poate administra autoriz˘ari, autentific˘ari ¸si poate administra locat ¸ii
din toate domeniile prezente ˆın ret ¸eaua respectiv˘a. Leg˘atura ˆıntre nivelul
control de ret ¸ea ¸si nivelul conectivitate este realizat cu ajutorul protocoalelor
GCP ( Gateway Control Protocol ).
Nivelul conectivitate
La acest nivel vorbim despre un mecanism de transmisie capabil de trans-
portul oric˘arui tip de informat ¸ie prin intermediul conexiunilor vocale, de
date sau ale fluxurilor multimedia. Arhitectura acestui nivel ˆıncorporeaz˘a
rutere sau comutatoare care direct ¸ioneaz˘a traficul, precum ¸si echipamente
care colecteaz˘a date ¸si informat ¸ii privind facturarea serviciului ¸si asigur˘a
garant ¸ii cu privire la asigurarea unei bune calit˘at ¸i a serviciului ( QoS -
Quality of Service ) oferit abonat ¸ilor. Solut ¸iile oferite la acest nivel se pot
baza pe transmisii ATM ( Asynchronous Transfer Mode ) sau IP. Este destul
de clar c˘a pe termen lung rolul protocolului ATM, ca ¸si tehnologie de trans-
port, va sc˘adea considerabil, l˘asˆand din ce ˆın ce mai mult teren transmisiei
IP ca ¸si tehnologie predominant˘a.
3.2.5 WLAN
Wireless Local Area Network WLAN este un sistem de comunicat ¸ii im-
plementat ca extensie, sau ca ¸si alternativ˘a pentru un LAN cablat, ˆıntr-o
cl˘adire sau campus, combinˆand conectivitatea la viteza mare cu mobilitatea
utilizatorilor, ˆıntr-o configurat ¸ie mult simplificat˘a. Avantaje evidente, cum
ar fi: mobilitate, flexibilitate, simplitate ˆın instalare, costuri de intret ¸inere
reduse ¸si scalabilitate au impus WLAN ca o solut ¸ie tot mai mult utilizat˘a.
WLAN utilizeaz˘a standardele de comunicat ¸ie din familia IEEE 802.11.
Standardele din familia IEEE 802.11 descriu protocoalele de comunicat ¸ie
aflate la nivelul fizic (PHY) ¸si la nivelul leg˘aturii de date (MAC) ale unei
ret ¸ele locale wireless. Implement˘arile IEEE 802.11 trebuie s˘a primeasc˘a
pachetele de date de la protocoalele de la nivelul ret ¸elei ¸si s˘a se ocupe cu
transmiterea lor evitˆand eventualele coliziuni cu alte stat ¸ii wireless din zona.
IEEE 802.11 este compatibil cu Ethernet-ul care este standardizat de IEEE
ˆın seria de standarde 802.3. Spectrul ¸si limit˘arile operat ¸ionale nu sunt ace-
lea¸si ˆın ˆıntreaga lume.
ˆ
In mare parte din Europa este permis˘a utilizarea a
ˆınc˘a 2 canale adit ¸ionale fat ¸˘a de cele din US. Un aspect care este de multe ori
confundat este acela c˘a Wi-Fi ocup˘a 5 canale din band˘a 2,4 GHz, ˆın loc de
3 canale ˆın SUA : 1,6 ,11 ¸si 4 canale ˆın Europa: 1,5,9,13. Puterea izotrop˘a
echivalent˘a radiat˘a ˆın Europa este limitat˘a la 20 dBm (0.1W). Energia nece-
sar˘a este mai mic˘a decˆat a celorlate standarde de joas˘a l˘argime de band˘a,
ca de exemplu Zigbee sau Bluetooth, avˆand astfel grij˘a de viat ¸a bateriei.
Ret ¸ele Wi-Fi au arie de acoperire limitat˘a. Un router Wi-Fi normal ce
32
folose¸ste standardele 802.11b, 802.11g, cu o antena standard, are o arie de
acoperire de circa 32 de metri ˆın spat ¸iu ˆınchis ¸si 95 de metri ˆın spat ¸iu de-
schis. Aria de acoperire variaz˘a ˆın funct ¸ie de frecvent ¸a de banda. Pentru
o frecvent ¸˘a mai mare (5 GHz) aria de acoperire este put ¸in mai mic˘a decˆat
pentru o frecvent ¸˘a mai mic˘a (ex. 2.4 GHz). Aria de acoperire ˆın spat ¸iu
liber poate fi ˆımbun˘at˘at ¸it˘a dac˘a se folosesc antene direct ¸ionale, ajungˆand
pˆan˘a la cat ¸iva kilometri dac˘a echipamentele sunt ˆın linie dreapt˘a. De aseme-
nea, performant ¸ele Wi-Fi descresc proport ¸ional pe m˘asur˘a ce distant ¸a dintre
emit ¸˘ator ¸si receptor cre¸ste.
WiMAX (Worldwide Interoperability for Microwave Access) este o nou˘a
tehnologie f˘ar˘a fir care poate capta datele de ¸sapte ori mai repede ¸si de o
mie de ori mai departe decˆat populara tehnologie Wireless Fidelity (Wi-Fi),
utilizˆand standardul IEEE 802.16.
ˆ
In timp ce ret ¸elele Wi-Fi simple au o raz˘a
de act ¸iune de 30m - 100m, WiMax utilizeaz˘a o tehnologie de microunde radio
care m˘are¸ste distant ¸a la aproximativ 50km. Astfel, se pot construi ret ¸ele
metropolitane WiMAX. Iar aceast˘a tehnologie este optim˘a pentru echiparea
ma¸sinilor de ambulant ¸˘a cu asemenea sisteme, astfel este asigurat˘a leg˘atura
cu unit˘at ¸ile sanitare in permanent ¸˘a.
3.2.6 Comunicatii prin satelit
Satelit ¸ii de telecomunicat ¸ii ComSat (Communication Satellite) fac posibil˘a
realizarea unor canale de telecomunicat ¸ii. Sunt ˆıntrebuint ¸˘at ¸i aproape ˆın
toate domeniile comunicat ¸iilor: telefonie, televiziune, radio, internet, trans-
misii de date, videoconferint ¸e, etc. Satelit ¸ii de telecomunicat ¸ii sunt de doua
tipuri:
• activi - echipat ¸i cu aparatur˘a de emisie-recept ¸ie, efectuˆand anumite
modific˘ari asupra semnalului primit
• pasivi - retransmit semnalele primite ˆın urma reflexiei acestora pe
suprafat ¸a lor.
Aceste dispozitive au cˆateva avantaje destul de importante care nu se reg˘asesc
ˆın cazul altor ret ¸ele de comunicat ¸ii, precum :
• utilizatorii serviciilor convent ¸ionale terestre mobile vor putea comuta
pe serviciul de satelit cˆand se afl˘a ˆın afara ariei de acoperire a ret ¸elei
clasice
• se lucreaz˘a cu viteze mari, viteza de transmisie a datelor poate varia
ˆıntre 1Mbps ¸si 15Mbps
• ˆıntˆarzierea este doar de 10ms
• sistem global multifunct ¸ional asigur˘a interfet ¸e ˆıntre toate sistemele
terestre mobile existente: GSM, AMPS, NMT, DCS, IS-95.[18]
33
A¸sadar comunicat ¸iile prin intermediul satelit ¸ilor este o variant˘a viabil˘a pen-
tru sistemul sanitar , astfel se asigur˘a semnal pe 99.9% din suprafat ¸a terestr˘a
¸si o bun˘a securitate a datelor, utilizatorii trebuind s˘a se autentifice pentru
a avea acces la un astfel de sistem.
3.3 Standardul de comunicat ¸ie ¸si imagistic˘a med-
ical˘a
DICOM (Digital Imaging and Communication in Medicine) este un protocol
de ret ¸ea la nivelul aplicat ¸ie pentru transmiterea imaginilor medicale, semnale
digitale ¸si informat ¸ii auxiliare, ce suport˘a un domeniu larg de imagini si date
medicale pe domeniile radiologie, cardiologie, patologie ¸si stomatologie.
Scopul standardului DICOM este de a asigura schimbul standardizat
de imagini ˆıntre sisteme diferite. Standardul a fost dezvoltat cu accent pe
imagistica medical˘a de diagnosticare, practicat˘a ˆın radiologie, cardiologie ¸si
alte domenii legate de acestea, dar este extins la informatii legate sau nu de
imagine, interschimbate ˆıntre clinici sau alte medii medicale, [21].
3.4 Arhitectura ret ¸elei unit˘atilor sanitare fixe
Transmiterea datelor ˆıntre doua p˘art ¸i medicale reflect˘a nevoia de aˆımp˘art˘a¸si
ˆınregistr˘arile medicale ¸si confident ¸iale atunci cˆand urmeaz˘a a se face o
teleconsultat ¸ie sau urmeaz˘a a se stabili un diagnostic. Trebuie s˘a se t ¸in˘a
cont de faptul c˘a termenul ”unitate sanitar˘a” cuprinde toate p˘art ¸ile medi-
cale implicate ˆın procesul de ˆıngrijire a pacientului, nu numai institut ¸ia in
sine. Conexiunea tipic˘a unitate sanitar˘a-unitate sanitar˘a solicit˘a o band˘a
larg˘a pentru a asigura transmiterea unui volum mare de date ˆın orice mo-
ment.
Topologia optim˘a pentru ret ¸eaua unit˘at ¸ilor sanitare este cea inel-stea
fiind o combinat ¸ie ˆıntre cele doua topologii (inel - calculatoarele formeaz˘a o
bucl˘a, iar daca o stat ¸ie se defecteaz˘a semnalul poate merge pe cealalt˘a parte;
stea - toate calculatoarele sunt conectate la un nod central,avˆand rolul de
server) astfel stat ¸iile sunt conectate printr-un concentrator principal (figura
3.4). Avantajul principal const˘a ˆın faptul c˘a, dac˘a va exista o problem˘a
fizic˘a pe o parte a inelului, informat ¸ii vor fi transmise pe cealalt˘a parte,
astfel nu se va bloca transmiterea de informat ¸ii.
Leg˘atura ˆıntre judet ¸e va fi o ret ¸ea de tip WAN, liniile de transmisie
vor fi de tipul fibr˘a optic˘a ¸si se va folosi standardul 1000BaseLX. Acest
standard Ethernet cu 1000 Mbps (Gigabit Ethernet) prin fibr˘a de sticl˘a
mult ¸i sau monomode la o lungime de und˘a de 1300nm. Lungimea maxim˘a
a cablului, ˆın funct ¸ie de tipul ¸si calitatea fibrei, este ˆıntre 550m ¸si 5000m
ˆıntre distribuitor ¸si stat ¸ia LAN. Convertoarele de mediu speciale pot acoperi
distant ¸e ˆıntre 5 km (1300 nm lungime de und˘a) ¸si aproximativ 25 km (1310
34
Figura 3.4: Topologia inel - stea
nm lungime de und˘a), f˘ar˘a a fi nevoie de repetoare. Acest tip de linii ofer˘a
cˆateva avantaje foarte importante: rezistent ¸˘a la zgomote, atenuare sc˘azut˘a,
securitate sporit˘a.
Ret ¸eaua din interiorul unui judet ¸ va fi de tipul LAN ¸si va fi privat˘a. Se
vor folosi atˆat fibr˘a optic˘a cˆat ¸si cabluri UTP Unshielded Twisted Pair sau
STP (Shielded Twisted Pair). Aceste ret ¸ele funct ¸ioneaz˘a la viteze cuprinse
ˆıntre 10 Mbps ¸si 10 Gbps, sunt afectate de zgomot dar pentru un buget
redus sunt recomandate.
Pentru a asigura o securitate cˆat mai bun˘a, va trebui unilizat un set
de servicii impuse de organismul internat ¸ional numit IANA (Internet As-
signed Numbers Authority). Ret ¸eaua va fi configurat˘a static, ˆın server se
vor introduce MAC-rile (Media Access Control) calculatoarelor ret ¸elei, ast-
fel se va evita penetrarea ret ¸elei. De asemenea, se vor folosi din protocolul
IPv6 clasa A. Este cea mai sigur˘a clas˘a de adrese IP, astfel matematic, se
pot aloca maxim 127 de adrese de clasa A, fiecare putˆand aloca un num˘ar
de 16.777.214 adrese gazd˘a. Intervalul adreselor de clasa A este: 1.0.0.0
− 126.255.255.255, iar cont ¸inutul din primul octet r˘amˆane fix odat˘a ce e
alocat.
3.5 Arhitectura unitate sanitar˘a fix˘a - unitate sani-
tar˘a mobil˘a
ˆ
In acest subcapitol voi prezenta doua scenarii posibile necesare realiz˘arii
unei comunicat ¸ii de tip telemedicin˘a ˆıntre o unitate mobila (de tip prim
ajutor) ¸si o unitate fix˘a (spital, centru de e-s˘an˘atate) . Unit˘at ¸ile mobile se
35
vor deplasa c˘atre zonele ˆın care sunt solicitate ¸si apoi vor transmite datele
medicale c˘atre spital sau c˘atre centrul de monitorizare pentru a fi analizate
de personalul de monitorizare, doctori, ce verific˘a simptomele existente ¸si
vor aplica procedura de urgent ¸˘a dup˘a caz.
O conexiune ˆıntre cele doua p˘art ¸i poate fi stabilit˘a pe ˆıntreaga durat˘a a
monitoriz˘arii sau doar pe anumite perioade de timp cˆand aparatura trimte
datele medicale colectate. Aplicat ¸iile de tele-monitorizare moderne presupun
o mobilitate ˆın cre¸stere a personalului.
ˆ
In continuare voi prezenta varianta
care este disponibil˘a la ora actual˘a ¸si care nu ofer˘a o mobilitate satisf˘ac˘atoare
¸si variant˘a care este put ¸in mai costisitoare dar dispune de mai multe avan-
taje.
Prima variant˘a const˘a ˆıntr-o conexiune ˆıntre unitatea mobil˘a ¸si spi-
tal prin intermediul unui modul de comunicat ¸ii(spre exemplu modem) am-
plasat pe plafonul ma¸sinii de ambulant ¸˘a care asigur˘a o transmisie de tip
GSM, cu ajutorul standardelor GPRS ¸si EDGE. Toat˘a aparatura aferent˘a
intervent ¸iilor de urgent ¸˘a este conectat˘a prin Bluetooth, iar camerele video(de
obicei doua) sunt conectate prin cablu UTP. Un astfel de sistem intˆampin˘a
cˆateva probleme precum:
• portabilitate sc˘azut˘a - tehnologia bluetooth permite transmiterea date-
lor la o distant ¸˘a de 10mˆıntre dinspozitive, astfel pacientul va trebui s˘a
fie transportat pˆan˘a la unitatea mobil˘a, astfel se pierde timp ¸si poate
sc˘adea ¸si ¸sansele de supraviet ¸uire, ˆın unele cazuri
• semnal slab - datorit˘a reliefului t˘arii noastre, munt ¸ii ¸si dealurile ocup˘a
aproximativ 45% din teritoriu, exist˘a ¸sanse destul de mari ca semnalul
GSM s˘a nu aib˘a puterea necesar˘a, sau chiar s˘a nu fie disponibil ˆın
anumite zone, astfel se pericliteaz˘a comunicat ¸ia
• vitez˘a mic˘a - datorit˘a specificat ¸iilor tehnice componentelor utilizate
ˆın acest sistem, viteza de transmitere a datelor este una medie, dac˘a
pentru a transmite date avem nevoie de cˆativa Kbps, pentru a trans-
mite video va fi necesar˘a o viteza care variaz˘a ˆıntre 178 ¸si 340 Kbps
(ˆın funct ¸ie de calitatea echipamentului folosit), existˆand risculul ca la
centru s˘a fie primite doar frame-uri.
Cea de-a doua variant˘a presupune o conexiune de tip ZigBee ˆıntre echipa-
mentele cu care este dotat˘a o unitatea sanitar˘a, astfel vom rezolva problema
de portabilitate, iar pret ¸ul echipamentului este cu 5% mai mic decˆat ˆın cazul
mai sus prezentat.
Iar pentru a realiza leg˘atura ˆıntre unitatea sanitar˘a fix˘a ¸si cea mobil˘a
propun utilizarea unei tehnologii WiMAX folosind protocolul IEE 802.16e.
Astfel va trebui s˘a realiz˘am o ret ¸ea format˘a din celule radio. Ret ¸elele celu-
lare ofer˘a un num˘ar de avantaje fat ¸˘a de alte solut ¸ii alternative, precum:
capacitate crescut ¸a, consum energetic redus, arie larg˘a de acoperire ¸si grad
de interferent˘a sc˘azut.
36
Figura 3.5: Comparat ¸ie ˆıntre standardul Bluetooh si ZigBee
ˆ
In alegerea modului ˆın care vor fi pozit ¸ionate antenele trebuie avute
ˆın vedere caracteristicile mediului geografic( latitudine, longitudine, cote,
etc). Alegerea coordonatelor antenelor se va face cu ajutorul unui algoritm
genetic ce va minimiza o funct ¸ie de cost aleas˘a astfel ˆıncat s˘a ne conduc˘a
la o pozit ¸ionare cˆat mai buna a antenelor. Algoritmii genetici reprezint˘a
o metod˘a de c˘autare a unei solut ¸ii la o problem˘a dat˘a prin trecerea de
la o populat ¸ie de cromozomi (solut ¸ii potent ¸iale ale problemei de rezolvat)
la o noua populat ¸ie, apelˆand la operatori de inspirat ¸ie genetic˘a: select ¸ia
(reprezint˘a pasul de supraviet ¸uire a celor mai buni indivizi), mutat ¸ia (cre¸ste-
rea variet˘atii populat ¸iei) ¸si ˆıncrucisarea (parcurgerea pa¸silor care duc la o
noua populat ¸ie).
37
Capitolul 4
Securizarea datelor ˆın
telemedicin˘a
Agent ¸iile ¸si organizat ¸iile guvernamentale ale mai multor nat ¸iuni au dezoltat
numeroase criterii pentru securitatea tehnologiei computerizate.
ˆ
In SUA,
documentul ˆın cauz˘a se nume¸ste ”Criteriul de securitate al sistemelor com-
puterizate” sau TCSEC ”Trusted Computer System Security Evaluation
Criteria,”. Comisia european˘a a publicat ”Criteriul securit˘at ¸ii tehnlogiei
informat ¸iei” cunoscut ¸si ca ITSEC (Information Technology Security Eval-
uation Criteria) iar guvernul canadian a publicat ”Criteriul de securitate
al produselor computerizate canadiene” sau CTCPEC (Canadian Trusted
Computer Product Evaluation Criteria).
ˆ
In 1996, aceste init ¸iative au fost
oficial reunite ˆın documentul cunoscut sub numele Criteriul Comun CC.
ˆ
In
1999 acest document a fost aprobat ca fiind un standard de c˘atre Organizat ¸ia
Internat ¸ional˘a de Standardizare IOS. Aceast˘a init ¸iativ˘a deschide calea c˘atre
o recunoa¸sterea reciproc˘a a rezultatelor la nivel mondial de evaluare a pro-
duselor.
Nevoia industriei medicale de a fi sigur˘a, nevoia confident ¸ialit˘at ¸ii schim-
bului de informat ¸ii, ˆıntre pacient ¸si medic, ˆın sprijinul portabilit˘at ¸ii asigur˘arii
medicale, sprijinirea firmelor de asigur˘ari de s˘an˘atate, toate acestea au avut
ca rezultat un document numit ”The Health Insurance Portability and Ac-
countability Act of 1996” (HIPAA). Pentru a sust ¸ine confident ¸ialitate ¸si
schimbul electronic de informat ¸ii ˆın domeniul s˘an˘atat ¸ii, departamentul de
s˘an˘atate ¸si serviciu uman din SUA a elaborat reglement˘ari ce sust ¸in ¸si
ˆınt˘aresc securitatea ¸si confident ¸ialitatea HIPAA. Aceste reglement˘ari pre-
supun o atent ¸ie sporit˘a atˆat ˆın manevrarea documentelor scrise de mˆan˘a cˆat
¸si acelora electronice. Documentele protejate care sunt stocate ˆın sistemul e-
medical de informat ¸ii prezint˘ a permanent riscul modific˘arilor sau acces˘arilor
inadecvate. Acestea din urm˘a sunt considerate un abuz.
O arhitectur˘a de securitatea asem˘an˘atoare, dar cu un domeniu de apli-
cabilitate mai larg va trebui dezvoltat de agent ¸ia guvernamental˘a a t ¸˘arii
38
noastre. Aceast˘a strategie a fost elaborat˘a deja, de exemplu, de c˘atre gu-
vernul britanic. Acest document vizeaz˘a organismele implicateˆın procurarea
¸si furnizarea de servicii electronice pentru guvern, inclusiv departamentele
guvernului central, sectorul cu organisme publice non-departamentale, au-
torit˘at ¸ile locale ¸si alte organisme guvernamentale locale responsabile cu
furnizarea 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 g˘asite, de exemplu, ˆın [19].
Acest capitol arat˘a cum se poate securiza un sistem e-medical folosind
tehnologia ¸si mecanismele digitale de securitate la o scar˘a larg˘a.
4.1 Norme de securitate ˆın telemedicin˘a
Securitatea HIPPA stabile¸ste urm˘atoarele reguli de sigurant ¸˘a: ”Asigurarea
confident ¸ialit˘at ¸ii, integrit˘at ¸ii ¸si disponibilit˘at ¸ii tuturor informat ¸iilor electron-
ice despre protejarea s˘an˘at˘at ¸ii (PHI) pe care entitatea subiectului(pacientului)
le creaz˘a, le prime¸ste, le p˘astreaz˘a ¸si le transmite.” Principalele obiective ale
sistemului de securitate sunt:
• asigurare medical˘a pentru angajat ¸i
• reducerea fraudelor ¸si abuzurilor din domeniul medical
• introducerea/implemetarea simplific˘arilor administrative cu scopul de
a spori eficacitatea ¸si eficient ¸a sistemului medical
• protejarea informat ¸iilor medicaleˆımpotriva accesului f˘ar˘a consimt ¸˘amˆant
sau f˘ar˘a autorizat ¸ie
HIPPA prezint˘a o tripl˘a provocare furnizorilor de dispozitice medicale ¸si
celor care produc aplicat ¸iile:
1. ˆıncorporarea unei tehnologii de securizare a produselor pentru a proteja
confident ¸ialitatea informat ¸iilor medicale generale,
2. reevaluarea ¸si consolidarea propriile politici, interne ¸si de formare, pentru
a asigura un tratament sigur ¸si confident ¸ial al informat ¸iilor medicale
expuse ˆın timpul test˘arii, serviciilor de teren, de evaluare a produsului
¸si de cercetare
3. un flux de lucru ce include ¸si produsele proprii, asigurˆandu-se ˆın acela¸si
timp c˘a aceste produse incluse ˆın fluxul de lucru nu impiedic˘a comu-
nicarea clinic˘a sau nu afecteaz˘a ˆın mod negativ ˆıngrijirea pacientului.
39
Furnizorii de dispozitive ¸si de aplicat ¸ii nu sunt de obicei direct responsabili
pentru politicile ¸si procedurile organizatorice ale client ¸ilor lor. Cu toate aces-
tea, propriile lor politici ¸si proceduri trebuie s˘a protejeze confident ¸ialitatea
informat ¸iilor ¸si produsele lor trebuie dezvoltate pentru a corespunde principi-
ilor HIPAA. Mai exact, HIPPA specific˘a exact anumite politici ¸si tehnilogii
de securitate, printre care:
• ID-uri unice pentru utilizatorii autorizat ¸i
• delogare automat˘a
• audit pentru accesul la anumite tipuri de informat ¸ii protejate
• criptare (opt ¸ional)
• semn˘atura digital˘a (o¸ ptional)
• dezvoltare de antivirus
• planuri de recuperare/restaurare a datelor
• planuri pentru a reveni dup˘a un eventual dezastru
• program de audit
• programe de testare
• programe de formare profesional˘a
Este necesar de remarcat faptul c˘a solut ¸iile de securitate necesit˘a mai mult
decˆat put ¸in˘a tehnologie. Pentru a fi eficiente, solut ¸iile de securitate tre-
buie s˘a fie complementate de formare/traninguri, securitatea fizic˘a, core-
spunz˘atoare celor mai bune practici derivate politicilor de securitate ¸si con-
figurarea corespunz˘atoare a sistemelor de operare ¸si a aplicat ¸iilor.
Securitatea fizic˘a poate varia de la simplul acces prin autentificare, ajungˆand
pˆan˘a la supravegherea cu camere video. Provocarea const˘a ˆın determinarea
nivelului de securitate necesar, avˆand ˆın vedere sensibilitatea informat ¸iilor,
important ¸a securit˘at ¸ii tehnice, accesibilitatea personalului uman la mediul
de calcul.
Ret ¸ele
Informat ¸iile, fiind schimbateˆıntre sistemele de s˘an˘atate, sunt expuse diferitelor
modalit˘at ¸i de a putea fi interceptate. Securitatea fizic˘a a componentelor de
ret ¸ea ¸si a mediilor de comunicat ¸ii poate fi suficient˘a ˆın medii restrˆanse.
ˆ
In
medii mai largi ¸si oriunde informat ¸iile despre s˘an˘atate ce trebuie protejate
sunt schimbare printr-o ret ¸ea public˘a, securitatea acestora trebuie asigurat˘a
prin criptare ¸si tehnologii de securitate.
40
Sisteme de operare
Cele mai moderne sisteme de operare furnizeaz˘a securitate suficient˘a pen-
tru protejarea dosarele medicale. Cu toate acestea, sistemul de securitatea
trebuie s˘a fie configurat corect pe baza celor mai bune politici de securitate.
Configurare trebuie s˘a includ˘a ¸stergerea automat˘a a conturilor neutilizate
¸si inutile, precum ¸si faptul c˘a toate parolele s˘a respecte cele 66 de cerint ¸e
moderne de securitate. Un sistem de operare securizat ˆın mod corespunz˘ator
trebuie s˘a includ˘a atˆat eliminarea automat˘a a lipsurilor de securitate cˆat ¸si
politici ce impiedic˘a utilizatorii s˘a creeze astfel de lipsuri.
Application Software
Ca ¸si ˆın cazul sistemele de operare, aplicat ¸iile cele mai moderne au potent ¸ia-
lul de a fi configurate pentru utiliz˘ari sigure. Cu toate acestea, ca ¸si ˆın cazul
sistemelor de operare , cele mai multe aplicat ¸ii sunt configurate pentru a
avea sisteme de sigurant ¸˘a foarte slabe sau inexistente(de ex sistemele ˆın care
lipse¸ste cu des˘avˆar¸sire conectarea prin nume-utilizator ¸si parol˘a). Fiecare
aplicat ¸ie trebuie s˘a fie configurat˘a pentru utiliz˘ari sigure.
Date
Multe tipuri de informat ¸ii pot fi citite de mai multe aplicat ¸ii (de exemplu,
fi¸siere imagine). Bazˆandu-se exclusiv pe securitatea de baz˘a a aplicat ¸iilor,
sigurant ¸a informat ¸iilor poate fi u¸sor afectat˘a dac˘a un utilizator schimb˘a
pur ¸si simplu aplicat ¸ia pentru a citi acea informat ¸ie. Controlul accesului la
informat ¸ii trebuie aplicat la cel mai de baz˘a nivel(fi¸siere, baz˘a de date,etc)
ˆın care acea informat ¸ie este stocat˘a.
ˆ
In plus, ˆın cazul ˆın care informat ¸ia este
stocat˘a ˆın baza de date, securitatea trebuie aplicat˘a pentru nivelul minim
al ˆınregistr˘arii individuale.
ˆ
In unele cazuri, informat ¸ia din baza de date
necesit˘a s˘a fie protejat˘a prin intermediul controlului accesului din interiorul
ˆınregistr˘arilor individuale.
4.2 Modelarea unei arhitecturi de securitate
Criteriul CC prevede o taxonomie a evalu˘arii securit˘at ¸ii funct ¸ionabil˘a printr-
o serie de cerin
˘
te funct ¸ionale ¸si de asigurare. Criteria include 11 cate-
gorii funct ¸ionale : audit de securitate, de comunicare, suport criptografic,
protect ¸ie prin crearea de utilizatori, identificare ¸si autentificare, gestionarea
funct ¸iilor de securitate, confident ¸ialitate, protect ¸ia securit˘at ¸ii funct ¸ionale,
utilizarea resurselor, accesul la componente ¸si o cale sau un canal deˆıncredere.
Aceste 11 categorii funct ¸ionale sunt ˆımp˘art ¸ite ˆın 66 de familii, fiecare cont ¸i-
nˆand un num˘ar de criterii [20]. Exist˘a aproximativ 130 de criterii docu-
mentate ˆın prezent, cu ment ¸iunea faptului c˘a designeri pot ad˘auga criterii
suplimentare ˆın funct ¸ie de proiect. Exist˘a un proces oficial prin care se
41
adopt˘a criterii specifice corpului administrativ al CC.
Guvernele ¸si grupurile industriale dezvolt˘a descrieri funct ¸ionale pentru
securitatea ret ¸elelor ¸si soft-urilor, utilizˆand CC. Aceste documente, cunos-
cute sub numele de profile de protect ¸ie, descriu grupuri de funct ¸ii de secu-
ritate care sunt adecvate pentru o anumit˘a component˘a de securitate sau
tehnologie. Motivat ¸ia principal˘a pentru dezvoltarea profilurilor de protect ¸ie
este motivarea furnizorilor de a distribui produse securizate ¸si a reduce riscul
ˆın procurarea infomat ¸iei tehnologice.
Clasele ¸si familiile din cadrul Criteriului Comun reprezint˘a o agregare de
cerint ¸e. Agregarea reflect˘a mai mult termeni abstract ¸i de securitate, precum
operat ¸iunile criptografice ¸si protect ¸ia datelor, decˆat securitate ˆın contextul
funct ¸iilor operat ¸ionale IT. O cartografiere rezumat˘a a categoriilor Criteriu-
lui Comun este prev˘azut˘a ˆın tabelul 4.1.
Categorii Clasele Criteriului Comun
funct ¸ionale
Auditul audit, componente de protect ¸ie
Controlul accesului protejarea datelor, protect ¸ia componentelor,
management-ul securit˘at ¸ii, restrict ¸ionarea
accesului, suport criptografic, identificare ¸si
autentificare, canale/linii securizate
Controlul fluxului suport criptografic, protect ¸ia datelor,
protect ¸ia resurselor, sisteme codificate
Acreditare protejarea datelor, protect ¸ia resurselor, sis-
teme de comunicat ¸ii, acces prin autentifi-
care, sisteme incriptate
Solut ¸ii de integritate suport criptografic, protejarea datelor, uti-
lizarea resurselor, management-ul securit˘at ¸ii
Tabelul 4.1: Relat ¸iile dintre categoriile funct ¸ionale ¸si clasele Criteriului Comun.
Aceast˘a structur˘a sust ¸ine afirmat ¸ia potrivit c˘areia cele cinci categorii de-
scrise ˆın tabelul 4.1 reprezint˘a un set de procese interdependente sau sub-
sisteme.
Subsistemul auditului de securitate
Subsistemul auditului care se ocup˘a de securitate este responsabil pentru
captarea, analiza, raportare, arhivare ¸si ˆınapoierea ˆınregistr˘arilor de eveni-
mente, precum ¸si a condit ¸iile din interiorul unei sistem server. Conform CC,
cerint ¸ele de securitate pentru un subsistem de audit ar include:
• colectarea datelor de securitate, inclusiv captarea corespunz˘atoare de
date, transferul sigur al datelor precum ¸si sincronizarea cronologiilor
42
• protect ¸ia datelor, inclusiv utilizarea etichetelor de timp, semnarea
evenimentelor ¸si integritatea stoc˘arii pentru a preveni pierderea de
date
• analizarea datelor de securitate ale auditului, inclusiv revizuirea, de-
tectarea anomaliilor, analiza erorilor ¸si analiza atacurilor din afara
ret ¸elei folosind euristica simpl˘a sau complex˘a
• alarme pe praguri de pierderi, condit ¸ii de avertizare ¸si evenimente
critice.
Solut ¸ia subsistemului de integritate
Scopul implement˘arii unui subsistem de integritate ˆıntr-un cadru IT este
de a satisface cerint ¸ele de fiabilitate ¸si corectitudine ale solut ¸iei de calcul
pentru a atinge standardele legale ¸si tehnice ale procesului. Conform Cri-
teriului Comun, accentul pe implementare subsistemului de integritate poate
include:
• integritatea ¸si fiabilitatea resurselor
• protect ¸ii fizice pentru date, cum ar fi chei criptografice ¸si componente
fizice, cum ar fi cabluri, hard-uri, etc
• operat ¸ii continue incluzˆand tolerant ¸a la erori, recuperarea dup˘a e¸sec
¸si autotestare
• mecanismele de stocare; module de securitate hardware ¸si criptografice
• acuratet ¸e maxim˘a ˆın m˘asurarea timpului
• alc˘atuirea unei liste a serviciilor prioritare prin alocarea de resurse sau
cote
• izolare funct ¸ionala utilizˆand domenii de separare sau monitorizarea
activit˘at ¸ilor
• alarme atunci cˆand un atac fizic sau pasiv este detectat.
Subsistem al controlului de acces
Scopul unui subsistem al controlului de acces ˆıntr-o solut ¸ie IT este de a spori
politicile de securitate prin separarea accesului, executarea proceselor ¸si ser-
viciilor conform solut ¸iilor computerizate folosind identificare, autentificare
¸si prin procesele de autorizare, ˆımpreun˘a cu mecanisme de securitate care
folosesc acredit˘ari ¸si atribute.Conform CC, un subsistem al controlului de
acces funct ¸ional include:
• contorizare/control acces
• monitorizarea ¸si ˆınt˘arirea accesului ˆın cazurile de urgent ¸˘a
43
• mecanisme de identificare ¸si autorizare incluzˆand criptografia (criptare
¸si 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 bazat
pe atribute, asupra subiectelor, obiectelor ¸si subiect ¸ilor-utilizatori cu
caracter obligatoriu
• mecanisme de aplicare inclusiv manipularea obiectelor deteriorate, pre-
venirea defect ¸iunilor, captarea evenimentelor precum ¸si componente de
decizie ¸si de ˆınregistare a rezultatelor.
Controlul nivelului fluxului de informat ¸ii Scopul unui astfel de sub-
sistem ˆıntr-un cadru IT este de a pune ˆın aplicare politicile de securitate
prin separarea fluxul de informat ¸ii printr-o solut ¸ie de calcul ce afecteaz˘a
vizibilitatea informat ¸iei ˆın termenii solut ¸iei de calcul ¸si asigur˘a integritatea
datelor astfel ˆımplicˆand o solut ¸ie de calcul. Conform CC, un subsistem al
controlului fluxului de informat ¸ii include urm˘atoarele cerint ¸e funct ¸ionale:
• monitorizare fluxului datelor ¸si punerea ˆın aplicare/executarea
• mediile de transfer: un canal deschis sau de ˆıncredere, o cale de
ˆıncredere sau deschis˘a, conversii media, transferul manual, importul
sau exportul ˆıntre domenii
• mecanisme de observabilitate: de a bloca criptarea
• mecanismele de depozitare: criptografie ¸si module de securitate ale
hard-ului
• mecanisme de aplicare: atributele obligatorii de stocare ¸si active, capta-
rea evenimentelor, componentele de decizie ¸si de autentificare, moni-
torizare datelor stocate, reducere, protect ¸ia ¸si distrugerea informat ¸iilor
reziduale
Subsistem de acreditare sau identificare Scopul unui subsistem de
acreditare sau identificare ˆıntr-un cadru IT este de a genera, distribui ¸si
a gestiona date care s˘a transmit˘a identitate ¸si permisiunea ˆıntre ret ¸ele ¸si
ˆıntre platforme, ˆıntre procese, precum ¸si subsistemele de securitate ˆıntr-o
solut ¸ie IT. Conform Criteriului Comun, un subsistem acreditar trebuie s˘a
includ˘a urm˘atoarele cerint ¸e funct ¸ionale:
• mecanisme simple ¸si/sau complexe, care folosesc sau nu criptarea
• identit˘at ¸i ¸si acredit˘ari utilizate pentru a proteja fluxurile de date
• identit˘at ¸i ¸si acredit˘ari pentru a fi utilizate ca protect ¸ie a activelor:
integritatea sau neobservabilitate
44
• identit˘at ¸i ¸si acredit˘ari pentru a fi utilizate ˆın controlul accesului: iden-
tificare, autentificare ¸si controlul accesului ˆın scopul de a juca rolul
unei copert ¸i protectoare pentru utilizatori
• acredit˘ari pentru a fi utilizate ˆın scopuri de identitate din punct de
vedere juridic pentru tranzact ¸ii
• data ¸si ora la care s-a realizat autentificarea
• ciclului de viat ¸a al acredit˘arii
• mecanisme anonime
Aspectul obiectivelor de securitate ¸si solut ¸ia mediului au un rol central ˆın
select ¸ia ¸si enumerarea subsistemelor. Tabelul 4.2 prezint˘a o posibil˘a car-
tografiere a obiectivelor de proiectare pentru subsistemele de securitate.
Acesta indic˘a ˆın care caz un subsistem poate fi necesar (N) sau suplimen-
tar (S) ˆın a satisface cerint ¸ele de securitate individual˘a. Select ¸ia real˘a a
subsistemelor necesit˘a o documentare rat ¸ional˘a.
Proiectarea Audit Integritate Control Control Legitimare
securit˘at ¸ii acces pe nivele Legitimare
Concrolul ac-
cesului asupra
sistemului /
proceselor
N N S N N
Controlul accesu-
lui la informat ¸ii
N N N S S
Controlul la
fiecare nivel al
informat ¸iilor
N N N S N
Componente via-
bile ¸si funct ¸ionale
N S N N N
Prevenirea /
ˆınl˘aturarea at-
acurilor
S S S S N
Responsabilizare
prin identificare
S S N N S
Prevenirea
/ eliminarea
fraudei
S S S S S
Tabelul 4.2: Reprezentarea obiectivelor ˆın funct ¸ie de subsistemele de securitate.
45
4.3 Tehnici de securizare a sistemului medical
Tehnicile prin care sistemul e-medical devine sigur, ˆın special cele ce fac
referire la subsisteme sunt ilustrate ˆın figura 4.1 ¸si vor fi prezentate mai
am˘anunt ¸it ˆın continuare. Acestea vizeaz˘a trei domenii majore: date ¸si
aplicat ¸ii, infrastructura sistemului ¸si ret ¸ele.
Figura 4.1: Componentele care stau la baza unui sistem de telemedicin˘a
Cristografie Serviciile informatice de securitate care sunt necesare pentru
a proteja informat ¸iile electronice se bazeaz˘a pe o tehnologie numit˘a crip-
tografie. Cele mai multe tehnici de securitate au la baz˘a fie o criptare cu
”algoritm secret, special implementat” fie criptare cu ”algoritm cunoscut”.
Criptarea poate fi implementat˘a folosind fie o singur˘a metod˘a de codificare
¸si decodificare a textului(algoritm simetric) sau o ˆımbinare de mai mult ¸i
algoritmi. Fiecare tehnologie de baz˘a necesit˘a un alt set de concepte ¸si
mecanisme de sprijin.
Certificatele digitale sunt documente ecriptate generate de Autoritatea
de Certificare, care confirm˘a identitatea proprietarului unei perechi de chei
private sau publice.
Autentificare utilizator
Autentificarea este procesul de verificare a identit˘at ¸ii unui potent ¸ial utiliza-
tor al unui sistem. Cele mai multe mecanisme de autentificare se bazeaz˘a
pe o combinat ¸ie de una sau mai multe ”parole”, dispozitive de securitate(de
exemplu: card de acces) ¸si/sau caracteristici fizice(de exemplu: amprente
digitale). O combinat ¸ie comun¸ a (numit˘a uneori ”autentificare ˆın mai mult ¸i
46
factori”) este autentificarea bazat˘a pe ceva ce det ¸ii(de exemplu: cardul ban-
car) ¸si ceva ce cuno¸sti(de exemplu: codul Pin al cardului bancar).
ˆ
In cea
mai simpl˘a form˘a a ei, autentificarea se face prin verificarea unui cod de
acces sau a numelui de utilizator ¸si a parolei introduse de c˘atre utilizator
ˆın momentul ˆın care dore¸ste acces la sistem. Mecanismele de autentifi-
care mai sofisticate includ folosirea ”cartelelor inteligente” pentru a stoca
acredit˘arile codificare ¸si chiar analize biometrice ale amprentelor digitale,
scanarea fet ¸ei sau scanarea retinei. Autentificarea proprie nu ˆınseamn˘a ac-
ces la orice informat ¸ie sau serviciu specific sistemului; doar verific˘a, cu un
anumit nivel de certitudine, dac˘a suntet ¸i cine pretindet ¸i a fi.
Autorizarea accesului la informat ¸ii protejate
Control accesului este uneori numit ¸si autorizare, ˆın special atunci cˆand se
refer˘a la procesul de a determina dac˘a un utilizator este autorizat s˘a aib˘a
acces la un sistem sau o aplicat ¸ie. Accesul la o informat ¸ie poate fi acor-
dat numai ˆın urma unei autentific˘ari corecte, a unui utilizator autorizat cu
niveluri adecvate de acces (de exemplu, un medic poate avea acces complet
la informat ¸ii despre pacient ¸ii proprii, dar au acces doar la informat ¸ii gen-
erale sau statistici despre pacient ¸ii altor medici).
Responsabilitatea modific˘arilor infomat ¸iilor protejate
Utilizatorii informat ¸iilor protejate din mediul s˘an˘at˘at ¸ii sunt responsabili
pentru toate c˘aile de acces, modific˘arile sau distribuirea informat ¸iilor prote-
jate. Orice acces neaprobat la informat ¸iile protejate din mediul s˘an˘at˘at ¸ii tre-
buie raportat. Jurnalele de audit se folosesc pe post de instrumente pentru
ˆınregistrarea log˘arilor autorizare ¸si neautorizateˆın aplicat ¸iile ¸si/sau serviciile
sistemului, precum ¸si pentru accesul ¸si/sau schimb˘arile informat ¸iilor prote-
jate. Inspect ¸ia periodic˘a a jurnalelor de audit este esent ¸ial˘a pentru a proteja
securitatea sistemului, integritatea informat ¸iilor protejate ¸si p˘astrarea statu-
tului juridiciar al organizat ¸iei.
Integritatea informat ¸iilor protejate
Informat ¸iile protejate din mediul s˘an˘at˘at ¸ii trebuie s˘a fie reprezentate, stocate
¸si distribuite astfel ˆıncˆat orice ˆıncercare de a altera informat ¸iile (ˆıncercare
autorizat˘a sau nu) s˘a poat˘a fi identificat˘a ¸si urmarit˘a. Un mecanism cu
sistem independent strˆans legat de informat ¸ii(de exemplu: control, CRC,
semn˘atura digital˘a) asigur˘a consolidarea, ˆınt˘arirea integrit˘at ¸ii informat ¸iei.
Protejarea informat ¸iilor
Mecanismele de urm˘arire a utilizatorilor furnizeaz˘a dovezi care nu pot fi
comb˘atute ale cre˘arii, ¸stergerii, modific˘arii sau distribuirii de informat ¸ii.
Acest lucru asigur˘a ca nici m˘acar un utilizator autorizat s˘a nu poat˘a accesa,
modifica sau ˆımp˘art˘a¸si informat ¸ii ¸si apoi s˘a nege aceste lucruri.
47
Confident ¸ialitatea informat ¸iilor protejate
Datele dintr-un singur sistem sau datele schimbate ˆıntre sistemele unor
unit˘at ¸i sanitare nu trebuie s˘a fie vizibile de utilizatori sau sisteme neau-
torizate. Utilizatorii neautorizat ¸i pot obt ¸ine informat ¸ii importante despre
datele din sistemul prin crearea unui pod (bridge) ˆıntre cele doua unit˘at ¸i.
Informat ¸iile confident ¸iale nu ar trebui s˘a fie stocate ˆın texte simple
pe un sistem nesigur.
ˆ
In cazul ˆın care securitatea fizic˘a sau electronic˘a a
unui sistem este suspect˘a, informat ¸iile confident ¸iale trebuie s˘a fie criptate
folosind chei care nu sunt stocate pe sisteme nesigure.
ˆ
In funct ¸ie de natura
informat ¸iilor, acestea pot fi stocate ˆıntr-un fi¸sier text, sau stocate ca fi¸siere
criptate ˆın cadrul unei baze de date.
Protejarea datelor care urmeaz˘a s˘a fie trimise c˘atre o alt˘a unitate sani-
tar˘a se realizeaz˘a prin codificarea acestora. Aceast˘a criptare se poate realiza
la diferite niveluri ˆın procesul de comunicare:
• nivelul de criptare al ret ¸elei
• nivelul de criptare al sesiunii
• criptare la nivelul aplicat ¸iilor
Criptarea nivelului ret ¸elei este de obicei pus˘a ˆın aplicare ˆıntre routerele unei
ret ¸ele securizate bazate pe standardul IETF IP. Aceste routere cripteaz˘a
tot traficul( capacitatea util˘a a IP-ului) dintre ele ¸si ˆıntre ele ¸si alte routere
autentificate mutual.
ˆ
In cazul ˆın care trimiterea ¸si primirea prin ret ¸elele
locale (LAN) ¸si asociate sunt sigure, precum ¸si calea dintre ele este sigur˘a
(de exemplu, s˘a fie configurat ca o ret ¸ea virtual˘a privat˘a folosind nivelul
ret ¸elei de criptare), atunci stratul de criptare al ret ¸elei ¸si al sesiunii nu este
necesar.
Nivelul de criptare al ret ¸elei const˘a ˆın faptul c˘a informat ¸ia este crip-
tat˘a doar ˆıntre marginile LAN-urilor fiec˘arei organizat ¸ii. Informat ¸ia se
reg˘ase¸ste ˆın text simplu ˆın cadrul fiec˘arui LAN ¸si pe sistemul final al fiec˘arei
organizat ¸ii. Cˆand nu suntem siguri c˘a ret ¸eaua dintre sistemele de final
este sigur˘a, stratul de criptare al sesiunii poate fi folosit pentru a securiza
informat ¸ia fiind schimbat ˆıntre sisteme finale independente indiferent dac˘a
ret ¸eaua ˆın sine este criptat˘a sau nu. Nivelul de criptare al sesiunii este ade-
sea pus ˆın aplicare la nivelul socket Secure Sockets Layer (SSL) atunci cˆand
se realizeaz˘a partea hard a produsului. SSL este folosit pentru tranzact ¸ii
securizate prin Web, aplicat ¸ii de e-mail ¸si transfer de fi¸siere.
Monitorizarea accesului atunci cˆand vorbim de informat ¸ii confiden-
t ¸iale
Fiecare din mecanismele de securitate utilizate pentru a proteja sistemele
sensibile ¸si informat ¸iile poate fi t ¸int˘a pentru potent ¸iale atacuri neautorizate.
Pentru a ment ¸ine securitatea ¸si integritatea informat ¸iilor protejate, discret ¸ia
48
este necesar˘a, nu numai ˆın selectarea tehnologiei ¸si punerea ˆın aplicare a
politicilor, ci ¸si ˆın monitorizarea sistemelor pentru a suprinde eventualele
autentific˘ari e¸suate, precum ¸si ˆıncerc˘arilor suspecte de acces. Monitorizarea
este realizat˘a de c˘atre audit care realizeaz˘a o diagram˘a a acces˘arilor, a
alarmelor ¸si raporteaz˘a evenimentele dac˘a este necesar.
49
Capitolul 5
Sistem de telemonitorizare
Tele-asistent ¸a medical˘a esteˆımbinarea mai multor sisteme electronice, teleco-
municat ¸ie ¸si tehnologia informat ¸iei(TI), necesare ˆın a transfera informat ¸iile
medicale de la un sistem de tip client la altul de tip server. Principalele
probleme la rezolvarea carora telemedicina i¸si aduce contribut ¸ii majore sunt:
• asistent ¸˘a medical˘a / ingrijirea s˘an˘at˘at ¸ii ˆın locuri izolate, ˆın acest caz
timpul putˆand s˘a fie hot˘arˆator pentru viat ¸a pacientului
• asistent ¸˘a medical˘a la domiciliul pacientilor, atˆat pentru persoanele
greu deplasabile cˆat ¸si pentru a mic¸sora costurile prin evitarea spi-
taliz˘arii
• asistent ¸˘a medical˘a de ˆınalt˘a competent ¸˘a
• asistent ¸˘a medical˘aˆın cooperare - discutarea unui caz medical ˆın comun
de c˘atre mai mult ¸i speciali¸sti aflat ¸i ˆın aceea¸si locat ¸ie
• medicina de urgent ¸a prime¸ste un ajutor substant ¸ial, uneori decisiv
pentru salvarea viet ¸ilor ˆın situat ¸ii critice, din partea sistemelor aflate
ˆın unit˘at ¸ile mobile
Putem observa c˘a astfel accesul la sistemul de s˘an˘atate nat ¸ional va fi mai
bun, de¸si necesit˘a o investit ¸ie important˘aˆın faza de implementare a proiectu-
lui, costurile vor fi mult mai mici, pe viitor, ˆın comparat ¸ie cu celeˆınregistrate
ˆın prezent, ¸si cel mai important aspect ˆıl reprezint˘a calitatea care va fi sem-
nificativ ˆımbun˘at˘at ¸it˘a.
Aplicat ¸ia propus˘a const˘a ˆıntr-un sistem de telemonitorizare (figura 5.1)
bazat pe doua module de transmisie ˆın timp real a semnelor vitale ¸si a
imaginilor video prin Internet de la o unitate sanitar˘a secundar˘a c˘atre un
centru de monitorizare. Pachetul software dispune ¸si de un cˆamp ˆın care
cele doua instant ¸e implicate pot schimba p˘areri f˘ar˘a ca pacientul s˘a poata
vedea acest lucru.
50
Figura 5.1: Fereastra interfetei Server
51
Pentru o utilizare eficient˘a a aplicat ¸iei este necesar ca interfat ¸a s˘a fie
usor de utilizat de c˘atre 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 a
procesa informatiile, necesare uneu sistem de telemedicina am folosit pro-
gramul Microsoft Visual C# 2008 Express Edition. Schimbul de date se face
prin intermediul unui aplicatii client-server, figura 5.2.
Figura 5.2: Arhitectura client server
Pentru a facilita comunicat ¸iia ˆıntre tascuri s-au utilizat fire de execut ¸ie
(Thread), folosind clasa ’System.Threading’. Firul de execut ¸ie principal
este metod˘a ’main’ ¸si atunci cˆand acesta se termina, se incheie ¸si transmisia.
Aplicat ¸ia poate executa ˆın paralel doua sau mai multe fire de execut ¸ie, dar
ˆın realitate un singur fir se execut˘a la un moment dat, comutˆand controlul
de la un thread la altul.
5.1.1 Modul server
Serverul, ˆın cazul de fat ¸˘a, este un program specific care ruleaza ˆın mod
continuu, cu unicul scop de a primi date de la alte programe.
ˆ
In cadrul
aceastei aplicat ¸ie, trebuie definit modul de comunicare cu clientul ¸si modul
de interact ¸iune server - client. Regulile de comunicare pe care trebuie s˘a le
respecte ambele programe sunt implementate ˆın cadrul protocoalelor.
Atunci cˆand dou˘a aplicat ¸ii trebuie s˘a comunice, ele se vor c˘auta reciproc.
Dac˘a doua aplicat ¸ii i¸si recunosc reciproc protocoalele, ele pot crea o conex-
iune. Responsabilitatea este a clientului de a c˘auta serverul init ¸ializˆand o
cerere. Serverul creeaz˘a un fir pe care ˆıl va utiliza pentru comunicarea cu
clientul ¸si ˆı¸si va transmite propria adres˘a c˘atre aplicat ¸ia client ˆın primul s˘au
mesaj de raspuns.
52
ˆ
In figura 5.3 sunt prezentate facilit˘at ¸ile server-ului.
ˆ
In partea de sus a fig-
urii este afisat IP stat ¸iei pe care este utilizat˘a aplicat ¸ia, am folosit clasa ’Tc-
pListener’ utilizˆand instruct ¸iunea (new IPEndPoint(IPAddress.Any, port))
pentru a realiza acest lucru. Mai jos se va putea selecta portul pe care
se va produce schimbul de date, cˆampul este unul de tip ’TextBox’ iar
instruct ¸iunea care va realiza conexiunea este ’System.Convert.ToInt32(portStr)’
din clasa mai sus ment ¸ionat˘a. In centrul ferestrei se afl˘a un camp (ex.: Client
# 1 connected) care va prezenta ˆın permanent ¸˘a starea sistemului.
Figura 5.3: Icon-urile servarului
Utilizatorul are la dispozit ¸ie 4 butoane care ii ofera tot ceea ce are nevoie
pentru a init ¸ia o conexiune ¸si pentru a vizualiza datele primite de la un client.
Pentru init ¸ializarea conexiunii butonul Start Server va deschide un thread
(m mainSocket.BeginAccept (new AsyncCallback (OnClientConnect)), iar
butonul Stop Server va ˆıntrerupe legatura server-client (CloseSockets();),
ˆıntrerupˆand firul de execut ¸ie.
Cele doua butoane de Start ¸si Stop vor fi utilizate pentru a porni respec-
tiv a ˆıntrerupe fluxul de date. De exemplu, dac˘a un pacient va avea nevoie
de o supraveghere pe o durat˘a de timp mai mare, medicul va ˆıntrerupe (
apa˘sˆand butonul Stop) fluxul de date, ¸si ˆıl va reporni ( apa˘sˆand butonul
Start) atunci cˆand va avea nevoie, astfel se vor evita blocajele.
5.1.2 Modul client
Pentru implementarea aplicat ¸iei client ˆın C#, se folose¸ste clasa ’TcpClient’
precizˆand IP-ul (GetIP()) respectiv portul server-ului. Atunci cˆand un client
53
lanseaz˘a o cerere de conectare ( utilizˆand butonul Conectare), metoda ’Ac-
ceptTcpClient’ va returna soclul server-ului (un obiect de tip TcpClient),
prin care se va realiza comunicarea dintre cele doua aplicat ¸ii. De asemenea
clientul va verifica dac˘a leg˘atura a fost realizat˘a corect (CheckForIllegal-
CrossThreadCalls).
Figura 5.4: Fereastra Client
Sincronizarea celor dou˘a fire de execut ¸ie este vital˘a ¸si previne deadlock-
ul ¸si bottleneck-urile posibile ˆın situat ¸iile de transfer de date. Pentru a
asigura sincronizarea, mediul de dezvoltare pune la dispozit ¸ie metoda ’Syn-
chronize()’, dar server-ul este nucleul funct ¸ion˘arii corecte ¸si eficiente a arhi-
tecturii propuse.
Aplicat ¸ia se va testa pornind prima dat˘a serverul ¸si apoi clientul. Pentru
a ˆıntrerupe conexiunea se va ap˘asa butonul Deconectare.
5.2 Modul Chat
Am considerat util crearea unui cˆamp de chat, astfel se va p˘astra o discret ¸ie
ˆıntre asistent ¸i ¸si pacient. Recomand˘arile medicilor care se afl˘a la unitatea
central˘a se vor auzi ˆın difuzoarele ambulant ¸ei, iar pacientul va auzi ce se
ˆıntampla ˆın jurul s˘au. Prin utilizarea acestui cˆamp se vor evita eventualele
nepl˘aceri. Fereasta este prezentat˘a ˆın figura 5.5.
Utilizatorul va avea accesul la cˆampul de jos, acolo va scrie informat ¸ii
care vor fi stransmise, prin ap˘asarea butonului Trimite (obiectul creeat ’obj-
Data’ va trimite informatia codata bit cu bit ’System.Text. Encoding.ASCII.
54
Figura 5.5: Fereastra Chat
GetBytes (objData.ToString())’ ).
C˘asut ¸a de sus va contine textul primit de la operatorii aflat ¸i la server
(afisarea este realizata ˆıntr-o rubric˘a ’MessageBox.Show (se.Message)’ prin
intermediul instruct ¸iunii ’richTextBoxReceivedMsg. AppendText (szData)
care tip˘ are¸ste string-ul’ ).
5.3 Modul video
Video-conferint ¸a presupune ca mai mult ¸i participant ¸i s˘a poat˘a comunica
sonor ¸si vizual ˆıntre ei, ca ¸si cˆand s-ar afla ˆın aceea¸si sal˘a.
ˆ
In cazul de fat ¸˘a
sistemul este configurat pentru o legatur˘a de tipul punct-la-punct (point-to-
point).
Standardele actuale recunoscute pe plan mondial pentru aparatura de
video-conferint ¸˘a sunt: H.320 pentru video - conferint ¸ele ISDN ¸si H.323 pen-
tru video-conferint ¸ele ˆın cadrul retele TCP/IP. Iar ˆın ceea ce const˘a rata de
trasnfer pentru a asigura o calitate satisf˘ac˘atoare a imaginii este de 768Kbps,
astfel se obt ¸in 30 de frame-uri pe secunda.
Pentru realizarea acestui tip de comunicat ¸ie s-a utilizat clasa ’WebCam-
Control’ care asigura interfat ¸a cu utilizatorul. Fereastra care red˘a imagini
video este ilustrat˘a ˆın figura care urmeaz˘a.
ˆ
In continuare voi descrie succint cˆateva din instruct ¸iunile / metodele
folosite, care au o important ¸˘a mai mare:
• FindCaptureDevice() - identific˘a dispozitivul
• System.Drawing.SizeF (6F, 13F) - metoda seteaz˘a dimensiunile imag-
inii primite pentru a se potrivi cu fereastra utilizatorului
• GetInterfaces() - preia blocurile de date
• this.mediaEventEx.FreeEventParams (evCode, evParam1, evParam2)
- seteaz˘a parametrii pentru a evita blocajele de date
55
Figura 5.6: Modul video
• CaptureGraphBuilder.SetStream (this.graphBuilder); - ˆıncarc˘a imag-
inile primite de la camera
• this.videoWindow.put Visible(OABool.True) - face ca imaginea s˘a poat˘a
fi afisat˘a
• this.videoWindow.NotifyOwnerMessage(m.HWnd, m.Msg, m.WParam
.ToInt32(), m.LParam.ToInt32()) - metoda SendMessage transmite
mesaje ferestrei de captur˘a. Sunt necesare diferite supraˆıncarc˘ari ale
metodei SendMessage deoarece mesajele transmise folosesc parametrii
de formate diferite
• ApplicationException - afi¸seaz˘a mesaje de eroare ˆın funct ¸ie de prob-
lemele pe care le ˆıntampin˘a
Fereastra utilizator cont ¸ine un control ’PictureBox’ ˆın care se afi¸seaz˘a cadrele
preluate de la camera web.
ˆ
In clasa ’WebCamControl’ se creaz˘a o instant˘a
a clasei care porne¸ste ¸si opre¸ste fluxul de date.
5.4 Modul grafice
Sistemul realizat va permite monitorizare continu˘a a semnelor vitale ale
pacientului aflatˆın unitatile sanitare mobile sau fixe (de tip client). Fereastra
server-ului cont ¸ine 5 grafice care ˆınglobeaz˘a semnalele vitale preluate de un
aparat de monitorizare. Pe primul canal este semnalul ECG, pe al doilea
canal este prima derivat˘a a semnalului ECG, pe canalul cu num˘arul trei
56
Presiunea Arterial, pe canalul patru este Presiunea Pulmonara ¸si ˆın cele din
urma pe canalul cinci este redat˘a variat ¸ia ritmului respitator, figura 5.7.
Fi¸sierul folosit este din baza de date MIT-BIH Arrhythmia Database ¸si
are numarul 246mgh.
Figura 5.7: Semnalele vitale
Pentru configurarea modulului care traseaz˘a graficele am folosit biblioteca
’GraphLib’. Graphics.h cont ¸ine funct ¸ii care realizeaza init ¸ializarea acestui
modul, selectarea culorilor ¸si setarea diferitelor caracteristici ale setului de
date.
Voi prezenta funct ¸ionalitatea interfet ¸ei prin descrierea celor mai impor-
tante instruct ¸iuni sau metode folosite, astfel:
• FileStream(”date.dat”, FileMode.OpenOrCreate, FileAccess.Read) -
citire fi¸sier de intrare
• display.Refresh() - execut˘a refresh dup˘a fiecare unitate
• display.SetDisplayRangeX(0, 220) - fereastra curenta este descris˘a de
220 de unit˘at ¸i
• src.OnRenderYAxisLabel = RenderYLabel ; display.DataSources[j].
OnRenderXAxisLabel += RenderXLabel - face scalarea dup˘a axa or-
izontal˘a, respectiv vertical˘a
57
• ApplyColorSchema() - seteaz˘a culorile
• System.Drawing.Drawing2D.SmoothingMode.AntiAlias - metod˘a care
autoseteaza calitatea imaginii, apel˘and un dll din windows , prin in-
termediul bibliotecii ’Drawing’
• PrecisionTimer - clasa aceasta aliniaz˘a toate semnalele
Opt ¸iunea de tip˘arire a semnalelor
O facilitate important˘a care a fost implementat˘a este listarea datelor la
imprimant˘a. Medicii au nevoie ¸si de o astfel de facilitate care le va u¸sura
munca, pentru c˘a nu de fiecare dat˘a au timp s˘a caute imaginile pe care le
doresc.
Figura 5.8: Facilitatea tip˘arire
Utilizatorul va avea mai multe opt ¸iuni de tip˘arire a semnalelor, figura 5.9.
Cˆampurile sunt de tip select ¸si check.
a printDoc.PrinterSettings.PaperSizes - din facilit˘at ¸ile softului impri-
mantei se alege un mod de tip˘arire dintre cele disponibile
b Orientation SelectedIndexChanged - se va selecta printarea pe verti-
cala sau orizontala a imaginilor
c Scale.Display - exist˘a trei opt ¸iuni pentru a afi¸sa rezultatele: ˆın format
original, scalare pe toata dimensiunea paginii ¸si ˆıncadrare optima ˆın
pagin˘a.
58
Figura 5.9: Optiuni tip˘arire
59
Capitolul 6
Concluzii
Domeniul telemedicinei este unul ˆın care consumatorul trebuie s˘a acceada
ˆınca cu grija, identificarea solut ¸iilor de e-s˘an˘atate adecvate nefiind o sarcin˘a
u¸soara pentru cei mai multi. Este important de ret ¸inut c˘a, ˆın timp ce
Internet-ul este un instrument puternic pentru obt ¸inerea de informat ¸ii din
domeniul medicinei, totu¸si, el este numai una din diversitatea surselor de
informat ¸ii existente. Profesioni¸stii ¸si speciali¸stii sunt cei chemat ¸i sa joace
rolul principal ˆın instruirea si educarea consumatorilor. Instrumentele ment ¸i-
onate ˆın aceasta lucrare sunt concepute s˘a u¸sureze procesul de selectie, atˆat
pentru medic, cˆat ¸si pentru pacient.
Monitorizarea ¸si ˆınregistrarea datelor ˆın biomedicin˘a este parte integrat˘a
a diagnosticului medical ¸si a mecanismului de control al tratamentului.
Abord˘arile moderne ale tehnicii realiz˘arii senzorilor, algoritmilor analitici,
algoritmilor de compresie ¸si ale tehnicii stoc˘arii datelor ˆımping domeniul spre
evolut ¸ie. Aceast˘a evolut ¸ie va reduce costurile, timpul ¸si va oferi o solut ¸ie
viabil˘a pentru tratarea pacient ¸ilor prin serviciul de telemedicin˘a.
Din varietatea tehnicilor fixe sau mobile se poate stabili ce tehnologie trebuie
folosit˘a ˆın funct ¸ie de criteriile de select ¸ie. Luˆand ˆın considerare atˆat solut ¸iile
ˆın curs de dezvoltare cˆat ¸si pe cele existente deja, fiecare parte medical˘a dar
¸si pacient ¸ii trebuie s˘a obt ¸ina cˆat mai multe beneficii.
Cˆand situat ¸ia necesit˘a o prezentare telemetric˘a a s˘an˘at˘at ¸ii pacientului,
conexiunile GSM /EGDE sau WiMAX pot fi utilizate. Cˆand speciali¸stii
ˆın medicin˘a trebuie s˘a sust ¸in˘a o video-conferint ¸˘a sau o intervent ¸ie chirur-
gical˘a ”live” , pot utiliza tehnici cu benzi largi precum xDSL sau retele IP
(LAN/WAN).
Sistemul de telemedicin˘a cont ¸ine ¸si furnizeaz˘a informat ¸ii care sunt extrem de
sensibile. Divulgarea sau deteriorarea informat ¸iilor ˆıntr-un mod neautorizat
poate fi catastrofal˘a, atˆat pentru organizat ¸ii cˆat ¸si pentru pacient ¸i. Pen-
60
tru a asigura securitatea sistemelor de telemedicin˘a trebuie aplicate politici
adecvate de securitate, proiecte ¸si mecanisme de securitate.
ˆ
In plus, tre-
buie asigurat un mediu de lucru sigur ¸si securizat. Regulile referitoare la
ˆınfiint ¸area unui astfel de mediu sunt coordonate de Commun Criteria.
Cel mai bun sistem de telemedicin˘a practicat ar trebui s˘a ˆındeplineasc˘a
criteriile TCSEC ¸si ITSEC. A fi ˆın conformitate cu aceste standarde asigur˘a
atingerea unui sistem de securitate foarte bine protejat.
Sistemul de telemonitorizare va putea fi folosit ˆın toate situat ¸iile de maxim˘a
urgent ¸˘a, putˆand astfel salva viet ¸i. Caracteristici importante sunt modulari-
tatea ¸si flexibilitatea sistemului, astfel ˆıncat nucleul s˘au va permite achizit ¸ia
¸si monitorizarea biosemnalelor precum ¸si a imaginilor video. Astfel se vor
deschide noi orizonturi pentru procedurile practicii medicale.
Sistemul poate fi extins cu noi tipuri de intrari de date, ceea ce ar putea
dezvolta semnificativ interfat ¸a ¸si interact ¸iunea om-calculator.
Tehnologia informat ¸iei ¸si sistemul de telecomunicat ¸ii, ˆın cazul nostru
bazat˘a pe conexiune Internet ¸si sisteme embedded, concura activ ¸si eficient
la cre¸sterea calitat ¸ii deciziei medicale, mai ales in situat ¸ii ˆı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 c˘a viata unui om este mai importanta decˆat costurile financiare
legate de implementarea unui sistem de telemonitorizare ˆın Romania.
61
Bibliografie
[1] Richard Wootton, Victor Patterson (2007) Introduction to
Telemedicine, The Royal Society of Medicine Press , (Wiley Company)
, England.
[2] McDowell CA, Challis Lockyer, Adams White (1987) Teleconferincing
CME 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 and
e-health, (IOS Press) , Amsterdam.
[7] Richard Wootton, Jennifer Batch (2005) Telepediatrics: telemedicine
and child health, London .
[8] Olga Ferrer-Roca, Marcelo C. Sosa-Iudicissa (2003) Handbook of
telemedicine, (IOS Press) , Amsterdam .
[9] G¨ unter Burg (2006) Telemedicine and teledermatology, (Korgen
Agency) , (Karger) , Basel .
[10] Yang Xiao, Hui Chen (2009) Mobile Telemedicine: A Computing and
Networking Perspective, (CRC Press) , USA .
[11] Thomas William Mayo, Thomas Wm. Mayo, American Health Lawyers
Association, Tara E. Kepler (2008) Telemedicine: survey and analysis
of federal and state laws, USA.
62
[12] Krzysztof Zieli´ nski, 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) Wireless
Telemedicine as Part of an Integrated System for EMedicine, Replubic
of Macedonia.
[15] Vintil˘a Petri¸sor (2009) Tehnologia ZigBee, Romania.
[16] Jeffrey Lee, Sanjeev Oghra (2007) Biomedical Telemedicine, (CSCI
E-170, January 11) Quebec.
[17] Upkar Varshney (2006) Using wireless technologies in healthcare, Geor-
gia.
[18] PhysioBank, MIT-BIH database and Software Catalog
http://ecg.mit.edu/dbinfo.html.
[19] Security Architecture for Open Systems Interconnection for CCITT
Applications http://www.itu.int/itudoc/itu-t/rec/x/x500up/x800.html.
[20] G. Pekhteryev, S¸ ahino˘glu, N. Challa (2008) Real-Time and Secure
Wireless Health Monitoring, (Mitsubishi Electric Research Laboratories,
Inc., 2008), USA.
[21] Titu I. B˘ajenescu (2009) Aspecte Ale C˘alit˘at ¸ii
ˆ
In E-Service:
Telemedicin˘a, Videoconferint ¸e, Multimedia ¸si Aplicat ¸ii de Band˘a Larg˘ a
, comunicat: La Conversion, Elvetia.
63
Anexe
Anexa 1: Detect ¸ie QRS prin algoritmul bazat pe amplitudine ¸si
prima derivat˘a.
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
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 obt ¸inut 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
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 obt ¸inut 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
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 obt ¸inut prin aplicarea metodei AF2
67
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
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
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
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
}
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
{
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
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
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
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
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
{
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
}
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
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
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
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
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
}
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
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
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
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
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
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
}
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
(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
{
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
}
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
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
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
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
(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
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
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
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
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
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
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
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
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
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
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
}
108

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->