Amazon Web Services 한국 블로그
Amazon Comprehend Medical, 온톨로지 링크 기능 추가
Amazon Comprehend는 기계 학습을 사용하여 비정형 텍스트에서 통찰력을 찾는 NLP(자연어 처리) 서비스입니다. 기계 학습에 대한 경험이 없어도 매우 사용하기 쉽습니다. 문서를 고유한 범주로 구성하기 위해 사용자 지정 문서 분류자를 생성하거나 특정 용어에 대해 텍스트를 분석하는 사용자 지정 개체 유형을 생성하는 등 특정 사용 사례에 맞게 Comprehend를 사용자 지정할 수 있습니다. 하지만 의료 용어는 매우 복잡하고 보건 분야에 특정할 수 있습니다.
이러한 이유로, 작년에 출시한 Amazon Comprehend Medical은 HIPAA를 지원하는 자연 언어 처리 서비스로, 기계 학습을 사용하여 비정형 텍스트에서 관련 의료 정보를 쉽게 추출하도록 합니다. Comprehend Medical을 사용하면 의사의 메모, 임상 시험 보고서 및 환자 건강 기록과 같은 다양한 출처에서 의료 상태, 약물, 복용량, 강도 및 빈도와 같은 정보를 빠르고 정확하게 수집할 수 있습니다.
오늘 AWS는 Comprehend Medical에서 추출한 정보를 의료 온톨로지에 연결하는 기능을 추가하였습니다.
온톨로지는 해당 영역에 존재하는 개념과 해당 속성, 그리고 이들 간의 관계를 정의하고 이를 나타내는 해당 영역의 선언적 모델을 제공합니다. 일반적으로 지식 기반으로 표시되며, 지식을 사용하거나 공유해야 하는 애플리케이션에서 이를 사용할 수 있습니다. 의료 정보 내에서 온톨로지는 의료 관련 영역에 대한 정식 설명입니다.
Comprehend Medical에서 지원하는 온톨로지는 다음과 같습니다.
- ICD-10-CM. 의료 조건을 개체로 식별하고, 해당 개체의 속성으로 진단, 심각도 및 해부학상의 특이점과 같은 관련 정보를 연결합니다. 이는 집단 의료 분석과 렌더링된 의료 서비스에 기반하여 보험 회사로부터 지불금을 받는 경우에 매우 유용한 진단 코드 세트입니다.
- RxNorm. 약물을 개체로 식별하고, 복용량, 빈도, 강도 및 해당 개체에 대한 관리 경로와 같은 속성을 연결합니다. 의료 서비스 공급자는 이러한 개념을 사용하여 환자가 복용하는 가능한 모든 약물의 가장 정확한 목록을 생성하는 프로세스인 약물 조정과 같은 사용 사례를 지원합니다.
각 온톨로지에 대해 Comprehend Medical은 잠재적 일치 항목에 대해 등급이 지정된 목록을 반환합니다. 신뢰도 점수를 사용하여 올바른 일치 항목이나 추가 검토가 필요할 수 있는 항목을 결정할 수 있습니다. 예를 통해 작동 방식을 살펴보겠습니다.
온톨로지 링크 사용
Comprehend Medical 콘솔에서 몇 가지 의사의 비정형 메모를 입력으로 제공하는 작업부터 시작합니다.
먼저 이미 Comprehend Medical에서 사용 가능한 몇 가지 기능을 사용하여 의료 및 PHI(기밀 건강 정보) 개체를 탐지합니다.
인식된 개체(자세한 내용은 이 게시물 참조) 중에 몇 가지 증상과 약물이 나옵니다. 약물은 일반 명칭 또는 브랜드로 인식됩니다. 이러한 몇 가지 개체를 보다 구체적인 개념을 연결하는 방법을 알아보겠습니다.
새 기능을 사용하여 약물에 대한 RxNorm 개념에 이러한 개체를 연결합니다.
텍스트에서 약물을 언급하는 부분만 탐지됩니다. 응답의 세부 정보에서 자세한 내용을 확인할 수 있습니다. 예를 들어, 탐지된 약물 중 하나를 보겠습니다.
- “Clonidine”이란 용어의 첫 번째 표시(위 입력 텍스트의 두 번째 행)는 RxNorm 온톨로지의 일반 명칭 개념(아래 이미지의 왼쪽)에 연결됩니다.
- “Clonidine” 용어의 두 번째 표시(위 입력 텍스트의 네 번째 행) 뒤에는 명시적 복용량이 나오며, RxNorm 온톨로지의 복용량(아래 이미지의 오른쪽)을 포함하는 보다 규범적인 형식에 연결됩니다.
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 CLI(Command Line Interface) 또는 AWS SDK를 통해 Amazon Comprehend Medical을 사용할 수 있습니다. Comprehend Medical에서는 사용한 만큼만 지불합니다. 사용하는 기능에 따라 매월 처리되는 텍스트 양을 기준으로 요금이 청구됩니다. 자세한 내용은 Comprehend 요금 페이지의 Comprehend Medical 섹션을 참조하십시오. 온톨로지 링크는 Amazon Comprehend Medical이 제공되는 모든 리전에서 사용 가능합니다(AWS 리전 표 참조).
새로운 온톨로지 링크 API를 사용하면 비정형 임상 텍스트에서 약물 및 의료 조건을 손쉽게 탐지하고 이를 각각 RxNorm 및 ICD-10-CM 코드에 연결할 수 있습니다. 이 새 기능은 많은 양의 비정형 의료 텍스트를 높은 정확도로 처리하는 비용, 시간 및 노력을 줄여줍니다.
— Danilo