Cedar Ridge Intake Verification
When to use this skill
A task asks you to use the Cedar Ridge Intake Coordination Portal (reachable over the
network) to verify, audit, review, or activate a roster, referral batch, transfer
batch, or program, and to return a single JSON object that follows a provided
answer_template.json. The portal holds the intake data: patients, referrals, transfers,
documents, charts, ICD metadata, pharmacies, program candidates, and facility capacity.
If the task does not name the Cedar Ridge portal, or does not supply an answer_template.json,
this skill does not apply.
The one rule
answer_template.json is the single source of truth for the output shape, required keys,
allowed enum values, and list ordering.
- Emit only values that appear in the template's
allowed_values / allowed lists.
- Never invent codes, statuses, or fields.
- Never carry values over from memory or from any other task — derive every value from the
live portal data for the current task's scope.
- The template defines the vocabulary; the portal provides the facts; your job is to map one
onto the other.
Network access
Reach the environment only through the endpoints listed in environment_access.md
(the base URL is given there). Do not call /health or any reset/reseed endpoint. No
authentication is required.
A read-only SQL endpoint is available: POST /query with a JSON body {"sql": "..."} returns
{columns, row_count, rows, truncated}. Use it for joins, grouping, and counts across tables
when the per-record endpoints would be slower or lossy.
For the full endpoint → response-shape → field map, see
references/portal_endpoints.md.
Workflow
Parse the prompt. Identify the target scope identifier — a roster_id, batch_id, or
program_code — and which records it implies. Note every output section the office asks for
(e.g. per-patient results, referral reviews, discrepancy lists, duplicate groups, blocker
sets, action plans, correspondence queue, cohort summary).
Read the template. From answer_template.json extract, for every level:
- required top-level keys (and the order they are listed);
- per-item required keys;
- every
allowed_values / allowed enum (these are the only values you may emit);
- every list
ordering rule (ascending by id, unordered set, urgency-then-status,
highest-priority-first, alphabetical, etc.);
- the summary count-key buckets (
count_keys, required_keys, integer_keys).
These define exactly what to compute and how to order it.
Gather portal data for the scope. Pull the relevant collection, filter to the target
identifier, then fetch per-record detail. Pull supporting metadata for every record in scope:
/icd/{code}, /documents, /chart/{patient_id}, /pharmacies, and (for transfers) the
capacity rows. Use POST /query when you need to join or count across tables. Do not pull
records outside the scope — distractor records exist in every collection.
Reconcile each record against the template's vocabularies using the reusable primitives
in references/reconciliation_rules.md. Assign only
codes/statuses that exist in the template. The rule families are:
- clinical-code discrepancy (ICD chapter / service-family / narrative / laterality);
- duplicate referrals and shared-insurance anomalies;
- missing records / imaging and authorization blockers;
- already-scheduled appointments;
- transfer packet completeness and document freshness;
- chair-capacity feasibility for a requested start date;
- coverage / PBM / pharmacy / lifestyle risk for access verification;
- program eligibility, enrollment disposition, and monitoring package selection;
- chart-activation gaps for ready referrals.
Assemble the JSON object section by section, in the order the template lists the
top-level keys. Order every list exactly as the template specifies; treat every
code/reason array as an unordered set.
Compute the cohort / batch summary by re-deriving integer counts from the per-record
list you just built — do not count by eye. Include every bucket the template lists under
required_keys / count_keys, even when the count is 0.
Validate against references/output_discipline.md
before returning.
Return JSON only. A single object — no prose, no markdown fences, no trailing commentary.
Scope is everything
Every collection in the portal contains records that belong to other batches, rosters, or
programs (and explicit distractors). Always filter to the target identifier first. A common
failure mode is reconciling records that are not in scope and letting them pollute the summary
counts. After you build the per-record list, confirm its length matches the scope (e.g. the
roster's patient count, the batch's referral count, the program's candidate count) before
computing the summary.
Supporting references
references/portal_endpoints.md — every documented endpoint,
its response shape, and the fields that drive each reconciliation.
references/reconciliation_rules.md — generic, reusable
detection rules for the issue / code classes the templates use.
references/output_discipline.md — ordering, enum, count,
and JSON-only rules, plus a pre-return checklist.
1---2name: cedar-ridge-intake-verification3description: Complete a Cedar Ridge Intake Coordination Portal intake/audit task. Query the live portal for a roster, batch, or program; reconcile the records against the task's answer_template.json; and return one JSON object built only from the template's controlled values. Use when a task points at the Cedar Ridge portal and supplies an answer_template.json.4---56# Cedar Ridge Intake Verification78## When to use this skill910A task asks you to use the **Cedar Ridge Intake Coordination Portal** (reachable over the11network) to verify, audit, review, or activate a **roster**, **referral batch**, **transfer12batch**, or **program**, and to return **a single JSON object** that follows a provided13`answer_template.json`. The portal holds the intake data: patients, referrals, transfers,14documents, charts, ICD metadata, pharmacies, program candidates, and facility capacity.1516If the task does not name the Cedar Ridge portal, or does not supply an `answer_template.json`,17this skill does not apply.1819## The one rule2021`answer_template.json` is the **single source of truth** for the output shape, required keys,22allowed enum values, and list ordering.2324- Emit only values that appear in the template's `allowed_values` / `allowed` lists.25- Never invent codes, statuses, or fields.26- Never carry values over from memory or from any other task — **derive every value from the27 live portal data for the current task's scope**.28- The template defines the vocabulary; the portal provides the facts; your job is to map one29 onto the other.3031## Network access3233Reach the environment **only** through the endpoints listed in `environment_access.md`34(the base URL is given there). Do not call `/health` or any reset/reseed endpoint. No35authentication is required.3637A read-only SQL endpoint is available: `POST /query` with a JSON body `{"sql": "..."}` returns38`{columns, row_count, rows, truncated}`. Use it for joins, grouping, and counts across tables39when the per-record endpoints would be slower or lossy.4041For the full endpoint → response-shape → field map, see42[`references/portal_endpoints.md`](references/portal_endpoints.md).4344## Workflow45461. **Parse the prompt.** Identify the target scope identifier — a `roster_id`, `batch_id`, or47 `program_code` — and which records it implies. Note every output section the office asks for48 (e.g. per-patient results, referral reviews, discrepancy lists, duplicate groups, blocker49 sets, action plans, correspondence queue, cohort summary).50512. **Read the template.** From `answer_template.json` extract, for every level:52 - required top-level keys (and the order they are listed);53 - per-item required keys;54 - every `allowed_values` / `allowed` enum (these are the only values you may emit);55 - every list `ordering` rule (ascending by id, unordered set, urgency-then-status,56 highest-priority-first, alphabetical, etc.);57 - the summary count-key buckets (`count_keys`, `required_keys`, `integer_keys`).58 These define exactly what to compute and how to order it.59603. **Gather portal data for the scope.** Pull the relevant collection, filter to the target61 identifier, then fetch per-record detail. Pull supporting metadata for every record in scope:62 `/icd/{code}`, `/documents`, `/chart/{patient_id}`, `/pharmacies`, and (for transfers) the63 capacity rows. Use `POST /query` when you need to join or count across tables. Do not pull64 records outside the scope — distractor records exist in every collection.65664. **Reconcile each record** against the template's vocabularies using the reusable primitives67 in [`references/reconciliation_rules.md`](references/reconciliation_rules.md). Assign only68 codes/statuses that exist in the template. The rule families are:69 - clinical-code discrepancy (ICD chapter / service-family / narrative / laterality);70 - duplicate referrals and shared-insurance anomalies;71 - missing records / imaging and authorization blockers;72 - already-scheduled appointments;73 - transfer packet completeness and document freshness;74 - chair-capacity feasibility for a requested start date;75 - coverage / PBM / pharmacy / lifestyle risk for access verification;76 - program eligibility, enrollment disposition, and monitoring package selection;77 - chart-activation gaps for ready referrals.78795. **Assemble the JSON object** section by section, in the order the template lists the80 top-level keys. Order every list exactly as the template specifies; treat every81 code/reason array as an **unordered set**.82836. **Compute the cohort / batch summary** by re-deriving integer counts from the per-record84 list you just built — do not count by eye. Include every bucket the template lists under85 `required_keys` / `count_keys`, **even when the count is 0**.86877. **Validate** against [`references/output_discipline.md`](references/output_discipline.md)88 before returning.89908. **Return JSON only.** A single object — no prose, no markdown fences, no trailing commentary.9192## Scope is everything9394Every collection in the portal contains records that belong to **other** batches, rosters, or95programs (and explicit distractors). Always filter to the target identifier first. A common96failure mode is reconciling records that are not in scope and letting them pollute the summary97counts. After you build the per-record list, confirm its length matches the scope (e.g. the98roster's patient count, the batch's referral count, the program's candidate count) before99computing the summary.100101## Supporting references102103- [`references/portal_endpoints.md`](references/portal_endpoints.md) — every documented endpoint,104 its response shape, and the fields that drive each reconciliation.105- [`references/reconciliation_rules.md`](references/reconciliation_rules.md) — generic, reusable106 detection rules for the issue / code classes the templates use.107- [`references/output_discipline.md`](references/output_discipline.md) — ordering, enum, count,108 and JSON-only rules, plus a pre-return checklist.