@medc-com-br/ngx-jaimes-scribe 0.1.8 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,16 +5,16 @@ Biblioteca Angular para transcrição de áudio em tempo real com suporte a diar
5
5
  ## Instalação
6
6
 
7
7
  ```bash
8
- npm install @jaimes/ngx-jaimes-scribe
8
+ npm install @medc-com-br/ngx-jaimes-scribe
9
9
  # ou
10
- pnpm add @jaimes/ngx-jaimes-scribe
10
+ pnpm add @medc-com-br/ngx-jaimes-scribe
11
11
  ```
12
12
 
13
13
  ## Uso Básico
14
14
 
15
15
  ```typescript
16
16
  import { Component } from '@angular/core';
17
- import { RecorderComponent } from '@jaimes/ngx-jaimes-scribe';
17
+ import { RecorderComponent } from '@medc-com-br/ngx-jaimes-scribe';
18
18
 
19
19
  @Component({
20
20
  selector: 'app-consultation',
@@ -68,6 +68,9 @@ export class ConsultationComponent {
68
68
  | `token` | `string` | Não | `''` | Token JWT para autenticação |
69
69
  | `premium` | `boolean` | Não | `false` | Ativa tier premium (ElevenLabs + Sonnet) |
70
70
  | `speakerLabels` | `Record<number, string>` | Não | `{}` | Labels customizados para speakers |
71
+ | `doctorName` | `string` | Não | `''` | Nome do médico (exibido quando speaker é identificado como doctor) |
72
+ | `patientName` | `string` | Não | `''` | Nome do paciente (exibido quando speaker é identificado como patient) |
73
+ | `companionName` | `string` | Não | `''` | Nome do acompanhante (exibido quando speaker é identificado como companion) |
71
74
  | `templates` | `TemplateOption[]` | Não | `[]` | Lista de templates para geração de documentos |
72
75
  | `lambdaUrl` | `string` | Não | `''` | URL base do Lambda para geração de documentos |
73
76
  | `apiUrl` | `string` | Não | `''` | URL base da API para carregar sessões anteriores |
@@ -142,12 +145,75 @@ speakerLabels: Record<number, string> = {
142
145
  - `2`: "Pessoa 3"
143
146
  - `3`: "Pessoa 4"
144
147
 
148
+ #### `doctorName`, `patientName`, `companionName`
149
+
150
+ Nomes para exibir na UI quando os speakers são identificados automaticamente. A identificação usa Claude Sonnet para analisar o conteúdo da conversa e determinar quem é médico, paciente ou acompanhante.
151
+
152
+ ```html
153
+ <ngx-jaimes-scribe-recorder
154
+ [wsUrl]="wsUrl"
155
+ [token]="token"
156
+ [doctorName]="'Dr. João Silva'"
157
+ [patientName]="'Maria Santos'"
158
+ [companionName]="'José Santos'"
159
+ />
160
+ ```
161
+
162
+ **Na UI**: Exibe "Dr. João Silva", "Maria Santos", etc.
163
+ **Na API/Resumo**: Usa labels genéricos "Médico", "Paciente", "Acompanhante".
164
+
165
+ ---
166
+
167
+ ## Identificação Automática de Speakers
168
+
169
+ O componente identifica automaticamente quem é cada speaker (Médico, Paciente, Acompanhante) usando IA.
170
+
171
+ ### Fluxo
172
+
173
+ 1. **Gravação em andamento**: Diarização ativa (Deepgram/ElevenLabs retorna speaker IDs 0, 1, 2...)
174
+ 2. **Acumulação**: Sistema aguarda 2+ speakers com pelo menos 100 caracteres cada
175
+ 3. **Identificação automática**: Envia amostra para `/identify-speakers` → Claude Sonnet analisa contexto
176
+ 4. **Atualização da UI**: Labels mudam de "Pessoa 1" → "Dr. João Silva" (ou "Médico" se nome não fornecido)
177
+ 5. **Re-identificação**: Se novo speaker aparecer, identifica novamente incluindo o novo
178
+
179
+ ### Correção Manual
180
+
181
+ O médico pode clicar no label de qualquer speaker para corrigir a identificação:
182
+
183
+ ```
184
+ [Clica no label "Médico"]
185
+
186
+ [Dropdown aparece]
187
+ ├── 🩺 Médico
188
+ ├── 🙋 Paciente
189
+ ├── 👥 Acompanhante
190
+ └── ✏️ Outro...
191
+ ```
192
+
193
+ ### Indicador de Baixa Confiança
194
+
195
+ Quando a IA tem confiança < 70%, aparece um indicador ⚠️ para o médico revisar.
196
+
197
+ ### Persistência
198
+
199
+ O mapeamento de speakers é salvo automaticamente no Jaimes (S3) e retornado via `GET /session/{sessionId}`. Não é necessário persistir no EHR.
200
+
201
+ ### Labels na Geração de Anamnese
202
+
203
+ Quando o documento é gerado, o Lambda `/generate` usa os roles identificados:
204
+
205
+ ```
206
+ [Médico]: Bom dia, como posso ajudá-lo?
207
+ [Paciente]: Doutor, estou com dor nas costas há duas semanas...
208
+ [Acompanhante]: Ele também tem dormido mal por causa disso.
209
+ ```
210
+
145
211
  #### `templates`
146
212
 
147
213
  Lista de templates disponíveis para geração de documentos. O botão "Gerar Resumo" só aparece se houver templates configurados e uma sessão finalizada.
148
214
 
149
215
  ```typescript
150
- import { TemplateOption } from '@jaimes/ngx-jaimes-scribe';
216
+ import { TemplateOption } from '@medc-com-br/ngx-jaimes-scribe';
151
217
 
152
218
  templates: TemplateOption[] = [
153
219
  {
@@ -355,7 +421,7 @@ onSessionFinished(result: { transcript: string; entries: TranscriptEntry[] }): v
355
421
  Emitido após a geração bem-sucedida de um documento via Lambda.
356
422
 
357
423
  ```typescript
358
- import { GeneratedDocument } from '@jaimes/ngx-jaimes-scribe';
424
+ import { GeneratedDocument } from '@medc-com-br/ngx-jaimes-scribe';
359
425
 
360
426
  onDocumentGenerated(doc: GeneratedDocument): void {
361
427
  console.log('Template usado:', doc.templateId);
@@ -557,7 +623,7 @@ import {
557
623
  RecorderComponent,
558
624
  TemplateOption,
559
625
  GeneratedDocument
560
- } from '@jaimes/ngx-jaimes-scribe';
626
+ } from '@medc-com-br/ngx-jaimes-scribe';
561
627
 
562
628
  @Component({
563
629
  selector: 'app-medical-consultation',