The Attendance Data Model
When storing attendance data storage can become a significant consideration. The volume of attendance records can easily exceed 100 times the number of class enrollments. For that reason, we provide (and recommend storing) only negative attendance records and those records with flags. Put another way, if an attendance record is "normal" (i.e. the student attended class with no notable events) we do not store that record.
We store attendance information in two key scenarios:
- Negative Attendance Records: These are instances when a person is marked absent.
- Attendance Records with Flags: If a record has an Attendance Flag, for instance, a person may have a valid reason for missing a class or a unique circumstance that needs to be noted. In these cases, a flag is added to the record. Edlink stores these flagged attendance records.
If you do require positive attendance you can follow the following procedure to convert between the two.
Converting Between Negative And Positive Attendance
If you need to convert from negative to positive attendance. You can use the following procedure.
Daily Attendance
- List the meetings for the days you are interested in tracking
- Pull all negative attendance records for these meetings
- Get all people that you want to track attendance for
- Get enrollments for the person and get the earliest start date of all the enrollments
- Loop through the meeting records and create a positive attendance record for each enrollment where:
- An existing attendance record doesn't already exist.
- The meeting day is on or after the person's earliest enrollment start date
Class Attendance
- Get the meetings for the days and classes you are interested in tracking
- Pull all negative attendance records for the meeting
- Get the class record and enrollments for the meeting
- Loop through the meeting records and create a positive attendance record for each enrollment where:
- An existing attendance record doesn't already exist.
- The meeting day is on or after the person's enrollment date
Expanded Attendance Models (Beta)
This model set is part of an upcoming API update which is currently in beta and therefore subject to change.
Edlink also offers expanded attendance models that provide more detail than Meeting and Attendance. Meeting and Attendance remain supported. The expanded models are optional and currently in beta.
Real SIS data often needs more detail than a single Meeting and Attendance pair can express. The expanded models split student attendance into day-level and period-level records. They also add staff period attendance, which is new and was not represented in the original Meeting and Attendance models. Staff Period Attendance tracks whether staff were present in a period meeting, and availability of this data depends on the provider. It is not the same as student presence, but more akin to employee time-tracking in human resource systems.
The same storage rule applies here. Edlink stores only exceptions (non-present outcomes and flagged records). If no record exists, assume the person was present with no notable events. The same inference logic described above for Meeting and Attendance applies conceptually to the expanded models as well.
Attendance data in the expanded models is organized in two layers. Meeting models define when attendance can be taken. Attendance models define who the record is for and what the outcome was.
School Calendar Day
├── Student Day Meeting → Student Day Attendance
├── Student Period Meeting → Student Period Attendance
└── Staff Period Meeting → Staff Period Attendance
Each attendance record may also have related data attached to it:
- Flags through junction models that reference an Attendance Flag lookup
- Intervals, which describe partial present-time segments (availability depends on the provider)
- Virtual metadata, which captures online participation evidence (availability depends on the provider, student records only)
Attendance Type, Status, and Flag values are district-specific codes mapped to Edlink enums. See Code Mappings for more information.
"Meetings" to Expanded Models
| Meeting and Attendance | Expanded model(s) |
|---|---|
Meeting with type: day | Student Day Meeting |
Meeting with type: period | Student Period Meeting |
| (not in Meeting and Attendance) | Staff Period Meeting |
day_id | school_calendar_day_id on meeting models |
period_id / class_id | bell_schedule_period_id / class_id on period meeting models |
"Attendance" to Expanded Models
| Meeting and Attendance | Expanded model(s) |
|---|---|
Attendance | Student Day Attendance, Student Period Attendance, or Staff Period Attendance |
state | Attendance Type (+ Attendance Status for students) |
inline flags[] | Flag junction models + Attendance Flag |
API Reference
Meetings
Attendance Records
Related Record Data
- Student Day Attendance Intervals
- Student Day Attendance Flags
- Student Day Attendance Virtual Metadata
- Student Period Attendance Intervals
- Student Period Attendance Flags
- Student Period Attendance Virtual Metadata
- Staff Period Attendance Intervals
- Staff Period Attendance Flags