/* * 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.common.subscription.SubscriptionItemType; import gov.hhs.fha.nhinc.common.subscription.SubscriptionReferenceType; import gov.hhs.fha.nhinc.subscription.*; import ihe.iti.xds_b._2007.RetrieveDocumentSetRequestType; import ihe.iti.xds_b._2007.RetrieveDocumentSetRequestType.DocumentRequest; import javax.xml.bind.JAXBElement; import javax.xml.ws.wsaddressing.W3CEndpointReference; import org.oasis_open.docs.wsn.b_2.*; import org.oasis_open.docs.wsn.b_2.NotificationMessageHolderType.Message; /** * * @author rayj */ public class NotifyHelper { public static SubscriptionReferenceType transformNhinNotifyToInternalSubscriptionReference(Notify notify) { return SubscriptionReferenceHelper.transformNhinSubscriptionReferenceToInternalSubscriptionReference(NotifyHelper.getSubscriptionReference(notify)); } public static NotificationMessageHolderType getNotificationMessageHolder(Notify notify) { NotificationMessageHolderType notificationMessageHolder = null; if ((notify != null) && (notify.getNotificationMessage() != null) && (notify.getNotificationMessage().size() >= 1)) { notificationMessageHolder = notify.getNotificationMessage().get(0); } return notificationMessageHolder; } public static Message getMessage(Notify notify) { NotificationMessageHolderType notificationMessageHolder = getNotificationMessageHolder(notify); Message message = null; if (notificationMessageHolder != null) { message = notificationMessageHolder.getMessage(); } return message; } public static W3CEndpointReference getSubscriptionReference(Notify notify) { W3CEndpointReference subscriptionReference = null; //assume that we only have one notification per notify NotificationMessageHolderType notificationMessageHolder = getNotificationMessageHolder(notify); if (notificationMessageHolder != null) { subscriptionReference = notificationMessageHolder.getSubscriptionReference(); } return subscriptionReference; } public static org.oasis_open.docs.wsn.b_2.Notify transformInternalSubscriptionItemToNhinNotify(SubscriptionItemType subscriptionItem) { Notify nhinNotify = new Notify(); if (subscriptionItem != null) { NotificationMessageHolderType notificationMessageHolder = new NotificationMessageHolderType(); nhinNotify.getNotificationMessage().add(notificationMessageHolder); if (subscriptionItem.getSubscriptionReference() != null) { W3CEndpointReference subscriptionReference = SubscriptionReferenceHelper.createNhinSubscriptionReference(subscriptionItem.getSubscriptionReference()); notificationMessageHolder.setSubscriptionReference(subscriptionReference); } Message notificationMessage = new Message(); notificationMessageHolder.setMessage(notificationMessage); if ((subscriptionItem.getSubscriptionCriteria() != null)) { gov.hhs.fha.nhinc.common.subscription.TopicExpressionType internalTopicExpression = subscriptionItem.getSubscriptionCriteria().getTopicExpression(); if (internalTopicExpression != null) { org.oasis_open.docs.wsn.b_2.TopicExpressionType nhinTopicExpression = new org.oasis_open.docs.wsn.b_2.TopicExpressionType(); //nhinTopicExpression.setValue(internalTopicExpression.getValue()); nhinTopicExpression.getContent().add(internalTopicExpression.getValue()); nhinTopicExpression.setDialect(internalTopicExpression.getDialect()); notificationMessageHolder.setTopic(nhinTopicExpression); } } // RetrieveDocumentSetRequestType retrieveDocumentSetRequest = CreateRetrieveDocumentSetRequest(subscriptionItem); // AppendRetrieveDocumentSetRequest(notificationMessage, retrieveDocumentSetRequest); } return nhinNotify; } public static void AppendRetrieveDocumentSetRequest(Message notifyMessage, RetrieveDocumentSetRequestType retrieveDocumentSetRequest) { ihe.iti.xds_b._2007.ObjectFactory factory = new ihe.iti.xds_b._2007.ObjectFactory(); JAXBElement retrieveDocumentSetRequestTypeElem = factory.createRetrieveDocumentSetRequest(retrieveDocumentSetRequest); notifyMessage.setAny(retrieveDocumentSetRequestTypeElem); } public static void AppendCdcBioPackage(Message notifyMessage, JAXBElement cdcBioPackageElement) { if ((cdcBioPackageElement != null) && (cdcBioPackageElement instanceof JAXBElement)) { Object anyvalue = cdcBioPackageElement.getValue(); if (anyvalue instanceof byte[]) { byte[] bytearray = (byte[]) anyvalue; AppendCdcBioPackage(notifyMessage, bytearray); } } } public static void AppendCdcBioPackage(Message notifyMessage, byte[] cdcBioPackage) { gov.hhs.healthit.nhin.cdc.ObjectFactory factory = new gov.hhs.healthit.nhin.cdc.ObjectFactory(); JAXBElement cdcBioPackageElement = factory.createCdcBioPackagePayload(cdcBioPackage); notifyMessage.setAny(cdcBioPackageElement); } //todo: will probably need to pass in additional data on the wsdl interface to fulfill this // public static RetrieveDocumentSetRequestType CreateRetrieveDocumentSetRequest(SubscriptionItemType subscriptionItem) { // RetrieveDocumentSetRequestType retrieveDocumentSetRequest = new RetrieveDocumentSetRequestType(); // // DocumentRequest documentRequest = new RetrieveDocumentSetRequestType.DocumentRequest(); // retrieveDocumentSetRequest.getDocumentRequest().add(documentRequest); // // documentRequest.setDocumentUniqueId("docid"); // documentRequest.setHomeCommunityId("homecommunity"); // documentRequest.setRepositoryUniqueId("repositoryid"); // // return null; // } }