public IResourceServiceOutcome Base(string BaseRequestUri, HttpRequestMessage Request, Resource resource)
 {
     using (DbContextTransaction Transaction = IUnitOfWork.BeginTransaction())
     {
         try
         {
             IRequestServiceRootValidate.Validate(BaseRequestUri);
             IRequestMeta RequestMeta = IRequestMetaFactory.CreateRequestMeta().Set(Request);
             IBundleTransactionOperation BundleTransactionOperation = IBundleTransactionOperationFactory.CreateBundleTransactionOperation();
             IResourceServiceOutcome     ResourceServiceOutcome     = BundleTransactionOperation.Transact(resource, RequestMeta);
             ResourceServiceOutcome.SummaryType = RequestMeta.SearchParameterGeneric.SummaryType;
             if (ResourceServiceOutcome.SuccessfulTransaction)
             {
                 Transaction.Commit();
             }
             else
             {
                 Transaction.Rollback();
             }
             return(ResourceServiceOutcome);
         }
         catch (Exception Exec)
         {
             Transaction.Rollback();
             ILog.Error(Exec, $"PyroService.Base, Request: {Request.RequestUri.OriginalString}");
             throw new PyroException(System.Net.HttpStatusCode.InternalServerError,
                                     Common.Tools.FhirOperationOutcomeSupport.Create(OperationOutcome.IssueSeverity.Error, OperationOutcome.IssueType.Exception, Exec.Message), Exec.Message);
         }
     }
 }
 private bool CommitTransactionBundle(Bundle Bundle, string FileName)
 {
     try
     {
         var RequestMeta = IRequestMetaFactory.CreateRequestMeta().Set($"");
         IBundleTransactionOperation BundleTransactionOperation = IBundleTransactionOperationFactory.CreateBundleTransactionOperation();
         this.IResourceTriggerService.TriggersActive = false;
         IResourceServiceOutcome ResourceServiceOutcome = BundleTransactionOperation.Transact(Bundle, RequestMeta);
         this.IResourceTriggerService.TriggersActive = true;
         if (ResourceServiceOutcome.SuccessfulTransaction)
         {
             return(true);
         }
         else
         {
             string OperationOutcomeMessage = string.Empty;
             if (ResourceServiceOutcome.ResourceResult != null && ResourceServiceOutcome.ResourceResult is OperationOutcome OptOut)
             {
                 OptOut.Issue.ForEach(x => OperationOutcomeMessage = OperationOutcomeMessage + " " + x.Details);
             }
             ILog.Error($"Internal Server Error: Transaction bundle from the FHIR specification zip file named: {_ZipFileName}, file '{FileName} did not commit in a single transaction. " +
                        $"The POST bundle transaction reported: HTTP Status: {ResourceServiceOutcome.HttpStatusCode} and the detail: {OperationOutcomeMessage}");
             return(false);
         }
     }
     catch (Exception Exec)
     {
         ILog.Error(Exec, $"Internal Server Error: Could not commit the transaction bundle from the FHIR specification zip file named: {_ZipFileName}, file '{FileName}.");
         return(false);
     }
 }
 public ServerInitializeOperationService(
     IRepositorySwitcher IRepositorySwitcher,
     IResourceServiceOutcomeFactory IResourceServiceOutcomeFactory,
     IResourceServices IResourceServices,
     IRequestMetaFactory IRequestMetaFactory,
     IGlobalProperties IGlobalProperties,
     IBundleTransactionOperation IBundleTransactionOperation)
 {
     this.IRepositorySwitcher            = IRepositorySwitcher;
     this.IResourceServiceOutcomeFactory = IResourceServiceOutcomeFactory;
     this.IResourceServices           = IResourceServices;
     this.IRequestMetaFactory         = IRequestMetaFactory;
     this.IGlobalProperties           = IGlobalProperties;
     this.IBundleTransactionOperation = IBundleTransactionOperation;
 }
Exemple #4
0
 public ServerInitializeOperationService(
     IRepositorySwitcher IRepositorySwitcher,
     IResourceServiceOutcomeFactory IResourceServiceOutcomeFactory,
     IResourceServices IResourceServices,
     IRequestMetaFactory IRequestMetaFactory,
     IGlobalProperties IGlobalProperties,
     IBundleTransactionOperation IBundleTransactionOperation,
     PyroHealthFhirResource.CodeSystems.IPyroFhirServer IPyroFhirServerCodeSystem)
 {
     this.IRepositorySwitcher            = IRepositorySwitcher;
     this.IResourceServiceOutcomeFactory = IResourceServiceOutcomeFactory;
     this.IResourceServices           = IResourceServices;
     this.IRequestMetaFactory         = IRequestMetaFactory;
     this.IGlobalProperties           = IGlobalProperties;
     this.IBundleTransactionOperation = IBundleTransactionOperation;
     this.IPyroFhirServerCodeSystem   = IPyroFhirServerCodeSystem;
 }