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;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Optional;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import ca.uhn.fhir.model.dstu2.resource.Bundle;
import ca.uhn.fhir.model.dstu2.resource.Bundle.Entry;
import gov.va.med.pbm.ampl.fhir.client.Dstu2Client;
import gov.va.med.pbm.ampl.fhir.unmarshall.AbstractUnmarshaller;
import gov.va.med.pbm.ampl.fhir.unmarshall.dstu2.unbundle.UnbundleProgressNote;
import gov.va.med.pbm.ampl.model.ProgressNote;
import gov.va.med.pbm.ampl.utility.ESAPIValidationType;
import gov.va.med.pbm.ampl.utility.ESAPIValidator;

/**
* The UnmarshallProgressNotes class marshals the FHIR Composition resource to a client readable JSON format.
*
* @author Ian Meinert
*
*/
public class UnmarshallDocumentReference extends AbstractUnmarshaller<ProgressNote> {

/**
* The application logger.
*/
static final Logger LOGGER = LoggerFactory.getLogger(UnmarshallDocumentReference.class);

/**
* The overloaded constructor accepting the Dstu2Client, patient Id, search term, and sort term.
* <p>
* The constructor also passes these parameters to the super class, along with the PatientDetails class definition.
*
* @param client the DSTU2 client
* @param patientId the patient id
* @param searchTerm the search field, operation, and value
* @param sortTerm the field and direction to sort
*/
public UnmarshallDocumentReference(Dstu2Client client, String patientId, Optional<String> searchTerm,
Optional<String> sortTerm) {
super(client, patientId, searchTerm, sortTerm);
}

/**
* The overloaded constructor accepting the Dstu2Client, patient Id, search term, sort term, size, and page.
* <p>
* The constructor also passes these parameters to the super class, along with the class definition.
*
* @param client the DSTU2 client
* @param patientId the patient id
* @param searchTerm the search field, operation, and value
* @param sortTerm the field and direction to sort
* @param size the limit of the results per page
* @param page the page number for the results
*/
public UnmarshallDocumentReference(Dstu2Client client, String patientId, Optional<String> searchTerm,
Optional<String> sortTerm, Optional<Integer> page, Optional<Integer> size) {
super(client, patientId, searchTerm, sortTerm, page, size);
}

/**
* This method queries the FHIR server for all patients that match the patient Id.
*/
@Override
public void getAllPatientsById() {

// the collection of progress notes to be returned
Collection<ProgressNote> progressNotes = new ArrayList<ProgressNote>();
String vId = ESAPIValidator.validateStringInput(this.getPatientId().toString(), ESAPIValidationType.CROSS_SITE_SCRIPTING_REFLECTED);
Optional<Bundle> optBundle = Optional
.ofNullable(super.getClient().searchProgressNotesByPatientId(vId));

if (optBundle.isPresent()) {
List<Entry> entries = optBundle.get().getEntry();
UnbundleProgressNote unbundleProgressNote = new UnbundleProgressNote(vId, entries);

progressNotes = unbundleProgressNote.getEntries();

}

LOGGER.info("Storing {} record(s)", progressNotes.size());
super.setCollection(progressNotes);
}
}