

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# AWS HealthScribe
<a name="health-scribe"></a>

 AWS HealthScribe est une fonctionnalité d'apprentissage automatique (ML) conforme à la loi HIPAA qui combine la reconnaissance vocale et l'IA générative pour transcrire les conversations patient-clinicien et générer des notes cliniques. easy-to-review AWS HealthScribe aide les fournisseurs de logiciels de santé à créer des applications cliniques qui réduisent la charge documentaire et améliorent l'expérience de consultation. Le service fournit automatiquement des transcriptions détaillées des conversations, identifie les rôles des intervenants, classe les dialogues, extrait les termes médicaux et génère des notes cliniques préliminaires. AWS HealthScribecombine ces fonctionnalités pour éliminer le besoin d'intégrer et d'optimiser des services d'IA distincts, ce qui vous permet d'accélérer la mise en œuvre. 

Cas d’utilisation courants :
+ **Réduction du temps de documentation** – Permettre aux médecins de compléter rapidement la documentation clinique grâce à des notes cliniques générées par l’IA, faciles à réviser, à ajuster et à finaliser dans votre application.
+ **Amélioration de l’efficacité des transcriptions médicales** – Équiper les transcripteurs médicaux de transcriptions et de notes cliniques générées par l’IA, ainsi que de la bande audio de la consultation, afin d’accélérer les délais de traitement de la documentation.
+ **Récapitulatif efficace des visites des patients** – Créer une expérience qui permet aux utilisateurs de se souvenir rapidement des points saillants de leur conversation dans votre application.

**Important**  
 Les résultats produits par AWS HealthScribe sont probabilistes et peuvent ne pas toujours être précis en raison de divers facteurs, notamment la qualité audio, le bruit de fond, la clarté du haut-parleur, la complexité de la terminologie médicale, les nuances linguistiques spécifiques au contexte et [la nature de l'apprentissage automatique et de l'](https://aws.amazon.com/machine-learning/responsible-ai/policy/)IA générative. AWS HealthScribe est conçu pour être utilisé dans un rôle d'assistance pour les cliniciens et les scribes médicaux. AWS HealthScribe les résultats ne doivent être utilisés que dans des scénarios de soins aux patients, y compris, mais sans s'y limiter, dans le cadre des dossiers médicaux électroniques, après examen de leur exactitude et imposition d'un jugement médical solide par des professionnels de santé qualifiés. AWS HealthScribe les résultats ne remplacent pas les conseils, diagnostics ou traitements médicaux professionnels et ne sont pas destinés à guérir, traiter, atténuer, prévenir ou diagnostiquer une maladie ou un problème de santé. 

**Topics**
+ [Sécurité](#health-scribe-security-overview)
+ [Disponibilité du service](#health-scribe-availability)
+ [Exigences techniques](#health-scribe-tech-requirements-overview)
+ [Spécialités médicales prises en charge](#health-scribe-specialties)
+ [Flux de travail](#health-scribe-workflows)
+ [AWS HealthScribe Fichier de transcription](health-scribe-transcript.md)
+ [AWS HealthScribe Dossier de documentation clinique](health-scribe-insights.md)
+ [AWS HealthScribe travaux de transcription](health-scribe-job.md)
+ [AWS HealthScribe diffusion en continu](health-scribe-streaming.md)
+ [Chiffrement des données au repos pour AWS HealthScribe](health-scribe-encryption.md)

## Sécurité
<a name="health-scribe-security-overview"></a>

AWS HealthScribe fonctionne selon un modèle de responsabilité partagée, dans lequel AWS vous êtes responsable de la protection de l'infrastructure qui fonctionne AWS HealthScribe et vous êtes responsable de la gestion de vos données. Pour plus d’informations, consultez la section [Modèle de responsabilité partagée d’](https://aws.amazon.com/compliance/shared-responsibility-model/).

 Par défaut, AWS HealthScribe fournit un chiffrement au repos pour protéger les données sensibles des clients à l'aide de clés Amazon S3 gérées. Lorsque vous créez une tâche de AWS HealthScribe transcription ou que vous démarrez un flux, vous pouvez spécifier une clé gérée par le client. Cela ajoute une deuxième couche de chiffrement. Pour de plus amples informations, veuillez consulter [Chiffrement des données au repos pour AWS HealthScribe](health-scribe-encryption.md). 

## Disponibilité du service
<a name="health-scribe-availability"></a>

AWS HealthScribe est disponible dans la région USA Est (Virginie du Nord).

## Exigences techniques
<a name="health-scribe-tech-requirements-overview"></a>
+ **Langue prise en charge :** anglais américain (en-US)
+ **Format audio recommandé :** audio sans perte (tel que FLAC ou WAV)
+ **Encodage :** PCM 16 bits
+ Fréquence **d'échantillonnage :** 16 000 Hz ou plus

## Spécialités médicales prises en charge
<a name="health-scribe-specialties"></a>

AWS HealthScribe prend actuellement en charge les spécialités suivantes :
+ Immunologie des allergies
+ Cardiologie
+ Dermatologie
+ Endocrinologie
+ Gastroentérologie
+ Hématologie/oncologie
+ Maladie infectieuse
+ Néphrologie
+ Neurologie
+ OBSTÉTRICIEN
+ Oncologie
+ Ophtalmologie
+ Orthopédie
+ Otolaryngologie
+ Médicaments contre la douleur
+ Pédiatrie
+ Soins primaires
+ Psychiatrie
+ Pneumologie
+ Rhumatologie
+ Chirurgie
+ Urologie

## Flux de travail
<a name="health-scribe-workflows"></a>

 AWS HealthScribe les flux de travail incluent les tâches de transcription et le streaming. Une fois que vous avez exécuté une tâche de transcription ou terminé un flux, vous AWS HealthScribe générez un fichier de transcription contenant le résultat de turn-by-turn la transcription et des informations pour chaque tour de conversation. Il génère également un fichier de documentation clinique, avec des résumés et des liens vers des preuves. Pour plus d’informations, consultez [AWS HealthScribe Fichier de transcription](health-scribe-transcript.md) et [AWS HealthScribe Dossier de documentation clinique](health-scribe-insights.md). 
+ **Tâches** de transcription : avec les tâches de transcription, AWS HealthScribe analyse les fichiers multimédia de consultations médicales terminés à partir d'un compartiment Amazon S3. Les opérations d'API suivantes sont spécifiques aux tâches AWS HealthScribe de transcription. 
  + [StartMedicalScribeJob](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_StartMedicalScribeJob.html)
  + [ListMedicalScribeJobs](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_ListMedicalScribeJobs.html)
  + [GetMedicalScribeJob](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_GetMedicalScribeJob.html)
  + [DeleteMedicalScribeJob](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_DeleteMedicalScribeJob.html)

  Pour plus d'informations, notamment des exemples de code, consultez[AWS HealthScribe travaux de transcription](health-scribe-job.md).
+ **Streaming** — Le AWS HealthScribe streaming est un service bidirectionnel en temps réel HTTP2 qui accepte le flux audio sur un canal et vend une transcription audio sur l'autre canal.

  

   Les opérations d'API suivantes sont spécifiques au AWS HealthScribe streaming :
  + [StartMedicalScribeStream](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartMedicalScribeStream.html)
  + [GetMedicalScribeStream](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_GetMedicalScribeStream.html)

  Pour plus d'informations, notamment des exemples de code, consultez[AWS HealthScribe diffusion en continu](health-scribe-streaming.md).

# AWS HealthScribe Fichier de transcription
<a name="health-scribe-transcript"></a>

Dans le fichier de transcription, outre la sortie de turn-by-turn transcription standard avec horodatage au niveau des mots, AWS HealthScribe vous trouverez :
+ **Détection du rôle des participants** : pour distinguer les patients des médecins dans la transcription de la conversation.
+ **Découpage des transcriptions** : pour classer les dialogues de transcription en fonction de leur pertinence clinique (discussion informelle, subjectif, objectif, etc.). Peut être utilisé pour afficher des parties spécifiques de la transcription.
+ **Entités cliniques** : qui incluent des informations structurées telles que les médicaments, les affections médicales et les traitements mentionnés dans la conversation.

En outre, les informations suivantes sont fournies pour chaque tour de conversation :
+ **Rôle du participant** – Chaque participant est étiqueté comme un médecin ou un patient. Si une conversation compte plusieurs participants dans chaque catégorie, un numéro est attribué à chaque participant. Par exemple, `CLINICIAN_0`, `CLINICIAN_1` et `PATIENT_0`, `PATIENT_1`.
+ **Section** : chaque tour de dialogue est attribué à l’une des quatre sections possibles en fonction du contenu identifié.
  + **Subjectif** : informations fournies par le patient au sujet de ses problèmes de santé.
  + **Objectif** : informations observées par le médecin par le biais d’examens physiques, de tests de laboratoire, d’imagerie ou de tests diagnostiques.
  + **Évaluation et plan** : informations relatives à l’évaluation du médecin et au plan de traitement.
  + **Consultez Flow Management** — Informations relatives aux conversations informelles ou aux transitions.
+ **Informations** — Extrayez les entités cliniquement pertinentes (`ClinicalEntity`) présentes dans la conversation. AWS HealthScribe détecte toutes les entités cliniques prises en charge par [Amazon Comprehend Medical](https://aws.amazon.com//comprehend/medical).

Pour un exemple de transcription d'une tâche de transcription, voir la transcription sortie dans. [Exemples de résultats de tâches de transcription](starting-health-scribe-job.md#health-scribe-output-example) Pour un exemple de transcription issue d'une diffusion en continu, consultez le résultat de la transcription dans. [Exemples de sorties de transcription en streaming](health-scribe-streaming-setting-up.md#health-scribe-streaming-output-example) 

# AWS HealthScribe Dossier de documentation clinique
<a name="health-scribe-insights"></a>

AWS HealthScribe peut utiliser l'un des modèles suivants pour le résumé des notes cliniques. La valeur par défaut est `HISTORY_AND_PHYSICAL`.
+ HISTORY\$1AND\$1PHYSICAL : fournit des résumés des sections clés de la documentation clinique. Des exemples de sections incluent la plainte principale, l'historique de la maladie actuelle, l'examen des systèmes, les antécédents médicaux, l'évaluation et le plan. 
+ GIRPP : fournit des résumés basés sur les progrès du patient par rapport aux objectifs. Des exemples de sections incluent l'objectif, l'intervention, la réponse, les progrès et le plan.
+ BIRP : met l'accent sur les modèles comportementaux et les réponses du patient. Des exemples de sections incluent le comportement, l'intervention, la réponse et le plan.
+ SIRP : met l'accent sur le contexte situationnel de la thérapie. Des exemples de sections incluent la situation, l'intervention, la réponse et le plan.
+ DAP : fournit un format simplifié pour la documentation clinique. Des exemples de sections incluent les données, l'évaluation et le plan.
+ BH\$1SOAP : format de documentation axé sur la santé comportementale. Les sections Subjective, Objectif, Évaluation et Plan sont des exemples de sections.
+ PH\$1SOAP : format de documentation axé sur la santé physique. Les sections Subjective, Objectif, Évaluation et Plan sont des exemples de sections.

Pour spécifier le modèle à utiliser, procédez comme suit :
+  Pour les tâches de transcription, spécifiez le modèle à utiliser dans le `NoteTemplate` [ClinicalNoteGenerationSettings](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_ClinicalNoteGenerationSettings.html)`Settings`de votre opération d'[StartMedicalScribeJob](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_StartMedicalScribeJob.html)API. 
+  Pour le streaming, vous spécifiez le modèle à utiliser dans le `NoteTemplate` [ClinicalNoteGenerationSettings](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_ClinicalNoteGenerationSettings.html)`PostStreamAnalyticsSettings`de votre [MedicalScribeConfigurationEvent](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_MedicalScribeConfigurationEvent.html). 

## Contexte de Medical Scribe
<a name="health-scribe-contextual-information"></a>

L'`MedicalScribeContext`objet contient des informations contextuelles utilisées pour personnaliser la génération de notes cliniques avec des informations spécifiques au patient.

L'`MedicalScribeContext`objet inclut les composants suivants :
+ **PatientContext**- Contient des informations spécifiques au patient utilisées pour personnaliser la génération de notes cliniques. Cela inclut notamment les éléments suivants :
  + **Pronoms** : pronoms préférés du patient que vous souhaitez fournir comme contexte pour la génération de notes cliniques. Ces pronoms sont utilisés pour faire référence au patient dans le résultat clinique généré.

Pour plus d'informations sur la façon de configurer le contexte du scribe médical, consultez [MedicalScribeContext](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_MedicalScribeContext.html).

**Topics**
+ [Contexte de Medical Scribe](#health-scribe-contextual-information)
+ [sections du modèle HISTORY\$1AND\$1PHYSICAL](#health-scribe-history-physical-insights)
+ [Sections du modèle GIRPP](#health-scribe-GIRPP-insights)
+ [Sections du modèle BIRP](#health-scribe-BIRP-insights)
+ [Sections du modèle SIRP](#health-scribe-SIRP-insights)
+ [Sections du modèle DAP](#health-scribe-DAP-insights)
+ [sections du modèle BH\$1SOAP](#health-scribe-BH-SOAP-insights)
+ [sections du modèle PH\$1SOAP](#health-scribe-PH-SOAP-insights)

## sections du modèle HISTORY\$1AND\$1PHYSICAL
<a name="health-scribe-history-physical-insights"></a>

Le modèle d'informations HISTORY\$1AND\$1PHYSICAL comprend les sections suivantes.


| Section | Description | 
| --- | --- | 
|  PLAINTE PRINCIPALE  |  Brève description de la raison pour laquelle le patient consulte le clinicien.  | 
|  ANTÉCÉDENTS DE LA MALADIE ACTUELLE  |  Notes fournissant des informations sur la maladie du patient, notamment sur la gravité, l’apparition et la chronologie des symptômes, les traitements actuels et les zones touchées.  | 
|  EXAMEN DES SYSTÈMES  |  Évaluation des symptômes des différents systèmes corporels rapportée par le patient.  | 
|  ANTÉCÉDENTS MÉDICAUX  |  Détaille les problèmes médicaux, les interventions chirurgicales et les traitements antérieurs d’un patient.  | 
|  ÉVALUATION  |  Notes fournissant des informations sur l’évaluation de l’état de santé du patient par le médecin.  | 
|  PLAN  |  Notes faisant référence à tout traitement médical, à tout ajustement du mode de vie et à tout autre rendez-vous.  | 
|  EXAMEN\$1PHYSIQUE  |  Documentation des résultats obtenus par le clinicien à la suite de l'examen physique des systèmes corporels et des signes vitaux du patient.  | 
|  HISTOIRE\$1FAMILIALE PASSÉE  |  Informations sur les problèmes de santé de la famille du patient.  | 
|  HISTOIRE\$1SOCIALE PASSÉE  |  Détails sur la vie sociale, les habitudes, la profession et les facteurs environnementaux du patient qui influent sur la santé.  | 
|  TEST\$1DIAGNOSTIQUE  |  Résultats et interprétation des tests de laboratoire, des études d'imagerie et d'autres procédures diagnostiques.  | 

Chaque phrase présente dans les `Summary` `EvidenceLinks` inclusions qui fournit `SegmentId` les dialogues pertinents de la transcription qui ont été résumés. Cela permet aux utilisateurs de valider l'exactitude du résumé dans votre application. Tout comme l'explicabilité, assurer la traçabilité et la transparence des informations générées par l'IA est conforme aux principes de l'IA responsable. Fournir ces références ainsi que les notes de synthèse aux cliniciens ou aux scribes médicaux contribue à renforcer la confiance et à encourager l'utilisation sûre de l'IA dans les milieux cliniques.

Pour un exemple de fichier de documentation clinique issu d'une tâche de transcription, consultez l'exemple de fichier de documentation clinique dans[Exemples de résultats de tâches de transcription](starting-health-scribe-job.md#health-scribe-output-example). Pour un exemple de fichier de documentation clinique issu du streaming, consultez l'exemple de fichier de documentation clinique dans[Exemples de sorties de transcription en streaming](health-scribe-streaming-setting-up.md#health-scribe-streaming-output-example). 

## Sections du modèle GIRPP
<a name="health-scribe-GIRPP-insights"></a>

Le modèle GIRPP Insights comprend les sections suivantes.


| Section | Description | 
| --- | --- | 
|  Objectif  |  Le problème, le défi ou le comportement identifié qui doit être traité par le biais d'un traitement.  | 
|  Intervention  |  Traitement, méthode ou technique spécifique utilisé par le clinicien pour aider le patient à atteindre l'objectif défini.  | 
|  Réponse  |  Comment le patient a réagi à l'intervention, y compris son niveau de participation, ses réactions et ses commentaires.  | 
|  Progression  |  Évaluation par le clinicien de l'évolution vers les objectifs du traitement, y compris l'observation des améliorations ou des obstacles rencontrés par le patient.  | 
|  Plan  |  Les prochaines étapes du traitement, y compris les interventions futures, les devoirs et les recommandations.  | 

## Sections du modèle BIRP
<a name="health-scribe-BIRP-insights"></a>

Le modèle BIRP Insights comprend les sections suivantes.


| Section | Description | 
| --- | --- | 
|  Comportement  |  Les problèmes que présente le patient et sa réponse au traitement.  | 
|  Intervention  |  Traitement, méthode ou technique spécifique utilisé par le clinicien pour aider le patient à atteindre l'objectif défini.  | 
|  Réponse  |  Comment le patient a réagi à l'intervention, y compris son niveau de participation, ses réactions et ses commentaires.  | 
|  Plan  |  Les prochaines étapes du traitement, y compris les interventions futures, les devoirs et les recommandations.  | 

## Sections du modèle SIRP
<a name="health-scribe-SIRP-insights"></a>

Le modèle SIRP Insights comprend les sections suivantes.


| Section | Description | 
| --- | --- | 
|  Situation  |  Le problème que présente le patient et son objectif en matière de recherche d'un traitement.  | 
|  Intervention  |  Traitement, méthode ou technique spécifique utilisé par le clinicien pour aider le patient à atteindre l'objectif défini.  | 
|  Réponse  |  Comment le patient a réagi à l'intervention, y compris son niveau de participation, ses réactions et ses commentaires.  | 
|  Plan  |  Les prochaines étapes du traitement, y compris les interventions futures, les devoirs et les recommandations.  | 

## Sections du modèle DAP
<a name="health-scribe-DAP-insights"></a>

Le modèle DAP Insights comprend les sections suivantes.


| Section | Description | 
| --- | --- | 
|  Données  |  Les raisons pour lesquelles le patient demande un traitement et les informations le concernant.  | 
|  Évaluation  |  Diagnostic de la situation du patient établi par le clinicien.  | 
|  Plan  |  Les prochaines étapes du traitement, y compris les interventions futures, les devoirs et les recommandations.  | 

## sections du modèle BH\$1SOAP
<a name="health-scribe-BH-SOAP-insights"></a>

Le modèle BH\$1SOAP Insights inclut les sections suivantes.


| Section | Description | 
| --- | --- | 
|  Subjective  |  Les objectifs du client en matière de traitement et ses expériences, ainsi que les problèmes existants et passés.  | 
|  Objectif  |  Données et faits concernant le client.  | 
|  Évaluation  |  Diagnostic de la situation du patient établi par le clinicien.  | 
|  Plan  |  Les prochaines étapes du traitement, y compris les interventions futures, les devoirs et les recommandations.  | 

## sections du modèle PH\$1SOAP
<a name="health-scribe-PH-SOAP-insights"></a>

Le modèle PH\$1SOAP Insights inclut les sections suivantes.


| Section | Description | 
| --- | --- | 
|  Subjective  |  Les objectifs du client en matière de traitement et ses expériences, ainsi que les problèmes existants et passés.  | 
|  Objectif  |  Données et faits concernant le client.  | 
|  Évaluation  |  Diagnostic de la situation du patient établi par le clinicien.  | 
|  Plan  |  Les prochaines étapes du traitement, y compris les interventions futures, les devoirs et les recommandations.  | 

# AWS HealthScribe travaux de transcription
<a name="health-scribe-job"></a>

Une tâche AWS HealthScribe de transcription traite les fichiers multimédia d'un compartiment Amazon S3. [Lorsqu'il traite un fichier multimédia, il transcrit les conversations patient-clinicien et analyse les consultations médicales pour produire deux fichiers de sortie JSON : un fichier de [transcription](https://docs.aws.amazon.com/transcribe/latest/dg/health-scribe-job.html#health-scribe-output-example) et un fichier de documentation clinique.](https://docs.aws.amazon.com/transcribe/latest/dg/health-scribe-job.html#health-scribe-output-example)

Les opérations d'API suivantes sont spécifiques aux tâches AWS HealthScribe de transcription :
+ [StartMedicalScribeJob](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_StartMedicalScribeJob.html)
+ [ListMedicalScribeJobs](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_ListMedicalScribeJobs.html)
+ [GetMedicalScribeJob](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_GetMedicalScribeJob.html)
+ [DeleteMedicalScribeJob](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_DeleteMedicalScribeJob.html)

# Démarrage d'une tâche AWS HealthScribe de transcription
<a name="starting-health-scribe-job"></a>

Vous pouvez démarrer une AWS HealthScribe tâche à l'aide de la AWS CLI ou AWS SDKs.

## AWS CLI
<a name="health-scribe-cli-batch"></a>

 Cet exemple utilise la [start-medical-scribe-job](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/transcribe/start-medical-scribe-job.html)commande. Pour de plus amples informations, veuillez consulter [StartMedicalScribeJob](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_StartMedicalScribeJob.html). 

```
aws transcribe start-medical-scribe-job \
--region us-west-2 \
--medical-scribe-job-name my-first-medical-scribe-job \
--media MediaFileUri=s3://amzn-s3-demo-bucket/my-input-files/my-media-file.flac \
--output-bucket-name amzn-s3-demo-bucket \
--DataAccessRoleArn=arn:aws:iam::111122223333:role/ExampleRole \
--settings ShowSpeakerLabels=false,ChannelIdentification=true \
--channel-definitions ChannelId=0,ParticipantRole=CLINICIAN ChannelId=1,ParticipantRole=PATIENT
```

Voici un autre exemple d'utilisation de la [start-medical-scribe-job](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/transcribe/start-medical-scribe-job.html)commande, ainsi qu'un corps de requête avec des paramètres supplémentaires.

```
aws transcribe start-medical-scribe-job \
--region us-west-2 \
--cli-input-json file://filepath/my-first-medical-scribe-job.json
```

Le fichier `my-first-medical-scribe-job.json` contient le corps de requête suivant.

```
{
  "MedicalScribeJobName": "my-first-medical-scribe-job",  
  "Media": {
    "MediaFileUri": "s3://amzn-s3-demo-bucket/my-input-files/my-media-file.flac"
   },
  "OutputBucketName": "amzn-s3-demo-bucket", 
  "DataAccessRoleArn": "arn:aws:iam::111122223333:role/ExampleRole",
  "Settings": {
    "ShowSpeakerLabels": false,
    "ChannelIdentification": true
  },
  "ChannelDefinitions": [
    {
      "ChannelId": 0,
      "ParticipantRole":"CLINICIAN"
    }, {
      "ChannelId": 1,
      "ParticipantRole":"PATIENT"
    }
  ]
}
```

## AWS SDK pour Python (Boto3)
<a name="health-scribe-python-batch"></a>

 L'exemple suivant utilise le AWS SDK pour Python (Boto3) pour effectuer une demande [start\$1medical\$1scribe\$1job](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/transcribe/client/start_medical_scribe_job.html). Pour de plus amples informations, veuillez consulter [StartMedicalScribeJob](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_StartMedicalScribeJob.html). 

```
from __future__ import print_functionimport timeimport boto3
transcribe = boto3.client('transcribe', 'us-west-2')
job_name = "my-first-medical-scribe-job"
job_uri = "s3://amzn-s3-demo-bucket/my-input-files/my-media-file.flac"
transcribe.start_medical_scribe_job(
    MedicalScribeJobName = job_name,
    Media = {
      'MediaFileUri': job_uri
    },
    OutputBucketName = 'amzn-s3-demo-bucket',
    DataAccessRoleArn = 'arn:aws:iam::111122223333:role/ExampleRole',
    Settings = {
      'ShowSpeakerLabels': false,
      'ChannelIdentification': true
    },
    ChannelDefinitions = [
      {
        'ChannelId': 0, 
        'ParticipantRole': 'CLINICIAN'
      }, {
        'ChannelId': 1, 
        'ParticipantRole': 'PATIENT'
      }
    ]
)
while True:
    status = transcribe.get_medical_scribe_job(MedicalScribeJobName = job_name)
    if status['MedicalScribeJob']['MedicalScribeJobStatus'] in ['COMPLETED', 'FAILED']:
        break
    print("Not ready yet...")
    time.sleep(5)    
print(status)
```

**Note**  
La console AWS de gestion ne prend actuellement pas en charge les AWS HealthScribe tâches.

## Exemples de résultats de tâches de transcription
<a name="health-scribe-output-example"></a>

Outre une transcription, les demandes `StartMedicalScribeJob` génèrent un fichier de documentation clinique distinct. Les deux fichiers sont au format JSON et sont stockés dans l'emplacement de sortie que vous spécifiez dans votre demande. Voici des exemples de chaque type de sortie :

### Exemple de sortie de transcription
<a name="health-scribe-transcript-output"></a>

 Le format d'un fichier de AWS HealthScribe transcription (issu d'une `StartMedicalScribeJob` demande) est le suivant : 

```
{
  "Conversation": {
    "ConversationId": "sampleConversationUUID",
    "JobName": "sampleJobName",
    "JobType": "ASYNC",
    "LanguageCode": "en-US",
    "ClinicalInsights": [
      {
        "Attributes": [],
        "Category": "MEDICAL_CONDITION",
        "InsightId": "insightUUID1",
        "InsightType": "ClinicalEntity",
        "Spans": [
          {
            "BeginCharacterOffset": 12,
            "Content": "pain",
            "EndCharacterOffset": 15,
            "SegmentId": "uuid1"
          }
        ],
        "Type": "DX_NAME"
      },
      {
        "Attributes": [],
        "Category": "TEST_TREATMENT_PROCEDURE",
        "InsightId": "insightUUID2",
        "InsightType": "ClinicalEntity",
        "Spans": [
          {
            "BeginCharacterOffset": 4,
            "Content": "mammogram",
            "EndCharacterOffset": 12,
            "SegmentId": "uuid2"
          }
        ],
        "Type": "TEST_NAME"
      },
      {
        "Attributes": [],
        "Category": "TEST_TREATMENT_PROCEDURE",
        "InsightId": "insightUUID3",
        "InsightType": "ClinicalEntity",
        "Spans": [
          {
            "BeginCharacterOffset": 15,
            "Content": "pap smear",
            "EndCharacterOffset": 23,
            "SegmentId": "uuid3"
          }
        ],
        "Type": "TEST_NAME"
      },
      {
        "Attributes": [],
        "Category": "MEDICATION",
        "InsightId": "insightUUID4",
        "InsightType": "ClinicalEntity",
        "Spans": [
          {
            "BeginCharacterOffset": 28,
            "Content": "phentermine",
            "EndCharacterOffset": 38,
            "SegmentId": "uuid4"
          }
        ],
        "Type": "GENERIC_NAME"
      },
      {
        "Attributes": [
          {
            "AttributeId": "attributeUUID1",
            "Spans": [
              {
                "BeginCharacterOffset": 38,
                "Content": "high",
                "EndCharacterOffset": 41,
                "SegmentId": "uuid5"
              }
            ],
            "Type": "TEST_VALUE"
          }
        ],
        "Category": "TEST_TREATMENT_PROCEDURE",
        "InsightId": "insightUUID5",
        "InsightType": "ClinicalEntity",
        "Spans": [
          {
            "BeginCharacterOffset": 14,
            "Content": "weight",
            "EndCharacterOffset": 19,
            "SegmentId": "uuid6"
          }
        ],
        "Type": "TEST_NAME"
      },
      {
        "Attributes": [],
        "Category": "ANATOMY",
        "InsightId": "insightUUID6",
        "InsightType": "ClinicalEntity",
        "Spans": [
          {
            "BeginCharacterOffset": 60,
            "Content": "heart",
            "EndCharacterOffset": 64,
            "SegmentId": "uuid7"
          }
        ],
        "Type": "SYSTEM_ORGAN_SITE"
      }
    ],
    "TranscriptItems": [
      {
        "Alternatives": [
          {
            "Confidence": 0.7925,
            "Content": "Okay"
          }
        ],
        "BeginAudioTime": 0.16,
        "EndAudioTime": 0.6,
        "Type": "PRONUNCIATION"
      },
      {
        "Alternatives": [
          {
            "Confidence": 0,
            "Content": "."
          }
        ],
        "BeginAudioTime": 0.17,
        "EndAudioTime": 0.9,
        "Type": "PUNCTUATION"
      },
      {
        "Alternatives": [
          {
            "Confidence": 1,
            "Content": "Good"
          }
        ],
        "BeginAudioTime": 0.61,
        "EndAudioTime": 0.92,
        "Type": "PRONUNCIATION"
      },
      {
        "Alternatives": [
          {
            "Confidence": 1,
            "Content": "afternoon"
          }
        ],
        "BeginAudioTime": 0.92,
        "EndAudioTime": 1.54,
        "Type": "PRONUNCIATION"
      },
      {
        "Alternatives": [
          {
            "Confidence": 0,
            "Content": "."
          }
        ],
        "BeginAudioTime": 0,
        "EndAudioTime": 0,
        "Type": "PUNCTUATION"
      },
      {
        "Alternatives": [
          {
            "Confidence": 0.9924,
            "Content": "You"
          }
        ],
        "BeginAudioTime": 1.55,
        "EndAudioTime": 1.88,
        "Type": "PRONUNCIATION"
      },
      {
        "Alternatives": [
          {
            "Confidence": 1,
            "Content": "lost"
          }
        ],
        "BeginAudioTime": 1.88,
        "EndAudioTime": 2.19,
        "Type": "PRONUNCIATION"
      },
      {
        "Alternatives": [
          {
            "Confidence": 1,
            "Content": "one"
          }
        ],
        "BeginAudioTime": 2.19,
        "EndAudioTime": 2.4,
        "Type": "PRONUNCIATION"
      },
      {
        "Alternatives": [
          {
            "Confidence": 1,
            "Content": "lb"
          }
        ],
        "BeginAudioTime": 2.4,
        "EndAudioTime": 2.97,
        "Type": "PRONUNCIATION"
      }
    ],
    "TranscriptSegments": [
      {
        "BeginAudioTime": 0.16,
        "Content": "Okay.",
        "EndAudioTime": 0.6,
        "ParticipantDetails": {
          "ParticipantRole": "CLINICIAN_0"
        },
        "SectionDetails": {
          "SectionName": "SUBJECTIVE"
        },
        "SegmentId": "uuid1"
      },
      {
        "BeginAudioTime": 0.61,
        "Content": "Good afternoon.",
        "EndAudioTime": 1.54,
        "ParticipantDetails": {
          "ParticipantRole": "CLINICIAN_0"
        },
        "SectionDetails": {
          "SectionName": "OTHER"
        },
        "SegmentId": "uuid2"
      },
      {
        "BeginAudioTime": 1.55,
        "Content": "You lost one lb.",
        "EndAudioTime": 2.97,
        "ParticipantDetails": {
          "ParticipantRole": "CLINICIAN_0"
        },
        "SectionDetails": {
          "SectionName": "SUBJECTIVE"
        },
        "SegmentId": "uuid3"
      },
      {
        "BeginAudioTime": 2.98,
        "Content": "Yeah, I think it, uh, do you feel more energy?",
        "EndAudioTime": 6.95,
        "ParticipantDetails": {
          "ParticipantRole": "CLINICIAN_0"
        },
        "SectionDetails": {
          "SectionName": "SUBJECTIVE"
        },
        "SegmentId": "uuid5"
      },
      {
        "BeginAudioTime": 6.96,
        "Content": "Yes.",
        "EndAudioTime": 7.88,
        "ParticipantDetails": {
          "ParticipantRole": "CLINICIAN_0"
        },
        "SectionDetails": {
          "SectionName": "SUBJECTIVE"
        },
        "SegmentId": "uuid6"
      },
      {
        "BeginAudioTime": 7.89,
        "Content": "Uh, how about craving for the carbohydrate or sugar or fat or anything?",
        "EndAudioTime": 17.93,
        "ParticipantDetails": {
          "ParticipantRole": "CLINICIAN_0"
        },
        "SectionDetails": {
          "SectionName": "SUBJECTIVE"
        },
        "SegmentId": "uuid7"
      }
    ]
  }
}
```

Voici un autre exemple d'utilisation de la [start-medical-scribe-job](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/transcribe/start-medical-conversation-intelligence-job.html)commande, ainsi qu'un corps de requête avec des paramètres supplémentaires.

```
aws transcribe start-medical-scribe-job \
--region us-west-2 \
--cli-input-json file://filepath/my-first-medical-scribe-job.json
```

Le fichier `my-first-medical-scribe-job.json` contient le corps de requête suivant.

```
{
  "MedicalScribeJobName": "my-first-medical-scribe-job",  
  "Media": {
    "MediaFileUri": "s3://amzn-s3-demo-bucket/my-input-files/my-media-file.flac"
   },
  "OutputBucketName": "amzn-s3-demo-bucket", 
  "DataAccessRoleArn": "arn:aws:iam::111122223333:role/ExampleRole",
  "Settings": {
    "ShowSpeakerLabels": false,
    "ChannelIdentification": true
  },
  "ChannelDefinitions": [
    {
      "ChannelId": 0,
      "ParticipantRole":"CLINICIAN"
    }, {
      "ChannelId": 1,
      "ParticipantRole":"PATIENT"
    }
  ]
}
```

### Exemple de sortie de documentation clinique
<a name="health-scribe-insights-output"></a>

 Un fichier d’informations sur la documentation (issu d’une demande `StartMedicalScribeJob`) a le format suivant : 

```
{
  "ClinicalDocumentation": {
    "Sections": [
      {
        "SectionName": "CHIEF_COMPLAINT",
        "Summary": [
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid1"
              },
              {
                "SegmentId": "uuid2"
              },
              {
                "SegmentId": "uuid3"
              },
              {
                "SegmentId": "uuid4"
              },
              {
                "SegmentId": "uuid5"
              },
              {
                "SegmentId": "uuid6"
              }
            ],
            "SummarizedSegment": "Weight loss."
          }
        ]
      },
      {
        "SectionName": "HISTORY_OF_PRESENT_ILLNESS",
        "Summary": [
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid7"
              },
              {
                "SegmentId": "uuid8"
              },
              {
                "SegmentId": "uuid9"
              },
              {
                "SegmentId": "uuid10"
              }
            ],
            "SummarizedSegment": "The patient is seen today for a follow-up of weight loss."
          },
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid11"
              },
              {
                "SegmentId": "uuid12"
              },
              {
                "SegmentId": "uuid13"
              }
            ],
            "SummarizedSegment": "They report feeling more energy and craving carbohydrates, sugar, and fat."
          },
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid14"
              },
              {
                "SegmentId": "uuid15"
              },
              {
                "SegmentId": "uuid16"
              }
            ],
            "SummarizedSegment": "The patient is up to date on their mammogram and pap smear."
          },
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid17"
              },
              {
                "SegmentId": "uuid18"
              },
              {
                "SegmentId": "uuid19"
              },
              {
                "SegmentId": "uuid20"
              }
            ],
            "SummarizedSegment": "The patient is taking phentermine and would like to continue."
          }
        ]
      },
      {
        "SectionName": "REVIEW_OF_SYSTEMS",
        "Summary": [
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid21"
              },
              {
                "SegmentId": "uuid22"
              }
            ],
            "SummarizedSegment": "Patient reports intermittent headaches, occasional chest pains but denies any recent fevers or chills."
          },
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid23"
              },
              {
                "SegmentId": "uuid24"
              }
            ],
            "SummarizedSegment": "No recent changes in vision, hearing, or any respiratory complaints."
          }
        ]
      },
      {
        "SectionName": "PAST_MEDICAL_HISTORY",
        "Summary": [
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid25"
              },
              {
                "SegmentId": "uuid26"
              }
            ],
            "SummarizedSegment": "Patient has a history of hypertension and was diagnosed with Type II diabetes 5 years ago."
          },
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid27"
              },
              {
                "SegmentId": "uuid28"
              }
            ],
            "SummarizedSegment": "Underwent an appendectomy in the early '90s and had a fracture in the left arm during childhood."
          }
        ]
      },
      {
        "SectionName": "ASSESSMENT",
        "Summary": [
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid29"
              },
              {
                "SegmentId": "uuid30"
              }
            ],
            "SummarizedSegment": "Weight loss"
          }
        ]
      },
      {
        "SectionName": "PLAN",
        "Summary": [
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid31"
              },
              {
                "SegmentId": "uuid32"
              },
              {
                "SegmentId": "uuid33"
              },
              {
                "SegmentId": "uuid34"
              }
            ],
            "SummarizedSegment": "For the condition of Weight loss: The patient was given a 30-day supply of phentermine and was advised to follow up in 30 days."
          }
        ]
      }
    ]
  }
}
```

# AWS HealthScribe diffusion en continu
<a name="health-scribe-streaming"></a>

Grâce au AWS HealthScribe streaming, vous pouvez transcrire des conversations médicales en temps réel. AWS HealthScribe le streaming est un service bidirectionnel en temps réel HTTP2 qui accepte le flux audio sur un canal et vend une transcription audio sur l'autre canal. Une fois le streaming terminé, AWS HealthScribe analyse le contenu du flux et produit un fichier JSON de transcription et un fichier JSON de note clinique. 

 Pour démarrer le streaming, utilisez l'opération [StartMedicalScribeStream](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartMedicalScribeStream.html)API. Cette API démarre un canal bidirectionnel HTTP2 basé que vous utilisez pour diffuser des événements audio. 

Lorsque vous démarrez un flux, spécifiez d'abord la configuration du flux dans un`MedicalScribeConfigurationEvent`. Cet événement inclut les définitions de canaux, les paramètres de chiffrement et les paramètres d'analyse post-stream, tels que la configuration de sortie pour la génération de transcriptions agrégées et de notes cliniques. 

Une fois que vous avez commencé à diffuser de l'audio, vous gérez le flux comme suit :
+  Lorsque vous avez terminé, pour commencer à traiter les résultats avec les analyses post-stream, envoyez un `MedicalScribeSessionControlEvent` avec un `Type` de `END_OF_SESSION` et AWS HealthScribe lancez les analyses.
+ Pour suspendre le streaming, terminez le flux d'entrée sans envoyer le`MedicalScribeSessionControlEvent`.
+ Pour reprendre un flux suspendu, utilisez l'opération `StartMedicalScribeStream` API et spécifiez-la. `SessionId` Il s'agit de `SessionId` celui que vous avez utilisé lorsque vous avez initialement lancé le stream.

**Topics**
+ [Directives et exigences](#health-scribe-streaming-requirements)
+ [ResourceAccessRoleArn autorisations de rôle](#health-scribe-data-access-role)
+ [Démarrage de la transcription AWS HealthScribe en streaming](health-scribe-streaming-setting-up.md)

## Directives et exigences
<a name="health-scribe-streaming-requirements"></a>

Les directives et les exigences relatives au AWS HealthScribe streaming sont les suivantes :
+ Avant d'envoyer des événements audio, vous devez d'abord spécifier la configuration du flux dans un`[MedicalScribeConfigurationEvent](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_MedicalScribeConfigurationEvent.html)`.
+ Pour exécuter des analyses post-stream, vous `MedicalScribeConfigurationEvent` devez disposer des autorisations appropriées. `ResourceAccessRoleArn` Pour de plus amples informations, veuillez consulter [ResourceAccessRoleArn autorisations de rôle](#health-scribe-data-access-role). 
+ Vous pouvez reprendre une session autant de fois que vous le souhaitez dans les 5 heures suivant la création du stream initial.
+ Vous pouvez diffuser au maximum 2 heures d'audio par session pour toutes les demandes de streaming.
+ Par défaut, AWS HealthScribe fournit un chiffrement au repos pour protéger les données sensibles des clients à l'aide de clés Amazon S3 gérées. Lorsque vous démarrez un flux, vous pouvez spécifier une AWS KMS clé pour une deuxième couche de chiffrement. Vous `ResourceAccessRoleArn` devez avoir l'autorisation d'utiliser votre AWS KMS clé. Pour de plus amples informations, veuillez consulter [Chiffrement des données au repos pour AWS HealthScribe](health-scribe-encryption.md). 
+ Vous pouvez utiliser le AWS HealthScribe streaming avec le AWS SDKs, à l'exception du SDK pour Python (Boto3) et du SDK pour PHP.
+ Si une `LimitExceededException` exception se produit après la fin d'un stream, vous pouvez redémarrer la session tout en continuant à générer des analyses post-stream. Pour redémarrer le stream, utilisez l'[StartMedicalScribeStream](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartMedicalScribeStream.html)API et utilisez-la`SessionID`. Envoyez ensuite un `MedicalScribeSessionControlEvent` avec un `Type` de `END_OF_SESSION` et AWS HealthScribe lancez l'analyse.

## ResourceAccessRoleArn autorisations de rôle
<a name="health-scribe-data-access-role"></a>

Pour exécuter des analyses post-stream, vous `MedicalScribeConfigurationEvent` devez être `ResourceAccessRoleArn` en mesure d'accéder à votre compartiment de sortie Amazon S3 et, si vous le fournissez, à votre AWS KMS clé. En outre, la politique de confiance du rôle doit autoriser le `transcribe.streaming.amazonaws.com` service à assumer le rôle.

Voici un exemple de politique IAM qui accorde des autorisations de compartiment Amazon S3 et des autorisations AWS KMS clés. Pour de plus amples informations, veuillez consulter [Chiffrement des données au repos pour AWS HealthScribe](health-scribe-encryption.md).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "kms:DescribeKey",
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:GenerateDataKey*"
            ],
            "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-123456SAMPLE",
            "Effect": "Allow"
        }
    ]
}
```

------

Voici un exemple de politique de confiance.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "transcribe.streaming.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

# Démarrage de la transcription AWS HealthScribe en streaming
<a name="health-scribe-streaming-setting-up"></a>

L'exemple de code suivant montre comment configurer une transcription AWS HealthScribe en streaming à l'aide du AWS SDKs.

**Topics**
+ [SDK pour Java 2.x](#health-scribe-java-stream)
+ [Exemples de sorties de transcription en streaming](#health-scribe-streaming-output-example)

## SDK pour Java 2.x
<a name="health-scribe-java-stream"></a>

 L'exemple suivant utilise le SDK pour Java 2.x pour configurer le streaming et envoyer une demande. [StartMedicalScribeStream](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartMedicalScribeStream.html) 

```
package org.example;

import io.reactivex.rxjava3.core.BackpressureStrategy;
import io.reactivex.rxjava3.core.Flowable;
import org.reactivestreams.Publisher;
import org.reactivestreams.Subscriber;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
import software.amazon.awssdk.core.SdkBytes;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.transcribestreaming.TranscribeStreamingAsyncClient;
import software.amazon.awssdk.services.transcribestreaming.model.ClinicalNoteGenerationSettings;
import software.amazon.awssdk.services.transcribestreaming.model.LanguageCode;
import software.amazon.awssdk.services.transcribestreaming.model.MediaEncoding;

import software.amazon.awssdk.services.transcribestreaming.model.MedicalScribeInputStream;
import software.amazon.awssdk.services.transcribestreaming.model.MedicalScribePostStreamAnalyticsSettings;
import software.amazon.awssdk.services.transcribestreaming.model.MedicalScribeSessionControlEventType;
import software.amazon.awssdk.services.transcribestreaming.model.MedicalScribeTranscriptEvent;
import software.amazon.awssdk.services.transcribestreaming.model.MedicalScribeTranscriptSegment;
import software.amazon.awssdk.services.transcribestreaming.model.StartMedicalScribeStreamRequest;
import software.amazon.awssdk.services.transcribestreaming.model.StartMedicalScribeStreamResponseHandler;
import software.amazon.awssdk.services.transcribestreaming.model.medicalscribeinputstream.DefaultConfigurationEvent;

import software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.TargetDataLine;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UncheckedIOException;
import java.util.Arrays;
import java.util.concurrent.CompletableFuture;


public class HealthScribeStreamingDemoApp {
    private static final int CHUNK_SIZE_IN_BYTES = 6400;
    private static final int SAMPLE_RATE = 16000;
    private static final Region REGION = Region.US_EAST_1;
    private static final String sessionId = "1234abcd-12ab-34cd-56ef-123456SAMPLE";
    private static final String bucketName = "amzn-s3-demo-bucket";
    private static final String resourceAccessRoleArn = "arn:aws:iam::123456789012:role/resource-access-role";
    private static TranscribeStreamingAsyncClient client;

    public static void main(String args[]) {

        client = TranscribeStreamingAsyncClient.builder()
                .credentialsProvider(getCredentials())
                .httpClientBuilder(NettyNioAsyncHttpClient.builder())
                .region(REGION)
                .build();
        try {
            StartMedicalScribeStreamRequest request = StartMedicalScribeStreamRequest.builder()
                    .languageCode(LanguageCode.EN_US.toString())
                    .mediaSampleRateHertz(SAMPLE_RATE)
                    .mediaEncoding(MediaEncoding.PCM.toString())
                    .sessionId(sessionId)
                    .build();

            MedicalScribeInputStream endSessionEvent = MedicalScribeInputStream.sessionControlEventBuilder()
                    .type(MedicalScribeSessionControlEventType.END_OF_SESSION)
                    .build();

            CompletableFuture<Void> result = client.startMedicalScribeStream(
                    request,
                    new AudioStreamPublisher(getStreamFromMic(), getConfigurationEvent(),endSessionEvent),
                    getMedicalScribeResponseHandler());
            result.get();
            client.close();
        } catch (Exception e) {
            System.err.println("Error occurred: " + e.getMessage());
            e.printStackTrace();
        }
    }

    private static AudioInputStream getStreamFromMic() throws LineUnavailableException {
        // Signed PCM AudioFormat with 16kHz, 16 bit sample size, mono
        AudioFormat format = new AudioFormat(SAMPLE_RATE, 16, 1, true, false);
        DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);

        if (!AudioSystem.isLineSupported(info)) {
            System.out.println("Line not supported");
            throw new LineUnavailableException("The audio system microphone line is not supported.");
        }
        TargetDataLine line = (TargetDataLine) AudioSystem.getLine(info);
        int bufferSize = (CHUNK_SIZE_IN_BYTES / format.getFrameSize()) * format.getFrameSize();
        line.open(format);
        line.start();

        // Create a wrapper class that can be closed when Enter is pressed
        AudioInputStream audioStream = new AudioInputStream(line);

        // Start a thread to monitor for Enter key
        System.out.println("Recording... Press Enter to stop");
        Thread monitorThread = new Thread(() -> {
            try {
                System.in.read();
                line.stop();
                line.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        });
        monitorThread.setDaemon(true);  // Set as daemon thread so it doesn't prevent JVM shutdown
        monitorThread.start();

        return new AudioInputStream(
            new BufferedInputStream(new AudioInputStream(line)),
            format,
            AudioSystem.NOT_SPECIFIED
        );
    }

    private static AwsCredentialsProvider getCredentials() {
        return DefaultCredentialsProvider.create();
    }

    private static StartMedicalScribeStreamResponseHandler getMedicalScribeResponseHandler() {

        return StartMedicalScribeStreamResponseHandler.builder()
            .onResponse(r -> {
                System.out.println("Received Initial response");
            })
            .onError(Throwable::printStackTrace)
            .onComplete(() -> {
                System.out.println("=== All records streamed successfully ===");
            })
            .subscriber(event -> {
                if (event instanceof MedicalScribeTranscriptEvent) {
                    MedicalScribeTranscriptSegment segment = ((MedicalScribeTranscriptEvent) event).transcriptSegment();
                    if (segment != null && segment.content() != null && !segment.content().isEmpty()) {
                        System.out.println(segment.content());
                    }
                }
            })
            .build();
    }

    private static DefaultConfigurationEvent getConfigurationEvent() {
        MedicalScribePostStreamAnalyticsSettings postStreamSettings = MedicalScribePostStreamAnalyticsSettings
                .builder()
                .clinicalNoteGenerationSettings(
                        ClinicalNoteGenerationSettings.builder()
                                .outputBucketName(bucketName)
                                .build()
                )
                .build();
        return (DefaultConfigurationEvent) MedicalScribeInputStream.configurationEventBuilder()
                .resourceAccessRoleArn(resourceAccessRoleArn)
                .postStreamAnalyticsSettings(postStreamSettings)
                .build();
    }

    private static class AudioStreamPublisher implements Publisher<MedicalScribeInputStream> {
        private final InputStream audioInputStream;
        private final MedicalScribeInputStream configEvent;
        private final MedicalScribeInputStream endSessionEvent;

        private AudioStreamPublisher(AudioInputStream audioInputStream,
                                     MedicalScribeInputStream configEvent,
                                     MedicalScribeInputStream endSessionEvent) {
            this.audioInputStream = audioInputStream;
            this.configEvent = configEvent;
            this.endSessionEvent = endSessionEvent;
        }

        @Override
        public void subscribe(Subscriber<? super MedicalScribeInputStream> subscriber) {
            createAudioFlowable()
                    .doOnComplete(() -> {
                        try {
                            audioInputStream.close();
                        } catch (IOException e) {
                            throw new UncheckedIOException(e);
                        }
                    })
                    .subscribe(subscriber);
        }

        private Flowable<MedicalScribeInputStream> createAudioFlowable() {
            // Start with config event
            Flowable<MedicalScribeInputStream> configFlow = Flowable.just(configEvent);

            // Create audio chunk flowable
            Flowable<MedicalScribeInputStream> audioFlow = Flowable.create(emitter -> {
                byte[] buffer = new byte[CHUNK_SIZE_IN_BYTES];
                int bytesRead;

                try {
                    while (!emitter.isCancelled() && (bytesRead = audioInputStream.read(buffer)) > 0) {
                        byte[] audioData = bytesRead < buffer.length
                                ? Arrays.copyOfRange(buffer, 0, bytesRead)
                                : buffer;

                        MedicalScribeInputStream audioEvent = MedicalScribeInputStream.audioEventBuilder()
                                .audioChunk(SdkBytes.fromByteArray(audioData))
                                .build();

                        emitter.onNext(audioEvent);
                    }
                    emitter.onComplete();
                } catch (IOException e) {
                    emitter.onError(e);
                }
            }, BackpressureStrategy.BUFFER);

            // End with session end event
            Flowable<MedicalScribeInputStream> endFlow = Flowable.just(endSessionEvent);

            // Concatenate all flows
            return Flowable.concat(configFlow, audioFlow, endFlow);
        }
    }
}
```

## Exemples de sorties de transcription en streaming
<a name="health-scribe-streaming-output-example"></a>

 Une fois le streaming terminé, AWS HealthScribe analyse le contenu du flux et produit un fichier JSON de transcription et un fichier JSON de note clinique. Voici des exemples de chaque type de sortie :

### Exemple de sortie de transcription
<a name="health-scribe-streaming-transcript-output"></a>

 Voici un exemple de fichier de AWS HealthScribe transcription d'une session de streaming. 

```
{
    "Conversation": {
        "ClinicalInsights": [{
            "Attributes": [],
            "Category": "MEDICAL_CONDITION",
            "InsightId": "insightUUID1",
            "InsightType": "ClinicalEntity",
            "Spans": [{
                "BeginCharacterOffset": 12,
                "Content": "pain",
                "EndCharacterOffset": 15,
                "SegmentId": "uuid1"
            }],
            "Type": "DX_NAME"
        }, {
            "Attributes": [],
            "Category": "TEST_TREATMENT_PROCEDURE",
            "InsightId": "insightUUID2",
            "InsightType": "ClinicalEntity",
            "Spans": [{
                "BeginCharacterOffset": 4,
                "Content": "mammogram",
                "EndCharacterOffset": 12,
                "SegmentId": "uuid2"
            }],
            "Type": "TEST_NAME"
        }, {
            "Attributes": [],
            "Category": "TEST_TREATMENT_PROCEDURE",
            "InsightId": "insightUUID3",
            "InsightType": "ClinicalEntity",
            "Spans": [{
                "BeginCharacterOffset": 15,
                "Content": "pap smear",
                "EndCharacterOffset": 23,
                "SegmentId": "uuid3"
            }],
            "Type": "TEST_NAME"
        }, {
            "Attributes": [],
            "Category": "MEDICATION",
            "InsightId": "insightUUID4",
            "InsightType": "ClinicalEntity",
            "Spans": [{
                "BeginCharacterOffset": 28,
                "Content": "phentermine",
                "EndCharacterOffset": 38,
                "SegmentId": "uuid4"
            }],
            "Type": "GENERIC_NAME"
        }, {
            "Attributes": [{
                "AttributeId": "attributeUUID1",
                "Spans": [{
                    "BeginCharacterOffset": 38,
                    "Content": "high",
                    "EndCharacterOffset": 41,
                    "SegmentId": "uuid5"
                }],
                "Type": "TEST_VALUE"
            }],
            "Category": "TEST_TREATMENT_PROCEDURE",
            "InsightId": "insightUUID5",
            "InsightType": "ClinicalEntity",
            "Spans": [{
                "BeginCharacterOffset": 14,
                "Content": "weight",
                "EndCharacterOffset": 19,
                "SegmentId": "uuid6"
            }],
            "Type": "TEST_NAME"
        }, {
            "Attributes": [],
            "Category": "ANATOMY",
            "InsightId": "insightUUID6",
            "InsightType": "ClinicalEntity",
            "Spans": [{
                "BeginCharacterOffset": 60,
                "Content": "heart",
                "EndCharacterOffset": 64,
                "SegmentId": "uuid7"
            }],
            "Type": "SYSTEM_ORGAN_SITE"
        }],
        "ConversationId": "sampleConversationUUID",
        "LanguageCode": "en-US",
        "SessionId": "sampleSessionUUID",
        "TranscriptItems": [{
            "Alternatives": [{
                "Confidence": 0.7925,
                "Content": "Okay"
            }],
            "BeginAudioTime": 0.16,
            "EndAudioTime": 0.6,
            "Type": "PRONUNCIATION"
        },
        {
            "Alternatives": [{
                "Confidence": 0,
                "Content": "."
            }],
            "BeginAudioTime": 0,
            "EndAudioTime": 0,
            "Type": "PUNCTUATION"
        },
        {
            "Alternatives": [{
                "Confidence": 1,
                "Content": "Good"
            }],
            "BeginAudioTime": 0.61,
            "EndAudioTime": 0.92,
            "Type": "PRONUNCIATION"
        },
        {
            "Alternatives": [{
                "Confidence": 1,
                "Content": "afternoon"
            }],
            "BeginAudioTime": 0.92,
            "EndAudioTime": 1.54,
            "Type": "PRONUNCIATION"
        },
        {
            "Alternatives": [{
                "Confidence": 0,
                "Content": "."
            }],
            "BeginAudioTime": 0,
            "EndAudioTime": 0,
            "Type": "PUNCTUATION"
        },
        {
            "Alternatives": [{
                "Confidence": 0.9924,
                "Content": "You"
            }],
            "BeginAudioTime": 1.55,
            "EndAudioTime": 1.88,
            "Type": "PRONUNCIATION"
        },
        {
            "Alternatives": [{
                "Confidence": 1,
                "Content": "lost"
            }],
            "BeginAudioTime": 1.88,
            "EndAudioTime": 2.19,
            "Type": "PRONUNCIATION"
        },
        {
            "Alternatives": [{
                "Confidence": 1,
                "Content": "one"
            }],
            "BeginAudioTime": 2.19,
            "EndAudioTime": 2.4,
            "Type": "PRONUNCIATION"
        },
        {
            "Alternatives": [{
                "Confidence": 1,
                "Content": "lb"
            }],
            "BeginAudioTime": 2.4,
            "EndAudioTime": 2.97,
            "Type": "PRONUNCIATION"
        }
        ],
        "TranscriptSegments": [{
            "BeginAudioTime": 0.16,
            "Content": "Okay.",
            "EndAudioTime": 0.6,
            "ParticipantDetails": {
                "ParticipantRole": "CLINICIAN_0"
            },
            "SectionDetails": {
                "SectionName": "SUBJECTIVE"
            },
            "SegmentId": "uuid1"
        }, {
            "BeginAudioTime": 0.61,
            "Content": "Good afternoon.",
            "EndAudioTime": 1.54,
            "ParticipantDetails": {
                "ParticipantRole": "CLINICIAN_0"
            },
            "SectionDetails": {
                "SectionName": "OTHER"
            },
            "SegmentId": "uuid2"
        }, {
            "BeginAudioTime": 1.55,
            "Content": "You lost one lb.",
            "EndAudioTime": 2.97,
            "ParticipantDetails": {
                "ParticipantRole": "CLINICIAN_0"
            },
            "SectionDetails": {
                "SectionName": "SUBJECTIVE"
            },
            "SegmentId": "uuid3"
        }, {
            "BeginAudioTime": 2.98,
            "Content": "Yeah, I think it, uh, do you feel more energy?",
            "EndAudioTime": 6.95,
            "ParticipantDetails": {
                "ParticipantRole": "CLINICIAN_0"
            },
            "SectionDetails": {
                "SectionName": "SUBJECTIVE"
            },
            "SegmentId": "uuid4"
        }, {
            "BeginAudioTime": 6.96,
            "Content": "Yes.",
            "EndAudioTime": 7.88,
            "ParticipantDetails": {
                "ParticipantRole": "CLINICIAN_0"
            },
            "SectionDetails": {
                "SectionName": "SUBJECTIVE"
            },
            "SegmentId": "uuid5"
        }, {
            "BeginAudioTime": 7.89,
            "Content": "Uh, how about craving for the carbohydrate or sugar or fat or anything?",
            "EndAudioTime": 17.93,
            "ParticipantDetails": {
                "ParticipantRole": "CLINICIAN_0"
            },
            "SectionDetails": {
                "SectionName": "SUBJECTIVE"
            },
            "SegmentId": "uuid6"
        }]
    }
}
```

### Exemple de sortie de documentation clinique
<a name="health-scribe-streaming-insights-output"></a>

 Voici un exemple de fichier d'aperçu de la documentation AWS HealthScribe clinique issu d'une session de streaming. 

```
{
  "ClinicalDocumentation": {
    "Sections": [
      {
        "SectionName": "CHIEF_COMPLAINT",
        "Summary": [
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid1"
              },
              {
                "SegmentId": "uuid2"
              },
              {
                "SegmentId": "uuid3"
              },
              {
                "SegmentId": "uuid4"
              },
              {
                "SegmentId": "uuid5"
              },
              {
                "SegmentId": "uuid6"
              }
            ],
            "SummarizedSegment": "Weight loss."
          }
        ]
      },
      {
        "SectionName": "HISTORY_OF_PRESENT_ILLNESS",
        "Summary": [
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid7"
              },
              {
                "SegmentId": "uuid8"
              },
              {
                "SegmentId": "uuid9"
              },
              {
                "SegmentId": "uuid10"
              }
            ],
            "SummarizedSegment": "The patient is seen today for a follow-up of weight loss."
          },
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid11"
              },
              {
                "SegmentId": "uuid12"
              },
              {
                "SegmentId": "uuid13"
              }
            ],
            "SummarizedSegment": "They report feeling more energy and craving carbohydrates, sugar, and fat."
          },
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid14"
              },
              {
                "SegmentId": "uuid15"
              },
              {
                "SegmentId": "uuid16"
              }
            ],
            "SummarizedSegment": "The patient is up to date on their mammogram and pap smear."
          },
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid17"
              },
              {
                "SegmentId": "uuid18"
              },
              {
                "SegmentId": "uuid19"
              },
              {
                "SegmentId": "uuid20"
              }
            ],
            "SummarizedSegment": "The patient is taking phentermine and would like to continue."
          }
        ]
      },
      {
        "SectionName": "REVIEW_OF_SYSTEMS",
        "Summary": [
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid21"
              },
              {
                "SegmentId": "uuid22"
              }
            ],
            "SummarizedSegment": "Patient reports intermittent headaches, occasional chest pains but denies any recent fevers or chills."
          },
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid23"
              },
              {
                "SegmentId": "uuid24"
              }
            ],
            "SummarizedSegment": "No recent changes in vision, hearing, or any respiratory complaints."
          }
        ]
      },
      {
        "SectionName": "PAST_MEDICAL_HISTORY",
        "Summary": [
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid25"
              },
              {
                "SegmentId": "uuid26"
              }
            ],
            "SummarizedSegment": "Patient has a history of hypertension and was diagnosed with Type II diabetes 5 years ago."
          },
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid27"
              },
              {
                "SegmentId": "uuid28"
              }
            ],
            "SummarizedSegment": "Underwent an appendectomy in the early '90s and had a fracture in the left arm during childhood."
          }
        ]
      },
      {
        "SectionName": "ASSESSMENT",
        "Summary": [
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid29"
              },
              {
                "SegmentId": "uuid30"
              }
            ],
            "SummarizedSegment": "Weight loss"
          }
        ]
      },
      {
        "SectionName": "PLAN",
        "Summary": [
          {
            "EvidenceLinks": [
              {
                "SegmentId": "uuid31"
              },
              {
                "SegmentId": "uuid32"
              },
              {
                "SegmentId": "uuid33"
              },
              {
                "SegmentId": "uuid34"
              }
            ],
            "SummarizedSegment": "For the condition of Weight loss: The patient was given a 30-day supply of phentermine and was advised to follow up in 30 days."
          }
        ]
      }
    ],
    "SessionId": "sampleSessionUUID"
  }
}
```

# Chiffrement des données au repos pour AWS HealthScribe
<a name="health-scribe-encryption"></a>

Par défaut, AWS HealthScribe fournit un chiffrement au repos pour protéger les données sensibles des clients à l'aide de clés AWS HealthScribe managed AWS Key Management Service (AWS KMS). Le chiffrement des données au repos par défaut permet de réduire les frais opérationnels et la complexité liés à la protection des données sensibles. Il vous permet également de créer des applications sécurisées qui répondent aux exigences réglementaires et de conformité strictes en matière de chiffrement. Lorsque vous créez une tâche de AWS HealthScribe transcription ou que vous démarrez un flux, vous pouvez spécifier une clé gérée par le client. Cela ajoute une deuxième couche de chiffrement. 
+ **AWS HealthScribe AWS KMS clés gérées** : AWS HealthScribe utilise les clés AWS HealthScribe managed AWS Key Management Service (AWS KMS) par défaut pour chiffrer automatiquement les fichiers intermédiaires. Vous ne pouvez pas désactiver cette couche de chiffrement ni choisir un autre type de chiffrement. Vous ne pouvez pas afficher, gérer ou utiliser les clés, ni auditer leur utilisation. Toutefois, vous n’avez pas besoin de prendre de mesure ou de modifier les programmes pour protéger les clés qui chiffrent vos données.
+ **Clés gérées par le client** : AWS HealthScribe prend en charge l'utilisation d'une clé symétrique gérée par le client que vous créez, détenez et gérez pour ajouter une deuxième couche de chiffrement par rapport au chiffrement existant détenu par AWS. Étant donné que vous avez le contrôle total de cette couche de chiffrement, vous pouvez effectuer les tâches suivantes :
  + Établissement et gestion des stratégies de clé
  + Établir et maintenir IAM des politiques et des subventions
  + Activation et désactivation des stratégies de clé
  + Rotation des matériaux de chiffrement de clé
  + Ajout de balises 
  + Création d’alias de clé
  + Planification des clés pour la suppression

  Pour plus d'informations, consultez la section [clé gérée par le client](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#customer-cmk) dans le guide du AWS Key Management Service développeur.

**Note**  
AWS HealthScribe active automatiquement le chiffrement au repos à l'aide de clés AWS détenues par des utilisateurs afin de protéger gratuitement les données personnelles identifiables. Toutefois, AWS KMS des frais s'appliquent pour l'utilisation d'une clé gérée par le client. Pour plus d’informations sur la tarification, consultez [Tarification d’AWS Key Management Service](https://aws.amazon.com//kms/pricing/).   
 Pour plus d'informations sur AWS KMS, voir [Qu'est-ce que AWS Key Management Service](https://docs.aws.amazon.com//kms/latest/developerguide/overview.html). 

**Topics**
+ [Création d'une clé gérée par le client](health-scribe-encryption-customer.md)
+ [Spécification d'une clé gérée par le client pour AWS HealthScribe](#health-scribe-encryption-managed)
+ [AWS KMS contexte de chiffrement](#health-scribe-encryption-context)
+ [Surveillance de vos clés de chiffrement pour AWS HealthScribe](#hscribe-monitoring-keys)

# Création d'une clé gérée par le client
<a name="health-scribe-encryption-customer"></a>

 Vous pouvez créer une clé symétrique gérée par le client en utilisant le AWS Management Console, ou le AWS KMS APIs. Pour créer une clé symétrique gérée par le client, suivez les étapes de [création d'une clé symétrique gérée par le client](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html#create-symmetric-cmk) dans le guide du AWS Key Management Service développeur. 

Les stratégies de clés contrôlent l’accès à votre clé gérée par le client. Chaque clé gérée par le client doit avoir exactement une stratégie de clé, qui contient des instructions qui déterminent les personnes pouvant utiliser la clé et comment elles peuvent l’utiliser. Lorsque vous créez votre clé gérée par le client, vous pouvez spécifier une stratégie de clé. Pour plus d'informations, consultez [la section Gestion de l'accès aux clés gérées par le client](https://docs.aws.amazon.com//kms/latest/developerguide/control-access-overview.html#managing-access) dans le Guide du AWS Key Management Service développeur. 

## AWS KMS politiques clés pour AWS HealthScribe
<a name="health-scribe-key-policies"></a>

 Si vous utilisez une clé dans le même compte que le IAM rôle que vous avez indiqué dans votre demande [StartMedicalScribeJob](https://docs.aws.amazon.com//transcribe/latest/APIReference/API_StartMedicalScribeJob.html)ou `DataAccessRole` `ResourceAccessRole` dans votre [StartMedicalScribeStream](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartMedicalScribeStream.html)demande, vous n'avez pas besoin de mettre à jour la politique relative aux clés. Pour utiliser votre clé gérée par le client dans un autre compte que le vôtre DataAccessRole (pour les tâches de transcription) ou ResourceAccessRole (pour le streaming), vous devez faire confiance au rôle correspondant dans la politique clé pour les actions suivantes :
+ [https://docs.aws.amazon.com//kms/latest/APIReference/API_Encrypt.html](https://docs.aws.amazon.com//kms/latest/APIReference/API_Encrypt.html) : autorise le chiffrement à l’aide de la CMK.
+ [https://docs.aws.amazon.com//kms/latest/APIReference/API_Decrypt.html](https://docs.aws.amazon.com//kms/latest/APIReference/API_Decrypt.html) : autorise le déchiffrement à l’aide de la CMK.
+ [https://docs.aws.amazon.com//kms/latest/APIReference/API_DescribeKey.html](https://docs.aws.amazon.com//kms/latest/APIReference/API_DescribeKey.html)— Fournit les informations clés gérées par le client pour AWS HealthScribe permettre de valider la clé

Voici un exemple de politique clé que vous pouvez utiliser pour accorder à vos comptes multiples ResourceAccessRole l'autorisation d'utiliser votre clé gérée par le client pour le AWS HealthScribe streaming. Pour utiliser cette politique pour les tâches de transcription, mettez `Principal` à jour le pour utiliser l' DataAccessRole ARN et supprimez ou modifiez le contexte de chiffrement.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {  
         "Sid": "AllowAccessForKeyAdministrators", 
         "Effect": "Allow", 
         "Principal": {
            "AWS": "arn:aws:iam::111122223333:root" 
         }, 
         "Action": [
           "kms:*" 
         ], 
         "Resource": "*"
      },
      {
         "Sid": "AllowAccessToResourceAccessRoleForMedicalScribe",
         "Effect": "Allow",
         "Principal": {
            "AWS": "arn:aws:iam::111122223333:role/ResourceAccessRole"
         },
         "Action": [
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:GenerateDataKey*"
         ],
         "Resource": "*",
         "Condition": {
            "StringEquals": {
                "kms:EncryptionContext:aws:us-east-1:transcribe:medical-scribe:session-id": "1234abcd-12ab-34cd-56ef-123456SAMPLE"
            }
         }
      },
      {
         "Sid": "AllowAccessToResourceAccessRoleForDescribeKey",
         "Effect": "Allow",
         "Principal": {
             "AWS": "arn:aws:iam::111122223333:role/ResourceAccessRole"
         },
         "Action": "kms:DescribeKey",
         "Resource": "*"
     }
   ]
}
```

------

## Autorisations de politique IAM pour les rôles d'accès
<a name="health-scribe-key-data-access-role"></a>

 La politique IAM associée à votre compte DataAccessRole ou ResourceAccessRole doit accorder les autorisations nécessaires pour effectuer les AWS KMS actions nécessaires, que la clé et le rôle gérés par le client se trouvent dans le même compte ou dans des comptes différents. En outre, la politique de confiance du rôle doit accorder AWS HealthScribe l'autorisation d'assumer le rôle.

L'exemple de politique IAM suivant montre comment accorder des ResourceAccessRole autorisations pour le AWS HealthScribe streaming. Pour utiliser cette politique pour les tâches de transcription, remplacez `transcribe.streaming.amazonaws.com` par le contexte `transcribe.amazonaws.com` de chiffrement, supprimez-le ou modifiez-le.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:GenerateDataKey*"
            ],
            "Resource": "arn:aws:kms:us-west-2:111122223333:key/KMS-Example-KeyId",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "transcribe.streaming.amazonaws.com",
                    "kms:EncryptionContext:aws:us-east-1:transcribe:medical-scribe:session-id": "1234abcd-12ab-34cd-56ef-123456SAMPLE"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:DescribeKey"
            ],
            "Resource": "arn:aws:kms:us-west-2:111122223333:key/KMS-Example-KeyId",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "transcribe.streaming.amazonaws.com"
                }
            }
        }
    ]
}
```

------

Voici un exemple de politique de confiance pour ResourceAccessRole. Pour DataAccessRole, remplacez `transcribe.streaming.amazonaws.com` par`transcribe.amazonaws.com`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "transcribe.streaming.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:transcribe:us-west-2:111122223333:*"
                }
            }
        }
    ]
}
```

------

 Pour plus d'informations sur la [spécification des autorisations dans une politique ou la](https://docs.aws.amazon.com//kms/latest/developerguide/control-access-overview.html#overview-policy-elements) [résolution des problèmes d'accès par clé](https://docs.aws.amazon.com//kms/latest/developerguide/policy-evaluation.html#example-no-iam), consultez le guide du AWS Key Management Service développeur. 

## Spécification d'une clé gérée par le client pour AWS HealthScribe
<a name="health-scribe-encryption-managed"></a>

 Vous pouvez spécifier une clé gérée par le client comme deuxième couche de chiffrement pour les tâches de transcription ou le streaming. 
+ Pour les tâches de transcription, vous devez spécifier votre clé dans l'[OutputEncryptionKMSKeyID](https://docs.aws.amazon.com//transcribe/latest/APIReference/API_StartMedicalScribeJob.html#transcribe-StartMedicalScribeJob-request-OutputEncryptionKMSKeyId) de votre opération d'[StartMedicalScribeJob](https://docs.aws.amazon.com//transcribe/latest/APIReference/API_StartMedicalScribeJob.html)API.
+ Pour le streaming, vous devez spécifier la clé [MedicalScribeEncryptionSettings](https://docs.aws.amazon.com//transcribe/latest/APIReference/API_streaming_MedicalScribeEncryptionSettings.html)dans le [MedicalScribeConfigurationEvent](https://docs.aws.amazon.com//transcribe/latest/APIReference/API_streaming_MedicalScribeConfigurationEvent.html). 

## AWS KMS contexte de chiffrement
<a name="health-scribe-encryption-context"></a>

 AWS KMS le contexte de chiffrement est une carte de paires clé:valeur non secrètes en texte brut. Cette carte représente des données authentifiées supplémentaires, appelées paires de contextes de chiffrement, qui fournissent une couche de sécurité supplémentaire à vos données. AWS HealthScribe nécessite une clé de chiffrement symétrique pour chiffrer la AWS HealthScribe sortie dans un compartiment spécifié par le client Amazon S3 . Pour en savoir plus, consultez la section [Clés asymétriques dans AWS KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html). 

 Lorsque vous créez vos paires de contextes de chiffrement, *n’incluez pas* d’informations sensibles. Le contexte de chiffrement n'est pas secret : il est visible en texte brut dans vos CloudTrail journaux (vous pouvez donc l'utiliser pour identifier et classer vos opérations cryptographiques). La paire de contextes de chiffrement peut inclure des caractères spéciaux, notamment des traits de soulignement (`_`), des tirets (`-`), des barres obliques (`/`, `\`) et deux points (`:`). 

**Astuce**  
 Il peut être utile de relier les valeurs de votre paire de contextes de chiffrement aux données chiffrées. Bien que cela ne soit pas obligatoire, nous vous recommandons d’utiliser des métadonnées non sensibles relatives à votre contenu chiffré, telles que les noms de fichiers, les valeurs d’en-tête ou les champs de base de données non chiffrés.   
 Pour utiliser le chiffrement de sortie avec l'API, définissez le paramètre [KMSEncryptionContext](https://docs.aws.amazon.com//transcribe/latest/APIReference/API_StartMedicalScribeJob.html#transcribe-StartMedicalScribeJob-request-KMSEncryptionContext) dans l'[StartMedicalScribeJob](https://docs.aws.amazon.com//transcribe/latest/APIReference/API_StartMedicalScribeJob.html)opération. Afin de fournir un contexte de chiffrement pour l'opération de chiffrement en sortie, le paramètre [OutputEncryptionKMSKeyId](https://docs.aws.amazon.com//transcribe/latest/APIReference/API_StartMedicalScribeJob.html#transcribe-StartMedicalScribeJob-request-OutputEncryptionKMSKeyId) doit faire référence à un identifiant de AWS KMS clé symétrique.   
Pour le streaming, vous spécifiez les paires clé-valeur pour le `KmsEncryptionContext` in [MedicalScribeEncryptionSettings](https://docs.aws.amazon.com//transcribe/latest/APIReference/API_streaming_MedicalScribeEncryptionSettings.html)dans votre [MedicalScribeConfigurationEvent](https://docs.aws.amazon.com//transcribe/latest/APIReference/API_streaming_MedicalScribeConfigurationEvent.html).   
 Vous pouvez utiliser des [clés de AWS KMS condition](https://docs.aws.amazon.com//kms/latest/developerguide/policy-conditions.html#conditions-kms) IAM associées à des politiques pour contrôler l'accès à une AWS KMS clé de chiffrement symétrique en fonction du contexte de chiffrement utilisé dans la demande d'opération [cryptographique](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#cryptographic-operations). Pour un exemple de politique de contexte de chiffrement, consultez [Politique de contexte de chiffrement AWS KMS](https://docs.aws.amazon.com//transcribe/latest/dg/security_iam_id-based-policy-examples.html#kms-context-policy).   
 L’utilisation du contexte de chiffrement est facultative mais recommandée. Pour plus d’informations, consultez la section [Contexte de chiffrement](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#encrypt_context). 

### AWS HealthScribe contexte de chiffrement
<a name="hscribe-context-details"></a>

AWS HealthScribe utilise le même contexte de chiffrement dans toutes les opérations AWS Key Management Service cryptographiques. Le contexte de chiffrement est une carte de chaîne à chaîne qui peut être personnalisée comme vous le souhaitez.

```
"encryptionContext": {
   "ECKey": "ECValue"
   ...
}
```

Pour les AWS HealthScribe flux, voici le contexte de chiffrement généré par le service par défaut. Il applique ce contexte au-dessus de tout contexte de chiffrement que vous fournissez.

```
"encryptionContext": {
  "aws:<region>:transcribe:medical-scribe:session-id": "1234abcd-12ab-34cd-56ef-123456SAMPLE"
}
```

Pour les tâches de AWS HealthScribe transcription, voici le contexte de chiffrement généré par le service par défaut. Il applique ce contexte au-dessus de tout contexte de chiffrement que vous fournissez.

```
"encryptionContext": {
  "aws:<region>:transcribe:medical-scribe:job-name": "<job-name>",
  "aws:<region>:transcribe:medical-scribe:start-time-epoch-ms": "<job-start-time>"
}
```

Si vous ne fournissez aucun contexte de chiffrement, seul le contexte de chiffrement généré par le service sera utilisé pour toutes les opérations AWS KMS cryptographiques.

**Surveillance AWS HealthScribe avec contexte de chiffrement**

Lorsque vous utilisez une clé symétrique gérée par le client pour chiffrer vos données au repos AWS HealthScribe, vous pouvez également utiliser le contexte de chiffrement dans les enregistrements d'audit et les journaux pour identifier la manière dont la clé gérée par le client est utilisée. Le contexte de chiffrement apparaît également dans les journaux générés par AWS CloudTrail ou dans CloudWatch les journaux.

**Utilisation du contexte de chiffrement pour contrôler l'accès à votre clé gérée par le client**

 Vous pouvez utiliser le contexte de chiffrement dans les stratégies de clé et les politiques IAM en tant que conditions pour contrôler l’accès à votre clé symétrique gérée par le client. 

 Vous trouverez ci-dessous des exemples d’instructions de stratégie de clé permettant d’accorder l’accès à une clé gérée par le client dans un contexte de chiffrement spécifique. La condition énoncée dans cette déclaration de politique exige que les utilisations des clés KMS soient soumises à une contrainte de contexte de chiffrement qui spécifie le contexte de chiffrement. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAccessToResourceAccessRoleForMedicalScribe",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/ResourceAccessRole"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:GenerateDataKey*"
            ],
            "Resource": "arn:aws:kms:us-west-2:111122223333:key/KMS-Example-KeyId",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:aws:us-east-1:transcribe:medical-scribe:session-id": "1234abcd-12ab-34cd-56ef-123456SAMPLE",
                    "kms:EncryptionContext:ECKey": "ECValue"
                }
            }
        },
        {
            "Sid": "AllowAccessToResourceAccessRoleForDescribeKey",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/ResourceAccessRole"
            },
            "Action": "kms:DescribeKey",
            "Resource": "arn:aws:kms:us-west-2:111122223333:key/KMS-Example-KeyId"
        }
    ]
}
```

------

## Surveillance de vos clés de chiffrement pour AWS HealthScribe
<a name="hscribe-monitoring-keys"></a>

Lorsque vous utilisez une clé gérée par le AWS Key Management Service client avec AWS HealthScribe, vous pouvez utiliser AWS CloudTrail CloudWatch ou enregistrer pour suivre les demandes AWS HealthScribe envoyées à AWS KMS.

Les exemples suivants sont des événements de CloudTrail chiffrement et de déchiffrement que vous pouvez utiliser pour surveiller l' AWS HealthScribe utilisation de votre clé gérée par le client.

**Encrypt**

```
{
   "eventVersion":"1.09",
   "userIdentity":{
      "type":"AssumedRole",
      "principalId":"AROAIGDTESTANDEXAMPLE:Sampleuser01",
      "arn":"arn:aws:sts::123456789012:assumed-role/Admin/Sampleuser01",
      "accountId":"123456789012",
      "accessKeyId":"AKIAIOSFODNN7EXAMPLE3",
      "sessionContext":{
         "sessionIssuer":{
            "type":"Role",
            "principalId":"AROAIGDTESTANDEXAMPLE:Sampleuser01",
            "arn":"arn:aws:sts::123456789012:assumed-role/Admin/Sampleuser01",
            "accountId":"123456789012",
            "userName":"Admin"
         },
         "attributes":{
            "creationDate":"2024-08-16T01:10:05Z",
            "mfaAuthenticated":"false"
         }
      },
      "invokedBy":"transcribe.streaming.amazonaws.com"
   },
   "eventTime":"2024-08-16T01:10:05Z",
   "eventSource":"kms.amazonaws.com",
   "eventName":"Encrypt",
   "awsRegion":"us-east-1",
   "sourceIPAddress":"transcribe.streaming.amazonaws.com",
   "userAgent":"transcribe.streaming.amazonaws.com",
   "requestParameters":{
      "encryptionContext":{
         "aws:us-east-1:transcribe:medical-scribe:session-id":"1234abcd-12ab-34cd-56ef-123456SAMPLE"
      },
      "encryptionAlgorithm":"SYMMETRIC_DEFAULT",
      "keyId":"1234abcd-12ab-34cd-56ef-1234567890ab"
   },
   "responseElements":null,
   "requestID":"cbe0ac33-8cca-49e5-9bb5-dc2b8dfcb389",
   "eventID":"1b9fedde-aa96-48cc-9dd9-a2cce2964b3c",
   "readOnly":true,
   "resources":[
      {
         "accountId":"123456789012",
         "type":"AWS::KMS::Key",
         "ARN":"arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
      }
   ],
   "eventType":"AwsApiCall",
   "managementEvent":true,
   "recipientAccountId":"123456789012",
   "eventCategory":"Management"
}
```

**Decrypt**

```
{
   "eventVersion":"1.09",
   "userIdentity":{
      "type":"AssumedRole",
      "principalId":"AROAIGDTESTANDEXAMPLE:Sampleuser01",
      "arn":"arn:aws:sts::123456789012:assumed-role/Admin/Sampleuser01",
      "accountId":"123456789012",
      "accessKeyId":"AKIAIOSFODNN7EXAMPLE3",
      "sessionContext":{
         "sessionIssuer":{
            "type":"Role",
            "principalId":"AROAIGDTESTANDEXAMPLE:Sampleuser01",
            "arn":"arn:aws:sts::123456789012:assumed-role/Admin/Sampleuser01",
            "accountId":"123456789012",
            "userName":"Admin"
         },
         "attributes":{
            "creationDate":"2024-08-16T20:47:04Z",
            "mfaAuthenticated":"false"
         }
      },
      "invokedBy":"transcribe.streaming.amazonaws.com"
   },
   "eventTime":"2024-08-16T20:47:04Z",
   "eventSource":"kms.amazonaws.com",
   "eventName":"Decrypt",
   "awsRegion":"us-east-1",
   "sourceIPAddress":"transcribe.streaming.amazonaws.com",
   "userAgent":"transcribe.streaming.amazonaws.com",
   "requestParameters":{
      "keyId":"mrk-de27f019178f4fbf86512ab03ba860be",
      "encryptionAlgorithm":"SYMMETRIC_DEFAULT",
      "encryptionContext":{
         "aws:us-east-1:transcribe:medical-scribe:session-id":"1234abcd-12ab-34cd-56ef-123456SAMPLE"
      }
   },
   "responseElements":null,
   "requestID":"8b7fb865-48be-4e03-ac3d-e7bee3ba30a1",
   "eventID":"68b7a263-d410-4701-9e2b-20c196628966",
   "readOnly":true,
   "resources":[
      {
         "accountId":"123456789012",
         "type":"AWS::KMS::Key",
         "ARN":"arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
      }
   ],
   "eventType":"AwsApiCall",
   "managementEvent":true,
   "recipientAccountId":"123456789012",
   "eventCategory":"Management"
}
```