Я не совсем уверен в вашем актуальном вопросе . Отсутствие вопросительных знаков делает это немного сложным для понимания - однако я постараюсь ответить на то, что казалось вопросом.
Медицинские карты, врачи и пациенты - это потенциально совокупные корни по отношению к чему-либо: все они существуют в реальном мире, вы даже можете прикоснуться к ним, и каждый из них «объединяет» другие объекты или фрагменты информации. Однако вам может не потребоваться моделировать объекты в той степени, в которой они фактически становятся совокупными корнями - это зависит от точных требований вашего приложения.
Однако эти объекты не агрегируют друг друга. Врачи могут существовать без медицинской документации, как и пациенты. Жаль, что в медицинских записях нуждаются оба доктора и , поэтому они не могут быть агрегированы ни одним из них. Таким образом, они становятся сущностью.
Каждый из вышеупомянутых должен иметь свою индивидуальность. Обратите внимание, что эти объекты живут, даже если их связанные элементы не. Совершенно очевидно, что врач остается в системе, даже если пациент этого не делает, но, что более важно, документы также сохраняются (и могут помешать удалению как пациентов, так и врачей, но это другая проблема).
Я все еще идентифицирую жизненно важные органы в базе данных с помощью своего собственного ключа
В конце концов, вам нужно хранить список жизненно важных органов для каждого пациента. Поскольку вы, вероятно, используете SQL, вы, вероятно, захотите смоделировать это отношение m: n с помощью таблицы компоновщика, поэтому вам придется назначить ключ. Все в порядке. Это недостаток персистентного уровня, а не модели, но вы должны убедиться, что никогда не используете этот ключ ни для чего, кроме внутренних целей приложения.
поэтому это означает, что Encounter не является совокупным корнем
«Встреча», безусловно, не является совокупным корнем по отношению к врачам или пациентам: это опять-таки отношение m: n, на этот раз между врачами и пациентами, поэтому, очевидно, будет много встреч на пациента и на доктора. Если одна из встреч была удалена (например, потому что они были неправильными), это не привело бы к удалению пациента или врача. Кроме того, Encounter
не является совокупным корнем для рецепта: рентген, например, является чем-то, что само по себе имеет смысл. Тем не менее, вы можете сохранить ссылку. Опять же, удаление Encounter
в будущем не вернет рентгеновский снимок.
Встречи не имеют врачей или пациентов. Так же как и врачи «своих» встреч.
Также обратите внимание, что встреча может привести к назначению лекарства или не привести ни к чему.
ПРИМЕЧАНИЕ Ваш метод AddBP()
эффективно удалит старое значение, поэтому оно не должно называться add. Что еще более важно, этот метод делает класс Vital
изменчивым и, следовательно, намного более сложным. Я бы избавился от этого метода.