View a markdown version of this page

Comprendere i report di deriva - AWS HealthLake

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Comprendere i report di deriva

Quando il rilevamento della deriva è abilitato, il job in blocco scrive un report aggregato con il nome della posizione jobLevelDriftResult.json di output. Il rapporto indica quanti dati di origine sono stati effettivamente acquisiti dal profilo e quali sono gli elementi mancanti: in questo modo saprai dove migliorare le tue mappature.

La struttura del rapporto dipende dal formato di origine: i C-CDA report sono organizzati in sezioni e voci del documento (identificate da OID), mentre i report CSV sono organizzati in tabelle, colonne e righe. Entrambi condividono lo stesso concetto di tasso di copertura (una frazione da 0,0 a 1,0, dove più alto significa che è stata acquisita una parte maggiore della fonte).

C-CDA rapporto di 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 } }

Come leggere i dati

Inizia con i tassi di copertura. Si tratta delle medie di tutti i file elaborati, espresse come frazione da 0,0 a 1,0 (moltiplicate per 100 per una percentuale). Maggiore è meglio: una velocità più alta significa che una quantità maggiore di dati di origine è stata inserita nell'output FHIR.

Campo Significato
avgOverallCoverageRate Il numero del titolo. La frazione media di contenuto di origine (sezioni + voci) mappata dal profilo su FHIR. 0,88 significa che circa l'88% dei dati di origine è stato acquisito.
avgSectionCoverageRate Frazione media di C-CDA sezioni (ad esempio, Problemi, Farmaci, Allergie) mappate.
avgEntryCoverageRate Frazione media delle singole voci all'interno delle sezioni (ad esempio, un singolo problema o farmaco) che sono state mappate.
avgResourceAccuracy Tra le risorse FHIR previste, la frazione media effettivamente prodotta.

Quindi trova ciò che è mancato. Questi campi indicano le mappature specifiche da aggiungere:

Campo Significato Cosa fare
unknownSections Una mappa degli OID della sezione di origine che il profilo non ha riconosciuto e quante volte sono apparsi ciascuno. Aggiungi mappature per gli OID di sezione con un numero elevato di OID.
unknownEntries Una mappa degli OID di ingresso di origine che il profilo non ha riconosciuto e della loro frequenza. Aggiungi mappature per gli OID di ingresso con un numero elevato di numeri.
missingResources Una mappa dell'OID di origine → dei tipi di risorse FHIR previsti ma non prodotti, con i conteggi. Correggi le mappature che avrebbero dovuto generare quelle risorse.
totalUnknownSections / totalUnknownEntries Numero totale di sezioni e voci non mappate in tutto il lavoro. Usalo come segnale rapido «quanto resta».
documentOids Una mappa degli OID del C-CDA tipo di documento visualizzati nel lavoro e del numero di ciascuno. Conferma quali tipi di documenti contengono i tuoi dati.

Assegna priorità in base alla frequenza. Conta e missingResources indica quali sono unknownEntries le lacune che influiscono maggiormente sui record. unknownSections Un OID che appare 40 volte equivale a una vincita maggiore da mappare rispetto a uno che appare due volte.

Analizza file specifici. perFileDriftmappa ogni file sorgente in base al suo tasso di copertura complessivo. Ordina in base ai valori più bassi per trovare i file gestiti peggio dal profilo: ad esempio, vale la pena controllarli con un valore pari patient-002.xml a 0,61. Per un'analisi completa dei singoli file (quali OID specifici non sono stati rilevati da ciascun file), consulta i singoli report contenuti nella cartella. driftDetectionPerFileResults/

Miglioramento della copertura

  1. Identifica le voci con la frequenza più alta inunknownSections,unknownEntries, e. missingResources

  2. Usa l'agente Data Transformation AI (UpdateProfileWithAgent) per aggiungere mappature per quegli OID e risorse: puoi incollare un OID e chiedere all'agente di mapparlo.

  3. Pubblica una nuova versione del profilo ed esegui nuovamente il processo.

  4. Confronta il nuovo avgOverallCoverageRate per confermare che il divario è stato colmato.

Rapporto sulla deriva in formato CSV

Per i lavori CSV, il report è organizzato in tabelle (ogni file CSV è una tabella), colonne e righe: non sezioni e 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" } ] }

Come leggere i dati

Inizia con il riepilogo. I tassi di copertura sono frazioni da 0,0 a 1,0 (più alto è meglio):

Campo Significato
overallCoverageRate Il numero del titolo: la frazione di tutte le colonne di tutte le tabelle di input effettivamente utilizzata dal tuo profilo. 0,83 significa che circa l'83% delle colonne di origine sono mappate.
tablesCoverageRate Frazione dei file CSV di input (tabelle) mappati dal profilo (/). tablesProcessed totalTablesInInput
columnsCoverageRate Frazione di colonne nelle tabelle mappate a cui fa riferimento una mappatura dei campi.

Quindi controlla i conteggi per comprendere i risultati della conversione:

Campo Significato
totalTablesInInputvs tablesProcessed Quanti dei tuoi file CSV sono stati effettivamente utilizzati e quanti sono stati trovati.
totalColumnsInInput / columnsMapped / columnsUnmapped Quante colonne di origine esistono, sono state utilizzate e sono state ignorate.
totalRowsScanned / rowsConvertedSuccessfully Quante righe sono state lette e quante sono state convertite correttamente.
rowsFailedCustomerError / rowsFailedServerError Righe non riuscite a causa di problemi di qualità dei dati rispetto a errori interni.
totalResourcesGenerated Risorse FHIR totali prodotte.

Quindi trova ciò che è mancato:

Campo Significato Cosa fare
unmappedTables File CSV inseriti che il profilo non dichiara (con il motivo e le colonne del file). Aggiungi una mappatura della tabella se quel file deve essere convertito.
unmappedColumns Per tabella, le colonne presenti nel CSV ma non utilizzate da nessuna mappatura dei campi. Aggiungi le mappature dei campi per le colonne che desideri nell'output FHIR.

Sincronizza il rapporto di deriva in formato CSV

Come leggere i datidescrive il formato di massa (asincrono) che un processo di trasformazione scrive su Amazon S3. Quando esegui il rilevamento della deriva in modo sincrono, la risposta dell'API include il rapporto di deriva con valori separati da virgole (CSV) in linea. Per abilitarlo, imposta su su richiesta. enableDriftDetection true TransformData Poiché una richiesta di sincronizzazione elabora un singolo input anziché un intero set di dati, il relativo report ha una struttura più semplice.

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

I unmappedColumns campi summaryunmappedTables, e hanno lo stesso significato del rapporto collettivo. Il rapporto di sincronizzazione differisce dal rapporto CSV in blocco nei seguenti modi:

  • Non ha, o jobId profileIdprofileVersion, perché una richiesta di sincronizzazione non è legata a un processo di trasformazione. Include invece un sourceFormat campo di primo livello (CSV) che identifica il formato dell'input.

  • Omette il conteggio (rowsFailedCustomerErrorerowsFailedServerError) degli errori di riga e i campi e i report in blocco. totalRowsScanned rowsConvertedSuccessfully Una richiesta di sincronizzazione converte un singolo input. Ha esito positivo o restituisce un errore. In caso di successo, riporta totalRowsProcessed una perTableRowCounts mappa che mostra il numero di righe elaborate per ogni tabella.

  • Riporta tablesCoverageRate ecolumnsCoverageRate, ma non una combinazioneoverallCoverageRate.

  • Include un warnings array in linea che elenca i problemi non irreversibili riscontrati durante la conversione, come chiavi primarie mancanti o voci della mappa dei valori non riconosciute.

Miglioramento della copertura (entrambi i formati)

  1. Identifica le lacune con il maggiore impatto: per le C-CDA voci con la frequenza più alta inunknownSections/unknownEntries/missingResources; per CSV, le voci in e gli avvisi. unmappedTables unmappedColumns

  2. Usa l'agente Data Transformation AI (UpdateProfileWithAgent) per aggiungere le mappature mancanti: puoi incollare un OID () o un nome di colonna (CSVC-CDA) non mappato e chiedere all'agente di mapparlo.

  3. Pubblica una nuova versione del profilo ed esegui nuovamente il processo.

  4. Confronta il nuovo overallCoverageRate per confermare che il divario è stato colmato.

Nota

Il rilevamento della deriva riporta ciò che un profilo non ha mappato; non indica un errore di conversione. I dati di origine possono essere lasciati intenzionalmente non mappati se non sono pertinenti al tuo caso d'uso. Usa il rapporto per decidere cosa vale la pena mappare.