Partager via


Opération d’importation

L’opération d’importation permet de charger des données FHIR® (Fast Healthcare Interoperability Resources) sur le serveur FHIR à débit élevé à l’aide de l’opération de $import. L’importation prend en charge le chargement initial et incrémentiel des données dans le serveur FHIR.

Utilisation de $import opération

Notes

Vous devez avoir le rôle Importateur de données FHIR sur le serveur FHIR pour utiliser $import.

Pour utiliser $import, vous devez configurer le serveur FHIR en suivant les instructions de l’article Configurer les paramètres d’importation . Les données FHIR à importer doivent être stockées dans des fichiers spécifiques à la ressource au format FHIR NDJSON sur le magasin d’objets blob Azure.

Pour l’opération d’importation, vérifiez

  • Toutes les ressources d’un fichier doivent être du même type. Vous pouvez avoir plusieurs fichiers par type de ressource.
  • Les données à importer doivent se trouver dans le même locataire que le service FHIR.
  • Le nombre maximal de fichiers à importer par opération est de 10 000.

Remarque :

  • L’opération d’importation ne prend pas en charge les références conditionnelles dans les ressources.
  • Pendant l’opération d’importation, si plusieurs ressources partagent le même ID de ressource, une seule de ces ressources est importée au hasard. Une erreur est enregistrée pour les ressources partageant le même ID de ressource.

Appel de $import

Effectuez un POST appel à <<FHIR service base URL>>/$import avec l’en-tête et le corps de la requête affichés :

En-tête de requête

Prefer:respond-async
Content-Type:application/fhir+json

body

Nom du paramètre Description Carte. Valeurs acceptées
inputFormat Chaîne représentant le nom du format de source de données. Actuellement, seuls les fichiers FHIR NDJSON sont pris en charge. 1..1 application/fhir+ndjson
mode Valeur du mode d’importation 1..1 Pour la valeur du mode d’utilisation d’importation InitialLoad initiale. Pour le mode d’importation incrémentielle, utilisez la IncrementalLoad valeur du mode. Si aucune valeur de mode n’est fournie, la valeur du mode IncrementalLoad est considérée par défaut.
entrée Détails des fichiers d’entrée. 1..* Tableau JSON avec trois parties décrites dans le tableau ci-dessous.
Nom du composant d’entrée Description Carte. Valeurs acceptées
type Type de ressource du fichier d’entrée 1..1 Type de ressource FHIR valide qui correspond au fichier d’entrée.
URL URL de stockage Azure du fichier d’entrée 1..1 Valeur d’URL du fichier d’entrée qui ne peut pas être modifiée.
etag Etag du fichier d’entrée sur le stockage Azure utilisé pour vérifier que le contenu du fichier n’a pas changé. 0..1 Valeur Etag du fichier d’entrée qui ne peut pas être modifié.

Exemple de corps pour l’importation de charge initiale :

{
    "resourceType": "Parameters",
    "parameter": [
        {
            "name": "inputFormat",
            "valueString": "application/fhir+ndjson"
        },
        {
            "name": "mode",
            "valueString": "InitialLoad"
        },
        {
            "name": "input",
            "part": [
                {
                    "name": "type",
                    "valueString": "Patient"
                },
                {
                    "name": "url",
                    "valueUri": "https://example.blob.core.windows.net/resources/Patient.ndjson"
                },
                {
                    "name": "etag",
                    "valueUri": "0x8D92A7342657F4F"
                }
            ]
        },
        {
            "name": "input",
            "part": [
                {
                    "name": "type",
                    "valueString": "CarePlan"
                },
                {
                    "name": "url",
                    "valueUri": "https://example.blob.core.windows.net/resources/CarePlan.ndjson"
                }
            ]
        }
    ]
}

Vérification des status d’importation

Une fois $import lancée, un corps de réponse vide avec un lien de rappel est retourné dans l’en-tête Content-location de la réponse avec 202-Accepted status code. Stockez ce lien de rappel pour case activée la status d’importation.

Pour case activée importer status, effectuez l’appel REST avec la GET méthode vers le lien de rappel retourné à l’étape précédente. Vous pouvez interpréter la réponse à l’aide du tableau suivant :

Response code Response body Description
202 Accepté L’opération est toujours en cours d’exécution.
200 OK Le corps de la réponse ne contient aucune entrée error.url Toutes les ressources ont été importées avec succès.
200 OK Le corps de la réponse contient une entrée error.url Une erreur s’est produite lors de l’importation de certaines ressources. Pour plus d’informations, consultez les fichiers situés dans error.url. Les autres ressources ont été importées avec succès.
Autre Une erreur irrécupérable s’est produite et l’opération s’est arrêtée. Les ressources importées n’ont pas été restaurées.

Le tableau ci-dessous fournit certains des champs importants dans le corps de la réponse :

Champ Description
transactionTime Heure de début de l’opération d’importation en bloc.
output.count Nombre de ressources qui ont été importées avec succès
error.count Nombre de ressources qui n’ont pas été importées en raison d’une erreur
error.url URL du fichier contenant les détails de l’erreur. Chaque error.url est propre à une URL d’entrée.

Exemple de réponse :

{
    "transactionTime": "2021-07-16T06:46:52.3873388+00:00",
    "request": "https://importperf.azurewebsites.net/$Import",
    "output": [
        {
            "type": "Patient",
            "count": 10000,
            "inputUrl": "https://example.blob.core.windows.net/resources/Patient.ndjson"
        },
        {
            "type": "CarePlan",
            "count": 199949,
            "inputUrl": "https://example.blob.core.windows.net/resources/CarePlan.ndjson"
        }
    ],
    "error": [
        { 
        "type": "OperationOutcome",
        "count": 51,
        "inputUrl": "https://example.blob.core.windows.net/resources/CarePlan.ndjson",
        "url": "https://example.blob.core.windows.net/fhirlogs/CarePlan06b88c6933a34c7c83cb18b7dd6ae3d8.ndjson"
        }
    ]
}

Dépannage

Permet de trouver des solutions pas à pas à certains codes d’erreur que vous pouvez rencontrer pendant l’opération d’importation.

200 OK, mais il y a une erreur avec l’URL dans la réponse

Comportement: L’opération d’importation réussit et retourne 200 OK. Toutefois, error.url sont présents dans le corps de la réponse. Les fichiers présents à l’emplacement error.url contiennent des fragments JSON similaires à l’exemple ci-dessous :

{
    "resourceType": "OperationOutcome",
    "issue": [
        {
            "severity": "error",
            "details": {
                "text": "Given conditional reference '{0}' does'nt resolve to a resource."
            },
            "diagnostics": "Failed to process resource at line: {0} with stream start offset: {1}"
        }
    ]
}

Cause : Les fichiers NDJSON contiennent des ressources avec des références conditionnelles, qui ne sont actuellement pas prises en charge par $import.

Solution: Remplacez les références conditionnelles aux références normales dans les fichiers NDJSON.

400 Demande incorrecte

Comportement: L’opération d’importation a échoué et 400 Bad Request est retournée. Le corps de la réponse contient le contenu suivant :

{
    "resourceType": "OperationOutcome",
    "id": "13876ec9-3170-4525-87ec-9e165052d70d",
    "issue": [
        {
            "severity": "error",
            "code": "processing",
            "diagnostics": "import operation failed for reason: No such host is known. (example.blob.core.windows.net:443)"
        }
    ]
}

Solution: Vérifiez que le lien vers le stockage Azure est correct. Vérifiez les paramètres réseau et de pare-feu pour vous assurer que le serveur FHIR est en mesure d’accéder au stockage. Si votre service se trouve dans un réseau virtuel, assurez-vous que le stockage se trouve dans le même réseau virtuel ou dans un réseau virtuel disposant d’un peering avec le réseau virtuel du service FHIR.

403 Interdit

Comportement: L’opération d’importation a échoué et 403 Forbidden est retournée. Le corps de la réponse contient le contenu suivant :

{
    "resourceType": "OperationOutcome",
    "id": "bd545acc-af5d-42d5-82c3-280459125033",
    "issue": [
        {
            "severity": "error",
            "code": "processing",
            "diagnostics": "import operation failed for reason: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature."
        }
    ]
}

Cause : Nous utilisons l’identité managée pour l’authentification du stockage source. Cette erreur peut être due à une attribution de rôle manquante ou incorrecte.

Solution: Attribuez le rôle Contributeur aux données blob de stockage au serveur FHIR en suivant le guide RBAC.

500 Erreur interne du serveur

Comportement: L’opération d’importation a échoué et 500 Internal Server Error est retournée. Le corps de la réponse contient le contenu suivant :

{
    "resourceType": "OperationOutcome",
    "id": "0d0f007d-9e8e-444e-89ed-7458377d7889",
    "issue": [
        {
            "severity": "error",
            "code": "processing",
            "diagnostics": "import operation failed for reason: The database '****' has reached its size quota. Partition or delete data, drop indexes, or consult the documentation for possible resolutions."
        }
    ]
}

Cause : Vous avez atteint la limite de stockage du service FHIR.

Solution: Réduisez la taille de vos données ou envisagez l’API Azure pour FHIR, qui a une limite de stockage plus élevée.

Étapes suivantes

Dans cet article, vous avez découvert comment l’opération d’importation permet d’importer des données FHIR sur le serveur FHIR à haut débit. Pour plus d’informations sur la conversion de données en FHIR, l’exportation des paramètres pour configurer un compte de stockage et le déplacement des données vers Azure Synapse, consultez

FHIR® est une marque déposée de HL7 utilisé avec l’autorisation de HL7.