1 | /*
|
---|
2 | * To change this template, choose Tools | Templates
|
---|
3 | * and open the template in the editor.
|
---|
4 | */
|
---|
5 | package gov.hhs.fha.nhinc.subscription.dte;
|
---|
6 |
|
---|
7 | import gov.hhs.fha.nhinc.common.subscription.CommunityType;
|
---|
8 | import gov.hhs.fha.nhinc.common.subscription.CriteriaType;
|
---|
9 | import gov.hhs.fha.nhinc.common.subscription.SubscribeeType;
|
---|
10 | import gov.hhs.fha.nhinc.common.subscription.SubscriberType;
|
---|
11 | import gov.hhs.fha.nhinc.common.subscription.SubscriptionCriteriaType;
|
---|
12 | import gov.hhs.fha.nhinc.common.subscription.SubscriptionItemType;
|
---|
13 | import gov.hhs.fha.nhinc.nhinclib.NullChecker;
|
---|
14 | import gov.hhs.fha.nhinc.subscription.*;
|
---|
15 | import gov.hhs.fha.nhinc.common.subscriptiondte.CreateChildSubscriptionItemRequestType;
|
---|
16 | import gov.hhs.fha.nhinc.common.nhinccommon.QualifiedSubjectIdentifierType;
|
---|
17 | import gov.hhs.fha.nhinc.common.subscriptiondte.CreateChildSubscriptionItemResponseType;
|
---|
18 |
|
---|
19 | /**
|
---|
20 | *
|
---|
21 | * @author rayj
|
---|
22 | */
|
---|
23 | public class CreateChildSubscriptionItemHelper {
|
---|
24 |
|
---|
25 | public static CreateChildSubscriptionItemResponseType createChildSubscriptionItem(CreateChildSubscriptionItemRequestType createChildSubscriptionInput) {
|
---|
26 | CreateChildSubscriptionItemResponseType response = new CreateChildSubscriptionItemResponseType();
|
---|
27 | SubscriptionItemType subscriptionItem = new SubscriptionItemType();
|
---|
28 |
|
---|
29 | SubscriptionItemType parentSubscriptionItem = createChildSubscriptionInput.getParentSubscriptionItem();
|
---|
30 |
|
---|
31 | subscriptionItem.setSubscriber(new SubscriberType());
|
---|
32 | subscriptionItem.getSubscriber().setCommunity(Configuration.getMyCommunity());
|
---|
33 | subscriptionItem.getSubscriber().setNotificationConsumerEndpointAddress(Configuration.getlocalNotificationConsumerEndpointAddress());
|
---|
34 |
|
---|
35 | subscriptionItem.setSubscribee(new SubscribeeType());
|
---|
36 |
|
---|
37 | String userAddress = getUserAddress(parentSubscriptionItem);
|
---|
38 | if (NullChecker.isNotNullish(userAddress)) {
|
---|
39 | subscriptionItem.getSubscribee().setUserAddress(userAddress);
|
---|
40 | }
|
---|
41 |
|
---|
42 | String targetCommunityId = createChildSubscriptionInput.getTargetCommunityId();
|
---|
43 | if (NullChecker.isNotNullish(targetCommunityId)) {
|
---|
44 | subscriptionItem.getSubscribee().setCommunity(new CommunityType());
|
---|
45 | subscriptionItem.getSubscribee().getCommunity().setId(targetCommunityId);
|
---|
46 | }
|
---|
47 |
|
---|
48 | SubscriptionCriteriaType subscriptionCriteria = new SubscriptionCriteriaType();
|
---|
49 | subscriptionItem.setSubscriptionCriteria(subscriptionCriteria);
|
---|
50 |
|
---|
51 | QualifiedSubjectIdentifierType subscribeePatient = createChildSubscriptionInput.getTargetPatientId();
|
---|
52 | if (subscribeePatient != null) {
|
---|
53 | subscriptionCriteria.setSubscribeePatient(subscribeePatient);
|
---|
54 | }
|
---|
55 |
|
---|
56 | QualifiedSubjectIdentifierType subscriberPatient = getSubscriptionCriteriaSubscriberPatient(parentSubscriptionItem);
|
---|
57 | subscriptionCriteria.setSubscriberPatient(subscriberPatient);
|
---|
58 |
|
---|
59 | CriteriaType miscCriteria = getSubscriptionMiscCriteria(parentSubscriptionItem);
|
---|
60 | subscriptionCriteria.setCriteria(miscCriteria);
|
---|
61 |
|
---|
62 | subscriptionCriteria.setTopicExpression(parentSubscriptionItem.getSubscriptionCriteria().getTopicExpression());
|
---|
63 | subscriptionCriteria.setSubscriptionPolicy(parentSubscriptionItem.getSubscriptionCriteria().getSubscriptionPolicy());
|
---|
64 |
|
---|
65 | subscriptionItem.setSubscriptionReference(null);
|
---|
66 |
|
---|
67 | subscriptionItem.setParentSubscriptionReference(parentSubscriptionItem.getSubscriptionReference());
|
---|
68 |
|
---|
69 | response.setSubscriptionItem(subscriptionItem);
|
---|
70 | return response;
|
---|
71 | }
|
---|
72 |
|
---|
73 | private static CriteriaType getSubscriptionMiscCriteria(SubscriptionItemType subscriptionItem) {
|
---|
74 | CriteriaType miscCriteria = null;
|
---|
75 | if ((subscriptionItem != null) && (subscriptionItem.getSubscriptionCriteria() != null)) {
|
---|
76 | miscCriteria = subscriptionItem.getSubscriptionCriteria().getCriteria();
|
---|
77 | }
|
---|
78 | return miscCriteria;
|
---|
79 | }
|
---|
80 |
|
---|
81 | private static QualifiedSubjectIdentifierType getSubscriptionCriteriaSubscriberPatient(SubscriptionItemType subscriptionItem) {
|
---|
82 | QualifiedSubjectIdentifierType patient = null;
|
---|
83 | if ((subscriptionItem != null) && (subscriptionItem.getSubscriptionCriteria() != null) && (subscriptionItem.getSubscriptionCriteria().getSubscriberPatient() != null)) {
|
---|
84 | patient = subscriptionItem.getSubscriptionCriteria().getSubscriberPatient();
|
---|
85 | }
|
---|
86 | return patient;
|
---|
87 | }
|
---|
88 |
|
---|
89 | private static String getUserAddress(SubscriptionItemType parentSubscriptionItem) {
|
---|
90 | String userAddress = null;
|
---|
91 |
|
---|
92 | if (parentSubscriptionItem == null) {
|
---|
93 | userAddress = null;
|
---|
94 | } else if (parentSubscriptionItem.getSubscriber() == null) {
|
---|
95 | userAddress = null;
|
---|
96 | } else {
|
---|
97 | userAddress = parentSubscriptionItem.getSubscriber().getUserAddress();
|
---|
98 | }
|
---|
99 |
|
---|
100 | return userAddress;
|
---|
101 | }
|
---|
102 | }
|
---|