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
DatabaseService
for persistent storage of bloodwork data - Interacts with Scheduler feature to display appointments on calendar and daily views
- Uses
ValidationService
for data validation