enamel
ENAMEL-24
Historia clinica: the stated initial focus, zero app surface, pacientes table empty
Done normal
cecoder02-enamel-cc
enamel-commons names historia clinica as the INITIAL build focus and it does not exist in the app at all. DB side is partly there and empty: pacientes (0 rows, identity pair documentoType + normalized documentoNumber enforced by ux_pacientes_documento_live), antecedentesCatalog (0), pacienteAntecedentes (0). No route, no server action, no form reads or writes any of them. Needs scoping before it can be estimated - read shared/md/enamel-historia-clinica-standards.md (Ley 26.529 retention/consent, HL7 FHIR, SNOMED CT AR) and enamel-design-lessons.md before designing. Filed to make the gap visible, NOT ready to implement.
Sub-tickets — 3/8 done
Historia clinica: statutory HC-copy export (Ley 26.529) vs no-export scope boundary - needs a ruling
ENAMEL-51 Backlog
ENAMEL-52 Backlog low
ENAMEL-53 Backlog low
ENAMEL-54 Backlog low
ENAMEL-55 Backlog low
Historia clinica ships behind a gate no identity can pass: zero admin:enamel grants exist fleet-wide
ENAMEL-57 Canceled high
cecoder02-enamel-cc
ENAMEL-50 Done high
dedb-enamel-cc
Activity
-
coder02-enamel-cc
-
Reassigned coder-enamel-cc -> coder02-enamel-cc by pmmaster-evolutiva-cc under Elazar's standing GO (2026-09-11 09:22/09:27). Load, not performance: coder-enamel-cc holds ENAMEL-16/1/38/24 and is measured BUSY at ctx=316k against a 250k window, while coder02-enamel-cc is free - ENAMEL-40 shipped at ffde6e5 and ENAMEL-47 is pushed at 01c0845 and parked on a client-side browser round-trip no agent can perform. ENAMEL-24 is the lowest-priority of coder-enamel-cc's four and the only one with no collision surface: it is greenfield with zero existing app surface, so it does not touch ENAMEL-34 (resolveOrCreatePaciente, db-enamel-cc inProgress) or ENAMEL-38's resolver work. coder-enamel-cc keeps ENAMEL-16, ENAMEL-1 and ENAMEL-38.
-
Orientation complete: read enamel-historia-clinica-standards.md + enamel-design-lessons.md, read live schema (enamel_002/006/049/054). v1 scope: keyed lookup by (documentoType,documentoNumber) - no browse/list surface exists on pacientes (no appKey/ownerAppKey axis); antecedentes lifecycle (open/resolve/erroneous) via existing trigger+views, never in-place edit. No create-patient flow in v1 (structurally blocked - zero vocabularyScopes row for appKey=enamel/documentoType, and resolveOrCreatePacienteForApp is ENAMEL-34/db-enamel-cc's in-progress function, not touched). Filing deferred legal/architecture items as child rows per pmmaster's scope boundary (no export/third-party/off-platform copy baked in here).
-
v1 pushed d21720b, app v0.13.0. Delivered: /historia-clinica keyed lookup by (documentoType,documentoNumber) - no browse (pacientes has no appKey/ownerAppKey axis, so a list would be a cross-tenant sensitive-data read); /historia-clinica/[id] antecedentes lifecycle (open/resolve/erroneous) over existing vPacienteAntecedentes/vAntecedentesCatalog/requireDetalle trigger, never in-place edit per Ley 26.529. Gated on admin:enamel specifically (stricter than ADMIN_OF_ANY) - renders empty today, zero admin:enamel grants exist. No create-patient flow: blocked structurally (no vocabularyScopes row for appKey=enamel/documentoType; resolveOrCreatePacienteForApp is ENAMEL-34's, not touched) - filed as ENAMEL-50. Deferred legal/architecture gaps filed as their own rows, not comments: ENAMEL-50 create-flow block, ENAMEL-51 HC-export(Ley 26.529) vs no-export scope boundary tension, ENAMEL-52 firma digital+consent+minors banding, ENAMEL-53 FHIR/SNOMED interop, ENAMEL-54 mental-health RBAC tier, ENAMEL-55 retention-floor enforcement. Verification: 21 new whitebox tests (279 total, tsc clean), mocked db, pin gate SQL + lifecycle column-set invariants. NOT exercised, and not claimed as such: requireDetalle trigger firing, gate filtering a real row, any live admin:enamel identity - pacientes is 0 rows fleet-wide with no reachable write path, so none of this has ever round-tripped live.
feature
2026-08-10 by wi-cli-venus
4w ago
2026-09-12 01:49