/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package gov.hhs.fha.nhinc.subscription.dte; //import gov.hhs.fha.nhinc.subscription.*; import gov.hhs.fha.nhinc.common.nhinccommon.QualifiedSubjectIdentifierType; import gov.hhs.fha.nhinc.common.subscription.CriteriaType; import gov.hhs.fha.nhinc.common.subscription.CriterionType; import gov.hhs.fha.nhinc.common.subscription.SubscriptionCriteriaType; import gov.hhs.fha.nhinc.common.subscriptionb2overridefordocuments.NotificationMessageHolderType; import gov.hhs.fha.nhinc.common.subscriptionb2overridefordocuments.NotifyDocumentType; import gov.hhs.fha.nhinc.common.subscriptiondte.TransformEntityNotifyDocumentToSubscriptionCriteriaRequestType; import gov.hhs.fha.nhinc.common.subscriptiondte.TransformEntityNotifyDocumentToSubscriptionCriteriaResponseType; //import gov.hhs.fha.nhinc.subscription_b_2_overridefordocuments.NotificationMessageHolderType; import ihe.iti.xds_b._2007.RetrieveDocumentSetRequestType; import ihe.iti.xds_b._2007.RetrieveDocumentSetRequestType.DocumentRequest; import java.util.List; import oasis.names.tc.ebxml_regrep.xsd.rim._3.ExtrinsicObjectType; import oasis.names.tc.ebxml_regrep.xsd.rim._3.RegistryObjectListType; //import gov.hhs.fha.nhinc.subscriptiondte.*; //import gov.hhs.fha.nhinc.util.format.PatientIdFormatUtil; //import ihe.iti.xds_b._2007.RetrieveDocumentSetRequestType.DocumentRequest; //import java.util.List; //import oasis.names.tc.ebxml_regrep.xsd.rim._3.ClassificationType; //import oasis.names.tc.ebxml_regrep.xsd.rim._3.ExternalIdentifierType; //import oasis.names.tc.ebxml_regrep.xsd.rim._3.ExtrinsicObjectType; //import oasis.names.tc.ebxml_regrep.xsd.rim._3.IdentifiableType; //import oasis.names.tc.ebxml_regrep.xsd.rim._3.RegistryObjectListType; //import oasis.names.tc.ebxml_regrep.xsd.rim._3.SlotType1; //import org.netbeans.xml.schema.homecommunity.HomeCommunity; //import org.netbeans.xml.schema.qualifiedsubjectid.QualifiedSubjectId; /** * * @author rayj */ public class transformEntityNotifyDocumentToSubscriptionCriteriaHelper { public static TransformEntityNotifyDocumentToSubscriptionCriteriaResponseType transformEntityNotifyDocumentToSubscriptionCriteria(TransformEntityNotifyDocumentToSubscriptionCriteriaRequestType request) { TransformEntityNotifyDocumentToSubscriptionCriteriaResponseType response = new TransformEntityNotifyDocumentToSubscriptionCriteriaResponseType(); SubscriptionCriteriaType subscriptionCriteria = new SubscriptionCriteriaType(); RegistryObjectListType documentMetadatas = request.getRegistryObjectList(); List documentList = getDocumentList(request); QualifiedSubjectIdentifierType patient; if (documentList != null) { for (DocumentRequest document : documentList) { ExtrinsicObjectType documentMetaData = DocumentMetadataHelper.findMatchingDocumentMetadata(documentMetadatas, document); //special handling for patient if (documentMetaData != null) { patient = DocumentMetadataHelper.getPatient(documentMetaData); subscriptionCriteria.setSubscribeePatient(patient); //special handling for document type subscriptionCriteria.setCriteria(new CriteriaType()); String documentClassCode = DocumentMetadataHelper.getDocumentClassCode(documentMetaData); CriterionType documentClassCodeCriterion = new CriterionType(); documentClassCodeCriterion.setKey(Constants.DocumentClassCodeSlotName); documentClassCodeCriterion.setValue(documentClassCode); subscriptionCriteria.getCriteria().getCriterion().add(documentClassCodeCriterion); } } } response.setSubscriptionCriteria(subscriptionCriteria); return response; } private static List getDocumentList(TransformEntityNotifyDocumentToSubscriptionCriteriaRequestType entityNotify) { List documentList = null; if ((entityNotify != null) && (entityNotify.getNotifyDocument() != null) && (entityNotify.getNotifyDocument().getNotificationMessage() != null) && (!entityNotify.getNotifyDocument().getNotificationMessage().isEmpty())) { NotificationMessageHolderType notificationMessage = entityNotify.getNotifyDocument().getNotificationMessage().get(0); if ((notificationMessage != null) && (notificationMessage.getMessage() != null) && (notificationMessage.getMessage().getRetrieveDocumentSetRequest() != null)) { documentList = notificationMessage.getMessage().getRetrieveDocumentSetRequest().getDocumentRequest(); } } return documentList; } public static RetrieveDocumentSetRequestType getDocumentSetRequest(NotifyDocumentType entityNotify) { RetrieveDocumentSetRequestType documentSetRequest = null; if ((entityNotify != null) && (entityNotify.getNotificationMessage() != null) && (!entityNotify.getNotificationMessage().isEmpty())) { NotificationMessageHolderType notificationMessage = entityNotify.getNotificationMessage().get(0); if ((notificationMessage != null) && (notificationMessage.getMessage() != null) && (notificationMessage.getMessage().getRetrieveDocumentSetRequest() != null)) { documentSetRequest = notificationMessage.getMessage().getRetrieveDocumentSetRequest(); } } return documentSetRequest; } }