KR20100099833A - 통신 위성을 이용한 원격 선박 진료 시스템 - Google Patents
통신 위성을 이용한 원격 선박 진료 시스템 Download PDFInfo
- Publication number
- KR20100099833A KR20100099833A KR1020090018360A KR20090018360A KR20100099833A KR 20100099833 A KR20100099833 A KR 20100099833A KR 1020090018360 A KR1020090018360 A KR 1020090018360A KR 20090018360 A KR20090018360 A KR 20090018360A KR 20100099833 A KR20100099833 A KR 20100099833A
- Authority
- KR
- South Korea
- Prior art keywords
- ship
- data
- client system
- web server
- client
- Prior art date
Links
- 238000004891 communication Methods 0.000 claims abstract description 54
- 230000005540 biological transmission Effects 0.000 claims description 34
- 238000000034 method Methods 0.000 claims description 10
- 238000011282 treatment Methods 0.000 abstract description 11
- 238000005259 measurement Methods 0.000 abstract description 9
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 239000011800 void material Substances 0.000 description 9
- 238000012360 testing method Methods 0.000 description 8
- 239000008280 blood Substances 0.000 description 7
- 210000004369 blood Anatomy 0.000 description 7
- 230000036772 blood pressure Effects 0.000 description 7
- QVGXLLKOCUKJST-UHFFFAOYSA-N atomic oxygen Chemical compound [O] QVGXLLKOCUKJST-UHFFFAOYSA-N 0.000 description 5
- 229910052760 oxygen Inorganic materials 0.000 description 5
- 239000001301 oxygen Substances 0.000 description 5
- WQZGKKKJIJFFOK-GASJEMHNSA-N Glucose Natural products OC[C@H]1OC(O)[C@H](O)[C@@H](O)[C@@H]1O WQZGKKKJIJFFOK-GASJEMHNSA-N 0.000 description 4
- 101000637031 Homo sapiens Trafficking protein particle complex subunit 9 Proteins 0.000 description 4
- 102100031926 Trafficking protein particle complex subunit 9 Human genes 0.000 description 4
- 239000008103 glucose Substances 0.000 description 4
- 230000029058 respiratory gaseous exchange Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000036760 body temperature Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000036541 health Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000009530 blood pressure measurement Methods 0.000 description 2
- 201000010099 disease Diseases 0.000 description 2
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000012806 monitoring device Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000010926 purge Methods 0.000 description 2
- 230000036387 respiratory rate Effects 0.000 description 2
- 230000008054 signal transmission Effects 0.000 description 2
- LFQSCWFLJHTTHZ-UHFFFAOYSA-N Ethanol Chemical compound CCO LFQSCWFLJHTTHZ-UHFFFAOYSA-N 0.000 description 1
- 229910003798 SPO2 Inorganic materials 0.000 description 1
- 101100478210 Schizosaccharomyces pombe (strain 972 / ATCC 24843) spo2 gene Proteins 0.000 description 1
- BQCADISMDOOEFD-UHFFFAOYSA-N Silver Chemical compound [Ag] BQCADISMDOOEFD-UHFFFAOYSA-N 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 210000000577 adipose tissue Anatomy 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- XMQFTWRPUQYINF-UHFFFAOYSA-N bensulfuron-methyl Chemical compound COC(=O)C1=CC=CC=C1CS(=O)(=O)NC(=O)NC1=NC(OC)=CC(OC)=N1 XMQFTWRPUQYINF-UHFFFAOYSA-N 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 230000009429 distress Effects 0.000 description 1
- 239000003814 drug Substances 0.000 description 1
- 229940079593 drug Drugs 0.000 description 1
- 125000002791 glucosyl group Chemical group C1([C@H](O)[C@@H](O)[C@H](O)[C@H](O1)CO)* 0.000 description 1
- 208000014674 injury Diseases 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 229910052741 iridium Inorganic materials 0.000 description 1
- GKOZUEZYRPOHIO-UHFFFAOYSA-N iridium atom Chemical compound [Ir] GKOZUEZYRPOHIO-UHFFFAOYSA-N 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000000241 respiratory effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 229910052709 silver Inorganic materials 0.000 description 1
- 239000004332 silver Substances 0.000 description 1
- 230000008733 trauma Effects 0.000 description 1
- 230000002792 vascular Effects 0.000 description 1
Images
Classifications
-
- A—HUMAN NECESSITIES
- A61—MEDICAL OR VETERINARY SCIENCE; HYGIENE
- A61B—DIAGNOSIS; SURGERY; IDENTIFICATION
- A61B5/00—Measuring for diagnostic purposes; Identification of persons
- A61B5/0002—Remote monitoring of patients using telemetry, e.g. transmission of vital signals via a communication network
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S19/00—Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
- G01S19/01—Satellite radio beacon positioning systems transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
- G06Q50/22—Social work or social welfare, e.g. community support activities or counselling services
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16H—HEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
- G16H40/00—ICT specially adapted for the management or administration of healthcare resources or facilities; ICT specially adapted for the management or operation of medical equipment or devices
- G16H40/40—ICT specially adapted for the management or administration of healthcare resources or facilities; ICT specially adapted for the management or operation of medical equipment or devices for the management of medical equipment or devices, e.g. scheduling maintenance or upgrades
Landscapes
- Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Biomedical Technology (AREA)
- General Business, Economics & Management (AREA)
- General Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Remote Sensing (AREA)
- Radar, Positioning & Navigation (AREA)
- Computer Networks & Wireless Communication (AREA)
- Primary Health Care (AREA)
- Medical Informatics (AREA)
- Tourism & Hospitality (AREA)
- Public Health (AREA)
- General Physics & Mathematics (AREA)
- Pathology (AREA)
- Child & Adolescent Psychology (AREA)
- Animal Behavior & Ethology (AREA)
- Veterinary Medicine (AREA)
- Molecular Biology (AREA)
- Epidemiology (AREA)
- Heart & Thoracic Surgery (AREA)
- Surgery (AREA)
- Biophysics (AREA)
- Economics (AREA)
- Human Resources & Organizations (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Theoretical Computer Science (AREA)
- Medical Treatment And Welfare Office Work (AREA)
Abstract
본 발명은 인말새트 위성을 이용한 원격 선박 진료 시스템에 관한 것이다. 본 발명에 따른 인말새트 위성을 이용한 원격 선박 진료 시스템은, 선박측 클라이언트 시스템과, 의료기관측 클라이언트 시스템, 및 멀티미디어 통신용 웹서버를 포함하고,
선박측 클라이언트 시스템에는 생체 신호를 측정하기 위한 생체 신호 측정장비가 구비되어 있으며, 생체 신호 측정 장비에서 측정된 생체 신호 데이터들은, 미리 정해진 데이터들의 우선 순위에 따라 또는 사용자의 선택에 따라 일부의 데이터들이 생략가능하게 상기 멀티미디어 통신용 웹 서버를 거쳐 상기 의료기관측 클라이언트 시스템으로 전달되는 것을 구성적 특징으로 한다.
인말새트, 원격 해상 진료, 생체 신호
Description
본 발명은 인말새트 위성 등을 포함한 통신 위성을 이용한 원격 선박 진료 시스템에 관한 것으로, 보다 상세하게는, 선박에서 응급상황의 발생시 선박에서 전송되는 환자의 ECG, NIBP, 혈중산소포화도, 맥박, 호흡률 등의 기본적인 생체신호 및 비디오 영상 및 음성을 이용하여 원격지의 의료기관에서 환자의 진료가 가능하도록 선박과 의료기관의 시스템의 데이터 중계 및 멀티미디어 통신, 클라이언트간의 다중 연계를 위한 멀티미디어 통신용 웹서버를 채용한 원격 선박 진료 시스템에 관한 것이다.
현재 원격 의료와 관련하여, 국내 원격 의료 기기 현황은 실버 산업 및 가정용 원격 진료 기기에 대한 개발은 있었으나, 선박을 위한 해양에서의 원격 진료에 대한 개발은 전무한 상태이다.
구체적으로 국내에서 현재 상용중인 원격 진료 기기는 가정용 원격 의료 장치, 환자 감시 장치, 네트워크 의료 서비스 시스템에 국한되고 있으며, 다음과 같다.
- 가정용 원격 의료 장치
엘바이오의 Webdoc, 텔레메드의 HelloDocs 등은 자택에서 ECG, NIBP, SpO2, 혈중알콜농도, 체지방분석, 혈당, 전자청진, 체온 등 여러 가지 생체신호를 측정한 후 인터넷을 통해 병원과 연계된 컴퓨터로 전송하여, 저장, 관리한다. 또한 주치의들이 검사 데이터를 보고 진단한 후 검사자에게 검사 결과를 통보하도록 되어 있다.
- 감시(모니터링)장치
멕(Mek), 메디슨(Medison) 사들은 심전도, SpO2, 비혈관식 혈압, 체온, 호흡, 맥박수 등을 모니터링 장치를 개발하였다. 이들 사의 시스템들은 이동중인 엠블런스 또는 재택 진료시에도 적합하며, 장시간 밧데리 사용도 가능한 장비도 있다.
- 네트워크 의료서비스 시스템
온라인상에서 의료기관의 진료를 예약하거나, 가상 진료, 이에 따른 처방 등을 받을 수 있는 인터넷 가상 병원이 문진 또는 원격의료기기를 통한 검진을 수행하고 있다.
한편, 해외의 해양 원격 진료 시스템은, 해사위성을 이용하여 선박 클라이언트와 의교기관 클라이언트 사이에 원격 의료를 제공하는 것들이 알려져 있다.
- 독일
알엠에이(RMA:선박원격의료센터)는 365일 24시간 체제의 전문적인 의료 서비스를 제공한다. 모든 의사들은 직접 응급상황에 의학적인 응답을 제공한다. 2000년부터 디지털 사진전송이 이루어졌으며, 최근 12 lead ECG, NIBP, CO(2), 혈중산소포화도, 맥박, 호흡률 등의 비디오이미지 전송방법이 개발되었다. 이 시스템은 GMS나 인말새트(ISDN 또는 Iridium) 위성 전송방식을 이용하여 worldwide 통신을 제공한다. 최근 이 시스템은 독일의 SAR 구조선에 설치되었다.
- 그리스
머메이드(MERMAID)는 세계 대양의 다국적 선원들의 건강을 위한 해양 원격 진료 프로젝트를 위해 EU에서 자금을 조달하는 프로젝트이다. ISDN을 이용한 비디오 컨퍼런스를 바탕으로 하여 진단뿐만 아니라, 의사가 없는 곳에서 의학적 처치를 가능하게 한다. 선박에서 위성을 통한 인프라시스템으로 구축되고, 세계 각처의 전문의를 광대역 네트워크를 이용하여 호출할 수 있다.
- 스페인
선원이면 모두 "해양 건강 프로그램(Maritime Health Programme)"에 의거, 동일한 의료 서비스를 받는다. 1919년 설립된 Mariner's Social Institute는 선박에서의 의학 자문을 제공하고, 해양 종사자들에게 의학 서비스를 제공한다. 마드리드에는 원격 의학 제공 센터(Radio Medical Advice Center)가 있는데, 항구에 위치하여 병원과 센터의 송수신을 가능하게 한다.
- 영국
국립건강서비스는 무선랜 방식으로 원격의료서비스를 제공한다. ship-to-shore 개념의 원격의료 기기의 발전을 가져왔다.
- 미국
국방부가 주축이 되어 원격 의료를 도입하여 접근성 및 비용 면에서 매우 다양한 효과를 얻고 있다.
그러나, 전술한 해외의 원격 해양 의료 시스템의 경우, 해상에서의 통신은 해사 위성에 주로 의존하고 있으며, 해사 위성의 통신은 바다와 날씨의 영향을 받아 위성과 지상기지국간의 통신에 영향을 받아 데이터 통신과 클라이언트 간의 직접적인 연결에 문제가 발생하여 선박의 클라이언트와 의료기관의 클라이언트가 원격 진료 도중에 끊김이 발생하는 문제점이 있다.
본 발명은 상기와 같은 문제점을 해결하기 위해 안출된 것으로, 본 발명의 목적은, 해상에서 일어나는 선박의 질환이나 사고에 대처를 하기 위한 해상 원격 진료 시스템의 안정적인 데이터 전송과 멀티미디어 영상, 음성 정보의 전송 및 각 클라이언트들의 세션을 관리하여 해사 위성으로 선박과 클라이언트를 연결하였을 때 낮은 전송속도로 인한 클라이언트 간의 연결이 끊겨 각종 생체 신호 데이터와 멀티미디어 데이터가 전송되지 못하게 되는 것을 방지하는 인말새트 위성을 이용한 원격 선박 진료 시스템을 제공하기 위한 것이다.
상기와 같은 문제점을 해결하기 위해, 본 발명에 따른 인말새트 위성을 이용한 원격 선박 진료 시스템은,
선박측 클라이언트 시스템과, 의료기관측 클라이언트 시스템, 및 멀티미디어 통신용 웹서버를 포함하고 선박측 클라이언트 시스템에는 생체 신호를 측정하기 위한 생체 신호 측정장비가 구비되어 있으며, 생체 신호 측정 장비에서 측정된 생체 신호 데이터들은, 미리 정해진 데이터들의 우선 순위에 따라 또는 사용자의 선택에 따라 일부의 데이터들이 생략가능하게 멀티미디어 통신용 웹 서버를 거쳐 의료기관측 클라이언트 시스템으로 전달되는 것을 구성적 특징으로 한다.
바람직하게는, 선박측 클라이언트 시스템은 카메라 및 마이크를 더 구하고 있고, 카메라 및 마이크에서 생성된 비디오 및 오디오 데이터가 멀티미디어 통신용 웹 서버를 거쳐 의료기관측 클라이언트 시스템으로 전달된다.
또한, 멀티미디어 통신용 웹 서버는, 선박측 클라이언트 시스템 및 의료기관측 클라이언트 시스템이 접속하기 위한 세션 포트를 할당하고, 선박측 클라이언트 시스템으로부터의 생체 데이터 신호 및 비디오 및 오디오 데이터 신호를 위한 데이터 전송용 포트를 할당하고, 멀티미디어 통신용 웹 서버에 접속된 선박측 클라이언트 시스템과 의료기관측 클라이언트 시스템의 세션을 연동시켜, 멀티미디어 통신용 웹 서버를 경유해 전송되는 데이터를 저장하여 유지한다.
이상 설명한 바와 같은 특징을 갖는 본 발명에 따르면 선박 응급 상황에서 원격 선박 진료 시스템의 도입은 항해중인 선박의 회항이나 시간 지연 및 약물의 오남용 등으로 인한 비용을 절감할 수 있다. 또한 기존의 응급 의료 조치 방법은 전화나 팩시밀리, 디지털 카메라를 이용한 사진 전송 등에 관한 방법에 국한되었으며, 시간지연이라는 비효율성이 야기된다. 생명과 직결되는 응급상황에서는 시간의 단축 및 정확한 응급 조치가 무엇보다도 중요하며, 정확한 응급조치를 위해서는 환자의 상태를 판단하는 의사의 지시가 필요하다. 이를 위해서는 신체의 활력징후(vital sign) 및 기초자료, 사진 등을 적시에 보낼 수 있는 시스템이 제공될 수 있다.
또한, 해상에서 일어나는 선박의 질환이나 사고에 대처를 하기 위한 해상 원격 진료 시스템의 안정적인 데이터 전송과 멀티미디어 영상, 음성 정보의 전송 및 각 클라이언트들의 세션을 관리하여 해사 위성으로 선박과 클라이언트를 연결하였을 때 낮은 전송속도로 인한 클라이언트 간의 연결이 끊겨 각종 생체 신호 데이터와 멀티미디어 데이터가 전송되지 못하게 되는 것을 방지할 수 있다.
이하, 첨부한 도면을 참조하여 본 발명에 따른 실시예를 설명하도록 한다. 도 1은 본 발명에 따른 원격 해상 의료 시스템(1)을 개략적으로 도시한 도면이다.
도 1에 도시된 바와 같이, 본 발명에 따른 원격 해상 의료 시스템(1)은, 선박측 클라이언트 시스템(10), 인말새트 위성(20), 육상측 위성기지국(30), 멀티미디어 통신용 웹서버(40) 및 의료기관측 클라이언트 시스템(50)을 포함하여 이루어진다.
선박측 클라이언트 시스템(10)은 환자의 생체신호를 측정하기 위한 생체 신호 측정 장비(12), 생체 신호 측정 장비(12)에 연결된 컴퓨터(11), 위성 안테나(14)와의 통신을 수행하기 위한 인말새트 모뎀(13), 및 인말새트 위성과 데이터 를 송수신하기 위한 위성 안테나(14)를 포함하여 이루어진다.
또한, 의료기관측 클라이언트 시스템(50)은 본 발명에 따른 멀티미디어 통신용 웹서버(40)와 접속되는 의사측 컴퓨터(51)를 포함하고 있으며, 환자의 진단시 의사는 의사측 컴퓨터(51)를 사용하여 본 발명에 따른 멀티미디어 통신용 웹서버(40)를 경유하여 위성 기지국(30)과의 통신이 수행된다.
본 발명에 따른 원격 해상 의료 시스템(1)을 구현하기 위해, 다음의 사항을 고려할 필요가 있다.
1. 선박 응급용 통신 소프트웨어: 음성/영상 통신을 위한 압축 방식 검토 및 프로그래밍;
2. 멀티미디어 통신을 위한 웹 서버 및 그에 대한 구축 프로그램;
3. 인말새트 위성통신용 단말로 인말새트-Fleet77을 이용한 원격 멀티미디어 통신;
4. 생체신호 측정 모듈을 통한 선박응급용 데이터전송 소프트웨어;
5. 인말새트 위성 시스템을 이용한 멀티미디어 통신.
이하에는 전술한 1. 내지 5.에 대해 보다 구체적으로 설명하도록 한다.
1. 선박 응급용 통신 소프트웨어
1) 개요
선박 응급용 통신 소프트웨어의 개발은 전송될 데이터를 이용하여 멀티미디어 통신용 웹서버(이하 웹 서버(40)라 함)에 데이터를 전송할 수 있는 소프트웨어 컴포넌트를 제작하는데 목적이 있다. 제한된 대역폭 내에서 데이터를 전송해야 하기 때문에 데이터의 양에 따라 전송량을 조절할 필요가 있으며, 데이터의 우선순위를 두어 데이터의 중요도에 따라 전송을 생략 가능하도록 구현되어야 한다. 즉, 각각 개별의 데이터를 우선순위 또는 사용자 조작에 따라 전송할 수 있게 구성된다.
응급용 통신 소프트웨어는 소프트웨어라고 하기보다는 상황에 맞게 데이터를 정확하게 의사에게 전송할 수 있는 역할을 수행하는 선박클라이언트의 일부분이며 선박 클라이언트를 구현하는 같은 환경에서 구현되며, 선박 클라이언트 시스템(10)의 컴퓨터(11)에 설치되어 사용된다.
2) 구현
응급용 통신 소프트웨어는 제작된 생체 신호를 입력받는, 도 1에 도시한 바와 같은 선박 클라이언트 측 컴퓨터(11)에 설치된 소프트웨어 모듈이며, 카메라와 마이크로부터 입력되는 신호를 전송하는 역할을 담당한다. 응급용 통신 소프트웨어는, 컴퓨터(11)가 웹 서버(40)에 초기 접속할 때, 서버(40) 쪽에 세션을 생성하기 때문에, 의사는 어떤 선박이 접속했는지를 파악할 수 있다.
또한, 응급용 통신 소프트웨어는 의사와의 통신수단으로 채팅 메시지를 주고받으며, 오디오, 비디오, 이미지(Snapshot) 메시지를 주고받도록 구성된다. 생체신호는 ECG 3채널, 압력(Pressure), 펄스(Pulse), SpO2, 온도(Temperature), 글루코스(Glucose) 신호를 포함한다.
아래는 ECG(Electrocardiogram) 그래프 코드를 나타낸다.
DeviceSignal signal = null signal = (DeviceSignal)m_deleteThread.DeQueue(); if (signal != null) { if (mode_flag == true&&Ret == DialogResult.OK) { #region 저장모드일때 Struct_ClinicalSignal c_sig = signal.clinicalSignal; Struct_EventSignal e_sig = signal.eventSignal; ClinicalSignal clinical_signal = new ClinicalSignal(ref c_sig, ref m_sFilter); EventSignal event_signal = new EventSignal(ref e_sig); float[] ch1 = clinical_signal.ch1; float[] ch2 = clinical_signal.ch2; float[] ch3 = clinical_signal.ch3; float[] pulse = clinical_signal.pulse; float[] resp = clinical_signal.respiration; for (int i = 0; i < 20; i++) { UpdateGraph(signalControl_ECG1, 1 * ch1[i]); UpdateGraph(signalControl_ECG2, 1 * ch2[i]); UpdateGraph(signalControl_ECG3, 1 * ch3[i]); if ((i + 1) % 10 == 0) { UpdateGraph(signalControl_Pulse, 1 * pulse[(i + 1) / 10 - 1]); UpdateGraph(signalControl_Resp, 1 * resp[(i + 1) / 10 - 1]); } } |
세션에 관한 정보는 웹서버(40)가 담당하며, 선박 클라이언트 시스템에는 웹서버(40)와 통신한 프로토콜이 정의되며, 세션 포트와 데이터 포트를 별도로 이용할 수 있게 구성된다.
선박 클라이언트 시스템(10)는 선박에서 여러 가지 작업을 정확하게 수행하 기 위하여 화면 터치 패드가 사용 가능한 타블릿 PC(Tablet PC)를 대상으로 하여 제작 되었고, 사용하는 사용자의 편의성을 최대한 고려하는 형태로 제작되었다. 선박 클라이언트의 선박 응급용 통신 소프트웨어의 메인 화면은, 일례로 도 2에 도시한 바와 같다.
도 2에 도시된 바와 같이, 선박 클라이언트의 선박 응급용 통신 소프트웨어의 메인 화면에는, 각종 생체 신호와 영상, 음성 등의 환자의 정보를 On/Off 하는 버튼이 화면 인터페이스 상에 존재할 수 있으며, 인말새트의 제한적인 전송 대역폭을 고려하여 사용하지 않는 기능을 비활성화/활성화하는 역할을 한다. On/Off 기능은 많은 데이터가 발생하는 생체정보, 화상, 음성, 사진 정보에 대해 수행될 수 있으며, 우선순위는 음성, 생체신호, 정지화상, 동영상의 순으로 지정되는 것이 좋다. 그리고 선박의 급박한 상황을 알리기 위한 이머전시(Emergency) 버튼이 구비되어 있고, 이 이머전시 버튼을 눌러 호출할 경우 의료기관측 클라이언트에 설치된 컴퓨터를 통해 의사가 해당 선박을 선택하여 모니터할 수 있도록 구성된다.
선박에서 의사 쪽으로 접속할 때는 의사 모니터링 소프트웨어가 실행되는 컴퓨터의 주소가 기본적으로 입력되어 있고, 현재 선박의 식별번호를 입력하여 의사 쪽으로 접속을 하게 되면 의사 모니터링 소프트웨어에서 선박의 접속여부를 확인 할 수 있게 된다.
도 2에 도시한 메인화면에서, 좌측에는 ECG(심전도) 3채널과 펄스(맥박), 호흡(spiration)의 상태 파형이 출력이 되며, 그래프 위의 +, - 버튼을 터치하게 되면 그래프의 파형이 Y축으로 확대, 축소가 이루어지게 된다. 의료기관측 클라이언트와 선박 클라이언트 상태는 메인 화면의 우측에 위치한 두 개의 영상 패널에 각각 출력되며 측정장비와의 연결과 네트워크의 연결 여부를 알려주는 아이콘이 이머전시 버튼 옆에 위치할 수도 있다.
아래는 이머전시 알림음 작동 코드를 나타내는 프로그램 코드이다.
* 이머전시 알림음 작동 코드
[System.Runtime.InteropServices.DllImport("winmm.dll", EntryPoint = "PlaySound", CharSet = System.Runtime.InteropServices.CharSet.Auto)] private static extern int PlaySound(String pszSound, int hmod, int falgs); // API 사운드Flag public enum SND { SND_SYNC = 0x0000,/* play synchronously (default) */ SND_ASYNC = 0x0001, /* play asynchronously */ SND_NODEFAULT = 0x0002, /* silence (!default) if sound not found */ SND_MEMORY = 0x0004, /* pszSound points to a memory file */ SND_LOOP = 0x0008, /* loop the sound until next sndPlaySound */ SND_NOSTOP = 0x0010, /* don't stop any currently playing sound */ SND_NOWAIT = 0x00002000, /* don't wait if the driver is busy */ SND_ALIAS = 0x00010000,/* name is a registry alias */ SND_ALIAS_ID = 0x00110000, /* alias is a pre d ID */ SND_FILENAME = 0x00020000, /* name is file name */ SND_RESOURCE = 0x00040004, /* name is resource name or atom */ SND_PURGE = 0x0040, /* purge non-static events for task */ SND_APPLICATION = 0x0080 /* look for application specific association */ } // Wave 파일재생파일경로 public static void PlaySound(String pszSound) { if (System.IO.File.Exists(pszSound)) { PlaySound(pszSound, 0, (int)(SND.SND_ASYNC | SND.SND_FILENAME | SND.SND_NOWAIT)); } } // 시스템사운드이벤트HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default public static void PlaySoundEvent(String pszSound) { PlaySound(pszSound, 0, (int)(SND.SND_ASYNC | SND.SND_ALIAS | SND.SND_NOWAIT)); } // 응급알림소리 string sud_bell = "ambulance.wav" |
또한, 본 발명에 따른 선박 응급 소프트웨어의 메인 화면에는, 혈압 수치창의 옆의 버튼을 누르면 혈압측정 장비가 작동을 시작하게 되며, 혈압측정이 오류가 나지 않고 정상적을 측정되면 수치 창에 혈압 수치가 나타나고, 오류가 났을 경우에는 에러(Error) 메시지가 나타나게 구성될 수 있다.
또한, 메인 화면의 오른쪽 하단에 있는 스피치 온(Speech On) 버튼을 누름으로써 의사에게 음성으로 현재 상태를 알릴 수 있고, 텍스트를 이용하여 간단한 채팅도 가능하게 구성된다.
도 3은 선박 응급 소프트웨어에서 모듈별 데이터 구조를 도시한 도면이다. 상기 도 3에 알 수 있듯이, 제한된 대역폭 내에서 데이터를 전송해야 하기 때문에 데이터의 양에 따라 전송량을 조절할 필요가 있으며, 데이터의 우선순위를 두어 데이터의 중요도에 따라 전송을 생략 가능하도록 구현되어야 한다. 즉, 각각 개별의 데이터를 우선순위 또는 사용자 조작에 따라 전송할 수 있게 구성된다.
2. 멀티미디어 통신 웹 서버 및 그 구축 프로그램
본 발명에 따른 웹 서버(40)는 그를 통해 멀티미디어 데이터를 통신하기 위해 데몬(Demon)이라는 프로그램을 이용하여 선박 클라이언트(10)와 의료기관측 클라이언트(50)의 데이터 중계 수행한다.
1) 멀티미디어 통신 웹 서버
데몬 프로그램을 이용한 웹 서버(40)는 IIS6.0을 기반으로 웹서비스의 형태로 데몬으로 컴파일 된 파일을 응용프로그램 풀을 이용한다. 그리고 TCP/IP의 데몬 프로세스로 쓰레드(Thread) 기반으로 클라이언트 접속을 대기하게 된다. 대기하고 있던 멀티미디어 통신 웹 서버에 선박 클라이언트와 의료기관측 클라이언트의 접속이 일어나면, 웹 서버(40)는 두 가지 종류의 클라이언트의 세션에 연동되며 웹 서버(40)를 경유해가는 데이터를 그 데이터베이스에 기록하여 클라이언트를 관리한다.
다음은 선박 클라이언트 접속을 위한 쓰레드 생성 코드에 관한 프로그램 코드이다.
if (maxCarList == 1) { Debug.WriteLine("maxCarList = " + maxCarList); carList_1.carSessionId = sessionid.ToString(); carList_1.carId = carid; carList_1.carIp = ip; carList_1.carTextPort = textpt; carList_1.carAudioPort = audiopt; carList_1.carVideoPort = videopt; carList_1.carSignalPort = signalpt; this.carsessionId = carList_1.carSessionId; // 세션아이디 this.carID = carList_1.carId; // 선박아이디 this.caripAddress = IPAddress.Parse(carList_1.carIp); // 아이피주소 this.cartextport = Convert.ToInt16(carList_1.carTextPort); // 멧세지전달포트 this.caraudioport = Convert.ToInt16(carList_1.carAudioPort); // 오디오전달포트 this.carvideoport = Convert.ToInt16(carList_1.carVideoPort); // 비디오전달포트 this.carsignalport = Convert.ToInt16(carList_1.carSignalPort); // 시그널전달포트 Debug.WriteLine("## carList_" + maxCarList + ".carId = " + carList_1.carId); } |
서버 데이터 베이스로 자료를 업데이트하고 세션에 관련된 정보를 데몬 프로그램이 접속하기 위해, 예를 들면 도 4에 도시한 바와 같은 웹서비스 하여금 중간 함수 역할을 수행하도록 구성할 수 있다.
또한, 현재 웹 서버(40)에 접속되어 있는 선박 클라이언트의 나열이나 로긴 정보 등 데이터베이스와의 접속이 필요할 경우 웹서비스가 중계 역할을 하며 웹 서 버(40)가 데이터베이스와 클라이언트 간의 중계 역할을 하도록 각 이벤트 별 함수를 컴포넌트화하여 구현할 수 있다.
다음은 의사 클라이언트가 접속하기 위한 리스너 생성 코드를 나타낸다.
/// <summary> /// 의사가접속하기위한리스너를만들기위한메소드 /// </summary> public void callDr(int sessionid, string drid, string ip, string textpt, string audiopt, string videopt, string signalpt) { try { this.drsessionId = sessionid.ToString(); this.drID = drid; this.dripAddress = IPAddress.Parse(ip); this.drtextport = Convert.ToInt16(textpt); // 멧세지전달포트 this.draudioport = Convert.ToInt16(audiopt); // 오디오전달포트 this.drvideoport = Convert.ToInt16(videopt); // 비디오전달포트 this.drsignalport = Convert.ToInt16(signalpt); // 시그널전달포트 // 콜의사스레드함수 drtextServerThread = new Thread(new ThreadStart(drtextServerStart)); drtextServerThread.Start(); draudioServerThread = new Thread(new ThreadStart(draudioServerStart)); draudioServerThread.Start(); drvideoServerThread = new Thread(new ThreadStart(drvideoServerStart)); drvideoServerThread.Start(); drsignalServerThread = new Thread(new ThreadStart(drsignalServerStart)); drsignalServerThread.Start(); } catch (Exception ex) { Debug.WriteLine("의사가초기접속하기위한스레드시작중에러"); Debug.WriteLine(ex.Message); // 의사소켓스레드강제중단 drtextServerThread.Abort(); draudioServerThread.Abort(); drvideoServerThread.Abort(); drsignalServerThread.Abort(); } } |
2) 클라이언트 세션
선박 클라이언트(10)가 웹 서버(40)에 접속을 하게 되면 웹 서버(40)에서는 선박 클라이언트와 통신을 하기 위해 프로토콜이 정의되고, 세션 포트(Session Port)와 데이터 전송용 포트가 할당되어 이용하게 된다.
선박 클라이언트(10)와 의료기관측 클라이언트(50)는 웹 서버(40)를 경유하여 상호간의 데이터를 전송하게 되는데 데이터베이스에 사전에 등록되어 있는 정보를 기반으로 웹 서버(40)에 인증을 거쳐 접속을 하게 된다.
클라이언트(10,50)와 웹 서버(40)와의 접속 시에, 데이터를 주고받는 명령어와 해당 데이터의 프로토콜을 제어하는 곳으로 명령어와 클라이언트 세션, 서버 세션에 대한 라이브러리를 제공하여 데이터 전송이 이루어지게 되며, 웹 서버(40)의 데이터베이스에 세션에 관련된 정보를 저장하고 선박 클라이언트(10) 및 의료기관측 클라이언트(50)의 상태정보를 저장하고 로그를 남겨 일어난 이벤트를 기록하게 된다.
도 5는 웹 서버(40)로의 접속을 위한 화면을 예시적으로 도시한 도면이다.
도 5에 도시한 바와 같이, 선박측 및 의료기관측 각 클라이언트에는 웹 서버(40)로 접속하기 위한 정보를 가지고 있는 XML 파일이 있으며, 선박 클라이언 트(10)에는 웹 서버(40)의 주소와 접속 아이디, 패스워드와 생체 신호 측정기의 연결 형태 설정값 등을 가지고 있다. 의료기관측 클라이언트(50)는 웹 서버(40)의 주소, 아이디와 패스워드만 가지고 있다. 클라이언트를 실행하게 되면 접속하는 웹 서버(40)의 주소, 아이디, 패스워드가 XML 파일에서 자동으로 읽어져 각 항목에 기록되므로, 각 클라이언트의 사용자는 "접속(CONNECTION)" 버튼만 누르게 되면 웹 서버(40)로 접속하게 된다.
다음은 XML 컨피그(Config)의 프로그램 코드를 나타낸다.
<?xml version="1.0" encoding="utf-8"?> <profile> <section name="ambulance"> <entry name="server">http://서버주소/119/Service.asmx</entry> <entry name="db">데이터베이스서버주소</entry> <entry name="number">1234</entry> <entry name="id">아이디</entry> <entry name="pass">패스워드</entry> <entry name="usb_mode">1</entry> <entry name="bluetooth_com_port">6</entry> <!-- 블루투스장비연결시선택된포트로교체해주세요--> </section> </profile> |
멀티미디어 통신 웹 서버(40)에 선박 클라이언트와 의료기관측 클라이언트가 접속된 상태에서, 의료기관측 클라이언트는 접속된 선박 클라이언트의 리스트에서 특정 선박의 선택하여 연결하여야 생체 정보와 기타 멀티미디어 정보를 이용해 원격진료가 가능해지며 선박에 연결한 직후 의료기관측 클라이언트에 각종 정보가 출 력된다.
서버의 데이터베이스로 자료를 업데이트 하고 세션에 관련된 정보를 데몬 프로그램이 접속하기 위해서 .NET의 웹서비스가 중간 함수 역할을 하도록 한다. 현재 접속 되어 있는 클라이언트의 나열이나 로긴(Login) 등 DBMS와의 접속이 필요할 경우 웹서비스가 중계 역할을 하며 웹 서버(Web Server)가 DBMS와 어플리케이션(Application) 간의 중계역할을 하도록 함수를 컴포넌트(Component)화 한다.
다음의 프로그램 코드는 데몬 프로그램을 사용한 서버의 코드를 나타낸다.
namespace NetworkStreamTest { public partial class Form1 : Form { // 네트워크 관련 객체 // 데이터 전송을 위한 네트워크 스트림 객체 public NetworkStream stream; public StreamWriter writer; // 서버쪽에서는 보내기 기능만 구현하기 때문에 Writer 객체 만 생성 public stringstr; public Int32 port; public IPAddress ipAddress; public bool bService = false // 서버의 시작 멈춤을 나타낼 변수 private TcpListener listener; private Thread ServerThread; // 스레드 객체 생성 public Socketserver; // 소켓 객체 생성 public void ServerStart() { try { str = textBox1.Text.ToString(); port = Convert.ToInt32(textBox2.Text); ipAddress = IPAddress.Parse(str); } catch (FormatException ex) { MessageBox.Show(ex.Message); } try { listener = new TcpListener(ipAddress, port); listener.Start(); } catch(SocketException ex) { MessageBox.Show(ex.Message); return } bService = true MessageBox.Show("클라이언트의 접속을 기다립니다..."); while(bService) { try { server = listener.AcceptSocket(); if(server.Connected) { MessageBox.Show("클라이언트가 접속했습니다."); //데이터 전송을 위해 스트림 생성 stream = new NetworkStream(server); writer = new StreamWriter(stream); } } |
catch (SocketException ex) { MessageBox.Show(ex.Message); } } } private void button1_Click( objectsender, EventArgs e ) { if(button1.Text == "서버시작") { ServerThread = new Thread(new ThreadStart(ServerStart)); ServerThread.Start(); //this.ServerStart(); // 서버시작 함수 호출 button1.Text = "서버멈춤" } else { ServerStop(); button1.Text = "서버시작" } } public void ServerStop() // 서버를 중지 시키는 함수 { if(bService) { listener.Stop(); ServerThread.Abort(); // 스레드 강제 중단 bService = false } MessageBox.Show("Service 가 종료되었습니다."); } public void Send() { try { writer.WriteLine(textBox3.Text); // StreamWrite 이용 writer.Flush(); textBox3.Text = "" // 입력란 초기화 } catch(IOException ex) { MessageBox.Show(ex.Message); } } |
3. 인말새트 위성통신용 음성/영상 통신
1) 음성/영상 통신 개요
멀티미디어 데이터는 다이렉트쇼(Directshow) 기반의 구성요소(Component)를 활용하여 필터 그래프(Filter Graph)를 생성하여 원하는 멀티미디어를 전송하고 수신한다.
도 6은 네트워크 전송 및 수신 필터 그래프와 필터를 개략적으로 도시한 도면이다.
A. 필터 그래프(Filter Graph) 제어 부분
오디오, 비디오의 출력을 위한 다이렉트쇼(DirectShow)의 필터의 연결을 수행하는 곳으로, 스타트(start), 스톱(stop), 캡쳐(capture), 접속(connect) 등을 제어할 수 있어야 하며, 접속이 끊어졌을 때 그래프를 중지해야 한다.
B. 네트워크 필터(Network Filter)
위성망을 통한 TCP/IP 네트워크를 통해서 연결을 수행하여야 하는데 이를 위해서는 네트워크 접속 필터가 필요하다. 네트워크 접속 필터는 소스(Source), 렌더(render) 2가지 필터를 의미하며 TCP/IP 의 접속 대상 주소를 입력하여야 한다.
C. 오디오 인코더 필터(Audio Encoder Filter)
오디오를 PCM, ADPCM으로 인코딩하는 필터 코덱
D. 오디오 디코더 필터(Audio Decoder Filter)
오디오를 해독하는 필터 코덱
E. MJPEG 비디오 인코더 필터(Video Encoder Filter)
비디오를 MJPEG으로 인코딩하는 필터
F. MJPEG 비디오 디코더 필터(Video Decoder Filter)
비디오를 MJPEG으로 해독하는 필터
G. 캡쳐 필터(Capture Filter)
필터의 자료를 캡쳐하여 파일로 저장하기 위한 필터
다이렉트쇼(DirectShow)는 MS Windows 플랫폼에서 구동되는 스트리밍 미디어를 위한 아키텍처이다. 다이렉트쇼는 고화질 캡쳐와 멀티미디어 스트리밍 재생을 할 수 있도록 제공하며 ASF, MPEG, AVI, MP3, WAV 파일과 같이 폭넓고 다양한 포맷을 지원한다.
이 API들은 윈도우 드라이버 모델(Window Driver Model)(WDM)장치 또는 윈도우용 버전의 비디오 장치들을 이용하여 캡쳐 할 수 있도록 지원한다. 다이렉트쇼는 는 다른 다이렉트 X 기반 기술과 통합되었다. 이는 비디오와 오디오의 하드웨어 가속기능이 사용가능할 경우 이를 사용할 수 있도록 자동적으로 검출할 수 있을 뿐 아니라 하드웨어 가속기능이 없는 경우도 사용가능하다.
다이렉트쇼는 동영상 재생, 포맷변환 및 캡쳐를 쉽게 적용할 수 있게 한다. 동시에, 사용자 솔루션에서 요구하는 응용프로그램을 위해 근본적인 스트리밍 제어 아키텍처에 접근할 수 있도록 제공하여 사용자가 특정한 서비스를 위한 컴포넌트를 만들 수 있다. 이런 기능을 이용하여 오디오, 비디오 데이터의 캡쳐하여 전송, 수신측에서 송신 재생하여 볼 수 있게 된다.
2) 구현 및 설명
음성데이터 처리
원격지에 있는 의사와 환자 간의 의사소통을 원활하게 하기 위해서 음성을 통한 상황 설명이나 처방 지시가 가능하게 되며 인터넷 전화와 같이 음성을 다루는 컴포넌트를 이용하여 구현이 가능하다. 하지만 위성을 사용하는 네트워크이기 때문에 전파에 의한 지연시간이 존재하게 되고 전파지연 시간과 네트워크의 트래픽에 따라 딜레이가 발생할 가능성이 있다.
선박에서 중계 서버로 접속할 때 음성과 영상에 맞는 스레드를 생성하고 생체신호 데이터와는 다른 포트로 데이터를 전송받게 된다. 각각의 독립적인 경로를 확보함으로써 데이터의 안정성을 보장하고 딜레이가 발생하여도 연결되는 데이터가 전송되게 된다.
다음은 선박의 오디오 접속 스레드 코드를 나타낸다.
public void caraudioServerStart() { if (caraudioService == false) { try { caraudiolistener = new TcpListener(caripAddress, caraudioport); caraudiolistener.Start(); caraudioService = true } catch (SocketException ex) { Debug.WriteLine(ex.Message); caraudiolistener.Stop(); } while (caraudioService) { switch (maxCarList) { case 1: caraudioserver_1 = caraudiolistener.AcceptSocket(); break case 2: caraudioserver_2 = caraudiolistener.AcceptSocket(); break case 3: caraudioserver_3 = caraudiolistener.AcceptSocket(); break case 4: caraudioserver_4 = caraudiolistener.AcceptSocket(); break default: Debug.WriteLine("+++++"); break } |
if ((maxCarList == 1) && (caraudioserver_1.Connected)) { caraudiolistener.Stop(); caraudioService = false } if ((maxCarList == 2) && (caraudioserver_2.Connected)) { caraudiolistener.Stop(); caraudioService = false } if ((maxCarList == 3) && (caraudioserver_3.Connected)) { caraudiolistener.Stop(); caraudioService = false } if ((maxCarList == 4) && (caraudioserver_4.Connected)) { caraudiolistener.Stop(); caraudioService = false } Thread.Sleep(300); } } } |
본 발명에서는 완성된 음성채팅용 모듈을 분리하여 테스트용 프로그램을 제작하여 간단한 음성채팅 프로그램으로 대화가능 여부를 테스트한 후 실제 프로그램에 적용하였다.
참고로, 도 7은 본 발명에 이용된 음성 데이터 관련 클래스를 도시한 도면이고, 도 8은 음성 플레이어 쓰레드 기반 클래스를 도시한 도면이다.
영상데이터 처리
본 발명에서는 제한된 대역폭 내에서 영상의 전송을 가능하게 하기 위해 최 대한의 대역폭 사용량을 줄일 필요가 있으며 카메라를 통해 캡쳐 되는 프레임 수를 줄여 약간의 끊김이 발생하더라도 영상의 전송이 가능하도록 함에 목적이 있으며, 위성의 통신 상태가 좋지 않아 영상의 전송이 힘들 경우 on/off를 할 수 있도록 설정할 수 있도록 구성된다.
도 9는 본 발명에 이용된 영상 캡쳐 및 재생 클래스를 도시한 도면이다.
도 9에 도시된 클래스들은 다이렉트쇼 및 넷(NET) 기반의 클래스들로 스트리밍에 해당하는 것을 모두 포괄하는 기술이다. 내부 클래스에는 비디오와 오디오등도 포함이 되어 있으며, 해당하는 디바이스 드라이버까지도 포함한다.
도 10은 본 발명에 따른 영상 데이터 전송 테스트의 일례를 도시한 도면으로, 양측의 클라이언트를 실행할 때 카메라로 인식되는 영상의 프레임이 캡쳐되고, 캡쳐된 영상이 전송된다.
다음의 프로그램 코드는 본 발명에 따른 카메라 모듈 작동 코드를 나타낸다.
SetImage(this.onoff_b, global::physiolab.telemedicine.client.ambulance.Properties.Resources.off); if (m_Client.Video_CaptureEnable) { try { Debug.WriteLine("Select Camera device"); m_Client.startUpVideo(this, this.panel_preView); SetImage(this.onoff_b, global::physiolab.telemedicine.client.ambulance.Properties.Resources.on); if (!movie_flag) { m_Client.Video_CaptureEnable = false SetImage(this.onoff_b, global::physiolab.telemedicine.client.ambulance.Properties.Resources.off); } } catch { m_Client.Video_CaptureEnable = false SetImage(this.onoff_b, global::physiolab.telemedicine.client.ambulance.Properties.Resources.off); movie_flag = false Debug.WriteLine("Camera Device Not Found!"); } } |
도 11은 카메라 모듈을 이용한 정지 영상의 촬영의 예를 도시한 도면이다.
영상을 캡쳐해 주는 기능을 하고 있는 카메라 모듈을 이용하여 선박 클라이언트에서는 정지영상의 촬영이 가능하다. 동영상으로 보여주고 있는 프레임을 캡쳐한 스냅샷을 jpg 이미지로 만들어 파일로 저장하면 우측의 리스트에 등록되게 된다.
리스트에 등록된 스냅샷을 선택하여 의사가 볼 수 있도록 전송이 가능하며 작은 해상도의 영상보다 더 높은 해상도의 이미지를 통해서 환자의 상태나 외상의 정도를 파악 가능하도록 하고 있다.
4. 생체 신호 측정 모듈을 통한 선박 응급용 데이터 전송
1) 생체신호 측정과 데이터 전송
도 1에 도시한 바와 같이, 선박에 있는 생체신호 측정 장비(12)로 측정된 생체 신호 정보를 선박 클라이언트(10)의 소프트웨어에서 인말새트 망의 MPDS서비스의 TCP/IP 프로토콜을 통하여 데이터 통신을 위한 멀티미디어 통신용 웹 서버에 전송을 하고, 의료기관측 클라이언트(50)의 컴퓨터(51)는 서버에 접속되고, 서버에 있는 선박의 정보에 연결되어 있어, 의료기관측 클라이언트에서는 선박 클라이언트에서 보내오는 생체신호 정보를 실시간으로 받아 출력하게 된다.
선박 클라이언트(10)의 생체 신호 측정 장비(12)를 통해 획득하는 신호의 종류는, 자동 측정되는 ECG(심전도), 혈압(Pressure), 맥박(Pulse), 산소 포화도(SpO2), 및 수동 측정하여 입력하는 온도(Temperature), 혈당(Glucose) 정보를 포함하고, 선박 클라이언트의 컴퓨터(11)에 탑재된 카메라로부터의 정지영상, 오디오, 비디오는 적절한 포맷으로 멀티미디어 통신용 웹 서버에 전송된다.
다음의 표 1는, 전송 데이터의 종류와 크기를 나타낸다.
(표 1)
본 발명에서는 우선순위 별로 데이터를 전송하고, 동영상 정지영상, 텍스트 기타 이벤트 신호는 40Kbps범위 내에서 유동적인 크기로 전송한다. 인말새트 F77의 위성 대역폭은 64Kbps를 기본적으로 제공하지만 동일한 속도를 계속 보장할 수 없기 때문에 전송 데이터의 크기는 제한되는 것이 바람직하다.
다음의 표2는 생체 신호 종류 및 크기를 나타낸 표이다.
생체 신호 측정 장비(12)에서 자동으로 측정되는 ECG(심전도), 혈압(Pressure), 맥박(Pulse)은 샘플링 처리된 데이터가 전송되며, SpO2(산소포화도)는 자동 수치변환되어 입력되며, 온도 및 혈당은 수동으로 직접 입력해야 한다.
2) 구현 및 설명
최초 생체 신호 측정 장비에서 나오는 신호들을 하드웨어 제조 단계에서 정해진 크기에 따라 데이터를 분류한다. 데이터들은 정해진 길이에 따라 출력되므로 적절한 크기에 맞게 데이터가 정렬되게 된다.
다음은 생체신호 측정 장비로부터 신호 획득 처리에 관계된 프로그램 코드이다.
public class DeviceSignal : Signal { public const int ADC_data_len = 128/2; public const int NIBP_len = 7; public const int SPO2_len = 3; public const int TIMPESTAMP_len = 8; //uint64 //all data length.. //public const int DATA_LEN = ADC_data_len *2 + NIBP_len + SPO2_len + TIMPESTAMP_len; public const int DATA_LEN = ADC_data_len *2 + NIBP_len + SPO2_len; public const int PACKET_LEN = ADC_data_len * 2 + NIBP_len + SPO2_len; /// device signal from device private Struct_DeviceSignal m_deviceSignal; private Struct_ClinicalSignal m_ClinicalSignal; private bool b_ClinicalSignal = false /// <param name="signal">device signal type</param> public DeviceSignal(ref Struct_DeviceSignal signal) :base(EnumDataType.DEVICE) { this.m_deviceSignal = signal; } public DeviceSignal() :base(EnumDataType.DEVICE) { m_deviceSignal = new Struct_DeviceSignal(); m_deviceSignal.ADC_data = new short[ADC_data_len];//64 ( 128 bytes) m_deviceSignal.NIBP = new byte[NIBP_len];//7 m_deviceSignal.SPO2 = new byte[SPO2_len];//3 } |
또한, 생체신호 측정 장비에서 추출된 생체 신호는 불특정한 잡음이 섞여서 추출되게 되는데 소프트웨어적인 필터링을 거쳐서 신호를 명확하게 알아볼 수 있도록 구성되어야 한다.
다음은 생체 신호 데이터의 필터링 및 데이터 변환에 관한 프로그램 코드이다.
//convert channel data to float value using MeanFilter and Digital Filter private float[] convertChannel(ref short[] channel, ref DigitalFilter dfilt, ref MeanFilter mfilt) { int len = channel.Length; float[] ret = new float[len]; for (int i = 0; i < len; i++) { ret[i] = (float)((ushort)channel[i] - 2048) / (float)409.6; ret[i] -= (float)mfilt.getData(ret[i]); //offset 제거 ret[i] = (float)dfilt.getData(ret[i]); //필터링데이타 } return ret; } |
ECG의 경우 측정되는 신호를 분리하여 3개의 채널로 나누어 필요로 하는 형태의 신호를 얻어 플로트(float) 형태의 수치로 표현하면 그 데이터가 그래프로 표현되게 된다.
다음은 ECG 채널 데이터 플로트 변환에 관한 프로그램 코드를 나타낸다.
//convert channel data to float value private float[] convertChannel(ref short[] channel) { int len = channel.Length; float[] ret = new float[len]; for (int i = 0; i < len; i++) ret[i] = (float)((ushort)channel[i] - 2048) / (float)409.6; return ret; } /// ch1 float value public float[] ch1 { get { return convertChannel(ref m_clinicalSignal.ECGs_ch1, ref m_sFilter.Dfilter_ECG1, ref m_sFilter.Mfilter_ECG1); } } public float[] ch2 { get { return convertChannel(ref m_clinicalSignal.ECGs_ch2, ref m_sFilter.Dfilter_ECG2, ref m_sFilter.Mfilter_ECG2); } } public float[] ch3 { get { return convertChannel(ref m_clinicalSignal.ECGs_ch3, ref m_sFilter.Dfilter_ECG3, ref m_sFilter.Mfilter_ECG3); } } |
다음은 ECG 채널 샘플정리 및 호흡과 맥파 수치 분리에 관한 프로그램 코드이다.
if (b_ClinicalSignal == false) { Struct_ClinicalSignal ret = new Struct_ClinicalSignal(); ret.ECGs_ch1 = new short[20]; ret.ECGs_ch2 = new short[20]; ret.ECGs_ch3 = new short[20]; // pulse // Respiration ret.PULSE = new short[2]; ret.RESP = new short[2]; // 60 개의signal을20개로구성된채널로byte 분리 for (int i = 0; i < 30; i += 3) { ret.ECGs_ch1[i / 3] = m_deviceSignal.ADC_data[i]; ret.ECGs_ch2[i / 3] = m_deviceSignal.ADC_data[i + 1]; ret.ECGs_ch3[i / 3] = m_deviceSignal.ADC_data[i + 2]; ret.ECGs_ch1[i / 3 + 10] = m_deviceSignal.ADC_data[i + 32]; ret.ECGs_ch2[i / 3 + 10] = m_deviceSignal.ADC_data[i + 1 + 32]; ret.ECGs_ch3[i / 3 + 10] = m_deviceSignal.ADC_data[i + 2 + 32]; } //Pulse, Respiration Data for (int i = 0; i < 2; i++) { ret.PULSE[i] = m_deviceSignal.ADC_data[32 * (i + 1) - 1]; ret.RESP[i] = m_deviceSignal.ADC_data[32 * (i + 1) - 2]; } m_ClinicalSignal = ret;//copy it b_ClinicalSignal = true return ret; } else return m_ClinicalSignal; |
5. 인말새트 위성 시스템을 이용한 멀티미디어 통신
1) 위성시스템을 이용한 통신 구현
도 12는 인말새트 위성 커버리지를 도시한 도면이다. 인말새트 해상용 디지털 멀티미디어 위성 이동 통신 서비스는 인말새트 3세대 위성의 글로벌 및 스포트 빔을 이용하고, 전화는 기존의 인말새트 mini-M 자원(4.8kbps 위성 코덱을 이용)을 이용하며, HSD(MISDN)는 별도의 플릿(Fleet) 채널을 이용한다.
인말새트-A 서비스의 대체 서비스로 글로벌 빔을 이용하여 GMDSS 지원할 수 있는데, 글로벌 빔은 극지방을 제외하고 전세계 지구 표면의 98%를 커버하고 있기 때문에 해상에서의 통신수단으로 유용하게 사용될 수 있다.
3세대 위성의 서비스 커버리지는 크게 두 가지 방식으로 나누어 볼 수 있는데, 첫째로는, 글로벌 빔 방식으로 인말새트 위성은 적도 궤도에서 바라보는 지구 전체를 조사할 수 있는 글로벌 빔과 일부 지역을 조사할 수 있는 스포트 빔을 갖고 있다.
글로벌 빔 방식은 극지방 일부를 제외하고 지구 전체에서 서비스를 이용할 수 있고 인말새트-A, B, C, M, Fleet F77, F55 서비스를 사용하는 방식이다. 조난/안전 통신을 기본으로 하는 해상용 인말새트 서비스는 모두 글로벌 빔을 이용한다고 할 수 있다.
둘째로는, 스포트 빔 방식으로 인말새트 위성은 위성별로 5~7개의 스포트 빔 안테나와 1개의 글로벌 빔 안테나를 장착하고 있다. 작은 터미널을 이용하여 육상의 이동 위성 통신 서비스를 제공하기 위하여 인말새트 3세대 위성부터 장착한 것이 스포트 빔 안테나이다.
인말새트-B, M, mM, GAN, Fleet F55, F33 서비스가 스포트 빔을 이용하며, 인말새트-B, M, Fleet F55는 스포트 빔과 글로벌 빔을 병행하여 사용하고 있다.
통신 가능 지역
인말새트 글로벌 빔을 이용하는 서비스는 일부 극 지방을 제외하고 육상, 해상에서 모두 이용 할 수 있으며 인말새트 스포트 빔은 육상 서비스를 제공하기 위하여 준비된 것으로 이론적으로는 해상에서는 사용할 수 없으나 일부 연안에서는 사용 가능하다.
인말새트 위성 커버리지 맵에도 도시되어 있지만 일부 해상지역만 제외하고는 스포트 빔을 이용하는 서비스도 거의 모든 지역에서 통신 가능하다.
2) 구현 및 설명
구현 및 설명
위성을 통해 네트워크가 구성이 되어 데이터 전송이 가능해지면 선박 클라이언트(10)의 접속 연결에 따라 중계 서버인 웹 서버(40)와 연결이 이루어진다. 이때 선박의 정보가 웹 서버에 전달되면서 세션이 생성되고 각각의 생체신호, 음성, 영상, 기타 명령신호들이 전송되는 경로가 설정되게 된다.
다음은 중계서버로의 접속을 위한 프로그램 코드를 나타낸다.
/// Web Service URL /// if parameter is NULL, it connect to the default web service address /// </param> /// <param name="login">선박 로그인 정보</param> public CarClient(string webServiceURL, Struct_Login login, Panel capture_pic, PictureBox receive_pic) :base( new CarWebServiceConnection(login, webServiceURL), new voice.VoiceChat(), new video.VideoConference(capture_pic, receive_pic), new command.Command(), new signal.NetSignalSender() ) { // 의사쪽에서신호가올때수행하기위한Event netCommand.EventStartSession += new EventHandler(netCommand_EventStartSession); netCommand.EventEmergency +=new EventHandler(netCommand_EventEmergency); //event redefine for VideoConference netVideo.NewFrameFromNetwork += new EventHandler<Jpeg>(netVideo_NewFrameFromNetwork); netVideo.NewFrameToNetwork += new EventHandler<Jpeg>(netVideo_NewFrameToNetwork); Signal.EventSignalSend += new EventHandler<EventArgs_Netsignal>(Signal_EventSignalSend); } |
본 발명에서는 데이터를 중계 서버인 멀티미디어 통신용 웹 서버(40)로 보내는 스레드가 동시에 여러 스레드가 동작할 경우 스레드의 충돌로 인해 데이터의 전송에 지연이 발생하게 된다. 이런 지연 현상을 막기 위해서 중계 서버로 의료기관측 클라이언트(50)가 접속한 이후에 선박측 클라이언트(10)에 접속 메시지를 주고, 그 후에 시작 명령을 받으면 나머지 스레드들이 동작하게 함으로써 데이터 전송의 지연을 막을 수 있다.
다음은 데이터의 전송지연을 차단하기 위한 프로그램 코드이다.
//의사 쪽에서complete 한 이후 선박에게command session을 통하여 시작명령어를 받으면 수행됨 //나머지thread를 동작하게함. 데이터 전송의 지연현상을 막기 위한 방법 private void netCommand_EventStartSession(Object sender, EventArgs args) { //send net command start Debug.WriteLine("Send netStart command to the doctor"); netCommand.command_netStart(); goStart(); this.EventDoctorEnter(this, new EventArgs()); } |
실제 인말새트 위성망을 이용해서 수시로 프로그램의 테스트가 어렵기 때문에 플릿 77과 비슷한 환경을 만들어주기 위하여 네트워크의 업다운 링크에 전송될 수 있는 데이터의 양을 제한해 놓고 테스트를 하였다.
도 13은 본 발명에 따라 구동중인 선박 응급 소프트웨어의 일례를 도시한 도면이다. 도 13에서는 ECG 측정하는 전극을 붙이지 않아 잡음이 출력되는 상태이고 손가락에 끼우는 집게 센서를 장착한 상태로 혈압을 체크한 모습이다. 두 개의 영상 중 상단의 선박의 환자의 모습, 아래는 응급의료 센터의 의사로 가정하고 테스트를 진행하였다.
6 생체 신호 측정 장비와 원격 선박 응급용 시스템의 연동 및 적용
<가상 시나리오 및 구현된 시스템 테스트>
(1) 운행 중인 선박에서 환자가 발생한다.
의료 기관과 원격 진료를 하기 위해 선박 응급용 시스템이 있는 곳으로 이동한다.
(2) 선박응급용 시스템을 동작시킨다.
인말새트 장비와 연결을 확인하고 의료 기관과 연결이 원활하게 되는지 확인한다.
(3) 생체 신호 측정 모듈의 센서들을 진료 대상자의 몸에 부착한다.
심전도 측정 센서를 지정위치에 부착한다.
산소포화도 측정용 센서를 손가락에 끼운다.
혈압 측정용 도구를 팔에 부착한다.
(4) 자동 측정되는 신호 이외의 이벤트 측정값을 입력한다.
체온계를 이용하여 체온을 측정하여 수동 입력한다.
혈당 측정기를 이용하여 혈당을 측정하여 입력한다.
(5) 선박 응급용 S/W에 입력된 생체 측정 신호들이 인말새트 네트워크를 통해서 의료기관 원격 진료 S/W에 전송된다.
(6) 선박 응급용 S/W와 동일한 그래프와 데이터 값이 의료기관 원격진료 S/W에 그려지고 의료진이 화면을 보고 환자의 상태를 판단한다.
(7) 환자의 상태를 확인한 의료진은 적절한 처방과 조취를 취하도록 선박에 지시하게 된다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로, 본 발명이 속하는 기술분야에서 통상의 지식을 갖는 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 게시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이런 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호범위는 아래의 청구범위에 의하여 해석되어야하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
도 1은 본 발명에 따른 인말새트 위성을 이용한 원격 선박 진료 시스템을 개략적으로 도시한 도면.
도 2는 본 발명에 따른 선박 응급 소프트웨어의 메인 화면을 도시한 도면.
도 3은 본 발명에 따른 모듈별 데이터 구조 및 통합구조를 도시한 도면.
도 4는 웹서비스 실행예를 도시한 도면.
도 5는 중계서버로의 접속을 위한 일례를 도시한 도면.
도 6은 네트워크 전송 및 수신 필터 그래프와 필터를 도시한 도면.
도 7은 본 발명에 이용된 음성데이터 관련 클래스를 도시한 도면.
도 8은 본 발명에 이용된 음성 플레이어 쓰레드 기반 클래스를 도시한 도면.
도 9는 본 발명에 이용된 영상 캡쳐 및 재생 클래스를 도시한 도면.
도 10은 본 발명에 따른 영상 데이터 전송 테스트를 도시한 도면.
도 11은 본 발명에 따른 카메라 모듈을 이용한 정지 화상 촬영을 테스트한 도면.
도 12는 인말새트 위성의 위성 커버리지를 도시한 도면.
도 13은 구현 완료된 선박 응급 소프트웨어에서의 동작을 도시한 도면.
Claims (3)
- 선박측 클라이언트 시스템과, 의료기관측 클라이언트 시스템, 및 멀티미디어 통신용 웹서버를 포함하는 통신 위성을 이용한 원격 선박 진료 시스템에 있어서,상기 선박측 클라이언트 시스템에는 생체 신호를 측정하기 위한 생체 신호 측정장비가 구비되어 있으며,상기 생체 신호 측정 장비에서 측정된 생체 신호 데이터들은, 미리 정해진 데이터들의 우선 순위에 따라 또는 사용자의 선택에 따라 일부의 데이터들이 생략가능하게 상기 멀티미디어 통신용 웹 서버를 거쳐 상기 의료기관측 클라이언트 시스템으로 전달되는 것을 특징으로 하는 통신 위성을 이용한 원격 선박 진료 시스템.
- 제1항에 있어서,상기 선박측 클라이언트 시스템은 카메라 및 마이크를 더 구하고 있고, 상기 카메라 및 마이크에서 생성된 비디오 및 오디오 데이터가 상기 멀티미디어 통신용 웹 서버를 거쳐 상기 의료기관측 클라이언트 시스템으로 전달되는 것을 특징으로 하는 통신 위성을 이용한 원격 선박 진료 시스템.
- 제1항 또는 제2항에 있어서,상기 멀티미디어 통신용 웹 서버는,상기 선박측 클라이언트 시스템 및 상기 의료기관측 클라이언트 시스템이 접속하기 위한 세션 포트를 할당하고,상기 선박측 클라이언트 시스템으로부터의 생체 데이터 신호 및 상기 비디오 및 오디오 데이터 신호를 위한 데이터 전송용 포트를 할당하고,상기 멀티미디어 통신용 웹 서버에 접속된 상기 선박측 클라이언트 시스템과 상기 의료기관측 클라이언트 시스템의 세션을 연동시켜, 상기 멀티미디어 통신용 웹 서버를 경유해 전송되는 데이터를 저장하여 유지하는 것을 특징으로 하는 통신 위성을 이용한 원격 선박 진료 시스템.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090018360A KR20100099833A (ko) | 2009-03-04 | 2009-03-04 | 통신 위성을 이용한 원격 선박 진료 시스템 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090018360A KR20100099833A (ko) | 2009-03-04 | 2009-03-04 | 통신 위성을 이용한 원격 선박 진료 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20100099833A true KR20100099833A (ko) | 2010-09-15 |
Family
ID=43005983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090018360A KR20100099833A (ko) | 2009-03-04 | 2009-03-04 | 통신 위성을 이용한 원격 선박 진료 시스템 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20100099833A (ko) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106777969A (zh) * | 2016-12-14 | 2017-05-31 | 陈延才 | 一种海事远程医疗服务系统 |
KR20190014173A (ko) * | 2017-07-27 | 2019-02-12 | 주식회사 비트컴퓨터 | 휴대용 의료 진단기기 박스 |
KR20200007309A (ko) * | 2018-07-12 | 2020-01-22 | 주식회사 비트컴퓨터 | 의료 기관에 따른 선택형 통신 프로토콜과 의료 데이터 처리 시스템 및 이를 포함하는 의료선 |
WO2020212973A1 (en) | 2019-04-18 | 2020-10-22 | Orca Ai Ltd. | Marine data collection for marine artificial intelligence systems |
KR20230103332A (ko) * | 2021-12-31 | 2023-07-07 | 동은정보기술주식회사 | 보안을 강화한 웹소켓 기반의 실시간 비대면 진료 서비스 제공 시스템 및 방법 |
-
2009
- 2009-03-04 KR KR1020090018360A patent/KR20100099833A/ko not_active Application Discontinuation
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106777969A (zh) * | 2016-12-14 | 2017-05-31 | 陈延才 | 一种海事远程医疗服务系统 |
KR20190014173A (ko) * | 2017-07-27 | 2019-02-12 | 주식회사 비트컴퓨터 | 휴대용 의료 진단기기 박스 |
KR20200007309A (ko) * | 2018-07-12 | 2020-01-22 | 주식회사 비트컴퓨터 | 의료 기관에 따른 선택형 통신 프로토콜과 의료 데이터 처리 시스템 및 이를 포함하는 의료선 |
WO2020212973A1 (en) | 2019-04-18 | 2020-10-22 | Orca Ai Ltd. | Marine data collection for marine artificial intelligence systems |
EP3957122A4 (en) * | 2019-04-18 | 2022-06-22 | Orca AI Ltd. | MARINE DATA COLLECTION FOR MARINE SYSTEMS WITH ARTIFICIAL INTELLIGENCE |
KR20230103332A (ko) * | 2021-12-31 | 2023-07-07 | 동은정보기술주식회사 | 보안을 강화한 웹소켓 기반의 실시간 비대면 진료 서비스 제공 시스템 및 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106156454B (zh) | 基于用户认证和设备与信息管理方法的健康管理系统 | |
AU2009321988B2 (en) | Mobile network terminal device and method for monitoring electrophysiological data and pathological image | |
CA2997552C (en) | Integrated medical device and home based system to measure and report vital patient physiological data via telemedicine | |
US9974485B2 (en) | Method and system for providing remote healthcare services | |
Konstantas et al. | Continuous monitoring of vital constants for mobile users: the MobiHealth approach | |
US20070255115A1 (en) | Remote diagnostic & treatment system | |
CN103154955A (zh) | 用于远程医疗应用的多功能医疗设备 | |
KR20100099833A (ko) | 통신 위성을 이용한 원격 선박 진료 시스템 | |
CN110890161A (zh) | 一种超声远程实时会诊系统 | |
Daou et al. | Patient vital signs monitoring via android application | |
US20210110901A1 (en) | Magnetic-resonance imaging data synchronizer | |
CN113488137A (zh) | 健康管理计划的推荐方法、装置及系统 | |
Llamas et al. | Open source platform for collaborative construction of wearable sensor datasets for human motion analysis and an application for gait analysis | |
KR20090130607A (ko) | 국제해사위성을 이용하여 선박용 응급원격진료를 제공하는시스템 | |
CN110867257A (zh) | 一种远程会诊系统 | |
Widya et al. | Telematic requirements for a mobile and wireless healthcare system derived from enterprise models | |
CN102920445A (zh) | 具有云功能的动脉硬化检测仪 | |
JP2023088832A (ja) | 動物患者用遠隔診察システム | |
Rodriguez et al. | Wireless ECG based on Bluetooth protocol: design and implementation | |
CN208477927U (zh) | Poct设备和poct数据管理系统 | |
CN101283914A (zh) | 多方互动数字无线远程医疗听诊系统 | |
TW201023825A (en) | Movable network terminal device and method for electric physiology data and pathology vision-monitoring | |
Kumpusch et al. | A Mobile Phone Based Telemonitoring Concept for the Simultanous Acquisition of Biosignals Physiological Parameters | |
Kim et al. | Ubiquitous healthcare: Technology and service | |
JP4314509B2 (ja) | 医用画像装置の操作支援システム及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |