コード例 #1
0
        private ValueSet ConvertValueSetFromR4ToR3(string path)
        {
            string data;

            using (TextReader reader = new StreamReader(path))
                data = reader.ReadToEnd();

            R4Model.ValueSet valueSet = null;
            if (SerializationUtil.ProbeIsXml(data))
            {
                valueSet = _r4XmlParser.Parse <R4Model.ValueSet>(data);
            }
            else if (SerializationUtil.ProbeIsJson(data))
            {
                valueSet = _r4JsonParser.Parse <R4Model.ValueSet>(data);
            }
            else
            {
                Assert.True(false, $"File '{path}' does not contain valid Xml or Json");
            }

            if (valueSet == null)
            {
                return(null);
            }

            FhirConverter converter = new FhirConverter(FhirVersion.R3, FhirVersion.R4);

            return(converter.Convert <ValueSet, R4Model.ValueSet>(valueSet));
        }
コード例 #2
0
        public void Can_ConvertElement_R3_Ratio_To_R4_Ratio()
        {
            var r3TypeInstance = new R3Model.Ratio
            {
                Numerator = new Quantity
                {
                    Value  = 103.50m,
                    Unit   = "US$",
                    Code   = "USD",
                    System = "urn:iso:std:iso:4217"
                },
                Denominator = new Quantity
                {
                    Value  = 1,
                    Unit   = "day",
                    Code   = "day",
                    System = "http://unitsofmeasure.org"
                }
            };
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <Ratio, R3Model.Ratio>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(r3TypeInstance.Numerator.Value, r4TypeInstance.Numerator.Value);
            Assert.Equal(r3TypeInstance.Numerator.Unit, r4TypeInstance.Numerator.Unit);
            Assert.Equal(r3TypeInstance.Numerator.Code, r4TypeInstance.Numerator.Code);
            Assert.Equal(r3TypeInstance.Numerator.System, r4TypeInstance.Numerator.System);
            Assert.Equal(r3TypeInstance.Denominator.Value, r4TypeInstance.Denominator.Value);
            Assert.Equal(r3TypeInstance.Denominator.Unit, r4TypeInstance.Denominator.Unit);
            Assert.Equal(r3TypeInstance.Denominator.Code, r4TypeInstance.Denominator.Code);
            Assert.Equal(r3TypeInstance.Denominator.System, r4TypeInstance.Denominator.System);
        }
コード例 #3
0
        public FhirConverterWrapper(FhirVersion to, FhirVersion from)
        {
            _converter = new FhirConverter(to, from);

            ToSerializer   = new SerializationWrapper(to);
            FromSerializer = new SerializationWrapper(from);
        }
コード例 #4
0
        public void Can_ConvertElement_R3_Time_To_R4_Time()
        {
            var value          = "13:09:45";
            var r3TypeInstance = new Time(value);
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3).Convert <Time, Time>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(value, r4TypeInstance.Value);
        }
コード例 #5
0
        public void Can_ConvertElement_R3_Instant_To_R4_Instant()
        {
            var value            = DateTimeOffset.UtcNow;
            var r3TypeInstance   = new Instant(value);
            var r3ToR4Conversion = new FhirConverter(FhirVersion.R4, FhirVersion.R3);
            var r4TypeInstance   = r3ToR4Conversion.Convert <Instant, Instant>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(value, r4TypeInstance.Value);
        }
コード例 #6
0
        public void Can_ConvertElement_R3_PositiveInt_To_R4_PositiveInt()
        {
            var value          = 1;
            var r3TypeInstance = new PositiveInt(value);
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <PositiveInt, PositiveInt>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(value, r4TypeInstance.Value);
        }
コード例 #7
0
        public void Can_ConvertElement_R3_UnsignedInt_To_R4_UnsignedInt()
        {
            var value          = 0;
            var r3TypeInstance = new UnsignedInt(value);
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <UnsignedInt, UnsignedInt>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(value, r4TypeInstance.Value);
        }
コード例 #8
0
        public void Can_ConvertElement_R3_Uuid_To_R4_Uuid()
        {
            var value          = "9ed040e6-e75c-4c76-bb65-40c147e4fce0";
            var r3TypeInstance = new Uuid(value);
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <Uuid, Uuid>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(value, r4TypeInstance.Value);
        }
コード例 #9
0
        public void Can_ConvertElement_R3_Oid_To_R4_Oid()
        {
            var value          = "urn:oid:2.16.578.1.12.4.1.1";
            var r3TypeInstance = new Oid(value);
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <Oid, Oid>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(value, r4TypeInstance.Value);
        }
コード例 #10
0
        public void Can_ConvertElement_R3_FhirUri_To_R4_FhirUri()
        {
            var value          = "https://helsenorge.no";
            var r3TypeInstance = new FhirUri(value);
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <FhirUri, FhirUri>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(value, r4TypeInstance.Value);
        }
コード例 #11
0
        public void Can_ConvertElement_R3_Integer_To_R4_Integer()
        {
            var value          = 42;
            var r3TypeInstance = new Integer(value);
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <Integer, Integer>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(value, r4TypeInstance.Value);
        }
コード例 #12
0
        public void Can_ConvertElement_R3_FhirBoolean_To_R4_FhirBoolean()
        {
            var value          = true;
            var r3TypeInstance = new FhirBoolean(value);
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <FhirBoolean, FhirBoolean>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(value, r4TypeInstance.Value);
        }
コード例 #13
0
        public void Can_ConvertElement_R3_Code_To_R4_Code()
        {
            var value          = "J-001";
            var r3TypeInstance = new Code(value);
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <Code, Code>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(value, r4TypeInstance.Value);
        }
コード例 #14
0
        public void Can_ConvertElement_R3_Base64Binary_To_R4_Base64Binary()
        {
            var value          = System.Convert.FromBase64String("VGhpcyB0ZXN0IGNhc2UgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gY29udmVydCBmcm9tIGFuIFIzIGluc3RhbmNlIG9mIEJhc2U2NEJpbmFyeSB0byBhbiBSNCBpbnN0YW5jZSBvZiBCYXNlNjRCaW5hcnk=");
            var r3TypeInstance = new Base64Binary(value);
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <Base64Binary, Base64Binary>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(value, r4TypeInstance.Value);
        }
コード例 #15
0
        public void Can_ConvertElement_R3_FhirDecimal_To_R4_FhirDecimal()
        {
            var value          = 10.7564785m;
            var r3TypeInstance = new FhirDecimal(value);
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <FhirDecimal, FhirDecimal>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(value, r4TypeInstance.Value);
        }
コード例 #16
0
        public void Can_ConvertElement_R3_Date_To_R4_Date()
        {
            var value          = "2020-06-23";
            var r3TypeInstance = new Date(value);
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <Date, Date>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(value, r4TypeInstance.Value);
        }
コード例 #17
0
        public void Can_ConvertElement_R3_FhirDateTime_To_R4_FhirDateTime()
        {
            var value          = "2022-06-23T00:00:00.000Z";
            var r3TypeInstance = new FhirDateTime(value);
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <FhirDateTime, FhirDateTime>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(value, r4TypeInstance.Value);
        }
コード例 #18
0
        public void Can_ConvertElement_R3_FhirString_To_R4_FhirString()
        {
            var value          = "This is a FhirString converted from R3 to R4";
            var r3TypeInstance = new FhirString(value);
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <FhirString, FhirString>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(value, r4TypeInstance.Value);
        }
コード例 #19
0
        public void Can_ConvertElement_R3_Period_To_R4_Period()
        {
            var r3TypeInstance = new Period
            {
                Start = "2020-06-23",
                End   = "2020-06-27"
            };
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <Period, Period>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(r3TypeInstance.Start, r4TypeInstance.Start);
            Assert.Equal(r3TypeInstance.End, r4TypeInstance.End);
        }
コード例 #20
0
        public void CreateGenereltBlodTrykk()
        {
            string path = Path.Combine(".", "TestData", "Generelt blodtrykk", "questionnaire-Blodtrykk-R4.xml");
            string xml;

            using (TextReader reader = new StreamReader(path))
                xml = reader.ReadToEnd();
            R4Model.Questionnaire r4Questionnaire = _r4XmlParser.Parse <R4Model.Questionnaire>(xml);

            FhirConverter converter     = new FhirConverter(FhirVersion.R3, FhirVersion.R4);
            Questionnaire questionnaire = converter.Convert <Questionnaire, R4Model.Questionnaire>(r4Questionnaire);

            questionnaire.SerializeResourceToDiskAsXml("questionnaire-Blodtrykk-R3.xml", FhirVersion.R3);
            questionnaire.SerializeResourceToDiskAsJson("questionnaire-Blodtrykk-R3.json", FhirVersion.R3);
        }
コード例 #21
0
        public void Can_ConvertElement_R3_Annotation_To_R4_Annotation()
        {
            var r3TypeInstance = new R3Model.Annotation
            {
                Author = new FhirString("Kenneth Myhra"),
                Time   = "20:36",
                Text   = "This is the annotation"
            };
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <Annotation, R3Model.Annotation>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(((FhirString)r3TypeInstance.Author).Value, ((FhirString)r4TypeInstance.Author).Value);
            Assert.Equal(r3TypeInstance.Time, r4TypeInstance.Time);
            Assert.Equal(r3TypeInstance.Text, r4TypeInstance.Text?.Value);
        }
コード例 #22
0
        public void Can_ConvertElement_R3_Attachment_To_R4_Attachment()
        {
            var r3TypeInstance = new R3Model.Attachment
            {
                ContentType = "application/pdf",
                Data        = System.Convert.FromBase64String("JVBERi0xLjcKCjEgMCBvYmogICUgZW50cnkgcG9pbnQKPDwKICAvVHlwZSAvQ2F0YWxvZwogIC9QYWdlcyAyIDAgUgo+PgplbmRvYmoKCjIgMCBvYmoKPDwKICAvVHlwZSAvUGFnZXMKICAvTWVkaWFCb3ggWyAwIDAgMjAwIDIwMCBdCiAgL0NvdW50IDEKICAvS2lkcyBbIDMgMCBSIF0KPj4KZW5kb2JqCgozIDAgb2JqCjw8CiAgL1R5cGUgL1BhZ2UKICAvUGFyZW50IDIgMCBSCiAgL1Jlc291cmNlcyA8PAogICAgL0ZvbnQgPDwKICAgICAgL0YxIDQgMCBSIAogICAgPj4KICA+PgogIC9Db250ZW50cyA1IDAgUgo+PgplbmRvYmoKCjQgMCBvYmoKPDwKICAvVHlwZSAvRm9udAogIC9TdWJ0eXBlIC9UeXBlMQogIC9CYXNlRm9udCAvVGltZXMtUm9tYW4KPj4KZW5kb2JqCgo1IDAgb2JqICAlIHBhZ2UgY29udGVudAo8PAogIC9MZW5ndGggNDQKPj4Kc3RyZWFtCkJUCjcwIDUwIFRECi9GMSAxMiBUZgooSGVsbG8sIHdvcmxkISkgVGoKRVQKZW5kc3RyZWFtCmVuZG9iagoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDEwIDAwMDAwIG4gCjAwMDAwMDAwNzkgMDAwMDAgbiAKMDAwMDAwMDE3MyAwMDAwMCBuIAowMDAwMDAwMzAxIDAwMDAwIG4gCjAwMDAwMDAzODAgMDAwMDAgbiAKdHJhaWxlcgo8PAogIC9TaXplIDYKICAvUm9vdCAxIDAgUgo+PgpzdGFydHhyZWYKNDkyCiUlRU9G"),
                Title       = "Example PDF"
            };
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <Attachment, R3Model.Attachment>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(r3TypeInstance.ContentType, r4TypeInstance.ContentType);
            Assert.Equal(r3TypeInstance.Data, r4TypeInstance.Data);
            Assert.Equal(r3TypeInstance.Title, r4TypeInstance.Title);
        }
コード例 #23
0
        public void Can_ConvertElement_R3_Money_To_R4_Money()
        {
            var r3TypeInstance = new R3Model.Money
            {
                Value  = 24.45m,
                Unit   = "US$",
                System = "urn:iso:std:iso:4217",
                Code   = "USD"
            };
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <Money, R3Model.Money>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(r3TypeInstance.Value, r4TypeInstance.Value);
            Assert.Equal(Money.Currencies.USD, r4TypeInstance.Currency);
        }
コード例 #24
0
        //[InlineData(@"TestData\account.profile-r4.json")]
        //[InlineData(@"TestData\activitydefinition.profile-r4.json")]
        //[InlineData(@"TestData\adverseevent.profile-r4.json")]
        //[InlineData(@"TestData\allergyintolerance.profile-r4.json")]
        //[InlineData(@"TestData\appointment.profile-r4.json")]
        //[InlineData(@"TestData\appointmentresponse.profile-r4.json")]
        //[InlineData(@"TestData\consent.profile-r4.json")]
        public async Task CanConvert_Questionnaire_FromR4ToR3_RoundTrip(string path)
        {
            var converterFromR4ToR3 = new FhirConverter(to: FhirVersion.R3, from: FhirVersion.R4);
            var converterFromR3ToR4 = new FhirConverter(to: FhirVersion.R4, from: FhirVersion.R3);

            var r4Serializer = new SerializationWrapper(FhirVersion.R4);
            var r4Resource   = r4Serializer.Parse(await File.ReadAllTextAsync(path));

            var r3Resource          = converterFromR4ToR3.Convert <Resource, Resource>(r4Resource.Resource);
            var r4ResourceRoundTrip = converterFromR3ToR4.Convert <Resource, Resource>(r3Resource);

            var r4ResourceContent          = r4Serializer.Serialize(r4Resource);
            var r4ResourceRoundTripContent = r4Serializer.Serialize(r4ResourceRoundTrip);

            Assert.Equal(r4ResourceContent, r4ResourceRoundTripContent);
        }
コード例 #25
0
        public void CanR4ResourceConvertToR3()
        {
            // questionnaire-Bloodpressure-R4.xml
            string path = Path.Combine(".", "TestData", "questionnaire-Bloodpressure-R4.xml");
            string xml;

            using (TextReader reader = new StreamReader(path))
                xml = reader.ReadToEnd();
            R4Model.Questionnaire r4Questionnaire = _r4XmlParser.Parse <R4Model.Questionnaire>(xml);

            FhirConverter converter     = new FhirConverter(FhirVersion.R3, FhirVersion.R4);
            Questionnaire questionnaire = converter.Convert <Questionnaire, R4Model.Questionnaire>(r4Questionnaire);

            // ValueSet-blood-pressure-v2-cuffsize-R4.xml
            ValueSet valueSet = ConvertValueSetFromR4ToR3(Path.Combine(".", "TestData", "ValueSet-blood-pressure-v2-cuffsize-R4.xml"));

            valueSet = RemoveDesignation(valueSet);
            questionnaire.Contained.Add(valueSet);

            // ValueSet-blood-pressure-v2-diastolicendpoint-R4.xml
            valueSet = ConvertValueSetFromR4ToR3(Path.Combine(".", "TestData", "ValueSet-blood-pressure-v2-diastolicendpoint-R4.xml"));
            valueSet = RemoveDesignation(valueSet);
            questionnaire.Contained.Add(valueSet);

            // ValueSet-blood-pressure-v2-locationofmeasurement-R4.xml
            valueSet = ConvertValueSetFromR4ToR3(Path.Combine(".", "TestData", "ValueSet-blood-pressure-v2-locationofmeasurement-R4.xml"));
            using (TextReader reader = new StreamReader(path))
                xml = reader.ReadToEnd();
            valueSet = RemoveDesignation(valueSet);
            questionnaire.Contained.Add(valueSet);

            // ValueSet-blood-pressure-v2-method-R4.xml
            valueSet = ConvertValueSetFromR4ToR3(Path.Combine(".", "TestData", "ValueSet-blood-pressure-v2-method-R4.xml"));
            using (TextReader reader = new StreamReader(path))
                xml = reader.ReadToEnd();
            valueSet = RemoveDesignation(valueSet);
            questionnaire.Contained.Add(valueSet);

            FixContainedValueSetReferences(questionnaire.Contained.FindAll(r => r.ResourceType(FhirVersion.R3) == ResourceTypeWrapper.ValueSet), questionnaire.Item);

            questionnaire.SerializeResourceToDiskAsXml("questionnaire-Bloodpressure-R3.xml", FhirVersion.R3);
            questionnaire.SerializeResourceToDiskAsJson("questionnaire-Bloodpressure-R3.json", FhirVersion.R3);
        }
コード例 #26
0
        public void Can_ConvertElement_R3_Identifier_To_R4_Identifier()
        {
            var r3TypeInstance = new Identifier
            {
                Use    = Identifier.IdentifierUse.Official,
                System = "http://www.acmehosp.com/patients",
                Value  = "44552",
                Period = new Period
                {
                    Start = "2003-05-03"
                }
            };
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <Identifier, Identifier>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(r3TypeInstance.Use.GetLiteral(), r4TypeInstance.Use.GetLiteral());
            Assert.Equal(r3TypeInstance.System, r4TypeInstance.System);
            Assert.Equal(r3TypeInstance.Value, r4TypeInstance.Value);
        }
コード例 #27
0
        public void Can_ConvertElement_R3_Range_To_R4_Range()
        {
            var r3TypeInstance = new Hl7.Fhir.Model.Range
            {
                Low = new Quantity
                {
                    Value = 1.6m,
                    Unit  = "m"
                },
                High = new Quantity
                {
                    Value = 1.9m,
                    Unit  = "m"
                }
            };
            var r4TypeInstance = new FhirConverter(FhirVersion.R4, FhirVersion.R3)
                                 .Convert <Hl7.Fhir.Model.Range, Hl7.Fhir.Model.Range>(r3TypeInstance);

            Assert.NotNull(r4TypeInstance);
            Assert.Equal(r3TypeInstance.Low.Value, r4TypeInstance.Low.Value);
            Assert.Equal(r3TypeInstance.Low.Unit, r4TypeInstance.Low.Unit);
            Assert.Equal(r3TypeInstance.High.Value, r4TypeInstance.High.Value);
            Assert.Equal(r3TypeInstance.High.Unit, r4TypeInstance.High.Unit);
        }
コード例 #28
0
 public void CannotConvert_Between_FhirVersion_WithMoreThanOneHop(FhirVersion from, FhirVersion to)
 {
     Assert.False(FhirConverter.CanConvertBetweenVersions(from, to));
 }
コード例 #29
0
 public void CanConvert_Between_FhirVersion_WithOneHop(FhirVersion from, FhirVersion to)
 {
     Assert.True(FhirConverter.CanConvertBetweenVersions(from, to));
 }
コード例 #30
0
 public void FhirVersion_Is_Not_Supported(FhirVersion version)
 {
     Assert.False(FhirConverter.IsVersionSupported(version));
 }