CMSgov/dpc-app

View on GitHub
dpc-common/src/main/java/gov/cms/dpc/fhir/FHIRBuilders.java

Summary

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

import org.hl7.fhir.dstu3.model.Meta;
import org.hl7.fhir.dstu3.model.Patient;
import org.hl7.fhir.dstu3.model.Practitioner;
import org.hl7.fhir.dstu3.model.Resource;

import java.util.UUID;

public class FHIRBuilders {

    private FHIRBuilders() {
        // Not used
    }

    /**
     * Generates a {@link Practitioner} resource which contains an associated National Provider ID (NPI)
     *
     * @param npi - {@link} NPI of provider to use
     * @return - {@link Practitioner} with associated NPI as an Identifier
     */
    public static Practitioner buildPractitionerFromNPI(String npi) {
        final Practitioner practitioner = new Practitioner();
        practitioner.addIdentifier().setValue(npi).setSystem(DPCIdentifierSystem.NPPES.getSystem());

        return practitioner;
    }

    /**
     * Generates a {@link Patient} resource which contains an associated Medicare Beneficiary ID (MBI)
     *
     * @param mbi - {@link} MBI of provider to use
     * @return - {@link Patient} with associated MBI as an Identifier
     */
    public static Patient buildPatientFromMBI(String mbi) {
        final Patient patient = new Patient();
        patient.addIdentifier().setValue(mbi).setSystem(DPCIdentifierSystem.MBI.getSystem());

        return patient;
    }

    /**
     * Add Organization ID to {@link Resource} {@link Meta}
     *
     * @param resource       - {@link Resource} to add (or update) {@link Meta}
     * @param organizationID - {@link UUID} Organization ID
     */
    public static void addOrganizationTag(Resource resource, UUID organizationID) {
        Meta meta = resource.getMeta();

        if (meta == null) {
            meta = new Meta();
        }

        // Add the Organization ID
        meta.addTag(DPCIdentifierSystem.DPC.getSystem(), organizationID.toString(), "Organization ID");
        resource.setMeta(meta);
    }
}