Bloodwork Tracker¶
The bloodwork tracker feature helps users manage their lab results, medical appointments, and visualize trends in hormone levels over time.
Models¶
Bloodwork: Primary model for lab tests and medical appointments.class Bloodwork { final String id; final DateTime date; final AppointmentType appointmentType; final List<HormoneReading> hormoneReadings; final String? location; final String? doctor; final String? notes; }HormoneReading: Represents an individual hormone measurement with value and unit.class HormoneReading { final String name; final double value; final String unit; // Serialization methods Map<String, dynamic> toJson() {...} factory HormoneReading.fromJson(Map<String, dynamic> json) {...} }AppointmentType: Enumeration for different types of medical appointments (bloodwork, appointment, surgery).HormoneTypes: Contains predefined hormone types with their default units.
Providers¶
bloodworkStateProvider: Manages bloodwork CRUD operations- Various derived providers:
// Main state providers
final bloodworkStateProvider = StateNotifierProvider<BloodworkNotifier, BloodworkState>
// Derived providers
final bloodworkRecordsProvider = Provider<List<Bloodwork>>
final bloodworkLoadingProvider = Provider<bool>
final bloodworkErrorProvider = Provider<String?>
final sortedBloodworkProvider = Provider<List<Bloodwork>>
final bloodworkTypeRecordsProvider = Provider<List<Bloodwork>>
final bloodworkDatesProvider = Provider<Set<DateTime>>
final groupedBloodworkProvider = Provider<Map<String, List<Bloodwork>>>
final hormoneTypesProvider = Provider<List<String>>
final hormoneRecordsProvider = Provider.family<List<MapEntry<DateTime, double>>, String>
final latestHormoneValueProvider = Provider.family<double?, String>
State Notifier¶
class BloodworkNotifier extends StateNotifier<BloodworkState> {
// Notifier methods
Future<void> loadBloodwork() async {...}
Future<void> addBloodwork(Bloodwork bloodwork) async {...}
Future<void> updateBloodwork(Bloodwork bloodwork) async {...}
Future<void> deleteBloodwork(String id) async {...}
}
Screens¶
BloodworkListScreen: List of all appointments organized by upcoming/past/today.AddEditBloodworkScreen: Form for adding and editing appointments and lab results.BloodLevelListScreen: Overview display of all tracked hormone levels with mini graphs.BloodworkGraphScreen: Visualizations of hormone levels over time with reference ranges.
Interactions¶
- Uses
DatabaseServicefor persistent storage of bloodwork data - Interacts with Scheduler feature to display appointments on calendar and daily views
- Uses
ValidationServicefor data validation