public void WhenHeathVaultApproximateDateTimeTransformedToFhir_ThenValuesEqual()
        {
            var testDateTime        = new LocalDateTime(2017, 8, 3, 10, 17, 16, 115);
            var approximateDateTime = new ApproximateDateTime(testDateTime);

            var fhirDateTime = approximateDateTime.ToFhir();

            Assert.IsNotNull(fhirDateTime);
            Assert.AreEqual(testDateTime.ToDateTimeUnspecified(), fhirDateTime.ToDateTime().Value);
        }
        public void WhenHeathVaultApproximateDateTimePartialTransformedToFhir_ThenDefaultValuesEqual()
        {
            // Year only
            var approximateDateTime1 = new ApproximateDateTime(new ApproximateDate(2017));
            var expectedDateTime1    = new DateTime(2017, 1, 1);
            var fhirDateTime1        = approximateDateTime1.ToFhir();

            Assert.IsNotNull(fhirDateTime1);
            Assert.AreEqual(expectedDateTime1, fhirDateTime1.ToDateTime().Value);

            // Year, month only
            var approximateDateTime2 = new ApproximateDateTime(new ApproximateDate(2017, 8));
            var expectedDateTime2    = new DateTime(2017, 8, 1);
            var fhirDateTime2        = approximateDateTime2.ToFhir();

            Assert.IsNotNull(fhirDateTime2);
            Assert.AreEqual(expectedDateTime2, fhirDateTime2.ToDateTime().Value);

            // Year, month, day only
            var approximateDateTime3 = new ApproximateDateTime(new ApproximateDate(2017, 8, 3));
            var expectedDateTime3    = new DateTime(2017, 8, 3);
            var fhirDateTime3        = approximateDateTime3.ToFhir();

            Assert.IsNotNull(fhirDateTime3);
            Assert.AreEqual(expectedDateTime3, fhirDateTime3.ToDateTime().Value);

            // Year, month, day, hour, minute only
            var approximateDateTime4 = new ApproximateDateTime(new ApproximateDate(2017, 8, 3), new ApproximateTime(10, 15));
            var expectedDateTime4    = new DateTime(2017, 8, 3, 10, 15, 0);
            var fhirDateTime4        = approximateDateTime4.ToFhir();

            Assert.IsNotNull(fhirDateTime4);
            Assert.AreEqual(expectedDateTime4, fhirDateTime4.ToDateTime().Value);

            // Year, month, day, hour, minute, second only
            var approximateDateTime5 = new ApproximateDateTime(new ApproximateDate(2017, 8, 3), new ApproximateTime(10, 15, 30));
            var expectedDateTime5    = new DateTime(2017, 8, 3, 10, 15, 30);
            var fhirDateTime5        = approximateDateTime5.ToFhir();

            Assert.IsNotNull(fhirDateTime5);
            Assert.AreEqual(expectedDateTime5, fhirDateTime5.ToDateTime().Value);

            // Year, month, day, hour, minute, second, millisecond only
            var approximateDateTime6 = new ApproximateDateTime(new ApproximateDate(2017, 8, 3), new ApproximateTime(10, 15, 30, 115));
            var expectedDateTime6    = new DateTime(2017, 8, 3, 10, 15, 30, 115);
            var fhirDateTime6        = approximateDateTime6.ToFhir();

            Assert.IsNotNull(fhirDateTime6);
            Assert.AreEqual(expectedDateTime6, fhirDateTime6.ToDateTime().Value);
        }