[507] | 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 | }
|
---|