Use um esquema personalizado para analisar mensagens HL7v2

Esta página explica como configurar um esquema personalizado para analisar mensagens HL7v2 que não estão em conformidade com a norma HL7v2.

Se estiver a converter mensagens HL7v2 para outro formato, como FHIR ou OMOP, primeiro, tem de conseguir analisar e carregar as suas mensagens HL7v2 para um arquivo HL7v2. Use este guia para garantir que consegue analisar e carregar mensagens HL7v2 com êxito.

Vista geral

Por vezes, as suas mensagens HL7v2 podem não estar em conformidade com as normas HL7v2. Por exemplo, as suas mensagens HL7v2 podem conter segmentos que não estão incluídos na norma HL7v2 ou os segmentos podem estar desordenados. Quando tenta carregar mensagens não conformes, pode encontrar erros.

Para carregar as mensagens HL7v2 não conformes, tem de modificar o objeto ParserConfig quando cria ou edita um arquivo HL7v2. Dentro de ParserConfig, pode configurar a análise esquematizada com base em tipos e segmentos personalizados, determinar como são processadas as mensagens HL7v2 rejeitadas e muito mais.

Antes de configurar o ParserConfig, leia as secções seguintes para compreender as mensagens HL7v2, as definições de tipos e as definições de grupos.

Mensagens HL7v2

Esta secção oferece uma breve vista geral da estrutura das mensagens HL7v2, que será útil ao configurar o analisador de esquemas personalizados.

As mensagens HL7v2 baseiam-se em eventos e descrevem transições de estado e atualizações parciais aos registos clínicos. Cada mensagem HL7v2 tem um tipo de mensagem que define a finalidade da mensagem. Os tipos de mensagens usam um código de três carateres e são especificados no cabeçalho do segmento principal obrigatório (MSH) da mensagem. Existem dezenas de tipos de mensagens, incluindo os seguintes:

  • ADT: usado para transmitir partes dos dados de administração de pacientes de um paciente
  • ORU: usado para transmitir resultados de observação
  • ORM: usado para transmitir informações sobre uma encomenda

Reveja a estrutura das mensagens HL7v2, que incluem segmentos, campos, componentes e subcomponentes:

Figura 1. Diagrama da estrutura de uma mensagem HL7v2.

Na figura 1, as seguintes partes da mensagem HL7v2 estão etiquetadas: o segmento, o cabeçalho do segmento, os campos e os componentes.

Por predefinição, as mensagens HL7v2 usam os seguintes carateres para separar as informações. Pode substituir os delimitadores, os separadores e os terminadores de uma mensagem HL7v2 por mensagem no segmento MSH.

  • Terminador de segmento: \r

    Se as suas mensagens HL7v2 usarem um separador de segmentos diferente, consulte o exemplo Terminador de segmentos personalizado e campo personalizado.

  • Separador de campos: |

  • Separador de componentes: ^

  • Separador de subcomponentes: &

  • Separador de repetição: ~

  • Carateres de escape: \

Definições de tipos e grupos

A compreensão do analisador sintático do esquema envolve a utilização de definições de tipo e definições de grupo.

Definição do tipo

O termo "tipos" abrange o seguinte:

  • Tipos de segmentos HL7v2, como MSH (cabeçalho do segmento de mensagem), DG1 (diagnóstico) e PID (identificação do paciente)

    Para ver uma lista de todos os tipos de segmentos HL7v2, consulte as definições de segmentos.

  • Tipos de dados HL7v2, como ST (dados de string), TS (indicação de tempo) e SI (ID da sequência)

    Para uma lista de todos os tipos de dados predefinidos de HL7v2, consulte Tipos de dados.

Especifica os tipos no campo name no objeto Type.

Os tipos usam um formato modular que consiste num segmento e nos campos, componentes e subcomponentes do segmento. As informações num objeto Type indicam como analisar ou interpretar um segmento e respondem a perguntas como as seguintes:

  • Que campos estão no segmento?
  • Quais são os tipos de dados dos campos?

O exemplo seguinte mostra a definição de tipo para um segmento ZCD personalizado:

{
  "type": {
    "name": "ZCD", // Segment type
    "fields": [
      {
        "name": "1",
        "type": "ST", // Primitive string data type
        "minOccurs": 1, // Must occur at least once
        "maxOccurs": 1 // Not repeated, because it can only occur once
      },
      {
        "name": "2",
        "type": "A", // Custom data type
        "minOccurs": 1 // Repeated, because maxOccurs is not defined
      }
    ]
  }
}

Neste exemplo, o segmento ZCD contém dois campos, denominados 1 e 2. O tipo de dados de 1 é ST, que é um tipo de dados de string primitivo. O tipo de dados de 2 é A, que é um tipo de dados personalizado.

A definição de tipo seguinte para o tipo de dados personalizado A mostra que também contém outro tipo de dados personalizado denominado B.

{
  "type": {
    "name": "A", // Custom data type
    "fields": [
      {
        "name": "1",
        "type": "ST", // Primitive string data type
        "minOccurs": 1, // Must occur at least once
        "maxOccurs": 1 // Not repeated, because it can only occur once
      },
      {
        "name": "2",
        "type": "B", // Custom data type
        "minOccurs": 1,
        "maxOccurs": 1
      }
    ]
  }
}

O exemplo seguinte mostra a definição do tipo de dados personalizado B, que tem um campo denominado 1 com o tipo de dados ST e um campo denominado 2 que tem um tipo de dados de ST repetido:

{
  "type": {
    "name": "B", // Custom data type
    "fields": [
      {
        "name": "1",
        "type": "ST", // Primitive string data type
        "minOccurs": 1, // Must occur at least once
        "maxOccurs": 1 // Not repeated, because it can only occur once
      },
      {
        "name": "2",
        "type": "ST"
        "minOccurs": 1,
        "maxOccurs": 1
      }
    ]
  }
}

Com as informações sobre o segmento e os tipos de dados, pode estimar o aspeto do segmento ZCD na mensagem HL7v2 original. Este exemplo mostra a mensagem HL7v2 com o campo A repetido uma vez, o que é permitido porque maxOccurs não está definido no campo A:

ZCD|ZCD_field_1|A_field_1^B_component_1&B_component_2_repetition_1~A_field_1^B_component_1&B_component_2_repetition_2
Figura 2. Diagrama de uma definição de tipo.

Na figura 2, as seguintes partes da definição do tipo estão etiquetadas: o segmento, o cabeçalho do segmento, os campos, os componentes, os subcomponentes e as repetições.

Definição do grupo

Os grupos são definidos ao nível do segmento e indicam informações sobre os tipos de segmentos que podem aparecer em cada mensagem HL7v2.

Especifica grupos na matriz groups no objeto GroupOrSegment.

Considere o seguinte fragmento de uma estrutura de grupo para uma mensagem ADT_A01 HL7v2:

  • O primeiro segment na matriz members é MSH (cabeçalho do segmento de mensagem), porque MSH é obrigatório em todas as mensagens HL7v2.
  • Um group denominado Group 1.

    Este grupo só pode ocorrer um máximo de 2 vezes e contém o segmento personalizado ZCD.

    Normalmente, um group contém vários segmentos aninhados agrupados logicamente e outros grupos, mas, neste exemplo, Group 1 contém apenas um único segmento: ZCD.

{
  "ADT_A01": {
    "members": [
      {
        "segment": {
          "type": "MSH"
        }
      },
      {
        "group": {
          "name": "Group 1",
          "minOccurs": 1,
          "maxOccurs": "2",
          "members": [
            {
              "segment": {
                "type": "ZCD"
              }
            }
          ]
        }
      }
    ]
  }
}

Com as informações sobre os grupos, pode estimar o aspeto da mensagem HL7v2 original se ZCD ocorrer duas vezes na mensagem HL7v2, o que é permitido porque maxOccurs em Group 1 está definido como 2. O resto do segmento ZCD é desconhecido sem também conhecer a definição de tipo.

MSH|^~\&|||||20100308000000||ADT^A01|23701|1|2.3||
ZCD|ZCD_CONTENT
ZCD|ZCD_CONTENT
Figura 3. Diagrama de uma definição de grupo.

Na figura 3, as seguintes partes da definição do grupo estão etiquetadas: o segmento e o cabeçalho do segmento.

Configure um esquema personalizado num armazenamento de HL7v2

As secções seguintes explicam os componentes de um esquema personalizado e como configurar o esquema numa loja HL7v2.

Configuração do tipo de armazenamento HL7v2

Depois de compreender a definição do tipo de uma mensagem HL7v2, pode especificar uma configuração do tipo num armazenamento HL7v2. Para especificar a configuração, adicione uma matriz de types e uma matriz de version.

O exemplo seguinte mostra como especificar a configuração para os tipos apresentados na definição de tipo num armazenamento HL7v2.

Tenha em atenção que a configuração usa a matriz version para especificar os campos mshField e value. Estes campos correspondem a campos e componentes no segmento MSH.

A matriz types especificada aplica-se apenas a mensagens que tenham um segmento MSH que corresponda aos valores de mshField e value na matriz version. Isto permite-lhe carregar mensagens HL7v2 com diferentes versões para o mesmo armazenamento de HL7v2.

{
  "types": [
    {
      "version": [
        {
          "mshField": "12",
          "value": "2.3"
        }
      ],
      "type": [
        {
          "name": "ZCD", // Segment type
          "fields": [
            {
              "name": "1",
              "type": "ST",
              "minOccurs": 1,
              "maxOccurs": 1
            },
            {
              "name": "2",
              "type": "A",
              "minOccurs": 1
            }
          ]
        },
        {
          "name": "A", // Data type
          "fields": [
            {
              "name": "1",
              "type": "ST",
              "minOccurs": 1,
              "maxOccurs": 1
            },
            {
              "name": "2",
              "type": "B",
              "minOccurs": 1,
              "maxOccurs": 1
            }
          ]
        },
        {
          "name": "B", // Data type
          "fields": [
            {
              "name": "1",
              "type": "ST",
              "minOccurs": 1,
              "maxOccurs": 1
            },
            {
              "name": "2",
              "type": "ST"
            }
          ]
        }
      ]
    }
  ]
}

Configuração do grupo de armazenamentos de HL7v2

Pode usar grupos para configurar uma estrutura aninhada ao nível de uma "subscrição". Os grupos são especificados numa matriz members ao nível do segmento. A estrutura de um segmento é previsível e, normalmente, contém campos, componentes e subcomponentes, mas o próprio segmento pode estar em qualquer nível da mensagem HL7v2.

Tal como uma configuração de tipo, uma configuração de grupo usa um filtro version para lhe permitir carregar mensagens HL7v2 com versões diferentes para o mesmo arquivo HL7v2.

O exemplo seguinte mostra como especificar a configuração do grupo apresentado em Definição do grupo num armazenamento HL7v2:

{
  "version": [
    {
      "mshField": "12",
      "value": "2.3"
    }
  ],
  "messageSchemaConfigs": {
    "ADT_A01": {
      "members": [
        {
          "segment": {
            "type": "MSH"
          }
        },
        {
          "group": {
            "name": "Group 1",
            "maxOccurs": "2",
            "members": [
              "segment": {
                "type": "ZCD"
              }
            ]
          }
        }
      ]
    }
  }
}

Conclua a configuração do armazenamento de HL7v2

Quando combina a configuração de tipo e a configuração de grupo, pode determinar o aspeto da configuração completa do esquema personalizado na loja HL7v2. Também pode determinar que o esquema personalizado corresponde a uma mensagem HL7v2 com o seguinte aspeto:

MSH|^~\&|||||20100101000000||ADT^A01^A01|23701|1|2.3||
ZCD|ZCD_field_1|A_field_1^B_component_1&B_component_2_repetition_1~A_field_1^B_component_1&B_component_2_repetition_2

Expanda a secção seguinte para ver o esquema personalizado completo na armazenagem HL7v2 e, em seguida, continue a criar uma armazenagem HL7v2 que use o esquema personalizado:

Expandir

{
  "parserConfig": {
    "schema": {
      "schemas": [
        {
          "version": [
            {
              "mshField": "12",
              "value": "2.3"
            }
          ],
          "messageSchemaConfigs": {
            "ADT_A01": {
              "name": "ADT_A01",
              "members": [
                {
                  "segment": {
                    "type": "MSH",
                    "minOccurs": 1,
                    "maxOccurs": 1
                  }
                },
                {
                  "group": {
                    "name": "Group 1",
                    "minOccurs": 1,
                    "maxOccurs": "2",
                    "members": [
                      {
                        "segment": {
                          "type": "ZCD"
                        }
                      }
                    ]
                  }
                }
              ]
            }
          }
        }
      ],
      "types": [
        {
          "version": [
            {
              "mshField": "12",
              "value": "2.3"
            }
          ],
          "type": [
            {
              "name": "ZCD", // Segment type
              "fields": [
                {
                  "name": "1",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "2",
                  "type": "A"
                  "minOccurs": 1,
                  "maxOccurs": 1
                }
              ]
            },
            {
              "name": "A", // Data type
              "fields": [
                {
                  "name": "1",
                  "type": "ST"
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "2",
                  "type": "B"
                  "minOccurs": 1,
                  "maxOccurs": 1
                }
              ]
            },
            {
              "name": "B", // Data type
              "fields": [
                {
                  "name": "1",
                  "type": "ST"
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "2",
                  "type": "ST"
                  "minOccurs": 1
                }
              ]
            }
          ]
        }
      ]
    },
    "version": "V3"
  }
}

Crie um armazenamento HL7v2 com o esquema personalizado

Para criar um arquivo HL7v2 que use o esquema personalizado completo, conclua esta secção.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do seu Google Cloud projeto
  • LOCATION: a localização do conjunto de dados
  • DATASET_ID: o conjunto de dados principal do armazenamento de HL7v2
  • HL7V2_STORE_ID: o ID do armazenamento de HL7v2

Corpo JSON do pedido:

{
  "parserConfig": {
    "schema": {
      "schemas": [
        {
          "version": [
            {
              "mshField": "12",
              "value": "2.3"
            }
          ],
          "messageSchemaConfigs": {
            "ADT_A01": {
              "name": "ADT_A01",
              "members": [
                {
                  "segment": {
                    "type": "MSH",
                    "minOccurs": 1
                  }
                },
                {
                  "group": {
                    "name": "Group 1",
                    "minOccurs": 1,
                    "members": [
                      {
                        "segment": {
                          "type": "ZCD"
                        }
                      }
                    ]
                  }
                }
              ]
            }
          }
        }
      ],
      "types": [
        {
          "version": [
            {
              "mshField": "12",
              "value": "2.3"
            }
          ],
          "type": [
            {
              "name": "ZCD",
              "fields": [
                {
                  "name": "1",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "2",
                  "type": "A",
                  "minOccurs": 1
                }
              ]
            },
            {
              "name": "A",
              "fields": [
                {
                  "name": "1",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "2",
                  "type": "B",
                  "minOccurs": 1,
                  "maxOccurs": 1
                }
              ]
            },
            {
              "name": "B",
              "fields": [
                {
                  "name": "1",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "2",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                }
              ]
            }
          ]
        }
      ]
    },
    "version": "V3"
  }
}

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

cat > request.json << 'EOF'
{
  "parserConfig": {
    "schema": {
      "schemas": [
        {
          "version": [
            {
              "mshField": "12",
              "value": "2.3"
            }
          ],
          "messageSchemaConfigs": {
            "ADT_A01": {
              "name": "ADT_A01",
              "members": [
                {
                  "segment": {
                    "type": "MSH",
                    "minOccurs": 1
                  }
                },
                {
                  "group": {
                    "name": "Group 1",
                    "minOccurs": 1,
                    "members": [
                      {
                        "segment": {
                          "type": "ZCD"
                        }
                      }
                    ]
                  }
                }
              ]
            }
          }
        }
      ],
      "types": [
        {
          "version": [
            {
              "mshField": "12",
              "value": "2.3"
            }
          ],
          "type": [
            {
              "name": "ZCD",
              "fields": [
                {
                  "name": "1",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "2",
                  "type": "A",
                  "minOccurs": 1
                }
              ]
            },
            {
              "name": "A",
              "fields": [
                {
                  "name": "1",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "2",
                  "type": "B",
                  "minOccurs": 1,
                  "maxOccurs": 1
                }
              ]
            },
            {
              "name": "B",
              "fields": [
                {
                  "name": "1",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "2",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                }
              ]
            }
          ]
        }
      ]
    },
    "version": "V3"
  }
}
EOF

Em seguida, execute o seguinte comando para enviar o seu pedido 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

Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

@'
{
  "parserConfig": {
    "schema": {
      "schemas": [
        {
          "version": [
            {
              "mshField": "12",
              "value": "2.3"
            }
          ],
          "messageSchemaConfigs": {
            "ADT_A01": {
              "name": "ADT_A01",
              "members": [
                {
                  "segment": {
                    "type": "MSH",
                    "minOccurs": 1
                  }
                },
                {
                  "group": {
                    "name": "Group 1",
                    "minOccurs": 1,
                    "members": [
                      {
                        "segment": {
                          "type": "ZCD"
                        }
                      }
                    ]
                  }
                }
              ]
            }
          }
        }
      ],
      "types": [
        {
          "version": [
            {
              "mshField": "12",
              "value": "2.3"
            }
          ],
          "type": [
            {
              "name": "ZCD",
              "fields": [
                {
                  "name": "1",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "2",
                  "type": "A",
                  "minOccurs": 1
                }
              ]
            },
            {
              "name": "A",
              "fields": [
                {
                  "name": "1",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "2",
                  "type": "B",
                  "minOccurs": 1,
                  "maxOccurs": 1
                }
              ]
            },
            {
              "name": "B",
              "fields": [
                {
                  "name": "1",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                },
                {
                  "name": "2",
                  "type": "ST",
                  "minOccurs": 1,
                  "maxOccurs": 1
                }
              ]
            }
          ]
        }
      ]
    },
    "version": "V3"
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Em seguida, execute o seguinte comando para enviar o seu pedido 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

Deve receber uma resposta JSON semelhante à seguinte:

Carregar e analisar a mensagem HL7v2 através do esquema personalizado

Para carregar uma versão codificada em base64 da mensagem HL7v2, conclua esta secção.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do seu Google Cloud projeto
  • LOCATION: a localização do conjunto de dados principal
  • DATASET_ID: o conjunto de dados principal do armazenamento de HL7v2
  • HL7V2_STORE_ID: o ID do armazenamento de HL7v2

Corpo JSON do pedido:

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

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

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

Em seguida, execute o seguinte comando para enviar o seu pedido 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

Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:

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

Em seguida, execute o seguinte comando para enviar o seu pedido 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

Deve receber uma resposta JSON semelhante à seguinte:

Determine a cardinalidade dos campos

Pode determinar a cardinalidade de um campo numa mensagem HL7v2 definindo os seguintes campos no armazenamento HL7v2:

  • minOccurs: determina o número mínimo de vezes que um grupo, um segmento, um campo, um componente ou um subcomponente tem de estar presente ou ser repetido nas mensagens HL7v2 recebidas
  • maxOccurs: determina o número máximo de vezes que um grupo, um segmento, um campo, um componente ou um subcomponente pode estar presente ou ser repetido em mensagens HL7v2 recebidas

Ignore elementos em falta

Defina ignoreMinOccurs como true se quiser que a API HL7v2 aceite todas as mensagens HL7v2 recebidas, independentemente de haver elementos em falta. Isto significa que uma mensagem não é rejeitada se lhe faltarem grupos, segmentos, campos, componentes ou subcomponentes obrigatórios.

Se não conseguir carregar mensagens HL7v2 porque as mensagens não têm os campos obrigatórios, recomendamos que defina ignoreMinOccurs como true.

Tipo de campo de caráter universal

O caráter universal, *, é um tipo especial usado para campos. A utilização de * indica ao analisador HL7v2 que o campo deve ser analisado com base na estrutura da mensagem HL7v2. A utilização de * em vez de um valor para um campo é útil quando não quer aplicar um tipo de dados de campo rigoroso. Desde que o conteúdo no campo siga a norma HL7v2, a Cloud Healthcare API pode analisar a mensagem HL7v2.

Por exemplo, considere a seguinte definição de tipo. O campo 2 usa um caráter universal em vez de um tipo de dados de campo. A definição é equivalente à primeira definição em Definição do tipo e não requer que especifique os tipos A e B:

"type": {
  "name": "ZCD"
  "fields": [
    {
      "name": "1",
      "type": "ST"
    },
    {
      "name": "2",
      "type": "*"
    }
  ]
}

O que se segue?

Saiba como configurar analisadores de esquemas personalizados com exemplos de analisadores de esquemas personalizados.