How to implement third party Daily Attendance Recording

1. What’s the business problem?

Allow schools to securely provide SIS information to the Attendance product of their choice, and also to allow school attendance records to be published to a jurisdictional data hub.

More…

2. Use Case Description & Pre-Conditions

A 3rd Party Daily Attendance application connects to HITS as a jurisdiction hub, collecting the relevant information and publishing back attendance records to the centralised system.

Timetable/Attendance conceptual model

The following diagram gives some wider context around school-level interactions for this use case. Note that not all interactions shown here are covered within this technical use case.

Attendance data flow

This diagram show the data flows for attendance between student,school, school system or jurisdiction, and government bodies.

Attendance SIF objects

Diagrams the interactions between SIF objects for this use case.

Assumptions:

3rd Party Vendor is a current supplier of a Student Attendance product in schools or has knowledge of Student attendance reporting processes in K-12 Schools.

It is assumed that attendance is lodged through the StudentDailyAttendance and StudentAttendanceSummary objects. If the StudentAttendanceTimeList object is used instead, the Student Attendance Timelist use case applies. (The two use cases are identical in the business problem they address, but provide different levels of granularity.)

Pre-Conditions:

Here is the XSD schema for SIF 3.4.3, and a detailed description of the Attendance Baseline Profile.)

3. Use case workflow

Workflow summary:

3.1. Join

3.2. Consume

3.3. Process

3.4. Provide

3.5. Assurance

3.1. Join required School Zone.

3.2. Consume Base Data from HITS.

Vendor-facing (pull); HITS represents the Jurisdiction and is the data source for seed information.

Consume:

The following is a list of calls that need to be made to consume the required information:

  1. Get SchoolInfos - http://.../SchoolInfos  (HITS should determine the URLs eg http://hits.nsip.edu.au/SchoolInfos - access this information from your Dashboard.)
  2. Get StudentPersonals -  http://.../StudentPersonals (linked to school via StudentSchoolEnrollment; eg: equivalent to  http://.../SchoolInfo/\\{REFID}/StudentSchoolEnrollments/{REFID}/StudentPersonals)
  3. Get CalendarDates - http://.../CalendarDates
  4. Get CalendarSummarys -  http://.../CalendarSummarys

Endpoints may support additional queries for retrieving data - refer to Query-by-example or service paths? for HITS guidance on queries.

NOTE: The “Attendance” option for database generation in the HITS Dashboard applies to both the Basic Daily Attendance use case and the Student Attendance TimeList use case.

3.3. Process in 3rd Party Application.

3rd Party App uses the consumed data to produce a schedule. The definition and automation of this process is out of scope of HITS.

Steps:

3.4. Provide Authoritative Data

Prior to providing:  

  Third party expresses return information in SIF/XML:

3.5. Assurance: Self – Confirmation of Use Case Support

  1. Validate StudentDailyAttendance records
  2. Validate StudentAttendanceSummary records

The SIF/XML data sent by the 3rd Party app to the Jurisdiction Zone for the app must satisfy the following conditions:

Note that in some deployments, only StudentDailyAttendance records, only StudentAttendanceSummary records, or only StudentAttendanceTimeList records may be required. Deployments in which StudentAttendanceTimeList are required are addressed by the Student Attendance Timelist use case.

NOTE: The “Attendance” option for validation in the HITS Dashboard applies to both the Basic Daily Attendance use case and the Student Attendance TimeList use case.

More…

More information…

What business problem does this use case address?

In brief:

Schools currently use third-party attendance applications locally to supplement their Student Information System (SIS). The seed information for recording of attendance is held in the School’s SIS and usually exported locally with little security.

As jurisdictions centralise systems, 3rd Party Vendors have the opportunity to seed their product/s from a quality assured data hub using automated feeds, rather than manual updates from the school. 3rd  Party Vendors are also expected to provide information directly back to the centralised system through an automated feed, rather than having the information mediated through the school. 

This use case shows how 3rd  party attendance vendors can connect to a centralised data hub to securely access to the required information and publish back the Daily Attendance records to the centralised data hub.

The SIF-AU specification provides separate objects that capture attendance at the granularity of individual periods (StudentPeriodAttendance), and of arbitrary granularity (StudentAttendanceTimeList). Neither option is catered for in this use case: this use case instead uses the StudentDailyAttendance object to capture attendance at the granularity of the day or half-day. The StudentAttendanceTimeList use case uses the StudentAttendanceTimeList object, which is the object expected to be used for Department of Education NSW integrations. Because of lack of demand to date, no HITS use case currently uses StudentPeriodAttendance.

Use case preconditions for assurance

For the purposes of validation, a new StudentDailyAttendance object is well-formed if:

For the purposes of validation, a new StudentAttendanceSummary object is well-formed if it satisfies the following requirements:

Relevant Service Paths Supported on HITS

Relevant Queries By Example Supported on HITS

<SchoolInfo>
    <LocalId>{schoolCode}</LocalId>
</SchoolInfo>

<StudentPersonal>
  <LocalId>{id}</LocalId>
  <PersonInfo>
    <Name>
      <FamilyName>{familyName}</FamilyName>
      <GivenName>{givenName}</GivenName>
    </Name>
  </PersonInfo>
</StudentPersonal>

<StudentSchoolEnrollment>
  <TimeFrame>{type}</TimeFrame>
  <YearLevel><Code>{yearlevel}</Code></YearLevel>
</StudentSchoolEnrollment>

<StudentDailyAttendance>
    <StudentPersonalRefId>{RefId}</StudentPersonalRefId>
    [<SchoolInfoRefId>{RefId}</SchoolInfoRefId>]
    <Date>{date}</Date>
    <SchoolYear>{year}</SchoolYear>
</StudentDailyAttendance>

<StudentAttendanceSummary>
  <StudentPersonalRefId>{refid}</StudentPersonalRefId>
  <SchoolYear>{year}</SchoolYear>
  <StartDate>{date}</StartDate>
  <EndDate>{date}</EndDate>
</StudentAttendanceSummary>

<CalendarDate>
  <Date>{refId}</Date>
  [<CalendarSummaryRefId>{refId}</CalendarSummaryRefId>]
  <CalendarDateType><Code>{DateType}</Code></CalendarDateType>
  <StudentAttendance><CountsTowardsAttendance>{bool}</CountsTowardsAttendance></StudentAttendance>
</CalendarDate>