View a markdown version of this page

Entender los informes de derivas - AWS HealthLake

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Entender los informes de derivas

Cuando la detección de desviaciones está habilitada, el trabajo masivo escribe un informe agregado jobLevelDriftResult.json con el nombre de su ubicación de salida. El informe indica qué cantidad de datos de origen capturó realmente el perfil y qué pasó por alto, para que sepa dónde mejorar sus mapeos.

La estructura del informe depende del formato de origen: los C-CDA informes se organizan en torno a secciones y entradas del documento (identificadas mediante OID), mientras que los informes en formato CSV se organizan en tablas, columnas y filas. Ambos comparten el mismo concepto de tasa de cobertura (una fracción de 0.0 a 1.0, donde más alta significa que se ha capturado una mayor cantidad de la fuente).

C-CDA informe de deriva

{ "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 } }

Cómo leerlo

Comience con las tasas de cobertura. Se trata de los promedios de todos los archivos procesados, expresados como una fracción de 0.0 a 1.0 (multiplica por 100 para obtener un porcentaje). Cuanto más, mejor: una velocidad más alta significa que una mayor cantidad de los datos de origen se incluyen en la salida del FHIR.

Campo Qué significa
avgOverallCoverageRate El número principal. La fracción media del contenido original (secciones y entradas) que el perfil asignó al FHIR. 0,88 significa que se capturó aproximadamente el 88% de los datos de origen.
avgSectionCoverageRate Fracción promedio de C-CDA las secciones (por ejemplo, problemas, medicamentos, alergias) que se mapearon.
avgEntryCoverageRate Fracción promedio de las entradas individuales de las secciones (por ejemplo, un solo problema o medicamento) que se mapearon.
avgResourceAccuracy De los recursos del FHIR que se esperaban, la fracción promedio que realmente se produjo.

Luego encuentra lo que se perdió. Estos campos indican las asignaciones específicas que se deben agregar:

Campo Qué significa Solución
unknownSections Un mapa de los OID de la sección de origen que el perfil no reconoció y el número de veces que apareció cada uno. Agregue mapeos para los OID de las secciones con mayor número de números.
unknownEntries Un mapa de los OID de entrada de origen que el perfil no reconoció y su frecuencia. Agregue mapeos para los OID de entrada con mayor número de números.
missingResources Un mapa del OID de origen → los tipos de recursos del FHIR que se esperaban pero no se generaron, con los recuentos. Corrija las asignaciones que deberían haber generado esos recursos.
totalUnknownSections / totalUnknownEntries Recuentos totales de secciones y entradas no mapeadas en toda la tarea. Úselo como una señal rápida de «cuánto queda».
documentOids Un mapa de los OID C-CDA de tipo documento que se han visto en la tarea y cuántos de cada uno. Confirma qué tipos de documentos contienen sus datos.

Prioriza por frecuencia. Los recuentos son unknownSectionsunknownEntries, y missingResources le indican qué brechas afectan a la mayoría de los registros. Un OID que aparezca 40 veces es más rentable para el mapa que uno que aparezca dos veces.

Profundice en archivos específicos. perFileDriftasigna cada archivo fuente a su tasa de cobertura general. Ordene por los valores más bajos para encontrar los archivos que el perfil manejó peor: por ejemplo, patient-002.xml vale la pena inspeccionar un valor de 0.61. Para ver un desglose completo por archivo (qué OID específicos omitió cada archivo), consulta los informes individuales en la carpeta. driftDetectionPerFileResults/

Mejorar la cobertura

  1. Identifique las entradas de mayor frecuencia en unknownSectionsunknownEntries, y. missingResources

  2. Utilice el agente de IA de transformación de datos (UpdateProfileWithAgent) para agregar mapeos para esos OID y recursos: puede pegar un OID y pedirle al agente que lo mapee.

  3. Publique una nueva versión del perfil y vuelva a ejecutar el trabajo.

  4. Compare la nueva versión avgOverallCoverageRate para confirmar que se ha cerrado la brecha.

Informe de desviaciones en CSV

En el caso de los trabajos en formato CSV, el informe se organiza en tablas (cada archivo CSV es una tabla), columnas y filas, no en secciones ni OID.

{ "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" } ] }

Cómo leerlo

Empieza con el resumen. Las tasas de cobertura son fracciones de 0.0 a 1.0 (cuanto más alto, mejor):

Campo Qué significa
overallCoverageRate El número del título: la fracción de todas las columnas de todas las tablas de entrada que utiliza realmente tu perfil. 0,83 significa que aproximadamente el 83% de las columnas de origen están mapeadas.
tablesCoverageRate Fracción de los archivos CSV de entrada (tablas) que el perfil asigna (tablesProcessed/totalTablesInInput).
columnsCoverageRate Fracción de columnas de las tablas mapeadas a las que hace referencia una asignación de campos.

A continuación, compruebe los recuentos para comprender los resultados de la conversión:

Campo Qué significa
totalTablesInInputvs. tablesProcessed Cuántos de sus archivos CSV se usaron realmente en comparación con los encontrados.
totalColumnsInInput / columnsMapped / columnsUnmapped Cuántas columnas de origen existen, se usaron y se ignoraron.
totalRowsScanned / rowsConvertedSuccessfully Cuántas filas se leyeron y cuántas se convirtieron correctamente.
rowsFailedCustomerError / rowsFailedServerError Las filas que fallaron debido a problemas de calidad de los datos y las filas a las que se debió a errores internos.
totalResourcesGenerated Total de recursos del FHIR producidos.

Luego encuentra lo que se perdió:

Campo Qué significa Solución
unmappedTables Los archivos CSV de tu entrada que el perfil no declara (con el motivo y las columnas de ese archivo). Añade un mapeo de tablas si ese archivo se debe convertir.
unmappedColumns Por tabla, las columnas presentes en el CSV pero que no se utilizan en ningún mapeo de campos. Agregue asignaciones de campos para las columnas que desee incluir en la salida del FHIR.

Sincronice el informe de derivaciones en

Cómo leerlodescribe el formato masivo (asincrónico) que un trabajo de transformación escribe en Amazon S3. Cuando ejecuta la detección de desviaciones de forma sincrónica, la respuesta de la API incluye el informe de desviaciones de valores separados por comas (CSV) en línea. Para habilitarlo, configúralo en una solicitudenableDriftDetection. true TransformData Como una solicitud de sincronización procesa una sola entrada en lugar de un conjunto de datos completo, su informe tiene una estructura más simple.

{ "sourceFormat": "CSV", "summary": { "totalTablesInProfile": 1, "totalTablesInInput": 1, "tablesProcessed": 1, "tablesUnmapped": 0, "totalColumnsInInput": 10, "columnsMapped": 7, "columnsUnmapped": 3, "totalRowsProcessed": 2, "totalResourcesGenerated": 2, "tablesCoverageRate": 1.0, "columnsCoverageRate": 0.7, "perTableRowCounts": { "patients": 2 } }, "unmappedTables": [], "unmappedColumns": [ { "tableName": "patients", "columns": ["ETHNICITY", "LANGUAGE", "NICKNAME"], "reason": "Columns present in CSV but not referenced in any field mapping" } ], "warnings": [] }

Los unmappedColumns campos summaryunmappedTables, y tienen el mismo significado que en el informe masivo. El informe de sincronización difiere del informe CSV masivo en los siguientes aspectos:

  • No lo tienejobId, o profileIdprofileVersion, porque una solicitud de sincronización no está vinculada a un trabajo de transformación. En su lugar, incluye un sourceFormat campo de nivel superior (CSV) que identifica el formato de la entrada.

  • Omite los recuentos de errores en las filas (rowsFailedCustomerErroryrowsFailedServerError) y los campos y los informes masivos. totalRowsScanned rowsConvertedSuccessfully Una solicitud de sincronización convierte una sola entrada. Se ejecuta correctamente o devuelve un error. En caso de éxito, genera un informe totalRowsProcessed y un perTableRowCounts mapa que muestra el número de filas procesadas para cada tabla.

  • Reporta una tablesCoverageRate y columnsCoverageRate otra, pero no de forma combinadaoverallCoverageRate.

  • Incluye una warnings matriz en línea que enumera los problemas no graves que se han producido durante la conversión, como la falta de claves principales o las entradas del mapa de valores no reconocidas.

Mejorar la cobertura (ambos formatos)

  1. Identifique las brechas de mayor impacto: para C-CDA, las entradas con mayor frecuencia enunknownSections/unknownEntries/missingResources; para CSV, las entradas en unmappedTables y las advertencias. unmappedColumns

  2. Use el agente de IA de transformación de datos (UpdateProfileWithAgent) para agregar las asignaciones que faltan: puede pegar un OID (C-CDA) o un nombre de columna (CSV) no mapeado y pedirle al agente que lo mapee.

  3. Publique una nueva versión de perfil y vuelva a ejecutar el trabajo.

  4. Compare la nueva versión overallCoverageRate para confirmar que se ha cerrado la brecha.

nota

La detección de desviaciones informa sobre lo que un perfil no mapeó; no indica un error de conversión. Los datos de origen pueden dejarse intencionadamente sin mapear si no son relevantes para su caso de uso. Usa el informe para decidir qué es lo que vale la pena mapear.