source: ccr/trunk/nhin-vista/projects/NHINC/Current/Product/Production/Gateway/SubscriptionDteEjb/src/java/gov/hhs/fha/nhinc/subscription/dte/NotifyHelper.java@ 507

Last change on this file since 507 was 507, checked in by George Lilly, 15 years ago

NHIN gateway and adaptor for use on linux with VistA EHR and RPMS

File size: 6.1 KB
Line 
1/*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5package gov.hhs.fha.nhinc.subscription.dte;
6
7import gov.hhs.fha.nhinc.common.subscription.SubscriptionItemType;
8import gov.hhs.fha.nhinc.common.subscription.SubscriptionReferenceType;
9import gov.hhs.fha.nhinc.subscription.*;
10import ihe.iti.xds_b._2007.RetrieveDocumentSetRequestType;
11import ihe.iti.xds_b._2007.RetrieveDocumentSetRequestType.DocumentRequest;
12import javax.xml.bind.JAXBElement;
13import javax.xml.ws.wsaddressing.W3CEndpointReference;
14import org.oasis_open.docs.wsn.b_2.*;
15import org.oasis_open.docs.wsn.b_2.NotificationMessageHolderType.Message;
16
17/**
18 *
19 * @author rayj
20 */
21public class NotifyHelper {
22
23 public static SubscriptionReferenceType transformNhinNotifyToInternalSubscriptionReference(Notify notify) {
24 return SubscriptionReferenceHelper.transformNhinSubscriptionReferenceToInternalSubscriptionReference(NotifyHelper.getSubscriptionReference(notify));
25 }
26
27 public static NotificationMessageHolderType getNotificationMessageHolder(Notify notify) {
28 NotificationMessageHolderType notificationMessageHolder = null;
29 if ((notify != null) && (notify.getNotificationMessage() != null) && (notify.getNotificationMessage().size() >= 1)) {
30 notificationMessageHolder = notify.getNotificationMessage().get(0);
31 }
32 return notificationMessageHolder;
33 }
34
35 public static Message getMessage(Notify notify) {
36 NotificationMessageHolderType notificationMessageHolder = getNotificationMessageHolder(notify);
37 Message message = null;
38 if (notificationMessageHolder != null) {
39 message = notificationMessageHolder.getMessage();
40 }
41 return message;
42 }
43
44 public static W3CEndpointReference getSubscriptionReference(Notify notify) {
45 W3CEndpointReference subscriptionReference = null;
46
47 //assume that we only have one notification per notify
48 NotificationMessageHolderType notificationMessageHolder = getNotificationMessageHolder(notify);
49 if (notificationMessageHolder != null) {
50 subscriptionReference = notificationMessageHolder.getSubscriptionReference();
51 }
52 return subscriptionReference;
53 }
54
55 public static org.oasis_open.docs.wsn.b_2.Notify transformInternalSubscriptionItemToNhinNotify(SubscriptionItemType subscriptionItem) {
56 Notify nhinNotify = new Notify();
57
58 if (subscriptionItem != null) {
59 NotificationMessageHolderType notificationMessageHolder = new NotificationMessageHolderType();
60 nhinNotify.getNotificationMessage().add(notificationMessageHolder);
61
62 if (subscriptionItem.getSubscriptionReference() != null) {
63 W3CEndpointReference subscriptionReference = SubscriptionReferenceHelper.createNhinSubscriptionReference(subscriptionItem.getSubscriptionReference());
64 notificationMessageHolder.setSubscriptionReference(subscriptionReference);
65 }
66
67 Message notificationMessage = new Message();
68 notificationMessageHolder.setMessage(notificationMessage);
69
70 if ((subscriptionItem.getSubscriptionCriteria() != null)) {
71 gov.hhs.fha.nhinc.common.subscription.TopicExpressionType internalTopicExpression = subscriptionItem.getSubscriptionCriteria().getTopicExpression();
72 if (internalTopicExpression != null) {
73 org.oasis_open.docs.wsn.b_2.TopicExpressionType nhinTopicExpression = new org.oasis_open.docs.wsn.b_2.TopicExpressionType();
74
75 //nhinTopicExpression.setValue(internalTopicExpression.getValue());
76 nhinTopicExpression.getContent().add(internalTopicExpression.getValue());
77 nhinTopicExpression.setDialect(internalTopicExpression.getDialect());
78
79 notificationMessageHolder.setTopic(nhinTopicExpression);
80 }
81 }
82
83// RetrieveDocumentSetRequestType retrieveDocumentSetRequest = CreateRetrieveDocumentSetRequest(subscriptionItem);
84// AppendRetrieveDocumentSetRequest(notificationMessage, retrieveDocumentSetRequest);
85 }
86
87 return nhinNotify;
88 }
89
90 public static void AppendRetrieveDocumentSetRequest(Message notifyMessage, RetrieveDocumentSetRequestType retrieveDocumentSetRequest) {
91 ihe.iti.xds_b._2007.ObjectFactory factory = new ihe.iti.xds_b._2007.ObjectFactory();
92 JAXBElement<RetrieveDocumentSetRequestType> retrieveDocumentSetRequestTypeElem = factory.createRetrieveDocumentSetRequest(retrieveDocumentSetRequest);
93 notifyMessage.setAny(retrieveDocumentSetRequestTypeElem);
94
95 }
96
97 public static void AppendCdcBioPackage(Message notifyMessage, JAXBElement<byte[]> cdcBioPackageElement) {
98 if ((cdcBioPackageElement != null) && (cdcBioPackageElement instanceof JAXBElement)) {
99 Object anyvalue = cdcBioPackageElement.getValue();
100 if (anyvalue instanceof byte[]) {
101 byte[] bytearray = (byte[]) anyvalue;
102 AppendCdcBioPackage(notifyMessage, bytearray);
103 }
104 }
105 }
106
107 public static void AppendCdcBioPackage(Message notifyMessage, byte[] cdcBioPackage) {
108 gov.hhs.healthit.nhin.cdc.ObjectFactory factory = new gov.hhs.healthit.nhin.cdc.ObjectFactory();
109 JAXBElement<byte[]> cdcBioPackageElement = factory.createCdcBioPackagePayload(cdcBioPackage);
110 notifyMessage.setAny(cdcBioPackageElement);
111 }
112
113
114 //todo: will probably need to pass in additional data on the wsdl interface to fulfill this
115// public static RetrieveDocumentSetRequestType CreateRetrieveDocumentSetRequest(SubscriptionItemType subscriptionItem) {
116// RetrieveDocumentSetRequestType retrieveDocumentSetRequest = new RetrieveDocumentSetRequestType();
117//
118// DocumentRequest documentRequest = new RetrieveDocumentSetRequestType.DocumentRequest();
119// retrieveDocumentSetRequest.getDocumentRequest().add(documentRequest);
120//
121// documentRequest.setDocumentUniqueId("docid");
122// documentRequest.setHomeCommunityId("homecommunity");
123// documentRequest.setRepositoryUniqueId("repositoryid");
124//
125// return null;
126// }
127}
Note: See TracBrowser for help on using the repository browser.