Ejemplo n.º 1
0
        public void TestServer()
        {
            stu3::Hl7.Fhir.Rest.FhirClient server3 = new stu3::Hl7.Fhir.Rest.FhirClient("http://sqlonfhir-stu3.azurewebsites.net/fhir");
            var encounters = server3.Search <stu3::Hl7.Fhir.Model.Encounter>();

            DebugDumpResourceXml(encounters);

            ResourceScanner.Scanner model = new ResourceScanner.Scanner();
            foreach (var enc in encounters.Entry.Select(s => s.Resource as stu3::Hl7.Fhir.Model.Encounter))
            {
                // Test this encounter
                model.ScanResourceInstance(enc, "unit-test");
            }
            var results = model.ToReport3("Brian Postlethwaite (Telstra Health)");

            DebugDumpResourceXml(results);
            Assert.AreEqual("Encounter", results.Test.FirstOrDefault()?.Name);
        }
Ejemplo n.º 2
0
        public void TestLocal()
        {
            var encounters = new stu3::Hl7.Fhir.Model.Bundle();
            var encounter  = new stu3::Hl7.Fhir.Model.Encounter()
            {
                Id     = "enc",
                Status = stu3::Hl7.Fhir.Model.Encounter.EncounterStatus.Arrived,
                Period = new stu3::Hl7.Fhir.Model.Period()
                {
                    Start = "2017-12", End = "2018-01"
                }
            };

            encounter.Location.Add(new stu3::Hl7.Fhir.Model.Encounter.LocationComponent()
            {
                Location = new stu3::Hl7.Fhir.Model.ResourceReference("Location/example", "Example Org")
            });
            encounter.Location.Add(new stu3::Hl7.Fhir.Model.Encounter.LocationComponent()
            {
                Location = new stu3::Hl7.Fhir.Model.ResourceReference("Location/other", "Other Example Org")
            });
            encounters.Entry.Add(new stu3::Hl7.Fhir.Model.Bundle.EntryComponent()
            {
                Resource = encounter
            });

            ResourceScanner.Scanner model = new ResourceScanner.Scanner();
            foreach (var enc in encounters.Entry.Select(s => s.Resource as stu3::Hl7.Fhir.Model.Encounter))
            {
                // Test this encounter
                model.ScanResourceInstance(enc, "unit-test");
            }
            var results = model.ToReport3("Brian Postlethwaite (Telstra Health)");

            DebugDumpResourceXml(results);
            Assert.AreEqual("Encounter", results.Test.FirstOrDefault()?.Name);
            var tr = results.Test.FirstOrDefault();

//            Assert.AreEqual("Encounter.Id: 1", results.Test.FirstOrDefault()?.Action.Where(a => a.Operation.Detail == "Encounter.Id").Select(a => a.Operation.Message).FirstOrDefault().Value);
        }
Ejemplo n.º 3
0
        private static void ScanResources(ScannerParameters args)
        {
            FhirClient server = new FhirClient("http://sqlonfhir-stu3.azurewebsites.net/fhir");

            try
            {
                CustomFluentPathFunctions.PrepareSqlonfhirSybolTableFunctions();

                Console.WriteLine(CommandLine.Text.HeadingInfo.Default.ToString());
                Console.WriteLine(CommandLine.Text.CopyrightInfo.Default.ToString());
                Console.WriteLine($"------------------------------------");

                // server to receive the results
                server.PreferredFormat  = ResourceFormat.Json;
                server.OnBeforeRequest += (object sender, stu3::Hl7.Fhir.Rest.BeforeRequestEventArgs e) =>
                {
                    if (!string.IsNullOrEmpty(args.authorization))
                    {
                        e.RawRequest.Headers.Add("Authorization", args.authorization);
                    }
                };
                ResourceScanner.Scanner scanner = new ResourceScanner.Scanner();
                if (!string.IsNullOrEmpty(args.url))
                {
                    ScanResourcesFromServer(args, server, scanner);
                }
                else if (System.IO.File.Exists(args.filename))
                {
                    Console.WriteLine($"Scanning {args.filename}");
                    Resource resource = null;
                    var      fi       = new System.IO.FileInfo(args.filename);
                    if (fi.Extension == ".json")
                    {
                        resource = new stu3::Hl7.Fhir.Serialization.FhirJsonParser().Parse <Resource>(System.IO.File.ReadAllText(args.filename));
                    }
                    else if (fi.Extension == ".xml")
                    {
                        resource = new stu3::Hl7.Fhir.Serialization.FhirXmlParser().Parse <Resource>(System.IO.File.ReadAllText(args.filename));
                    }
                    else
                    {
                        Console.WriteLine($"File is not xml or json: {args.filename}");
                        return;
                    }
                    if (resource != null)
                    {
                        if (resource is Bundle bundle)
                        {
                            // TODO: scan the bundle
                            foreach (var entry in bundle.Entry.Select(e => e.Resource))
                            {
                                if (entry != null)
                                {
                                    scanner.ScanResourceInstance(entry, args.filename);
                                }
                            }
                        }
                        else
                        {
                            scanner.ScanResourceInstance(resource, args.filename);
                        }
                    }
                }
                else
                {
                    Console.WriteLine($"File not found: {args.filename}");
                    return;
                }
                var testReport = scanner.ToReport3(args.User);
                DebugDumpResourceXml(testReport);

                // Send the results to the requested server
                if (!string.IsNullOrEmpty(args.PostResultsToServer) && args.PostResultsToServer != "none")
                {
                    Console.WriteLine($"Sunmitting usage report to {args.PostResultsToServer} ...");
                    server = new FhirClient(args.PostResultsToServer);
                    var newReport = server.Create(testReport);
                    Console.WriteLine($"Usage Report submitted to {newReport.ResourceIdentity()?.OriginalString}");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
            }
        }
Ejemplo n.º 4
0
        private static void ScanResourcesFromServer(ScannerParameters args, stu3::Hl7.Fhir.Rest.FhirClient server, ResourceScanner.Scanner scanner)
        {
            Console.WriteLine($"Scanning {args.url}");
            Resource resource = server.Get(args.url);

            if (resource is Bundle bundle)
            {
                if (bundle.Total.HasValue)
                {
                    Console.WriteLine($"    Total: {bundle.Total.Value}");
                }
                foreach (var entry in bundle.Entry.Select(e => e.Resource))
                {
                    if (entry != null)
                    {
                        scanner.ScanResourceInstance(entry, args.url);
                    }
                }
                while (bundle?.NextLink != null)
                {
                    Console.WriteLine($"Continuing {bundle.NextLink.OriginalString}");
                    bundle = server.Get(bundle.NextLink.OriginalString) as Bundle;
                    foreach (var entry in bundle?.Entry.Select(e => e.Resource))
                    {
                        if (entry != null)
                        {
                            scanner.ScanResourceInstance(entry, args.url);
                        }
                    }
                }
            }
            else
            {
                scanner.ScanResourceInstance(resource, args.url);
            }
        }