1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đề tài ứng dụng công nghệ thông tin trong việc xây dựng hệ thống lưu trữ và truyền tải hình ảnh phục vụ chuẩn đoán và tra cứu tai bệnh viện đa khoa tỉnh bình dương chuyên đề 2 11 thiết kế và viết chương trình khai thác

29 586 1
Tài liệu được quét OCR, nội dung có thể không chính xác

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 2,4 MB

Nội dung

Trang 1

II

Trang 3

| TRUONG BH KY mmr

VIEN KHOA HQC VA CONG NGHE VIET NAW

VIEN CO HOC VA TIN HOC UNG DUNG

000

DE TAI:

UNG DUNG CONG NGHE THONG TIN TRONG VIEC XAY DUNG HE THONG LUU TRU VA TRUYEN TAI HiINH ANH PHUC VU CHAN DOAN VA TRA CUU (PACS) TAI BENH VIEN DA KHOA

TINH BINH DUONG

CHUYEN DE 2.11:

THIET KE VA VIET CHUONG TRINH KHAI THAC VA

XU LY ANH DICOM PHUC VU TRONG QUA TRINH HOI CHAN CHO CAC PHONG: MO, HOI TRUONG,

PHONG CHAN DOAN HINH ANH VA CAP CUU

NGƯỜI THỰC HIỆN:

Ngô Anh Tuấn

Nguyễn Hữu Phước

Nguyễn Thanh Tùng

Trần Anh Khoa

Cơ quan chủ trì: Viện Cơ học và Tin học ứng dụng Địa chỉ: 291 Điện Biên Phủ, Quận 3, thành phố Hồ Chí Minh

Chi nhiệm đề tài: Th.S Đào Văn Tuyết

HG MEME TE MGM

ar

Trang 4

ViñBn Cð hữc và Tin hồc Bng đồng Báo cáo đũ tài S5 KH&CN Bình DØfing — Chuyên đã 2.11

THONG TIN CHUNG VE CHUYEN DE

1 Tén chuyén dé: Thiét ké va viét chuong trình khai thác và xử lý ảnh DICOM phục vụ trong quá trình hội chân cho các phòng: Mỏ, Hội trường, Phòng Chân

đoán hình ảnh và cấp cứu

2 Chức năng:

Kết nối giữa các điểm hội chân

Quản lý người dùng tham gia hội chân Truyền voice, video giữa các điểm hội chân

Chia sẻ nội dung hội chân (thông tin bệnh nhân, ảnh DICOM) Đo kích thước tổn thương, tính toán Hounsfield Unit (HU) Xem lại Video ca mô

3 Nội dung công việc:

a Phuong 4 án xây dựng chương trình dựa vào các kết quả khảo sát tại Bệnh viện Bình Dương

Xây dựng ứng dụng trên REDS Xây dựng module kết nối giữa các điểm hội chân

Xây đựng module quản lý người dùng tham gia hội chân Xây dựng module thảo luận giữa các điểm hội chân Tìm kiếm thông tinh bệnh nhân

Xây dựng module chia sẻ nội dung hội chân

Hiện thực chức năng đo kích thước tổn thương, tính toán HU Cài đặt REDS Server

Hiện thực module xem lại Video ca mô

Kiểm tra, chạy thử

Trang 5

ViBin Cl Alc va Tin hiAc Png đồng Báo cáo dil tdi SA KH&CN Bình DBling —- Chuyên đã 2.11

MUC LUC

PHAN I1: THIẾT KE CHƯƠNG TRÌNH 5 2 2.1 12121 1111 tre 1 1.1 Phương án xây dựng chương trÌnh: - - ¿+ xxx ng HH he 1 12 Giới thiệu sơ lược về giao thức RTMMP LH * TH HH ng Hy l

1.2.1 Cdc ché 46 hoat dng ctia RTMP? ccccccsccssessesssessesssssesseesesseasecsesseesteaseesesses 2

1.2.2 Quá trình bắt tay: cc co ch nh HH HH 2H ườu 3

1.2.3 Tiêu đề RTMP: c nhe ưeg 3

1.2.4 Truyền tải nhiều đối tượng AMF trên cùng một kết nối: . 4

1.3 Chuẩn mã hoá dữ liệu: c- St nghe 6

1.3.1 AMF (Action Message FOrTma†): cà HH HH Hy 6

6 .Ố 6

I Ư ` 'ŠS ‹.d 7

PHẢN 2: XÂY DỰNG CÁC MODULE 555: 5 t2 tt 10

2.1 Xây dựng ứng dụng trên máy chủ REIDS óc Shin re 10

2.2 Module kết nỗi giữa các điểm hội chân 52- 25c Sncttctrrerrrrtrerree 10

2.3 Module quản lý người dùng tham gia hội chân ¿-5- 255cc xszsccxcxee 1]

2.3.1 ai na ẽg H1

2.3.2 Tao, tham gia, xóa một buổi hội chân - 5-5 ScSncvererrrtrrrreree 11

2.4 Module thao lun gitta cdc diém hOi ChaI cceccsecscsceeessssesesssesteteeseeveseeteeeees 12

2.4.1 Chat giữa những người sử dụng trong cùng nhóm hội chân: 12

2.4.2 Âm thanh tt tt HH2 a 12

2.5 Module tìm kiếm thông tin bệnh nhân .2.2©22-52ct+2v2Eerxervztrtrrrerrrei 12:

2.6 Module chia sẻ nội dung hội chân - 52 22x22 E212 14 2.6.1 Thông tin bệnh nhân và danh sách ảnh dùng trong cuộc hội chẩn 15

2.6.2 Số thứ tự, tọa độ, kích thước ảnh đang sử dụng - s55 15 2.7 Chức năng đo kích thước tôn thương, tính toán HU - - :55c++c+ssc2 17

2.7.1 Ðo kích thước tổn thương ccccccvtiiieeriirtrrirrriierrrrie 17 2.7.2 _ Tính toán HU ốA 18 2.8 Cài đặt REID5 S€TV€F - HT nT TH TH ng ko 19

2.9 _ Hiện thực module xem lại Video ca mỖ St St text rrererrre 21

Trang 6

Vin Cal hồic và Tin hic Bing dling Bao cdo di tai SA KH&CN Binh Dil@ing — Chuyén di 2.11

PHAN 1: THIET KE CHUONG TRINH

1.1 Phương án xây dựng chương trình:

Chương trình hội chân hoạt động dựa trên mô hình Client- Server, hoạt động dựa trên giao thức RTMP(Real Time Messaging Protocol) cho việc truyền dỡ liệu voIce, video, gọi hàm tìm kiếm, nhận kết quá, chia sẻ nội dung hội chan v và giao thức HTTP cho việc lấy ảnh từ máy chủ a thao tac

Client Side Server Side

Hinh 1: Sơ đồ các module chương trình 1.2 Giới thiệu sơ lược về giao thức RTMP

Mạng Internet vốn được xây dựng để truyền dữ liệu, và các giao thức truyền tải lớp Transport nhu TCP (Transmission Control Protocol) hay UDP (User Datagram Protocol) chi co kha nang truyén dữ liệu từ đầu cuối đến đầu cuối mà không có bắt kì cơ chế nào để đảm bảo gói dữ liệu được truyền đến đích trong một thời gian xác định nghĩa là không đảm bảo vấn đề thời gian thực cho âm thanh, hình ảnh Khi truyền một

gói dữ liệu trên mạng Internet có nhiều nguyên nhân khiến gói đữ liệu đến đích không

Trang 7

Villn CA hflc va Tin hic Ping dling Báo cáo đồi tài SA KH&CN Bình DPlầng - Chuyên đÐØ 2.11

nhiên, người ta sử dụng cơ ché “Buffering” (ving dém Playback) ở phía nhận để giảm

jitter khi truyền âm thanh, hình ảnh trên mạng Internet Cơ chế này như sau:

Dữ liệu được đưa vào Dữ liệu được lấy ra với với tốc độ biến đồi tốc độ cố định

Hình 2: Vùng đệm dùng cho việc playback

Bên nhận khi nhận được dữ liệu thì không phát ra ngay mà lựu vào vùng đệm K Khi vùng đệm K đây thì bên nhận bắt đầu phát hình ảnh và âm thanh (lấy dữ liệu ra khỏi vùng đệm K với một tốc độ không đổi) Trong lúc phát âm thanh, hình ảnh thì nó

tiếp tục nhận đữ liệu âm thanh, hình ảnh từ bên gửi bù đắp vào đữ liệu được lấy ra

khỏi vùng đệm K để phát Nếu chỉ có trì hoãn nhỏ xảy ra thì vùng đệm K sẽ không bị

cạn kiệt và đảm bảo triệt tiêu jitter, nếu có trì hoãn lớn hoặc mắt dữ liệu thì tới một lúc

nào đó vùng đệm K sẽ bị cạn kiệt, khi đó bên nhận sẽ dừng phát âm thanh, hình ảnh và

phải tiễn hành thao tác trên lại từ đầu Có một vài điểm đáng lưu ý khi chọn kích thước

của vùng đệm K Nếu chọn K lớn thì có thể giảm đáng ké jitter nhung thoi gian cho

đợi trước khi bắt đầu phát âm thanh, hình ảnh sẽ rất lâu Ngược lai néu chọn K nhỏ thì

thì thời gian chờ đợi trước khi bắt đầu phát âm thanh, hình ảnh sẽ ngắn nhưng trong quá trình phát thường hay dừng để đệm lại dữ liệu

RTIMP là giao thức được tạo ra bởi Macromedia (hiện nay là Adobe) dùng để truyền tải các đối tượng Flash và video trên các kết nối mạng Hiện tại chỉ có 2 máy chủ hỗ trợ giao thức này là Macromedia Media Sever, và server mã nguồn mở Red5

Đây là một giao thức đơn giản, được tối ưu cho các kết nối tốc độ thấp Nó có thể hỗ trợ tối đa 64 luồng dữ liệu trên cùng một kết nối Trong header của một AMF có chứa chỉ số của luồng dữ liệu mà nó thuộc về Một message RTMP có thể chứa nhiều hơn một đối tượng AME

1.2.1 Các chế độ hoạt động của RTMP:

Trang 8

ViBn Cñ hữc và Tin hic ng đồng Báo cóo đồi tài SE KH&CN Bình DElầng ~ Chuyên đã 2.11

_1⁄2.2 Quá trình bắt tay:

Hoạt động cơ bản của RTMP như sau : Tất cả quá trình truyền thông được khởi

động bởi client Client khởi tạo một kết nỗi RTMP bằng cách gửi một byte có giá trị 0x03 — byte này được theo sau bởi một khối dữ liệu 1536 byte Định dạng của khối dữ liệu này cho đến nay vẫn chưa biết nhưng nó dường như không thực sự được sử dụng bởi giao thức ngoại trừ thao tác bắt tay

Server khi nhận được gói đữ liệu sẽ lưu lại khối đữ liệu 1536 byte này, và cũng gởi 1 byte giá trị 0x03 theo sau bởi hai khối 1536 byte Khối thứ hai chính là nội dung đã được gửi lên bởi client trước đó

Client nhận hai khối dữ liệu 1536 byte từ server, so sánh với khối đữ liệu ban đầu

nó gửi lên server, nếu phù hợp thì kết nối được thiết lập, nó cũng gửi trả khối dữ liệu nay vé lai cho server Ox03 + 1536 byte Khởi động kết nối » 1536 byte 1536 byte ¥ Client Server

Hinh 5: Qué trinh bat tay gitta Client va Server trong giao thức RTMP Sau thao tac bat tay Client tiép tuc gửi ba đối tượng AME lên server để khởi động truyền đữ liệu Đối tượng đầu tiên là đối tượng connect nhằm thông báo client đã sẵn sàng cho quá trình truyền thông Đối tượng AME thứ hai chính là đối tượng

NetConnection từ client, lớp Action Script này được sử dụng tạo kết nối tới media

server Đối tượng AMEF thứ ba là đối tượng NetStream từ client dùng để xác định file cần stream từ server

1.2.3 Tiêu đề RTMP:

RTMP có bốn loại tiêu đề đó là tiêu đề 12, 8, 4 hoặc 1 byte Byte đầu tiên của tiêu dé rất quan trong, 2 bit đầu tiên của nó xác định kích thước của tiêu đề

e 0x00: tiéu dé 12 byte e 0x01: tiêu đề 8 byte

0x02: tiêu đề 4 byte

© 0x03: tiêu dé 1 byte

Sáu bít còn lại biểu diễn chỉ số của đối tượng AMEF Một khi đối tượng AME đã được nhận đầy du béi client thi chỉ số này có thể được tái sử dụng

Trang 9

ViBñn Œñ hữc và Tin hữlc ñng đồng Báo cáo đồi tài SH KH&CN Bình D?Bng - Chuyên đã 2.11 6 bịt 1 bytes fe — 3 bytes fe 3 bytes pty le 4 bytes 5 Source ID ˆˆ Header Type ( 2 bits } Hình 6: Tiêu đề RTMP 12 byte

Đối với tiêu đề 12 byte thì 3 byte tiếp theo là trường timestamp (little-endian), 3

byte tiếp theo nữa là chiêu dài của đối tượng AME (big- endian), byte ké tiép quy dinh nội dung của đối tượng AME (xem hình 7), 4 byte cuôi cùng xác định source id

Đối với tiêu đề 8 byte thì bỏ đi trudng source id trong tiêu đề 12 byte

Đối với tiêu đề 4 byte thì bỏ di trường length, content type trong tiêu dé 8 byte

Đối với tiêu đề 1 byte thì bỏ đi trường timestamp trong tiêu dé 4 byte nghia là nó

chỉ gồm byte đầu tiên chứa kiểu tiêu đề và chỉ số đối tượng AMF oxOl Chunk Size axde2 Unknown oxo3 Bytes Read ax0+4 Ping 0%D5 Server BW oxo6 Client BW oxa? Unknown

axos audio Data

oxo9 Video Data

DxHa - DxE Unknown „ DxDF Flex Stream Flex Shared o> Ox 10 Object : axi1l Flex Message ñx<12 Notify 8x13 Shared Object ñ%14 Invoke

Hình 7: Một số gid tri trong truéng Content Type 1.2.4 _Truyén tai nhiéu déi trong AMF trên cùng một kết nối:

Trang 10

Viln CP) llc va Tin hic Bing dling

Hình 8: Các khối dữ liệu của một đối tượng AMF có chỉ số là 0x03

Để có thể truyền nhiều đối tượng AMEF trên một kết nối đơn người ta không truyền

Trang 11

Viln Ca hllc va Tin hc ng đồng Báo cdo dil tdi S@l KH&CN Binh Ding — Chuyén d@ 2.11

1.3 Chuẩn mã hoá dữ liệu:

1.3.1 AMF (Action Message Format):

AME là một định dạng dùng chỉ ghép nối tiếp các dữ liệu được dùng dé giao tiép thông qua môi trường mạng AMF giúp mã hoá và định nghĩa các kiểu đữ liệu cần tương tác giữa hai hệ thống Thông qua AME, các hệ thống đầu cuối sẽ hiểu được dữ liệu được chuyền từ hệ thống khác là kiểu dữ liệu gi AMF duoc giới thiệu đầu tiền

2001 trong Flash Player 6 là AMEF0 Sau này được phát triển thêm thành AME 3 trong

Flash Player 9 Tuy nhiên AMF0 vẫn còn được hỗ trợ dé tương thích lùi

1.3.2 AMFO:

Giới thiệu:

Như đã giới thiệu ở trén AMFO là phiên bản đầu tiên của AMF giúp phép nối các đối tượng đữ liệu, chứa thông tin về kiểu của của dữ liệu AME0 cũng hỗ trợ truyền

các kiểu đữ liệu phức tạp bằng cách dùng tham chiếu để tránh dư thừa dữ liệu

Kiểu dữ liệu AME0:

Trong AMEF0, các kiểu đữ liệu được đánh dấu bằng 1 byte Theo sau đó là dữ liệu theo đúng những gì đã được mô tả ở byte đánh dấu phía trước

Các kiêu đữ liệu của AME0 được liệt kê ngay sau đây: Kiểu số 0x00 Kiểu logic 0x01 Kiểu chuỗi 0x02 Kiểu đôi tượng 0x03 Kiểu null 0x05

Kiểu tham chiêu 0x07

Kiéu mang ECMA 0x08 Đánh dấu kết thúc đôi tượng | 0x09

Kiểu mảng dày 0x0A Kiểu ngày tháng 0x0B Kiểu chuỗi đài 0x0C Kiểu XML 0x0F Kiểu lớp 0x10

Hình 10: Kiểu đữ liệu trong AMF0

se Kiểu số được dùng để mã hoá một số ActionScript Dữ liệu theo sau một

marker luôn luôn là 8 byte số dấu chấm động double IEEE-754

Kiểu số = đánh dấu DOUBLE

e© Kiểu logic được dùng để mã hoá kiểu nguyên thuỷ logic của ActionScript Một ˆ_ byte đánh dấu là kiểu logic, theo sau đó là một byte chỉ giá trị của dữ liệu logic

Giá trị này bằng 0 là false, bằng 1 là true

Trang 12

Vilin Cal hflic va Tin hic Ang ding Báo cdo da tai S3 KH&CN Bình DBlng - Chuyên đã 2.11

© Kiểu chuỗi được dùng để mã hoá bất kì một chuỗi nào có độ dài nhỏ hơn 65525 kí tự Nếu chuỗi nào dài hơn độ dài này thì sẽ chuỗi kiểu chuỗi dài

Kiểu chuỗi = đánh dấu UTF-8

e© Kiểu đối tượng được dùng để mã hoá kiểu object của ActionScript Kiểu này

tương đối "phức tạp được ghép nỗi như sau:

Kiểu đối tượng = đánh dấu (UTF-8 giá tr)(UTF-8 gia_Tri) (UTF-8 gia Tri) UTF-8 _ Tống đánh dấu kết thúc

© Kiểu null chỉ được biểu diễn bằng byte đánh dấu kiểu, và không có thông tin

đính kèm theo sau :

Kiểu null = đánh dấu

° Kiểu tham chiếu được dùng để chỉ lại dối tượng đã mã hoá phía trước mà không

cần phải truyền lại, tránh dư thừa dữ liệu Kiểu đữ liệu tham chiếu sử dụng số nguyên 16 bit đề dùng như một chỉ mục và bắt đầu bằng 0

Kiểu tham chiếu = đánh dấu U16

e_ Kiểu mảng ECMA được xem như là một kiểu phức tạp của AMEF0 Kiểu này có thể được sử dụng kèm với kiểu tham chiếu cho đữ liệu của nó Sau byte đánh

dấu là một byte chỉ kích thước của mảng, và tiếp theo sau đó là dữ liệu của

mảng "¬

Kiểu mảng ECMA = đánh dấu U32 U32*(UTF-8 gia tri) UTF-8_réng

đánh dấu kết thúc

e_ Kiểu mảng dày chứa dữ liệu cần truyền đi

Kiểu mảng dày = dánh dấu U32 U32*giá trí

e©_ Kiểu chuỗi dài được sử dụng trong AMF0 để mã hoá một chuỗi chiếm chiều dài nhiều 65535

Kiểu chuỗi dài = đánh dấu UTF-8_ dai

e Kiểu ngày tháng được dùng để mã hoá số lượng ms đã qua để từ ngày | thang 1

năm 1970 giờ UTC

Múi giớ = S16 (số nguyên có dấu 16 bit)

—— Kiểu ngày tháng = đánh dấu DOUBLE Múi giờ

e Kiểu XML cũng được hỗ trợ trong AMF0 khi dùng để ghép nối dữ liệu trong chuỗi XML AME0 coi Kiểu XML giống như những kiẻu chuỗi dài khác

Kiểu XML = đánh dấu UTE-8 dài

e©_ Kiểu lớp là kiểu được dùng để phép nối các dữ liệu trong một lớp lại thành một chuỗi gửi đi Kiểu lớp cũng có thể được sử dụng kèm với kiểu tham chiếu

Tên lớp = UTF-§

Kiểu lớp = đánh dấu Tên lớp (UTE-8 gia _tri) (UTF-8 gia tri) (UTF-8 gia tri) UTF-8 réng danh_ dấu kết thúc

13.3 AME3S: Giới thiệu:

AME3 là một phiên bản mới của AME, nhằm cải tiến những hạn chế của AMFO Cai tién cha AMF3 1a han ché lai việc truyén dư thừa dữ liệu và bổ sung thêm một số kiểu dữ liệu mới

Trang 13

Vilin CB hlic va Tin hic Bing d@ing Báo cáo đồ tài Si KH&CN Bình DØÐBng ~ Chuyên di 2.11

Trong AMEF3, mỗi kiểu đữ liệu cũng được bắt đầu bằng một byte chiều dài, tiếp

theo là dữ liệu tương ứng với dữ liệu được mô tả ở byte đánh dâu Giá trị của byte đánh dâu có ý nghĩa như sau: Kiéu undefined 0x00 Kiéu null 0x01 Kiéu logic false 0x02

Kiéu logic true 0x03

Kiểu số nguyên 0x04 Kiểu sé double 0x05

Kiéu chudi - 0x06

Kiéu van ban XML | 0x07

Kiéu ngay thang 0x08 Kiéu mang 0x09 Kiểu đổi tượng 0x0A Kiêu XML _ 0x0B Kiéu mang byte 0x0C

Hình 11: Kiểu dữ liệu của AMF3

e Kiéu undefined chỉ được biểu diễn bằng byte đánh dấu không có dữ liệu đi kèm

theo sau

Kiểu \ undefined = đánh dấu

e Kiểu null cũng giống như Kiểu undefñned chỉ được biểu diễn bằng byte đánh dẫu và không có dữ liệu đi kèm theo sau

Kiểu null = đánh đấu

e© Kiểu logic false, Kiểu logic true được dùng để thay thế cho Kiểu logic ở AME0, cái giá trị logic được biểu diễn kèm theo byte đánh dấu

Kiểu logic false = đánh dấu logic false

Kiểu logic true = đánh dấu logic true

e_ Kiểu số nguyên được dùng để mã hoá số nguyên không dấu 29 bit theo cú pháp ABNF (Augmented Backus-Naur Form)

Kiểu số nguyên = đánh _ dấu U29

se Kiểu double được dùng để mã hoá một số, Kiểu này cũng được dùng thay cho Kiểu số nguyên nếu số có giá trị lớn hơn 2? Kiểu này bao gồm một số đấu chấm động [EEE-754 theo sau một byte đánh dấu

Kiểu double = đánh dấu DOUBLE

e Kiểu chuỗi được dùng để biểu diễn một chuỗi trong AMEF3 và dùng tương

đương như chuỗi dai trong AMFO

Kiểu chuỗi = đánh dấu UTF-§-vr

e Kiểu văn bản XML được dùng để mã hoá Kiểu XMLDocument trong

ActionScript Chiều đài của một văn bản XML được giới hạn trong 256MB

Trang 14

ViBn Cũ hữc và Tin hữc Png dầng Bdo cdo dil tai SA KH&CN Binh Dialing — Chuyên đãi 2.11

e Kiểu ngày tháng có ý nghĩa giống như trong AMEO0

Kiểu ngày - tháng = đánh _ dau (U29_1|U29_2 DOUBLE)

U29_1 cé bit dau tiên là 0 chỉ kiêu ngày tháng tham chiếu, U29 _2 có bit đâu tiên là 1 tiếp theo sau là một DOUBLE chỉ số lượng ms từ ngày l

tháng 1 năm 1970 tới thời điểm hiện tại tính theo giờ UTC

e Kiểu mảng được sử dụng thay cho kiểu ECMA, máng dày đặc của AME0 _ Kiểu mảng = đánh dấu (U29 1 | U29 2 (Kiểu ECMA_ |

Kiểu máng dày))

e Kiểu đối tượng được dùng để chất lượng đối với các kiểu Object của ActionScript và kiểu lớp của người đùng

Kiểu mảng = đánh dấu (kiểu đối tượng | kiểu lớp)

e©_ Kiểu XML được dùng để mã hoá đối tượng XML của ActionScript có hỗ trợ cú pháp E4X Nội dung của kiểu này được xử lý giống như một UTF-8

| Kiéu_XML = danh_dau (U29_1 | U29_2 UTF-8)

e© Kiéu mang byte 1a mét kiéu mdi dugc hé tro trong AMF3 so voi AMFO Kiéu này cũng tượng tự như kiểu mảng của AME3 nhưng các phần tử của nó là các byte

Kiểu mảng byte= đánh đấu (U29 1|U29_2 n*(U8))

Trang 15

Vifin Cũ hữc và Tin hic Ang dling Báo cáo đã tài S0 KH&CN Bình DBlAng — Chuyên đồ 2.11

PHẢN2: XÂY DỰNG CÁC MODULE

2.1 Xây dựng ứng dụng trên máy chi REDS |

Ứng dụng trên máy chủ RED5 được viết bằng ngôn ngữ Java, cần xây dựng một lớp

Application và các hàm cần thiết để phục vụ cho các điểm hội chan Nhóm các hàm quản ly người dùng:

public int userLogin(String username, String password); public void userLogout (String username) ;

public synchronized int createConsultation(String name); public String[] getConsultationList(); -

public String[] getUserListInConsultation(String consultName) ; public synchronized int deleteConsultation(String consultName) ; public boolean joinConsultation(String username, String consultName) ; , , public boolean leaveConsultation(String username, String consultName) ; public void appDisconnect (IConnection conn) ;

Nhóm các hàm tìm kiếm thông tin bệnh nhân:

private String getPatientAge (String birthdate);

public String[][] searchPAC5(String patientName, String patientID,String startDay,String stopDay,String modality);

public String[][] getSeriesOfStudy(String studyID,String studyPK); public String[] getSeriesInformation(String seriesPK);

public boolean saveSeriesInformation(String seriesPK, String desc, String diag, String note);

Nhóm các hàm phục vụ chia sẻ nội dung:

public String[][] getImage ThumbnailPathList (String seriesPK); public synchronized boolean enableShare (String consultName) ; public synchronized boolean exitShare(String consultName) ; public synchronized String capturePen(String consultName, String username) ;

public synchronized boolean releasePen (String consultName) ;

public synchronized String lockImageViewer (String consultName, String

username) ; /

public synchronized boolean unlockImageViewer (String consultName) ; public double getHounfieldUnit (int x, int y, String studyUID, String seriesUID, String objectUID);

2.2 Module kết nối giữa các điểm hội chấn

Các điểm hội chân kết nôi với nhau thông qua REDS server sử dụng giao thức _RTMP

Xây dựng một ứng dụng rConsult trén may chi REDS

Trang 16

ViBn Ci hic va Tin hile Bing ding Báo cáo đồ tài S1 KH&CN Bình D0ling — Chuyên đã 2.11

2.3 Module quản lý người dùng tham gia hội chẵn 2.3.1 Đăng nhập

Khi người sử dụng nhập username & password và yêu cầu đăng nhập thì chương trình Client sẽ gọi hàm userLogin (username,password) trên máy chủ RED5 với

tham số là username và password vừa mới nhập vào Thực chất của việc gọi hàm này

là Client gửi một thông điệp yêu cầu máy chủ RED5 thực thi hàm userLogin với hai

tham số do Client gửi kèm theo Máy chủ REDS sau khi nhan yéu cau cua Client sẽ

tiến hành thực thi hàm userLogin với tham số do Client gửi lên Hàm này sẽ đọc CSDL của hệ thống, kiểm tra username & password do Client gửi lên có hợp lệ không,

sau đó sẽ gửi kết quả về cho Client Goi ham userLogin (username, password) > ko gua “Thực th travetir | him MáY chủ ¬ tra ket quả về chỉ tiep - M§eLogi | (hent REDS

Hinh 12: Goi ham userLogin () trên máy chủ

Hiện tại hệ thống chưa hỗ trợ SSL (Secure Socket Layer) khi đăng nhập Hạn chế này sẽ được khắc phục trong thời gian sắp đến

2.3.2 Tạo, tham gia, xóa một buỗi hội chấn

Đề tạo mới một buổi hội chan thi Client sé goi ham createConsultation (name) trén RED5 với cơ chế tương tự như lúc đăng nhập RED5 sau khi thực thi hàm này sẽ tao ra một buôi hội chân với tên là name và chờ các user tham gia buổi hội chân này

Để tham gia vào một buôi hội chân thì Client sẽ gọi hàm

joinConsultation (username, consultName) trên RED5 với tham số thứ nhất là tên |

đăng nhập, tham sô thứ hai là tên buổi hội chân muốn tham Bia REDS khi thực thi

ham joinConsultation sé dua username vao budi hội chân có tên là consu1tName Tại một thời điểm thì một user chỉ có thể tham g1a một buổi hội chân

Tương tự để xóa một buổi hội chan thì Client gọi hàm

Trang 17

ViAn Œ3 hữlc và Tin hữlc PIng đồng Báo cáo đồ tài S0 KH&CN Binh Ding — Chuyên đã 2.11

2.4 Module thảo luận giữa các điểm hội chẳn

2.4.1 5 Chat giữa những người sử dụng trong cùng nhóm hội chân:

Dùng để trao đôi ý kiến giữa | tất cả người sử dụng Cơ chế hoạt động của chức năng này là broadcast message đến tất cả người sử dụng dựa trên cơ chế SharedObject của RED5 server & Flash I May tram May tram IV” broadcast|“message”

May tram May tram

Hình 13: Sơ a6 broadcast message

2.4.2 Am thanh

Tại mỗi Client có sử dụng chức năng âm thanh, âm thanh sẽ được nén bởi chuẩn nén HE-AAC sau đó truyền lên RED5, RED5 sẽ chuyên tiếp đữ liệu âm thanh đến những người sử dụng trong nhóm hội chân có sử dụng chức năng âm thanh

Đề chức năng âm thanh hoạt động có hiệu quả thì ngoài yêu câu đường truyền có độ trễ › thấp thì còn cần trang bị hệ thống âm thanh (microphone, loa) có chất lượng tốt tại mỗi Client

2.5 Module tìm kiếm 1 thong tin bénh nhan

Hỗ trợ tìm kiếm thông tin bệnh nhân được lưu trên hệ thống PACS Có thê tìm kiếm theo tên bệnh nhân, mã số bệnh nhân, hoặc theo ngày

Quá trình hoạt động như sau: Khi client cần tìm kiếm thông tin bệnh nhân trên hệ

Trang 18

Vilin C8 hic va Tin hic ing dilng Báo cáo đồ tài SA KH&CN Bình D8Iing — Chuyên đã 2.11

Goi ham searcaPacs ——— - „ Truy vân :

CN 6 Trả kết quả |

Máy trạm REDS CSDL

Hình 14: Sơ đồ hoạt động của quá trình tìm kiếm thông tin bệnh nhân

Tạo câu truy vấn CSDL:

String query="select PATIENT.PAT NAME, PATIENT.PAT ID,

PATIENT.PAT BIRTHDATE, PATIENT.PAT_SEX, STUDY.STUDY_DATETIME,

STUDY STUDY | _DESC, STUDY.MODS_TN - STUDY, STUDY STUDY _ID, PATIENT.PK as PATIENT PK, STUDY.PK as STUDY_ PK from PATIENT, STUDY where

PATIENT PK=STUDY PATIENT _FK"; se(tpatientvane.equatrqnorecase ™) query+="_and lower (PATIENT.PAT NAME) like lower('%$"+tpatientName+"%')" i (tpatientID-equaleignoreCase("™) } query+=" and lower(PATIENT.PAT ID) like lower ('%$"+patientID+"%"')" 1£ 15 day -equa1s1gnoreCasẻ (**)]

{ queryt="" and STUDY STUDY_DATETIME>=to date ("+s day+"", 'dd-mm-yyyy")"

1£(1e_ day -equa1sTgnoreCase (""))

query+=" and STUDY.STUDY_DATETIME<=to_date('"+te_day+ " 23:59:59", 'dd-mm-

yyyy hh24:mi:ss')"; / le (tmodality.equaleignoreCase ("") )

query†=" and lower (STUDY.MODS_IN_STUDY)=lowex ('"+ modality+t"')"; 3

//sap xep theo ten va ngay chup

query+=" order by PATIENT.PAT NAME, STUDY.STUDY_ DATETTIME” ;

Lấy kết quả truy vấn

Connection conn=DriverManager.getConnection(this.dbUrl, sqlUser, sqlPwd);

Statement stmt=conn createStatement (ResultSet TYPE_SCROLL_ INSENSITIVE, ResultSet CONCUR_READ ) ONLY) ;

ResultSet rs=stmt executeQuery (query) ;

res[count] [0]=rs.getString ("PAT NAME");

res[count] (S5J=rs.getString ("STUDY DESC") ; res[count] [6]=rs.getString("MODS_IN_STUDY");

res[count] (7]=rs.getString("STUDY_ID");

res[count] [8]=rs.getString ("PATIENT PK");

res(count] {9]=rs.getString ("STUDY _PK");

Trang 19

Vitin Cl hPic va Tin hic Bing dling

Để tìm kiếm thông tin chỉ tiết về ca bệnh và lần chụp ảnh, Client con sử dụng thêm các hàm khác của RED5 như getSeriesOfStudy(), getSeriesInformation()

Nguoi su dung:admin - Budi hdi chan: tt Tién ich Tử Thiết lập /Tham gia Thảo luận Xem thông tìn bệnh nhân Tìm kiếm Xem ảnh Tên bệnh nhân: 1D bệnh nhân: Ngày bắt đầu (dd/mm/yyyv}: Ngày kết thúc (dd/m

Kết quá (Bấm F2 để làm mới):13 bệnh nhân

Tên hệnh nhân 1D bệnh nhân Tuổi Giới tính Ngày thực hiện (yyyy-mr Mô tả Kiết 1D Ca bệnh

ĐETIH HHAT 1 , $40610-093506 43 Nam 2010-06-22 26:55:39.9 CAN SIEU AM US_ 000100

BEHH HHAN 1 $£0610-09350¢€ 43 Nam 2010-06-11 24:40:30.0 CAN SIEU AM VS 800100

EEtin NHAN 1 $40610-093506 43 Ham 2010-06-11 14:45:14.0 Can STEU AM US 000190 EEHiH HHAR 5087 ¡ SA0610-033507 : 2010-06-11 15:11:40.0 PIG 507 TRE4C 101 US 000101 BENH MHAN 507 2 SAN610-093507 1 2010-06-21 15:35:12.9 PIC S07 TREAO 101 US 00019: , BEHH HHàN 509 $40610-093569 15 Nam 2OLO-O6-21 19:16:57.0 BEWH NHAN S09 fA CIEL US 609195 BINH MHAN 508 11 SA40610-093508 L tiam 2810-06-1L 16:02:21,0 PIC 508 TREATIC 162 US 000:9z BINH MHAN 508 t+ SAN620-093508 2: Ham 2020-06-21 26:09:57.0 PIC 5028 TREATIC 103 us 080193 BINH WHAM S08 1¢ SA0610-093508 1 fam 2010-06-11 16:10:19.9 PIC 508 TREATIG 103 UŠS 006193 HUU THO : SA0610-093510: 790 Nam 2010-06-11 19:21:08.0 HUU THO LAM SANG us 0601907 TRAM Quoc ToA4r 540610-093505 60 Nam 2010-06-10 25:38:30.0 ACD US 000699 TRAN Quoc TOAF SAO610-093505 60 Nam | 2010-06-10 18:50:25.0 ABCD us 900099 TRAN QUOC TOA $49610-093505 60 ham 2019-06-10 18:53:40.0 ABCD US- 000099

- Hình 15: Kết quả tìm kiếm thông tin bệnh nhân 2.6 Module chỉa sẻ nội dung hội chân

Trước tiên các file ảnh DICOM của bệnh nhân cần phải được chuyển đổi thành định dang JPEG trước khi chia sẻ giữa các điểm hội chẩn = (DicomImageReader) spi.createReaderInstance(); ImageIO.createImageInputStream(new File (dicomName) ); DicomImageReader reader ImageInputStream iis reader.setInput (iis, false); DicomImageReadParam param

(DicomImageReadParam) reader getDefaultReadParam (); BufferedImage bi=reader.read(0, param);

OutputStream out=new BufferedOutputStream (new FileOutputStream(jpegName) ); JPEGImageEncoder enc JPEGCodec.createJPEGEncoder (out);

enc.encode (bi); out.close();

iis.close();

Các nội dung cần chia sẻ: - _ Thông tin bệnh nhân

- _ Danh sách các ảnh dùng trong cuộc hội chan - Số thứ tự, tọa độ, kích thước của anh dang str dung

- _ Ứj trí đánh dấu vùng cẩn quan sát

Trang 20

ViEIn C8 hữlc và Tin hữlc ng dũing Báo cáo đã tài SB KH&CN Bình DBng — Chuyên đã 2.11

2.6.1 Thông tin bệnh nhân và danh sách ảnh dùng trong cuộc hội chan

Khi một điểm hội chân khởi động chế độ chia sẻ nội dung, thông tin bệnh nhân và danh sách ảnh cần dùng sẽ được gửi đến tất cả các điểm còn lại, đồng thời bật một cờ

cho biệt chê độ chia sẻ nội dung đã được khởi động nc.call ("enableShare", new Responder (enableShareResult),this.joined_Consult_Name) ; public function enableShareResult (res: Boolean) :void { if (res) { //khoi dong che do shareView isShareView=true; vax rotate_count:int=imgDisplay.rotateCount; imgDisplay.rotate(-1l*rotate_count) ; make sent List(); cRect:ContentRectangle=imgDisplay.contentRect; //var tPoint_x:Number=cRect.xtcRect.width/2; var tPoint_y:Number=cRect.ytcRect.height/2; tPoint_x:Number=cRect.x-imgDisplay.viewRect.width/2; tPoint_y:Number=cRect.y-imgDisplay.viewRect height/2;

soChatRoom send ("enableShareMode", tb Username.text, sent_seriesList,t

humbnailImageList, imageList, this thumbnailList.selectedIndex, this.imgDispla y.bitmapScaleFactor, tPoint_x,tPoint_y,colorPicker.selectedColor);

} else

{ <

Alert.show("Chế độ 'Chia sẻ nội dung' đã được khởi động trước đó \nĐể khởi động lại xin hủy chế độ 'Chia sẻ nội dung' trước.", "Thông bao"); } } 2.6.2 Số thứ tự, tọa độ, kích thước ảnh đang sử dụng Số thứ tự private function next_image click():void { cur_pos:int=this.thumbnailList.selectedIndex; - max pos: int=this thumbnai 1Tmagelist length~l; if (++cur_pos>max_pos) { cur_pos=0; } this.sync_to_image _pos(cur_pos); } °

/⁄/ đồng bộ hình ảnh giữa caéc client - private function sync_to_image_pos(pos:int):void

{

if (this.isShareView)

{

-'this soChatRoom send ("share switch to image pos",pO8) ;

this.alone switch_to_image_pos (po8) ;

Trang 21

Vilin Cl hic va Tin hic Bing dang Báo cáo đồi tài S5 KH&CN Bình DØBng — Chuyên đã 2.11 | Tọa độ

ImageViewer (_ client) broadcastChannel send ("applyBroadcastMessageMouseUp", _ edgeViolationDirectionx, animatePropertyX.toValue, edgeViolationDirectiony, _animatePropertyY.toValue, ImageViewer (_client) viewRect width, ImageViewer (_

client) viewRect.height, ImageViewer (client) broadcastName) ;

_- delx:Number=_reciever.x-ImageViewer(_client) width/2;

aa dely:Number=_ reciever y-ImageViewer (_client) -height/2;

ImageViewer (client) broadcastChannel.send ("applyBroadcastMessagePanTimer",

delx,dely, ImageViewer (_client) broadcastName) ; Kích thước public function sync_image_zoom(cmd:String) :void { 4£ (cmd=="in" | | cad=="out") { if (this.isShareView) { _zoomCmd=cmd; - - nc.call ("lockImageViewer", new

Responder (lockZoomResult) , this.joined_Consult_Name, this.tb_Username.text); } else { alone zoom (cmd) ; } é z z £ ` À - r Vị trí đánh dâu vùng cần quan sát Đông bộ tọa độ chuột

private function on draw click():void { if (bn_draw.selected) { _first=true; pen graphics.lineStyle(2,colorPicker.selectedColor,100); drawCanvas.addEventListener (MouseEvent MOUSE_DOWN, handleMouse) ; } else { _first=false;

while (drawCanvas.hasEventListener (MouseEvent MOUSE_DOWN) )

drawCanvas removeEventListener (MouseEvent MOUSE_DOWN, handleMouse) ; while (drawCanvas.hasEventListener (MouseEvent MOUSE_UP) )

drawCanvas removeEventListener (MouseEvent MOUSE_UP,handleMouse) ;

Trang 22

Villn Œ3 hữc và Tin hữlc Ang dang Báo cáo đũi tài SP KH&CN Bình Döling - Chuyên đã 2.11 Pen.graphics 1ineSty1e (2,colorPicker selectedColor, 100) ; } private function handleTimer (time: TimerEvent) : void { „ m :Number=drawCanvas.mouseX; m_y:Number=drawCanvas.mouseY; deltax:Number=m_x-drawCanvas.width/2; - deltay:Number=m_y-drawCanvas.height/2; if (m_x<drawCanvas.width&&m_y<drawCanvas.height&&m_x>0&&m_y>0) { if(_ first) { + _first=false; sync _draw_move (deltax,deltay) ; } else { syne _draw_lineTo(deltax,deltay) ; } } }

@ tai đorìbiaedebugtinderhtrnl‹ Windows Đi “1: ea 1 09 B83 | eo: Programming Censultati eb Z CHẾ

Xử aa "gd, DAPragramming\Contultationibine =| op) a | PM Seay'e Be |, Me, BéPregramming: -Consultationibir = eee 7T â

+ Êavenite "8 OXPregramming Consul ` mẹ > Pagee Safety™ Toohse #ầv ` | ,, Favedte ⁄#‡DAProgramminglCom "Pov LL Y *m Y Page Safeyv Teeh v

Người vũ dụngroâmin - uất hội chic Ding hgichén Dang rust - [ÍMgtsideamestasnin.SvĐhiehfre 7 ” Dung hgichin - Đăng uất

Thiết lập/Tham gia Tháo lận : Thiết lập/Tham gia — Tháo luận n ‘

Tim liểm — Xentảnh Ì Tamkiếm — Xem ánh anh mục ảnh DCGH TT É | Bạnh mục ảnh pnicoM TT” + LE VAN HỤC/SP : ie Be ven UC Se 4p Anh ty dan X Thêng tin NN Thá^g H^ nt tate tro 7-10 0 2008-07-19 0 2C0 Ệ

Dane & Internet | Protected Mode: Off Hình 16: Đánh dấu vị trí cần quan sát

2.7 Chức năng đo kích thước tốn thương, tính toán HU 2.7.1 Đo kích thước tốn thương

Trang 23

Vin Cũ hiầc và Tin hữc ng đông Báo cáo đũ tài S KH&CN Bình DØlBng - Chuyên đã 2.11 dely:Number=measureCanvas.mouseY-_measureFirstPoint.y; ue metric:Number=Math sqrt (delx*delxtdely*dely) ; if (metric==0) return; distance:Number=metric/96*25.4; fa distance_real:Number=distance/imgDisplay.bitmapScaleFactor; distance=Number (distance.toFixed(2)); distance_ real=Number (distance_real.toFixed(2));

ib | Measure text= "D(man hinh)= "“+distance+ " mm, D(ảnh)= "+distance_real+" mm" ; D(mản hinh}= 48.43 mm, D(ảnh}Z 48.43 mm | ` | + Hình 17: Kết quả đo khoảng cách 2.7.2 Tinh toan HU HU là một giá trị quan trọng trong việc chân đoán HU giúp xác định tính chất của vị trí khảo sát: * Nước : 0 Hu * Xuong : 1000 Hu «Ổ Khơng khí : -1000 Hu °« Châtxám : 35-40 Hu ° Chất trắng : 20 Hu * Xuathuyét : 40-90 Hu * V6i hoa : >120 Hu HU được tính theo công thức sau: HU=Pixel Instensity x Rescale Slope + Rescale Intercept

Trong đó Rescale Slope và Rescale Intercept được xác định dựa vào header của file

DICOM, Pixel Intensity chính là Gray Level tại chinh Pixel do

DicomInputStream dis = new DicomInputStream (new File(filePath) ); DicomObject dicomObj dis.readDicomObject ();

DicomElement deSlope = dicomObj.get (Tag.RescaleSlope);

DicomElement deIntercept = dicomObj.get (Tag.RescaleIntercept) ;

Trang 24

Viãn Œ hc và Tin hậc Ping dũng Báo cáo đũ tài SH KH&CN Bình D8Bing - Chuyên đã 2.11

slope = deSlope.getDouble (true) ;

intércept = deIntercept.getDouble (true) ;

int[] intensity = _image.getPixel(x, y, new int{1])

double hu = intensity[0] * _rescaleSlope + _ rescaleIntercept; (J HUL330,418) = 786 HU Hình 18: Két qua tinh HU

2.8 Cai dit REDS Server Gidi nén tap tin red5-0.8.0.tar.gz #cd /usr/local #mkdir red5 #cp /root/ red5-0.8.0.tar.gz /usr/local/redŠ #cd red5 #tar xvfz red5-0:8.0.tar.gz Tao user red5 #useradd red5

#chown red5:red5 Jusr/local/red5 -R

Copy ứng dụng rConsult vào thư mục chứa tng dung cua REDS #cp -r rConsult /usr/local/red5/webapps #chown red5:red5 /usr/local/red5 -R Kiểmtra _ #cd /usr/1local/red5 #./red5.sh Nếu không có lôi xảy ra trên màn Tình sé co 2 thông bdo nhu sau Starting Red5

Red5 root: /usr/local/reds

Configuation root: /usr/local/red5/conf Root: /usr/local/red5

Deploy type: bootstrap

Logback selector: org.red5 logging LoggingContextSelector Setting default logging context: default

Trang 25

ViAn G3 hữc và Tin hñc Bng dũng Báo cáo đã tài SðI KH&CN Bình DØồng ~ Chuyên đã 2.11

xt@b6e39f: display name [org.springframework.context.support.FileSystemXmlApplic ationContext@b6e39f]; startup date [Tue Jun 22 15:50:00 ICT 2010]; root of conte xt hierarchy [INFO] [Launcher:/rConsult] org.springframework.beans.factory.support.DefaultLis tableBeanFactory - Pre-instantiating singletons in org.springframework.beans.fac tory.support.DefaultListableBeanFactory@5e9db7: defining beans (placeholderConfi g,web.context,web.scope,web.handler]; parent: org.springframework.beans.factory support DefaultListableBeanFactory@159054d {INFO} [(Launcher:/installer] | org.springframework.beans.factory.support.DefaultLi stableBeanFactory - Pre-instantiating singletons in org.springframework.beans.fa ctory.support.DefaultListableBeanFactory@ad483: defining beans {placeholderConfi g,web.context,web.scope,web handler, installer.service]; parent: org.springframew ork.beans.factory.support DefaultListableBeanFactory@159054d [INFO] [Launcher:/installer] org.red5.server.service.Installer - Installer servi , ce created Tao service tvi /etc/init.d/red5 #chmod u+x /etc/init.d/red5 ‡#cat /etc/init.d/red5 #!/bin/bash red5 Startup script of REDS # # # # chkconfig: 345 95 15 # processname: red5 # description: Startup/Shutdown RED5 service RED5_USER=red5 REDS HOME=/usr/local/red5 STARTUP_SCRIPT=$RED5_ HOME/red5.sh SHUTDOWN _SCRIPT=$RED5_HOME/red5-shutdown.sh case "$1" in start)

echo "*** Starting REDS *** "

su ~ $RED5 USER -c "cd $RED5 HOME; $STARTUP SCRIPT >/dev/null &"

stop)

echo "*** Stopping REDS *** "

Trang 26

Vi8n Œ8 hữc và Tin hữc PIing đãng Báo cáo đũ tài SBũ KH&CN Bình DBBing ~ Chuyên đã 2.11 *) echo $"Usage: $0 {start|stop|restart}" exit 1 , esac , exit 0

2.9 Hiện thực module xem lại Video ca mỗ

Lấy danh sách video ca mỗ: Client gọi hàm getRecordvideo () trên Flash Media Server đề lây về danh sách các ca mô được lưu lại private function oHandler (evt:NetStatusEvent) :void ( : if (evt.info.code=="NetConnection.Connect.Success") this.ncr2.call ("getRecordVideo", new

Responder (getRecordListResult, getRecordListError) ) ; } " private function getRecordListResult (r:Array) : void { _ar:Array=new Array(); for( -.- 1:int=0;i<r.length;i++)

_ar.push ({videoName: r [i] vname, videoDate:r[i].vdate}) ;

this.dg_ saveVideo.dataProvider= ar;

this.ncr2.close();

Phát một file Video

ner = new NetConnection();

ner.addEventListener (NetStatusEvent NET_STATUS, onVideoStatusHandler) ;

ncr.addEventListener (AsyncErrorEvent.ASYNC ERROR, asyncErr);

ner.connect (_mediaURL) ;

this.ns Video_saved = new NetStream(ncr);

this.ns_ Video _saved.play(videoPlayURL) ;

Ngudi su dung:admin - Buổi hội chẩn:

t‡ ££,

Thiết lập/Tham gia Thảo luận Xem thông tin bệnh nhân Tiện ích Xem lại Video ca mổ

Trang 27

Viän Cñ hữc và Tin hBlc Png đồng , Báo cáo đồi tài S KH&CN Bình DØðlồng — Chuyên đồ 2.11 [1] [2] BỊ [4]

TAI LIEU THAM KHAO

“Medical Imaging Informatics” — Alex A.T.Bui, Ricky K.Taira — Springer, 2010 ISBN: 987-1-4419-0384-6

“Digital Imaging and Communications in Medicine (DICOM)” - National Electrical Manufacturers Association, 2009

“Xây dựng cliem Flash ứng dụng trong hội chẩn tir xa” - Tran Anh Khoa - Báo

cáo luận văn tốt nghiệp, 2008

“Tìm hiểu ly thuyét, ung dung hé thong PACS va Chuong trinh 3D slicer trong y

khoa” - Trần Quốc Tuấn — Báo cáo luận văn tốt nghiệp, 2007 WEBSITES: [1] [2] BỊ: [4] [5] [6]

Trang cht DICOM: hittp://medical.nema.org/ Các tài liệu liên quan đến ảnh DICOM: ftp://medical.nema.org/medical/dicom/2009/

Các bài báo về DICOM: ftp://medical.nema.org/medical/dicom/CP/

Trang chủ DCM4CHEE: http://www.dcmáche.org/

Trang web của IBM:

https://www.research ibm.com/haifa/projects/software/wado/ Ngôn ngữ ActionScript

Ngày đăng: 25/04/2014, 18:48

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN