한국보건의료기술평가학회 - johta mlcomm2$0602015005.pdf · 2015. 7. 14. · 통해,...

13
http://www.kahta.or.kr 35 J Health Tech Assess 2015;3(1):35-47 ISSN 2288-5811 Copyright © 2015 The Korean Association for Health Technology Assessment 최근 정보통신 금융 영역뿐 아니라 보건의료 분야에서 빅데이터 활용에 대한 논의가 활발하다. 빅데이터를 이용 보건의료 연구개발 지원 1,2) 보건의료 비용 절감 시도 3-5) 그리고 산개되어 있는 보건의료 빅데이터들 연계의 필요 6) 등이 논의되고 있다. Groves 7) 빅데이터로 인해 건의료계에 일어날 것으로 예상되는 변화로서 근거에 입각 임상진료, 임상결과에 최적화된 의료 서비스 제공, 비용 절감과 동시에 보건의료 가치를 지속적으로 증진시킬 모색 보건의료 연구개발을 향상시킬 있는 혁신법 등을 손꼽았다. 또한 보건의료 빅데이터는 가치 창출을 위한 성장동력의 하나로써 보건의료 서비스 분야에 있어 새로운 패러다임을 제공할 있을 것으로 기대되었다. 8) 특히, 우리나라는 전국민의 98%국민건강보험에 가입 하고 있으며, 7질병군에 대한 포괄수가제(Diagnosis Re- Development of Open-Source Data Analysis Program for Healthcare Big Data Hyung-Deuk Park, MSc, RAC and Sang-Soo Lee, MBA Corporate Affairs, Medtronic Korea, Seoul, Korea 보건의료 빅데이터 이용 활성화를 위한 오픈 소스 데이터 분석 프로그램의 개발 메드트로닉코리아 득·이 Received March 31, 2015 Revised May 7, 2015 Accepted May 13, 2015 Address for Correspondence: Hyung-Deuk Park, MSc, RAC Corporate Affairs, Medtronic Korea, 4F Sajo Building, 424 Yeongdong-daero, Gangnam-gu, Seoul 135-502, Korea Tel: +82-2-3404-7744 Fax: +82-2-562-7168 E-mail: [email protected] Objectives: An era of open and transparent information in Korean healthcare area is now underway. Health Insurance Review and Assessment Service has disclosed the National Patient Sample claims data since 2009 and National Health Insurance Service announced to disclose 9 year period cohort national health insurance claims database to healthcare stakeholders. Since Korea uses the fee-for-service scheme as basic payment system for all of medical treatments excepting for 7 common diseases which are run by Diagnosis Related Group, it is easy to identify the medical treatment practice and resource utility information for individual medical procedures. e use of SAS soſtware is the generally accepted data analysis tool as the average data size of national health insurance claims data easily exceeds over 30 Giga Bytes. However, the data analysis using SAS is labor-intensive and time-consuming works and has a low accessibility due to its costly license fees. As the need to analyze the Healthcare Big Data faster and appropriately rises, demand for development of new data analysis tool is also significantly increasing. Methods: Open-source big data analysis program with the name of BigPy was developed using Py- thon which is a high-level object oriented programming language. BigPy’s design philosophy empha- sizes on code readability and reusability, and its syntax allows users to express concepts in fewer lines of code than would be possible in statistical soſtware such as SAS or R. Results: Bigpy program is com- posed of a series of data analysis macro and functions. e functions in BigPy can easily read, trim, sort, and merge the healthcare big data with database format and convert large dataset to a Hierarchical Data Format Version 5 file. Conclusion: Healthcare stakeholders now have access to promising new value of knowledge that is called Big Data. e efforts on Big Data analysis can address problems related to variability in healthcare quality and consequently improve healthcare treatments. e development of open-source data analysis is a noteworthy and promising methodology to handle the healthcare big data in a rapid and a cost-effective way. Key Words Healthcare · Big Data · Open-source · National Health Insurance Claims Data. Review Article JoHTA online © ML Comm

Upload: others

Post on 11-Sep-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 한국보건의료기술평가학회 - JoHTA MLComm2$0602015005.pdf · 2015. 7. 14. · 통해, 보건의료산업 관련 분야에서 의료기관 평가 인증정보, 의약품

http://www.kahta.or.kr 35

J Health Tech Assess 2015;3(1):35-47 ISSN 2288-5811 Copyright © 2015 The Korean Association for Health Technology Assessment

서 론

최근 정보통신 및 금융 영역뿐 아니라 보건의료 분야에서

도 빅데이터 활용에 대한 논의가 활발하다. 빅데이터를 이용

한 보건의료 연구개발 지원1,2) 및 보건의료 비용 절감 시도3-5)

그리고 산개되어 있는 보건의료 빅데이터들 간 연계의 필요

성6) 등이 논의되고 있다. Groves 등7)은 빅데이터로 인해 보

건의료계에 일어날 것으로 예상되는 변화로서 근거에 입각

한 임상진료, 임상결과에 최적화된 의료 서비스 제공, 비용

절감과 동시에 보건의료 가치를 지속적으로 증진시킬 수 방

안 모색 및 보건의료 연구개발을 향상시킬 수 있는 혁신법

등을 손꼽았다. 또한 보건의료 빅데이터는 가치 창출을 위한

성장동력의 하나로써 보건의료 서비스 분야에 있어 새로운

패러다임을 제공할 수 있을 것으로 기대되었다.8)

특히, 우리나라는 전국민의 98%가 국민건강보험에 가입

하고 있으며, 7개 질병군에 대한 포괄수가제(Diagnosis Re-

Development of Open-Source Data Analysis Program for Healthcare Big Data

Hyung-Deuk Park, MSc, RAC and Sang-Soo Lee, MBA Corporate Affairs, Medtronic Korea, Seoul, Korea

보건의료 빅데이터 이용 활성화를 위한 오픈 소스 데이터 분석 프로그램의 개발

메드트로닉코리아

박 형 득·이 상 수

Received March 31, 2015Revised May 7, 2015Accepted May 13, 2015

Address for Correspondence: Hyung-Deuk Park, MSc, RACCorporate Affairs, Medtronic Korea, 4F Sajo Building, 424 Yeongdong-daero, Gangnam-gu, Seoul 135-502, KoreaTel: +82-2-3404-7744Fax: +82-2-562-7168E-mail: [email protected]

Objectives: An era of open and transparent information in Korean healthcare area is now underway. Health Insurance Review and Assessment Service has disclosed the National Patient Sample claims data since 2009 and National Health Insurance Service announced to disclose 9 year period cohort national health insurance claims database to healthcare stakeholders. Since Korea uses the fee-for-service scheme as basic payment system for all of medical treatments excepting for 7 common diseases which are run by Diagnosis Related Group, it is easy to identify the medical treatment practice and resource utility information for individual medical procedures. The use of SAS software is the generally accepted data analysis tool as the average data size of national health insurance claims data easily exceeds over 30 Giga Bytes. However, the data analysis using SAS is labor-intensive and time-consuming works and has a low accessibility due to its costly license fees. As the need to analyze the Healthcare Big Data faster and appropriately rises, demand for development of new data analysis tool is also significantly increasing. Methods: Open-source big data analysis program with the name of BigPy was developed using Py-thon which is a high-level object oriented programming language. BigPy’s design philosophy empha-sizes on code readability and reusability, and its syntax allows users to express concepts in fewer lines of code than would be possible in statistical software such as SAS or R. Results: Bigpy program is com-posed of a series of data analysis macro and functions. The functions in BigPy can easily read, trim, sort, and merge the healthcare big data with database format and convert large dataset to a Hierarchical Data Format Version 5 file. Conclusion: Healthcare stakeholders now have access to promising new value of knowledge that is called Big Data. The efforts on Big Data analysis can address problems related to variability in healthcare quality and consequently improve healthcare treatments. The development of open-source data analysis is a noteworthy and promising methodology to handle the healthcare big data in a rapid and a cost-effective way.

Key Words Healthcare · Big Data · Open-source · National Health Insurance Claims Data.

Review ArticleJoHTA online © ML Comm

Page 2: 한국보건의료기술평가학회 - JoHTA MLComm2$0602015005.pdf · 2015. 7. 14. · 통해, 보건의료산업 관련 분야에서 의료기관 평가 인증정보, 의약품

Healthcare Big Data Analysis

36 J Health Tech Assess 2015;3(1):35-47

lated Group)를 제외한 나머지 상병에 대해서는 행위별수가

제(Fee For Service)를 적용하고 있기 때문에, 비급여를 제외

한 임상진료에 관계된 모든 세부 사항을 건강보험 청구자료

를 통해 확인할 수 있다는 장점이 있다. 건강보험심사평가원

(이하 심평원)은 2009~2013년 환자표본자료(Health Insur-ance Review and Assessment Service National Patient Sam-ple)를 통해 전국민의 보건의료 환경을 반영한 데이터를 제

공해 오고 있으며,9-11) 국민건강보험공단(이하 공단)은 최근

약 100만 명에 대한 9년 기간의 코호트 자료를 공개한 바 있

다.12) 이외에도 질병관리본부에서 관리하고 있는 국민건강

영양조사자료, 국립암센터의 암 등록자료, 통계청의 사망 통

계자료, 한국의료패널자료 등 국내 보건의료 빅데이터 자료

원은 지속적으로 증가하고 있다. 이에 정부도 지난 2014년 발

표한 ‘정부 3.0’ 계획을13) 통해, 보건의료산업 관련 분야에서

의료기관 평가 인증정보, 의약품 정보 등의 정보공개 확대 계

획을 발표하고 현재 이를 추진 중에 있다.

이처럼 국내외적으로 보건의료 빅데이터의 활용방안이

활발히 논의되고 있음에도 불구하고, 보건의료 빅데이터 활

용을 위한 데이터 분석 도구 및 관련 기술 개발에 대한 논의

는 상대적으로 부족하다. 본 연구는 보건의료 분야 빅데이터

이용 활성화를 위한 오픈 소스 기반의 데이터 분석 프로그

램의 개발과정과 그 활용사례를 보고하고자 한다.

BigPy 보건의료 빅데이터 분석 프로그램의 개발

프로그램 개발 동기

심평원의 환자표본자료 또는 공단의 표본 코호트 자료와

같은 보건의료 빅데이터를 분석할 수 있는 데이터 분석 프로

그램은 현재 R과 SAS 프로그램이 이용 가능한 분석 도구로

평가되고 있다. R 프로그램은 분산-네트워크 기술인 하둡

(Hadoop)14) 기술과의 연계를 통해 빅데이터 분석이 가능하다.

하지만, 하둡의 경우 서버-클라이언트 네트워크 프로그래밍

에 대한 전문적인 지식을 필요로 하며, 분석 대상 데이터의 크

기와 형태가 미리 정의되지 않은 비정형 형태의 빅데이터를

처리하는 목적으로 사용되는 제한점이 존재한다. SAS 프로그

램은 과학적이고 통합된 데이터 분석 환경을 제공해주는 장점

이 있지만, 라이센스 비용이 고가이며 자료 분석을 위해 SAS

프로그래밍 코딩법을 익히는 과정이 필요하다. 이처럼 적절한

보건의료 빅데이터 분석 도구의 부재 및 낮은 접근성으로 인

하여 보건의료 빅데이터 이용 활성화가 저해되고 있는 실정

이다. 보건의료 빅데이터 사용을 확산시키기 위해서는 자료원

공개 및 연계 계획뿐만 아니라 해당 자료를 분석하고 의미 있

는 데이터를 추출할 수 있는 데이터 분석관련 도구의 기술 개

발도 뒤따라야 한다고 생각하며, 이와 같은 생각이 BigPy 프로

그램을 개발하게 된 주요 동기로 작용하였다. 본 프로그램은

파이썬 프로그래밍 언어(Python programing language)를15,16)

기반으로 한 오픈 소스 빅데이터 분석 프로그램으로써, 건강

보험 청구자료와 같은 데이터베이스 형태의 보건의료 빅데이

터를 빠르고 손쉽게 분석하기 위한 목적으로 개발되었다.

BigPy 프로그램의 빅데이터 분석 알고리즘

일반적인 통계 분석 프로그램들을 이용하여 분석이 가능한

자료원의 크기는 해당 컴퓨터의 메모리 용량 이내로 제한된

다. 이와 같은 인-메모리(in-memory) 데이터 분석 알고리즘

은 데이터 용량이 통상 10 GB 이상이 되는 보건의료 빅데이

터를 분석하기에 적합하지 않기 때문에, 본 프로그램에는 ‘데

이터 조각내기(data chunking)’ 알고리즘이 활용되었다. ‘데

이터 조각내기’ 알고리즘은 원시 자료원을 메모리가 한 번에

처리할 수 있는 용량 이내로 데이터를 블록 형태로 잘게 나

눈 다음, 나누어진 데이터 블록별로 분석 작업을 반복 처리

하는 개념이다. 본 프로그램에서 “데이터 조각내기”의 상세

알고리즘과 의사코드(pseudo code)는 다음과 같다(그림 1).

1) 파일 생성(file creation): 하드디스크상에 원시 자료원

을 저장할 파일 생성

2) 데이터 조각내기(data chunking): 원시 자료원을 메모

리에 적재 가능한 용량 이내의 데이터 블록 형태로 조각 냄

3) 데이터 분석(data analyzing): 나눠진 데이터 블록을 순

서대로 메모리로 불러들여 분석을 실시하는 작업을 반복적

으로 실시

4) 데이터 재결합(data rejoining): 각각의 데이터 블록에

대해 분석된 결과를 메모리가 아닌 하드디스크 상에서 순서

대로 연결시킨 후 저장

BigPy 프로그램 밸리데이션(Validation)

본 프로그램의 밸리데이션은 ‘2011년 환자표본자료’에 포

함된 변수들의 빈도 및 기초통계량 값이17) SAS 프로그램 분

Fig. 1. Algorithm of Data Chunking and BigPy Pseudo-code.

Page 3: 한국보건의료기술평가학회 - JoHTA MLComm2$0602015005.pdf · 2015. 7. 14. · 통해, 보건의료산업 관련 분야에서 의료기관 평가 인증정보, 의약품

HD Park, et al.

http://www.kahta.or.kr 37

석 시와 동일한지 여부를 확인하는 것으로 진행하였다. 예를

들어, 심평원이 공개한 명세서 상세내역 테이블에 포함되어

있는 ‘서식코드’(변수명: FOM_CD)에 대해 빈도 값은 다음과

같으며(표 1), 해당 변수에 대한 빈도 값을 BigPy 프로그램으

로 계산한 결과는 다음과 같다(그림 2). 마찬가지로 심평원이

공개한 ‘심결요양급여비용총액’(변수명: RVD_RPE_TAMT)

에 대한 기초 통계량은 다음과 같으며(표 2), 해당 변수에 대

한 기초통계량을 BigPy 프로그램으로 계산한 결과는 다음과

같다(그림 3). 프로그램 밸리데이션에 포함된 전체 환자표본

자료 변수명과 밸리데이션 실시 결과는 다음과 같다(표 3).

BigPy 프로그램 특성 및 제한점

본 프로그램의 개발 목표는 데이터 분석관련 프로그래밍

절차를 단순화하고 작성한 코드를 재사용 가능하도록 하여

사용자로 하여금 프로그래밍 코딩보다는 빅데이터 분석 알

고리즘 그 자체에 집중할 수 있도록 한 점이다. 즉, 기존의 통

계분석 프로그램을 이용하여 보건의료 빅데이터를 가공·분

석하는 것과 동일한 기능을 제공하되, 직관적인 프로그래밍

코딩 방법을 도입하여 SAS 프로그램 데이터 스텝과 같은 복

Fig. 2. Analysis Result of Form Code (Name of Variable: ‘FOM_CD’) using BigPy.

Fig. 3. Analysis Result of Total Medical Treatment Amount (Name of Variable: ‘RVD_RPE_TAMT)’ using BigPy.

Table 1. Number of Frequency for ‘FOM_CD’ Variable in 20 tableCoding Value

DescriptionNo. of

Frequency2 Medicine In-Patient 340,5523 Medicine Out-Patient 18,870,2584 Dental In-Patient 9225 Dental Out-Patient 1,721,4946 Maternity Hospital In-Patient -7 Public Health Facility In-Patient -8 Public Health Facility Out-Patient 458,6159 Psychiatry Daytime Ward 216

10 Psychiatry In-Patient 17,66511 Psychiatry Out-Patient 52,86512 Oriental Medicine In-Patient 22,53613 Oriental Medicine Out-Patient 2,859,25020 Filling Prescriptions 35,057

Table 3. List of Variable used for Program Validation and Valida-tion Result

Name of Table Name of VariableResult of

Validation20 Table FOM_CD Pass

PAT_AGE PassSEX_TP_CD PassDGRSLT_TP_CD PassDGSBJT_CD PassINSUP_CD PassRVD_INSUP_BRAMT PassRVD_RPE_TAMT Pass

30 Table CZ_CD PassITEM_CD PassDIV_TY_CD Pass

40 Table SICK_DGSBJT_CD PassDMD_DGSBJIT_CD Pass

53 Table UNPRC PassTOT_MDC_DDCNT_OR_EXEC_FQ PassAMT Pass

Table 2. Basic Statistics of ‘Total Medical Treatment Cost’ (Name of variable: ‘RVD_RPE_TAMT’)

Item Basic Statistics

N 1,375,842Total -

Mean 823,549.713S.D. 2,879,336Min 0Max 506,619,890

Page 4: 한국보건의료기술평가학회 - JoHTA MLComm2$0602015005.pdf · 2015. 7. 14. · 통해, 보건의료산업 관련 분야에서 의료기관 평가 인증정보, 의약품

Healthcare Big Data Analysis

38 J Health Tech Assess 2015;3(1):35-47

잡한 절차를 거치지 않아도 빅데이터 분석이 가능하도록 프

로그램이 설계되었다. 본 프로그램에서 제공되는 주요 데이

터 분석기능들은 1) 원시 자료원 불러오기, 2) 데이터 가공, 3)

데이터 탐색 및 4) 특수 목적 함수들로 구성되어 있다(표 4).

SAS 프로그램의 데이터 스텝 프로그래밍 구문과 BigPy 프로

그래밍 구문의 비교는 다음에 상세히 기술되어 있다(부록).

본 프로그램을 통해 분석되는 보건의료 빅데이터는 Hier-archical Data Format Version 5(이하 HDF5) 파일 형식으로18)

저장되도록 설계되어 있다. HDF5 파일 형식은 데이터를 이

진(binary)형태로 저장하기 때문에 텍스트(text) 파일 저장방

식에 비해 데이터 용량이 커지더라도 데이터를 안정적으로

보관할 수 있다. 또한 데이터를 파일에 저장함과 동시에 실시

간 파일 압축이 가능하기 때문에 분석할 자료원의 용량을 줄

일 수 있는 장점이 있다. 기존의 통계분석 프로그램으로 보건

의료 빅데이터를 분석할 경우, 메모리 용량 부족으로 인해

빅데이터 분석 자체가 불가능 하였으나, HDF5 파일형식을

활용한 BigPy 프로그램을 사용하면 사용자의 메모리 용량이

아닌 하드디스크 용량이 허용하는 범위 내에서 보건의료 빅

데이터 분석이 가능하다.

빅데이터 처리 및 분석을 통해 도출된 최종 결과물은 HDF5

파일 형식 이외에 텍스트, Comma Separated Value, HTML 및

Stata 프로그램의 dta 파일 형식으로도 저장할 수 있다. 본 프

로그램은 보건의료 빅데이터와 통계분석 프로그램 사이에서

징검다리 역할을 함으로써, 사용자는 선호하는 통계 분석 프

로그램을 그대로 사용할 수 있도록 설계되었다(그림 4).

BigPy 프로그램은 데이터베이스 형태의 정형 빅데이터 분

석에 적합하며, 저장할 자료의 형태가 미리 정의되지 않은 비

정형 형태의 데이터 분석작업에는 사용할 수 없는 제한점이 있

다. 또한 본 프로그램으로 분석 가능한 자료원의 크기는 500

GB 이하인 경우가 적절하며, 그 이상의 빅데이터 분석시에는

본 프로그램의 사용이 적절하지 않다. 그리고 본 프로그램은 데

이터 분석 기능 이외에 통계분석 기능은 제공하고 있지 않다.

본 프로그램의 전체 코드는 오픈 소스 프로그램 개발 공유

사이트인 GitHub에(https://github.com/bondgem0/BigPy/

Fig. 4. General Data Analysis Diagram for Healthcare Big Data.

Table 4. List of Major Functions in BigPy Program

Name of function Descriptiontable20_load(file_path, file_name) Loading the HIRA-NPS 20 table raw data and converting to binary

data format automaticallytable30_load(file_path, file_name) Loading the HIRA-NPS 30 table raw data and converting to binary

data format automaticallytable40_load(file_path, file_name) Loading the HIRA-NPS 40 table raw data and converting to binary

data format automaticallytable53_load(file_path, file_name) Loading the HIRA-NPS 53 table raw data and converting to binary

data format automaticallytable_load(file_path, file_name) Loading healthcare big data and converting to binary data format

automaticallytable_keep(dataset, [var1, var2, var3], file_name) Keeping columns using designated variablestable_rename(dataset, {old_var: new_var}, file_name) Renaming name of columns using designated variablesdrop_duplicates(dataset, var, file_name) Removing duplicated rows using designated variables table_sort(dataset, var, current_file_name, new_file_name) Sorting dataset using designated variablestable_merge(dataset1, dataset2, var, how, file_name) Merging two different tables using designated columnstable_concat(dataset1, dataset2, file_name) Concatenating two different tables table_query(dataset, var, file_name) Searching values in datasettable_groupby(dataset, var, file_name) GroupBy function table_value_counts(dataset, var) Calculate number of frequency using designated variablestable_value_sum(dataset, var) Calculate basic statistics using designated variablesget_table_info(dataset) Checking data contents in designated datasetstable_save(dataset, type, file_name) Saving data to designated file format (i.e. csv, xls, dta data format)

Page 5: 한국보건의료기술평가학회 - JoHTA MLComm2$0602015005.pdf · 2015. 7. 14. · 통해, 보건의료산업 관련 분야에서 의료기관 평가 인증정보, 의약품

HD Park, et al.

http://www.kahta.or.kr 39

blob/master/v0.1.2) 공개되어 있으며, 프로그램의 성능 향상

을 위해 누구나 자유롭게 프로그램 소스를 수정 및 배포하는

것이 가능하다.

BigPy 프로그램을 활용한 건강보험심사평가연구원 환자표본자료 분석 사례

BigPy 프로그램의 실행

본 프로그램을 실행시키기 위해서는 파이썬 인터프리터

(Python interpreter)가 사용자 컴퓨터에 설치되어 있어야

한다. 파이썬 인터프리터를 실행시킨 후, 본 프로그램을 호

출하면, 프로그램이 실행된다(그림 5).

건강보험심사평가원 환자표본자료 불러오기

2011년 환자표본자료의 경우 표 2와 같이 한 건의 청구서

가 명세서 일반 내역, 진료내역, 수진자 상병내역, 처방전 교

부 상세 내역과 같이 각각의 데이터 셋으로 구분되어 있으며,

이들 데이터는 행과 열로 구성된 테이블 형태의 정형 데이터이

다. 환자표본자료는 텍스트 형태의 원시 자료로 제공되고 있으

며, 빅데이터 분석을 위해서 우선 원시 자료를 읽어 들여 추후

분석을 위한 파일로 변환하는 작업이 필요하다. 본 프로그램

에는 데이터베이스 형식의 정형 데이터를 읽어들여 HDF5 파

일로 자동 변환 시켜주는 table_load 함수가 포함되어 있다.

table_load 함수를 사용하여 원시 환자표본자료 데이터를 읽

어 들인 결과는 다음과 같다(그림 6).

데이터 셋에서 분석에 필요한 변수만 지정

환자표본자료에는 ‘샘플 추출확률’ 및 ‘샘플 가중치’ 등과 같

은 실제 자료 분석과는 관계 없는 변수들이 포함되어 있다. 데

이터 셋의 용량이 클수록 분석에 소요되는 시간은 증가되며, Fig. 5. Execution of BigPy Program.

Fig. 6. Demonstration of Data Load Function in BigPy.

▶ 사용법

▶ 실행 결과(20 테이블)

Page 6: 한국보건의료기술평가학회 - JoHTA MLComm2$0602015005.pdf · 2015. 7. 14. · 통해, 보건의료산업 관련 분야에서 의료기관 평가 인증정보, 의약품

Healthcare Big Data Analysis

40 J Health Tech Assess 2015;3(1):35-47

특히 데이터 셋의 정렬이나 병합과정에는 많은 시간이 소모

되기 때문에 연구주제와 관련 없는 변수를 굳이 데이터 셋에

포함시킬 필요는 없다. 이럴 경우 table_keep 함수를 이용해

환자표본자료 데이터 셋에서 필요한 변수만 선별적으로 취할

수 있다. table_keep 함수를 사용하여 환자표본자료 중 필요한

변수만 지정하는 방법과 그 실행 결과는 다음과 같다(그림 7).

데이터 셋의 변수명을 기준으로 데이터 정렬

환자표본자료 분석시 수진자고유번호키(변수명: NO)나

명세서 연결키(변수명: key) 등을 기준으로 전체 데이터 셋

을 정렬하는 작업이 필요하다. 본 프로그램에는 환자표본자

료와 같은 정형 테이블 형태의 자료에 대해 지정된 변수명을

기준으로 전체 데이터 셋을 정렬하는 table_sort 함수를 제공

하고 있으며 실행 방법과 그 결과는 다음과 같다(그림 8).

Fig. 7. Demonstration of Data Keep Function in BigPy.

▶ 사용법

▶ 실행 결과(일부)

Fig. 8. Demonstration of Data Sort Function in BigPy.

▶ 사용법

▶ 실행 결과

Page 7: 한국보건의료기술평가학회 - JoHTA MLComm2$0602015005.pdf · 2015. 7. 14. · 통해, 보건의료산업 관련 분야에서 의료기관 평가 인증정보, 의약품

HD Park, et al.

http://www.kahta.or.kr 41

데이터 셋 중복제거

환자표본자료 분석시 동일한 수진자고유번호키 또는 명

세서 연결키를 기준으로 중복되는 데이터를 제거할 필요가

있다. 본 프로그램의 drop_duplicates 함수를 사용해 이러한

중복 데이터를 제거할 수 있으며, 실행 방법 및 결과는 아래

와 같다(그림 9).

변수명을 기준으로 데이터 셋 병합

환자표본자료 분석시, 수진자고유번호키 또는 명세서 연

결키 등을 기준으로 서로 다른 데이터 셋을 병합해야 하는

경우가 발생한다. 본 프로그램에서 환자표본자료 중 지정된

변수명을 기준으로 데이터 셋을 병합하는 기능을 제공하는

함수인 table_merge 및 table_concat가 있으며 실행 방법과

결과는 다음과 같다(그림 10).

데이터 셋의 변수명 변경

환자표본자료 데이터 셋의 변수명칭을 변경하고 싶을 때,

본 프로그램에 포함된 table_rename 함수를 사용하여 변수

명을 변경할 수 있다. 환자표본자료의 변수명을 변경하는 방

법과 그 결과는 다음과 같다(그림 11).

Fig. 9. Demonstration of Duplicated Data Drop Function in BigPy.

▶ 사용법

▶ 실행 결과

Fig. 10. Demonstration of Data Merge Function in BigPy.

▶ 사용법

▶ 실행 결과

Page 8: 한국보건의료기술평가학회 - JoHTA MLComm2$0602015005.pdf · 2015. 7. 14. · 통해, 보건의료산업 관련 분야에서 의료기관 평가 인증정보, 의약품

Healthcare Big Data Analysis

42 J Health Tech Assess 2015;3(1):35-47

변수명에 포함된 특정 값의 빈도 확인

환자표본자료 데이터 셋에 포함된 변수들 별로 특정 값의

빈도수를 확인해야 할 경우가 있다. 지정된 열에 포함된 특

정 값의 빈도수 확인은 본 프로그램의 table_value_counts

함수를 통해 확인할 수 있으며 그 사용방법과 결과는 다음

과 같다(그림 12).

변수명에 포함된 값의 기초 통계량 계산

환자표본자료 데이터 셋의 지정된 변수명에 포함된 값의

기초통계량을 계산하고 싶을 때, 본 프로그램에 포함된 ta-ble_value_sum 함수를 사용하여 데이터의 총합 및 기초 통

계량 값을 확인할 수 있다. 환자표본자료의 지정된 변수명에

포함된 데이터의 총 합을 계산하는 방법과 그 결과는 아래

와 같다(그림 13).

고찰 및 결론

Das 등19)은 R과 하둡을 연동하여 인-메모리(in-memory)

방식으로 빅데이터에 대한 통계분석을 할 수 있는 오픈 소

스 형태의 프로그램을 발표하였다. 하둡과 같은 분산-네트

워크 기술은 페타 바이트(1015 bytes) 이상의 데이터 처리가

가능하지만, 데이터 분석 효용도가 일반적인 통계 프로그램

들에 비해 상대적으로 뒤떨어진다. 반대로 R과 같은 통계

프로그램은 데이터 처리 및 통계분석 기능은 뛰어나지만 처

Fig. 11. Demonstration of Data Re-name Function in BigPy.

▶ 함수 사용방법 및 실행 결과

▶ 실행 결과

Fig. 12. Demonstration of Data Frequency Analysis Function in BigPy.

▶ 함수 사용방법 및 실행 결과

Fig. 13. Demonstration of Basic Statistics Calculation Function in BigPy.

▶ 함수 사용방법 및 실행 결과

Page 9: 한국보건의료기술평가학회 - JoHTA MLComm2$0602015005.pdf · 2015. 7. 14. · 통해, 보건의료산업 관련 분야에서 의료기관 평가 인증정보, 의약품

HD Park, et al.

http://www.kahta.or.kr 43

리할 수 있는 데이터 용량은 메모리 범위 내로 제한되는 단

점이 존재하였다. 이 둘의 단점을 보완하여 빅데이터의 경우

에도 인-메모리(in-memory) 방식의 연산을 지원하는 초기

형태의 프로그램을 발표하였다. Taylor20)는 현재 바이오인

포매틱스 분야에 있어 하둡을 통한 빅데이터 분석 사례들을

소개하였고, 차세대 DNA 시퀀싱(DNA Sequencing)을 위한

도구로써 하둡의 활용성과 비용효과성을 긍정적으로 평가

하였다. Baasal 등21)은 기존 하둡 시스템의 자원 사용 비효율

성을 개선하여 보건의료 빅데이터를 분석하는 새로운 방법

을 소개하였다. 동적 하둡 슬롯 배정 방식이라 불리는 개선된

보건의료 빅데이터 분석기술을 통해 임상 현장에서의 의사

결정을 보완할 수 있을 것으로 예상하였다. Barreto 등22)은 분

산-네트워크 시스템을 활용하여 실제 브라질 건강보험 시

스템과 사회복지 데이터베이스를 연계하여 저소득층 지원

프로그램을 위한 기본 역학 및 유병률 계산에 대한 활용 사

례를 소개하였다.

이처럼, 현재 보건의료 빅데이터를 분석하기 위한 오픈 소

스 형태의 프로그램들은 주로 분산-네트워크 기술과 통계

프로그램을 연동시켜 빅데이터가 가지는 물리적 한계를 극

복하는 형태가 주를 이루고 있다. 이러한 분산-네트워크 방

식의 프로그램들은 가뿐히 페타 바이트 이상의 빅데이터를

분석할 수 있으나, 네트워크 및 컴퓨터 프로그래밍 언어에 대

한 높은 수준의 지식을 요구한다. 반면에 BigPy 프로그램은

수십~수백 기가 바이트 크기의 정형 보건의료 빅데이터 분

석에 적합하며, 분산-네트워크와 같은 별도의 컴퓨터 관련

지식을 요하지 않는다. 또한 프로그램 사용법이 직관적으로

구성되어 있어 프로그래밍 언어에 대한 사전 지식 없이도 곧

바로 데이터 분석이 가능하다. 단, BigPy 프로그램으로는 데

이터 형식이 미리 정의되지 않은 비정형 형태의 빅데이터 분

석 작업은 적합하지 않으며, 별도의 통계분석 기능 또한 제공

되지 않는다.

보건의료 분야에서 빅데이터 활성화를 통해 의료비 절감,

의료 질 향상 및 의료 서비스 개선과 같은 보건의료 혁신의

중심 역할을 담당할 것으로 예상되고 있다. 기하급수적으로

증가되는 보건의료분야 빅데이터 이용을 활성화하기 위해서

는 빅데이터를 분석 및 처리하는 기술에 대한 논의가 필수적

이며, 동시에 이러한 데이터 분석 기술에 대한 접근성이 낮

아져 소수의 전문가가 아닌 여러 다양한 배경을 가진 다수의

데이터 사이언티스트 육성 또한 꾀할 수 있어야 한다. BigPy

프로그램은 오픈 소스 프로그램으로서 무료로 사용이 가능

하며, 간편한 사용법으로 인해 보건의료 빅데이터 분석에 대

한 접근성과 이해도를 높일수 있도록 개발되었다. BigPy 프

로그램은 향후 보건의료 빅데이터 이용 활성화를 위한 하나

의 도구로 사용될 수 있을 것으로 기대된다.

Acknowledgments본 연구를 위해 건강보험심사평가원의 환자표본자료(HIRA-

NPS-2011-0080)가 사용되었습니다.

REFERENCES1) Lee JH, Je MK, Cho MJ, Son HS. Big Data Application Trend in

Healthcare Sector. KICS (The Korean Institute of Communications and Information Sciences) 2014;32:63-75.

2) Song TM. Big-Data Trend in Korean Healthcare and Application Re-search. STEPI (Science & Technology Policy Institute) 2013;192:56-73.

3) Srinivasan U, Arunasalam B. Leveraging big data analytics to reduce healthcare costs. IT Professional 2013;15:21-28.

4) Raghupathi W, Raghupathi V. Big data analytics in healthcare: prom-ise and potential. Health Inf Sci Syst 2014;2:3.

5) Feldman B, Martin EM, Skotnes T. Big data in healthcare hype and hope. Dr. Bonnie 360: Business Development for Digital Health. Available from: http://thegrcbluebook.com/wp-content/uploads/2013/02/107279699-Big-Data-in-Healthcare-Hype-and-Hope1.pdf. Accessed March 30, 2015.

6) Ko MJ, Lim TH. Use of big data for evidence-based healthcare. J Korean Med Assoc 2014;57:413-418.

7) Groves P, Kayyali B, Knott D, Kuiken SV. The ‘big data’ revolution in healthcare. New York: McKinsey&Company;2013.

8) Song TM. Efficient Management of Big Data on Health & Welfare. Health & Welfare Forum 2012;193:68-76.

9) HIRA. Structure and Application Method for National Patient Sam-ple Data;2009.

10) Kim RY. Introduction to Health Insurance Review & Assessment Ser-vice-National Patient Sample (HIRA-NPS). HIRA Policy Update 2012; 6:33-47.

11) HIRA. SAS Manual for HIRA Claims Data Analysis;2009.12) Lee JY, Kim KH, Lee JS. National Health Insurance Service. Estab-

lishment of Sample-Cohort DB using NHIS Database;2014.13) Korean Governments Version 3.0 Plan in 2014. Available from:

http://www.gov30.or.kr/.14) White T. Hadoop: the definitive guide. USA: O’Reilly Media, Inc.;

2009.15) Python program language. Available from: https://www.python.org/.

Accessed March 30, 2015.16) Pandas-Python Data Analysis Library. Available from: http://pandas.

pydata.org/. Accessed March 30, 2015.17) HIRA. Workshop for HIRA Claims Data Analysis. 2013.11.22.18) The HDF Group. Available from: http://www.hdfgroup.org/HDF5/.

Accessed March 30, 2015.19) Das S, Sismanis Y, Beyer KS, Gemulla R, Haas PJ, McPherson J.

Ricardo: integrating R and Hadoop. Proceedings of the 2010 ACM SIGMOD International Conference on Management of data. New York: ACM;2010. pp.987-998.

20) Taylor RC. An overview of the Hadoop/MapReduce/HBase frame-work and its current applications in bioinformatics. BMC Bioinfor-matics 2010;11 Suppl 12:S1.

21) Baasal A, Deshpande A, Ghare P, Dhikale S, Bodkhe B. Healthcare Data Analysis using Dynamic Slot Allocation in Hadoop. IJRTE 2014;3:15-18.

22) Barreto M, Pita R, Pinto C, Silva M, Melo P, Rasella D. A Spark-based workflow for probabilistic record linkage of healthcare data. pp.1-10. Available from: http://ceur-ws.org/Vol-1330/paper-04.pdf. Accessed March 30, 2015.

Page 10: 한국보건의료기술평가학회 - JoHTA MLComm2$0602015005.pdf · 2015. 7. 14. · 통해, 보건의료산업 관련 분야에서 의료기관 평가 인증정보, 의약품

Healthcare Big Data Analysis

44 J Health Tech Assess 2015;3(1):35-47

- 부 록 -

Supplement Table 1. Comparison of SAS and BigPy code for Basic Data Analysis

Function SAS Code BigPy CodeHIRA-NPS 20 Dataset load

libname a ‘file_path’;options compress=yes; %macro infile20(d1,d2);filename an(&d1);data &d2;infile andlm=’,’ lrecl=3261 truncover dsd firstobs=2;input

strata FOM_CD $ PAT_AGE SEX_TP_CD $ agg SelectionProb SamplingWeight DGRSLT_TP_CD $ DGSBJT_CD $ DMD_DRG_NO $ DMD_TP_CD $ DMD_TY_CD $ FST_IPAT_DD $ INSUP_CD $ IPAT_ARIV_PTH_TP_CD $ OINJ_TP_CD $ RECU_DDCNT RECU_FR_DD $ RVD_ADDC_RT RVD_CT_TAMT RVD_INSUP_BRAMT RVD_MRI_TAMT RVD_RPE_TAMT RVD_SLF_BRAMT SOPR_YN $ SPC_SYM_TP_CD $ VST_DDCNT MAIDCL_CD $ RECU_TO_DD $ RVSN_AF_DRG_NO $ EXP_TP_CD $ RADT_DIAG_YN $ RADT_TRET_YN $ NO YNO MSICK_CD $ SSICK_CD $ key ;

RUN;%mend;%let NPS_2011_20=

table20_load(file_path, file_name)

Page 11: 한국보건의료기술평가학회 - JoHTA MLComm2$0602015005.pdf · 2015. 7. 14. · 통해, 보건의료산업 관련 분야에서 의료기관 평가 인증정보, 의약품

HD Park, et al.

http://www.kahta.or.kr 45

Supplement Table 1. Comparison of SAS and BigPy code for Basic Data Analysis (continued)

Function SAS Code BigPy Code‘ file_path\sample_2011_20_01.txt’ ‘ file_path\sample_2011_20_02.txt’ ‘ file_path\sample_2011_20_03.txt’ ‘ file_path\sample_2011_20_04.txt’ ;%infile20(&NPS_2011_20, a.NPS_2011_20);run;

HIRA-NPS 30 Table Data Load

libname a’ file_path’;options compress=yes; %macro infile30(d1,d2);filename an(&d1);data &d2;infile andlm=’,’ lrecl=3261 truncover dsd firstobs=2;input

key CZ_CD $ ITEM_CD $ DIV_TY_CD $ DIV_CD $ I_II_TP_CD $ UNPRC DD_MDQTY_OR_EXEC_FQ TOT_MDC_DDCNT_OR_EXEC_FQ AMT LN_NO GNL_NM_CD_8 $ ;

RUN;%mend;%let NPS_2011_30=‘ file_path\sample_2011_30_01.txt’ ‘ file_path\sample_2011_30_02.txt’ ‘ file_path\sample_2011_30_03.txt’ ‘ file_path\sample_2011_30_04.txt’ ‘ file_path\sample_2011_30_05.txt’ ‘ file_path\sample_2011_30_06.txt’ ‘ file_path\sample_2011_30_07.txt’ ;%infile30(&NPS_2011_30, a.NPS_2011_30);run;

table30_load(file_path, file_name)

HIRA-NPS 40 Table Data Load

libname a’file_path’;options compress=yes; %macro infile40(d1,d2);filename an(&d1);data &d2;infile andlm=’,’ lrecl=3261 truncover dsd firstobs=2;input

key SNO SICK_DGSBJT_CD $ DMD_SICK_SYM $ DMD_DGSBJT_CD $ ;

RUN;%mend;%let NPS_2011_40=‘ file_path\sample_2011_40_01.txt’ ‘ file_path\sample_2011_40_02.txt’ ;%infile40(&NPS_2011_40, a.NPS_2011_40);run;

table40_load(file_path, file_name)

Page 12: 한국보건의료기술평가학회 - JoHTA MLComm2$0602015005.pdf · 2015. 7. 14. · 통해, 보건의료산업 관련 분야에서 의료기관 평가 인증정보, 의약품

Healthcare Big Data Analysis

46 J Health Tech Assess 2015;3(1):35-47

Supplement Table 1. Comparison of SAS and BigPy code for Basic Data Analysis (continued)

Function SAS Code BigPy CodeHIRA-NPS 53 Table Data Load

libname a’ file_path’;options compress=yes; %macro infile53(d1,d2);filename an(&d1);data &d2;infile andlm=’,’ lrecl=3261 truncover dsd firstobs=2;input

key LN_NO UNPRC FQ1_MDQTY DD1_MDQTY TOT_MDC_DDCNT_OR_EXEC_FQ AMT GNL_NM_CD_8 $ ;

RUN;%mend;%let NPS_2011_53=‘ file_path\sample_2011_53_01.txt’ ‘ file_path \sample_2011_53_02.txt’ ‘ file_path\sample_2011_53_03.txt’ ; %infile53(&NPS_2011_53, a.NPS_2011_53);run;

table53_load(file_path, file_name)

HIRA-NPS Hospital Information Data Load

libname a’ file_path’;options compress=yes; %macro infile_ykiho(d1,d2);filename an(&d1);data &d2;infile andlm=’,’ lrecl=3261 truncover dsd firstobs=2;input

YNO y_jong $ org_df $ ct mri pet date $ zip_sd $ bed_grade fer_100bed_doctor fer_100bed_d_dental fer_100bed_d_oriental fer_100bed_nurse ;

RUN;%mend;%let NPS_2011_ykiho=‘’ file_path\sample_all_2011_last_ykiho.txt’ ;%infile_ykiho(&NPS_2011_ykiho, a.NPS_2011_ykiho);run;

table_load(file_path, file_name)

Dataset keep data lib_name.new_dataset; set lib_name.dataset; keep var1 var2 var3 …;

run;

table_keep(dataset, [var1, var2, var3], file_name)

Dataset rename

data lib_name.new_dataset; set lib_name.dataset; rename old_var=new_var;

run;

table_rename(dataset, {old_var: new_var}, file_name)

Dataset sort Proc sort data=data lib_name.dataset out=new_dataset;

by var1 … var(n);run;

table_sort(dataset, [var1, …, var(n)], file_name)

Page 13: 한국보건의료기술평가학회 - JoHTA MLComm2$0602015005.pdf · 2015. 7. 14. · 통해, 보건의료산업 관련 분야에서 의료기관 평가 인증정보, 의약품

HD Park, et al.

http://www.kahta.or.kr 47

Supplement Table 1. Comparison of SAS and BigPy code for Basic Data Analysis (continued)

Function SAS Code BigPy CodeDataset merge

data lib_name.new_dataset; merge lib_name.dataset1 lib_name.dataset2; by var;

run;

table_merge(dataset1, dataset2, var, how, file_name)