message Address
 {
  optional street String = 1
  optional city String = 2
  optional postalCode String = 3
 }
message Concept
 {
  id String = 1
  optional name String = 2
  optional description String = 3
  optional image String = 4
 }
message Container
 {
  repeated persons Person = 1
  repeated organizations Organization = 2
 }
message DiagnosisConcept
 {
  id String = 1
  optional name String = 2
  optional description String = 3
  optional image String = 4
 }
message EmploymentEvent
 {
  optional startedAtTime Date = 1
  optional endedAtTime Date = 2
  optional duration Float = 3
  optional isCurrent Boolean = 4
  optional employedAt Organization = 5
 }
message Event
 {
  optional startedAtTime Date = 1
  optional endedAtTime Date = 2
  optional duration Float = 3
  optional isCurrent Boolean = 4
 }
message FamilialRelationship
 {
  optional startedAtTime Date = 1
  optional endedAtTime Date = 2
  optional relatedTo String = 3
  type FamilialRelationshipType = 4
  relatedTo Person = 5
 }
message MedicalEvent
 {
  optional startedAtTime Date = 1
  optional endedAtTime Date = 2
  optional duration Float = 3
  optional isCurrent Boolean = 4
  optional inLocation Place = 5
  optional diagnosis DiagnosisConcept = 6
  optional procedure ProcedureConcept = 7
 }
// A generic grouping for any identifiable entity
message NamedThing
 {
  id String = 1
  optional name String = 2
  optional description String = 3
  optional image String = 4
 }
// An organization such as a company or university
message Organization
 {
  id String = 1
  optional name String = 2
  optional description String = 3
  optional image String = 4
  optional missionStatement String = 5
  optional foundingDate String = 6
  optional foundingLocation Place = 7
  repeated aliases String = 8
 }
// A person (alive, dead, undead, or fictional).
message Person
 {
  id String = 1
  optional name String = 2
  optional description String = 3
  optional image String = 4
  optional primaryEmail String = 5
  optional birthDate String = 6
  optional ageInYears Integer = 7
  optional gender GenderType = 8
  optional currentAddress Address = 9
  repeated hasEmploymentHistory EmploymentEvent = 10
  repeated hasFamilialRelationships FamilialRelationship = 11
  repeated hasMedicalHistory MedicalEvent = 12
  repeated aliases String = 13
 }
message Place
 {
  id String = 1
  optional name String = 2
  repeated aliases String = 3
 }
message ProcedureConcept
 {
  id String = 1
  optional name String = 2
  optional description String = 3
  optional image String = 4
 }
message Relationship
 {
  optional startedAtTime Date = 1
  optional endedAtTime Date = 2
  optional relatedTo String = 3
  optional type String = 4
 }
