An open-source Flutter app for analyzing and visualizing blood report trends over time using AI.
Track your family's health by uploading blood test reports (images or PDFs), automatically extracting data using Google Gemini AI, and viewing beautiful trend charts for each parameter over time.
- πΈ AI-Powered OCR: Upload blood report images/PDFs, extract data automatically
- π₯ Multi-Profile Support: Track reports for multiple family members
- π Trend Visualization: Beautiful charts showing parameter trends over time
- π Privacy First: All data stored locally using SQLite
- π― Smart Normalization: Handles different parameter naming conventions across labs
- π± Cross-Platform: Works on Android, iOS, and Web
Hwiz/
βββ health_analyzer/ # Main Flutter app
β βββ lib/
β β βββ models/ β
Data models
β β βββ viewmodels/ π State management (to be implemented)
β β βββ views/ π UI screens (to be implemented)
β β βββ services/ β
Business logic & APIs
β β βββ utils/ β
Constants & utilities
β βββ README.md # Detailed app documentation
β βββ QUICK_START.md # Getting started guide
β βββ IMPLEMENTATION_GUIDE.md # Development roadmap
β βββ CODE_EXAMPLES.md # Copy-paste ready code
β βββ CHECKLIST.md # Implementation checklist
β βββ ARCHITECTURE.md # System architecture diagrams
βββ README.md # This file
Phase 1: Foundation - COMPLETE β
- β Complete backend architecture (40% of total project)
- β SQLite database with optimized schema
- β Google Gemini AI integration for OCR
- β Parameter normalization engine (handles naming variations)
- β Document picker (images & PDFs)
- β All data models and services
- β Comprehensive documentation
Phase 2: Core UI - IN PROGRESS π§
- β Project initialization and setup
- β API key management with validation
- β Dynamic model selection from Gemini API
- β
Profile management system (COMPLETE!)
- β Create/Edit/Delete profiles
- β Profile list with statistics
- β Home dashboard with navigation
- β
Report scanning interface (COMPLETE!)
- β Camera capture
- β Gallery picker
- β PDF upload
- β AI-powered OCR extraction
- β Report viewing and management
- π Trend visualization charts
Phase 3: Polish & Features (Coming Soon)
- Advanced visualizations
- Export and sharing features
- Health insights
Problem: Blood test reports use inconsistent parameter names across different labs:
- One lab writes "RBC Count"
- Another writes "RBC"
- Another writes "Red Blood Cells"
Solution: Multi-layer normalization system:
- AI normalization during extraction
- LOINC-based mapping table (100+ variations)
- Fuzzy matching for unknown parameters
- Result: Consistent database keys β Perfect visualizations!
- Framework: Flutter (Dart)
- Database: SQLite (local storage)
- AI/OCR: Google Gemini 1.5 Pro API
- Charts: FL Chart
- State Management: Provider (MVVM pattern)
- Security: flutter_secure_storage
profiles β reports β blood_parameters
β β β
Name Test Date Parameter Name (normalized)
Lab Name Parameter Value
Image Path Unit & Reference Ranges
Upload Report β Gemini API β Normalize Parameters β SQLite β Charts
Your father wants to track his RBC count over time:
- Add Profile: Create "Father" profile
- Scan Report: Upload blood test image from January
- Auto-Extract: AI extracts "RBC: 5.1"
- Normalize: "RBC" β
rbc_count(standardized) - Save: Stored in local database
- Repeat: Add more reports over months
- Visualize: View trend chart showing RBC changes from Jan to Oct
Gemini API Pricing:
- ~$0.001 per report scan (less than 1 cent!)
- 1000 scans = ~$1
- Perfect for personal/family use
- Flutter SDK (>= 3.0.0)
- Dart SDK (>= 3.0.0)
- Google Gemini API key (free from Google AI Studio)
cd health_analyzer
flutter create . --project-name health_analyzer
flutter pub get
flutter runSee QUICK_START.md for detailed instructions.
- README.md - App overview and features
- QUICK_START.md - Get started in 5 minutes
- IMPLEMENTATION_GUIDE.md - Detailed development roadmap
- CODE_EXAMPLES.md - Copy-paste ready code snippets
- CHECKLIST.md - Track your progress
- ARCHITECTURE.md - System design diagrams
- PROJECT_SUMMARY.md - Complete overview
- Backend architecture (DONE)
- Project initialization (DONE)
- API key management (DONE)
- Profile management UI (DONE)
- Report scanning UI (DONE)
- Trend visualization
- Polish and refinement
- More report types (lipid panel, thyroid, etc.)
- Medication tracking
- Export to PDF
- Share with doctors
- Cloud backup (encrypted)
- Multi-device sync
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
Devasy Patel (@Devasy23)
- Google Gemini API for AI-powered extraction
- Flutter team for the amazing framework
- FL Chart for beautiful visualizations
- The open-source community
This app is for personal health tracking only and should not be used as a substitute for professional medical advice. Always consult with qualified healthcare providers for medical decisions.
Status: Foundation Complete (40%) | Next: UI Implementation (60%)
Made with β€οΈ for better health tracking