CMSgov/dpc-app

View on GitHub
dpc-common/src/main/java/gov/cms/dpc/common/entities/ContactEntity.java

Summary

Maintainability
A
0 mins
Test Coverage
package gov.cms.dpc.common.entities;

import org.hl7.fhir.dstu3.model.ContactPoint;
import org.hl7.fhir.dstu3.model.Organization;

import javax.persistence.*;
import javax.validation.Valid;
import java.io.Serializable;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;

@Entity(name = "organization_contacts")
public class ContactEntity implements Serializable {
    public static final long serialVersionUID = 42L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", updatable = false, nullable = false, columnDefinition = "uuid")
    private UUID id;
    @ManyToOne
    private OrganizationEntity organization;
    @Valid
    @Embedded
    private NameEntity name;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "contactEntity", orphanRemoval = true)
    private List<ContactPointEntity> telecom;
    @Valid
    @Embedded
    private AddressEntity address;

    public ContactEntity() {
        // Not used
    }

    public UUID getId() {
        return id;
    }

    public void setId(UUID id) {
        this.id = id;
    }

    public OrganizationEntity getOrganization() {
        return organization;
    }

    public void setOrganization(OrganizationEntity organization) {
        this.organization = organization;
    }

    public NameEntity getName() {
        return name;
    }

    public void setName(NameEntity name) {
        this.name = name;
    }

    public List<ContactPointEntity> getTelecom() {
        return telecom;
    }

    public void setTelecom(List<ContactPointEntity> telecom) {
        this.telecom = telecom;
    }

    public AddressEntity getAddress() {
        return address;
    }

    public void setAddress(AddressEntity address) {
        this.address = address;
    }

    public Organization.OrganizationContactComponent toFHIR() {
        final Organization.OrganizationContactComponent contactComponent = new Organization.OrganizationContactComponent();

        contactComponent.setName(this.name.toFHIR());

        final List<ContactPoint> cps = this.telecom
                .stream()
                .map(ContactPointEntity::toFHIR)
                .collect(Collectors.toList());

        contactComponent.setTelecom(cps);
        contactComponent.setAddress(this.address.toFHIR());

        return contactComponent;
    }
}