PackagesCanonicalsLogsProblems
    Packages
    io.health-samurai.sdc.r4b@0.2608.0
    http://health-samurai.io/fhir/sdc/StructureDefinition/SDCVoiceAgent
description: A voice agent that conducts a spoken interview over the phone. Binds an instruction prompt to the questionnaires it can administer, so a Task focused on one of those questionnaires can find its agent without referencing voice at all. Speech and language models are optional overrides on top of the deployment defaults.
package_name: io.health-samurai.sdc.r4b
derivation: specialization
name: SDCVoiceAgent
type: SDCVoiceAgent
elements:
  description: {type: markdown, short: What this agent is for., index: 4}
  questionnaire: {type: canonical, short: Questionnaires this agent administers. Array order is interview order; a Task focused on any of these can be routed here. At least one is required — an agent without a questionnaire has nothing to ask., array: true, min: 1, index: 6}
  name: {type: string, short: Machine-readable name., index: 1}
  stt:
    type: Reference
    short: Speech-to-text model, as a Device. Falls back to the deployment default.
    refers: ['http://hl7.org/fhir/StructureDefinition/Device']
    index: 11
  title: {type: string, short: 'Human-readable name, shown when picking an agent.', index: 2}
  maxAttempts: {type: integer, short: How many times to redial when nobody picks up. Defaults to a single attempt., index: 15}
  extractorLlm:
    type: Reference
    short: Model that turns the finished transcript into answers, as a Device. A separate call from the conversation, so it can be a cheaper or stricter model; falls back to llm.
    refers: ['http://hl7.org/fhir/StructureDefinition/Device']
    index: 14
  prompt: {type: canonical, short: 'SDCVoicePrompt lineage url. Version-less: the active revision is resolved when the call is placed.', index: 5}
  llm:
    type: Reference
    short: Language model, as a Device. Falls back to the deployment default.
    refers: ['http://hl7.org/fhir/StructureDefinition/Device']
    index: 13
  status:
    type: code
    short: draft | active | retired. Only active agents are selected for calls.
    constraint:
      voice-agent-status-1: {human: 'Status must be one of: draft, active, retired', severity: error, expression: $this in ('draft' | 'active' | 'retired')}
    index: 3
  maxDurationMinutes: {type: integer, short: Hard cap on a single conversation; the call is hung up when it is reached., index: 17}
  url: {type: uri, short: Canonical identity of this agent., index: 0}
  retryDelayMinutes: {type: integer, short: 'Gap between redial attempts, in minutes.', index: 16}
  context:
    type: BackboneElement
    short: Resources this agent needs to hold the conversation. Declared here, supplied to $call, and validated against this list before the call is placed — the same contract as sdc-questionnaire-launchContext.
    array: true
    index: 7
    elements:
      name: {type: code, short: 'What this slot is called when passed to $call and when rendered into the prompt, e.g. patient, appointment, referrer. Distinguishes two slots of the same resource type.', index: 8}
      type: {type: code, short: 'Resource type accepted in this slot, e.g. Patient, Appointment, Coverage. Any FHIR resource type is allowed.', index: 9}
      label: {type: string, short: Human-readable name for the picker in the UI., index: 10}
    required: [name, type]
  tts:
    type: Reference
    short: Text-to-speech voice, as a Device. Falls back to the deployment default.
    refers: ['http://hl7.org/fhir/StructureDefinition/Device']
    index: 12
package_version: 0.2608.0
class: resource
kind: resource
url: http://health-samurai.io/fhir/sdc/StructureDefinition/SDCVoiceAgent
base: http://hl7.org/fhir/StructureDefinition/DomainResource
version: 0.2608.0
required: [status, prompt, questionnaire]