Benutzerdefiniertes Schema zum Parsen von HL7v2-Nachrichten verwenden

Auf dieser Seite wird erläutert, wie Sie ein benutzerdefiniertes Schema zum Parsen von HL7v2-Nachrichten konfigurieren, die nicht dem HL7v2-Standard entsprechen.

Wenn Sie HL7v2-Nachrichten in ein anderes Format wie FHIR oder OMOP konvertieren, müssen Sie zuerst parsen können. und nehmen Sie Ihre HL7v2-Nachrichten in einen HL7v2-Speicher auf. In diesem Leitfaden erfahren Sie, damit Sie HL7v2-Nachrichten erfolgreich parsen und aufnehmen können.

Überblick

Manchmal entsprechen Ihre HL7v2-Nachrichten nicht den HL7v2-Standards. Beispiel: Ihre HL7v2-Nachrichten können Segmente enthalten, die nicht im im HL7v2-Standard oder die Segmente könnten falsch angeordnet sein. Wenn Sie versuchen, nicht konforme Nachrichten aufnehmen, Fehler.

Zum Aufnehmen der nicht konformen HL7v2-Nachrichten müssen Sie ParserConfig ändern , wenn Sie einen HL7v2-Speicher erstellen oder bearbeiten. In ParserConfig können Sie unter anderem das schematisierte Parsen basierend auf benutzerdefinierten Typen und Segmenten konfigurieren und festlegen, wie abgelehnte HL7v2-Nachrichten verarbeitet werden.

Bevor Sie ParserConfig konfigurieren, sollten Sie die folgenden Abschnitte lesen, um die Funktionsweise HL7v2-Nachrichten, Typdefinitionen und Gruppendefinitionen.

HL7v2-Nachrichten

Dieser Abschnitt gibt einen kurzen Überblick über die Struktur von HL7v2-Nachrichten, bei der Konfiguration des Parsers für benutzerdefinierte Schemas nützlich.

HL7v2-Nachrichten sind ereignisbasiert und beschreiben Statusübergänge und teilweise Aktualisierungen von Patientenakten. Jede HL7v2-Nachricht hat einen Nachrichtentyp, definiert den Zweck der Nachricht. Für Nachrichtentypen wird ein dreistelliger Code verwendet und werden im obligatorischen MSH-Header (Main Segment Header) der Nachricht angegeben. Es gibt Dutzende von Nachrichtentypen, darunter:

  • ADT: wird verwendet, um Teile der Patientenverabreichungsdaten eines Patienten zu übertragen
  • ORU: zur Übermittlung von Beobachtungsergebnissen
  • ORM: zum Übertragen von Informationen zu einer Bestellung

Schauen wir uns die Struktur von HL7v2-Nachrichten an, die aus Segmenten, Feldern, Komponenten und Unterkomponenten:

Abbildung 1. Diagramm der Struktur einer HL7v2-Nachricht.

In Abbildung 1 sind die folgenden Teile der HL7v2-Nachricht gekennzeichnet: das Segment, der Segmentheader, die Felder und die Komponenten.

In HL7v2-Nachrichten werden standardmäßig die folgenden Zeichen verwendet, um Informationen voneinander zu trennen. Sie können die Trennzeichen und Abschlusszeichen einer HL7v2-Nachricht pro Nachricht im Segment MSH überschreiben.

Typ- und Gruppendefinitionen

Um den Schemaparser zu verstehen, müssen Typdefinitionen und Gruppendefinitionen verwendet werden.

Typdefinition

Der Begriff „Typen” umfasst Folgendes:

  • HL7v2-Segmenttypen wie MSH (Nachrichtensegment-Header), DG1 (Diagnose) und PID (Patientenidentifikation)

    Eine Liste aller HL7v2-Segmenttypen finden Sie unter Segmentdefinitionen.

  • HL7v2-Datentypen, z. B. ST (Stringdaten), TS (Zeitstempel) und SI (Sequenz-ID)

    Eine Liste aller HL7v2-Standarddatentypen finden Sie unter Datentypen.

Sie geben die Typen im Feld name innerhalb des Objekts Type an.

Für Typen wird ein modulares Format verwendet, das aus einem Segment und den Feldern, Komponenten und Unterkomponenten. Die Informationen in einem Type-Objekt geben an, wie ein Segment zu parsen oder zu interpretieren ist, und beantworten Fragen wie die folgenden:

  • Welche Felder enthält das Segment?
  • Welche Datentypen haben die Felder?

Das folgende Beispiel zeigt die Typdefinition für ein benutzerdefiniertes ZCD-Segment:

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

In diesem Beispiel enthält das Segment ZCD zwei Felder, 1 und 2. Der Datentyp für 1 ist ST, was ein primitiver String-Datentyp ist. Datentyp für 2 ist A, was ein benutzerdefinierter Datentyp ist.

Die folgende Typdefinition für den benutzerdefinierten Datentyp A zeigt, dass er auch Folgendes enthält: einen weiteren benutzerdefinierten Datentyp namens 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
      }
    ]
  }
}

Das folgende Beispiel zeigt die Typdefinition für den benutzerdefinierten Datentyp B, der ein Feld namens 1 mit dem Datentyp ST und ein Feld namens 2 mit einem Datentyp von ST hat, das sich wiederholt:

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

Anhand der Informationen über das Segment und die Datentypen können Sie abschätzen, ZCD-Segment in der ursprünglichen HL7v2-Nachricht sieht aus. Dieses Beispiel zeigt die HL7v2-Nachricht mit dem Feld A, das einmal wiederholt wird, was zulässig ist, da maxOccurs nicht im Feld A festgelegt ist:

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
Abbildung 2: Diagramm einer Typdefinition.

In Abbildung 2 sind die folgenden Teile der Typdefinition beschriftet: das Segment, der Segmentheader, die Felder, die Komponenten, die Unterkomponenten und die Wiederholungen.

Gruppendefinition

Gruppen werden auf Segmentebene definiert und geben Aufschluss darüber, Segmenttypen können in jeder HL7v2-Nachricht aufgenommen sein.

Sie geben Gruppen in der groups an Array innerhalb von GroupOrSegment -Objekt enthält.

Betrachten Sie das folgende Snippet einer Gruppenstruktur für eine ADT_A01-HL7v2-Nachricht:

  • Die erste segment im members-Array ist MSH (Nachrichtensegment-Header), da MSH in jeder HL7v2-Nachricht erforderlich ist.
  • Ein group mit dem Namen Group 1.

    Diese Gruppe kann maximal 2 Mal vorkommen und enthält das benutzerdefinierte Segment ZCD.

    In der Regel enthält eine group mehrere logisch gruppierte verschachtelte Segmente und andere Gruppen, aber in diesem Beispiel enthält Group 1 nur ein einzelnes Segment: ZCD.

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

Anhand der Informationen zu den Gruppen können Sie schätzen, wie die ursprüngliche HL7v2-Nachricht aussieht, wenn ZCD zweimal in der HL7v2-Nachricht auftritt, was zulässig ist, weil maxOccurs in Group 1 auf 2 festgelegt ist. Der Rest des ZCD-Segments ist unbekannt, ohne die Typdefinition zu kennen.

MSH|^~\&|||||20100308000000||ADT^A01|23701|1|2.3||
ZCD|ZCD_CONTENT
ZCD|ZCD_CONTENT
Abbildung 3: Diagramm einer Gruppendefinition.

In Abbildung 3 sind die folgenden Teile der Gruppendefinition beschriftet: das Segment und die Segmentüberschrift.

Benutzerdefiniertes Schema in einem HL7v2-Speicher konfigurieren

In den folgenden Abschnitten werden die Komponenten eines benutzerdefinierten Schemas erläutert und es wird erklärt, wie Sie das Schema in einem HL7v2-Speicher konfigurieren.

Konfiguration des HL7v2-Speichertyps

Sobald Sie die Typdefinition einer HL7v2-Nachricht verstanden haben, können Sie eine in einem HL7v2-Speicher. Fügen Sie zum Angeben der Konfiguration Ein Array von types und ein version-Array.

Das folgende Beispiel zeigt, wie die Konfiguration für die Typen angegeben wird. wie in Typdefinition dargestellt in einem HL7v2-Speicher.

Beachten Sie, dass bei der Konfiguration das Array version verwendet wird, um Legen Sie die Felder mshField und value fest. Diese Felder entsprechen den Feldern und Komponenten im MSH-Segment.

Das von Ihnen angegebene Array types gilt nur für Nachrichten mit einem MSH-Segment, das den Werten für mshField und value im version-Array. Damit können Sie HL7v2-Nachrichten mit verschiedenen Versionen aufnehmen in denselben HL7v2-Speicher.

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

HL7v2-Speichergruppenkonfiguration

Sie können mit Gruppen eine verschachtelte Struktur auf der Ebene einer „Mitgliedschaft” konfigurieren. Gruppen werden in einem members auf Segmentebene. Die Struktur eines Segments ist vorhersehbar Felder, Komponenten und Unterkomponenten enthält, das Segment selbst kann jedoch Ebene der HL7v2-Nachricht.

Wie bei einer Typkonfiguration verwendet auch eine Gruppenkonfiguration version-Filter um HL7v2-Nachrichten mit unterschiedlichen Versionen in denselben HL7v2-Speicher aufzunehmen.

Das folgende Beispiel zeigt, wie die Konfiguration für die Gruppe angegeben wird wie in der Gruppendefinition dargestellt. in einem HL7v2-Speicher:

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

Vollständige HL7v2-Speicherkonfiguration

Wenn Sie die type-Konfiguration und die group Konfiguration können Sie festlegen, wie die vollständige Konfiguration des benutzerdefinierten Schemas im HL7v2-Speicher aussieht. Sie können auch feststellen, dass das benutzerdefinierte Schema mit einer HL7v2-Nachricht übereinstimmt, was in etwa so aussieht:

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

Maximieren Sie den folgenden Abschnitt, um das vollständige benutzerdefinierte Schema in der HL7v2-Speicher und fahren Sie dann mit der Erstellung eines HL7v2-Speichers fort, der das benutzerdefinierte Schema verwendet:

Maximieren

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

HL7v2-Speicher mit dem benutzerdefinierten Schema erstellen

Um einen HL7v2-Speicher zu erstellen, der die vollständige benutzerdefinierten Schemas erstellen, füllen Sie diesen Abschnitt aus.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
  • LOCATION ist der Standort des Datasets
  • DATASET_ID ist das übergeordnete Dataset des HL7v2-Speichers
  • HL7V2_STORE_ID ist die HL7v2-Speicher-ID

JSON-Text der Anfrage:

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

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

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

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

HL7v2-Nachricht mit dem benutzerdefinierten Schema aufnehmen und parsen

Führen Sie den folgenden Befehl aus, um eine base64-codierte Version der HL7v2-Nachricht aufzunehmen: diesem Abschnitt.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Google Cloud-Projekt-ID
  • LOCATION: der Speicherort des übergeordneten Datasets
  • DATASET_ID: das übergeordnete Dataset des HL7v2-Speichers
  • HL7V2_STORE_ID: die HL7v2-Speicher-ID

JSON-Text der Anfrage:

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

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

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

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

$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

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Kardinalität des Felds bestimmen

Sie können die Kardinalität eines Felds in einer HL7v2-Nachricht bestimmen, indem Sie Folgendes festlegen: im HL7v2-Speicher:

  • minOccurs: gibt an, wie oft eine Gruppe, ein Segment, ein Feld Komponente oder Unterkomponente muss in eingehenden HL7v2-Nachrichten vorhanden oder wiederholt sein
  • maxOccurs: Legt fest, wie oft eine Gruppe, ein Segment, ein Feld, eine Komponente oder eine Unterkomponente in eingehenden HL7v2-Nachrichten vorhanden sein oder wiederholt werden darf.

Fehlende Elemente ignorieren

Festlegen ignoreMinOccurs auf true, wenn die HL7v2 API unabhängig davon alle eingehenden HL7v2-Nachrichten akzeptieren soll fehlende Elemente. Das bedeutet, dass eine Nachricht nicht abgelehnt wird. wenn erforderliche Gruppen, Segmente, Felder, Komponenten oder Unterkomponenten fehlen.

Wenn Sie keine HL7v2-Nachrichten aufnehmen können, weil die Nachrichten erforderliche Felder vermissen, empfehlen wir, ignoreMinOccurs auf true festzulegen.

Platzhalterfeldtyp

Das Platzhalterzeichen * ist ein spezieller Typ für Felder. Mit * wird angegeben, HL7v2-Parser, bei dem das Feld basierend auf der Struktur im HL7v2-Nachricht. Die Verwendung von * anstelle eines Werts für ein Feld ist nützlich, wenn Sie keinen strikten Felddatentyp erzwingen möchten. Solange das Feld Feldinhalt dem HL7v2-Standard entspricht, kann die Cloud Healthcare API HL7v2-Nachricht parsen.

Betrachten Sie beispielsweise die folgende Typdefinition. Im Feld 2 wird ein ein Platzhalterzeichen anstelle eines Felddatentyps. Die Definition lautet der ersten Definition in der Typdefinition entspricht und müssen Sie die Typen A und B angeben:

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

Nächste Schritte

Beispiele für benutzerdefinierte Schemaparser