All Downloads are FREE. Search and download functionalities are using the official Maven repository.

dev.dsf.fhir.adapter.AbstractMetdataResource Maven / Gradle / Ivy

package dev.dsf.fhir.adapter;

import java.util.List;
import java.util.function.BiConsumer;
import java.util.function.Function;
import java.util.function.Predicate;

import org.hl7.fhir.r4.model.Identifier;
import org.hl7.fhir.r4.model.MetadataResource;

public abstract class AbstractMetdataResource extends AbstractResource
{
	private record Element(String urlAndVersion, List identifier, String name, String title,
			Boolean experimental, String date)
	{
	}

	private final Predicate hasIdentifier;
	private final Function> getIdentifier;

	public AbstractMetdataResource(Class resourceType)
	{
		this(resourceType, null, null);
	}

	public AbstractMetdataResource(Class resourceType, Predicate hasIdentifier,
			Function> getIdentifier)
	{
		super(resourceType,
				ActiveOrStatus.status(MetadataResource::hasStatusElement, MetadataResource::getStatusElement));

		this.hasIdentifier = hasIdentifier;
		this.getIdentifier = getIdentifier;
	}

	@Override
	protected void doSetAdditionalVariables(BiConsumer variables, R resource)
	{
		String url = getUri(resource, MetadataResource::hasUrlElement, MetadataResource::getUrlElement);
		String version = getString(resource, MetadataResource::hasVersionElement, MetadataResource::getVersionElement);
		String urlAndVersion = (url != null ? url : "") + " | " + (version != null ? version : "");
		List identifier = hasIdentifier != null && getIdentifier != null
				? getIdentifiers(resource, hasIdentifier, getIdentifier)
				: null;
		String name = getString(resource, MetadataResource::hasNameElement, MetadataResource::getNameElement);
		String title = getString(resource, MetadataResource::hasTitleElement, MetadataResource::getTitleElement);
		Boolean experimental = getBoolean(resource, MetadataResource::hasExperimentalElement,
				MetadataResource::getExperimentalElement);
		String date = getDateTime(resource, MetadataResource::hasDateElement, MetadataResource::getDateElement);

		variables.accept("metadataResource", new Element(urlAndVersion, identifier, name, title, experimental, date));
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy