School Reference Public

Data Privacy & Safeguarding

How ERPat School protects children’s data: the RA 10173 verified-link gate for portal access, released-only grade visibility, segregated and audited health and child-protection (RA 7610/RA 10627) domains, and the full audit trail of sensitive actions.

Guide version: r1 Module version: 0.2.0 Updated: 2026-07-22 Estimated time: 7 min 1 views
ADMINISTER & COMPLY

Data Privacy & Safeguarding

A school holds some of the most sensitive personal data an organisation can hold — about children. The School module is built so that privacy and child-safety are enforced in code, not left to good intentions: parents only see children they are proven to be responsible for, grades only become visible when a school head decides to release them, and the health and child-protection domains are walled off behind restricted permits with every read written to an audit trail. This page explains the mechanisms and the laws behind them.

????️
Confidentiality is not optional here. Learner health records and child-protection / safeguarding cases concern a child's welfare and may involve abuse or bullying. They are restricted to a named few, segregated from ordinary lists, and every read is logged. Treat what you can see as strictly need-to-know. If you are unsure whether you should be looking at something, you probably shouldn't be.

The two gates that protect the whole system

Two invariants sit under every parent- and student-facing feature. They are simple to state and impossible to bypass from the outside.

Gate 1 — Verified link → access

A parent can only ever see a child whose guardian link has been verified. A new guardian-to-learner link starts unverified and shows nothing on the portal until a staff member with school_guardians_update verifies it. Verification is itself audited.

Gate 2 — Released → visibility

Grades and report cards are invisible to parents and students until a school head releases them. Draft, submitted, and approved grades never leak; only released quarterly grades reach report cards and the portals. Releasing is audited and locks the grades.

Link created
Unverified — invisible to the parent
Link verified
RA 10173 gate opens — parent may see this child
⚠️
Both gates must be open for a parent to see a grade. The link must be verified and the grade must be released. That is why "a parent can't see their child" almost always means one of the two gates is still closed — see the FAQ. Verifying a link is a serious act: only do it once you are confident the guardian is genuinely responsible for that learner.

Segregated, audited sensitive domains

Two categories of data are treated as more sensitive than the rest of the module and are deliberately separated from everyday screens: learner health and child-protection / safeguarding. Each has its own restricted permission, and — because reading them is itself a privacy-relevant event — every read is recorded.

Learner health / medical

Permission
school_health — a restricted "view" permit, typically held only by the clinic or school nurse.
Audit
Viewing a learner health record writes a view_health log at critical severity — so there is always a record of who looked, and when.
Principle
Health information is need-to-know; it is not part of the general learner list that registrars or teachers work with.

Child protection / safeguarding

Permission
school_child_protection (plus _create / _update) — a restricted permit for safeguarding officers only.
Separate surface
Safeguarding cases live at school/safeguarding, a confidential sibling of Student Support. Confidential cases never appear on the ordinary Support list, and their notes are restricted.
Guarded entry point
The ordinary Support page shows a link into Safeguarding only to holders of school_child_protection — everyone else never even sees the door.
Audit
Every safeguarding case read writes a view_safeguarding log at critical severity. Opening a case is a logged, accountable action.
Legal basis
RA 7610 (child protection) and RA 10627 (anti-bullying) — see the Guidance & Clinic Playbook.
????
Assume you are on the record. Because view_health and view_safeguarding are logged on every read, opening one of these cases is never anonymous. That is a feature: it protects the child, and it protects you by proving that access was legitimate. Only open what you have a genuine reason to open.

Portal isolation (IDOR-proof by design)

The most common way portals leak data in other systems is insecure direct object reference — accepting a record id from the URL and trusting it. The School portals do the opposite: they never take a learner id from input on a scoped read.

  • Parent portal — the set of children is derived strictly from the session user through the verified guardian-link tables. There is no "child id" parameter to tamper with, so a parent can never request another family's records.
  • Student portal — the learner is resolved solely from the signed-in customer account (school_learners.user_id). If the account isn't linked to a learner, a friendly "no record" page shows — never someone else's data.
  • Existence is hidden — when a portal is disabled or the module is off, the page returns a 404 rather than a "forbidden", so nobody can even confirm the feature exists.
  • Released-only — both portals fetch grades filtered to released status and to the current school year, so unreleased work is never exposed even to the rightful owner.
????
The upshot for administrators: you cannot accidentally over-share through the portals. Whatever a parent or student sees is a direct, unforgeable consequence of a verified link and a released grade. Manage those two things and the portal takes care of itself. Provisioning and toggles are covered in Administration, Settings & Portals.

The audit trail

The School module writes a dedicated activity log for every action that carries privacy or governance weight (ordinary create/edit/delete is captured by the base activity log). These entries are the RA 10173 evidence trail — they answer "who did this sensitive thing, and when?" Review them regularly.

ActionComponentSeverityWhat it records
verify_guardianschool_guardianscriticalA guardian-to-learner link was verified (opens Gate 1 for a parent).
release_gradesschool_gradescriticalGrades / report cards were released to the portals (opens Gate 2, and locks the grades).
view_healthschool_learnerscriticalA learner health record was viewed.
view_safeguardingschool_supportcriticalA child-protection / safeguarding case was viewed.
approve_enrollmentschool_enrollmentinfoAn enrollment application was approved (roster placement created).
reject_enrollmentschool_enrollmentwarningAn enrollment application was rejected.
scan_visitorschool_visitorsinfoA visitor pass was scanned at the gate.
exportschool_reportsinfoA school report / compliance export was generated.
update_settingsschool_settingsinfoSchool settings were changed.

Notice that the two gates both leave a critical mark — verify_guardian and release_grades — as do the two sensitive reads. That is intentional: the moments where a child's data becomes visible to someone new are exactly the moments the system records most loudly.


Statutory basis (Philippines)

LawWhat it coversHow School honours it
RA 10173 — Data Privacy ActLawful, need-to-know processing of personal (and sensitive) data.The verified-link gate, released-only visibility, restricted sensitive domains, and the audit trail.
RA 7610 — Special Protection of Children Against AbuseProtecting children from abuse and exploitation.The confidential Safeguarding surface with its restricted permit and audited reads.
RA 10627 — Anti-Bullying ActPreventing and handling bullying in schools.Anti-bullying handled through the same confidential Safeguarding cases.

Good-practice checklist

  • Grant restricted permits sparingly. Give school_health only to the clinic and school_child_protection only to safeguarding officers.
  • Keep the grade gate split. school_grade_release and school_grade_approve must be different people — see Grading Engine.
  • Verify before you share. Only verify a guardian link once you are sure the person is responsible for that learner — it opens portal access permanently.
  • Release deliberately. Releasing grades makes them visible and locks them; confirm the class record is correct first.
  • Review the audit log. Periodically check the critical-severity entries (verify, release, view_health, view_safeguarding) for anything unexpected.
  • Handle exports responsibly. The masterlist CSV contains learner PII — it is gated by school_export, audited, and marked internal-only. See Reports & DepEd Compliance.

Related pages

Was this guide helpful?

Report a content problem