@startuml Public Prosecution Service

hide empty members
hide empty methods

class CriminalCase {
}

class CriminalOffence {
}

class PNCId {
}

class PoliceInvestigation {
}

class PreChargeDecision {
    void RecordAlternativeOffenceAdvice(Suspect, OffenceAdvice)
    OffenceAdvice GetOffenceAdviceFor(Suspect)
}

class OffenceAdvice {
}

class Suspect    {
}

class PublicProsecutionService {
    CriminalCase ReceiveRequestForPreChargeDecision(PoliceInvestigation)
}

Suspect *-- "1" CriminalOffence

PoliceInvestigation *-- "*" Suspect

PoliceInvestigation *-- "1" PNCId

PreChargeDecision *-- "*" Suspect

PreChargeDecision *-- "*" OffenceAdvice

CriminalCase *-- PNCId

CriminalCase *-- "*" Suspect

PublicProsecutionService --> CriminalCase : <<creates>>

PublicProsecutionService --> PoliceInvestigation : <<uses>>

@enduml
