/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package gov.hhs.fha.nhinc.subscription.dte; import gov.hhs.fha.nhinc.common.nhinccommonentity.SubscribeCdcBioPackageRequestType; import gov.hhs.fha.nhinc.common.subscription.CommunityType; import gov.hhs.fha.nhinc.common.subscription.KeyValuePairListType; import gov.hhs.fha.nhinc.common.subscription.KeyValuePairType; import gov.hhs.fha.nhinc.common.subscription.SubscriptionItemType; import gov.hhs.fha.nhinc.common.subscriptionb2overrideforcdc.SubscribeCdcBioPackageType; import gov.hhs.fha.nhinc.nhinclib.NullChecker; import org.oasis_open.docs.wsn.b_2.Subscribe.SubscriptionPolicy; import gov.hhs.fha.nhinc.common.nhinccommon.HomeCommunityType; import gov.hhs.fha.nhinc.common.subscriptiondte.TransformEntitySubscribeCdcBioPackageToInternalSubscriptionItemRequestType; import gov.hhs.fha.nhinc.common.subscriptiondte.TransformEntitySubscribeCdcBioPackageToInternalSubscriptionItemResponseType; import gov.hhs.healthit.nhin.cdc.CdcBioPackageSubscriptionCriteriaType; import org.oasis_open.docs.wsn.b_2.Subscribe; /** * * @author rayj */ public class TransformEntitySubscribeCdcBioPackageToInternalSubscriptionItemHelper { public static TransformEntitySubscribeCdcBioPackageToInternalSubscriptionItemResponseType transformEntitySubscribeCdcBioPackageToInternalSubscriptionItem(TransformEntitySubscribeCdcBioPackageToInternalSubscriptionItemRequestType request) { TransformEntitySubscribeCdcBioPackageToInternalSubscriptionItemResponseType resp = new TransformEntitySubscribeCdcBioPackageToInternalSubscriptionItemResponseType (); SubscribeCdcBioPackageRequestType subscribeCdcBioPackageRequest = request.getSubscribeCdcBioPackageRequest(); Subscribe nhinSubscribe = transformEntitySubscribeToNhinSubscribe(subscribeCdcBioPackageRequest.getSubscribe()); SubscriptionItemType internalSubscriptionItem = TransformNhinSubscribeToInternalSubscribeHelper.TransformNhinSubscribeToInternalSubscribe(nhinSubscribe); if (subscribeCdcBioPackageRequest.getNhinTargetCommunities() != null && NullChecker.isNotNullish(subscribeCdcBioPackageRequest.getNhinTargetCommunities().getNhinTargetCommunity()) && subscribeCdcBioPackageRequest.getNhinTargetCommunities().getNhinTargetCommunity().get(0) != null && subscribeCdcBioPackageRequest.getNhinTargetCommunities().getNhinTargetCommunity().get(0).getHomeCommunity() != null) { internalSubscriptionItem.getSubscribee().setCommunity(TranslateToSubscriptionCommunity(subscribeCdcBioPackageRequest.getNhinTargetCommunities().getNhinTargetCommunity().get(0).getHomeCommunity())); } if (internalSubscriptionItem.getSubscriptionCriteria().getTopicExpression() == null) { internalSubscriptionItem.getSubscriptionCriteria().setTopicExpression(TopicBuilder.createCdcBioPackageTopic()); } SubscriptionPolicy nhinSubscriptionPolicy = nhinSubscribe.getSubscriptionPolicy(); if (nhinSubscriptionPolicy != null) { for (Object policyItem : nhinSubscriptionPolicy.getAny()) { if (policyItem instanceof CdcBioPackageSubscriptionCriteriaType) { CdcBioPackageSubscriptionCriteriaType cdcCriteria = (CdcBioPackageSubscriptionCriteriaType) policyItem; gov.hhs.fha.nhinc.common.subscription.SubscriptionPolicyType policy = internalSubscriptionItem.getSubscriptionCriteria().getSubscriptionPolicy(); policy = new gov.hhs.fha.nhinc.common.subscription.SubscriptionPolicyType(); internalSubscriptionItem.getSubscriptionCriteria().setSubscriptionPolicy(policy); KeyValuePairListType genericPolicyItems = new KeyValuePairListType(); internalSubscriptionItem.getSubscriptionCriteria().getSubscriptionPolicy().setGenericPolicyItems(genericPolicyItems); if (cdcCriteria != null) { if ((cdcCriteria.getFrequency() != null) && (cdcCriteria.getFrequency().getFrequencyUnits() != null) && (cdcCriteria.getFrequency().getFrequencyDuration() != null)) { addKeyValuePair(genericPolicyItems, "FrequenceUnits", cdcCriteria.getFrequency().getFrequencyUnits().toString()); addKeyValuePair(genericPolicyItems, "FrequenceDuration", cdcCriteria.getFrequency().getFrequencyDuration().toString()); } addKeyValuePair(genericPolicyItems, "SizeThreshold", cdcCriteria.getSizeThreshold().toString()); for (String messageType : cdcCriteria.getMessageTypes().getMessageType()) { addKeyValuePair(genericPolicyItems, "MessageType", messageType); } } } } } resp.setSubscriptionItem(internalSubscriptionItem); return resp; } private static void addKeyValuePair(KeyValuePairListType list, String key, String value) { KeyValuePairType keyvaluepair = keyValuePairFactory(key, value); list.getKeyValuePair().add(keyvaluepair); } private static KeyValuePairType keyValuePairFactory(String key, String value) { KeyValuePairType keyvaluepair = new KeyValuePairType(); keyvaluepair.setKey(key); keyvaluepair.setValue(value); return keyvaluepair; } private static gov.hhs.fha.nhinc.common.subscription.CommunityType TranslateToSubscriptionCommunity(HomeCommunityType community) { CommunityType subCommunity = new CommunityType(); subCommunity.setId(community.getHomeCommunityId()); subCommunity.setName(community.getName()); return subCommunity; } private static org.oasis_open.docs.wsn.b_2.Subscribe transformEntitySubscribeToNhinSubscribe(SubscribeCdcBioPackageType entitySubscribe) { org.oasis_open.docs.wsn.b_2.Subscribe nhinSubscribe = new org.oasis_open.docs.wsn.b_2.Subscribe(); if (entitySubscribe.getConsumerReference() != null) { nhinSubscribe.setConsumerReference(entitySubscribe.getConsumerReference()); } if (entitySubscribe.getFilter() != null) { nhinSubscribe.setFilter(entitySubscribe.getFilter()); } if (entitySubscribe.getSubscriptionPolicy() != null) { SubscriptionPolicy nhinSubscriptionPolicy = new SubscriptionPolicy(); nhinSubscriptionPolicy.getAny().add(entitySubscribe.getSubscriptionPolicy().getCdcBioPackageSubscriptionCriteria()); nhinSubscribe.setSubscriptionPolicy(nhinSubscriptionPolicy); } return nhinSubscribe; } }