Esempi di parser degli schemi personalizzati

Questa pagina contiene esempi di casi d'uso, da quelli semplici a quelli complessi, che mostrano quando e come configurare un parser dello schema personalizzato in un archivio HL7v2. Ogni caso d'uso contiene un messaggio HL7v2 su cui si basa l'analizzatore sintattico dello schema personalizzato.

Carattere di terminazione dei segmenti personalizzato e campo personalizzato

Gli esempi in questa sezione utilizzano un messaggio di esempio che non è standard nei seguenti modi:

  • I delimitatori di segmento del messaggio di esempio sono i ritorni a capo (\n) anziché i ritorni a capo standard (\r).
  • Il messaggio di esempio ha un segmento software (SFT) con un sottocampo aggiuntivo: un campo personalizzato che specifica l'URL https://example.com/healthcare-api/.
MSH|^~\&|My EHR|My Test Facility||My EHR Facility|20150926140551||ORU^R01^ORU_R01|My-LOI_5.0_1.1-NG|T|2.5.1|||AL|AL|||||\n
SFT|Google^D|v1|Healthcare API|1||20190601|https://example.com/healthcare-api/\n
PID|1||PATID5421^^^My MPI^MR||Zhang^Sally^Brian^^^^L||19840611|F||2106-3^White^HL70005|123 Main Street^^Mountain Springs^CO^80439^^H||^PRN^PH^^^203^2290210|||||||||N^Not Hispanic or Latino^HL70189\n
ORC|RE|833582639|3266238193||CM||||20101234567890\n
OBR|1|833582639|3266238193|us-0005^Vital Signs^WinPath^^||20101234567890|20101234567890|||||||20101234567890||||||||20101234567890|||F||1\n
OBX|1|NM|tt-0005-07^MDC_PULS_RATE_NON_INV^MDC^^||52.31|MDC_DIM_BEAT_PER_MIN|50-200||||F|||20101234567890||\n
OBX|2|NM|tt-0005-12^PAIN LEVEL^L^^||1.71|/10|1-10||||F|||20101234567890||\n
OBX|3|NM|tt-0005-09^MDC_TEMP^MDC^^||36.22|MDC_DIM_DEGC|36-38||||F|||20101234567890||\n

Aggiorna un archivio HL7v2 con il carattere di terminazione dei segmenti personalizzato

Devi specificare il carattere di terminazione dei segmenti se i tuoi messaggi utilizzano un carattere di terminazione non standard, come il messaggio di esempio fornito in Carattere di terminazione dei segmenti personalizzato e campo personalizzato. Il messaggio di esempio utilizza il carattere \n non standard come carattere di terminazione dei segmenti.

Gli esempi riportati di seguito mostrano come configurare segmentTerminator in ParserConfig quando crei un archivio HL7v2. Il carattere di terminazione dei segmenti è impostato su Cg==, che è la codifica in base64 di \n.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • LOCATION: la posizione del set di dati padre
  • DATASET_ID: set di dati padre dell'archivio HL7v2
  • HL7V2_STORE_ID: l'ID store HL7v2

Corpo JSON della richiesta:

{
  "parserConfig": {
    "segmentTerminator": "Cg==""
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:

cat > request.json << 'EOF'
{
  "parserConfig": {
    "segmentTerminator": "Cg==""
  }
}
EOF

Quindi, esegui questo comando per inviare la richiesta REST:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID"

PowerShell

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:

@'
{
  "parserConfig": {
    "segmentTerminator": "Cg==""
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Quindi, esegui questo comando per inviare la richiesta REST:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

Aggiorna un archivio HL7v2 con lo schema personalizzato

Puoi aggiornare un archivio HL7v2 con uno schema personalizzato definito in formato JSON. Dopo aver configurato uno schema personalizzato che include il campo aggiuntivo nel segmento SFT, puoi importare il messaggio di esempio. Per informazioni su come specificare un campo personalizzato, consulta SchemaPackage.

La configurazione specificata in questo esempio ha il seguente comportamento:

  • Riscrive la definizione del segmento SFT in modo che il campo URL sia impostato sul campo 7.
  • Il filtro version determina a quali messaggi in arrivo si applica lo schema personalizzato in base a un campo nell'intestazione del segmento di messaggio (MSH). Se non fornisci un filtro version, lo schema viene applicato a tutti i messaggi HL7v2 nell'archivio HL7v2. In questo esempio, il segmento SFT personalizzato si applica quando il campo dell'applicazione di invio contiene My EHR.
  • Il campo per il campo aggiuntivo è denominato 7 per coerenza con il resto della specifica. Potresti anche chiamarlo URL in modo più descrittivo.

Per aggiornare lo store con lo schema personalizzato, utilizza il metodo projects.locations.datasets.hl7V2Stores.patch.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • LOCATION: la posizione del set di dati
  • DATASET_ID: set di dati padre dell'archivio HL7v2
  • HL7V2_STORE_ID: l'ID store HL7v2

Corpo JSON della richiesta:

{
  "parserConfig": {
    "schema": {
      "schematizedParsingType": "HARD_FAIL",
      "types": [
        {
          "version": [
            {
              "mshField": "3.1",
              "value": "My EHR"
            }
          ],
          "type": [
            {
              "name": "SFT",
              "fields": [
                {
                  "name": "1",
                  "type": "XON",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "2",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "3",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "4",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "5",
                  "type": "TX",
                  "maxOccurs": 1
                },
                {
                  "name": "6",
                  "type": "DTM",
                  "maxOccurs": 1
                },
                {
                  "name": "7",
                  "type": "ST",
                  "maxOccurs": 1
                }
              ]
            }
          ]
        }
      ]
    },
    "version": "V3"
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:

cat > request.json << 'EOF'
{
  "parserConfig": {
    "schema": {
      "schematizedParsingType": "HARD_FAIL",
      "types": [
        {
          "version": [
            {
              "mshField": "3.1",
              "value": "My EHR"
            }
          ],
          "type": [
            {
              "name": "SFT",
              "fields": [
                {
                  "name": "1",
                  "type": "XON",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "2",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "3",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "4",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "5",
                  "type": "TX",
                  "maxOccurs": 1
                },
                {
                  "name": "6",
                  "type": "DTM",
                  "maxOccurs": 1
                },
                {
                  "name": "7",
                  "type": "ST",
                  "maxOccurs": 1
                }
              ]
            }
          ]
        }
      ]
    },
    "version": "V3"
  }
}
EOF

Quindi, esegui questo comando per inviare la richiesta REST:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID?updateMask=parser_config.schema"

PowerShell

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:

@'
{
  "parserConfig": {
    "schema": {
      "schematizedParsingType": "HARD_FAIL",
      "types": [
        {
          "version": [
            {
              "mshField": "3.1",
              "value": "My EHR"
            }
          ],
          "type": [
            {
              "name": "SFT",
              "fields": [
                {
                  "name": "1",
                  "type": "XON",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "2",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "3",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "4",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "5",
                  "type": "TX",
                  "maxOccurs": 1
                },
                {
                  "name": "6",
                  "type": "DTM",
                  "maxOccurs": 1
                },
                {
                  "name": "7",
                  "type": "ST",
                  "maxOccurs": 1
                }
              ]
            }
          ]
        }
      ]
    },
    "version": "V3"
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Quindi, esegui questo comando per inviare la richiesta REST:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID?updateMask=parser_config.schema" | Select-Object -Expand Content
L'esempio utilizza la versione consigliata V3 del parser.

importa e analizza il messaggio HL7v2 utilizzando lo schema personalizzato

Gli esempi riportati di seguito mostrano come importare una versione codificata in Base64 del messaggio HL7v2 da Terminatore di segmenti personalizzato e campo personalizzato. Per importare il messaggio HL7v2, utilizza il metodo projects.locations.datasets.hl7V2Stores.messages.ingest.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • LOCATION: la posizione del set di dati padre
  • DATASET_ID: set di dati padre dell'archivio HL7v2
  • HL7V2_STORE_ID: l'ID store HL7v2

Corpo JSON della richiesta:

{
  "message": {
    "data": "TVNIfF5+XCZ8TXkgRUhSfE15IFRlc3QgRmFjaWxpdHl8fE15IEVIUiBGYWNpbGl0eXwyMDE1MDkyNjE0MDU1MXx8T1JVXlIwMV5PUlVfUjAxfE15LUxPSV81LjBfMS4xLU5HfFR8Mi41LjF8fHxBTHxBTHx8fHx8ClNGVHxHb29nbGVeRHx2MXxIZWFsdGhjYXJlIEFQSXwxfHwyMDE5MDYwMXxodHRwczovL2V4YW1wbGUuY29tL2hlYWx0aGNhcmUvClBJRHwxfDQwOTAzMzEzMjBeXl5TSU1VTEFUT1IgTVJOXk1STnw0MDkwMzMxMzIwXl5eU0lNVUxBVE9SIE1STl5NUk5+Mjg4ODUyNzE1NF5eXk5IU05CUl5OSFNOTUJSfHxEYXZpc15DaGVsc2VhXl5eTWlzc15eQ1VSUkVOVHx8MjAwOTEwMTcwMDAwMDB8Rnx8fDE4MSBUcmFuc21pc3Npb24gUm9hZF5eTG9uZG9uXl5LRzIyIDlIWF5HQlJeSE9NRXx8MDIwIDgxMjIgOTk0N15IT01FfHx8fHx8fHx8SF5Bc2lhbiBvciBBc2lhbiBCcml0aXNoIC0gSW5kaWFuXl5efHx8fHx8fHwKUFYxfDF8SXxPdGhlcldhcmReTWFpblJvb21eQmVkIDFeU2ltdWxhdGVkIEhvc3BpdGFsXl5CRUReTWFpbiBCdWlsZGluZ140fDI4Ynx8fEMwMDNeQ3VkZHleS2V2aW5eXl5Ecl5eXkRSTkJSXlBSU05MXl5eT1JHRFJ8fHxVUk98fHx8fHx8fHwxMjUxMzI0NzIzMjIzODk0ODc4M15eXl52aXNpdGlkfHx8fHx8fHx8fHx8fHx8fHx8fHx8fEFSUklWRUR8fHwyMDIwMDUwNjE3MDgyMnx8Ck9SQ3xSRXw4MzM1ODI2Mzl8MzI2NjIzODE5M3x8Q018fHx8MjAyMDA1MDYxNzA4MjIKT0JSfDF8ODMzNTgyNjM5fDMyNjYyMzgxOTN8dXMtMDAwNV5WaXRhbCBTaWduc15XaW5QYXRoXl58fDIwMjAwNTA2MTcwODIyfDIwMjAwNTA2MTcwODIyfHx8fHx8fDIwMjAwNTA2MTcwODIyfHx8fHx8fHwyMDIwMDUwNjE3MDgyMnx8fEZ8fDEKT0JYfDF8VFh8dHQtMDAwNS0xMV5PeHlnZW5EZXZeV2VsY2hBbGx5bl5efHxWZW50dXJpfHx8fHx8Rnx8fDIwMjAwNTA2MTcwODIyfHwK"
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:

cat > request.json << 'EOF'
{
  "message": {
    "data": "TVNIfF5+XCZ8TXkgRUhSfE15IFRlc3QgRmFjaWxpdHl8fE15IEVIUiBGYWNpbGl0eXwyMDE1MDkyNjE0MDU1MXx8T1JVXlIwMV5PUlVfUjAxfE15LUxPSV81LjBfMS4xLU5HfFR8Mi41LjF8fHxBTHxBTHx8fHx8ClNGVHxHb29nbGVeRHx2MXxIZWFsdGhjYXJlIEFQSXwxfHwyMDE5MDYwMXxodHRwczovL2V4YW1wbGUuY29tL2hlYWx0aGNhcmUvClBJRHwxfDQwOTAzMzEzMjBeXl5TSU1VTEFUT1IgTVJOXk1STnw0MDkwMzMxMzIwXl5eU0lNVUxBVE9SIE1STl5NUk5+Mjg4ODUyNzE1NF5eXk5IU05CUl5OSFNOTUJSfHxEYXZpc15DaGVsc2VhXl5eTWlzc15eQ1VSUkVOVHx8MjAwOTEwMTcwMDAwMDB8Rnx8fDE4MSBUcmFuc21pc3Npb24gUm9hZF5eTG9uZG9uXl5LRzIyIDlIWF5HQlJeSE9NRXx8MDIwIDgxMjIgOTk0N15IT01FfHx8fHx8fHx8SF5Bc2lhbiBvciBBc2lhbiBCcml0aXNoIC0gSW5kaWFuXl5efHx8fHx8fHwKUFYxfDF8SXxPdGhlcldhcmReTWFpblJvb21eQmVkIDFeU2ltdWxhdGVkIEhvc3BpdGFsXl5CRUReTWFpbiBCdWlsZGluZ140fDI4Ynx8fEMwMDNeQ3VkZHleS2V2aW5eXl5Ecl5eXkRSTkJSXlBSU05MXl5eT1JHRFJ8fHxVUk98fHx8fHx8fHwxMjUxMzI0NzIzMjIzODk0ODc4M15eXl52aXNpdGlkfHx8fHx8fHx8fHx8fHx8fHx8fHx8fEFSUklWRUR8fHwyMDIwMDUwNjE3MDgyMnx8Ck9SQ3xSRXw4MzM1ODI2Mzl8MzI2NjIzODE5M3x8Q018fHx8MjAyMDA1MDYxNzA4MjIKT0JSfDF8ODMzNTgyNjM5fDMyNjYyMzgxOTN8dXMtMDAwNV5WaXRhbCBTaWduc15XaW5QYXRoXl58fDIwMjAwNTA2MTcwODIyfDIwMjAwNTA2MTcwODIyfHx8fHx8fDIwMjAwNTA2MTcwODIyfHx8fHx8fHwyMDIwMDUwNjE3MDgyMnx8fEZ8fDEKT0JYfDF8VFh8dHQtMDAwNS0xMV5PeHlnZW5EZXZeV2VsY2hBbGx5bl5efHxWZW50dXJpfHx8fHx8Rnx8fDIwMjAwNTA2MTcwODIyfHwK"
  }
}
EOF

Quindi, esegui questo comando per inviare la richiesta REST:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages:ingest"

PowerShell

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:

@'
{
  "message": {
    "data": "TVNIfF5+XCZ8TXkgRUhSfE15IFRlc3QgRmFjaWxpdHl8fE15IEVIUiBGYWNpbGl0eXwyMDE1MDkyNjE0MDU1MXx8T1JVXlIwMV5PUlVfUjAxfE15LUxPSV81LjBfMS4xLU5HfFR8Mi41LjF8fHxBTHxBTHx8fHx8ClNGVHxHb29nbGVeRHx2MXxIZWFsdGhjYXJlIEFQSXwxfHwyMDE5MDYwMXxodHRwczovL2V4YW1wbGUuY29tL2hlYWx0aGNhcmUvClBJRHwxfDQwOTAzMzEzMjBeXl5TSU1VTEFUT1IgTVJOXk1STnw0MDkwMzMxMzIwXl5eU0lNVUxBVE9SIE1STl5NUk5+Mjg4ODUyNzE1NF5eXk5IU05CUl5OSFNOTUJSfHxEYXZpc15DaGVsc2VhXl5eTWlzc15eQ1VSUkVOVHx8MjAwOTEwMTcwMDAwMDB8Rnx8fDE4MSBUcmFuc21pc3Npb24gUm9hZF5eTG9uZG9uXl5LRzIyIDlIWF5HQlJeSE9NRXx8MDIwIDgxMjIgOTk0N15IT01FfHx8fHx8fHx8SF5Bc2lhbiBvciBBc2lhbiBCcml0aXNoIC0gSW5kaWFuXl5efHx8fHx8fHwKUFYxfDF8SXxPdGhlcldhcmReTWFpblJvb21eQmVkIDFeU2ltdWxhdGVkIEhvc3BpdGFsXl5CRUReTWFpbiBCdWlsZGluZ140fDI4Ynx8fEMwMDNeQ3VkZHleS2V2aW5eXl5Ecl5eXkRSTkJSXlBSU05MXl5eT1JHRFJ8fHxVUk98fHx8fHx8fHwxMjUxMzI0NzIzMjIzODk0ODc4M15eXl52aXNpdGlkfHx8fHx8fHx8fHx8fHx8fHx8fHx8fEFSUklWRUR8fHwyMDIwMDUwNjE3MDgyMnx8Ck9SQ3xSRXw4MzM1ODI2Mzl8MzI2NjIzODE5M3x8Q018fHx8MjAyMDA1MDYxNzA4MjIKT0JSfDF8ODMzNTgyNjM5fDMyNjYyMzgxOTN8dXMtMDAwNV5WaXRhbCBTaWduc15XaW5QYXRoXl58fDIwMjAwNTA2MTcwODIyfDIwMjAwNTA2MTcwODIyfHx8fHx8fDIwMjAwNTA2MTcwODIyfHx8fHx8fHwyMDIwMDUwNjE3MDgyMnx8fEZ8fDEKT0JYfDF8VFh8dHQtMDAwNS0xMV5PeHlnZW5EZXZeV2VsY2hBbGx5bl5efHxWZW50dXJpfHx8fHx8Rnx8fDIwMjAwNTA2MTcwODIyfHwK"
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Quindi, esegui questo comando per inviare la richiesta REST:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages:ingest" | Select-Object -Expand Content
Poiché lo schema del messaggio HL7v2 corrisponde a quello dell'archivio HL7v2, la risposta contiene una stringa JSON con l'URL personalizzato nel campo ORU_R01.SFT.7.

Euristica del parser con un segmento personalizzato

L'esempio seguente mostra come il parser HL7v2 utilizza l'euristica per analizzare un messaggio con configurazione minore nell'archivio HL7v2.

L'esempio utilizza il seguente messaggio HL7v2:

MSH|^~\&$|||||||ADT^A01|||2.1
EVN|\P\\L\\H\\N\
PID|1
ZCD|1

Il messaggio HL7v2 non è standard perché il segmento ZCD non è definito nello standard HL7v2.

Crea un archivio HL7v2 con lo schema personalizzato

Per creare un archivio HL7v2 con lo schema personalizzato, utilizza il metodo projects.locations.datasets.hl7V2Stores.create.

Tieni presente che la configurazione utilizza solo i seguenti tre campi e nessun array schemas o types:

  • "unexpectedSegmentHandling": "PARSE"
  • "ignoreMinOccurs": "true"
  • "schematizedParsingType": "HARD_FAIL"

Senza specificare altro sulla definizione del messaggio o sui suoi tipi, l'analizzatore sintattico HL7v2 determina che il messaggio è un messaggio ADT_A01 e analizza i segmenti MSH, EVN e PID, nonché il segmento ZCD personalizzato.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • LOCATION: la posizione del set di dati padre
  • DATASET_ID: set di dati padre dell'archivio HL7v2
  • HL7V2_STORE_ID: l'ID store HL7v2

Corpo JSON della richiesta:

{
  "parserConfig": {
    "schema": {
      "unexpectedSegmentHandling": "PARSE",
      "ignoreMinOccurs": "true",
      "schematizedParsingType": "HARD_FAIL"
    }
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:

cat > request.json << 'EOF'
{
  "parserConfig": {
    "schema": {
      "unexpectedSegmentHandling": "PARSE",
      "ignoreMinOccurs": "true",
      "schematizedParsingType": "HARD_FAIL"
    }
  }
}
EOF

Quindi, esegui questo comando per inviare la richiesta REST:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores?hl7V2StoreId=HL7V2_STORE_ID"

PowerShell

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:

@'
{
  "parserConfig": {
    "schema": {
      "unexpectedSegmentHandling": "PARSE",
      "ignoreMinOccurs": "true",
      "schematizedParsingType": "HARD_FAIL"
    }
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Quindi, esegui questo comando per inviare la richiesta REST:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores?hl7V2StoreId=HL7V2_STORE_ID" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

importa e analizza il messaggio HL7v2 utilizzando lo schema personalizzato

Importare la versione con codifica base 64 del messaggio HL7v2.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • LOCATION: la posizione del set di dati padre
  • DATASET_ID: set di dati padre dell'archivio HL7v2
  • HL7V2_STORE_ID: l'ID store HL7v2

Corpo JSON della richiesta:

{
  "message": {
    "data": "TVNIfF5+XCYkfHx8fHx8fEFEVF5BMDF8fHwyLjENRVZOfFxQXExcSFxOXA1QSUR8MQ1aQ0R8MQ=="
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:

cat > request.json << 'EOF'
{
  "message": {
    "data": "TVNIfF5+XCYkfHx8fHx8fEFEVF5BMDF8fHwyLjENRVZOfFxQXExcSFxOXA1QSUR8MQ1aQ0R8MQ=="
  }
}
EOF

Quindi, esegui questo comando per inviare la richiesta REST:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages:ingest"

PowerShell

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:

@'
{
  "message": {
    "data": "TVNIfF5+XCYkfHx8fHx8fEFEVF5BMDF8fHwyLjENRVZOfFxQXExcSFxOXA1QSUR8MQ1aQ0R8MQ=="
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Quindi, esegui questo comando per inviare la richiesta REST:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages:ingest" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

Parser che utilizza un messaggio HL7v2 con campi mancanti

L'esempio seguente mostra come utilizzare le definizioni di tipo e gruppo per analizzare questo messaggio HL7v2:

MSH|^~\&|||||20100101000000||ORM^O01^O01|23701|1|2.3||
PID|11|SMITH
PV1|11
PID|22|JOHN
PV1|22
ORC|3
OBX|4
NTE|5
NTE|6
OBX|7
NTE|8

Il messaggio HL7v2 non è standard perché utilizza solo alcuni campi (in alcuni casi un singolo campo) in tutti i segmenti tranne MSH. Ad esempio, lo standard HL7v2 richiede che il segmento PID contenga campi come la lingua principale, l'indirizzo e la data di nascita del paziente, ma i segmenti PID nel messaggio di esempio contengono solo un ID per il paziente e il nome o il cognome del paziente.

Il messaggio HL7v2 segue la sintassi HL7, ma per il resto è quasi completamente personalizzato.

Crea un archivio HL7v2 con lo schema personalizzato

Prima di creare un archivio HL7v2 con lo schema personalizzato, leggi le seguenti proprietà dell'oggetto ParserConfig utilizzato nello schema:

Array schemas:

  • mshField è impostato sul dodicesimo campo (separato da una barra verticale | carattere) del primo segmento del messaggio. Il valore del campo è 2.3. Di conseguenza, il schema che fornisci all'archivio HL7v2 verrà applicato a qualsiasi messaggio HL7v2 corrispondente a mshField e value.
  • Il tipo di messaggio, ORM, viene specificato con un array members contenente le seguenti informazioni:
    • Il tipo di segmento per il messaggio ORM è l'intestazione del segmento del messaggio o MSH
    • Un gruppo chiamato "Paziente" che ha un maxOccurs di 2.
      • Un altro gruppo members nidificato all'interno del gruppo "Paziente" che contiene il tipo di segmento corrispondente al gruppo "Paziente". Il tipo di segmento è PID.
      • Un altro gruppo chiamato "Visita pazienti". Come "Paziente", esiste un segmento corrispondente a "Visita del paziente". Il tipo di segmento è PV1.
    • Un gruppo denominato "Ordine" che non ha un numero massimo o minimo di occorrenze.
      • Un altro gruppo members nidificato nel gruppo "Ordine" contenente il tipo di segmento corrispondente al gruppo "Ordine". Il tipo di segmento è ORC.
      • Un altro gruppo chiamato "Observation", che ha un proprio array members.
        • L'array members contiene due segmenti mappati a "Osservazione": OBX e NTE. OBX ha un valore maxOccurs pari a 1.

Array types:

  • Come l'array schemas, mshField è impostato sul dodicesimo campo (separato da una barra verticale | carattere) del primo segmento del messaggio. Il valore del campo è 2.3. Di conseguenza, il types che fornisci all'archivio HL7v2 verrà applicato a qualsiasi messaggio HL7v2 corrispondente a mshField e value.
  • I tipi di dati ST e SI sono dichiarati come primitive STRING. Poiché vengono dichiarati solo ST e SI, il messaggio non ha tipi personalizzati.
  • Il gruppo Patient ha un valore maxOccurs pari a 2 e un tipo di segmento pari a PID, quindi nei campi PID vengono dichiarati due tipi. Entrambi i tipi sono SI.
  • Gli altri tipi di segmenti vengono elencati con i campi e i tipi pertinenti. Tutti i segmenti rimanenti hanno una singola occorrenza e utilizzano il tipo SI.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • LOCATION: la posizione del set di dati padre
  • DATASET_ID: set di dati padre dell'archivio HL7v2
  • HL7V2_STORE_ID: l'ID store HL7v2

Corpo JSON della richiesta:

{
  "parserConfig": {
    "schema": {
      "schematizedParsingType": "HARD_FAIL",
      "unexpectedSegmentHandling": "PARSE",
      "schemas": [
        {
          "version": [
            {
              "mshField": "12",
              "value": "2.3"
            }
          ],
          "messageSchemaConfigs": {
            "ORM_O01": {
              "name": "ORM_O01",
              "members": [
                {
                  "segment": {
                    "type": "MSH"
                  }
                },
                {
                  "group": {
                    "name": "Patient",
                    "maxOccurs": 2,
                    "members": [
                      {
                        "segment": {
                          "type": "PID"
                        }
                      },
                      {
                        "group": {
                          "name": "Patient Visit",
                          "members": [
                            {
                              "segment": {
                                "type": "PV1"
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "group": {
                    "name": "Order",
                    "members": [
                      {
                        "segment": {
                          "type": "ORC"
                        }
                      },
                      {
                        "group": {
                          "name": "Observation",
                          "members": [
                            {
                              "segment": {
                                "type": "OBX",
                                "maxOccurs": 1
                              }
                            },
                            {
                              "segment": {
                                "type": "NTE"
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            }
          }
        }
      ],
      "types": [
        {
          "version": [
            {
              "mshField": "12",
              "value": "2.3"
            }
          ],
          "type": [
            {
              "name": "ST",
              "primitive": "STRING"
            },
            {
              "name": "SI",
              "primitive": "STRING"
            },
            {
              "name": "PID",
              "fields": [
                {
                  "name": "1",
                  "type": "SI"
                },
                {
                  "name": "2",
                  "type": "SI"
                }
              ]
            },
            {
              "name": "PV1",
              "fields": [
                {
                  "name": "1",
                  "type": "SI"
                }
              ]
            },
            {
              "name": "ORC",
              "fields": [
                {
                  "name": "1",
                  "type": "SI"
                }
              ]
            },
            {
              "name": "OBX",
              "fields": [
                {
                  "name": "1",
                  "type": "SI"
                }
              ]
            },
            {
              "name": "NTE",
              "fields": [
                {
                  "name": "1",
                  "type": "SI"
                }
              ]
            }
          ]
        }
      ],
    },
    "version": "V3"
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:

cat > request.json << 'EOF'
{
  "parserConfig": {
    "schema": {
      "schematizedParsingType": "HARD_FAIL",
      "unexpectedSegmentHandling": "PARSE",
      "schemas": [
        {
          "version": [
            {
              "mshField": "12",
              "value": "2.3"
            }
          ],
          "messageSchemaConfigs": {
            "ORM_O01": {
              "name": "ORM_O01",
              "members": [
                {
                  "segment": {
                    "type": "MSH"
                  }
                },
                {
                  "group": {
                    "name": "Patient",
                    "maxOccurs": 2,
                    "members": [
                      {
                        "segment": {
                          "type": "PID"
                        }
                      },
                      {
                        "group": {
                          "name": "Patient Visit",
                          "members": [
                            {
                              "segment": {
                                "type": "PV1"
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "group": {
                    "name": "Order",
                    "members": [
                      {
                        "segment": {
                          "type": "ORC"
                        }
                      },
                      {
                        "group": {
                          "name": "Observation",
                          "members": [
                            {
                              "segment": {
                                "type": "OBX",
                                "maxOccurs": 1
                              }
                            },
                            {
                              "segment": {
                                "type": "NTE"
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            }
          }
        }
      ],
      "types": [
        {
          "version": [
            {
              "mshField": "12",
              "value": "2.3"
            }
          ],
          "type": [
            {
              "name": "ST",
              "primitive": "STRING"
            },
            {
              "name": "SI",
              "primitive": "STRING"
            },
            {
              "name": "PID",
              "fields": [
                {
                  "name": "1",
                  "type": "SI"
                },
                {
                  "name": "2",
                  "type": "SI"
                }
              ]
            },
            {
              "name": "PV1",
              "fields": [
                {
                  "name": "1",
                  "type": "SI"
                }
              ]
            },
            {
              "name": "ORC",
              "fields": [
                {
                  "name": "1",
                  "type": "SI"
                }
              ]
            },
            {
              "name": "OBX",
              "fields": [
                {
                  "name": "1",
                  "type": "SI"
                }
              ]
            },
            {
              "name": "NTE",
              "fields": [
                {
                  "name": "1",
                  "type": "SI"
                }
              ]
            }
          ]
        }
      ],
    },
    "version": "V3"
  }
}
EOF

Quindi, esegui questo comando per inviare la richiesta REST:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores?hl7V2StoreId=HL7V2_STORE_ID"

PowerShell

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:

@'
{
  "parserConfig": {
    "schema": {
      "schematizedParsingType": "HARD_FAIL",
      "unexpectedSegmentHandling": "PARSE",
      "schemas": [
        {
          "version": [
            {
              "mshField": "12",
              "value": "2.3"
            }
          ],
          "messageSchemaConfigs": {
            "ORM_O01": {
              "name": "ORM_O01",
              "members": [
                {
                  "segment": {
                    "type": "MSH"
                  }
                },
                {
                  "group": {
                    "name": "Patient",
                    "maxOccurs": 2,
                    "members": [
                      {
                        "segment": {
                          "type": "PID"
                        }
                      },
                      {
                        "group": {
                          "name": "Patient Visit",
                          "members": [
                            {
                              "segment": {
                                "type": "PV1"
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "group": {
                    "name": "Order",
                    "members": [
                      {
                        "segment": {
                          "type": "ORC"
                        }
                      },
                      {
                        "group": {
                          "name": "Observation",
                          "members": [
                            {
                              "segment": {
                                "type": "OBX",
                                "maxOccurs": 1
                              }
                            },
                            {
                              "segment": {
                                "type": "NTE"
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            }
          }
        }
      ],
      "types": [
        {
          "version": [
            {
              "mshField": "12",
              "value": "2.3"
            }
          ],
          "type": [
            {
              "name": "ST",
              "primitive": "STRING"
            },
            {
              "name": "SI",
              "primitive": "STRING"
            },
            {
              "name": "PID",
              "fields": [
                {
                  "name": "1",
                  "type": "SI"
                },
                {
                  "name": "2",
                  "type": "SI"
                }
              ]
            },
            {
              "name": "PV1",
              "fields": [
                {
                  "name": "1",
                  "type": "SI"
                }
              ]
            },
            {
              "name": "ORC",
              "fields": [
                {
                  "name": "1",
                  "type": "SI"
                }
              ]
            },
            {
              "name": "OBX",
              "fields": [
                {
                  "name": "1",
                  "type": "SI"
                }
              ]
            },
            {
              "name": "NTE",
              "fields": [
                {
                  "name": "1",
                  "type": "SI"
                }
              ]
            }
          ]
        }
      ],
    },
    "version": "V3"
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Quindi, esegui questo comando per inviare la richiesta REST:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores?hl7V2StoreId=HL7V2_STORE_ID" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

importa e analizza il messaggio HL7v2 utilizzando lo schema personalizzato

Importare una versione con codifica Base64 del messaggio HL7v2.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • LOCATION: la posizione del set di dati padre
  • DATASET_ID: set di dati padre dell'archivio HL7v2
  • HL7V2_STORE_ID: l'ID store HL7v2

Corpo JSON della richiesta:

{
  "message": {
    "data": "TVNIfF5+XCZ8fHx8fDIwMTAwMTAxMDAwMDAwfHxPUk1eTzAxXk8wMXwyMzcwMXwxfDIuM3x8DVBJRHwxMXxTTUlUSA1QVjF8MTENUElEfDIyfEpPSE4NUFYxfDIyDU9SQ3wzDU9CWHw0DU5URXw1DU5URXw2DU9CWHw3DU5URXw4"
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:

cat > request.json << 'EOF'
{
  "message": {
    "data": "TVNIfF5+XCZ8fHx8fDIwMTAwMTAxMDAwMDAwfHxPUk1eTzAxXk8wMXwyMzcwMXwxfDIuM3x8DVBJRHwxMXxTTUlUSA1QVjF8MTENUElEfDIyfEpPSE4NUFYxfDIyDU9SQ3wzDU9CWHw0DU5URXw1DU5URXw2DU9CWHw3DU5URXw4"
  }
}
EOF

Quindi, esegui questo comando per inviare la richiesta REST:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages:ingest"

PowerShell

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory attuale:

@'
{
  "message": {
    "data": "TVNIfF5+XCZ8fHx8fDIwMTAwMTAxMDAwMDAwfHxPUk1eTzAxXk8wMXwyMzcwMXwxfDIuM3x8DVBJRHwxMXxTTUlUSA1QVjF8MTENUElEfDIyfEpPSE4NUFYxfDIyDU9SQ3wzDU9CWHw0DU5URXw1DU5URXw2DU9CWHw3DU5URXw4"
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Quindi, esegui questo comando per inviare la richiesta REST:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages:ingest" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente:

Per una versione più leggibile del campo data nella risposta, espandi la sezione seguente:

Espandi

{
  "data": {
    "ORM_O01": [
      {
        "MSH": [
          {
            "0": "MSH",
            "1": "|",
            "2": "^~\\\\\\u0026",
            "3": null,
            "4": null,
            "5": null,
            "6": null,
            "7": "20100101000000",
            "8": null,
            "9": {
              "1": "ORM",
              "2": "O01",
              "3": "O01"
            },
            "10": "23701",
            "11": {
              "1": "1"
            },
            "12": {
              "1": "2.3"
            },
            "13": null,
            "14": null
          }
        ],
        "Order": [
          {
            "ORC": [
              {
                "0": "ORC",
                "1": [
                  "3"
                ]
              }
            ],
            "Observation": [
              {
                "NTE": [
                  {
                    "0": "NTE",
                    "1": [
                      "5"
                    ]
                  },
                  {
                    "0": "NTE",
                    "1": [
                      "6"
                    ]
                  }
                ],
                "OBX": {
                  "0": "OBX",
                  "1": [
                    "4"
                  ]
                }
              },
              {
                "NTE": [
                  {
                    "0": "NTE",
                    "1": [
                      "8"
                    ]
                  }
                ],
                "OBX": {
                  "0": "OBX",
                  "1": [
                    "7"
                  ]
                }
              }
            ]
          }
        ],
        "Patient": [
          {
            "PID": [
              {
                "0": "PID",
                "1": [
                  "11"
                ],
                "2": [
                  "SMITH"
                ]
              }
            ],
            "Patient Visit": [
              {
                "PV1": [
                  {
                    "0": "PV1",
                    "1": [
                      "11"
                    ]
                  }
                ]
              }
            ]
          },
          {
            "PID": [
              {
                "0": "PID",
                "1": [
                  "22"
                ],
                "2": [
                  "JOHN"
                ]
              }
            ],
            "Patient Visit": [
              {
                "PV1": [
                  {
                    "0": "PV1",
                    "1": [
                      "22"
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
}