[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.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 | }
|
---|