Beispiel #1
0
        public static IActionResult Present(ResourceResponse response, HttpRequest httpRequest, HttpResponse httpResponse, string type)
        {
            if (response.Code == ResponseCode.Success)
            {
                return(PrepareRequestSuccess(response, httpRequest, httpResponse, type));
            }

            return(PresenterBase.PrepareRequestFailure(response, httpResponse, httpRequest.ContentType));
        }
        public static IActionResult Present(ResourceResponse response, string contentType, HttpResponse httpResponse, SummaryType summaryType)
        {
            if (response.Code == ResponseCode.Success)
            {
                PresenterBase.SetBasicResponseAttributes(response, httpResponse, HttpStatusCode.OK);
                return(new FhirResult(response.Resource, contentType, summaryType));
            }

            return(PresenterBase.PrepareRequestFailure(response, httpResponse, contentType));
        }
Beispiel #3
0
        private static IActionResult PrepareRequestSuccess(ResourceResponse response, HttpRequest httpRequest, HttpResponse httpResponse, string type)
        {
            PresenterBase.SetBasicResponseAttributes(response, httpResponse, HttpStatusCode.Created);

            httpResponse.Headers.Add(
                "Location",
                $"{httpRequest.Scheme}://{httpRequest.Host.Value}/api/fhir/{type}/{response.Resource.Id}/_history/{response.Resource.VersionId}");

            var prefer = httpRequest.Headers.FirstOrDefault(h => h.Key == "Prefer");

            if (string.IsNullOrEmpty(prefer.Key))
            {
                return(new EmptyFhirResult(httpRequest.ContentType));
            }

            switch (prefer.Value.First())
            {
            case "representation":
                return(new FhirResult(response.Resource, httpRequest.ContentType));

            case "OperationOutcome":
                return(new FhirResult(
                           new OperationOutcome
                {
                    Issue = new List <OperationOutcome.IssueComponent>
                    {
                        new OperationOutcome.IssueComponent
                        {
                            Code = OperationOutcome.IssueType.Informational,
                            Severity = OperationOutcome.IssueSeverity.Information,
                            Details = new CodeableConcept {
                                Text = "All OK"
                            }
                        }
                    }
                },
                           httpRequest.ContentType));

            default:
                return(new EmptyFhirResult(httpRequest.ContentType));
            }
        }
        public static IActionResult Present(ValidateResourceResponse response, HttpResponse httpResponse, string contentType)
        {
            if (response.Code == ResponseCode.Success)
            {
                if (response.ValidationResult.Count == 0)
                {
                    return(new FhirResult(
                               new OperationOutcome
                    {
                        Issue = new List <OperationOutcome.IssueComponent>
                        {
                            new OperationOutcome.IssueComponent
                            {
                                Code = OperationOutcome.IssueType.Informational,
                                Severity = OperationOutcome.IssueSeverity.Information,
                                Details = new CodeableConcept {
                                    Text = "All OK"
                                }
                            }
                        }
                    },
                               contentType));
                }

                return(new FhirResult(
                           new OperationOutcome
                {
                    Issue = response.ValidationResult.Select(
                        r => new OperationOutcome.IssueComponent
                    {
                        Severity = OperationOutcome.IssueSeverity.Error, Details = new CodeableConcept {
                            Text = r.ToString()
                        }
                    }).ToList()
                },
                           contentType));
            }

            return(PresenterBase.PrepareRequestFailure(response, httpResponse, contentType));
        }
Beispiel #5
0
 public static IActionResult Present(ResourceResponse response, HttpResponse httpResponse, string contentType)
 {
     return(response.Code == ResponseCode.Success
        ? new FhirResult(response.Resource, contentType)
        : PresenterBase.PrepareRequestFailure(response, httpResponse, contentType));
 }