Summary Table

Categories Total Count
PII 0
URL 0
DNS 0
EKL 0
IP 0
PORT 0
VsID 0
CF 0
AI 0
VPD 0
PL 0
Other 0

File Content

package gov.va.med.pbm.ampl.fhir.unmarshall.dstu2.unbundle;

import java.time.OffsetDateTime;
import java.util.List;

import ca.uhn.fhir.model.api.ExtensionDt;
import ca.uhn.fhir.model.dstu2.composite.CodeableConceptDt;
import ca.uhn.fhir.model.dstu2.composite.CodingDt;
import ca.uhn.fhir.model.dstu2.composite.HumanNameDt;
import ca.uhn.fhir.model.primitive.DateTimeDt;
import gov.va.med.pbm.ampl.model.Facility;
import gov.va.med.pbm.ampl.model.patientdemographics.Person;
import gov.va.med.pbm.ampl.utility.DateUtility;

/**
* The UnbundleUndeclaredExtension class marshals undeclared resource extensions.
*
* @author Ian Meinert
*
*/
public class UnbundleUndeclaredExtension {

private List<ExtensionDt> resourceExtensions;

/**
* Overloaded constructor accepting a collection of {@link ExtensionDt}.
*
* @param resourceExtensions {@link ExtensionDt}
*/
public UnbundleUndeclaredExtension(List<ExtensionDt> resourceExtensions) {
this.resourceExtensions = resourceExtensions;
}

/**
* This method builds a {@link Facility} from a given list of {@link ExtensionDt}.
*
* @param url the url
*
* @return {@link Facility}
*/
public Facility getFacilityFromCodingDt(String url) {
Facility facility = new Facility();

for (ExtensionDt resourceExtension : resourceExtensions) {

// "valueCoding" : Coding
// "valueCodeableConcept" : CodeableConcept
if (resourceExtension.getUrlAsString().equalsIgnoreCase(url)) {

CodingDt value = (CodingDt) resourceExtension.getValue();

String code = value.getCode();
String display = value.getDisplayElement().getValueAsString();

facility.setStationNumber(code);
facility.setSiteName(display);
}
}

return facility;
}

/**
* This method builds a {@link Facility} from a list of {@link ExtensionDt} accessed by a given url.
*
* @param url the url
*
* @return {@link Facility}
*/
public Facility getFacilityFromCodeableConceptDt(String url) {
Facility facility = new Facility();

for (ExtensionDt resourceExtension : resourceExtensions) {

// "valueCoding" : Coding
// "valueCodeableConcept" : CodeableConcept
if (resourceExtension.getUrlAsString().equalsIgnoreCase(url)) {

CodeableConceptDt concept = (CodeableConceptDt) resourceExtension.getValue();

CodingDt value = concept.getCodingFirstRep();

String code = value.getCode();
String display = value.getDisplayElement().getValueAsString();

facility.setStationNumber(code);
facility.setSiteName(display);
}
}

return facility;
}

/**
* This method builds a {@link Person} from a list of {@link ExtensionDt} accessed by a given url.
*
* @param url the url
*
* @return {@link Person}
*/
public Person getPersonFromHumanName(String url) {
Person person = new Person();

// "valueHumanName" : HumanName
for (ExtensionDt resourceExtension : resourceExtensions) {
if (resourceExtension.getUrlAsString().equalsIgnoreCase(url)) {

HumanNameDt value = (HumanNameDt) resourceExtension.getValue();

person.setName(value.getNameAsSingleString());
}
}

return person;
}

/**
* This method builds a String from a list of {@link ExtensionDt} accessed by a given url.
*
* @param url the URL
*
* @return String
*/
public String getCodingDisplayValue(String url) {
String value = new String();

for (ExtensionDt resourceExtension : resourceExtensions) {
if (resourceExtension.getUrlAsString().equalsIgnoreCase(url)) {
value = ((CodeableConceptDt) resourceExtension.getValue()).getCoding().get(0).getDisplay();
}
}

return value;
}

/**
* This method builds a OffsetDateTime from a list of {@link ExtensionDt} accessed by a given url.
*
* @param url the URL
*
* @return OffsetDateTime
*/
public OffsetDateTime getDateTimeValue(String url) {
OffsetDateTime value = null;

for (ExtensionDt resourceExtension : resourceExtensions) {
if (resourceExtension.getUrlAsString().equalsIgnoreCase(url)) {
value = DateUtility.offsetDateTimeValueOf(((DateTimeDt) resourceExtension.getValue()).getValueAsString());
}
}

return value;
}
}