BLOG
Amazon Comprehend는 기계 학습을 사용하여 구조화되지 않은 텍스트에서 통찰력을 찾는 자연어 처리(NLP) 서비스이며, 기계 학습 경험이 없어도 사용이 매우 쉽습니다. 문서를 고유한 범주로 구성하기 위해 커스텀 정의 문서 분류기를 작성하거나 특정 용어의 텍스트를 분석하는 커스텀 엔티티 유형과 같이 특정 사용 예시에 맞게 커스터마이즈할 수 있습니다. 그러나 의료 용어는 의료 분야에 따라 매우 복잡하고 구체적일 수 있습니다.
이러한 이유로 AWS는 작년에 HIPAA 적격 자연 언어 처리 서비스인 Amazon Comprehend Medical가 도입 하여, 비 구조화 텍스트에서 관련 의료 정보를 쉽게 추출할 수 있게 되었습니다. Comprehend Medical을 사용하면 의사의 메모, 임상 시험 보고서 및 환자 건강 기록과 같은 다양한 출처에서 의료 상태, 약물, 복용량, 강도 및 빈도와 같은 정보를 빠르고 정확하게 수집할 수 있습니다.
최근(2019년 12월 16일) AWS는 Comprehend Medical에서 추출한 정보를 의료 온톨로지에 연결하는 기능을 추가했습니다.
온톨로지는 도메인의 선언적 모델을 제공합니다. 이 모델에서는 도메인에 존재하는 개념, 그 속성 및 도메인 간의 관계를 정의하여 나타냅니다. 일반적으로 지식 기반으로 표시되며 지식을 사용하거나 공유해야 하는 애플리케이션에서 사용할 수 있습니다. 건강 정보학 내에서의 온톨로지는 건강 관련 영역에 대한 정식 설명입니다.
Comprehend Medical이 지원하는 온톨로지는 다음과 같습니다.
- ICD-10-CM은 의학적 상태를 개체로 식별하고 해당 개체의 속성으로써 진단, 중증도 및 해부학적 구별과 같은 관련 정보를 연결합니다. 이것은 집단의 건강 분석 및 의료 서비스를 기반으로 보험 회사로부터 지불을 받는 데 매우 유용한 진단 코드 세트입니다.
- RxNorm은 약물을 엔티티로 식별하고 복용량, 빈도, 강도 및 투여 경로와 같은 속성을 해당 엔티티로 연결합니다. 의료 서비스 제공 업체는 이러한 개념을 사용하여 약물 조정과 같은 사용 예를 지원합니다. 이는 환자가 복용하는 모든 약물 중에서 가장 정확한 목록을 작성하는 프로세스입니다.
각 온톨로지에 대해 Comprehend Medical은 잠재적으로 일치하는 순위 목록을 반환합니다. 신뢰 점수를 사용하여 어떤 일치가 적합한 지 또는 추가 검토가 필요한지를 결정할 수 있습니다. 이것이 어떻게 작동하는지 예시로 살펴 봅시다.
온톨로지 링크를 사용
Comprehend Medical console에서는 먼저 비 구조화로 시작하여, 의사들은 다음과 같이 메모를 입력 합니다.
처음에는 Comprehend Medical에서 이미 사용 가능한 일부 기능을 사용하여 의료 및 보호 된 건강 정보 (PHI) 엔티티를 감지합니다.
인식된 개체들 (자세한 내용은 이 게시글을 참고) 중에 몇 가지 증상과 약물이 있습니다. 약물은 복제약 또는 오리지널 약으로 인식됩니다. 이러한 엔티티 중 일부를 보다 구체적인 개념에 연결하는 방법을 살펴 보겠습니다.
새로운 기능을 사용하여 해당 엔티티를 의약품의 RxNorm 컨셉에 연결합니다.
본문에서 약물을 언급하는 부분만 감지됩니다. 답변의 세부 사항에서 더 많은 정보가 확인 됩니다. 예를 들어, 감지된 약물 중 하나를 살펴 보겠습니다.
- “클로니딘”이라는 용어의 처음 출현(입력 텍스트 위의 두번째 행)은 RxNorm 온톨로지의 일반적인 개념(아래 이미지의 좌측)에 연결됩니다.
- “클로니딘”이라는 용어의 2번째 출현(상기 입력 텍스트에서 네 번째 줄)에는 명확한 용량이 포함되어, 용량을 포함하는 것 보다 규칙적인 형식 (아래 그림에서 우측)에 연결 되어 있습니다.
ICD-10-CM 개념을 사용하여 의학적 상태를 조사하기 위해 다음과 같이 다르게 입력합니다.
증상 및 진단 등 검출된 개체를 특정 개념에 연결하는 것도 아이디어입니다.
예상대로 진단 및 증상은 엔티티로 인식됩니다. 자세한 결과에서 이러한 엔티티는 ICD-10-CM 온톨로지의 의학적 상태와 연결됩니다. 예를 들어, 입력 텍스트에 설명 된 두 가지 주요 진단은 상위 결과이며 온톨로지의 특정 개념은 각각 자체 점수를 가진 Comprehend Medical에 의해 추론됩니다.
실제 가동 환경에서는 API를 통해 Comprehend Medical을 사용하여 이러한 기능을 처리 워크 플로에 통합할 수 있습니다. 위의 모든 스크린 샷은 API에 의해 반환된 구조화 된 정보를 JSON 형식의 시각적으로 렌더링합니다. 예를 들어, 이것은 약물을 감지 한 결과입니다 (RxNorm 개념)
{
“Entities”: [
{
“Id”: 0,
“Text”: “Clonidine”,
“Category”: “MEDICATION”,
“Type”: “GENERIC_NAME”,
“Score”: 0.9933062195777893,
“BeginOffset”: 83,
“EndOffset”: 92,
“Attributes”: [],
“Traits”: [],
“RxNormConcepts”: [
{
“Description”: “Clonidine”,
“Code”: “2599”,
“Score”: 0.9148101806640625
},
{
“Description”: “168 HR Clonidine 0.00417 MG/HR Transdermal System”,
“Code”: “998671”,
“Score”: 0.8215734958648682
},
{
“Description”: “Clonidine Hydrochloride 0.025 MG Oral Tablet”,
“Code”: “892791”,
“Score”: 0.7519310116767883
},
{
“Description”: “10 ML Clonidine Hydrochloride 0.5 MG/ML Injection”,
“Code”: “884225”,
“Score”: 0.7171697020530701
},
{
“Description”: “Clonidine Hydrochloride 0.2 MG Oral Tablet”,
“Code”: “884185”,
“Score”: 0.6776907444000244
}
]
},
{
“Id”: 1,
“Text”: “Vyvanse”,
“Category”: “MEDICATION”,
“Type”: “BRAND_NAME”,
“Score”: 0.9995427131652832,
“BeginOffset”: 148,
“EndOffset”: 155,
“Attributes”: [
{
“Type”: “DOSAGE”,
“Score”: 0.9910679459571838,
“RelationshipScore”: 0.9999822378158569,
“Id”: 2,
“BeginOffset”: 156,
“EndOffset”: 162,
“Text”: “50 mgs”,
“Traits”: []
},
{
“Type”: “ROUTE_OR_MODE”,
“Score”: 0.9997182488441467,
“RelationshipScore”: 0.9993833303451538,
“Id”: 3,
“BeginOffset”: 163,
“EndOffset”: 165,
“Text”: “po”,
“Traits”: []
},
{
“Type”: “FREQUENCY”,
“Score”: 0.983681321144104,
“RelationshipScore”: 0.9999642372131348,
“Id”: 4,
“BeginOffset”: 166,
“EndOffset”: 184,
“Text”: “at breakfast daily”,
“Traits”: []
}
],
“Traits”: [],
“RxNormConcepts”: [
{
“Description”: “lisdexamfetamine dimesylate 50 MG Oral Capsule [Vyvanse]”,
“Code”: “854852”,
“Score”: 0.8883932828903198
},
{
“Description”: “lisdexamfetamine dimesylate 50 MG Chewable Tablet [Vyvanse]”,
“Code”: “1871469”,
“Score”: 0.7482635378837585
},
{
“Description”: “Vyvanse”,
“Code”: “711043”,
“Score”: 0.7041242122650146
},
{
“Description”: “lisdexamfetamine dimesylate 70 MG Oral Capsule [Vyvanse]”,
“Code”: “854844”,
“Score”: 0.23675969243049622
},
{
“Description”: “lisdexamfetamine dimesylate 60 MG Oral Capsule [Vyvanse]”,
“Code”: “854848”,
“Score”: 0.14077001810073853
}
]
},
{
“Id”: 5,
“Text”: “Clonidine”,
“Category”: “MEDICATION”,
“Type”: “GENERIC_NAME”,
“Score”: 0.9982216954231262,
“BeginOffset”: 199,
“EndOffset”: 208,
“Attributes”: [
{
“Type”: “STRENGTH”,
“Score”: 0.7696017026901245,
“RelationshipScore”: 0.9999960660934448,
“Id”: 6,
“BeginOffset”: 209,
“EndOffset”: 216,
“Text”: “0.2 mgs”,
“Traits”: []
},
{
“Type”: “DOSAGE”,
“Score”: 0.777644693851471,
“RelationshipScore”: 0.9999927282333374,
“Id”: 7,
“BeginOffset”: 220,
“EndOffset”: 236,
“Text”: “1 and 1 / 2 tabs”,
“Traits”: []
},
{
“Type”: “ROUTE_OR_MODE”,
“Score”: 0.9981689453125,
“RelationshipScore”: 0.999950647354126,
“Id”: 8,
“BeginOffset”: 237,
“EndOffset”: 239,
“Text”: “po”,
“Traits”: []
},
{
“Type”: “FREQUENCY”,
“Score”: 0.99753737449646,
“RelationshipScore”: 0.9999889135360718,
“Id”: 9,
“BeginOffset”: 240,
“EndOffset”: 243,
“Text”: “qhs”,
“Traits”: []
}
],
“Traits”: [],
“RxNormConcepts”: [
{
“Description”: “Clonidine Hydrochloride 0.2 MG Oral Tablet”,
“Code”: “884185”,
“Score”: 0.9600071907043457
},
{
“Description”: “Clonidine Hydrochloride 0.025 MG Oral Tablet”,
“Code”: “892791”,
“Score”: 0.8955953121185303
},
{
“Description”: “24 HR Clonidine Hydrochloride 0.2 MG Extended Release Oral Tablet”,
“Code”: “885880”,
“Score”: 0.8706559538841248
},
{
“Description”: “12 HR Clonidine Hydrochloride 0.2 MG Extended Release Oral Tablet”,
“Code”: “1013937”,
“Score”: 0.786146879196167
},
{
“Description”: “Chlorthalidone 15 MG / Clonidine Hydrochloride 0.2 MG Oral Tablet”,
“Code”: “884198”,
“Score”: 0.601354718208313
}
]
}
],
“ModelVersion”: “0.0.0”
}
마찬가지로, 이것은 병증을 감지할 때 출력됩니다 (ICD-10-CM 개념)
{
“Entities”: [
{
“Id”: 0,
“Text”: “coronary artery disease”,
“Category”: “MEDICAL_CONDITION”,
“Type”: “DX_NAME”,
“Score”: 0.9933860898017883,
“BeginOffset”: 90,
“EndOffset”: 113,
“Attributes”: [],
“Traits”: [
{
“Name”: “DIAGNOSIS”,
“Score”: 0.9682672023773193
}
],
“ICD10CMConcepts”: [
{
“Description”: “Atherosclerotic heart disease of native coronary artery without angina pectoris”,
“Code”: “I25.10”,
“Score”: 0.8199513554573059
},
{
“Description”: “Atherosclerotic heart disease of native coronary artery”,
“Code”: “I25.1”,
“Score”: 0.4950370192527771
},
{
“Description”: “Old myocardial infarction”,
“Code”: “I25.2”,
“Score”: 0.18753206729888916
},
{
“Description”: “Atherosclerotic heart disease of native coronary artery with unstable angina pectoris”,
“Code”: “I25.110”,
“Score”: 0.16535982489585876
},
{
“Description”: “Atherosclerotic heart disease of native coronary artery with unspecified angina pectoris”,
“Code”: “I25.119”,
“Score”: 0.15222692489624023
}
]
},
{
“Id”: 2,
“Text”: “atrial fibrillation”,
“Category”: “MEDICAL_CONDITION”,
“Type”: “DX_NAME”,
“Score”: 0.9923409223556519,
“BeginOffset”: 116,
“EndOffset”: 135,
“Attributes”: [],
“Traits”: [
{
“Name”: “DIAGNOSIS”,
“Score”: 0.9708861708641052
}
],
“ICD10CMConcepts”: [
{
“Description”: “Unspecified atrial fibrillation”,
“Code”: “I48.91”,
“Score”: 0.7011875510215759
},
{
“Description”: “Chronic atrial fibrillation”,
“Code”: “I48.2”,
“Score”: 0.28612759709358215
},
{
“Description”: “Paroxysmal atrial fibrillation”,
“Code”: “I48.0”,
“Score”: 0.21157972514629364
},
{
“Description”: “Persistent atrial fibrillation”,
“Code”: “I48.1”,
“Score”: 0.16996538639068604
},
{
“Description”: “Atrial premature depolarization”,
“Code”: “I49.1”,
“Score”: 0.16715925931930542
}
]
},
{
“Id”: 3,
“Text”: “hypertension”,
“Category”: “MEDICAL_CONDITION”,
“Type”: “DX_NAME”,
“Score”: 0.9993137121200562,
“BeginOffset”: 138,
“EndOffset”: 150,
“Attributes”: [],
“Traits”: [
{
“Name”: “DIAGNOSIS”,
“Score”: 0.9734011888504028
}
],
“ICD10CMConcepts”: [
{
“Description”: “Essential (primary) hypertension”,
“Code”: “I10”,
“Score”: 0.6827990412712097
},
{
“Description”: “Hypertensive heart disease without heart failure”,
“Code”: “I11.9”,
“Score”: 0.09846580773591995
},
{
“Description”: “Hypertensive heart disease with heart failure”,
“Code”: “I11.0”,
“Score”: 0.09182810038328171
},
{
“Description”: “Pulmonary hypertension, unspecified”,
“Code”: “I27.20”,
“Score”: 0.0866364985704422
},
{
“Description”: “Primary pulmonary hypertension”,
“Code”: “I27.0”,
“Score”: 0.07662317156791687
}
]
},
{
“Id”: 4,
“Text”: “hyperlipidemia”,
“Category”: “MEDICAL_CONDITION”,
“Type”: “DX_NAME”,
“Score”: 0.9998835325241089,
“BeginOffset”: 153,
“EndOffset”: 167,
“Attributes”: [],
“Traits”: [
{
“Name”: “DIAGNOSIS”,
“Score”: 0.9702492356300354
}
],
“ICD10CMConcepts”: [
{
“Description”: “Hyperlipidemia, unspecified”,
“Code”: “E78.5”,
“Score”: 0.8378056883811951
},
{
“Description”: “Disorders of lipoprotein metabolism and other lipidemias”,
“Code”: “E78”,
“Score”: 0.20186281204223633
},
{
“Description”: “Lipid storage disorder, unspecified”,
“Code”: “E75.6”,
“Score”: 0.18514418601989746
},
{
“Description”: “Pure hyperglyceridemia”,
“Code”: “E78.1”,
“Score”: 0.1438658982515335
},
{
“Description”: “Other hyperlipidemia”,
“Code”: “E78.49”,
“Score”: 0.13983778655529022
}
]
},
{
“Id”: 5,
“Text”: “chills”,
“Category”: “MEDICAL_CONDITION”,
“Type”: “DX_NAME”,
“Score”: 0.9989762306213379,
“BeginOffset”: 211,
“EndOffset”: 217,
“Attributes”: [],
“Traits”: [
{
“Name”: “SYMPTOM”,
“Score”: 0.9510533213615417
}
],
“ICD10CMConcepts”: [
{
“Description”: “Chills (without fever)”,
“Code”: “R68.83”,
“Score”: 0.7460958361625671
},
{
“Description”: “Fever, unspecified”,
“Code”: “R50.9”,
“Score”: 0.11848161369562149
},
{
“Description”: “Typhus fever, unspecified”,
“Code”: “A75.9”,
“Score”: 0.07497859001159668
},
{
“Description”: “Neutropenia, unspecified”,
“Code”: “D70.9”,
“Score”: 0.07332006841897964
},
{
“Description”: “Lassa fever”,
“Code”: “A96.2”,
“Score”: 0.0721040666103363
}
]
},
{
“Id”: 6,
“Text”: “nausea”,
“Category”: “MEDICAL_CONDITION”,
“Type”: “DX_NAME”,
“Score”: 0.9993392825126648,
“BeginOffset”: 220,
“EndOffset”: 226,
“Attributes”: [],
“Traits”: [
{
“Name”: “SYMPTOM”,
“Score”: 0.9175007939338684
}
],
“ICD10CMConcepts”: [
{
“Description”: “Nausea”,
“Code”: “R11.0”,
“Score”: 0.7333012819290161
},
{
“Description”: “Nausea with vomiting, unspecified”,
“Code”: “R11.2”,
“Score”: 0.20183530449867249
},
{
“Description”: “Hematemesis”,
“Code”: “K92.0”,
“Score”: 0.1203150525689125
},
{
“Description”: “Vomiting, unspecified”,
“Code”: “R11.10”,
“Score”: 0.11658868193626404
},
{
“Description”: “Nausea and vomiting”,
“Code”: “R11”,
“Score”: 0.11535880714654922
}
]
},
{
“Id”: 8,
“Text”: “flank pain”,
“Category”: “MEDICAL_CONDITION”,
“Type”: “DX_NAME”,
“Score”: 0.9315784573554993,
“BeginOffset”: 235,
“EndOffset”: 245,
“Attributes”: [
{
“Type”: “ACUITY”,
“Score”: 0.9809532761573792,
“RelationshipScore”: 0.9999837875366211,
“Id”: 7,
“BeginOffset”: 229,
“EndOffset”: 234,
“Text”: “acute”,
“Traits”: []
}
],
“Traits”: [
{
“Name”: “SYMPTOM”,
“Score”: 0.8182812929153442
}
],
“ICD10CMConcepts”: [
{
“Description”: “Unspecified abdominal pain”,
“Code”: “R10.9”,
“Score”: 0.4959934949874878
},
{
“Description”: “Generalized abdominal pain”,
“Code”: “R10.84”,
“Score”: 0.12332479655742645
},
{
“Description”: “Lower abdominal pain, unspecified”,
“Code”: “R10.30”,
“Score”: 0.08319114148616791
},
{
“Description”: “Upper abdominal pain, unspecified”,
“Code”: “R10.10”,
“Score”: 0.08275411278009415
},
{
“Description”: “Jaw pain”,
“Code”: “R68.84”,
“Score”: 0.07797083258628845
}
]
},
{
“Id”: 10,
“Text”: “numbness”,
“Category”: “MEDICAL_CONDITION”,
“Type”: “DX_NAME”,
“Score”: 0.9659366011619568,
“BeginOffset”: 255,
“EndOffset”: 263,
“Attributes”: [
{
“Type”: “SYSTEM_ORGAN_SITE”,
“Score”: 0.9976192116737366,
“RelationshipScore”: 0.9999089241027832,
“Id”: 11,
“BeginOffset”: 271,
“EndOffset”: 274,
“Text”: “leg”,
“Traits”: []
}
],
“Traits”: [
{
“Name”: “SYMPTOM”,
“Score”: 0.7310190796852112
}
],
“ICD10CMConcepts”: [
{
“Description”: “Anesthesia of skin”,
“Code”: “R20.0”,
“Score”: 0.767346203327179
},
{
“Description”: “Paresthesia of skin”,
“Code”: “R20.2”,
“Score”: 0.13602739572525024
},
{
“Description”: “Other complications of anesthesia”,
“Code”: “T88.59”,
“Score”: 0.09990577399730682
},
{
“Description”: “Hypothermia following anesthesia”,
“Code”: “T88.51”,
“Score”: 0.09953102469444275
},
{
“Description”: “Disorder of the skin and subcutaneous tissue, unspecified”,
“Code”: “L98.9”,
“Score”: 0.08736388385295868
}
]
}
],
“ModelVersion”: “0.0.0”
}
정식 출시 (서울 리전 미포함)
콘솔, AWS Command Line Interface (CLI) 또는 AWS SDKs를 통해 Amazon Comprehend Medical을 사용할 수 있습니다. Comprehend Medical은 사용한 만큼만 비용을 지불됩니다. 즉, 사용하는 기능에 따라 매월 처리되는 텍스트 양을 기준으로 요금이 청구됩니다. 자세한 내용은 종합 요금 페이지의 종합 의료 섹션을 참고해 주십시오. 온톨로지 링크는 AWS 리전 표에 설명된 대로 Amazon Comprehend Medical이 제공되는 모든 리전에서 사용할 수 있습니다. (서울 리전은 아직 Amazon Comprehend Medical 서비스가 출시되지 않았습니다.)
새로운 온톨로지 연결 API는 구조화되지 않은 임상 텍스트에서 약물 및 의학적 상태를 쉽게 감지하고 각각 RxNorm 및 ICD-10-CM 코드에 연결합니다. 이 새로운 기능을 사용하면 대량의 구조화되지 않은 의료 텍스트를 높은 정확도로 처리하는 비용, 시간 및 노력을 줄일 수 있습니다.
원문 URL: https://aws.amazon.com/ko/blogs/aws/new-amazon-comprehend-medical-adds-ontology-linking/
** 메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.