Utiliser un schéma personnalisé pour analyser les messages HL7v2

Cette page explique comment configurer un schéma personnalisé pour analyser les messages HL7v2 non conformes à la norme HL7v2.

Si vous convertissez des messages HL7v2 dans un autre format, tel que FHIR ou OMOP, vous devez d'abord pouvoir analyser et ingérer vos messages HL7v2 dans un magasin HL7v2. Utilisez ce guide pour vous assurer que vous pouvez correctement analyser et ingérer des messages HL7v2.

Présentation

Parfois, vos messages HL7v2 peuvent ne pas être conformes aux normes HL7v2. Par exemple, vos messages HL7v2 peuvent contenir des segments qui ne sont pas inclus dans la norme HL7v2 ou ces segments peuvent être dans le désordre. Lorsque vous essayez d'ingérer des messages non conformes, vous pouvez rencontrer des erreurs.

Pour ingérer les messages HL7v2 non conformes, vous devez modifier l'objet ParserConfig lors de la création ou de la modification d'un store HL7v2. Dans ParserConfig, vous pouvez configurer l'analyse schématisée en fonction de types et de segments personnalisés, déterminer le mode de traitement des messages HL7v2 rejetés, et bien plus encore.

Avant de configurer ParserConfig, consultez les sections suivantes pour comprendre les messages HL7v2, les définitions de types et les définitions de groupe.

Messages HL7v2

Cette section donne un bref aperçu de la structure des messages HL7v2, qui seront utiles lors de la configuration de l'analyseur de schéma personnalisé.

Les messages HL7v2 sont basés sur des événements et décrivent les transitions d'état et les mises à jour partielles apportées aux dossiers cliniques. Chaque message HL7v2 possède un type qui définit l'objectif du message. Les types de messages utilisent un code à trois caractères et sont spécifiés dans l'en-tête de segment principal (MSH) obligatoire du message. Il existe des dizaines de types de messages, parmi lesquels :

  • ADT : permet de transmettre des parties des données d'administration des patients d'un patient
  • ORU : permet de transmettre les résultats d'observation
  • ORM : permet de transmettre des informations sur une commande

Examinez la structure des messages HL7v2, qui comprennent des segments, des champs, des composants et des sous-composants :

Figure 1. Schéma de la structure d'un message HL7v2.

Dans la figure 1, les parties suivantes du message HL7v2 sont étiquetées : le segment, l'en-tête du segment, les champs et les composants.

Par défaut, les messages HL7v2 utilisent les caractères suivants pour séparer les informations. Vous pouvez remplacer les délimiteurs, les séparateurs et les terminateurs d'un message HL7v2 pour chaque message dans le segment MSH.

  • Terminateur de segment : \r

    Si vos messages HL7v2 utilisent un séparateur de segment différent, consultez l'exemple Terminateur de segment personnalisé et champ personnalisé.

  • Séparateur de champ : |

  • Séparateur de composant : ^

  • Séparateur de sous-composant : &

  • Séparateur de répétition : ~

  • Caractères d'échappement : \

Définitions des types et des groupes

Pour comprendre l'analyseur de schéma, vous devez utiliser les définitions de type et les définitions de groupe.

Définition du type

Le terme "types" englobe les éléments suivants :

  • Types de segments HL7v2, tels que MSH (En-tête de segment de message), DG1 (Diagnostic) et PID (Identification de patients)

    Pour obtenir la liste de tous les types de segments HL7v2, consultez Définitions de segment.

  • Types de données HL7v2, tels que ST (données de chaîne), TS (code temporel) et SI (ID de séquence)

    Pour obtenir la liste de tous les types de données HL7v2 par défaut, consultez Types de données.

Vous spécifiez des types dans le champ name de l'objet Type.

Les types utilisent un format modulaire composé d'un segment et des champs, composants et sous-composants du segment. Les informations d'un objet Type indiquent comment analyser ou interpréter un segment et répondre aux questions suivantes :

  • Quels champs figurent dans le segment ?
  • Quels sont les types de données des champs ?

L'exemple suivant illustre la définition de type d'un segment ZCD personnalisé :

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

Dans cet exemple, le segment ZCD contient deux champs nommés 1 et 2. Le type de données de 1 est ST, qui est un type de données de chaîne primitif. Le type de données de 2 est A, qui est un type de données personnalisé.

La définition de type suivante pour le type de données personnalisé A montre qu'il contient également un autre type de données personnalisé, nommé 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
      }
    ]
  }
}

L'exemple suivant illustre la définition de type du type de données personnalisé B, qui comporte un champ nommé 1 avec le type de données ST et un champ nommé 2 qui a un type de données de ST répété :

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

À l'aide des informations sur le segment et les types de données, vous pouvez estimer le segment ZCD dans le message HL7v2 d'origine. Cet exemple montre le message HL7v2 avec le champ A répété une fois, ce qui est autorisé, car maxOccurs n'est pas défini sur le champ 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
Figure 2. Schéma d'une définition de type

Dans la figure 2, les parties suivantes de la définition de type sont étiquetées : segment, en-tête de segment, champs, composants, sous-composants et répétitions.

Définition du groupe

Les groupes sont définis au niveau du segment et vous indiquent les types de segments pouvant apparaître dans chaque message HL7v2.

Vous spécifiez des groupes dans le tableau groups au sein de l'objet GroupOrSegment.

Prenons l'exemple suivant d'une structure de groupe pour un message HL7v2 ADT_A01 :

  • La première segment du tableau members est MSH (en-tête de segment de message), car MSH est requis dans chaque message HL7v2.
  • Un group nommé Group 1.

    Ce groupe ne peut apparaître que 2 fois au maximum et contient le segment ZCD personnalisé.

    En règle générale, un group contient plusieurs segments imbriqués et autres groupes regroupés de manière logique, mais dans cet exemple, Group 1 ne contient qu'un seul segment : ZCD.

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

En connaissant les informations sur les groupes, vous pouvez estimer le message HL7v2 d'origine si ZCD se produit deux fois dans le message HL7v2, ce qui est autorisé car maxOccurs dans Group 1 est défini sur 2. Le reste du segment ZCD est inconnu si la définition du type est aussi inconnue.

MSH|^~\&|||||20100308000000||ADT^A01|23701|1|2.3||
ZCD|ZCD_CONTENT
ZCD|ZCD_CONTENT
Figure 3. Schéma de la définition d'un groupe

Dans la figure 3, les parties suivantes de la définition de groupe sont libellés : le segment et l'en-tête du segment.

Configurer un schéma personnalisé sur un magasin HL7v2

Les sections suivantes décrivent les composants d'un schéma personnalisé et expliquent comment le configurer sur un magasin HL7v2.

Configuration du type du store HL7v2

Après avoir compris la définition du type d'un message HL7v2, vous pouvez spécifier une configuration du type sur un store HL7v2. Pour spécifier la configuration, ajoutez un tableau de types et un tableau version.

L'exemple suivant montre comment spécifier la configuration des types présentés dans la définition du type sur un store HL7v2.

Notez que la configuration utilise le tableau version pour spécifier les champs mshField et value. Ces champs correspondent aux champs et aux composants du segment MSH.

Le tableau types que vous spécifiez ne s'applique qu'aux messages dont le segment MMS correspond aux valeurs de mshField et value dans le tableau version. Cela vous permet d'ingérer des messages HL7v2 avec différentes versions dans le même store 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"
            }
          ]
        }
      ]
    }
  ]
}

Configuration du groupe du store HL7v2

Vous pouvez utiliser des groupes pour configurer une structure imbriquée au niveau d'une "adhésion". Les groupes sont spécifiés dans un tableau members au niveau du segment. La structure d'un segment est prévisible et contient généralement des champs, des composants et des sous-composants, mais le segment lui-même peut correspondre à n'importe quel niveau du message HL7v2.

Comme une configuration de type, une configuration de groupe utilise un filtre version pour vous permettre d'ingérer des messages HL7v2 avec différentes versions dans le même store HL7v2.

L'exemple suivant montre comment spécifier la configuration du groupe affiché dans la section Définition du groupe sur un store HL7v2 :

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

Terminer la configuration du store HL7v2

Lorsque vous combinez la configuration du type et la configuration du groupe, vous pouvez déterminer la configuration de schéma personnalisée complète sur le store HL7v2. Vous pouvez également déterminer que le schéma personnalisé correspond à un message HL7v2 semblable à celui-ci :

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

Développez la section suivante pour afficher le schéma personnalisé complet sur le store HL7v2, puis créez un store HL7v2 qui utilise le schéma personnalisé :

Développer

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

Créer un store HL7v2 avec le schéma personnalisé

Pour créer un store HL7v2 qui utilise le schéma personnalisé complet, effectuez cette opération.

Avant d'utiliser les données de requête, effectuez les remplacements suivants:

  • PROJECT_ID : ID de votre projet Google Cloud
  • LOCATION : emplacement de l'ensemble de données
  • DATASET_ID : ensemble de données parent du store HL7v2
  • HL7V2_STORE_ID : ID du datastore HL7v2

Corps JSON de la requête :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

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

Exécutez ensuite la commande suivante pour envoyer votre requête 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

Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

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

Exécutez ensuite la commande suivante pour envoyer votre requête 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

Vous devriez recevoir une réponse JSON de ce type :

Ingérer et analyser le message HL7v2 à l'aide du schéma personnalisé

Pour ingérer une version du message HL7v2 encodée en base64, suivez cette section.

Avant d'utiliser les données de requête, effectuez les remplacements suivants:

  • PROJECT_ID : ID de votre projet Google Cloud
  • LOCATION : emplacement de l'ensemble de données parent
  • DATASET_ID : ensemble de données parent du magasin HL7v2
  • HL7V2_STORE_ID : ID du datastore HL7v2

Corps JSON de la requête :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

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

Exécutez ensuite la commande suivante pour envoyer votre requête 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

Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

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

Exécutez ensuite la commande suivante pour envoyer votre requête 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

Vous devriez recevoir une réponse JSON de ce type :

Déterminer la cardinalité d'un champ

Vous pouvez déterminer la cardinalité d'un champ dans un message HL7v2 en définissant les champs suivants sur le store HL7v2 :

  • minOccurs : détermine le nombre minimal de fois où un groupe, un segment, un champ, un composant ou un sous-composant doit être présent ou répété dans des messages HL7v2 entrants
  • maxOccurs : détermine le nombre maximal de fois qu'un groupe, un segment, un champ, un composant ou un sous-composant peut être présent ou répété dans des messages HL7v2 entrants

Ignorer les éléments manquants

Définissez ignoreMinOccurs sur true si vous souhaitez que l'API HL7v2 accepte tous les messages HL7v2 entrants, quels que soient les éléments manquants. Cela signifie qu'un message ne sera pas rejeté s'il manque des groupes, segments, champs, composants ou sous-composants obligatoires.

Si vous ne parvenez pas à ingérer des messages HL7v2, car il manque des champs obligatoires dans les messages, nous vous recommandons de définir ignoreMinOccurs sur true.

Type de champ générique

Le caractère générique * est un type spécial utilisé pour les champs. L'utilisation de * indique à l'analyseur HL7v2 que le champ doit être analysé en fonction de la structure du message HL7v2. Il est utile d'utiliser * à la place de la valeur d'un champ lorsque vous ne souhaitez pas appliquer un type de données de champ strict. Tant que le contenu du champ suit la norme HL7v2, l'API Cloud Healthcare peut analyser le message HL7v2.

Prenons l'exemple de la définition de type suivante. Le champ 2 utilise un caractère générique au lieu d'un type de données de champ. La définition est équivalente à la première définition de la définition du type et ne nécessite pas que vous spécifiiez les types A et B :

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

Étapes suivantes

Découvrez comment configurer des analyseurs de schéma personnalisés grâce à des exemples d'analyseur de schéma personnalisé.