private RegistryResponseType sendToNhinProxy(
      gov.hhs.fha.nhinc.common.nhinccommonproxy
              .RespondingGatewayProvideAndRegisterDocumentSetSecuredRequestType
          request,
      AssertionType assertion) {

    boolean auditNhin =
        isAuditEnabled(NhincConstants.GATEWAY_PROPERTY_FILE, NhincConstants.NHIN_AUDIT_PROPERTY);

    if (auditNhin) {
      auditRequestToNhin(request, assertion, request.getNhinTargetSystem());
    }

    OutboundDocSubmissionDelegate dsDelegate = getOutboundDocSubmissionDelegate();
    OutboundDocSubmissionOrchestratable dsOrchestratable =
        createOrchestratable(dsDelegate, request, assertion);
    RegistryResponseType response =
        ((OutboundDocSubmissionOrchestratable) dsDelegate.process(dsOrchestratable)).getResponse();

    if (auditNhin) {
      auditResponseFromNhin(response, assertion, request.getNhinTargetSystem());
    }

    return response;
  }
  private OutboundDocSubmissionOrchestratable createOrchestratable(
      OutboundDocSubmissionDelegate delegate,
      gov.hhs.fha.nhinc.common.nhinccommonproxy
              .RespondingGatewayProvideAndRegisterDocumentSetSecuredRequestType
          request,
      AssertionType assertion) {

    OutboundDocSubmissionOrchestratable dsOrchestratable =
        new OutboundDocSubmissionOrchestratable(delegate);
    dsOrchestratable.setAssertion(assertion);
    dsOrchestratable.setRequest(request.getProvideAndRegisterDocumentSetRequest());
    dsOrchestratable.setTarget(request.getNhinTargetSystem());

    return dsOrchestratable;
  }
  private gov.hhs.fha.nhinc.common.nhinccommonproxy
          .RespondingGatewayProvideAndRegisterDocumentSetSecuredRequestType
      createRequestForNhin(
          RespondingGatewayProvideAndRegisterDocumentSetSecuredRequestType request) {

    gov.hhs.fha.nhinc.common.nhinccommonproxy
            .RespondingGatewayProvideAndRegisterDocumentSetSecuredRequestType
        nhinRequest =
            new gov.hhs.fha.nhinc.common.nhinccommonproxy
                .RespondingGatewayProvideAndRegisterDocumentSetSecuredRequestType();

    NhinTargetSystemType targetSystemType = new NhinTargetSystemType();
    targetSystemType.setHomeCommunity(getNhinTargetHomeCommunity(request));

    nhinRequest.setNhinTargetSystem(targetSystemType);
    nhinRequest.setProvideAndRegisterDocumentSetRequest(
        request.getProvideAndRegisterDocumentSetRequest());

    return nhinRequest;
  }