コード例 #1
0
        public void TestBucketAssignment()
        {
            var s = createSliceDefs() as SliceGroupBucket;

            var p = new Patient();

            p.Telecom.Add(new ContactPoint {
                System = ContactPoint.ContactPointSystem.Phone, Use = ContactPoint.ContactPointUse.Home, Value = "+31-6-39015765"
            });
            p.Telecom.Add(new ContactPoint {
                System = ContactPoint.ContactPointSystem.Email, Use = ContactPoint.ContactPointUse.Work, Value = "*****@*****.**"
            });
            p.Telecom.Add(new ContactPoint {
                System = ContactPoint.ContactPointSystem.Other, Use = ContactPoint.ContactPointUse.Temp, Value = "skype://crap"
            });
            p.Telecom.Add(new ContactPoint {
                System = ContactPoint.ContactPointSystem.Other, Use = ContactPoint.ContactPointUse.Home, Value = "http://nu.nl"
            });
            p.Telecom.Add(new ContactPoint {
                System = ContactPoint.ContactPointSystem.Fax, Use = ContactPoint.ContactPointUse.Work, Value = "+31-20-6707070"
            });
            var pnav = new PocoNavigator(p) as IElementNavigator;

            var telecoms = pnav.GetChildrenByName("telecom");

            foreach (var telecom in telecoms)
            {
                Assert.True(s.Add(telecom));
            }

            var outcome = s.Validate(_validator, pnav);

            Assert.True(outcome.Success);
            Assert.Equal(0, outcome.Warnings);

            Assert.Equal("+31-6-39015765", s.ChildSlices[0].Members.Single().Values("value").Single());

            var emailBucket = s.ChildSlices[1] as SliceGroupBucket;

            Assert.Equal("*****@*****.**", emailBucket.Members.Single().Values("value").Single());
            Assert.False(emailBucket.ChildSlices[0].Members.Any());
            Assert.Equal("*****@*****.**", emailBucket.ChildSlices[1].Members.Single().Values("value").Single());

            var otherBucket = s.ChildSlices[2] as SliceGroupBucket;

            Assert.Equal("http://nu.nl", otherBucket.ChildSlices[0].Members.Single().Values("value").Single());
            Assert.False(otherBucket.ChildSlices[1].Members.Any());
            Assert.Equal("skype://crap", otherBucket.Members.First().Values("value").Single()); // in the open slice - find it on other bucket, not child

            Assert.Equal("+31-20-6707070", s.Members.Last().Values("value").Single());          // in the open-at-end slice
        }
コード例 #2
0
        public void BuildScopeList()
        {
            var bundleXml = File.ReadAllText("TestData\\validation\\bundle-contained-references.xml");

            var bundle = (new FhirXmlParser()).Parse <Bundle>(bundleXml);

            Assert.IsNotNull(bundle);
            IElementNavigator cpNav = new PocoNavigator(bundle);

            var tracker = new ScopeTracker();

            tracker.Enter(cpNav);

            var entries = cpNav.GetChildrenByName("entry").GetChildrenByName("resource");

            int index = 0;

            foreach (var entry in entries)
            {
                tracker.Enter(entry);

                if (index == 6)
                {
                    var orgX = entry.GetChildrenByName("contained").First();

                    tracker.Enter(orgX);
                    Assert.AreEqual("http://example.org/fhir/Patient/e", tracker.ContextFullUrl(orgX));
                    Assert.AreEqual("Bundle.entry[6].resource[0].contained[0]", tracker.ResourceContext(orgX).Path);
                    tracker.Leave(orgX);

                    var careProvRef = entry.GetChildrenByName("managingOrganization").GetChildrenByName("reference").Single();
                    Assert.AreEqual("Bundle.entry[6].resource[0]", tracker.ResourceContext(careProvRef).Path);

                    tracker.Enter(careProvRef);
                    Assert.AreEqual("Bundle.entry[6].resource[0].contained[1]", tracker.Resolve(careProvRef, "#orgY").Path);
                    Assert.AreEqual("Bundle.entry[2].resource[0]", tracker.Resolve(careProvRef, "http://example.org/fhir/Patient/a").Path);
                    tracker.Leave(careProvRef);
                }

                tracker.Leave(entry);

                index++;
            }

            tracker.Leave(cpNav);
        }
コード例 #3
0
        public void TestResolution()
        {
            var bundleXml = File.ReadAllText("TestData\\validation\\bundle-contained-references.xml");

            var bundle = (new FhirXmlParser()).Parse <Bundle>(bundleXml);

            Assert.IsNotNull(bundle);
            IElementNavigator cpNav = new PocoNavigator(bundle);

            var tracker = new ScopeTracker();

            tracker.Enter(cpNav);

            var entries = cpNav.GetChildrenByName("entry");

            var index = 0;

            foreach (var entry in entries)
            {
                tracker.Enter(entry);

                var resource = entry.GetChildrenByName("resource").First();
                tracker.Enter(resource);

                if (index == 2 || index == 3 || index == 4 || index == 6)
                {
                    var refr = resource.GetChildrenByName("managingOrganization").GetChildrenByName("reference").First();
                    var res  = tracker.Resolve(refr, refr.Value as string);
                    Assert.IsNotNull(res);
                }
                else if (index == 5)
                {
                    var refr = resource.GetChildrenByName("managingOrganization").GetChildrenByName("reference").First();
                    var res  = tracker.Resolve(refr, refr.Value as string);
                    Assert.IsNull(res);
                }

                tracker.Leave(resource);


                tracker.Leave(entry);

                index += 1;
            }
        }