Exemplos de analisador de esquema personalizado

Esta página contém exemplos de casos de uso, de simples a complexos, que mostram quando e como configurar um analisador de esquemas personalizado em um armazenamento HL7v2. Cada caso de uso contém uma mensagem HL7v2 na qual o analisador de esquema personalizado é baseado.

Terminador de segmento personalizado e campo personalizado

Os exemplos desta seção usam uma mensagem de amostra que não é padrão das seguintes maneiras:

  • Os delimitadores de segmento da mensagem de amostra são novas linhas (\n) em vez dos retornos de carro padrão (\r).
  • A mensagem de exemplo tem um segmento de software (SFT) com um subcampo adicional: um campo personalizado que especifica o 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

Atualizar um armazenamento HL7v2 com o terminador de segmento personalizado

Especifique o terminador de segmento se as mensagens usarem um terminador não padrão, como a mensagem de amostra fornecida em Terminador de segmento e campo personalizado. A mensagem de exemplo usa o \n não padrão como o terminador de segmento.

Os exemplos a seguir mostram como configurar segmentTerminator em ParserConfig ao criar um armazenamento HL7v2. O terminador de segmento é definido como Cg==, que é a codificação base-64 de \n.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: é o ID do projeto do Google Cloud.
  • LOCATION: o local do conjunto de dados pai
  • DATASET_ID: o conjunto de dados pai da loja HL7v2
  • HL7V2_STORE_ID: o ID do repositório HL7v2

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

Depois execute o comando a seguir para enviar a solicitação 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

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

Depois execute o comando a seguir para enviar a solicitação 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

Você receberá uma resposta JSON semelhante a esta:

Atualizar um armazenamento HL7v2 com o esquema personalizado

É possível atualizar um armazenamento HL7v2 com um esquema personalizado definido no formato JSON. Depois de configurar um esquema personalizado que inclua o campo adicional no segmento SFT, ingira a mensagem de amostra. Para informações sobre como especificar um campo personalizado, consulte SchemaPackage.

A configuração especificada neste exemplo tem o seguinte comportamento:

  • Reescreve a definição do segmento SFT para que o campo de URL seja 7.
  • O filtro version determina a quais mensagens recebidas o esquema personalizado se aplica com base em um campo no cabeçalho do segmento de mensagem (MSH). Se você não fornecer um filtro version, o esquema será aplicado a todas as mensagens HL7v2 na loja HL7v2. Neste exemplo, o segmento personalizado SFT se aplica quando o campo de aplicativo de envio contém My EHR.
  • O campo do campo extra é chamado de 7 para consistência com o resto da especificação. Você também pode nomeá-lo como URL para ser mais descritivo.

Para atualizar o armazenamento com o esquema personalizado, use o método projects.locations.datasets.hl7V2Stores.patch.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do seu projeto do Google Cloud;
  • LOCATION: o local do conjunto de dados;
  • DATASET_ID: o conjunto de dados pai da loja HL7v2
  • HL7V2_STORE_ID: o ID do repositório HL7v2

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

Depois execute o comando a seguir para enviar a solicitação 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

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

@'
{
  "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

Depois execute o comando a seguir para enviar a solicitação 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
O exemplo usa a versão recomendada V3 do analisador.

Faça a ingestão e análise da mensagem HL7v2 usando o esquema personalizado

Os exemplos a seguir mostram como processar uma versão codificada em base-64 da mensagem HL7v2 do terminador de segmento personalizado e campo personalizado. Para processar a mensagem HL7v2, use o método projects.locations.datasets.hl7V2Stores.messages.ingest.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: é o ID do projeto do Google Cloud.
  • LOCATION: o local do conjunto de dados pai
  • DATASET_ID: o conjunto de dados pai da loja HL7v2
  • HL7V2_STORE_ID: o ID do repositório HL7v2

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

Depois execute o comando a seguir para enviar a solicitação 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

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

Depois execute o comando a seguir para enviar a solicitação 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
Como o esquema da mensagem HL7v2 corresponde ao esquema do armazenamento HL7v2, a resposta contém uma string JSON com o URL personalizado no campo ORU_R01.SFT.7.

Heurísticas do analisador usando um segmento personalizado

O exemplo a seguir mostra como o analisador HL7v2 usa heurísticas para analisar uma mensagem com configuração menor no armazenamento HL7v2.

O exemplo usa a seguinte mensagem HL7v2:

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

A mensagem HL7v2 não é padrão porque o segmento ZCD não está definido no padrão HL7v2.

Criar um armazenamento HL7v2 com o esquema personalizado

Para criar um armazenamento HL7v2 com o esquema personalizado, use o método projects.locations.datasets.hl7V2Stores.create.

A configuração usa apenas os três campos a seguir e nenhuma matriz schemas ou types:

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

Sem especificar nada sobre a definição da mensagem ou os tipos dela, o analisador HL7v2 determina que a mensagem é ADT_A01 e analisará os segmentos MSH, EVN e PID, além do segmento personalizado ZCD.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: é o ID do projeto do Google Cloud.
  • LOCATION: o local do conjunto de dados pai
  • DATASET_ID: o conjunto de dados pai da loja HL7v2
  • HL7V2_STORE_ID: o ID do repositório HL7v2

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

Depois execute o comando a seguir para enviar a solicitação 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

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

Depois execute o comando a seguir para enviar a solicitação 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

Você receberá uma resposta JSON semelhante a esta:

Faça a ingestão e análise da mensagem HL7v2 usando o esquema personalizado

Ingerir a versão codificada em base64 da mensagem HL7v2.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: é o ID do projeto do Google Cloud.
  • LOCATION: o local do conjunto de dados pai
  • DATASET_ID: o conjunto de dados pai da loja HL7v2
  • HL7V2_STORE_ID: o ID do repositório HL7v2

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

Depois execute o comando a seguir para enviar a solicitação 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

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

Depois execute o comando a seguir para enviar a solicitação 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

Você receberá uma resposta JSON semelhante a esta:

Parser usando uma mensagem HL7v2 com campos ausentes

O exemplo a seguir mostra como usar definições de tipo e grupo para analisar esta mensagem 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

A mensagem HL7v2 não é padrão porque usa apenas alguns campos (em alguns casos, um único campo) em todos os segmentos, exceto MSH. Por exemplo, o padrão HL7v2 exige que o segmento PID contenha campos como o idioma principal, o endereço e a data de nascimento do paciente, mas os segmentos PID na mensagem de exemplo contêm apenas um ID do paciente e o nome ou sobrenome dele.

A mensagem HL7v2 segue a sintaxe HL7, mas é quase totalmente personalizada.

Criar um armazenamento HL7v2 com o esquema personalizado

Antes de criar um armazenamento HL7v2 com o esquema personalizado, leia as seguintes propriedades do objeto ParserConfig usado no esquema:

Matriz schemas:

  • O mshField é definido como o 12º campo (separados por um caractere barra vertical |) do primeiro segmento da mensagem. O valor do campo é 2.3. Como resultado, o schema fornecido à loja HL7v2 será aplicado a qualquer mensagem HL7v2 correspondente ao mshField e value.
  • O tipo de mensagem, ORM, é especificado com uma matriz members contendo as seguintes informações:
    • O tipo de segmento da mensagem ORM é o cabeçalho do segmento de mensagem, ou MSH.
    • Um grupo chamado "Paciente" com maxOccurs igual a 2.
      • Outro grupo members aninhado no grupo "Paciente" que contém o tipo de segmento correspondente ao grupo "Paciente". Esse tipo de segmento é PID.
      • Outro grupo chamado "Visita do paciente". Assim como "Paciente", há um segmento correspondente a "Visita do paciente". Esse tipo de segmento é PV1.
    • Um grupo chamado "Pedido" que não tem ocorrências máximas ou mínimas.
      • Outro grupo members aninhado no grupo "Pedido" que contém o tipo de segmento correspondente ao grupo "Pedido". Esse tipo de segmento é ORC.
      • Outro grupo chamado "Observação", que tem a própria matriz members.
        • A matriz members contém dois segmentos que são mapeados para "Observação": OBX e NTE. OBX tem um maxOccurs de 1.

Matriz types:

  • Assim como a matriz schemas, mshField é definido como o 12º campo (separados por um caractere de barra vertical |) do primeiro segmento da mensagem. O valor do campo é 2.3. Como resultado, o types fornecido à loja HL7v2 será aplicado a qualquer mensagem HL7v2 correspondente ao mshField e value.
  • Os tipos de dados ST e SI são declarados como primitivos STRING. Como apenas ST e SI são declarados, a mensagem não tem tipos personalizados.
  • O grupo Patient tem um maxOccurs de 2 e um tipo de segmento de PID. Portanto, dois tipos são declarados nos campos PID. Ambos os tipos são SI.
  • Os outros tipos de segmento são listados com os campos e tipos relevantes. Todos os segmentos restantes têm uma única ocorrência e usam o tipo SI.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: é o ID do projeto do Google Cloud.
  • LOCATION: o local do conjunto de dados pai
  • DATASET_ID: o conjunto de dados pai da loja HL7v2
  • HL7V2_STORE_ID: o ID do repositório HL7v2

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

Depois execute o comando a seguir para enviar a solicitação 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

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

@'
{
  "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

Depois execute o comando a seguir para enviar a solicitação 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

Você receberá uma resposta JSON semelhante a esta:

Faça a ingestão e análise da mensagem HL7v2 usando o esquema personalizado

Ingerir uma versão codificada em base64 da mensagem HL7v2.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: é o ID do projeto do Google Cloud.
  • LOCATION: o local do conjunto de dados pai
  • DATASET_ID: o conjunto de dados pai da loja HL7v2
  • HL7V2_STORE_ID: o ID do repositório HL7v2

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

Depois execute o comando a seguir para enviar a solicitação 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

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

Depois execute o comando a seguir para enviar a solicitação 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

Você receberá uma resposta JSON semelhante a esta:

Para uma versão mais legível do campo data na resposta, abra a seguinte seção:

Abrir

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