Obtenir des résultats de recherche pour des données de santé

Après avoir importé des données FHIR R4 dans votre application de recherche de données de santé, vous pouvez interroger les données importées pour obtenir des résultats pertinents. Vous pouvez effectuer des recherches à l'aide des types de requêtes suivants :

  • Requête par mot clé
  • Requête en langage naturel
  • Requête en langage naturel avec une réponse d'IA générative

Vous pouvez également filtrer votre recherche à l'aide de requêtes filtrées par date. Pour en savoir plus, consultez Définir un filtre resource_datetime.

Lorsque vous effectuez une recherche dans la console Google Cloud , vous devez d'abord fournir un ID de patient et effectuer une recherche sur les données d'un seul patient à la fois. Lorsque vous effectuez une recherche à l'aide de l'API REST, vous pouvez rechercher dans l'ensemble de votre data store.

Cette page explique comment rechercher des données de santé à l'aide de différents types de requêtes.

Utilisation prévue de Vertex AI Search pour la recherche de données de santé

Vertex AI Search n'est pas destiné à fournir des informations sur la prévention, le diagnostic ou le traitement de maladies. Le produit n'est pas destiné à répondre aux questions concernant les recommandations de diagnostic ou de traitement. L'utilisation prévue de ce produit est de récupérer et de résumer les informations médicales existantes fournies par les utilisateurs.

En raison de la quantité limitée de données de test, il est possible que ce produit ne s'applique pas aux groupes d'âge de 0 à 18 ans et de 85 ans et plus. Par conséquent, lorsqu'ils examinent les résultats générés, les clients doivent tenir compte de la représentativité des sous-populations dans leurs données sources.

Voici quelques exemples d'utilisation prévue de ce produit :

  • Requêtes exploratoires permettant de trouver des informations sur un patient en lien avec un thème :

    • "Résume les utilisations de l'aspirine"
    • "tension artérielle"
    • "la gestion du diabète ?"
  • Requêtes de navigation permettant de trouver des ressources spécifiques pouvant être mappées à une requête structurée :

    • "Show me the most recent a1c" (Montre-moi le dernier taux d'HbA1c)
  • Questions et réponses extractives pour répondre à des questions spécifiques dont les preuves peuvent être réparties dans plusieurs ressources :

    • "Ce patient a-t-il déjà été traité avec une céphalosporine ?"
    • "Le patient a-t-il déjà subi une évaluation psychiatrique ?"

Voici des exemples d'utilisations non prévues pour ce produit :

  • Recommandations de diagnostic et de traitement :

    • "Quels sont les diagnostics différentiels pour ce patient ?"
    • "Quels médicaments dois-je prescrire au patient ?"

Consignes relatives aux requêtes

Les consignes suivantes peuvent vous aider à formuler une requête qui vous donnera de meilleurs résultats de recherche :

  • Recherchez des requêtes avec une intention spécifique : comme le modèle ne sait pas ce que vous recherchez, il est préférable de fournir une requête ciblée plutôt qu'une requête vague. Par exemple, il est préférable de rechercher le mot clé "hypertension" plutôt que "résumé". Alors que la requête "hypertension" renvoie des résultats spécifiques à partir de documents pertinents, la requête "résumé" peut renvoyer des résultats à partir de documents non pertinents.

  • Préservez le contexte : comme la recherche n'est pas conversationnelle, il est préférable de fournir le contexte complet pour chaque requête. Par exemple, si votre requête initiale est "hypertension" et que vous souhaitez en savoir plus sur le même sujet, la deuxième requête "quand l'hypertension a-t-elle été diagnostiquée" est plus pertinente que "quand l'a-t-elle été diagnostiquée".

  • Simplifiez la requête : dans la mesure du possible, divisez les requêtes complexes en requêtes plus simples. Par exemple, au lieu de rechercher "créatinine et albumine", créez différentes requêtes pour "créatinine", "albumine" et "rapport créatinine/albumine", en fonction de votre objectif.

  • Évitez de demander des inférences : la recherche fournit des résultats plus précis lorsque le modèle peut renvoyer des informations mot pour mot à partir des documents dans lesquels il effectue la recherche, au lieu de les calculer ou de les déduire. Par exemple, au lieu de demander "dans quelle mesure le poids du patient a-t-il changé", vous pouvez demander "liste le poids du patient lors des 10 dernières visites", puis calculer la variation de poids séparément.

Mise en surbrillance des correspondances dans les résultats

La mise en surbrillance des correspondances est une configuration qui met en évidence les parties du texte d'un résultat de recherche qui correspondent contextuellement à la requête de recherche.

Les résultats des types de ressources suivants sont compatibles avec la mise en surbrillance des correspondances :

  • Composition : met en évidence le texte contextuel du champ Composition.section[].text.div.
  • DiagnosticReport : met en évidence le texte contextuel du champ DiagnosticReport.conclusion.
  • DocumentReference : met en évidence le texte contextuel des documents référencés dans le champ DocumentReference.content[0].attachment.url. Le texte mis en surbrillance est encadré dans une cadre de délimitation. Le cadre de délimitation est représenté par deux ensembles de coordonnées normalisées dans la réponse de recherche. Les documents compatibles avec la mise en surbrillance des correspondances sont les fichiers PDF et les fichiers image dont les types sont acceptés. L'image suivante montre comment le texte est mis en surbrillance dans un document numérisé à partir du type de ressource DocumentReference :

    La requête est "insuline".
    Figure 1. Mise en surbrillance des correspondances dans un document DocumentReference numérisé.

Lorsque vous effectuez une recherche à l'aide de l'API REST, vous devez activer la mise en surbrillance des correspondances dans votre demande de recherche à l'aide du champ matchHighlightingCondition. La réponse contient le champ match_highlighting, que vous pouvez utiliser pour afficher le texte mis en surbrillance dans votre application de recherche :

  • Pour les documents Composition et DiagnosticReport, le champ match_highlighting contient les index de début et de fin du jeton à mettre en évidence.
  • Pour les documents DocumentReference, le champ match_highlighting contient les coordonnées du cadre de délimitation qui met en évidence le texte. Le cadre de délimitation est représenté par deux ensembles de coordonnées normalisées dont l'origine se trouve en haut à gauche du document. Ce champ imbrique également le champ page_number, qui est défini sur 0 pour les images et sur 1 pour la première page des fichiers PDF.

Lorsque vous prévisualisez les résultats de recherche à l'aide de la console Google Cloud , la mise en surbrillance des correspondances est activée par défaut.

Avant de commencer

Avant de lancer une recherche, procédez comme suit :

Vous pouvez effectuer une recherche par mot clé dans votre data store de santé. Par exemple, vous pouvez effectuer une recherche à l'aide de mots clés tels que "a1c", "insuline" ou "ulcère" pour obtenir les ressources FHIR pertinentes.

L'image suivante montre les résultats de recherche lorsque le mot clé est "lipide". Cet exemple n'inclut pas de résumé ni de réponse d'IA générative.

La requête est "lipide".
Figure 2. Recherchez à l'aide d'un mot clé.

Pour effectuer une recherche à l'aide d'un mot clé, procédez comme suit :

Console

  1. Dans la console Google Cloud , accédez à la page AI Applications.

    AI Applications

  2. Sélectionnez l'application de recherche en santé que vous souhaitez interroger.

  3. Dans le menu de navigation, cliquez sur Aperçu.

  4. Dans le champ ID du patient, saisissez l'ID du patient dont vous souhaitez interroger les données. Les ID de patient sont sensibles à la casse.

  5. Appuyez sur Entrée ou cliquez sur Aperçu pour envoyer l'ID du patient.

  6. Dans la barre de recherche Rechercher ici, saisissez un mot clé pour effectuer une recherche.

    Si vous avez activé la saisie semi-automatique, une liste de suggestions s'affiche sous la barre de recherche à mesure que vous saisissez du texte.

  7. Appuyez sur Entrée pour envoyer la requête.

    • Les résultats de la recherche s'affichent dans des tableaux paginés, classés en fonction de leur type de ressource FHIR.
    • Par défaut, les résultats de recherche pour tous les types de ressources FHIR sont affichés dans l'ordre chronologique inverse.
  8. Facultatif. Pour filtrer les résultats, sélectionnez une ou plusieurs catégories de ressources FHIR sous la barre de recherche.

  9. Facultatif. Pour trier les résultats par pertinence pour les ressources Composition, DocumentReference et DiagnosticReport, cliquez sur le filtre Trier : ordre chronologique inversé, puis sélectionnez Pertinence dans la liste. Pour en savoir plus, consultez Ordre des résultats de recherche sur la santé.

REST

L'exemple suivant montre comment rechercher les données FHIR R4 d'un seul patient dans l'application de recherche dans le secteur de la santé à l'aide d'un mot clé. Cet exemple utilise la méthode servingConfigs.search.

Par défaut, les résultats de recherche sont renvoyés dans l'ordre chronologique inverse. Lorsque vous effectuez une recherche dans les ressources Composition, DiagnosticReport et DocumentReference, vous pouvez trier vos résultats de recherche par pertinence. Pour en savoir plus, consultez Organiser les résultats de recherche sur la santé.

  1. Effectuez une recherche à l'aide d'un mot clé.

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://us-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/us/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \
      -d '{
    "query": "KEYWORD_QUERY",
    "filter": "patientId: ANY(\"PATIENT_ID\")",
    "contentSearchSpec":{"snippetSpec":{"returnSnippet":true}}
    "displaySpec": {
        "matchHighlightingCondition": "MATCH_HIGHLIGHTING_CONDITION"
      }
    }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud .
    • APP_ID : ID de l'application Vertex AI Search que vous souhaitez interroger.
    • KEYWORD_QUERY : mot clé que vous souhaitez rechercher dans les données cliniques du patient filtré, par exemple "diabète" ou "a1c".
    • PATIENT_ID : ID de ressource du patient dont vous souhaitez rechercher les données.
    • MATCH_HIGHLIGHTING_CONDITION : chaîne pouvant avoir les valeurs suivantes :
      • MATCH_HIGHLIGHTING_DISABLED : désactive la mise en surbrillance des correspondances dans tous les documents.
      • MATCH_HIGHLIGHTING_ENABLED : active la mise en surbrillance des correspondances dans tous les documents. Si vous laissez ce champ vide ou ne le spécifiez pas, la mise en surbrillance des correspondances est définie sur MATCH_HIGHLIGHTING_DISABLED et est désactivée dans tous les documents.

Vertex AI Search vous permet d'obtenir des résultats pour des requêtes complexes en langage naturel. Par exemple, l'image suivante montre les résultats de la requête en langage naturel "Résultats d'analyses liés au diabète".

La requête est "Quels sont les résultats des analyses lipidiques du patient ?".
Figure 4. Effectuez une recherche à l'aide d'une requête en langage naturel.

Pour effectuer une recherche à l'aide d'une requête en langage naturel, procédez comme suit.

Console

  1. Dans la console Google Cloud , accédez à la page AI Applications.

    AI Applications

  2. Sélectionnez l'application de recherche en santé que vous souhaitez interroger.

  3. Dans le menu de navigation, cliquez sur Aperçu.

  4. Dans le champ ID du patient, saisissez l'ID du patient dont vous souhaitez interroger les données. Les ID de patient sont sensibles à la casse.

  5. Appuyez sur Entrée ou cliquez sur Aperçu pour envoyer l'ID du patient.

  6. Dans la barre de recherche Rechercher ici, saisissez une requête en langage naturel, par exemple "Résultats d'analyse liés au diabète".

    Si vous avez activé la saisie semi-automatique, une liste de suggestions s'affiche sous la barre de recherche à mesure que vous saisissez du texte.

  7. Appuyez sur Entrée pour envoyer la requête.

    • Les résultats de la recherche s'affichent dans des tableaux paginés, classés en fonction de leur type de ressource FHIR.
    • Par défaut, les résultats de recherche pour tous les types de ressources FHIR s'affichent dans l'ordre chronologique inverse.
  8. Facultatif. Sélectionnez une ou plusieurs catégories de ressources FHIR sous la barre de recherche pour filtrer les résultats.

  9. Facultatif. Pour trier les résultats par pertinence pour les ressources Composition, DocumentReference et DiagnosticReport, cliquez sur le filtre Trier : ordre chronologique inversé, puis sélectionnez Pertinence dans la liste. Pour en savoir plus, consultez Ordre des résultats de recherche sur la santé.

REST

L'exemple suivant montre comment rechercher les données FHIR R4 d'un seul patient dans l'application de recherche Healthcare à l'aide d'une requête en langage naturel. Cet exemple utilise la méthode servingConfigs.search. Pour effectuer une recherche à l'aide d'une requête en langage naturel, vous devez ajouter le champ naturalLanguageQueryUnderstandingSpec au corps de la requête.

Par défaut, les résultats de recherche sont renvoyés dans l'ordre chronologique inverse. Lorsque vous effectuez une recherche dans les ressources Composition, DiagnosticReport et DocumentReference, vous pouvez trier vos résultats de recherche par pertinence. Pour en savoir plus, consultez Organiser les résultats de recherche sur la santé.

  1. Posez une question en langage naturel.

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://us-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/us/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \
      -d '{
    "query": "NATURAL_LANGUAGE_QUERY",
    "filter": "patientId: ANY(\"PATIENT_ID\")",
    "contentSearchSpec":{"snippetSpec":{"returnSnippet":true}},
    "naturalLanguageQueryUnderstandingSpec":{"filterExtractionCondition":"ENABLED"},
    "displaySpec": {
        "matchHighlightingCondition": "MATCH_HIGHLIGHTING_CONDITION"
      }
    }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud .
    • APP_ID : ID de l'application Vertex AI Search que vous souhaitez interroger.
    • NATURAL_LANGUAGE_QUERY : requête en langage naturel, par exemple "Résultats d'analyse liés au diabète" ou "Le patient prend-il actuellement des médicaments ?".
    • PATIENT_ID : ID de ressource du patient dont vous souhaitez rechercher les données.
    • MATCH_HIGHLIGHTING_CONDITION : chaîne pouvant avoir les valeurs suivantes :
      • MATCH_HIGHLIGHTING_DISABLED : désactive la mise en surbrillance des correspondances dans tous les documents.
      • MATCH_HIGHLIGHTING_ENABLED : active la mise en surbrillance des correspondances dans tous les documents. Si vous laissez ce champ vide ou ne le spécifiez pas, la mise en surbrillance des correspondances est définie sur MATCH_HIGHLIGHTING_DISABLED et est désactivée dans tous les documents.

Rechercher à l'aide d'une requête en langage naturel avec une réponse de l'IA générative

Lorsque vous recherchez les données FHIR d'un patient à l'aide d'une requête en langage naturel, vous pouvez choisir d'obtenir une réponse d'IA générative en plus des résultats de recherche. La réponse résume les résultats de recherche et affiche également les références utilisées pour la générer.

Lorsque vous utilisez la console, vous pouvez sélectionner le grand modèle de langage (LLM) pour les réponses d'IA générative. Pour en savoir plus, consultez Configurer les résultats de recherche pour les données de santé.

Lorsque vous utilisez l'API REST, vous pouvez spécifier l'un des modèles LLM suivants pour obtenir des réponses d'IA générative dans le champ version :

  • gemini-1.5-flash-001/answer_gen/v1 ou stable : modèle stable et généralement disponible, basé sur le modèle gemini-1.5-flash-001. Pour en savoir plus, consultez Modèles en disponibilité générale (DG).

  • gemini-1.5-pro-002 ou preview : modèle d'aperçu basé sur le modèle gemini-1.5-pro.

L'image suivante montre un exemple de requête en langage naturel avec une réponse d'IA générative. Le résumé de recherche fournit une réponse à la requête en résumant les résultats pertinents. Vous pouvez développer les segments qui comportent des citations pour afficher les références utilisées pour générer le segment sélectionné. Toutes les réponses générées ne comportent pas de citations.

La requête est "Quels sont les résultats des analyses lipidiques du patient ?". Les résultats de la recherche s'affichent sous forme de tableau . Les résultats de recherche sont accompagnés d'un résumé généré par l'IA générative qui indique quote Le patient ne présente aucune allergie connue endquote.
Figure 3 : Effectuez des recherches à l'aide d'une requête en langage naturel avec une réponse générée par l'IA.

Pour effectuer une recherche avec une réponse d'IA générative :

Console

  1. Dans la console Google Cloud , accédez à la page AI Applications.

    AI Applications

  2. Sélectionnez l'application de recherche en santé que vous souhaitez interroger.

  3. Dans le menu de navigation, cliquez sur Configurations.

  4. Personnalisez le widget Recherche :

    1. Dans le champ Type de recherche, sélectionnez Rechercher avec une réponse.
    2. Sélectionnez le modèle que vous souhaitez utiliser pour générer le résumé. Pour en savoir plus, consultez Configurer les résultats de recherche pour les données de santé.
    3. Enregistrez et publiez vos préférences.
  5. Dans le menu de navigation, cliquez sur Aperçu.

  6. Dans le champ ID du patient, saisissez l'ID du patient dont vous souhaitez interroger les données. Les ID de patient sont sensibles à la casse.

  7. Appuyez sur Entrée ou cliquez sur Aperçu pour envoyer l'ID du patient.

  8. Dans la barre de recherche Rechercher ici, saisissez une requête en langage naturel, par exemple "AINS", "Quels sont les résultats des analyses lipidiques du patient ?" ou"Quel est le résultat le plus récent de l'A1c ?".

    Si vous avez activé la saisie semi-automatique, une liste de suggestions s'affiche sous la barre de recherche à mesure que vous saisissez du texte.

  9. Appuyez sur Entrée pour envoyer la requête.

    • La réponse de l'IA générative s'affiche sous la barre de recherche.
    • Les résultats de la recherche s'affichent dans des tableaux paginés, classés en fonction de leur type de ressource FHIR.
    • Par défaut, les résultats de recherche pour tous les types de ressources FHIR s'affichent dans l'ordre chronologique inverse.
  10. Facultatif. Développez un segment de la réponse comportant des citations pour afficher ses références dans les résultats de recherche.

  11. Facultatif. Sélectionnez une ou plusieurs catégories de ressources FHIR sous la barre de recherche pour filtrer les résultats.

  12. Facultatif. Pour trier les résultats par pertinence pour les ressources Composition, DocumentReference et DiagnosticReport, cliquez sur le filtre Trier : ordre chronologique inversé, puis sélectionnez Pertinence dans la liste. Pour en savoir plus, consultez Ordre des résultats de recherche sur la santé.

REST

L'exemple suivant montre comment rechercher les données FHIR R4 d'un seul patient dans l'application de recherche dans le secteur de la santé à l'aide d'une requête en langage naturel avec des réponses d'IA générative. Cet exemple utilise la méthode servingConfigs.search.

  • Pour effectuer une recherche à l'aide d'une requête en langage naturel, vous devez ajouter le champ naturalLanguageQueryUnderstandingSpec au corps de la requête.
  • Pour inclure des index de citations intégrées, vous devez ajouter le champ includeCitations. Il s'agit d'un champ booléen dont la valeur par défaut est définie sur false.

Par défaut, les résultats de recherche sont renvoyés dans l'ordre chronologique inverse. Lorsque vous effectuez une recherche dans les ressources Composition, DiagnosticReport et DocumentReference, vous pouvez trier vos résultats de recherche par pertinence. Pour en savoir plus, consultez Organiser les résultats de recherche sur la santé.

  1. Posez une question en langage naturel.

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://us-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/us/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \
      -d '{
            "query": "QUERY",
            "filter": "patientId: ANY(\"PATIENT_ID\")",
            "contentSearchSpec": {
              "snippetSpec": {
                "returnSnippet": true
              },
              "displaySpec": {
                  "matchHighlightingCondition": "MATCH_HIGHLIGHTING_CONDITION"
              }
              "summarySpec": {
                "summaryResultCount": 1,
                "includeCitations": true,
                "modelSpec": {
                  "version": "MODEL_VERSION"
                }
              }
            },
            "naturalLanguageQueryUnderstandingSpec": {
              "filterExtractionCondition": "ENABLED"
            }
      }'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud .
    • APP_ID : ID de l'application Vertex AI Search que vous souhaitez interroger.
    • QUERY : requête en langage naturel, par exemple "AINS", "Quels sont les résultats des analyses lipidiques des patients ?" ou "Quel est le dernier résultat de l'A1c ?". Si la requête inclut une apostrophe ', vous devez la remplacer par la référence numérique de l'apostrophe : '.
    • PATIENT_ID : ID de ressource du patient dont vous souhaitez rechercher les données.
    • MODEL_VERSION : version du modèle que vous souhaitez utiliser pour générer la réponse.
    • MATCH_HIGHLIGHTING_CONDITION : chaîne pouvant avoir les valeurs suivantes :
      • MATCH_HIGHLIGHTING_DISABLED : désactive la mise en surbrillance des correspondances dans tous les documents.
      • MATCH_HIGHLIGHTING_ENABLED : active la mise en surbrillance des correspondances dans tous les documents. Si vous laissez ce champ vide ou ne le spécifiez pas, la mise en surbrillance des correspondances est définie sur MATCH_HIGHLIGHTING_DISABLED et est désactivée dans tous les documents.