Partager via


Référence API de l’application web Dragon Copilot pour mobile

L'application web Dragon Copilot pour mobile offre un ensemble d’API publiques que les clients peuvent utiliser pour s'intégrer au Kit de développement logiciel (SDK). Ce document fournit une vue d’ensemble complète des classes et méthodes publiques disponibles dans le Kit de développement logiciel (SDK), ainsi que des exemples de code pour vous aider à démarrer.

Classes et méthodes publiques

Les API publiques suivantes sont disponibles :

Classe TurnkeyFramework

La classe TurnkeyFramework est le point d’entrée principal pour l’intégration à l'application web Dragon Copilot pour mobile. Il fournit des méthodes pour initialiser le Kit de développement logiciel (SDK) et récupérer les vues et les contrôleurs de vue à intégrer dans votre application.

Séquence de méthodes pour l’initialisation et la fermeture du Kit de développement logiciel (SDK)

  • initialize : pour initialiser le kit de développement logiciel (SDK), appelez initialize et transmettez un fournisseur de données conforme au protocole TConfigurationProvider et des délégués pour recevoir des rappels. Appelez initialize une seule fois par utilisateur.

  • openSession ou openSessionController : pour afficher l’interface utilisateur, fournissez les détails des patients et des visites conformes au protocole TSessionDataProvider . Appelez cette méthode pour ouvrir une autre session de patient pour le même utilisateur.

  • closeSession : utilisez cette méthode pour fermer correctement une session de patient active. Cela garantit que toutes les données temporaires liées à la session sont nettoyées, arrête les enregistrements actifs et prépare l’infrastructure pour une nouvelle session si nécessaire.

  • dispose : utilisez cette méthode pour libérer complètement toutes les ressources associées au TurnkeyFramework. Cette opération doit être effectuée lorsque l’infrastructure n’est plus nécessaire pour libérer de la mémoire et éviter les fuites potentielles.

Protocole TConfigurationProvider

Le protocole TConfigurationProvider est un composant essentiel de l'application web Dragon Copilot pour mobile, chargé de fournir la configuration nécessaire, le fournisseur de jetons d’accès et les informations utilisateur requises pour initialiser et utiliser le kit de développement logiciel (SDK). Ce protocole garantit que le Kit de développement logiciel (SDK) a accès à toutes les données et services essentiels dont il a besoin pour fonctionner correctement.

@objc public protocol TConfigurationProvider {
    func getTConfiguration() -> TConfiguration
    func getTAccessTokenProvider() -> TAccessTokenProvider
    func getTUser() -> TUser
}

Protocole TDelegate

Conseil

Tous les protocoles délégués de ce Kit de développement logiciel (SDK) (TDelegate, TRecordingDelegate, TDictationDelegate, TSettingsDelegate) sont conçus avec des méthodes facultatives. Vous n’avez pas besoin d’implémenter chaque délégué ou chaque méthode, mais uniquement celles qui sont pertinentes pour vos besoins d’intégration. Si aucun délégué ou méthode n’est implémenté, le Kit de développement logiciel (SDK) continue de fonctionner sans nécessiter d’action de la part de votre application.

Le protocole TDelegate définit les événements courants.

@objc public protocol TDelegate: AnyObject {
     @objc optional func isTurnKeyWebViewLoaded(_ isLoadingDone: Bool)
}
  • isTurnKeyWebViewLoaded – Appelé lorsque le chargement de Dragon Copilot WebView est terminé.

    • isLoadingDone – indique si le chargement du WebView est terminé.

Protocole TSettingsDelegate

Le protocole TSettingsDelegate définit les événements liés aux paramètres.

@objc public protocol TSettingsDelegate: AnyObject {
    @objc optional func isIdleTimerDisabled(isOn screenOn: Bool)
    @objc optional func appearanceThemeChanged(to uiTheme: String)
    @objc optional func changeApplicationLanguage(to languageCode: String)
}
  • isIdleTimerDisabled – Appelé lorsque le paramètre Conserver l’écran activé lors de l’enregistrement change. Ce paramètre est disponible pour les utilisateurs finaux dans les paramètres généraux de l'application Dragon Copilot mobile.

    • screenOn – Indique si l’écran reste allumé pendant l’enregistrement ambiant.
  • appearanceThemeChanged – Appelé lorsque le thème d’apparence Dragon Copilot change.

    • uiTheme – Nouvel identificateur de thème, par exemple « clair » ou « sombre ».
  • changeApplicationLanguage – Appelé lorsque la langue de l’application doit être modifiée.

    • languageCode – Nouveau code de langue, par exemple « en-US », « es-ES ».

Protocole TRecordingDelegate

Le protocole TRecordingDelegate définit les événements liés à l’enregistrement ambiant.

@objc public protocol TRecordingDelegate: AnyObject {
    @objc optional func recordingStarted()
    @objc optional func recordingFailed()
    @objc optional func recordingStopped()
    @objc optional func recordingInterrupted(reason: RecordingInterruptionReason)
    @objc optional func recordingNotification(notification: RecordingNotification)
}
  • recordingStarted – Appelé lorsque l’enregistrement ambiant démarre correctement.

  • recordingFailed – Appelé en cas d’échec du démarrage de l’enregistrement ambiant.

  • recordingStopped – Appelé lorsque l’enregistrement ambiant s’arrête.

  • recordingInterrupted – Appelé lorsque l’enregistrement ambiant est interrompu et arrêté automatiquement.

    • reason –Raison pour laquelle l’enregistrement ambiant a été automatiquement arrêté.

      @objc public enum RecordingInterruptionReason: Int {
          /// A system error occurred
          case systemError
          /// An audio interruption occurred (for example, a phone call)
          case audioInterruption
          /// The maximum duration was reached
          case reachedMaxDuration
          /// Incompatible input device
          case incompatibleInputDevice
          /// The audio route changed
          case audioRouteChanged
      }
      
  • recordingNotification – Appelé lorsqu’une notification ou un avertissement se produit pendant l’enregistrement ambiant.

    • notification – Type de notification ou d’avertissement

      @objc public enum RecordingNotification: Int {
          /// The ambient recording limit was reached
          case reachedWarnDuration
          /// Audio loss occurred
          case audioLoss
          /// An external microphone was detected
          case externalMicDetected
      }
      

Protocole TDictationDelegate

Le protocole TDictationDelegate définit les événements liés à la dictée.

@objc public protocol TDictationDelegate: AnyObject {
     @objc optional func dictationStarted()
     @objc optional func dictationStopped()
}
  • dictationStarted –Appelé au démarrage de la dictée.

  • dictationStopped – Appelé lorsque la dictée s’arrête.

Protocole TSessionDataProvider

Le protocoleTSessionDataProvider est chargé de fournir des informations sur les patients et les visites, qui sont nécessaires pour ouvrir le contexte de rencontre.

public protocol TSessionDataProvider {
    func getTPatient() -> TPatient
    func getTVisit() -> TVisit
}

Exemple :

let turnkeyInstance = TurnkeyFramework(dataProvider: configurationProvider, delegate: self, recordingDelegate: self, dictationDelegate: self, settingsDelegate: self)
let view = turnkeyInstance.openSession(sessionDataProvider: sessionDataProvider)

Données d’entrée

Les protocoles TConfigurationProvider et TSessionDataProvider utilisent les classes suivantes pour fournir les informations nécessaires à l’initialisation du Kit de développement logiciel (SDK) et à l’ouverture d’une session :

Classe TConfiguration

La classe TConfiguration contient les données de configuration requises pour initialiser le Kit de développement logiciel (SDK), notamment les identificateurs, les métadonnées, les détails du serveur et les mécanismes d’authentification requis.

@objc public class TConfiguration {
    var partnerId: String?
    var customerId: String?
    var ehrInstanceId: String?
    var productId: String?
    var traceId: String?
    var appMetadata: TAppMetadata?
    var serverDetails: TserverDetails?
}
  • partnerId – Facultatif : identificateur unique du partenaire associé à la session ambiante.

  • customerId – Facultatif : identificateur unique du client associé à la session ambiante.

  • ehrInstanceId – Facultatif : identificateur unique de l'instance DMI associée à la session ambiante.

  • productId – Facultatif : identificateur unique du produit associé à la session ambiante.

  • traceId – Facultatif : identificateur unique utilisé pour identifier et suivre de manière unique une requête ou une session spécifique sur différents systèmes et services. Il est également utilisé pour la journalisation. Lorsqu’il n’est pas fourni, le Kit de développement logiciel (SDK) crée un ID de trace.

  • appMetadata – Facultatif : informations sur l’application qui intègre le Kit de développement logiciel (SDK), à l’aide de la classe TAppMetadata.

  • serverDetails – Facultatif : configuration de l’environnement serveur, à l’aide de la classe TServerDetails .

Classe TAppMetadata

La classe TAppMetadata fournit des informations sur l’application qui intègre le Kit de développement logiciel (SDK). Il est utilisé pour la télémétrie, la journalisation et la résolution des problèmes. Ces métadonnées sont facultatives, mais recommandées pour faciliter un dépannage efficace.

public class TAppMetadata {
    var appId: String?
    var appVersion: String?
    var deviceId: String?
}
  • appId – Facultatif : identificateur de bundle pour l’application qui intègre le Kit de développement logiciel (SDK).

  • appVersion – Facultatif : la version de l’application qui intègre le Kit de développement logiciel (SDK).

  • deviceId – Facultatif : identificateur unique de l’appareil. Généralement, identifierForVendor est utilisé.

Exemple :

appId=IOSAppId
appVersion=Build_2.3.1
deviceId=12345

Classe TServerDetails

La classe TServerDetails contient la configuration de l’environnement serveur.

public class TServerDetails {
    var environment: String?
    var geography: String?
    var cloudInstance: String?
}
  • environment – Les environnements auxquels le système hôte a l’intention d’accéder. Il peut s’agir de l’un des éléments suivants : « développement », « QA », « gestion intermédiaire », « production ».

  • geography – Zone géographique dans laquelle l’application hôte s’exécute. Cette valeur doit être définie sur « US ».

  • cloudInstance – Facultatif : l’instance cloud où l’application hôte est déployée. Cette valeur doit être définie sur « public_global ».

Exemple :

environment=production
geography=US
cloudInstance=public_global

Classe TAccessTokenProvider

La classe TAccessTokenProvider fournit un jeton d’accès valide pour Dragon Copilot. Il est appelé par le Kit de développement logiciel (SDK) pendant l’initialisation et chaque fois que le jeton expire.

@objc public protocol TAccessTokenProvider {
    @objc func accessToken(scopes: [String]?, forceRefresh: Bool, onSuccess: @escaping (TAuthResponse) -> Void, onFailure: @escaping (Error) -> Void)
}
  • scopes – Chaîne d’étendue facultative pour la génération de jetons (la valeur par défaut est nulle).

  • forceRefresh – Booléen indiquant s’il faut forcer l’actualisation du jeton (la valeur par défaut est false).

  • onSuccess – Le rappel qui retourne le jeton d’accès dans l’objet TTokenResponse s’il peut être récupéré.

  • onFailure – Le rappel qui retourne une erreur indiquant que la récupération du jeton d’accès a échoué.

Classe TAuthResponse

La classe TAuthResponse est un conteneur qui contient différents types de réponses d’authentification pour l’application web Dragon Copilot, pour les clients mobiles. Il est utilisé pour encapsuler les réponses de jeton, y compris les réponses de jeton standard, les réponses de jeton Entra et les réponses de jeton SMART sur FHIR (SoF). En fonction de la réponse d’authentification, utilisez un seul des constructeurs (tokenResponse, entraTokenResponse ou sofTokenResponse) pour initialiser l’objet TAuthResponse.

@objc public class TAuthResponse{
    @objc public let tokenResponse: TTokenResponse?
    @objc public let entraTokenResponse: TEntraTokenResponse?
    @objc public let sofTokenResponse: TSoFTokenResponse?

    @objc public convenience init(tokenResponse: TTokenResponse)
    @objc public convenience init(entraTokenResponse: TEntraTokenResponse)
    @objc public convenience init(sofTokenResponse: TSoFTokenResponse)
}
  • tokenResponse – Type : TTokenResponse? – Représente une réponse de jeton standard.

  • entraTokenResponse – Type : TEntraTokenResponse? – Représente une réponse de jeton spécifique à l’authentification Entra, y compris le jeton et sa date d’expiration.

  • sofTokenResponse – Type : TSoFTokenResponse? – Représente une réponse de jeton pour l’authentification SMART sur FHIR (SoF), y compris le jeton, l’URL de l’émetteur et le code de lancement.

Classe TTokenResponse

La classe TTokenResponse contient les détails du jeton d’authentification. Lorsqu’un jeton émis par un partenaire est utilisé pour s’authentifier auprès de Dragon Copilot, le champ token doit être inclus.

@objc public class TTokenResponse {
    @objc public let token: String?
}
  • token – Un jeton JWT émis par un partenaire, qui doit répondre aux exigences d’authentification.

Classe TEntraTokenResponse

La classe TEntraTokenResponse contient les détails du jeton pour l’authentification Entra. Cette classe est utilisée lorsqu’un jeton émis par Entra est requis pour l’authentification avec Dragon Copilot.

@objc public class TEntraTokenResponse: TTokenResponse {
    @objc public let expiresAt: Date
    @objc public init(token: String, expiresAt: Date)
}
  • token – Représente le jeton JWT émis par Entra, qui doit répondre aux exigences d’authentification.

  • expiresAt – Représente la date et l’heure d’expiration du jeton émis par Entra.

Classe TSoFTokenResponse

La classe TSoFTokenResponse contient les détails du jeton pour l’authentification SMART sur FHIR (SoF). Cette classe est utilisée lorsqu’un jeton SMART sur FHIR est requis pour l’authentification avec Dragon Copilot.

@objc public class TSoFTokenResponse{
    @objc public let token: String?
    @objc public let issuer: String
    @objc public let launch: String

    public init(token: String?, issuer: String, launch: String)
}
  • token – Ce champ est facultatif et peut être nul dans certains cas.

  • issuer – Représente l’URL de l’émetteur pour l’authentification SMART sur FHIR. Cette URL identifie le serveur d’autorisation qui a émis le jeton.

  • launch – Représente le code de lancement pour l’authentification SMART sur FHIR. Ce code est utilisé pour lancer le workflow SMART sur FHIR.

Classe TUser

La classe TUser contient les détails de l’utilisateur.

@objc public class TUser {
    var id: String?
    var fhirId: String?
    var ehrUserId: String?
    var firstName: String?
    var middleName: String?
    var lastName: String?
}
  • id – Facultatif : ID utilisateur.

  • fhirId – Facultatif : identificateur FHIR de l’utilisateur ou du praticien connecté.

  • ehrUserId – Facultatif : identificateur interne de l’utilisateur.

  • firstName – Facultatif : prénom de l’utilisateur.

  • middleName – Facultatif : deuxième prénom de l’utilisateur.

  • lastName – Facultatif : nom de famille de l’utilisateur.

Classe TVisit

La classe TVisit représente les détails de la visite du patient.

@objc public class TVisit {
    var id: String?
    var fhirId: String?
    var correlationId: String
    var metadata: String?
    var reasonForVisit: String?
}
  • id – Facultatif : identificateur unique de la visite.

  • fhirId – Facultatif : identificateur FHIR pour la visite.

  • correlationId – Obligatoire : identificateur de corrélation défini par le partenaire qui a été passé au Kit de développement logiciel (SDK). Ceci est utilisé pour lier des visites ou des événements connexes. Cet identificateur doit être un GUID. Évitez d’envoyer un identificateur qui pourrait être lié à des PHI.

  • metadata – Facultatif : métadonnées liées à la visite, généralement représentées sous la forme d’une valeur JSON sous forme de chaîne.

  • reasonForVisit – Facultatif : motif de la visite.

Classe TPatient

La classe TPatient représente les détails du patient. Tous les champs de cette classe sont facultatifs, mais il est recommandé de les fournir pour améliorer les fonctionnalités.

@objc public class TPatient {
    var id: String?
    var fhirId: String?
    var firstName: String?
    var middleName: String?
    var lastName: String?
    var gender: String?
    var medicalRecordNumber: String?
    var birthDate: Date?
}
  • id – Facultatif : ID du patient.

  • fhirId – Facultatif : ID FHIR du patient.

  • firstName – Facultatif : prénom du patient.

  • middleName – Facultatif : deuxième prénom du patient.

  • lastName – Facultatif : nom du patient.

  • gender – Facultatif : sexe du patient. Il peut s’agir de : unspecified, male, female, other, ou unknown.

  • medicalRecordNumber – Facultatif : numéro de dossier médical du patient.

  • birthDate – Facultatif : date de naissance du patient.