@startuml
hide empty members
hide empty methods

package investigation {

    class CriminalOffence {
    }

    class OffenceAdvice {
    }

    class PoliceInvestigation {
    }

    class PreChargeDecision {
        void recordAlternativeOffenceAdvice (Suspect, OffenceAdvice)
        OffenceAdvice getOffenceAdviceFor (Suspect)
    }

    class Suspect    {
    }

}

package preparation{
}

class CriminalCase {
}

class Defendant {
}

class PNCId {
}

class PoliceCaseFile {
}

class PublicProsecutionService {
    CriminalCase receiveRequestForPreChargeDecision (PoliceInvestigation)
    CriminalCase acceptCaseFile (PoliceCaseFile)
}

Suspect *-- "*" CriminalOffence

PoliceCaseFile *-- PNCId

PoliceCaseFile *-- Defendant

PoliceInvestigation *-- "*" Suspect

PoliceInvestigation *-- PNCId

PreChargeDecision *-- "*" Suspect

PreChargeDecision *-- "*" OffenceAdvice

CriminalCase *-- PNCId

CriminalCase *-- "*" Suspect

CriminalCase *-- "*" Defendant

PublicProsecutionService --> CriminalCase : <<creates>>

PublicProsecutionService --> PoliceInvestigation : <<uses>>
@enduml
