import type { NumericParameterDef, Visit } from './anamnesis-types'; /** Open on arrival: the blocks a clinician records at — or must recall at — * EVERY consultation. Visit details and anthropometrics are recorded each * time; an unanswered required question is this visit's to-do list; the * pathology list and the current therapy are the "what does this patient carry * / already take" memory aids, and proposing a supplement without seeing the * current medication is exactly the recall failure this surface prevents. * The questionnaire itself is read on the Summary tab, not here. */ export declare const EVERY_VISIT_BLOCKS: readonly ["visitMeta", "intakeGaps", "anthropometrics", "pathologies", "therapy", "proposal"]; /** Folded on arrival at a FOLLOW-UP: reference or occasional. Oncological * history is blank for most patients; bloods are drawn a few times a year; * fasting cycles and the annual programme are yearly. Each keeps a fill * summary in its header, so folding hides the detail and never the existence * of a record. A first visit opens all of them — see `compileBlockDensity`. */ export declare const OCCASIONAL_BLOCKS: readonly ["oncological", "labs", "fmd", "annual"]; export type EveryVisitBlockId = (typeof EVERY_VISIT_BLOCKS)[number]; export type OccasionalBlockId = (typeof OCCASIONAL_BLOCKS)[number]; /** One titled block of the compile form whose arrival state this module * decides. Adding an id to this union without listing it in one of the two * arrays above is a type error. It does NOT catch a `` rendered in the * JSX with no id at all — that block simply keeps the shell's own default. */ export type CompileBlockId = EveryVisitBlockId | OccasionalBlockId; export interface CompileBlockDensity { /** Open on arrival. */ open: boolean; /** How much this block already holds, for the header summary. `null` on the * always-open blocks, where a count beside visible content is noise. */ fill: number | null; /** Of that fill, how many values sit outside their reference range. Named in * the header so a folded block can never hide a flagged result. */ flagged: number; } /** How each compile block opens for the visit being recorded. * * A FIRST visit opens everything: there is no history to fold away, and an * empty block on a first consultation means "to be filled", not "nothing to * see". A follow-up folds the occasional blocks behind their fill summary. * * `labDefs` is the practice's live lab vocabulary — the same list the Blood * tests block renders. Pass it, or the lab fill and flag counts describe a * different set of values from the one the opened block shows. * * Safe on a record with no visit — everything falls back to the arrival * default with no fill. */ export declare function compileBlockDensity(visit: Visit | undefined, labDefs?: readonly NumericParameterDef[]): Record; //# sourceMappingURL=anamnesis-compile-blocks.d.ts.map