View a markdown version of this page

드리프트 보고서 이해 - AWS HealthLake

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

드리프트 보고서 이해

드리프트 감지가 활성화되면 대량 작업은 라는 집계 보고서를 jobLevelDriftResult.json 출력 위치에 기록합니다. 이 보고서는 프로파일이 실제로 캡처한 소스 데이터의 양과 누락된 내용을 알려주므로 매핑을 개선할 위치를 알 수 있습니다.

보고서의 구조는 소스 형식에 따라 다릅니다. C-CDA 보고서는 문서 섹션 및 항목(OIDs로 식별됨)을 중심으로 구성되고 CSV 보고서는 테이블, 열 및 행을 중심으로 구성됩니다. 둘 다 동일한 적용 범위 비율 개념을 공유합니다(0.0에서 1.0까지의 분율. 여기서 높을수록 더 많은 소스가 캡처되었음을 의미함).

C-CDA 드리프트 보고서

{ "jobId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6", "profileId": "0f1e2d3c4b5a69788796a5b4c3d2e1f0", "profileVersion": 3, "timestamp": "2026-07-14T18:30:00Z", "filesProcessed": 500, "totalFilesFailed": 2, "avgSectionCoverageRate": 0.92, "avgEntryCoverageRate": 0.85, "avgOverallCoverageRate": 0.88, "avgResourceAccuracy": 0.97, "totalUnknownSections": 14, "totalUnknownEntries": 63, "documentOids": { "2.16.840.1.113883.10.20.22.1.2": 480 }, "unknownSectionOidCount": 2, "unknownSections": { "2.16.840.1.113883.10.20.22.2.14": 12 }, "unknownEntryOidCount": 5, "unknownEntries": { "2.16.840.1.113883.10.20.22.4.13": 40 }, "missingResources": { "2.16.840.1.113883.10.20.22.2.6.1": { "AllergyIntolerance": 8 } }, "perFileDrift": { "patient-001.xml": 0.95, "patient-002.xml": 0.61 } }

판독 방법

적용률부터 시작합니다. 이는 처리된 모든 파일의 평균으로, 0.0~1.0의 분수로 표시됩니다(백분율에 100을 곱함). 높을수록 좋습니다. 속도가 높을수록 소스 데이터가 FHIR 출력으로 더 많이 만들어집니다.

Field 의미
avgOverallCoverageRate 헤드라인 번호입니다. 프로필이 FHIR에 매핑된 소스 콘텐츠(섹션 + 항목)의 평균 비율입니다. 0.88은 소스 데이터의 ~88%가 캡처되었음을 의미합니다.
avgSectionCoverageRate 매핑된 C-CDA 섹션(예: 문제, 약물, 알러지)의 평균 비율입니다.
avgEntryCoverageRate 매핑된 섹션 내 개별 항목(예: 단일 문제 또는 약물)의 평균 비율입니다.
avgResourceAccuracy 예상한 FHIR 리소스 중에서 실제로 생성된 평균 비율입니다.

그런 다음 누락된 내용을 찾습니다. 이러한 필드는 추가할 특정 매핑을 가리킵니다.

Field 의미 수행할 작업
unknownSections 프로파일이 인식하지 못한 소스 섹션 OIDs의 맵과 각 섹션이 나타난 횟수입니다. 높은 수의 섹션 OIDs에 대한 매핑을 추가합니다.
unknownEntries 프로파일이 인식하지 못한 소스 항목 OIDs의 맵과 빈도입니다. 높은 수의 항목 OIDs에 대한 매핑을 추가합니다.
missingResources 소스 OID 맵 → 예상되었지만 생성되지 않은 FHIR 리소스 유형, 개수 포함. 이러한 리소스를 생성해야 하는 매핑을 수정합니다.
totalUnknownSections / totalUnknownEntries 작업 전체에서 매핑되지 않은 섹션 및 항목의 총 수입니다. 를 빠른 "남은 양" 신호로 사용합니다.
documentOids 작업에 표시되는 C-CDA 문서 유형 OIDs의 수입니다. 데이터에 포함된 문서 유형을 확인합니다.

빈도에 따라 우선 순위를 지정합니다. unknownSections, unknownEntries및의 개수는 가장 많은 레코드에 영향을 미치는 격차를 missingResources 알려줍니다. 40회 나타나는 OID는 두 번 나타나는 것보다 매핑에 더 큰 성공입니다.

특정 파일을 드릴링합니다.는 각 소스 파일을 전체 적용률에 perFileDrift 매핑합니다. 가장 낮은 값을 기준으로 정렬하여 프로파일이 최악의 상태로 처리한 파일을 찾습니다. 예를 들어 0.61patient-002.xml에서는 검사할 가치가 있습니다. 파일별 전체 분석(각 파일이 놓친 특정 OIDs)은 driftDetectionPerFileResults/ 폴더 아래의 개별 보고서를 참조하세요.

적용 범위 개선

  1. unknownSections, unknownEntries및에서 가장 높은 빈도의 항목을 식별합니다missingResources.

  2. 데이터 변환 AI 에이전트(UpdateProfileWithAgent)를 사용하여 해당 OIDs 및 리소스에 대한 매핑을 추가합니다. OID를 붙여넣고 에이전트에게 매핑을 요청할 수 있습니다.

  3. 새 프로필 버전을 게시하고 작업을 다시 실행합니다.

  4. avgOverallCoverageRate를 비교하여 갭이 닫혔는지 확인합니다.

CSV 드리프트 보고서

CSV 작업의 경우 보고서는 섹션 및 OIDs가 아닌 테이블(각 CSV 파일은 테이블), 열 및 행을 중심으로 구성됩니다.

{ "jobId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6", "profileId": "0f1e2d3c4b5a69788796a5b4c3d2e1f0", "profileVersion": 3, "summary": { "totalTablesInProfile": 4, "totalTablesInInput": 5, "tablesProcessed": 4, "tablesUnmapped": 1, "totalColumnsInInput": 42, "columnsMapped": 35, "columnsUnmapped": 7, "totalRowsScanned": 120000, "rowsConvertedSuccessfully": 119850, "rowsFailedCustomerError": 140, "rowsFailedServerError": 10, "totalResourcesGenerated": 245000, "tablesCoverageRate": 0.80, "columnsCoverageRate": 0.83, "overallCoverageRate": 0.83 }, "unmappedTables": [ { "tableName": "billing", "fileName": "billing.csv", "reason": "No matching table declared in the mapping profile", "columns": ["invoice_id", "amount", "payer"] } ], "unmappedColumns": [ { "tableName": "patients", "columns": ["preferred_language", "ethnicity_detail"], "reason": "Present in CSV but not referenced by any field mapping" } ] }

판독 방법

요약부터 시작합니다. 적용률은 0.0~1.0의 분수입니다(높을수록 좋음).

Field 의미
overallCoverageRate 헤드라인 번호: 프로파일이 실제로 사용하는 모든 입력 테이블에서 모든 열의 비율입니다. 0.83은 소스 열의 ~83%가 매핑되었음을 의미합니다.
tablesCoverageRate 프로필이 매핑하는 입력 CSV 파일(테이블)의 비율(tablesProcessed/totalTablesInInput).
columnsCoverageRate 필드 매핑에서 참조하는 매핑된 테이블의 열 비율입니다.

그런 다음 개수를 확인하여 변환 결과를 이해합니다.

Field 의미
totalTablesInInputtablesProcessed 비교 실제로 사용된 CSV 파일과 찾은 CSV 파일의 수.
totalColumnsInInput / columnsMapped / columnsUnmapped 존재하는 소스 열, 사용된 열 및 무시된 열의 수입니다.
totalRowsScanned / rowsConvertedSuccessfully 성공적으로 변환된 행과 읽은 행의 수.
rowsFailedCustomerError / rowsFailedServerError 데이터 품질 문제와 내부 오류로 인해 실패한 행.
totalResourcesGenerated 생성된 총 FHIR 리소스입니다.

그런 다음 누락된 내용을 찾습니다.

Field 의미 수행할 작업
unmappedTables 프로파일이 선언하지 않는 입력의 CSV 파일(이유 및 해당 파일의 열 포함). 해당 파일을 변환해야 하는 경우 테이블 매핑을 추가합니다.
unmappedColumns 테이블별로 CSV에 존재하지만 필드 매핑에 사용되지 않는 열입니다. FHIR 출력에서 원하는 열에 대한 필드 매핑을 추가합니다.

적용 범위 개선(두 형식 모두)

  1. 가장 큰 영향 격차 식별: C-CDA의 경우 unknownSections//의 가장 높은 빈도의 항목, CSV의 unknownEntriesmissingResources경우 , unmappedTables unmappedColumns및 경고의 항목.

  2. 데이터 변환 AI 에이전트(UpdateProfileWithAgent)를 사용하여 누락된 매핑을 추가합니다. 매핑되지 않은 OID(C-CDA) 또는 열 이름(CSV)을 붙여넣고 에이전트에게 매핑하도록 요청할 수 있습니다.

  3. 새 프로필 버전을 게시하고 작업을 다시 실행합니다.

  4. overallCoverageRate를 비교하여 갭이 닫혔는지 확인합니다.

참고

드리프트 감지는 프로필이 매핑되지 않은 내용을 보고합니다. 이는 변환 오류를 나타내지 않습니다. 소스 데이터는 사용 사례와 관련이 없는 경우 의도적으로 매핑되지 않은 상태로 둘 수 있습니다. 보고서를 사용하여 매핑할 가치가 있는 항목을 결정합니다.