Skip to content

Commit a8a6545

Browse files
committed
feat(catalog): seven health support roles and the health category
Appointment prep assistant, family care organizer, clinic front desk assistant, medical bill helper, daily habits coach, health evidence summarizer and health records organizer, with their text in the three languages. None is a clinician: none diagnoses, treats or advises on medicines, and every sheet sends an emergency to the local emergency number or a crisis line first. The catalog is now 129 roles; spec 26.7 no longer postpones health.
1 parent 7f4e07d commit a8a6545

24 files changed

Lines changed: 505 additions & 9 deletions

‎app/src/features/catalog/AgencyGrid.tsx‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ const CATEGORIES: Category[] = [
2929
"finance",
3030
"people",
3131
"security",
32+
"health",
3233
"games",
3334
"legal",
3435
];

‎app/src/features/catalog/agency.test.tsx‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ describe("the Bot agency", () => {
3333

3434
fireEvent.click(within(invite).getByRole("button", { name: "See all bots" }));
3535
const dialog = await screen.findByRole("dialog", { name: "Bot agency" });
36-
expect(await within(dialog).findAllByRole("listitem")).toHaveLength(122);
36+
expect(await within(dialog).findAllByRole("listitem")).toHaveLength(129);
3737
});
3838

3939
test("a crew with only its chief invites the owner to pick bots, and a click adds one", async () => {
@@ -82,7 +82,7 @@ describe("the Bot agency", () => {
8282
await openCrewWithChief();
8383
fireEvent.click(screen.getByRole("button", { name: "Bot agency" }));
8484
const dialog = await screen.findByRole("dialog", { name: "Bot agency" });
85-
expect(await within(dialog).findAllByRole("listitem")).toHaveLength(122);
85+
expect(await within(dialog).findAllByRole("listitem")).toHaveLength(129);
8686

8787
fireEvent.click(within(dialog).getByRole("button", { name: "Marketing & sales" }));
8888
expect(within(dialog).getAllByRole("listitem")).toHaveLength(24);
@@ -129,7 +129,7 @@ describe("the Bot agency", () => {
129129
expect(addCalls(fake)[0]).toMatchObject({ templateId: "code-reviewer" });
130130

131131
fireEvent.click(within(dialog).getByRole("button", { name: "Back to all bots" }));
132-
expect(within(dialog).getAllByRole("listitem")).toHaveLength(122);
132+
expect(within(dialog).getAllByRole("listitem")).toHaveLength(129);
133133
});
134134

135135
test("the same role twice gets another name", async () => {

‎app/src/i18n/en/catalog.ts‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { engineering } from "./catalogEngineering";
55
import { engineeringMore } from "./catalogEngineeringMore";
66
import { finance } from "./catalogFinance";
77
import { games } from "./catalogGames";
8+
import { health } from "./catalogHealth";
89
import { legal } from "./catalogLegal";
910
import { marketing } from "./catalogMarketing";
1011
import { paidMedia } from "./catalogPaidMedia";
@@ -42,6 +43,7 @@ export const catalog = {
4243
finance: "Finance",
4344
people: "People & HR",
4445
security: "Security",
46+
health: "Health",
4547
games: "Games",
4648
legal: "Legal",
4749
},
@@ -78,5 +80,6 @@ export const catalog = {
7880
...sectors,
7981
...legal,
8082
...games,
83+
...health,
8184
},
8285
};

‎app/src/i18n/en/catalogHealth.ts‎

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
// Health support roles (spec 26.3): what the owner reads about each. None is
2+
// a doctor and none diagnoses, treats or advises on medicines; each sends
3+
// emergencies to the local emergency number first.
4+
5+
export const health = {
6+
"appointment-prep-assistant": {
7+
name: "Appointment Prep Assistant",
8+
role: "Helps you get the most from a medical visit: a clear history, a symptom diary, your questions in order and a plain note of what was said",
9+
summary:
10+
"Helps you get the most from a medical visit: your history, your questions and a plain note afterwards",
11+
about:
12+
"Turns what has been happening into a one-page summary the professional can read in a minute, with a timeline, your medicines as written on the packaging and the questions to ask in order of importance. After the visit it helps you write down what was said and nothing more. It does not guess what a symptom means. It is not a doctor.",
13+
when: "Before any visit to a doctor or other health professional, for you or someone you care for.",
14+
pairs: "Health Records Organizer, for your papers, and Family Care Organizer.",
15+
},
16+
"elder-care-companion": {
17+
name: "Family Care Organizer",
18+
role: "Helps a family look after an older or ill relative: appointments, who does what, papers, questions for the care team and the caregiver's own limits",
19+
summary:
20+
"Helps a family look after an older or ill relative: appointments, tasks, papers and questions for the care team",
21+
about:
22+
"Keeps one calendar of visits and renewals, a weekly plan of who does what and a one-page summary to share with the care team. It lists the medicines exactly as written and never tells you to change one: those questions go to the doctor or the pharmacist. It also looks after you, the caregiver, and helps with hard family conversations.",
23+
when: "When you are looking after a parent or another relative and the tasks are piling up.",
24+
pairs: "Appointment Prep Assistant, for each visit, and Medical Bill Helper, for the costs.",
25+
},
26+
"clinic-front-desk-assistant": {
27+
name: "Clinic Front Desk Assistant",
28+
role: "Helps a small clinic or practice answer patients: opening hours, how to book, preparation for visits and polite replies, without giving medical advice",
29+
summary:
30+
"Helps a small clinic answer patients: hours, booking, preparation and polite replies, with no medical advice",
31+
about:
32+
"Keeps one sheet with your hours, fees, booking rules and preparation for each visit and drafts replies to patients from it. Anything about symptoms, medicines, results or an urgent matter is set aside for the professional, with a short reply that says someone will answer and to call the emergency number if it is urgent. It never sends a message itself.",
33+
when: "When patients ask the same practical questions all day.",
34+
pairs: "Translator, for patients in another language, and Invoicing Assistant, for payments.",
35+
},
36+
"medical-bill-helper": {
37+
name: "Medical Bill Helper",
38+
role: "Helps you understand medical bills and insurance statements, find mistakes and write a clear appeal or question to the insurer or provider",
39+
summary:
40+
"Helps you understand medical bills and insurance statements, find mistakes and write the appeal",
41+
about:
42+
"Explains each line of a bill and of the insurer's statement in plain words, in a table, and looks for the usual mistakes, such as a service billed twice or a claim refused for a reason that looks wrong. It drafts the call script or the letter and keeps a log of who said what. It never pays, calls or signs in for you, and does not judge the treatment.",
43+
when: "When a medical bill or an insurance statement does not make sense, or a claim was refused.",
44+
pairs: "Bills Assistant, for payment, and Complaint Letter Drafter, for a formal letter.",
45+
},
46+
"wellness-habit-coach": {
47+
name: "Daily Habits Coach",
48+
role: "Helps you build small, steady habits for sleep, movement, food and stress, at your own pace, without medical claims",
49+
summary:
50+
"Helps you build small, steady habits for sleep, movement, food and stress, at your own pace",
51+
about:
52+
"Starts from what you want and makes each habit tiny and tied to something you already do, with a plan for the bad days and a simple weekly review. It never shames a miss. It gives no diet plans for an illness, no calorie targets, no supplement advice and no mental health treatment: for those it sends you to the right professional, and if a goal turns harmful it stops coaching it.",
53+
when: "When you want to sleep better, move more or manage stress, one small step at a time.",
54+
pairs: "Goals Coach, for longer goals, and Appointment Prep Assistant.",
55+
},
56+
"health-evidence-summarizer": {
57+
name: "Health Evidence Summarizer",
58+
role: "Finds and summarizes what the research says about a health question, with honest limits and real sources, to bring to a professional",
59+
summary:
60+
"Finds and summarizes what research says about a health question, with real sources and honest limits",
61+
about:
62+
"Writes your question precisely, looks first for reviews of many studies and recognized guidelines, opens every source before it cites it and explains in plain words how big the effect is, how sure the researchers are, the harms as well as the benefits and what is unknown. It never invents a study. It is general information, not advice for you, and it ends with questions for a professional.",
63+
when: "When you want to understand what is known about a treatment or a test before you talk to your doctor.",
64+
pairs: "Fact Checker, to verify a citation, and Editor, to polish.",
65+
},
66+
"health-records-organizer": {
67+
name: "Health Records Organizer",
68+
role: "Gathers and organizes your health papers into one timeline: visits, tests, medicines and vaccines, without interpreting them",
69+
summary:
70+
"Gathers your health papers into one clear timeline: visits, tests, medicines and vaccines",
71+
about:
72+
"Gathers your reports, results, prescriptions and vaccine records into one timeline, copying every value exactly as written, and builds a one-page summary to bring to any visit. It flags what is hard to read or inconsistent as a question for the professional. It never says a result is good, bad or normal, and never requests records or signs in to a portal.",
73+
when: "When your health papers are scattered and you need them in order for a visit.",
74+
pairs: "Appointment Prep Assistant, who uses the summary for a visit.",
75+
},
76+
};

‎app/src/i18n/es/catalog.ts‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { engineering } from "./catalogEngineering";
66
import { engineeringMore } from "./catalogEngineeringMore";
77
import { finance } from "./catalogFinance";
88
import { games } from "./catalogGames";
9+
import { health } from "./catalogHealth";
910
import { legal } from "./catalogLegal";
1011
import { marketing } from "./catalogMarketing";
1112
import { paidMedia } from "./catalogPaidMedia";
@@ -39,6 +40,7 @@ export const catalog: Messages["catalog"] = {
3940
finance: "Finanzas",
4041
people: "Personas y RR. HH.",
4142
security: "Seguridad",
43+
health: "Salud",
4244
games: "Juegos",
4345
legal: "Jurídico",
4446
},
@@ -75,5 +77,6 @@ export const catalog: Messages["catalog"] = {
7577
...sectors,
7678
...legal,
7779
...games,
80+
...health,
7881
},
7982
};

‎app/src/i18n/es/catalogHealth.ts‎

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import type { health as en } from "../en/catalogHealth";
2+
3+
export const health: typeof en = {
4+
"appointment-prep-assistant": {
5+
name: "Asistente de consultas médicas",
6+
role: "Te ayuda a aprovechar una consulta médica: un historial claro, un diario de síntomas, tus preguntas en orden y una nota sencilla de lo que se dijo",
7+
summary:
8+
"Te ayuda a aprovechar una consulta médica: tu historial, tus preguntas y una nota sencilla después",
9+
about:
10+
"Convierte lo que ha estado pasando en un resumen de una página que el profesional lee en un minuto, con una línea de tiempo, tus medicamentos tal como están escritos en el envase y las preguntas por orden de importancia. Tras la consulta te ayuda a anotar lo que se dijo y nada más. No adivina qué significa un síntoma. No es médico.",
11+
when: "Antes de cualquier consulta con un médico u otro profesional de la salud, para ti o para alguien a quien cuidas.",
12+
pairs:
13+
"Organizador de documentos de salud, para tus papeles, y Organizador del cuidado familiar.",
14+
},
15+
"elder-care-companion": {
16+
name: "Organizador del cuidado familiar",
17+
role: "Ayuda a una familia a cuidar de un familiar mayor o enfermo: citas, quién hace qué, papeles, preguntas para el equipo de cuidado y los límites de quien cuida",
18+
summary:
19+
"Ayuda a una familia a cuidar de un familiar mayor o enfermo: citas, tareas, papeles y preguntas para el equipo",
20+
about:
21+
"Mantiene un calendario de citas y renovaciones, un plan semanal de quién hace qué y un resumen de una página para compartir con el equipo de cuidado. Lista los medicamentos exactamente como están escritos y nunca te dice que cambies uno: esas preguntas van al médico o al farmacéutico. También cuida de ti, que cuidas, y ayuda en las conversaciones difíciles de la familia.",
22+
when: "Cuando cuidas de un padre, una madre u otro familiar y las tareas se acumulan.",
23+
pairs:
24+
"Asistente de consultas médicas, para cada cita, y Ayudante de facturas médicas, para los costos.",
25+
},
26+
"clinic-front-desk-assistant": {
27+
name: "Asistente de recepción de clínica",
28+
role: "Ayuda a una clínica o consulta pequeña a responder a los pacientes: horarios, cómo reservar, preparación de las visitas y respuestas amables, sin dar consejo médico",
29+
summary:
30+
"Ayuda a una clínica pequeña a responder a los pacientes: horarios, reservas, preparación y respuestas amables, sin consejo médico",
31+
about:
32+
"Mantiene una hoja con tus horarios, tarifas, reglas de reserva y preparación de cada visita y redacta las respuestas a los pacientes a partir de ella. Todo lo que habla de síntomas, medicamentos, resultados o urgencias queda aparte para el profesional, con una respuesta corta que dice que alguien contestará y que, si es urgente, hay que llamar a emergencias. Nunca envía un mensaje por su cuenta.",
33+
when: "Cuando los pacientes hacen las mismas preguntas prácticas todo el día.",
34+
pairs: "Traductor, para pacientes de otro idioma, y Asistente de cobros, para los pagos.",
35+
},
36+
"medical-bill-helper": {
37+
name: "Ayudante de facturas médicas",
38+
role: "Te ayuda a entender facturas médicas y extractos del seguro, encontrar errores y escribir una reclamación o una pregunta claras para el seguro o el proveedor",
39+
summary:
40+
"Te ayuda a entender facturas médicas y extractos del seguro, encontrar errores y escribir la reclamación",
41+
about:
42+
"Explica cada línea de una factura y del extracto del seguro en palabras sencillas, en una tabla, y busca los errores de siempre, como un servicio cobrado dos veces o una reclamación rechazada por un motivo que parece equivocado. Redacta el guion de la llamada o la carta y lleva un registro de quién dijo qué. Nunca paga, llama ni entra en un portal por ti, y no juzga el tratamiento.",
43+
when: "Cuando una factura médica o un extracto del seguro no tiene sentido, o se rechazó una reclamación.",
44+
pairs:
45+
"Asistente de cuentas, para el pago, y Redactor de cartas de reclamación, para una carta formal.",
46+
},
47+
"wellness-habit-coach": {
48+
name: "Coach de hábitos diarios",
49+
role: "Te ayuda a crear hábitos pequeños y constantes de sueño, movimiento, comida y estrés, a tu ritmo, sin afirmaciones médicas",
50+
summary:
51+
"Te ayuda a crear hábitos pequeños y constantes de sueño, movimiento, comida y estrés, a tu ritmo",
52+
about:
53+
"Parte de lo que quieres y hace cada hábito muy pequeño y ligado a algo que ya haces, con un plan para los días malos y una revisión semanal sencilla. Nunca avergüenza por un fallo. No da dietas para una enfermedad, objetivos de calorías, consejos de suplementos ni tratamiento de salud mental: para eso te manda al profesional adecuado, y si una meta se vuelve dañina, deja de orientarla.",
54+
when: "Cuando quieres dormir mejor, moverte más o manejar el estrés, un paso pequeño a la vez.",
55+
pairs: "Coach de metas, para metas más largas, y Asistente de consultas médicas.",
56+
},
57+
"health-evidence-summarizer": {
58+
name: "Resumidor de evidencia en salud",
59+
role: "Encuentra y resume lo que dice la investigación sobre una cuestión de salud, con límites honestos y fuentes reales, para llevar a un profesional",
60+
summary:
61+
"Encuentra y resume lo que dice la investigación sobre una cuestión de salud, con fuentes reales y límites honestos",
62+
about:
63+
"Escribe tu pregunta con precisión, busca primero revisiones de muchos estudios y guías reconocidas, abre cada fuente antes de citarla y explica en palabras sencillas el tamaño del efecto, qué tan seguros están los investigadores, los daños además de los beneficios y lo que aún no se sabe. Nunca inventa un estudio. Es información general, no consejo para tu caso, y termina con preguntas para un profesional.",
64+
when: "Cuando quieres entender qué se sabe de un tratamiento o una prueba antes de hablar con tu médico.",
65+
pairs: "Verificador de datos, para comprobar una cita, y Corrector de textos, para pulir.",
66+
},
67+
"health-records-organizer": {
68+
name: "Organizador de documentos de salud",
69+
role: "Reúne y organiza tus papeles de salud en una línea de tiempo: consultas, pruebas, medicamentos y vacunas, sin interpretarlos",
70+
summary:
71+
"Reúne tus papeles de salud en una línea de tiempo clara: consultas, pruebas, medicamentos y vacunas",
72+
about:
73+
"Reúne tus informes, resultados, recetas y cartilla de vacunas en una sola línea de tiempo, copiando cada valor exactamente como está escrito, y arma un resumen de una página para llevar a cualquier consulta. Marca lo que es difícil de leer o incoherente como pregunta para el profesional. Nunca dice que un resultado es bueno, malo o normal, y nunca pide registros ni entra en un portal.",
74+
when: "Cuando tus papeles de salud están dispersos y los necesitas en orden para una consulta.",
75+
pairs: "Asistente de consultas médicas, que usa el resumen en una consulta.",
76+
},
77+
};

‎app/src/i18n/pt-BR/catalog.ts‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { engineering } from "./catalogEngineering";
66
import { engineeringMore } from "./catalogEngineeringMore";
77
import { finance } from "./catalogFinance";
88
import { games } from "./catalogGames";
9+
import { health } from "./catalogHealth";
910
import { legal } from "./catalogLegal";
1011
import { marketing } from "./catalogMarketing";
1112
import { paidMedia } from "./catalogPaidMedia";
@@ -39,6 +40,7 @@ export const catalog: Messages["catalog"] = {
3940
finance: "Finanças",
4041
people: "Pessoas e RH",
4142
security: "Segurança",
43+
health: "Saúde",
4244
games: "Jogos",
4345
legal: "Jurídico",
4446
},
@@ -75,5 +77,6 @@ export const catalog: Messages["catalog"] = {
7577
...sectors,
7678
...legal,
7779
...games,
80+
...health,
7881
},
7982
};

0 commit comments

Comments
 (0)