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.nhinccommonentity.SubscribeCdcBioPackageRequestType;
|
---|
8 | import gov.hhs.fha.nhinc.common.subscription.CommunityType;
|
---|
9 | import gov.hhs.fha.nhinc.common.subscription.KeyValuePairListType;
|
---|
10 | import gov.hhs.fha.nhinc.common.subscription.KeyValuePairType;
|
---|
11 | import gov.hhs.fha.nhinc.common.subscription.SubscriptionItemType;
|
---|
12 | import gov.hhs.fha.nhinc.common.subscriptionb2overrideforcdc.SubscribeCdcBioPackageType;
|
---|
13 | import gov.hhs.fha.nhinc.nhinclib.NullChecker;
|
---|
14 | import org.oasis_open.docs.wsn.b_2.Subscribe.SubscriptionPolicy;
|
---|
15 | import gov.hhs.fha.nhinc.common.nhinccommon.HomeCommunityType;
|
---|
16 | import gov.hhs.fha.nhinc.common.subscriptiondte.TransformEntitySubscribeCdcBioPackageToInternalSubscriptionItemRequestType;
|
---|
17 | import gov.hhs.fha.nhinc.common.subscriptiondte.TransformEntitySubscribeCdcBioPackageToInternalSubscriptionItemResponseType;
|
---|
18 | import gov.hhs.healthit.nhin.cdc.CdcBioPackageSubscriptionCriteriaType;
|
---|
19 | import org.oasis_open.docs.wsn.b_2.Subscribe;
|
---|
20 |
|
---|
21 | /**
|
---|
22 | *
|
---|
23 | * @author rayj
|
---|
24 | */
|
---|
25 | public class TransformEntitySubscribeCdcBioPackageToInternalSubscriptionItemHelper {
|
---|
26 |
|
---|
27 | public static TransformEntitySubscribeCdcBioPackageToInternalSubscriptionItemResponseType transformEntitySubscribeCdcBioPackageToInternalSubscriptionItem(TransformEntitySubscribeCdcBioPackageToInternalSubscriptionItemRequestType request) {
|
---|
28 | TransformEntitySubscribeCdcBioPackageToInternalSubscriptionItemResponseType resp = new TransformEntitySubscribeCdcBioPackageToInternalSubscriptionItemResponseType ();
|
---|
29 | SubscribeCdcBioPackageRequestType subscribeCdcBioPackageRequest = request.getSubscribeCdcBioPackageRequest();
|
---|
30 | Subscribe nhinSubscribe = transformEntitySubscribeToNhinSubscribe(subscribeCdcBioPackageRequest.getSubscribe());
|
---|
31 | SubscriptionItemType internalSubscriptionItem = TransformNhinSubscribeToInternalSubscribeHelper.TransformNhinSubscribeToInternalSubscribe(nhinSubscribe);
|
---|
32 |
|
---|
33 |
|
---|
34 |
|
---|
35 | if (subscribeCdcBioPackageRequest.getNhinTargetCommunities() != null &&
|
---|
36 | NullChecker.isNotNullish(subscribeCdcBioPackageRequest.getNhinTargetCommunities().getNhinTargetCommunity()) &&
|
---|
37 | subscribeCdcBioPackageRequest.getNhinTargetCommunities().getNhinTargetCommunity().get(0) != null &&
|
---|
38 | subscribeCdcBioPackageRequest.getNhinTargetCommunities().getNhinTargetCommunity().get(0).getHomeCommunity() != null) {
|
---|
39 | internalSubscriptionItem.getSubscribee().setCommunity(TranslateToSubscriptionCommunity(subscribeCdcBioPackageRequest.getNhinTargetCommunities().getNhinTargetCommunity().get(0).getHomeCommunity()));
|
---|
40 | }
|
---|
41 |
|
---|
42 | if (internalSubscriptionItem.getSubscriptionCriteria().getTopicExpression() == null) {
|
---|
43 | internalSubscriptionItem.getSubscriptionCriteria().setTopicExpression(TopicBuilder.createCdcBioPackageTopic());
|
---|
44 | }
|
---|
45 |
|
---|
46 | SubscriptionPolicy nhinSubscriptionPolicy = nhinSubscribe.getSubscriptionPolicy();
|
---|
47 |
|
---|
48 | if (nhinSubscriptionPolicy != null) {
|
---|
49 | for (Object policyItem : nhinSubscriptionPolicy.getAny()) {
|
---|
50 | if (policyItem instanceof CdcBioPackageSubscriptionCriteriaType) {
|
---|
51 | CdcBioPackageSubscriptionCriteriaType cdcCriteria = (CdcBioPackageSubscriptionCriteriaType) policyItem;
|
---|
52 | gov.hhs.fha.nhinc.common.subscription.SubscriptionPolicyType policy = internalSubscriptionItem.getSubscriptionCriteria().getSubscriptionPolicy();
|
---|
53 | policy = new gov.hhs.fha.nhinc.common.subscription.SubscriptionPolicyType();
|
---|
54 | internalSubscriptionItem.getSubscriptionCriteria().setSubscriptionPolicy(policy);
|
---|
55 | KeyValuePairListType genericPolicyItems = new KeyValuePairListType();
|
---|
56 | internalSubscriptionItem.getSubscriptionCriteria().getSubscriptionPolicy().setGenericPolicyItems(genericPolicyItems);
|
---|
57 |
|
---|
58 | if (cdcCriteria != null) {
|
---|
59 | if ((cdcCriteria.getFrequency() != null) && (cdcCriteria.getFrequency().getFrequencyUnits() != null) && (cdcCriteria.getFrequency().getFrequencyDuration() != null)) {
|
---|
60 | addKeyValuePair(genericPolicyItems, "FrequenceUnits", cdcCriteria.getFrequency().getFrequencyUnits().toString());
|
---|
61 | addKeyValuePair(genericPolicyItems, "FrequenceDuration", cdcCriteria.getFrequency().getFrequencyDuration().toString());
|
---|
62 | }
|
---|
63 | addKeyValuePair(genericPolicyItems, "SizeThreshold", cdcCriteria.getSizeThreshold().toString());
|
---|
64 |
|
---|
65 | for (String messageType : cdcCriteria.getMessageTypes().getMessageType()) {
|
---|
66 | addKeyValuePair(genericPolicyItems, "MessageType", messageType);
|
---|
67 | }
|
---|
68 | }
|
---|
69 | }
|
---|
70 | }
|
---|
71 | }
|
---|
72 |
|
---|
73 | resp.setSubscriptionItem(internalSubscriptionItem);
|
---|
74 | return resp;
|
---|
75 | }
|
---|
76 |
|
---|
77 | private static void addKeyValuePair(KeyValuePairListType list, String key, String value) {
|
---|
78 | KeyValuePairType keyvaluepair = keyValuePairFactory(key, value);
|
---|
79 | list.getKeyValuePair().add(keyvaluepair);
|
---|
80 | }
|
---|
81 |
|
---|
82 | private static KeyValuePairType keyValuePairFactory(String key, String value) {
|
---|
83 | KeyValuePairType keyvaluepair = new KeyValuePairType();
|
---|
84 | keyvaluepair.setKey(key);
|
---|
85 | keyvaluepair.setValue(value);
|
---|
86 | return keyvaluepair;
|
---|
87 |
|
---|
88 | }
|
---|
89 |
|
---|
90 | private static gov.hhs.fha.nhinc.common.subscription.CommunityType TranslateToSubscriptionCommunity(HomeCommunityType community) {
|
---|
91 | CommunityType subCommunity = new CommunityType();
|
---|
92 | subCommunity.setId(community.getHomeCommunityId());
|
---|
93 | subCommunity.setName(community.getName());
|
---|
94 | return subCommunity;
|
---|
95 | }
|
---|
96 |
|
---|
97 | private static org.oasis_open.docs.wsn.b_2.Subscribe transformEntitySubscribeToNhinSubscribe(SubscribeCdcBioPackageType entitySubscribe) {
|
---|
98 | org.oasis_open.docs.wsn.b_2.Subscribe nhinSubscribe = new org.oasis_open.docs.wsn.b_2.Subscribe();
|
---|
99 |
|
---|
100 | if (entitySubscribe.getConsumerReference() != null) {
|
---|
101 | nhinSubscribe.setConsumerReference(entitySubscribe.getConsumerReference());
|
---|
102 | }
|
---|
103 |
|
---|
104 | if (entitySubscribe.getFilter() != null) {
|
---|
105 | nhinSubscribe.setFilter(entitySubscribe.getFilter());
|
---|
106 | }
|
---|
107 |
|
---|
108 | if (entitySubscribe.getSubscriptionPolicy() != null) {
|
---|
109 | SubscriptionPolicy nhinSubscriptionPolicy = new SubscriptionPolicy();
|
---|
110 | nhinSubscriptionPolicy.getAny().add(entitySubscribe.getSubscriptionPolicy().getCdcBioPackageSubscriptionCriteria());
|
---|
111 | nhinSubscribe.setSubscriptionPolicy(nhinSubscriptionPolicy);
|
---|
112 | }
|
---|
113 |
|
---|
114 | return nhinSubscribe;
|
---|
115 | }
|
---|
116 | }
|
---|