CHP Clinical Evaluations
* Location: code, red, test site on bfs * Technology: Perl * Customer: CHP, Laurel Hays and Amy Dickson * CVS: chpce
The College of Health Professions' Laurel Hays uses this project for Supervisors to evaluate students. Apparently grades are generated at the end.
Description
Evaluations
Students can have many supervisors, located at various sites across the country including MUSC. The supervisor evaluates the student's evaluation and treatment skills in 9 areas. 15 other points are also evaluated. All of this results in a number. This is done for midterms and finals, for each semester. The patient population type is also tracked.
Supervisors can edit an evaluation until the "Final submission" check-box is checked. NOTE this has nothing to do with being a midterm/final evaluation. Think of "Final submission" as a locked evaluation, set in stone.
Students are in one of many courses. Each evaluation object has a course, student, supervisor, and semester.
The student's grade (at least for this project; it is not clear if this is the student's actual grade) is based on the 'final' evaluations. For reference and to highlight students who are lagging, midterm-based grades can be generated.
Clockhours
Students enter their clock hours, and get them approved (check-box) by a supervisor. This is independent of the evaluations. Various reports are produced.
Clockhours are entered for n (=9?) areas, once for 'evaluation' and once for 'treatment'. That's 2n values per clockhour record. In each case, a separate number is entered for adult and child populations. That makes 4n values per clockhours table's row. Additionally, there are 3 'observation' areas, again doubled to evaluation and treatment and doubled again to child and adult. These detail values of the clockhour record are stored in clock_details table. Each clock_detail row has a clockhour_id, and two enum columns to select between evaluation/treatment and child/adult. So each clockhour row could have 4 clock_details rows.
Additional functions
There are additional functions for
- storing documentation on a per-student basis
- allowing supervisors to edit their information
- reports on supervisors, grading, clockhour requirements being met, etc.
- Etc.
Architecture
Configuration, global variables are in conf.pl
Database configuration is separate in database.pl and dbpass.pl
index.pl is the main entry point. This checks for logins (through the Login module), sets cookies, initialises a couple of other objects (Evaluations and utils modules) and goes into a giant if/else block. This may instantiate other objects (Students, Clockhours, Supervisors, Files, Reports). It also initializes the HTML::Template object.
Most of the code is in the modules. Some modules themselves contain a dispatch() function, to reduce the if-else block in index.pl and to concentrate the code.dispatch() is also an if-else.
tmp/ contains session files.
tmpl/ contains HTML templates. Both of these directories should be denies http access.
js/, css/, and images/ contains the obvious (except images, which is accidentally empty -- FIXME -- images are in the project root!)
help/ contains help file popups, mostly used on the evaluation form.
Login
Students log in with their MNA. Supervisors log in with their ASHA number and the password they select during registration.
Supervisors need to register using a one-time PIN generated by the site for the administrator. The one-time PIN is sent by the administrator (Laurel) to the supervisors.
Components
The whole thing is done in perl. Lookup tables and students are managed by mySiteMaker. The database is in mySQL on bfs (test) and red (production), both databases are called csdclined.
Status
This is an on-going project. The test site is at bfs:/var/www/csdclined and the production site is at code:/var/www/csdclined. There is a proxy redirect from http://www.musc.edu/csdclined/


