Questa pagina spiega lo schema della tabella BigQuery create durante l'esportazione Metadati DICOM a BigQuery.
Terminologia
Per comprendere lo schema e i suoi componenti, familiarizza con il Terminologia DICOM. In particolare, in questa pagina vengono utilizzati diversi termini 3.10 Strutture di dati e definizioni di codifica DICOM.
Panoramica
L'API Cloud Healthcare genera automaticamente utilizzando i dati che stai esportando e il dizionario DICOM. Lo schema contiene solo colonne per gli elementi di dati DICOM esistenti nei metadati. L'unica eccezione è il nome della persona in VR.
Durante l'esportazione dei metadati DICOM, l'API Cloud Healthcare tenta di esportare tutti gli elementi dei dati nei metadati. Per informazioni su cosa succede se un problema consulta la sezione Tipi in conflitto e non corrispondenti.
Elementi di dati standard e privati
DICOM fornisce elementi di dati standard che sono conformi a una specifica predefinita. Per un elenco di questi elementi di dati, consulta Registry degli elementi di dati DICOM.
Nei casi in cui devi comunicare dati non conformi alle elementi standard, puoi utilizzare gli elementi di dati privati.
Elementi di dati standard
I seguenti comportamenti si applicano agli elementi di dati standard. Per i dati privati sul comportamento dell'elemento, consulta Elementi di dati privati.
Nomi delle colonne
Le colonne nello schema BigQuery generato sono denominate in base alla parola chiave dell'elemento dati. Ad esempio, se i metadati DICOM contengono da un elemento dati la cui parola chiave è InstanceCreationDate, lo schema generato ha una colonna corrispondente denominata InstanceCreationDate.
Comportamento degli elementi di dati DICOM standard
La seguente tabella mostra un elenco di rappresentazioni del valore (VR) e delle relative o abbreviazioni di questo genere. Per qualsiasi dato esportato in BigQuery che contiene una di queste VR, utilizza il tipo di dati BigQuery, che si trova in "Tipo di dati":
VR | Tipo di dati |
---|---|
|
Stringa |
Data (DA) | Data |
Tempo (TM) | Ora |
Data e ora (DT) | Timestamp |
|
Stringa |
Nome della persona (PN) | Struct (record) |
|
Virgola mobile |
|
Numero intero |
Sequenza di elementi (SQ) | Struct (record) |
Modalità nulla e ripetute
A seconda del valore di moltiplicazione del valore (VM) di un elemento dati, anche
La colonna BigQuery contiene uno di questi due
mode: NULLABLE
o REPEATED
.
Se un elemento dei dati ha un valore della VM pari a 1, a indicare che l'elemento dei dati
è univoco, l'elemento dati utilizza la modalità NULLABLE
. Per qualsiasi altro valore di VM,
l'elemento dati utilizza la modalità REPEATED
.
Ad esempio, come mostrato nel Registry degli elementi di dati DICOM,
la parola chiave SOPInstanceUID ha un valore VM pari a 1. Di conseguenza,
quando viene esportato in BigQuery, la sua modalità è NULLABLE
,
e la sua rappresentazione nella tabella è simile alla seguente (se rappresentata come
JSON):
"SOPInstanceUID": "0.0.000.000000.0.000.0000.0000000.0000.0000000000.000",
Al contrario, la parola chiave ImageType ha un valore VM di 2-n.
Di conseguenza, quando viene esportato in BigQuery, la sua modalità
REPEATED
, e la sua rappresentazione nella tabella è simile alla seguente (quando
rappresentato come JSON):
"ImageType": [
"ORIGINAL",
"PRIMARY",
"OTHER",
"..."
],
VR escluse
I dati binari e nel formato lungo non vengono esportati nel file BigQuery generato
, quindi gli elementi di dati contenenti i seguenti VR non vengono esportati. Invece,
i seguenti VR sono inclusi in una colonna separata (denominata
DroppedTags.TagName
) nella tabella BigQuery di destinazione.
- Altro doppio (OD)
- Altro numero in virgola mobile (OF)
- Altro lungo (OL)
- Altro byte (OB)
- Altra parola (OW)
- Sconosciuto (UN)
- Tag sequenza (SQ) contenenti più di circa 1 MiB di dati
- Attributo (AT), doppio in virgola mobile (FD), singolo punto in virgola mobile (FL),
UnSigned Long (UL) o Un Signed Short (US), se la moltiplicazione del valore (VM) è
maggiore di 512.
- Per motivi legacy, i tag delle istanze già importati
L'API Cloud Healthcare potrebbe essere inclusa nella colonna
DroppedTags.TagName
se la moltiplicazione dei valori è maggiore di 64.
- Per motivi legacy, i tag delle istanze già importati
L'API Cloud Healthcare potrebbe essere inclusa nella colonna
VR nome persona
Ogni colonna dello schema BigQuery con un nome persona (PN) La VR contiene sempre tre colonne secondarie, indipendentemente dal fatto che il le sottocolonne contengono dati. Le tre colonne secondarie sono:
- Alfabetico
- Ideografica
- Fonetico
Ognuna delle tre colonne secondarie ha cinque colonne secondarie:
- FamilyName
- GivenName
- MiddleName
- NamePrefix
- NameSuffix
Considera ad esempio il tag pubblico "OperatorsName (0008,1070)". che ha un VR del nome della persona (PN). Supponiamo che il valore di OperatorsName sia "Darcy Smith". Lo schema conterrà una colonna OperatorsName con le colonne secondarie elencati in precedenza, ma solo Alphabetic.FamilyName (Smith) e Alphabetic.ThatnName (Darcy) conterrà valori.
Elementi di dati privati
Alcune implementazioni cliniche potrebbero richiedere la memorizzazione di dati personalizzati che non si adatta alla struttura degli elementi dei dati pubblici. In alternativa, puoi utilizzare elementi di dati privati.
Gli elementi di dati privati con una VR di SQ (sequenza di elementi) hanno lo stesso il comportamento degli elementi di dati standard. Dati privati gli elementi con un VR di SQ sono chiamati sequenze di dati privati.
Gli elementi di dati privati che non hanno una VR di SQ sono nidificati in una colonna
chiamate OtherElements
e vengono convertite in stringhe. Questi dati privati
di elementi sono chiamati dati privati non in sequenza. A
elementi di dati privati non in sequenza, la query deve cercare all'interno dei
OtherElements
dell'elemento.
La colonna OtherElements
contiene due colonne secondarie "Dati" e "Tag". La
La colonna di dati è la rappresentazione stringa del valore dell'elemento di dati privati.
È sempre di tipo REPEATED
. La colonna Tag utilizza il formato
"Tag_HEX" dove HEX è una stringa esadecimale del numero di tag.
LastUpdated
e Type
colonne
Le colonne LastUpdated
e Type
vengono aggiunte a BigQuery
creata durante l'esportazione dei metadati DICOM. Queste colonne non sono standard
o elementi di dati privati, e non corrispondono al Registro di
Elementi di dati DICOM.
Il comportamento di queste colonne è il seguente:
- La colonna
LastUpdated
contiene un timestamp che mostra quando l'istanza DICOM è stata inserita o eliminata da nell'archivio DICOM. - La colonna
Type
contiene una stringa che mostra il tipo di operazione eseguita. I valori possibili sonoCREATE
oDELETE
.
Tipi in conflitto e non corrispondenti
Se si verifica un conflitto di tipo, ad esempio quando un tag pubblico viene utilizzato con un
, il tag pubblico viene considerato come un tag privato. Il valore di
l'elemento dei dati è
nidificato in una colonna denominata OtherElements
e il valore viene convertito in una stringa.
Ad esempio, supponiamo che i metadati DICOM contengano un tag con:
- Un numero di tag "(4010,1017)"
- VR di SL (con firma lunga)
- Un valore pari a 32
(4010,1017) è lo stesso numero di tag di "Mass", un nome di tag pubblico nella specifica DICOM che ha un VR di FL. L'operazione di esportazione prevede un elemento di dati con il numero di tag "(4010,1017)" essere la "massa" pubblica del tag con un VR di FL. Di conseguenza, l'operazione di esportazione prevede il valore dell'elemento dati in un numero in virgola mobile (come mostrato nella tabella in Comportamento standard degli elementi di dati DICOM
Si verifica un conflitto di tipo perché tutti i tag con VR di SL utilizzano il numero intero
tipo di dati. Il tag viene quindi convertito in tag privato e aggiunto al tag
Colonna OtherElements
.
Se per i dati di sequenza viene utilizzato un nome di tag pubblico non sequenziale, il tipo non corrisponde . Di conseguenza, la sequenza viene trattata come se erano un elemento di dati privati. Anziché utilizzare il nome del tag pubblico come nello schema BigQuery, il nome del tag pubblico esadecimale. Il numero esadecimale è di tipo stringa.
Esempi: query su elementi di dati pubblici e privati
Considera il seguente snippet di uno schema rappresentato come JSON. Lo schema è stato creato dopo l'esportazione Dati DICOM in BigQuery.
[
...
{
"name": "SOPInstanceUID",
"type": "STRING"
},
{
"fields": [
{
"fields": [
{
"mode": "REQUIRED",
"name": "Tag",
"type": "STRING"
},
{
"mode": "REPEATED",
"name": "Data",
"type": "STRING"
}
],
"mode": "REPEATED",
"name": "OtherElements",
"type": "RECORD"
}
],
"mode": "REPEATED",
"name": "Tag_12345678",
"type": "RECORD"
}
...
]
L'esempio seguente mostra come eseguire una query per l'elemento di dati pubblici SOPInstanceUID
.
Per accedere al valore della colonna, esegui questa query:
#standardSQL SELECT SOPInstanceUID FROM `PROJECT_ID.DATASET_ID.TABLE_ID`
La query restituisce un output simile al seguente:
[ ... { "SOPInstanceUID": "0.0.000.000000.0.000.0000.0000000.0000.0000000000.000" }, ... ]
L'esempio seguente mostra come eseguire query per dati privati non in sequenza.
Esegui questa query sulla colonna OtherElements
, che è
all'interno della colonna Tag_12345678
. Tieni presente che viene utilizzata la classe UNNEST
, che è obbligatorio perché stai eseguendo una query su un RECORD
.
#standardSQL SELECT Tag_12345678.OtherElements AS OtherElements FROM `PROJECT_ID.DATASET_ID.TABLE_ID`, UNNEST(Tag_12345678) AS Tag_12345678
L'esecuzione della query restituisce un output simile al seguente, a seconda
sulla quantità e sul tipo di dati nella colonna Tag_12345678.OtherElements
:
[ { "OtherElements": [ { "Tag": "Tag_12345678", "Data": [ "DATA" ] } ] }, { "OtherElements": [ { "Tag": "Tag_12345678", "Data": [ "DATA" ] } ] }, { "OtherElements": [ { "Tag": "Tag_12345678", "Data": [ "DATA" ] } ] } ]
Passaggi successivi
Scopri di più sulle operazioni SQL standard di BigQuery e visualizza esempi.