use of org.hl7.fhir.r5.model.ListResource in project nia-patient-switching-standard-adaptor by NHSDigital.
the class ConsultationListMapperTest method setUpConsultation.
private ListResource setUpConsultation() {
ListResource consultation = new ListResource();
consultation.setDateElement(DateFormatUtil.parseToDateTimeType("20130213152000")).setTitle("test-title").setSubject(new Reference(new Patient().setId(PATIENT_ID))).setEncounter(new Reference(encounter)).setId(ENCOUNTER_ID + CONSULTATION_ID_SUFFIX);
return consultation;
}
use of org.hl7.fhir.r5.model.ListResource in project nia-patient-switching-standard-adaptor by NHSDigital.
the class ConsultationListMapperTest method setUpTopic.
private ListResource setUpTopic() {
ListResource consultation = new ListResource();
consultation.setDateElement(DateFormatUtil.parseToDateTimeType("20110213152000")).setTitle("test-title").setSubject(new Reference(new Patient().setId(PATIENT_ID))).setEncounter(new Reference(encounter)).setId(COMPOUND_STATEMENT_ID);
return consultation;
}
use of org.hl7.fhir.r5.model.ListResource in project MobileAccessGateway by i4mi.
the class Iti65RequestConverter method convert.
/**
* convert ITI-65 to ITI-41 request
* @param requestBundle
* @return
*/
public ProvideAndRegisterDocumentSet convert(@Body Bundle requestBundle) {
SubmissionSet submissionSet = new SubmissionSet();
ProvideAndRegisterDocumentSetBuilder builder = new ProvideAndRegisterDocumentSetBuilder(true, submissionSet);
// create mapping fullUrl -> resource for each resource in bundle
Map<String, Resource> resources = new HashMap<String, Resource>();
ListResource manifestNeu = null;
for (Bundle.BundleEntryComponent requestEntry : requestBundle.getEntry()) {
Resource resource = requestEntry.getResource();
/*if (resource instanceof DocumentManifest) {
manifest = (DocumentManifest) resource;
} else*/
if (resource instanceof DocumentReference) {
resources.put(requestEntry.getFullUrl(), resource);
} else if (resource instanceof ListResource) {
manifestNeu = (ListResource) resource;
// resources.put(requestEntry.getFullUrl(), resource);
} else if (resource instanceof Binary) {
resources.put(requestEntry.getFullUrl(), resource);
} else {
throw new IllegalArgumentException(resource + " is not allowed here");
}
}
/*if (manifest != null) {
processDocumentManifest(manifest, submissionSet);
} else {*/
processDocumentManifest(manifestNeu, submissionSet);
// set limited metadata
for (CanonicalType profile : requestBundle.getMeta().getProfile()) {
if ("http://ihe.net/fhir/StructureDefinition/IHE_MHD_Provide_Comprehensive_DocumentBundle".equals(profile.getValue())) {
submissionSet.setLimitedMetadata(false);
} else if ("http://ihe.net/fhir/StructureDefinition/IHE_MHD_Provide_Minimal_DocumentBundle".equals(profile.getValue())) {
submissionSet.setLimitedMetadata(true);
} else if ("http://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.ProvideBundle".equals(profile.getValue())) {
submissionSet.setLimitedMetadata(false);
} else if ("http://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Minimal.ProvideBundle".equals(profile.getValue())) {
submissionSet.setLimitedMetadata(true);
}
}
// process all resources referenced in DocumentManifest.content
for (ListEntryComponent listEntry : manifestNeu.getEntry()) {
Reference content = listEntry.getItem();
String refTarget = content.getReference();
Resource resource = resources.get(refTarget);
if (resource instanceof DocumentReference) {
DocumentReference documentReference = (DocumentReference) resource;
Document doc = new Document();
DocumentEntry entry = new DocumentEntry();
processDocumentReference(documentReference, entry);
doc.setDocumentEntry(entry);
entry.setRepositoryUniqueId(config.getRepositoryUniqueId());
// create associations
for (DocumentReferenceRelatesToComponent relatesTo : documentReference.getRelatesTo()) {
Reference target = relatesTo.getTarget();
DocumentRelationshipType code = relatesTo.getCode();
Association association = new Association();
switch(code) {
case REPLACES:
association.setAssociationType(AssociationType.REPLACE);
break;
case TRANSFORMS:
association.setAssociationType(AssociationType.TRANSFORM);
break;
case SIGNS:
association.setAssociationType(AssociationType.SIGNS);
break;
case APPENDS:
association.setAssociationType(AssociationType.APPEND);
break;
default:
}
association.setSourceUuid(entry.getEntryUuid());
association.setTargetUuid(transformUriFromReference(target));
builder.withAssociation(association);
}
// get binary content from attachment.data or from referenced Binary resource
Attachment attachment = documentReference.getContentFirstRep().getAttachment();
if (attachment.hasData()) {
doc.setDataHandler(new DataHandler(new ByteArrayDataSource(attachment.getData(), attachment.getContentType())));
byte[] decoded = attachment.getData();
entry.setSize((long) decoded.length);
entry.setHash(SHAsum(decoded));
} else if (attachment.hasUrl()) {
String contentURL = attachment.getUrl();
Resource binaryContent = resources.get(contentURL);
if (binaryContent instanceof Binary) {
String contentType = attachment.getContentType();
Binary binary = (Binary) binaryContent;
if (binary.hasContentType() && !binary.getContentType().equals(contentType))
throw new InvalidRequestException("ContentType in Binary and in DocumentReference must match");
doc.setDataHandler(new DataHandler(new ByteArrayDataSource(binary.getData(), contentType)));
byte[] decoded = binary.getData();
entry.setSize((long) decoded.length);
entry.setHash(SHAsum(decoded));
Identifier masterIdentifier = documentReference.getMasterIdentifier();
binary.setUserData("masterIdentifier", noPrefix(masterIdentifier.getValue()));
}
}
builder.withDocument(doc);
}
}
return builder.build();
}
use of org.hl7.fhir.r5.model.ListResource in project MobileAccessGateway by i4mi.
the class Iti65ResponseConverter method translateToFhir.
/**
* convert ITI-41 response to ITI-65 response
*/
@Override
public Object translateToFhir(Response input, Map<String, Object> parameters) {
if (input.getStatus().equals(Status.SUCCESS)) {
Bundle responseBundle = new Bundle();
Bundle requestBundle = (Bundle) parameters.get(Utils.KEPT_BODY);
responseBundle.getMeta().addProfile("http://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.ProvideDocumentBundleResponse");
for (Bundle.BundleEntryComponent requestEntry : requestBundle.getEntry()) {
Bundle.BundleEntryResponseComponent response = new Bundle.BundleEntryResponseComponent().setStatus("201 Created").setLastModified(new Date());
if (requestEntry.getResource() instanceof Binary) {
String uniqueId = (String) requestEntry.getResource().getUserData("masterIdentifier");
response.setLocation(config.getUriMagXdsRetrieve() + "?uniqueId=" + uniqueId + "&repositoryUniqueId=" + config.getRepositoryUniqueId());
} else if (requestEntry.getResource() instanceof ListResource) {
String id = config.getSchemeMapper().getScheme(((ListResource) requestEntry.getResource()).getId());
response.setLocation("List/" + id);
} else if (requestEntry.getResource() instanceof DocumentReference) {
String id = config.getSchemeMapper().getScheme(((DocumentReference) requestEntry.getResource()).getId());
response.setLocation("DocumentReference/" + id);
}
responseBundle.addEntry().setResponse(response);
}
return responseBundle;
} else {
processError(input);
return null;
}
}
Aggregations