public void WhenBasicTransactionSubmitted_AllActionsExecuted()
        {
            // Create observation so that we can do the update and create in a transaction
            var updateResource = _fhirClient.Create(_resource);

            updateResource.Comment = "This is an updated resource";

            var transaction = new TransactionBuilder(_fhirClient.Endpoint)
                              .Create(_resource)
                              .Update(updateResource.Id, updateResource);

            var bundle = transaction.ToBundle();

            bundle.Type = Bundle.BundleType.Transaction;

            BundleHelper.CleanEntryRequestUrls(bundle, _fhirClient.Endpoint);

            var transactionResult = _fhirClient.Transaction(bundle);

            Assert.NotNull(transactionResult);
            Assert.Equal(2, transactionResult.Entry.Count);

            var createResult = transactionResult.Entry[0];

            AssertHelper.CheckStatusCode(HttpStatusCode.Created, createResult.Response.Status);

            var updateResult = transactionResult.Entry[1];

            AssertHelper.CheckStatusCode(HttpStatusCode.OK, updateResult.Response.Status);

            AssertHelper.CheckStatusCode(HttpStatusCode.OK, _fhirClient.LastResult.Status);
        }
Exemple #2
0
        public void WhenBatchSubmitted_AllActionsExecuted()
        {
            // Create observations so that we can do the update, read, and delete in the batch
            var updateResource = _fhirClient.Create(_resource);
            var readResource   = _fhirClient.Create(_resource);
            var deleteResource = _fhirClient.Create(_resource);

            updateResource.Comment = "This is an updated resource";

            var transaction = new TransactionBuilder(_fhirClient.Endpoint)
                              .Create(_resource)
                              .Read("Observation", readResource.Id)
                              .Delete("Observation", deleteResource.Id)
                              .Update(updateResource.Id, updateResource);

            var bundle = transaction.ToBundle();

            bundle.Type = Bundle.BundleType.Batch;

            BundleHelper.CleanEntryRequestUrls(bundle, _fhirClient.Endpoint);

            var batchResult = _fhirClient.Transaction(bundle);

            Assert.NotNull(batchResult);

            Assert.NotNull(batchResult.Entry);
            Assert.Equal(4, batchResult.Entry.Count);

            var createResult = batchResult.Entry[0];

            AssertHelper.CheckStatusCode(HttpStatusCode.Created, createResult.Response.Status);

            var readResult = batchResult.Entry[1];

            AssertHelper.CheckStatusCode(HttpStatusCode.OK, readResult.Response.Status);

            var deleteResult = batchResult.Entry[2];

            AssertHelper.CheckDeleteStatusCode(deleteResult.Response.Status);

            var updateResult = batchResult.Entry[3];

            AssertHelper.CheckStatusCode(HttpStatusCode.OK, updateResult.Response.Status);

            AssertHelper.CheckStatusCode(HttpStatusCode.OK, _fhirClient.LastResult.Status);
        }
        private static void Main(string[] args)
        {
            var    endpoint = new Uri("http://localhost/Spark/fhir");
            var    client   = new FhirClient(endpoint);
            string json     = File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "transaction.json"));
            var    bundle   = new FhirJsonParser().Parse <Bundle>(json);

            var resultBundle = client.Transaction(bundle);

            Console.ReadLine();
        }
Exemple #4
0
        public static Bundle CreateSaveBundle(Patient patient, Condition condition)
        {
            Bundle bundle         = new Bundle();
            Bundle responseBundle = new Bundle();

            bundle.Type  = Bundle.BundleType.Transaction;
            bundle.Entry = new List <Bundle.EntryComponent>()
            {
                new Bundle.EntryComponent()
                {
                    Resource = patient,
                    Request  = new Bundle.RequestComponent()
                    {
                        Method = Bundle.HTTPVerb.POST
                    }
                },
                new Bundle.EntryComponent()
                {
                    Resource = condition,
                    Request  = new Bundle.RequestComponent()
                    {
                        Method = Bundle.HTTPVerb.POST
                    }
                }
            };

            try
            {
                LogToFile("Created bundle with patient and condition using POCO: ");

                var xml = FhirSerializer.SerializeResourceToXml(bundle);
                LogToFile(XDocument.Parse(xml).ToString());

                FhirClient fhirClient = new FhirClient(FhirClientEndPoint);
                responseBundle = fhirClient.Transaction(bundle);

                LogToFile("Response bundle for patient and condition: ");

                var resultXml = FhirSerializer.SerializeResourceToXml(responseBundle);
                LogToFile(XDocument.Parse(resultXml).ToString());
            }
            catch (Exception ex)
            {
                LogToFile(ex.ToString());
            }

            return(responseBundle);
        }