All projects
Case study

Medical Information Simulation (MIS)

A web app for teaching laboratory quality control. Faculty set up QC lots with target values. Students run QC, enter results and read their own Levey-Jennings charts with Westgard rule checks, then faculty grade each run. It began as a team capstone for Texas Tech University Health Sciences Center. I later finished the core workflow end to end. It is an educational simulation, not for clinical use, and all data is synthetic.

React 18, TypeScript, MUI, Recharts, Vite, ASP.NET Core 8, EF Core, ASP.NET Identity + JWT, SQL Server, Docker, Playwright, GitHub Actions, Firebase Hosting

The problem

Constraints

What I built

Every page talks to one typed API interface. The normal build sends it over HTTP to the ASP.NET Core API. The demo build swaps in an in-browser implementation with the same workflow rules over synthetic data, so the live demo is free static hosting.

Screenshots

Levey-Jennings chart for glucose with mean and plus or minus 1, 2 and 3 SD lines. Two consecutive points above +2 SD are flagged.
Glucose drifts above +2 SD on two consecutive runs: a 2-2s rejection, planted in the synthetic seed data.
A submitted BMP run: each analyte with its result, target, z-score and Westgard check.
A student’s submitted run. Every result is checked against the lot’s targets and the earlier runs.
Faculty review panel with grade and feedback fields under the run’s results.
Faculty grade a run or return it with instructions.
QC lot editor with lot details and a table of analytes with mean, SD and acceptable range.
Faculty define each analyte’s target mean and SD.
Gradebook with per-student averages and a list of graded runs.
Per-student averages and every graded run.
The run page with a Levey-Jennings chart at phone width.
The same pages work at phone width.

Decisions and trade-offs

Results

What I'd do next

Team and credit