180 likes | 353 Views
Electronic Individualized Education Plan ( e IEP). Mike Carney. CS 8628, Summer 2003. A Pocket PC Application. Here are the steps to correctly install the e IEP mobile application: Unzip the the project.zip file. This will create a /project directory where you extract this archive.
E N D
Electronic Individualized Education Plan (eIEP) Mike Carney CS 8628, Summer 2003 A Pocket PC Application
Here are the steps to correctly install the eIEP mobile application: Unzip the the project.zip file. This will create a /project directory where you extract this archive. Using Sybase Central, create the “iep_corp” database and DSN. The following files will create and load the data into the database: Iep_create.sql (creates the tables) Iep_data.sql (loads test data into the database) Connect to the “iep_corp” database and add the tables to the Synchronized Tables folder. Open the IEPApp project in Mobile VB. From the Menu – Select MobileVB->Compile and Validate From the Menu – Select MobileVB -> Deploy To Device -> Pocket Pc Sequence of Tasks
Sequence of Tasks (cont.) • From a command prompt, start the MobiLink synchronization server with the following command line: • dbmlsrv8 -c "dsn=iep_corp" -v+ -zu+ -za • Now you have the application deployed to your device and the Mobilink server running, you can start the IEPApp on the Pocket PC. • When the application starts up, click the Synchronize button. • Now you can use the application to View and Edit Existing IEP of students.
The eIEP application allows Special Education Teachers to conduct Individualized Education Plans in a paperless fashion using a Pocket PC. Currently, Parent-Teacher meetings are held where the Teacher reviews paper IEP forms and then assigns goals and updates existing goals to reflect the students progress. Then a teacher must enter all the form information at a web address for it to be stored in the county database. This application shows a concept and implements a small piece of the IEP process. This application will allow Teachers to Add, Update, Delete and View goals associated with an IEP for a student. Once the information has been captured on the Pocket PC application, the teacher can synchronize it with the corporate database, thus eliminating the use of paper forms and the need for duplicate work of entering the information on the web. Although this particular application implements a subset of the IEP process and used to demonstrate a concept, it could be extended to the full functionality and become practical in use. Project Description
An IEP can contain many goals. Every Student has one and only one IEP. The IEP table captures the student information along with a foreign key to Goals to show the relationship between the IEP and Goals table. E-R Diagram 1:N N:1 Goals IEP Contains status SSN Goal_Description Goal_Id Grade_Level Student_Name Goal_Id
Relational Schema with Keys The schema above shows the primary key in the IEP table is composed of the SSN and the Goal_Id. Goal_Id is a foreign key in the IEP table and a primary key in Goals tables. Logical Schema IEP SSN Goal_Id Status Student_Name Grade_Level Goals Goal_Id Goal_Description
create table goals( goal_id int primary key, goal_description varchar( 128 ) ) go create table iep( ssn int not null, goal_id int not null, student_name varchar(128), grade_level varchar(2), status varchar(128), constraint Pk_iep Primary Key (ssn, goal_id), constraint Fk_iep_goal_id Foreign Key (goal_id) references goals (goal_id), ) go Scripts to add tables to the consolidated database Physical Schema (DDL)
This script is used to build a remote database and DSN through Sybase. CREATE PUBLICATION iep_goals ( TABLE iep, TABLE goals ) go CREATE SYNCHRONIZATION USER iep_user go CREATE SYNCHRONIZATION SUBSCRIPTION TO iep_goals FOR iep_user TYPE 'tcpip' ADDRESS 'host=localhost' go Publication Script # 1
Use Ultralite Schema Painter Create the iep_mobile schema using the Ultralite Schema painter with the IEP and Goals table. The iep_mobile.usm file is included in the project.zip file. Load this into the Ultralite Schema Painter to view the tables. I used the Ultralite Schema Painter to build the iep_mobile.usm schema file. Publication Script # 2
Code Used to Synchronize (default scripts): With Connection.SyncParms .UserName = "iepUser" .Stream = ULStreamType.ulTCPIP .Version = "ul_default" .SendColumnNames = True End With Connection.Synchronize The .SendColumnNames = True tells MobiLink to generate proper upload and download scripts. This is using the default synchronization scripts since we have the same table in “iep_corp” database that we are synchronizing against. Synchronization Script
Learning Visual Basic Due to time constraints, picking up the syntax of a new language took some trial and error. The Ultralite tutorials helped with the syntax for connecting to the database. Synchronizing from the PDA to the Consolidated Database In the Mobile VB Menu- actually specifying the correct paths for the application to see the remote database was confusing. Other difficulties included getting used to the Graphical IDE (VB) and learning AppForge tools. Difficulties Encountered
Main Form IEP Form Add Goal Form The Main Form allows you to select a student from the class in which you would like to view/edit their IEP. Also, you may synchronize from this screen also. A student must be selected in order to goto the IEP Form. Once a student is selected, the IEP Form screen appears with the first goal and status of the student loaded. A user may navigate through the students goals using the Next and Previous buttons. The status of any existing goals can be updated from this screen. Also, any goal can be deleted from this screen. In order for a teacher to add a goal, they must click the add button which brings up the Add Goal Form. The Add Goal Form allows the addition of a goal with associated status to an IEP for a student. Screen Snapshot # 1
Text from Mobilink Server after Synchronization: I. 07/23 20:56:49. <thread 1.1>: Ready to handle requests I. 07/23 20:56:49. <thread 1.2>: Ready to handle requests I. 07/23 20:56:49. <thread 1.3>: Ready to handle requests I. 07/23 20:56:49. <thread 1.4>: Ready to handle requests I. 07/23 20:56:49. <thread 1.5>: Ready to handle requests ………………………… Update Messages from Mobilink ………………………… I. 07/23 20:59:25. <1.1> [iepUser]: Translated SQL: savepoint it0 I. 07/23 20:59:25. <1.1> [iepUser]: Updated row (new values): I. 07/23 20:59:25. <1.1> [iepUser]: 123456 I. 07/23 20:59:25. <1.1> [iepUser]: 7 I. 07/23 20:59:25. <1.1> [iepUser]: Mary Smith I. 07/23 20:59:25. <1.1> [iepUser]: I. 07/23 20:59:25. <1.1> [iepUser]: Mastered I. 07/23 20:59:25. <1.1> [iepUser]: upload_update iep (open for write): UPDATE iep SET student_name = ?, grade_level = ?, status = ? WHERE ssn = ? AND goal_id = ? I. 07/23 20:59:25. <1.1> [iepUser]: Translated SQL: UPDATE iep SET student_name = ?, grade_level = ?, status = ? WHERE ssn = ? AND goal_id = ? I. 07/23 20:59:25. <1.1> [iepUser]: Inserted row: I. 07/23 20:59:25. <1.1> [iepUser]: 123456 I. 07/23 20:59:25. <1.1> [iepUser]: 8 I. 07/23 20:59:25. <1.1> [iepUser]: Mary Smith I. 07/23 20:59:25. <1.1> [iepUser]: I. 07/23 20:59:25. <1.1> [iepUser]: Mastered These are messages from the Mobilink Server console window after the Synchronize button on the IEPApp on the PDA was selected. It shows the messages of an Update, Delete, and Insert operation that I did on the PDA before synchronizing with the server. Mobilink Synchronization
I. 07/23 20:59:25. <1.1> [iepUser]: upload_insert iep (open for write): INSERT INTO iep( ssn, goal_id, student_name, grade_level, status ) VALUES( ?, ?, ?, ?, ? ) I. 07/23 20:59:25. <1.1> [iepUser]: Translated SQL: INSERT INTO iep( ssn, goal_id, student_name, grade_level, status ) VALUES( ?, ?, ?, ?, ? ) I. 07/23 20:59:25. <1.1> [iepUser]: upload_insert iep (close) I. 07/23 20:59:25. <1.1> [iepUser]: upload_update iep (close) I. 07/23 20:59:25. <1.1> [iepUser]: Translated SQL: release savepoint it0 I. 07/23 20:59:25. <1.1> [iepUser]: end_upload_rows iep (no script) I. 07/23 20:59:25. <1.1> [iepUser]: begin_upload_rows goals (no script) I. 07/23 20:59:25. <1.1> [iepUser]: Translated SQL: savepoint it1 I. 07/23 20:59:25. <1.1> [iepUser]: Translated SQL: release savepoint it1 I. 07/23 20:59:25. <1.1> [iepUser]: end_upload_rows goals (no script) I. 07/23 20:59:25. <1.1> [iepUser]: begin_upload_deletes iep (no script) I. 07/23 20:59:25. <1.1> [iepUser]: Translated SQL: savepoint dt1 These messages are from the Insert operations done on the IEPApp from the Pocket PC. Mobilink Synchronization 2
I. 07/23 20:59:25. <1.1> [iepUser]: Deleted row: I. 07/23 20:59:25. <1.1> [iepUser]: 123456 I. 07/23 20:59:25. <1.1> [iepUser]: 1 I. 07/23 20:59:25. <1.1> [iepUser]: Mary Smith I. 07/23 20:59:25. <1.1> [iepUser]: I. 07/23 20:59:25. <1.1> [iepUser]: In Progress I. 07/23 20:59:25. <1.1> [iepUser]: upload_delete iep (open for write): DELETE FROM iep WHERE ssn = ? AND goal_id = ? I. 07/23 20:59:25. <1.1> [iepUser]: Translated SQL: DELETE FROM iep WHERE ssn = ? AND goal_id = ? I. 07/23 20:59:25. <1.1> [iepUser]: upload_delete iep (close) I. 07/23 20:59:25. <1.1> [iepUser]: Translated SQL: release savepoint dt1 I. 07/23 20:59:25. <1.1> [iepUser]: end_upload_deletes iep (no script) These are messages from the Mobilink Server for when a Delete operation has taken place on the Pocket Pc. Mobilink Synchronization 3
Public Sub LoadStudentGoal() IEPTable.Open "SSNIndex" IEPTable.FindBegin IEPTable.Column("ssn").LongValue = m_SSN If IEPTable.FindFirst Then m_GoalId = IEPTable.Column("goal_id").LongValue m_GradeLevel = IEPTable.Column("grade_level").StringValue GetGoalDesc (m_GoalId) m_Status = IEPTable.Column("status").StringValue End If End Sub This is just a small code sample used to show how I load the goal associated with the student. I created an index on the IEP table and open it here. I know the SSN of the student, so I start my cursor at the first record I find of this student. Now, with this index open, I can search through all of the students goals and add, update, or delete them. Code Sample # 1
Set GoalsTable = Connection.GetTable("goals") GoalsTable.Open GoalsTable.MoveBeforeFirst If Err.Number <> ULSQLCode.ulSQLE_NOERROR Then MsgBox Err.Description End If Do While GoalsTable.MoveNext comboGoals.AddItem (GoalsTable.Column("goal_description").StringValue) Loop GoalsTable.Close This is just a small code sample used to show how I load all the goals from the goals table to populate the combo box used to add new goals for students. Code Sample # 2
The eIEP app was successfully deployed to the Pocket PC. The application synchronizes with the consolidated database and any changes between the consolidated or remote databases are captured. This project provided a great experience in developing an application for the Pocket PC and the use of multiple tools and software that I have never used before. It proved to be a good introduction into Client-Server computing and a good foundation for going forward with building mobile applications. Conclusion