マッピングアノテーション
@FhirResourcePart
@FhirResourcePart(resourceType="Patient", converter=PatientPropertyConverter.class)
public class PatientResourceResource extends ResourceResource\<Patient> {
ResourceResourceインターフェイスの実装クラスに付与するアノテーションです。
マッピング先のFHIRリソースクラスの単純名と、値の変換に使用するコンバータクラスを指定します。
引数
- resourceType(省略不可)
- マッピング先のFHIRリソースクラスの単純名を指定します。
- converter(省略不可)
- 値の変換に使用するコンバータクラスを指定します。
@FhirComposition
@FhirComposition
private PatientEntity patientEntity;
@FhirComposition(target="contact", tag = "Patient")
public List\<PersonEntity> personEntities;
ResourceResourceインターフェイスの実装クラスが保持している、DBエンティティのフィールドに付与するアノテーションです。
指定したフィールドが、DBエンティティであることを示します。
@FhirCompositionはネストが可能です。
@FhirCompositionが付与されたフィールドのクラス内で、さらに他のクラスを@FhirCompositionで参照可能です。
引数
- target
- この引数を省略した場合は、対象のDBエンティティが、FHIRリソースそのものの値を保持していることを示します。その場合、指定したフィールドは
Listであってはなりません。 - この引数を指定した場合は、対象のDBエンティティが、指定した値を名前とするFHIRリソースプロパティの値を保持していることを示します。
- この引数を省略した場合は、対象のDBエンティティが、FHIRリソースそのものの値を保持していることを示します。その場合、指定したフィールドは
- choice
- マッピング先のFHIRリソースプロパティがChoice型の場合に、代入する型の単純名を指定します。
- targetTag
- 対象のDBエンティティが、複数のFHIRリソースのマッピングに使用される場合に指定します。
- 対象のDBエンティティに含まれるマッピングアノテーションの内、この値と一致する
tagが指定されている、またはtagが指定されていないアノテーションのみが有効になります。
- tag
- 対象のDBエンティティが、複数のFHIRリソースのマッピングに使用される場合に指定します。
- この値が
@FhirCompositionのtargetTagの指定と一致する場合のみ、本アノテーションが有効になります。 - 配列で複数の
tagを指定可能です。
// 配列で複数のtagを指定可能
tag = {"tag1", "tag2"}
// tagがひとつだけの場合は中括弧を省略可能
tag = "tag1"
継承関係を持ったDBエンティティクラスに対するアノテーション
例えばChildEntity extends ParentEntityのような場合、ChildEntityとParentEntityの両方のフィールドにアノテーションを付与します。
さらにResourceResourceインターフェイスの実装クラスに、以下のようにアノテーションを付与します。
@FhirComposition
private ParentEntity parentEntity;
@FhirComposition
private ChildEntity childEntity;
@Override
public void preProcess(Xxx dst, PropertyConverter conv) {
this.parentEntity = (ParentEntity) childEntity;
// ChildEntityのsetterなどで設定してもよい
}