@startuml

class CODE_SET {
  + name : String [1]
  + openehr_id : String [1]
  + issuer : String [1]
  + codes : List<CODE> [*]
  + external_id : String [0..1]
  + status : TERMINOLOGY_STATUS [0..1]
}

class TERMINOLOGY_GROUP {
  + name : String [1]
  + concepts : List<TERMINOLOGY_CONCEPT> [*]
  + openehr_id : String [1]
  + status : TERMINOLOGY_STATUS [0..1]
}

class CODE {
  + value : String [1]
  + description : String [0..1]
  + status : TERMINOLOGY_STATUS [0..1]
}

class TERMINOLOGY_CONCEPT {
  + id : String [1]
  + rubric : String [1]
  + status : TERMINOLOGY_STATUS [0..1]
}

class TERMINOLOGY {
  + name : String [1]
  + language : String [1]
  + code_sets : List<CODE_SET> [*]
  + vocabularies : List<TERMINOLOGY_GROUP> [*]
  + version : String [0..1]
  + date : Iso8601_date [0..1]
}

enum TERMINOLOGY_STATUS {
  trial 
  active 
  retired 
}


@enduml