示例#1
0
        public void GivenEmptyTemplate_WhenCreateObservation_ThenShellObservationReturned_Test()
        {
            var valueProcessor = Substitute.For <IFhirValueProcessor <IObservationData, DataType> >();

            var template = Substitute.For <CodeValueFhirTemplate>();

            var values = new Dictionary <string, IEnumerable <(DateTime, string)> >
            {
                { "p1", new[] { (DateTime.UtcNow, "v1") } },
            };

            (DateTime start, DateTime end)boundary = (new DateTime(2019, 1, 1, 0, 0, 0, DateTimeKind.Utc), new DateTime(2019, 1, 2, 0, 0, 0, DateTimeKind.Utc));

            var observationGroup = Substitute.For <IObservationGroup>()
                                   .Mock(m => m.Boundary.Returns(boundary))
                                   .Mock(m => m.Name.Returns("code"))
                                   .Mock(m => m.GetValues().Returns(values));

            var processor = new CodeValueFhirTemplateProcessor(valueProcessor);

            var observation = processor.CreateObservation(template, observationGroup);

            Assert.NotNull(observation);

            Assert.Equal("code", observation.Code.Text);
            Assert.Collection(
                observation.Code.Coding,
                c =>
            {
                Assert.Equal(FhirImportService.ServiceSystem, c.System);
                Assert.Equal("code", c.Code);
                Assert.Equal("code", c.Display);
            });
            Assert.Equal(ObservationStatus.Final, observation.Status);
            Assert.NotNull(observation.Issued);
            var period = observation.Effective as Period;

            Assert.NotNull(period);
            Assert.Equal(boundary.start, period.StartElement.ToDateTimeOffset(TimeSpan.Zero).UtcDateTime);
            Assert.Equal(boundary.end, period.EndElement.ToDateTimeOffset(TimeSpan.Zero).UtcDateTime);

            valueProcessor.DidNotReceiveWithAnyArgs().CreateValue(default, default);
示例#2
0
        public void GivenTemplate_WhenCreateObservationGroups_ThenPeriodIntervalCorrectlyUsed_Test()
        {
            var valueProcessor   = Substitute.For <IFhirValueProcessor <IObservationData, DataType> >();
            var template         = Substitute.For <CodeValueFhirTemplate>().Mock(m => m.PeriodInterval.Returns(ObservationPeriodInterval.Single));
            var measurementGroup = new MeasurementGroup
            {
                Data = new List <Measurement>
                {
                    new Measurement {
                        OccurrenceTimeUtc = DateTime.UtcNow
                    },
                },
            };

            var processor = new CodeValueFhirTemplateProcessor(valueProcessor);

            var result = processor.CreateObservationGroups(template, measurementGroup);

            Assert.Single(result);

            _ = template.Received(1).PeriodInterval;
        }
示例#3
0
        public void GivenDefaultCtor_WhenCtor_ThenProcessorCreated_Test()
        {
            var processor = new CodeValueFhirTemplateProcessor();

            Assert.NotNull(processor);
        }