Service Layer medium complexity backend
0
Dependencies
0
Dependents
3
Entities
0
Integrations

Description

Orchestrates the course enrollment workflow including eligibility checks, registration submission, and confirmation dispatch. Acts as the primary business logic layer between the UI screens and the data repository. Handles organization-specific course availability rules.

Feature: Course Registration

course-registration-service

Sources & reasoning

Line 114 explicitly lists in-app course enrollment as an HLF certification requirement; line 124 confirms Barnekreftforeningen shares the need for onboarding training. The priority matrix (line 155) assigns SHOULD HAVE in Phase 3 (column value 3), which maps to v1.1 by ordinal. Line 355 confirms Phase 3 roadmap placement.

  • docs/source/likeperson.md · line 114
    Kursadministrasjon og sertifisering: Påmelding til kurs i appen, automatisk påminnelse ved utløp, digitale sertifikater. Det fysiske kortet er et «adelsmerke» og skal leve parallelt.
  • docs/source/likeperson.md · line 124
    Kursadministrasjon (delt med HLF) for opplæring av nye likepersoner og oppfølgingskurs.
  • docs/source/likeperson.md · line 155
    | Kursadministrasjon / sertifisering | ✓ | - | - | ✓ | ✓ | SHOULD (HLF + Barnekreft) | 3 |
  • docs/source/likeperson.md · line 355
    Kursadministrasjon og sertifisering (HLF + Barnekreftforeningen)

Responsibilities

  • Validate user eligibility and prerequisites before allowing registration
  • Submit enrollment requests and handle conflict or capacity errors
  • Trigger confirmation notifications upon successful registration
  • Enforce organization-level course configuration and availability rules
  • Expose enrollment status queries for UI state synchronization

Interfaces

registerForCourse(userId: string, courseId: string): Promise<Enrollment>
checkEligibility(userId: string, courseId: string): Promise<EligibilityResult>
getEnrollmentStatus(userId: string, courseId: string): Promise<EnrollmentStatus>
cancelEnrollment(enrollmentId: string): Promise<void>