evo360-types 1.3.628 → 1.3.634
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/dist/apps/evo-telemedicine/zod-schemas.d.ts +12 -0
- package/dist/apps/evo-telemedicine/zod-schemas.js +4 -0
- package/dist/apps/evo-telemedicine/zod-schemas.ts +4 -0
- package/dist/types/evo-telemedicine/index.d.ts +74 -0
- package/dist/types/evo-telemedicine/index.js +31 -0
- package/dist/types/evo-telemedicine/index.ts +74 -0
- package/package.json +1 -1
|
@@ -116,7 +116,11 @@ export declare const zTeleconsultationSchema: z.ZodObject<{
|
|
|
116
116
|
unused_expires_at: z.ZodEffects<z.ZodDate, Date, unknown>;
|
|
117
117
|
reconnect_until: z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodDate, Date, unknown>>>;
|
|
118
118
|
started_at: z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodDate, Date, unknown>>>;
|
|
119
|
+
/** Instante em que o encerramento começou (fase 1 marcou `ending`). */
|
|
120
|
+
ending_at: z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodDate, Date, unknown>>>;
|
|
119
121
|
ended_at: z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodDate, Date, unknown>>>;
|
|
122
|
+
/** `true` quando o `ended_at` foi DERIVADO por reparo, não medido. */
|
|
123
|
+
ended_at_derived: z.ZodOptional<z.ZodBoolean>;
|
|
120
124
|
ended_by: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
121
125
|
type: z.ZodEnum<["user", "system"]>;
|
|
122
126
|
id: z.ZodOptional<z.ZodString>;
|
|
@@ -188,7 +192,11 @@ export declare const zTeleconsultationSchema: z.ZodObject<{
|
|
|
188
192
|
unused_expires_at: z.ZodEffects<z.ZodDate, Date, unknown>;
|
|
189
193
|
reconnect_until: z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodDate, Date, unknown>>>;
|
|
190
194
|
started_at: z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodDate, Date, unknown>>>;
|
|
195
|
+
/** Instante em que o encerramento começou (fase 1 marcou `ending`). */
|
|
196
|
+
ending_at: z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodDate, Date, unknown>>>;
|
|
191
197
|
ended_at: z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodDate, Date, unknown>>>;
|
|
198
|
+
/** `true` quando o `ended_at` foi DERIVADO por reparo, não medido. */
|
|
199
|
+
ended_at_derived: z.ZodOptional<z.ZodBoolean>;
|
|
192
200
|
ended_by: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
193
201
|
type: z.ZodEnum<["user", "system"]>;
|
|
194
202
|
id: z.ZodOptional<z.ZodString>;
|
|
@@ -260,7 +268,11 @@ export declare const zTeleconsultationSchema: z.ZodObject<{
|
|
|
260
268
|
unused_expires_at: z.ZodEffects<z.ZodDate, Date, unknown>;
|
|
261
269
|
reconnect_until: z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodDate, Date, unknown>>>;
|
|
262
270
|
started_at: z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodDate, Date, unknown>>>;
|
|
271
|
+
/** Instante em que o encerramento começou (fase 1 marcou `ending`). */
|
|
272
|
+
ending_at: z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodDate, Date, unknown>>>;
|
|
263
273
|
ended_at: z.ZodOptional<z.ZodNullable<z.ZodEffects<z.ZodDate, Date, unknown>>>;
|
|
274
|
+
/** `true` quando o `ended_at` foi DERIVADO por reparo, não medido. */
|
|
275
|
+
ended_at_derived: z.ZodOptional<z.ZodBoolean>;
|
|
264
276
|
ended_by: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
265
277
|
type: z.ZodEnum<["user", "system"]>;
|
|
266
278
|
id: z.ZodOptional<z.ZodString>;
|
|
@@ -287,7 +287,11 @@ exports.zTeleconsultationSchema = zod_schemas_1.zFireDocSchema
|
|
|
287
287
|
unused_expires_at: zDate,
|
|
288
288
|
reconnect_until: zDateNullable,
|
|
289
289
|
started_at: zDateNullable,
|
|
290
|
+
/** Instante em que o encerramento começou (fase 1 marcou `ending`). */
|
|
291
|
+
ending_at: zDateNullable,
|
|
290
292
|
ended_at: zDateNullable,
|
|
293
|
+
/** `true` quando o `ended_at` foi DERIVADO por reparo, não medido. */
|
|
294
|
+
ended_at_derived: zod_1.z.boolean().optional(),
|
|
291
295
|
ended_by: exports.zTeleconsultationEndedBySchema.nullable().optional(),
|
|
292
296
|
provider: exports.zTeleconsultationProviderSchema,
|
|
293
297
|
provider_meeting_id: zod_1.z.string().optional(),
|
|
@@ -330,7 +330,11 @@ export const zTeleconsultationSchema = zFireDocSchema
|
|
|
330
330
|
unused_expires_at: zDate,
|
|
331
331
|
reconnect_until: zDateNullable,
|
|
332
332
|
started_at: zDateNullable,
|
|
333
|
+
/** Instante em que o encerramento começou (fase 1 marcou `ending`). */
|
|
334
|
+
ending_at: zDateNullable,
|
|
333
335
|
ended_at: zDateNullable,
|
|
336
|
+
/** `true` quando o `ended_at` foi DERIVADO por reparo, não medido. */
|
|
337
|
+
ended_at_derived: z.boolean().optional(),
|
|
334
338
|
ended_by: zTeleconsultationEndedBySchema.nullable().optional(),
|
|
335
339
|
provider: zTeleconsultationProviderSchema,
|
|
336
340
|
provider_meeting_id: z.string().optional(),
|
|
@@ -38,6 +38,37 @@ export declare const TELEMEDICINE_WINDOW_DEFAULTS: {
|
|
|
38
38
|
readonly launch_code_ttl_minutes: 5;
|
|
39
39
|
/** Access da sessão pública do browser (`browser_session`), renovável de forma rotativa. */
|
|
40
40
|
readonly browser_session_ttl_minutes: 15;
|
|
41
|
+
/**
|
|
42
|
+
* TTL da sessão de browser enquanto a consulta está VIVA (2026-09-28).
|
|
43
|
+
*
|
|
44
|
+
* 15 min bastam antes de a consulta começar — é uma janela de preflight. Já
|
|
45
|
+
* uma consulta em andamento tem pausa, navegador que trava, notebook que
|
|
46
|
+
* dorme e aba fechada por engano, e com 15 min qualquer um desses obriga o
|
|
47
|
+
* médico a pedir um launch code NOVO no painel para voltar. 60 min cobre
|
|
48
|
+
* todos eles com folga.
|
|
49
|
+
*
|
|
50
|
+
* O risco de um cookie mais longevo é limitado pela própria consulta: toda
|
|
51
|
+
* rota da sala relê o estado clínico, e consulta terminal responde `410` — o
|
|
52
|
+
* cookie fica inerte no fim do encontro, não no fim do TTL. O teto de duração
|
|
53
|
+
* da plataforma é 1h30, então esta sessão não sobrevive a uma consulta.
|
|
54
|
+
*/
|
|
55
|
+
readonly browser_session_live_ttl_minutes: 60;
|
|
56
|
+
/**
|
|
57
|
+
* Graça para o `sid` ANTERIOR depois da rotação (2026-09-28).
|
|
58
|
+
*
|
|
59
|
+
* A sessão rotaciona trocando o cookie na resposta, então qualquer requisição
|
|
60
|
+
* em vôo no instante da troca carrega o cookie anterior — o `/session` é
|
|
61
|
+
* polado a cada 5 s, o que faz dessa corrida um evento recorrente em toda
|
|
62
|
+
* consulta longa, não uma raridade. Dentro desta janela, reusar o `sid`
|
|
63
|
+
* rotacionado NÃO é comprometimento: é aba que voltou, navegador que travou ou
|
|
64
|
+
* resposta de rotação que se perdeu no caminho.
|
|
65
|
+
*
|
|
66
|
+
* 10 min é o mesmo número de `reconnect_grace_minutes`, de propósito: é a
|
|
67
|
+
* janela em que o produto JÁ considera que a pessoa continua na mesma
|
|
68
|
+
* consulta. Um conceito, não dois. Passados os 10 min, reuso de cookie
|
|
69
|
+
* rotacionado deixa de parecer tropeço e volta a ser sinal de cópia.
|
|
70
|
+
*/
|
|
71
|
+
readonly browser_session_rotation_grace_minutes: 10;
|
|
41
72
|
/** Verificação de identidade: N falhas na janela bloqueiam o grant. */
|
|
42
73
|
readonly identity_max_failures: 5;
|
|
43
74
|
readonly identity_failure_window_minutes: 15;
|
|
@@ -387,7 +418,31 @@ export interface ITeleconsultation extends IFireDoc {
|
|
|
387
418
|
unused_expires_at: Date;
|
|
388
419
|
reconnect_until?: Date | null;
|
|
389
420
|
started_at?: Date | null;
|
|
421
|
+
/**
|
|
422
|
+
* feat-160 (2026-09-29) — instante em que o encerramento COMEÇOU (fase 1 do
|
|
423
|
+
* `endForAll` marcou `ending`). Na prática é o clique do médico, ou o instante
|
|
424
|
+
* em que o sweep decidiu encerrar.
|
|
425
|
+
*
|
|
426
|
+
* Existe por causa de um furo de FATURAMENTO: as fases 2 e 3 do `endForAll` são
|
|
427
|
+
* separadas por até três chamadas HTTP ao provedor, feitas fora de transação. Se
|
|
428
|
+
* o processo morrer ali, o doc fica em `ending` para sempre — sem `ended_at`, sem
|
|
429
|
+
* `usage_metering_due_at` (logo **nunca cobrado**), sem carimbo de retenção e
|
|
430
|
+
* sem `provider_teardown_pending` (logo invisível para a varredura de meeting
|
|
431
|
+
* órfão). `ending` não está em nenhuma das listas de status do sweep.
|
|
432
|
+
*
|
|
433
|
+
* Com este campo a passada de reparo sabe (a) há quanto tempo o doc está parado
|
|
434
|
+
* e (b) que instante usar como `ended_at` — o fim real é desconhecido, e este é
|
|
435
|
+
* o limite inferior defensável.
|
|
436
|
+
*/
|
|
437
|
+
ending_at?: Date | null;
|
|
390
438
|
ended_at?: Date | null;
|
|
439
|
+
/**
|
|
440
|
+
* feat-160 (2026-09-29) — `true` quando o `ended_at` foi DERIVADO por reparo, e
|
|
441
|
+
* não medido. Quem lê a duração da consulta precisa saber disso: o fim real
|
|
442
|
+
* ficou entre o `ending_at` e o instante do reparo, e o que está gravado é o
|
|
443
|
+
* começo dessa janela.
|
|
444
|
+
*/
|
|
445
|
+
ended_at_derived?: boolean;
|
|
391
446
|
ended_by?: ITeleconsultationEndedBy | null;
|
|
392
447
|
provider: TeleconsultationProvider;
|
|
393
448
|
/** Id opaco do meeting no provider — nunca vai em external link nem no SPA. */
|
|
@@ -1166,6 +1221,25 @@ export interface ITeleconsultationBadgeDto {
|
|
|
1166
1221
|
recording_audio: boolean;
|
|
1167
1222
|
recording_video: boolean;
|
|
1168
1223
|
transcript: boolean;
|
|
1224
|
+
/**
|
|
1225
|
+
* Início REAL, ISO 8601 UTC, ou `null`. Desde 2026-09-29 "início" é o
|
|
1226
|
+
* **ENCONTRO** — médico E paciente conectados —, não o clique do médico:
|
|
1227
|
+
* abrir a sala e entrar sozinho pode ser curiosidade, e carimbar ali armava
|
|
1228
|
+
* um prazo de 90 min que encerrava a consulta e revogava o link do paciente.
|
|
1229
|
+
*
|
|
1230
|
+
* `null` é RESPOSTA, não dado faltando: significa que o encontro não houve.
|
|
1231
|
+
*/
|
|
1232
|
+
started_at: string | null;
|
|
1233
|
+
/**
|
|
1234
|
+
* Fim REAL, ISO 8601 UTC, ou `null`.
|
|
1235
|
+
*
|
|
1236
|
+
* A assimetria normal é `ended_at` preenchido com `started_at` nulo — o
|
|
1237
|
+
* paciente não apareceu e o médico encerrou, ou a consulta expirou. Nesses
|
|
1238
|
+
* casos a duração é INEXISTENTE, não zero, e a tela não deve escrever
|
|
1239
|
+
* "0 min". O inverso não acontece: consulta que teve encontro não chega a
|
|
1240
|
+
* `expired` nem a `cancelled`.
|
|
1241
|
+
*/
|
|
1242
|
+
ended_at: string | null;
|
|
1169
1243
|
}
|
|
1170
1244
|
/** `GET /v1/appointments/teleconsultation-badges?ids=a,b,c` (máx. 50 ids). */
|
|
1171
1245
|
export interface ITeleconsultationBadgesResponseDto {
|
|
@@ -71,6 +71,37 @@ exports.TELEMEDICINE_WINDOW_DEFAULTS = {
|
|
|
71
71
|
launch_code_ttl_minutes: 5,
|
|
72
72
|
/** Access da sessão pública do browser (`browser_session`), renovável de forma rotativa. */
|
|
73
73
|
browser_session_ttl_minutes: 15,
|
|
74
|
+
/**
|
|
75
|
+
* TTL da sessão de browser enquanto a consulta está VIVA (2026-09-28).
|
|
76
|
+
*
|
|
77
|
+
* 15 min bastam antes de a consulta começar — é uma janela de preflight. Já
|
|
78
|
+
* uma consulta em andamento tem pausa, navegador que trava, notebook que
|
|
79
|
+
* dorme e aba fechada por engano, e com 15 min qualquer um desses obriga o
|
|
80
|
+
* médico a pedir um launch code NOVO no painel para voltar. 60 min cobre
|
|
81
|
+
* todos eles com folga.
|
|
82
|
+
*
|
|
83
|
+
* O risco de um cookie mais longevo é limitado pela própria consulta: toda
|
|
84
|
+
* rota da sala relê o estado clínico, e consulta terminal responde `410` — o
|
|
85
|
+
* cookie fica inerte no fim do encontro, não no fim do TTL. O teto de duração
|
|
86
|
+
* da plataforma é 1h30, então esta sessão não sobrevive a uma consulta.
|
|
87
|
+
*/
|
|
88
|
+
browser_session_live_ttl_minutes: 60,
|
|
89
|
+
/**
|
|
90
|
+
* Graça para o `sid` ANTERIOR depois da rotação (2026-09-28).
|
|
91
|
+
*
|
|
92
|
+
* A sessão rotaciona trocando o cookie na resposta, então qualquer requisição
|
|
93
|
+
* em vôo no instante da troca carrega o cookie anterior — o `/session` é
|
|
94
|
+
* polado a cada 5 s, o que faz dessa corrida um evento recorrente em toda
|
|
95
|
+
* consulta longa, não uma raridade. Dentro desta janela, reusar o `sid`
|
|
96
|
+
* rotacionado NÃO é comprometimento: é aba que voltou, navegador que travou ou
|
|
97
|
+
* resposta de rotação que se perdeu no caminho.
|
|
98
|
+
*
|
|
99
|
+
* 10 min é o mesmo número de `reconnect_grace_minutes`, de propósito: é a
|
|
100
|
+
* janela em que o produto JÁ considera que a pessoa continua na mesma
|
|
101
|
+
* consulta. Um conceito, não dois. Passados os 10 min, reuso de cookie
|
|
102
|
+
* rotacionado deixa de parecer tropeço e volta a ser sinal de cópia.
|
|
103
|
+
*/
|
|
104
|
+
browser_session_rotation_grace_minutes: 10,
|
|
74
105
|
/** Verificação de identidade: N falhas na janela bloqueiam o grant. */
|
|
75
106
|
identity_max_failures: 5,
|
|
76
107
|
identity_failure_window_minutes: 15,
|
|
@@ -67,6 +67,37 @@ export const TELEMEDICINE_WINDOW_DEFAULTS = {
|
|
|
67
67
|
launch_code_ttl_minutes: 5,
|
|
68
68
|
/** Access da sessão pública do browser (`browser_session`), renovável de forma rotativa. */
|
|
69
69
|
browser_session_ttl_minutes: 15,
|
|
70
|
+
/**
|
|
71
|
+
* TTL da sessão de browser enquanto a consulta está VIVA (2026-09-28).
|
|
72
|
+
*
|
|
73
|
+
* 15 min bastam antes de a consulta começar — é uma janela de preflight. Já
|
|
74
|
+
* uma consulta em andamento tem pausa, navegador que trava, notebook que
|
|
75
|
+
* dorme e aba fechada por engano, e com 15 min qualquer um desses obriga o
|
|
76
|
+
* médico a pedir um launch code NOVO no painel para voltar. 60 min cobre
|
|
77
|
+
* todos eles com folga.
|
|
78
|
+
*
|
|
79
|
+
* O risco de um cookie mais longevo é limitado pela própria consulta: toda
|
|
80
|
+
* rota da sala relê o estado clínico, e consulta terminal responde `410` — o
|
|
81
|
+
* cookie fica inerte no fim do encontro, não no fim do TTL. O teto de duração
|
|
82
|
+
* da plataforma é 1h30, então esta sessão não sobrevive a uma consulta.
|
|
83
|
+
*/
|
|
84
|
+
browser_session_live_ttl_minutes: 60,
|
|
85
|
+
/**
|
|
86
|
+
* Graça para o `sid` ANTERIOR depois da rotação (2026-09-28).
|
|
87
|
+
*
|
|
88
|
+
* A sessão rotaciona trocando o cookie na resposta, então qualquer requisição
|
|
89
|
+
* em vôo no instante da troca carrega o cookie anterior — o `/session` é
|
|
90
|
+
* polado a cada 5 s, o que faz dessa corrida um evento recorrente em toda
|
|
91
|
+
* consulta longa, não uma raridade. Dentro desta janela, reusar o `sid`
|
|
92
|
+
* rotacionado NÃO é comprometimento: é aba que voltou, navegador que travou ou
|
|
93
|
+
* resposta de rotação que se perdeu no caminho.
|
|
94
|
+
*
|
|
95
|
+
* 10 min é o mesmo número de `reconnect_grace_minutes`, de propósito: é a
|
|
96
|
+
* janela em que o produto JÁ considera que a pessoa continua na mesma
|
|
97
|
+
* consulta. Um conceito, não dois. Passados os 10 min, reuso de cookie
|
|
98
|
+
* rotacionado deixa de parecer tropeço e volta a ser sinal de cópia.
|
|
99
|
+
*/
|
|
100
|
+
browser_session_rotation_grace_minutes: 10,
|
|
70
101
|
/** Verificação de identidade: N falhas na janela bloqueiam o grant. */
|
|
71
102
|
identity_max_failures: 5,
|
|
72
103
|
identity_failure_window_minutes: 15,
|
|
@@ -472,7 +503,31 @@ export interface ITeleconsultation extends IFireDoc {
|
|
|
472
503
|
unused_expires_at: Date;
|
|
473
504
|
reconnect_until?: Date | null;
|
|
474
505
|
started_at?: Date | null;
|
|
506
|
+
/**
|
|
507
|
+
* feat-160 (2026-09-29) — instante em que o encerramento COMEÇOU (fase 1 do
|
|
508
|
+
* `endForAll` marcou `ending`). Na prática é o clique do médico, ou o instante
|
|
509
|
+
* em que o sweep decidiu encerrar.
|
|
510
|
+
*
|
|
511
|
+
* Existe por causa de um furo de FATURAMENTO: as fases 2 e 3 do `endForAll` são
|
|
512
|
+
* separadas por até três chamadas HTTP ao provedor, feitas fora de transação. Se
|
|
513
|
+
* o processo morrer ali, o doc fica em `ending` para sempre — sem `ended_at`, sem
|
|
514
|
+
* `usage_metering_due_at` (logo **nunca cobrado**), sem carimbo de retenção e
|
|
515
|
+
* sem `provider_teardown_pending` (logo invisível para a varredura de meeting
|
|
516
|
+
* órfão). `ending` não está em nenhuma das listas de status do sweep.
|
|
517
|
+
*
|
|
518
|
+
* Com este campo a passada de reparo sabe (a) há quanto tempo o doc está parado
|
|
519
|
+
* e (b) que instante usar como `ended_at` — o fim real é desconhecido, e este é
|
|
520
|
+
* o limite inferior defensável.
|
|
521
|
+
*/
|
|
522
|
+
ending_at?: Date | null;
|
|
475
523
|
ended_at?: Date | null;
|
|
524
|
+
/**
|
|
525
|
+
* feat-160 (2026-09-29) — `true` quando o `ended_at` foi DERIVADO por reparo, e
|
|
526
|
+
* não medido. Quem lê a duração da consulta precisa saber disso: o fim real
|
|
527
|
+
* ficou entre o `ending_at` e o instante do reparo, e o que está gravado é o
|
|
528
|
+
* começo dessa janela.
|
|
529
|
+
*/
|
|
530
|
+
ended_at_derived?: boolean;
|
|
476
531
|
ended_by?: ITeleconsultationEndedBy | null;
|
|
477
532
|
provider: TeleconsultationProvider;
|
|
478
533
|
/** Id opaco do meeting no provider — nunca vai em external link nem no SPA. */
|
|
@@ -1321,6 +1376,25 @@ export interface ITeleconsultationBadgeDto {
|
|
|
1321
1376
|
recording_audio: boolean;
|
|
1322
1377
|
recording_video: boolean;
|
|
1323
1378
|
transcript: boolean;
|
|
1379
|
+
/**
|
|
1380
|
+
* Início REAL, ISO 8601 UTC, ou `null`. Desde 2026-09-29 "início" é o
|
|
1381
|
+
* **ENCONTRO** — médico E paciente conectados —, não o clique do médico:
|
|
1382
|
+
* abrir a sala e entrar sozinho pode ser curiosidade, e carimbar ali armava
|
|
1383
|
+
* um prazo de 90 min que encerrava a consulta e revogava o link do paciente.
|
|
1384
|
+
*
|
|
1385
|
+
* `null` é RESPOSTA, não dado faltando: significa que o encontro não houve.
|
|
1386
|
+
*/
|
|
1387
|
+
started_at: string | null;
|
|
1388
|
+
/**
|
|
1389
|
+
* Fim REAL, ISO 8601 UTC, ou `null`.
|
|
1390
|
+
*
|
|
1391
|
+
* A assimetria normal é `ended_at` preenchido com `started_at` nulo — o
|
|
1392
|
+
* paciente não apareceu e o médico encerrou, ou a consulta expirou. Nesses
|
|
1393
|
+
* casos a duração é INEXISTENTE, não zero, e a tela não deve escrever
|
|
1394
|
+
* "0 min". O inverso não acontece: consulta que teve encontro não chega a
|
|
1395
|
+
* `expired` nem a `cancelled`.
|
|
1396
|
+
*/
|
|
1397
|
+
ended_at: string | null;
|
|
1324
1398
|
}
|
|
1325
1399
|
|
|
1326
1400
|
/** `GET /v1/appointments/teleconsultation-badges?ids=a,b,c` (máx. 50 ids). */
|