Kennel counts on two independent axes. `clean`, `dirty`, `storage`, `doNotUse` and `occupied` are mutually exclusive: they partition the ward, and only they sum to `total`. `reserved` overlaps all of them. A kennel can be reserved and occupied, or reserved and dirty, at the same time. Do not add it to the others.
query { # Use this type in your queries someQuery { clean dirty doNotUse occupied reserved }}Unoccupied and clean. Includes kennels that are also reserved.
Unoccupied and awaiting cleaning. Includes kennels that are also reserved.
Unoccupied and withdrawn from use. Includes kennels that are also reserved.
Kennels holding at least one patient. Never also counted as dirty or clean.
Kennels with an upcoming booking. An OVERLAPPING count, not a bucket: a reserved kennel is also counted under `occupied` or under its physical status. It is not a summand of `unoccupied` or of `total`. Compare `CensusKennel.assignmentStatus`, which reports `RESERVED` only when nobody is physically in the kennel.
Unoccupied and in use for storage. Includes kennels that are also reserved.
`unoccupied + occupied`. Excludes `reserved`.
`clean + dirty + storage + doNotUse`. Excludes `reserved`.