Fireweld Tesfaye
← Back to work

Mobile Developer Intern — A2SV Foundation · Jul–Aug 2026 (module ownership)

AfyaMind — Clinical History & Appointments

Read-only clinical history, encounter timeline, and appointments for a Flutter patient app built under Clean Architecture with a six-person mobile team.

AfyaMind was built by a six-person mobile team. I owned features/clinical_history. Auth, medication adherence, vitals sync, access requests, and core scaffolding were owned by teammates.

AfyaMind clinical history architecture diagram

Problem

Patients needed a chronological, trustworthy view of clinic visits — evaluations, labs, diagnoses, prescriptions — and standalone appointments, without any ability to mutate clinical records.

Contribution

I owned the clinical_history feature end to end: domain entities and use cases, data-layer models and repositories against the versioned API, Bloc/Cubit presentation, timeline and detail screens, and unit/widget tests.

Outcome

Delivered a reviewed, merged vertical slice covering encounters timeline, aggregated encounter detail, and standalone appointments, integrated with the shared design system and Dio session client.

Technical decisions

  • Strict Clean Architecture layering so domain logic stayed free of Flutter and networking dependencies.
  • Separate condensed medical-history summaries from full encounter detail payloads to keep the timeline responsive.
  • Read-only UX by design — no edit or delete paths for clinical records on the patient client.

Architecture

Each feature follows data → domain → presentation. My domain layer exposes entities and single-purpose use cases; repositories hide Dio/JSON details; Blocs consume domain entities only. This let unit tests exercise clinical history logic without the network or UI.

User-facing functionality

Patients see a chronological encounters feed, open condensed summaries or full visit detail (evaluation, vitals, labs with flags, diagnoses, prescriptions), and browse standalone appointments — all read-only.

API contract

The module consumes versioned /api/v1 encounter and appointment endpoints, including medical-history summaries and aggregated encounter detail. Condensed vs full payloads were an explicit performance decision for mobile rendering.

Project gallery

AfyaMind encounters API reference

The encounter API contract used for clinical history integration.

Stack

FlutterDartBLoC/CubitClean ArchitectureREST