EduClaw K-12 Extensions
Sub-vertical of EduClaw SIS. Adds K-12 specific workflows: behavioral incident tracking with IDEA MDR compliance, student health records with FERPA-compliant access logging, the complete IDEA Part B pipeline (referral → IEP → services → progress), Section 504 plans, and end-of-year grade promotion with batch advancement.
Security Model
- Local-only: All data stored in
~/.openclaw/erpclaw/data.sqlite
- Fully offline: No external API calls, no telemetry, no cloud dependencies
- No credentials required: Uses erpclaw_lib shared library (installed by erpclaw)
- SQL injection safe: All queries use parameterized statements
- FERPA compliant: Health records, discipline records, and special education data access is logged
- IDEA compliance: IEP goals and services are immutable; changes require new IEP version
- Immutable records: Office visits, medication logs, immunizations, and promotion decisions cannot be modified after creation
Quick Start
# Create a discipline incident
python3 scripts/db_query.py --action add-discipline-incident \
--incident-date 2025-10-15 --incident-time 10:30 \
--location classroom --incident-type bullying \
--severity moderate --academic-year-id <year-id>
# Add a student health profile
python3 scripts/db_query.py --action add-health-profile \
--student-id <id> --allergies '[{"allergen":"peanuts","severity":"severe","epipen_location":"nurse office"}]'
# Create a SpEd referral
python3 scripts/db_query.py --action create-sped-referral \
--student-id <id> --referral-source teacher \
--referral-reason "Student struggling with reading fluency" \
--referral-date 2025-09-10
# Start end-of-year promotion review
python3 scripts/db_query.py --action create-promotion-review \
--student-id <id> --academic-year-id <year-id>
Tier 1: Most Used Actions
Discipline
| Action |
Description |
add-discipline-incident |
Create a new behavioral incident header |
add-discipline-student |
Add student involvement (offender/victim/witness/bystander) |
add-discipline-action |
Add consequence; auto-updates cumulative suspension days |
get-discipline-incident |
Get incident with all students and actions (FERPA logged) |
complete-discipline-incident |
Close incident; set reviewer and timestamp |
add-discipline-notification |
Create guardian notifications for involved students |
Health Records
| Action |
Description |
add-health-profile |
Create student health profile (one per student) |
get-health-profile |
Get student health profile (FERPA logged) |
get-emergency-health-info |
Quick emergency access: allergies, EpiPen, contacts |
add-office-visit |
Record nurse visit (immutable) |
record-medication-admin |
Log medication administration; decrements supply |
add-immunization |
Add immunization dose record (immutable) |
get-immunization-compliance |
Check compliance against grade-level requirements |
Special Education
| Action |
Description |
create-sped-referral |
Start IDEA referral (begins 60-day evaluation clock) |
add-iep |
Create IEP in draft status |
activate-iep |
Activate IEP with parent consent; prior IEP → superseded |
add-iep-goal |
Add measurable annual goal (immutable) |
add-iep-service |
Add mandated service to IEP (immutable) |
record-iep-service-session |
Log service delivery; increments total_minutes_delivered |
get-active-iep |
Get student's active IEP with goals, services, team |
get-active-504-plan |
Get active Section 504 plan (FERPA logged) |
Grade Promotion
| Action |
Description |
create-promotion-review |
Create end-of-year review; auto-populates discipline count |
submit-promotion-decision |
Record final immutable decision (promote/retain/conditional) |
apply-grade-promotion |
Advance all promoted students; graduates 12th graders |
list-at-risk-students |
Flag students below GPA/attendance thresholds |
Tier 2: Supporting Actions
Discipline
| Action |
Key Args |
update-discipline-incident |
--incident-id, updatable fields |
list-discipline-incidents |
--academic-year-id, --severity, --incident-status, --student-id |
get-discipline-history |
--student-id — full history across all years |
get-cumulative-suspension-days |
--student-id, --academic-year-id — MDR threshold check |
add-manifestation-review |
--discipline-student-id, --iep-id, --mdr-date |
update-manifestation-review |
--mdr-id, --determination, --outcome-action |
add-pbis-recognition |
--student-id, --incident-date, --description |
Health Records
| Action |
Key Args |
update-health-profile |
--student-id, updatable fields |
submit-health-profile-verification |
--student-id, --last-verified-by |
list-office-visits |
--student-id, --date-from, --date-to, --disposition |
get-office-visit |
--visit-id |
add-student-medication |
--student-id, --medication-name, --route, --frequency |
update-student-medication |
--medication-id, --medication-status, --supply-count |
list-student-medications |
--student-id, --medication-status |
list-medication-logs |
--student-id or --student-medication-id |
add-immunization-waiver |
--student-id, --vaccine-name, --waiver-type |
update-immunization-waiver |
--waiver-id, --waiver-status |
get-immunization-record |
--student-id — all doses + waivers |
list-health-alerts |
School-wide: severe allergies, expiring waivers, low supply |
Special Education
| Action |
Key Args |
update-sped-referral |
--referral-id, --referral-status, --consent-received-date |
get-sped-referral |
--referral-id — includes evaluations |
list-sped-referrals |
--referral-status, --approaching-deadline |
add-sped-evaluation |
--referral-id, --evaluation-type, --evaluation-date |
list-sped-evaluations |
--referral-id |
record-sped-eligibility |
--referral-id, --is-eligible, --primary-disability |
get-sped-eligibility |
--student-id or --eligibility-id |
update-iep |
--iep-id, draft fields only |
add-iep-amendment |
--iep-id (prior active IEP) — creates amendment |
get-iep |
--iep-id — includes goals, services, team |
list-iep-deadlines |
--days-window (default: 30) |
list-reevaluation-due |
--days-window (default: 90) |
list-iep-goals |
--iep-id |
list-iep-services |
--iep-id |
list-iep-service-logs |
--iep-service-id |
add-iep-team-member |
--iep-id, --member-type, --member-name |
record-iep-progress |
--iep-goal-id, --progress-rating, --reporting-period |
add-504-plan |
--student-id, --meeting-date, --accommodations (JSON) |
update-504-plan |
--plan-504-id, --plan-status, --accommodations |
Grade Promotion
| Action |
Key Args |
update-promotion-review |
--review-id, --teacher-recommendation, --counselor-recommendation |
list-promotion-reviews |
--academic-year-id, --grade-level, --review-status |
get-promotion-decision |
--decision-id or --student-id + --academic-year-id |
add-promotion-notification |
--decision-id — creates guardian notifications |
create-intervention-plan |
--student-id, --trigger, --intervention-types |
update-intervention-plan |
--intervention-plan-id, --plan-status, --outcome-notes |
list-intervention-plans |
--academic-year-id, --plan-status, --student-id |
Tier 3: Reports and Advanced Workflows
| Action |
Description |
generate-discipline-report |
School-wide analytics: by type, severity, location, PBIS ratio |
generate-discipline-state-report |
State-format: ISS/OSS/expulsion by grade/disability; MDR count |
generate-immunization-report |
Compliance by grade level; state Annual Immunization Status Report |
get-service-compliance-report |
Planned vs. actual IEP service minutes; gap detection |
generate-iep-progress-report |
Parent-facing: all goals with progress ratings and notes |
generate-promotion-report |
Summary by grade: promote/retain/conditional; intervention coverage |
Key Workflows
1. Discipline Incident → MDR (IDEA Students)
add-discipline-incident (header)
→ add-discipline-student (role + is-idea-eligible)
→ add-discipline-action (suspension → auto-calculates cumulative days)
└─ If IDEA-eligible + ≥10 days: mdr_alert in response
→ add-discipline-notification
→ complete-discipline-incident
→ [If MDR needed] add-manifestation-review → update-manifestation-review
2. Health Records Enrollment
add-health-profile (allergies, conditions, physician)
→ add-immunization (one per dose per vaccine)
→ get-immunization-compliance (returns missing vaccines)
→ add-immunization-waiver (if exemption)
→ add-student-medication (for each school-administered medication)
→ submit-health-profile-verification (nurse sign-off → status: active)
3. IDEA Full Pipeline
create-sped-referral
→ update-sped-referral (consent_request_date → consent_pending)
→ update-sped-referral (consent_received_date → auto-calc 60-day deadline)
→ add-sped-evaluation (psychological, academic, speech, OT, etc.)
→ record-sped-eligibility (is_eligible=1 → auto-calc IEP deadline +30 days)
→ add-iep (draft)
→ add-iep-goal (one per area)
→ add-iep-service (one per mandated service)
→ add-iep-team-member (parent, teachers, admin, specialists)
→ activate-iep (parent consent → prior IEP superseded)
→ [Ongoing] record-iep-service-session (each delivery session)
→ [Each period] record-iep-progress (per goal)
→ [Annual] list-iep-deadlines → add-iep (new version) → activate-iep
4. Grade Promotion End-of-Year
list-at-risk-students (configurable GPA/attendance thresholds)
→ create-promotion-review (auto-populates discipline count from DB)
→ create-intervention-plan (for at-risk students)
→ update-promotion-review (teacher recommendation + rationale)
→ update-promotion-review (counselor recommendation + notes)
→ submit-promotion-decision (final immutable decision)
→ add-promotion-notification (creates guardian notifications)
→ apply-grade-promotion (idempotent; advances grade; graduates 12th)
→ generate-promotion-report (summary for administration)
FERPA / Privacy Notes
- Health records (
get-health-profile, list-office-visits, get-office-visit, get-immunization-record, get-emergency-health-info) are logged to educlaw_data_access_log with data_category='health'.
- Discipline reads (
get-discipline-incident, get-discipline-history) are logged with data_category='discipline'.
- Special education reads (
get-sped-referral, get-active-iep, get-iep, record-sped-eligibility, get-active-504-plan, generate-iep-progress-report) are logged with data_category='special_education'.
- Emergency health access uses
is_emergency_access=1 in the FERPA log.
The special_education data category is used for FERPA access logging of IEP and 504 plan records.
Business Invariants
| Domain |
Invariant |
| Discipline |
Closed incidents cannot be re-opened |
| Discipline |
cumulative_suspension_days_ytd = sum of ISS+OSS for student in academic year |
| Discipline |
MDR required before expulsion for IDEA-eligible students (≥10 days) |
| Health |
One health profile per student (UNIQUE(student_id)) |
| Health |
Visits, medication logs, and immunizations are immutable |
| Health |
Medical waivers require --issuing-physician |
| SpEd |
At most one iep_status='active' IEP per student at a time |
| SpEd |
IEP goals and services are immutable; changes require new IEP version |
| SpEd |
evaluation_deadline = consent_received_date + 60 days |
| SpEd |
iep_deadline = eligibility_meeting_date + 30 days |
| SpEd |
transition_plan_required=1 for students ≥16 at IEP start date |
| Promotion |
One review per student per academic year |
| Promotion |
submit-promotion-decision creates immutable record |
| Promotion |
apply-grade-promotion is idempotent |
Database
All tables use the shared SQLite database at ~/.openclaw/erpclaw/data.sqlite.
Run python3 init_db.py to create the 23 K-12 tables (requires erpclaw and educlaw parent tables to exist first).
New Tables (23)
| Domain |
Tables |
| discipline |
educlaw_k12_discipline_incident, educlaw_k12_discipline_student, educlaw_k12_discipline_action, educlaw_k12_manifestation_review |
| health_records |
educlaw_k12_health_profile, educlaw_k12_health_visit, educlaw_k12_student_medication, educlaw_k12_medication_log, educlaw_k12_immunization, educlaw_k12_immunization_waiver |
| special_education |
educlaw_k12_sped_referral, educlaw_k12_sped_evaluation, educlaw_k12_sped_eligibility, educlaw_k12_iep, educlaw_k12_iep_goal, educlaw_k12_iep_service, educlaw_k12_iep_service_log, educlaw_k12_iep_team_member, educlaw_k12_iep_progress, educlaw_k12_504_plan |
| grade_promotion |
educlaw_k12_promotion_review, educlaw_k12_promotion_decision, educlaw_k12_intervention_plan |
1---2name: educlaw-k123description: EduClaw K-12 Extensions — discipline management, student health records, special education (IDEA/IEP/504), and grade promotion workflows.4---56# EduClaw K-12 Extensions78Sub-vertical of EduClaw SIS. Adds K-12 specific workflows: behavioral incident tracking with IDEA MDR compliance, student health records with FERPA-compliant access logging, the complete IDEA Part B pipeline (referral → IEP → services → progress), Section 504 plans, and end-of-year grade promotion with batch advancement.910## Security Model1112- **Local-only**: All data stored in `~/.openclaw/erpclaw/data.sqlite`13- **Fully offline**: No external API calls, no telemetry, no cloud dependencies14- **No credentials required**: Uses erpclaw_lib shared library (installed by erpclaw)15- **SQL injection safe**: All queries use parameterized statements16- **FERPA compliant**: Health records, discipline records, and special education data access is logged17- **IDEA compliance**: IEP goals and services are immutable; changes require new IEP version18- **Immutable records**: Office visits, medication logs, immunizations, and promotion decisions cannot be modified after creation1920## Quick Start2122```bash23# Create a discipline incident24python3 scripts/db_query.py --action add-discipline-incident \25 --incident-date 2025-10-15 --incident-time 10:30 \26 --location classroom --incident-type bullying \27 --severity moderate --academic-year-id <year-id>2829# Add a student health profile30python3 scripts/db_query.py --action add-health-profile \31 --student-id <id> --allergies '[{"allergen":"peanuts","severity":"severe","epipen_location":"nurse office"}]'3233# Create a SpEd referral34python3 scripts/db_query.py --action create-sped-referral \35 --student-id <id> --referral-source teacher \36 --referral-reason "Student struggling with reading fluency" \37 --referral-date 2025-09-103839# Start end-of-year promotion review40python3 scripts/db_query.py --action create-promotion-review \41 --student-id <id> --academic-year-id <year-id>42```4344---4546## Tier 1: Most Used Actions4748### Discipline4950| Action | Description |51|--------|-------------|52| `add-discipline-incident` | Create a new behavioral incident header |53| `add-discipline-student` | Add student involvement (offender/victim/witness/bystander) |54| `add-discipline-action` | Add consequence; auto-updates cumulative suspension days |55| `get-discipline-incident` | Get incident with all students and actions (FERPA logged) |56| `complete-discipline-incident` | Close incident; set reviewer and timestamp |57| `add-discipline-notification` | Create guardian notifications for involved students |5859### Health Records6061| Action | Description |62|--------|-------------|63| `add-health-profile` | Create student health profile (one per student) |64| `get-health-profile` | Get student health profile (FERPA logged) |65| `get-emergency-health-info` | Quick emergency access: allergies, EpiPen, contacts |66| `add-office-visit` | Record nurse visit (immutable) |67| `record-medication-admin` | Log medication administration; decrements supply |68| `add-immunization` | Add immunization dose record (immutable) |69| `get-immunization-compliance` | Check compliance against grade-level requirements |7071### Special Education7273| Action | Description |74|--------|-------------|75| `create-sped-referral` | Start IDEA referral (begins 60-day evaluation clock) |76| `add-iep` | Create IEP in draft status |77| `activate-iep` | Activate IEP with parent consent; prior IEP → superseded |78| `add-iep-goal` | Add measurable annual goal (immutable) |79| `add-iep-service` | Add mandated service to IEP (immutable) |80| `record-iep-service-session` | Log service delivery; increments total_minutes_delivered |81| `get-active-iep` | Get student's active IEP with goals, services, team |82| `get-active-504-plan` | Get active Section 504 plan (FERPA logged) |8384### Grade Promotion8586| Action | Description |87|--------|-------------|88| `create-promotion-review` | Create end-of-year review; auto-populates discipline count |89| `submit-promotion-decision` | Record final immutable decision (promote/retain/conditional) |90| `apply-grade-promotion` | Advance all promoted students; graduates 12th graders |91| `list-at-risk-students` | Flag students below GPA/attendance thresholds |9293---9495## Tier 2: Supporting Actions9697### Discipline9899| Action | Key Args |100|--------|----------|101| `update-discipline-incident` | `--incident-id`, updatable fields |102| `list-discipline-incidents` | `--academic-year-id`, `--severity`, `--incident-status`, `--student-id` |103| `get-discipline-history` | `--student-id` — full history across all years |104| `get-cumulative-suspension-days` | `--student-id`, `--academic-year-id` — MDR threshold check |105| `add-manifestation-review` | `--discipline-student-id`, `--iep-id`, `--mdr-date` |106| `update-manifestation-review` | `--mdr-id`, `--determination`, `--outcome-action` |107| `add-pbis-recognition` | `--student-id`, `--incident-date`, `--description` |108109### Health Records110111| Action | Key Args |112|--------|----------|113| `update-health-profile` | `--student-id`, updatable fields |114| `submit-health-profile-verification` | `--student-id`, `--last-verified-by` |115| `list-office-visits` | `--student-id`, `--date-from`, `--date-to`, `--disposition` |116| `get-office-visit` | `--visit-id` |117| `add-student-medication` | `--student-id`, `--medication-name`, `--route`, `--frequency` |118| `update-student-medication` | `--medication-id`, `--medication-status`, `--supply-count` |119| `list-student-medications` | `--student-id`, `--medication-status` |120| `list-medication-logs` | `--student-id` or `--student-medication-id` |121| `add-immunization-waiver` | `--student-id`, `--vaccine-name`, `--waiver-type` |122| `update-immunization-waiver` | `--waiver-id`, `--waiver-status` |123| `get-immunization-record` | `--student-id` — all doses + waivers |124| `list-health-alerts` | School-wide: severe allergies, expiring waivers, low supply |125126### Special Education127128| Action | Key Args |129|--------|----------|130| `update-sped-referral` | `--referral-id`, `--referral-status`, `--consent-received-date` |131| `get-sped-referral` | `--referral-id` — includes evaluations |132| `list-sped-referrals` | `--referral-status`, `--approaching-deadline` |133| `add-sped-evaluation` | `--referral-id`, `--evaluation-type`, `--evaluation-date` |134| `list-sped-evaluations` | `--referral-id` |135| `record-sped-eligibility` | `--referral-id`, `--is-eligible`, `--primary-disability` |136| `get-sped-eligibility` | `--student-id` or `--eligibility-id` |137| `update-iep` | `--iep-id`, draft fields only |138| `add-iep-amendment` | `--iep-id` (prior active IEP) — creates amendment |139| `get-iep` | `--iep-id` — includes goals, services, team |140| `list-iep-deadlines` | `--days-window` (default: 30) |141| `list-reevaluation-due` | `--days-window` (default: 90) |142| `list-iep-goals` | `--iep-id` |143| `list-iep-services` | `--iep-id` |144| `list-iep-service-logs` | `--iep-service-id` |145| `add-iep-team-member` | `--iep-id`, `--member-type`, `--member-name` |146| `record-iep-progress` | `--iep-goal-id`, `--progress-rating`, `--reporting-period` |147| `add-504-plan` | `--student-id`, `--meeting-date`, `--accommodations` (JSON) |148| `update-504-plan` | `--plan-504-id`, `--plan-status`, `--accommodations` |149150### Grade Promotion151152| Action | Key Args |153|--------|----------|154| `update-promotion-review` | `--review-id`, `--teacher-recommendation`, `--counselor-recommendation` |155| `list-promotion-reviews` | `--academic-year-id`, `--grade-level`, `--review-status` |156| `get-promotion-decision` | `--decision-id` or `--student-id` + `--academic-year-id` |157| `add-promotion-notification` | `--decision-id` — creates guardian notifications |158| `create-intervention-plan` | `--student-id`, `--trigger`, `--intervention-types` |159| `update-intervention-plan` | `--intervention-plan-id`, `--plan-status`, `--outcome-notes` |160| `list-intervention-plans` | `--academic-year-id`, `--plan-status`, `--student-id` |161162---163164## Tier 3: Reports and Advanced Workflows165166| Action | Description |167|--------|-------------|168| `generate-discipline-report` | School-wide analytics: by type, severity, location, PBIS ratio |169| `generate-discipline-state-report` | State-format: ISS/OSS/expulsion by grade/disability; MDR count |170| `generate-immunization-report` | Compliance by grade level; state Annual Immunization Status Report |171| `get-service-compliance-report` | Planned vs. actual IEP service minutes; gap detection |172| `generate-iep-progress-report` | Parent-facing: all goals with progress ratings and notes |173| `generate-promotion-report` | Summary by grade: promote/retain/conditional; intervention coverage |174175---176177## Key Workflows178179### 1. Discipline Incident → MDR (IDEA Students)180181```182add-discipline-incident (header)183→ add-discipline-student (role + is-idea-eligible)184→ add-discipline-action (suspension → auto-calculates cumulative days)185 └─ If IDEA-eligible + ≥10 days: mdr_alert in response186→ add-discipline-notification187→ complete-discipline-incident188→ [If MDR needed] add-manifestation-review → update-manifestation-review189```190191### 2. Health Records Enrollment192193```194add-health-profile (allergies, conditions, physician)195→ add-immunization (one per dose per vaccine)196→ get-immunization-compliance (returns missing vaccines)197→ add-immunization-waiver (if exemption)198→ add-student-medication (for each school-administered medication)199→ submit-health-profile-verification (nurse sign-off → status: active)200```201202### 3. IDEA Full Pipeline203204```205create-sped-referral206→ update-sped-referral (consent_request_date → consent_pending)207→ update-sped-referral (consent_received_date → auto-calc 60-day deadline)208→ add-sped-evaluation (psychological, academic, speech, OT, etc.)209→ record-sped-eligibility (is_eligible=1 → auto-calc IEP deadline +30 days)210→ add-iep (draft)211→ add-iep-goal (one per area)212→ add-iep-service (one per mandated service)213→ add-iep-team-member (parent, teachers, admin, specialists)214→ activate-iep (parent consent → prior IEP superseded)215→ [Ongoing] record-iep-service-session (each delivery session)216→ [Each period] record-iep-progress (per goal)217→ [Annual] list-iep-deadlines → add-iep (new version) → activate-iep218```219220### 4. Grade Promotion End-of-Year221222```223list-at-risk-students (configurable GPA/attendance thresholds)224→ create-promotion-review (auto-populates discipline count from DB)225→ create-intervention-plan (for at-risk students)226→ update-promotion-review (teacher recommendation + rationale)227→ update-promotion-review (counselor recommendation + notes)228→ submit-promotion-decision (final immutable decision)229→ add-promotion-notification (creates guardian notifications)230→ apply-grade-promotion (idempotent; advances grade; graduates 12th)231→ generate-promotion-report (summary for administration)232```233234---235236## FERPA / Privacy Notes237238- **Health records** (`get-health-profile`, `list-office-visits`, `get-office-visit`, `get-immunization-record`, `get-emergency-health-info`) are logged to `educlaw_data_access_log` with `data_category='health'`.239- **Discipline reads** (`get-discipline-incident`, `get-discipline-history`) are logged with `data_category='discipline'`.240- **Special education reads** (`get-sped-referral`, `get-active-iep`, `get-iep`, `record-sped-eligibility`, `get-active-504-plan`, `generate-iep-progress-report`) are logged with `data_category='special_education'`.241- Emergency health access uses `is_emergency_access=1` in the FERPA log.242243The `special_education` data category is used for FERPA access logging of IEP and 504 plan records.244245---246247## Business Invariants248249| Domain | Invariant |250|--------|-----------|251| Discipline | Closed incidents cannot be re-opened |252| Discipline | `cumulative_suspension_days_ytd` = sum of ISS+OSS for student in academic year |253| Discipline | MDR required before expulsion for IDEA-eligible students (≥10 days) |254| Health | One health profile per student (`UNIQUE(student_id)`) |255| Health | Visits, medication logs, and immunizations are immutable |256| Health | Medical waivers require `--issuing-physician` |257| SpEd | At most one `iep_status='active'` IEP per student at a time |258| SpEd | IEP goals and services are immutable; changes require new IEP version |259| SpEd | `evaluation_deadline = consent_received_date + 60 days` |260| SpEd | `iep_deadline = eligibility_meeting_date + 30 days` |261| SpEd | `transition_plan_required=1` for students ≥16 at IEP start date |262| Promotion | One review per student per academic year |263| Promotion | `submit-promotion-decision` creates immutable record |264| Promotion | `apply-grade-promotion` is idempotent |265266---267268## Database269270All tables use the shared SQLite database at `~/.openclaw/erpclaw/data.sqlite`.271272Run `python3 init_db.py` to create the 23 K-12 tables (requires erpclaw and educlaw parent tables to exist first).273274### New Tables (23)275276| Domain | Tables |277|--------|--------|278| discipline | `educlaw_k12_discipline_incident`, `educlaw_k12_discipline_student`, `educlaw_k12_discipline_action`, `educlaw_k12_manifestation_review` |279| health_records | `educlaw_k12_health_profile`, `educlaw_k12_health_visit`, `educlaw_k12_student_medication`, `educlaw_k12_medication_log`, `educlaw_k12_immunization`, `educlaw_k12_immunization_waiver` |280| special_education | `educlaw_k12_sped_referral`, `educlaw_k12_sped_evaluation`, `educlaw_k12_sped_eligibility`, `educlaw_k12_iep`, `educlaw_k12_iep_goal`, `educlaw_k12_iep_service`, `educlaw_k12_iep_service_log`, `educlaw_k12_iep_team_member`, `educlaw_k12_iep_progress`, `educlaw_k12_504_plan` |281| grade_promotion | `educlaw_k12_promotion_review`, `educlaw_k12_promotion_decision`, `educlaw_k12_intervention_plan` |