private void logRequest(ProvideAndRegisterDocumentSetRequestType req) { log.info("###### SubmitObjectRequest:"+req.getSubmitObjectsRequest()); List<Document> docs = req.getDocument(); log.info("###### Documents:"+docs); if (docs != null) { StringBuilder sb = new StringBuilder(); sb.append("######Number of Documents:").append(docs.size()); int dumpValLen; for (Document d : docs) { sb.append("\nDocument ID:"+d.getId()) .append(" size:").append(d.getValue().length) .append(" value:"); try { dumpValLen = Math.min(d.getValue().length, 40); sb.append(new String(d.getValue(), 0, dumpValLen)); if (dumpValLen == 40) sb.append("..."); } catch (Exception x) { log.warn("Failed to convert value in String!", x); } } log.info(sb.toString()); } }
/** * Create an instance of {@link ProvideAndRegisterDocumentSetRequestType } * */ public ProvideAndRegisterDocumentSetRequestType createProvideAndRegisterDocumentSetRequestType() { return new ProvideAndRegisterDocumentSetRequestType(); }
public static Map<String,Document> getDocuments(ProvideAndRegisterDocumentSetRequestType req) { List<Document> docs = req.getDocument(); Map<String,Document> map = new HashMap<String,Document>(docs.size()); Document doc; for ( int i = 0, len = docs.size() ; i < len ; i++) { doc = docs.get(i); map.put(doc.getId(), doc); } return map; }
private String getSourceID(ProvideAndRegisterDocumentSetRequestType req) { List<JAXBElement<? extends IdentifiableType>> objs = req.getSubmitObjectsRequest().getRegistryObjectList().getIdentifiable(); IdentifiableType obj; for (int i = 0, len = objs.size() ; i < len ; i++) { obj = objs.get(i).getValue(); if (obj instanceof RegistryPackageType) { return InfosetUtil.getExternalIdentifierValue(XDSConstants.UUID_XDSSubmissionSet_sourceId, (RegistryPackageType)obj); } } return null; }
public PnRRequest(String sourceID, String submissionSetUID, String patID, String srcPatID) { if (sourceID == null || submissionSetUID == null || patID == null || srcPatID == null) { StringBuilder sb = new StringBuilder(); sb.append("Parameter values must not be null! ("); if (sourceID == null) sb.append("sourceID,"); if (submissionSetUID == null) sb.append("submissionSetUID,"); if (patID == null) sb.append("patID,"); if (srcPatID == null) sb.append("srcPatID,"); sb.setCharAt(sb.length()-1, ')'); throw new IllegalArgumentException(sb.toString()); } this.submissionSetUID = submissionSetUID; patientID = patID; srcPatIDSlot = Util.createSlot(XDSConstants.SLOT_NAME_SOURCE_PATIENT_ID, null, srcPatID); provideAndRegisterDocumentSetRequest = iheFactory.createProvideAndRegisterDocumentSetRequestType(); SubmitObjectsRequest sor = Util.rimFactory.createSubmitObjectsRequest(); registryObjectList = Util.rimFactory.createRegistryObjectListType(); sor.setRegistryObjectList(registryObjectList); provideAndRegisterDocumentSetRequest.setSubmitObjectsRequest(sor); submissionSet = Util.rimFactory.createRegistryPackageType(); submissionSet.setId(SUBMISSION_SET_ID); submissionSet.getExternalIdentifier().add(Util.createExternalIdentifier(nextID(), XDSConstants.UUID_XDSSubmissionSet_uniqueId, SUBMISSION_SET_ID, submissionSetUID, "XDSSubmissionSet.uniqueId")); submissionSet.getExternalIdentifier().add(Util.createExternalIdentifier(nextID(), XDSConstants.UUID_XDSSubmissionSet_patientId, SUBMISSION_SET_ID, patID, "XDSSubmissionSet.patientId")); submissionSet.getExternalIdentifier().add(Util.createExternalIdentifier(nextID(), XDSConstants.UUID_XDSSubmissionSet_sourceId, SUBMISSION_SET_ID, sourceID, "XDSSubmissionSet.sourceId")); registryObjectList.getIdentifiable().add(Util.rimFactory.createRegistryPackage(submissionSet)); submissionSet.getClassification().add(Util.createClassification(nextID(), XDSConstants.UUID_XDSSubmissionSet, SUBMISSION_SET_ID)); }
public void removeFromRequest() { pnrRequest.getProvideAndRegisterDocumentSetRequest().getDocument().remove(doc); List<JAXBElement<? extends IdentifiableType>> list = pnrRequest.getRegistryObjectList().getIdentifiable(); for (int i = 0, len = list.size() ; i < len ; i++) { if (list.get(i).getValue().getId().equals(id)) { list.remove(i); } } pnrRequest.removeAssociation(assoc); }
private String getSourceID(ProvideAndRegisterDocumentSetRequestType req) throws XDSException { List<JAXBElement<? extends IdentifiableType>> objs = req.getSubmitObjectsRequest().getRegistryObjectList().getIdentifiable(); IdentifiableType obj; for (int i = 0, len = objs.size() ; i < len ; i++) { obj = objs.get(i).getValue(); if (obj instanceof RegistryPackageType) { return InfosetUtil.getExternalIdentifierValue(XDSConstants.UUID_XDSSubmissionSet_sourceId, (RegistryPackageType)obj); } } throw new XDSException(XDSException.XDS_ERR_REPOSITORY_METADATA_ERROR, "Missing XDSSubmissionSet.sourceId!", null); }
private void logRequest(ProvideAndRegisterDocumentSetRequestType req) { log.info("###### SubmitObjectRequest:"+req.getSubmitObjectsRequest()); List<Document> docs = req.getDocument(); log.info("###### Documents:"+docs); if (docs != null) { StringBuilder sb = new StringBuilder(); sb.append("######Number of Documents:").append(docs.size()); int dumpValLen; for (Document d : docs) { sb.append("\nDocument ID:"+d.getId()) .append(" size:").append(d.getValue().length) .append(" value:"); try { dumpValLen = Math.min(d.getValue().length, 40); sb.append(new String(d.getValue(), 0, dumpValLen)); if (dumpValLen == 40) sb.append("..."); } catch (Exception x) { log.warn("Failed to convert value in String!", x); } } log.info(sb.toString()); } } private XdsRepository getConfig() {
public DocumentEntry(PnRRequest pnrReq, String uniqueID, byte[] content, String mime) { this.pnrRequest = pnrReq; doc = PnRRequest.iheFactory.createProvideAndRegisterDocumentSetRequestTypeDocument(); ProvideAndRegisterDocumentSetRequestType pnr = pnrRequest.getProvideAndRegisterDocumentSetRequest(); pnr.getDocument().add(doc); id = pnrReq.nextDocumentID(); doc.setId(id); doc.setValue(content); metadata = Util.rimFactory.createExtrinsicObjectType(); metadata.setObjectType(XDSConstants.UUID_XDSDocumentEntry); metadata.setId(id); metadata.setMimeType(mime); List<JAXBElement<? extends IdentifiableType>> list = pnrRequest.getRegistryObjectList().getIdentifiable(); list.add(Util.rimFactory.createExtrinsicObject(metadata)); metadata.getExternalIdentifier().add(Util.createExternalIdentifier(pnrRequest.nextID(), XDSConstants.UUID_XDSDocumentEntry_patientId, id, pnrRequest.getPatientID(), XDS_DOCUMENT_ENTRY_PATIENT_ID)); metadata.getSlot().add(pnrRequest.getSrcPatIDSlot()); if (pnrRequest.getSrcPatInfo() != null) { metadata.getSlot().add(pnrRequest.getSrcPatInfo()); } metadata.getExternalIdentifier().add(Util.createExternalIdentifier(pnrRequest.nextID(), XDSConstants.UUID_XDSDocumentEntry_uniqueId, id, uniqueID, XDS_DOCUMENT_ENTRY_UNIQUE_ID)); this.uniqueID = uniqueID; assoc = pnrReq.addAssociation(PnRRequest.SUBMISSION_SET_ID, id, XDSConstants.HAS_MEMBER); }
private List<ExtrinsicObjectType> checkRequest(ProvideAndRegisterDocumentSetRequestType req) throws XDSException { SubmitObjectsRequest sor = req.getSubmitObjectsRequest(); RegistryPackageType submissionSet = InfosetUtil.getRegistryPackage(sor, XDSConstants.UUID_XDSSubmissionSet); if ( submissionSet == null ) { log.error("No RegistryPackage id=SubmissionSet found!"); throw new XDSException( XDSException.XDS_ERR_REPOSITORY_ERROR, XDSException.XDS_ERR_MISSING_REGISTRY_PACKAGE, null); } List<ExtrinsicObjectType> extrObjs = InfosetUtil.getExtrinsicObjects(req.getSubmitObjectsRequest()); checkPatientIDs(req, submissionSet, extrObjs); Map<String, Document> docs = InfosetUtil.getDocuments(req); if ( extrObjs.size() > docs.size() ) { log.warn("Missing Documents! Found more ExtrinsicObjects("+extrObjs.size()+") than Documents("+docs.size()+")!"); throw new XDSException(XDSException.XDS_ERR_MISSING_DOCUMENT, "", null); } else if ( extrObjs.size() < docs.size() ) { log.warn("Missing Document Metadata! Found less ExtrinsicObjects("+extrObjs.size()+") than Documents("+docs.size()+")!"); throw new XDSException(XDSException.XDS_ERR_MISSING_DOCUMENT_METADATA, "", null); } return extrObjs; }
private List<ExtrinsicObjectType> checkRequest(ProvideAndRegisterDocumentSetRequestType req) throws XDSException { SubmitObjectsRequest sor = req.getSubmitObjectsRequest(); RegistryPackageType submissionSet = InfosetUtil.getRegistryPackage(sor, XDSConstants.UUID_XDSSubmissionSet); if ( submissionSet == null ) { log.error("No RegistryPackage id=SubmissionSet found!"); throw new XDSException( XDSException.XDS_ERR_REPOSITORY_ERROR, XDSException.XDS_ERR_MISSING_REGISTRY_PACKAGE, null); } else if (submissionSet.getId() == null || submissionSet.getId().trim().length() == 0) { throw new XDSException(XDSException.XDS_ERR_REPOSITORY_METADATA_ERROR, "Missing XDSSubmissionSet.entryUUID!", null); } List<ExtrinsicObjectType> extrObjs = InfosetUtil.getExtrinsicObjects(req.getSubmitObjectsRequest()); checkPatientIDs(req, submissionSet, extrObjs); Map<String, Document> docs = InfosetUtil.getDocuments(req); if ( extrObjs.size() > docs.size() ) { log.warn("Missing Documents! Found more ExtrinsicObjects("+extrObjs.size()+") than Documents("+docs.size()+")!"); throw new XDSException(XDSException.XDS_ERR_MISSING_DOCUMENT, "", null); } else if ( extrObjs.size() < docs.size() ) { log.warn("Missing Document Metadata! Found less ExtrinsicObjects("+extrObjs.size()+") than Documents("+docs.size()+")!"); throw new XDSException(XDSException.XDS_ERR_MISSING_DOCUMENT_METADATA, "", null); } return extrObjs; }
private String checkPatientIDs(ProvideAndRegisterDocumentSetRequestType req, RegistryPackageType submissionSet, List<ExtrinsicObjectType> extrObjs) throws XDSException { String submissionPatId = InfosetUtil.getExternalIdentifierValue(XDSConstants.UUID_XDSSubmissionSet_patientId, submissionSet); String docPatId; ExtrinsicObjectType eo; for ( int i = 0, len = extrObjs.size() ; i < len ; i++ ) { eo = extrObjs.get(i); docPatId = InfosetUtil.getExternalIdentifierValue(XDSConstants.UUID_XDSDocumentEntry_patientId, eo); if ( docPatId != null && !docPatId.equals(submissionPatId)) { String msg = "XDSDocumentEntry.patientId ("+docPatId+")and XDSSubmissionSet.patientId ("+submissionPatId+") doesn't match! ExtrinsicObject.Id:"+eo.getId(); log.warn(msg); throw new XDSException(XDSException.XDS_ERR_PATID_DOESNOT_MATCH, msg, null); } } RegistryPackageType folder = InfosetUtil.getRegistryPackage(req.getSubmitObjectsRequest(), XDSConstants.UUID_XDSFolder); String folderPatId = folder == null ? null : InfosetUtil.getExternalIdentifierValue(XDSConstants.UUID_XDSFolder_patientId, folder); if ( folderPatId != null && !folderPatId.equals(submissionPatId)) { String msg = "XDSFolder.patientId ("+folderPatId+")and XDSSubmissionSet.patientId ("+submissionPatId+") doesn't match!"; log.warn(msg); throw new XDSException(XDSException.XDS_ERR_PATID_DOESNOT_MATCH, msg, null); } return submissionPatId; }
private String checkPatientIDs(ProvideAndRegisterDocumentSetRequestType req, RegistryPackageType submissionSet, List<ExtrinsicObjectType> extrObjs) throws XDSException { String submissionPatId = InfosetUtil.getExternalIdentifierValue(XDSConstants.UUID_XDSSubmissionSet_patientId, submissionSet); String docPatId; ExtrinsicObjectType eo; for ( int i = 0, len = extrObjs.size() ; i < len ; i++ ) { eo = extrObjs.get(i); docPatId = InfosetUtil.getExternalIdentifierValue(XDSConstants.UUID_XDSDocumentEntry_patientId, eo); if ( docPatId != null && !docPatId.equals(submissionPatId)) { String msg = "XDSDocumentEntry.patientId ("+docPatId+")and XDSSubmissionSet.patientId ("+submissionPatId+") doesn't match! ExtrinsicObject.Id:"+eo.getId(); log.warn(msg); throw new XDSException(XDSException.XDS_ERR_PATID_DOESNOT_MATCH, msg, null); } } RegistryPackageType folder = InfosetUtil.getRegistryPackage(req.getSubmitObjectsRequest(), XDSConstants.UUID_XDSFolder); String folderPatId = InfosetUtil.getExternalIdentifierValue(XDSConstants.UUID_XDSFolder_patientId, folder); if ( folderPatId != null && !folderPatId.equals(submissionPatId)) { String msg = "XDSFolder.patientId ("+folderPatId+")and XDSSubmissionSet.patientId ("+submissionPatId+") doesn't match!"; log.warn(msg); throw new XDSException(XDSException.XDS_ERR_PATID_DOESNOT_MATCH, msg, null); } return submissionPatId; }
List<ExtrinsicObjectType> extrObjs = checkRequest(req); storedUIDs = storeDocuments(req, extrObjs); SubmitObjectsRequest submitRequest = req.getSubmitObjectsRequest(); rsp = dispatchSubmitObjectsRequest(submitRequest, registryURL); } catch (Exception x) { String[] submUIDAndpatid = getSubmissionUIDandPatID(req.getSubmitObjectsRequest()); if (storedUIDs != null) { XDSAudit.logRepositoryPnRExport(submUIDAndpatid[0], submUIDAndpatid[1], info, registryURL, success);
XDSDocument[] storedDocs = null; URL registryURL = null; String[] submUIDAndpatid = getSubmissionUIDandPatID(req.getSubmitObjectsRequest()); try { if (submUIDAndpatid[1] == null) List<ExtrinsicObjectType> extrObjs = checkRequest(req); storedDocs = storeDocuments(req, extrObjs, groupID); SubmitObjectsRequest submitRequest = req.getSubmitObjectsRequest(); rsp = dispatchSubmitObjectsRequest(submitRequest, registryURL); } catch (Exception x) {