diff --git a/Microsoft.Health.Fhir.Ingest.sln b/Microsoft.Health.Fhir.Ingest.sln
index b86c82f0..3994a2f5 100644
--- a/Microsoft.Health.Fhir.Ingest.sln
+++ b/Microsoft.Health.Fhir.Ingest.sln
@@ -7,12 +7,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Fhir.Inges
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lib", "lib", "{513D67B4-80E1-476D-955F-E7E7C79D144A}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "func", "func", "{E8C74AB9-FA41-42C2-8238-C2D86CB08AAE}"
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{FAF8B402-892E-4EA2-B4CF-69B0C70BA762}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Fhir.Ingest.Host", "src\func\Microsoft.Health.Fhir.Ingest.Host\Microsoft.Health.Fhir.Ingest.Host.csproj", "{11F6C10F-483A-4DD7-99A3-14FDD5CCA3F1}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Fhir.Ingest.UnitTests", "test\Microsoft.Health.Fhir.Ingest.UnitTests\Microsoft.Health.Fhir.Ingest.UnitTests.csproj", "{F6422A39-DC02-436B-AC1F-82CC9CF75E73}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Fhir.R4.Ingest", "src\lib\Microsoft.Health.Fhir.R4.Ingest\Microsoft.Health.Fhir.R4.Ingest.csproj", "{98D001A4-3B1B-4E60-9148-71881A0D457D}"
@@ -22,26 +18,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Fhir.R4.In
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Fhir.R4.Ingest.UnitTests", "test\Microsoft.Health.Fhir.R4.Ingest.UnitTests\Microsoft.Health.Fhir.R4.Ingest.UnitTests.csproj", "{10E71A88-CC24-4DFA-92F3-18E47D42E985}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "deploy", "deploy", "{AC515DEF-E7DA-4D6C-8EBC-0F17DE83E400}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "templates", "templates", "{7486FD7F-2711-4184-8764-71D1103D48B2}"
- ProjectSection(SolutionItems) = preProject
- deploy\templates\consumption-azuredeploy.json = deploy\templates\consumption-azuredeploy.json
- deploy\templates\default-azuredeploy-sandbox.json = deploy\templates\default-azuredeploy-sandbox.json
- deploy\templates\default-managed-identity-azuredeploy.json = deploy\templates\default-managed-identity-azuredeploy.json
- deploy\templates\premium-azuredeploy.json = deploy\templates\premium-azuredeploy.json
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{6E76ACC1-D355-447E-B8D9-EAB5CCD9BCF4}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "templates", "templates", "{75D08B93-4CE1-4967-B0C3-DAA792F1D19A}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "basic", "basic", "{81D325F3-96B4-45B4-8C55-42AD6F1EB350}"
- ProjectSection(SolutionItems) = preProject
- sample\templates\basic\devicecontent.json = sample\templates\basic\devicecontent.json
- sample\templates\basic\fhirmapping.json = sample\templates\basic\fhirmapping.json
- EndProjectSection
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Extensions.Fhir", "src\lib\Microsoft.Health.Extensions.Fhir\Microsoft.Health.Extensions.Fhir.csproj", "{11032625-0B2B-4468-B1F1-431B5682DB7A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Extensions.Fhir.R4", "src\lib\Microsoft.Health.Extensions.Fhir.R4\Microsoft.Health.Extensions.Fhir.R4.csproj", "{124A0B74-0FED-473A-86FA-1806B07FF64C}"
@@ -61,12 +37,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Extensions
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Extensions.Host", "src\lib\Microsoft.Health.Extensions.Host\Microsoft.Health.Extensions.Host.csproj", "{9110663E-BFA0-4082-B1BE-F85D91DEFCA2}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "healthkitOnFhir", "healthkitOnFhir", "{31F33751-AA52-4B4C-816B-31B69913B346}"
- ProjectSection(SolutionItems) = preProject
- sample\templates\healthkitOnFhir\devicecontent.json = sample\templates\healthkitOnFhir\devicecontent.json
- sample\templates\healthkitOnFhir\fhirmapping.json = sample\templates\healthkitOnFhir\fhirmapping.json
- EndProjectSection
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Fhir.Ingest.Template", "src\lib\Microsoft.Health.Fhir.Ingest.Template\Microsoft.Health.Fhir.Ingest.Template.csproj", "{85D653A7-0E63-4751-8904-728156807A14}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Fhir.Ingest.Schema", "src\lib\Microsoft.Health.Fhir.Ingest.Schema\Microsoft.Health.Fhir.Ingest.Schema.csproj", "{A85AB6BC-698C-460F-81D4-9D1D2BD14B71}"
@@ -83,17 +53,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Logging",
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Events.UnitTest", "test\Microsoft.Health.Events.UnitTest\Microsoft.Health.Events.UnitTest.csproj", "{77E5164F-2DED-4297-A082-54FAFD1C4EC9}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sandbox", "sandbox", "{4793E9D2-6D10-4AB4-8D4C-04E0F0309AF5}"
- ProjectSection(SolutionItems) = preProject
- sample\templates\sandbox\devicecontent.json = sample\templates\sandbox\devicecontent.json
- sample\templates\sandbox\fhirmapping.json = sample\templates\sandbox\fhirmapping.json
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "legacy", "legacy", "{657FB6EC-2F58-43B6-AD14-5EDE9D73C1E5}"
- ProjectSection(SolutionItems) = preProject
- sample\templates\sandbox\legacy\devicecontent.json = sample\templates\sandbox\legacy\devicecontent.json
- EndProjectSection
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Expressions", "src\lib\Microsoft.Health.Expressions\Microsoft.Health.Expressions.csproj", "{0BC152B5-DF88-4750-A7CC-1B7429D879F6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Expressions.UnitTests", "test\Microsoft.Health.Expressions.UnitTests\Microsoft.Health.Expressions.UnitTests.csproj", "{9BF918FE-E09B-4072-8CC5-2BE479230719}"
@@ -110,10 +69,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Fhir.Inges
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Fhir.Ingest.Template.Generator.UnitTests", "tools\mapping-generator\Microsoft.Health.Fhir.Ingest.Template.Generator.Tests\Microsoft.Health.Fhir.Ingest.Template.Generator.UnitTests.csproj", "{9F9457B4-17DF-489C-A73F-25868FE64E5A}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Fhir.Ingest.Legacy.UnitTests", "test\Microsoft.Health.Fhir.Ingest.Legacy.UnitTests\Microsoft.Health.Fhir.Ingest.Legacy.UnitTests.csproj", "{03DDFBF2-50B3-4B27-84DC-19D84CEB1288}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Fhir.Ingest.Legacy", "src\lib\Microsoft.Health.Fhir.Ingest.Legacy\Microsoft.Health.Fhir.Ingest.Legacy.csproj", "{F35F00C4-4AB0-4E80-99F1-39F24948B7A8}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Fhir.Ingest.Console.Normalization", "src\console\Microsoft.Health.Fhir.Ingest.Console.Normalization\Microsoft.Health.Fhir.Ingest.Console.Normalization.csproj", "{C972DE01-7C95-414E-BED7-A2C322B78D32}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Fhir.Ingest.Console.Common", "src\console\Microsoft.Health.Fhir.Ingest.Console.Common\Microsoft.Health.Fhir.Ingest.Console.Common.csproj", "{C9D5F009-243B-42B6-881E-AC194E7ECB21}"
@@ -132,10 +87,6 @@ Global
{269436ED-1F69-4A83-A2EB-FBE82233472F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{269436ED-1F69-4A83-A2EB-FBE82233472F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{269436ED-1F69-4A83-A2EB-FBE82233472F}.Release|Any CPU.Build.0 = Release|Any CPU
- {11F6C10F-483A-4DD7-99A3-14FDD5CCA3F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {11F6C10F-483A-4DD7-99A3-14FDD5CCA3F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {11F6C10F-483A-4DD7-99A3-14FDD5CCA3F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {11F6C10F-483A-4DD7-99A3-14FDD5CCA3F1}.Release|Any CPU.Build.0 = Release|Any CPU
{F6422A39-DC02-436B-AC1F-82CC9CF75E73}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F6422A39-DC02-436B-AC1F-82CC9CF75E73}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F6422A39-DC02-436B-AC1F-82CC9CF75E73}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -236,14 +187,6 @@ Global
{9F9457B4-17DF-489C-A73F-25868FE64E5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9F9457B4-17DF-489C-A73F-25868FE64E5A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9F9457B4-17DF-489C-A73F-25868FE64E5A}.Release|Any CPU.Build.0 = Release|Any CPU
- {03DDFBF2-50B3-4B27-84DC-19D84CEB1288}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {03DDFBF2-50B3-4B27-84DC-19D84CEB1288}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {03DDFBF2-50B3-4B27-84DC-19D84CEB1288}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {03DDFBF2-50B3-4B27-84DC-19D84CEB1288}.Release|Any CPU.Build.0 = Release|Any CPU
- {F35F00C4-4AB0-4E80-99F1-39F24948B7A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {F35F00C4-4AB0-4E80-99F1-39F24948B7A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {F35F00C4-4AB0-4E80-99F1-39F24948B7A8}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {F35F00C4-4AB0-4E80-99F1-39F24948B7A8}.Release|Any CPU.Build.0 = Release|Any CPU
{C972DE01-7C95-414E-BED7-A2C322B78D32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C972DE01-7C95-414E-BED7-A2C322B78D32}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C972DE01-7C95-414E-BED7-A2C322B78D32}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -266,13 +209,9 @@ Global
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{269436ED-1F69-4A83-A2EB-FBE82233472F} = {513D67B4-80E1-476D-955F-E7E7C79D144A}
- {11F6C10F-483A-4DD7-99A3-14FDD5CCA3F1} = {E8C74AB9-FA41-42C2-8238-C2D86CB08AAE}
{F6422A39-DC02-436B-AC1F-82CC9CF75E73} = {FAF8B402-892E-4EA2-B4CF-69B0C70BA762}
{98D001A4-3B1B-4E60-9148-71881A0D457D} = {513D67B4-80E1-476D-955F-E7E7C79D144A}
{10E71A88-CC24-4DFA-92F3-18E47D42E985} = {FAF8B402-892E-4EA2-B4CF-69B0C70BA762}
- {7486FD7F-2711-4184-8764-71D1103D48B2} = {AC515DEF-E7DA-4D6C-8EBC-0F17DE83E400}
- {75D08B93-4CE1-4967-B0C3-DAA792F1D19A} = {6E76ACC1-D355-447E-B8D9-EAB5CCD9BCF4}
- {81D325F3-96B4-45B4-8C55-42AD6F1EB350} = {75D08B93-4CE1-4967-B0C3-DAA792F1D19A}
{11032625-0B2B-4468-B1F1-431B5682DB7A} = {513D67B4-80E1-476D-955F-E7E7C79D144A}
{124A0B74-0FED-473A-86FA-1806B07FF64C} = {513D67B4-80E1-476D-955F-E7E7C79D144A}
{B5BDAF20-DA88-47AF-94C2-33789479DF99} = {513D67B4-80E1-476D-955F-E7E7C79D144A}
@@ -281,7 +220,6 @@ Global
{73C97786-1CC7-4CF9-A420-8AB66D0BD731} = {FAF8B402-892E-4EA2-B4CF-69B0C70BA762}
{90402958-43C6-43E8-A22A-1B1469A4FCC5} = {FAF8B402-892E-4EA2-B4CF-69B0C70BA762}
{9110663E-BFA0-4082-B1BE-F85D91DEFCA2} = {513D67B4-80E1-476D-955F-E7E7C79D144A}
- {31F33751-AA52-4B4C-816B-31B69913B346} = {75D08B93-4CE1-4967-B0C3-DAA792F1D19A}
{85D653A7-0E63-4751-8904-728156807A14} = {513D67B4-80E1-476D-955F-E7E7C79D144A}
{A85AB6BC-698C-460F-81D4-9D1D2BD14B71} = {513D67B4-80E1-476D-955F-E7E7C79D144A}
{EE072537-807D-4FE2-BFEB-424B64DCD7F9} = {FAF8B402-892E-4EA2-B4CF-69B0C70BA762}
@@ -289,8 +227,6 @@ Global
{22275DE3-859D-40F0-9547-7711568164C0} = {513D67B4-80E1-476D-955F-E7E7C79D144A}
{05123BAE-E96E-4C7E-95CB-C616DF940F17} = {513D67B4-80E1-476D-955F-E7E7C79D144A}
{77E5164F-2DED-4297-A082-54FAFD1C4EC9} = {FAF8B402-892E-4EA2-B4CF-69B0C70BA762}
- {4793E9D2-6D10-4AB4-8D4C-04E0F0309AF5} = {75D08B93-4CE1-4967-B0C3-DAA792F1D19A}
- {657FB6EC-2F58-43B6-AD14-5EDE9D73C1E5} = {75D08B93-4CE1-4967-B0C3-DAA792F1D19A}
{0BC152B5-DF88-4750-A7CC-1B7429D879F6} = {513D67B4-80E1-476D-955F-E7E7C79D144A}
{9BF918FE-E09B-4072-8CC5-2BE479230719} = {FAF8B402-892E-4EA2-B4CF-69B0C70BA762}
{7F507901-30BD-41CD-99B8-FD8FA103D70A} = {513D67B4-80E1-476D-955F-E7E7C79D144A}
@@ -298,8 +234,6 @@ Global
{90B4DFD0-D039-438D-9541-A12482C2D9BE} = {513D67B4-80E1-476D-955F-E7E7C79D144A}
{3A335D57-CF8D-4C1F-89F6-AAF703A8B501} = {80C3D951-E8D3-4DAB-9482-852EB9A6D542}
{9F9457B4-17DF-489C-A73F-25868FE64E5A} = {80C3D951-E8D3-4DAB-9482-852EB9A6D542}
- {03DDFBF2-50B3-4B27-84DC-19D84CEB1288} = {FAF8B402-892E-4EA2-B4CF-69B0C70BA762}
- {F35F00C4-4AB0-4E80-99F1-39F24948B7A8} = {513D67B4-80E1-476D-955F-E7E7C79D144A}
{C972DE01-7C95-414E-BED7-A2C322B78D32} = {1EF3584A-C437-4B45-8BF8-1597D5A8DBC7}
{C9D5F009-243B-42B6-881E-AC194E7ECB21} = {1EF3584A-C437-4B45-8BF8-1597D5A8DBC7}
{C6265F50-8EEE-4D3D-BCBD-4BD2A6404D4F} = {1EF3584A-C437-4B45-8BF8-1597D5A8DBC7}
diff --git a/README.md b/README.md
index 0b7c6521..9e7a783f 100644
--- a/README.md
+++ b/README.md
@@ -9,52 +9,82 @@ Device data can be directly written to the IoMT FHIR Connector for Azure or seam
The IoMT FHIR Connector for Azure is intended only for use in transferring and formatting data. It is not intended for use as a medical device or to perform any analysis or any medical function, and the performance of the software for such purposes has not been established. You bear sole responsibility for any use of this software, including incorporation into any product intended for a medical purpose.
The IoMT FHIR Connector for Azure is built with extensibility in mind, enabling developers to modify and extend the capabilities to support additional device mapping template types and FHIR resources. The different points for extension are:
+
* Normalization: Device data information is extracted into a common format for further processing.
* FHIR Conversion: Normalized and grouped data is mapped to FHIR. Observations are created or updated according to configured templates and linked to the device and patient.
The IoMT FHIR Connector for Azure empowers developers – saving time when they need to quickly integrate IoMT data into their FHIR server for use in their own applications or providing them with a foundation on which they can customize their own IoMT FHIR connector service. As an open source project, contributions and feedback from the FHIR developer community will continue to improve this project.
-# Setup and Requirements
-- R4 FHIR server with support for Device, Patient, and Observation resources.
-- OAuth 2.0 identity provider with configured [client credentials](https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow) granted access to the FHIR server.
-- An existing device resource and patient resource on the FHIR server. The device should be linked to the patient. Please note the identity extracted for the device during the normalization step should be a device identifier not the internal id.
-- A device content template uploaded to the template storage container. See [Configuration](./docs/Configuration.md) for more information.
-- A FHIR mapping template uploaded to the template storage container. See [Configuration](./docs/Configuration.md) for more information.
-
-# Getting Started
-To get started, there are a few options:
-1. Deploy the [IoMT FHIR Connector for Azure](./docs/ARMInstallation.md) by itself for use with Azure API for FHIR and Azure Active directory in the same subscription. Requests made to the Azure API for FHIR will be authenticated using the Azure Active Directory within this subscription - External identity providers cannot be used if the IoMT FHIR Connector for Azure is deployed with this template.
-2. Start with a complete [sandbox environment](./docs/Sandbox.md) that includes an instance of [IoT Central](https://azure.microsoft.com/en-us/services/iot-central/) with simulated devices and a deployed instance of the [Azure API for FHIR](https://docs.microsoft.com/en-us/azure/healthcare-apis/).
-
-To send messages to the connector you can [send events](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-dotnet-standard-getstarted-send) directly to the `devicedata` EventHub deployed as part of IoMT FHIR Connector for Azure or [send events](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-sdks) to one of the Azure IoT solutions and [export messages](./docs/Iot.md) to the connector.
-
-# Architecture
+## Setup and Requirements
+
+* R4 FHIR server with support for Device, Patient, and Observation resources.
+* OAuth 2.0 identity provider with configured [client credentials](https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow) granted access to the FHIR server.
+* An existing device resource and patient resource on the FHIR server. The device should be linked to the patient. Please note the identity extracted for the device during the normalization step should be a device identifier not the internal id.
+* A device content template uploaded to the template storage container. See [Configuration](./docs/Configuration.md) for more information.
+* A FHIR mapping template uploaded to the template storage container. See [Configuration](./docs/Configuration.md) for more information.
+
+## Getting Started
+
+Deploy the [IoMT FHIR Connector for Azure](./docs/BicepInstallation.md) with a FHIR service in Azure Health Data Services, Azure Event Hub and all other required dependencies. Setting the `Resource Identity Resolution Type` to `Create` during deployment will create Patient and Device resources when messages are processed. See [here](./docs/BicepInstallation.md#resource-identity-resolution-type) for more information about `Resource Identity Resolution Type`.
+
+When the IoMT FHIR Connector for Azure is deployed using the instructions outlined [BicepInstallation.md], [sample templates](./sample/templates/basic/) are uploaded for testing. Test messages can be sent to test the deployment using the [Event Hubs Data Generator](https://learn.microsoft.com/en-us/azure/event-hubs/send-and-receive-events-using-data-generator).
+
+```json
+{
+ "heartrate": 65,
+ "deviceid": "device1",
+ "patientid": "patient1",
+ "measurementdatetime": "2023-10-09T19:18:23+00:00"
+}
+```
+
+```json
+{
+ "steps": 10,
+ "deviceid": "device1",
+ "patientid": "patient1",
+ "measurementdatetime": "2023-10-09T19:18:23+00:00"
+}
+```
+
+```json
+{
+ "systolic": 120,
+ "diastolic": 80,
+ "deviceid": "device1",
+ "patientid": "patient1",
+ "measurementdatetime": "2023-10-09T19:18:23+00:00"
+}
+```
+
+## Architecture

* **Ingest**: The ingestion point for device data is an Event Hub. [Scale](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-faq#throughput-units) your Event Hub throughput units based on your message volume.
* **Normalize**: Device data is processed and compared to templates defined in the `devicecontent.json` configuration file. Types, values, and other important information are extracted. The output is written to a second Event Hub.
* **Group**: Normalized data is grouped according to device identity, measurement type, and the configured time period. The time period controls the latency that observations are written to FHIR.
-* **Transform**: Output from the group and buffering stage is processed. Observations are created by matching the types from the grouped normalized data to the templates defined in the `fhirmapping.json` configuration file. It is at this point that the device is retrieved from the FHIR server along with the associated patient.
+* **Transform**: Output from the group and buffering stage is processed. Observations are created by matching the types from the grouped normalized data to the templates defined in the `fhirmapping.json` configuration file. It is at this point that the device is retrieved from the FHIR server along with the associated patient.
**Note** all identity look ups are cached once resolved to decrease load on the FHIR server. If you plan on reusing devices with multiple patients it is advised you create a *virtual device* resource that is specific to the patient and the virtual device identifier is what is sent in the message payload. The virtual device can be linked to the actual device resource as a parent.
* **Persist**: Once the observation is generated in the FHIR conversion step it is created or merged in the configured destination FHIR server.
## Azure Architecture
+

-# Documentation
-- [Configuration](./docs/Configuration.md): Documents the different configurations required for the connector.
-- [Open Source Deployment using Managed Identity](./docs/ARMInstallation.md): Describes how to deploy the IoMT FHIR Connector for Azure using Azure API for FHIR and Azure Active directory in the same subscription.
-- [Sandbox Deployment](./docs/Sandbox.md): Describes how to deploy an end to end sandbox environment using IoT Central, IoMT FHIR Connector for Azure, and the Azure API for FHIR.
-- [Connecting to Azure IoT](./docs/Iot.md): Describes how to connect the IoMT FHIR Connector for Azure with different Azure IoT solutions like IoT Hub and IoT Central.
-- [Debugging](./docs/Debugging.md): Documents steps for local and cloud debugging.
+## Documentation
+
+* [Configuration](./docs/Configuration.md): Documents the different configurations required for the connector.
+* [Connecting to Azure IoT](./docs/Iot.md): Describes how to set up the IoMT FHIR Connector using Azure IoT Hub.
+* [Debugging](./docs/Debugging.md): Documents steps for local and cloud debugging.
-# More Information
-- [Azure API for FHIR](https://docs.microsoft.com/en-us/azure/healthcare-apis/)
-- Blog: [Accelerate IoMT on FHIR with new Microsoft OSS Connector](https://azure.microsoft.com/en-us/blog/accelerate-iomt-on-fhir-with-new-microsoft-oss-connector/)
+## More Information
-# Contributing
+* [Azure Health Data Services](https://docs.microsoft.com/en-us/azure/healthcare-apis/)
+* Blog: [Accelerate IoMT on FHIR with new Microsoft OSS Connector](https://azure.microsoft.com/en-us/blog/accelerate-iomt-on-fhir-with-new-microsoft-oss-connector/)
+
+## Contributing
This project welcomes contributions and suggestions. Most contributions require you to agree to a
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
@@ -65,6 +95,7 @@ a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow th
provided by the bot. You will only need to do this once across all repos using our CLA.
There are many other ways to contribute to IoMT FHIR Connector for Azure.
+
* [Submit bugs](https://github.com/Microsoft/iomt-fhir/issues) and help us verify fixes as they are checked in.
* Review the [source code changes](https://github.com/Microsoft/iomt-fhir/pulls).
* Engage with IoMT FHIR Connector for Azure users and developers on [StackOverflow](https://stackoverflow.com/questions/tagged/iomt-fhir-connector-for-azure).
diff --git a/deploy/docker/DockerRun.ps1 b/deploy/docker/DockerRun.ps1
deleted file mode 100644
index 5e188e2c..00000000
--- a/deploy/docker/DockerRun.ps1
+++ /dev/null
@@ -1,47 +0,0 @@
-<#
- This script can be used to build and run the IoMT Azure Function code in a docker container.
- It can be used for local development to build and run Docker images, and images can be used for cloud deployment.
- By default console logging is turned on, but can be turned off by removing AzureFunctionsJobHost__Logging__Console__IsEnabled
- One caveat with local development is that Docker cannot easily communicate with the Azure Storage Emulator, and it is easiest use a cloud storage container instead.
- Run this script from the project root .\deploy\docker\DockerRun.ps1
-#>
-
-if(-not (Test-Path .\src\func\Microsoft.Health.Fhir.Ingest.Host\local.settings.json)) {
- Write-Output 'Could not locate local.settings.json'
- Exit
-}
-
-$json = Get-Content .\src\func\Microsoft.Health.Fhir.Ingest.Host\local.settings.json | ConvertFrom-Json
-$env = $json.Values
-
-if($env.AzureWebJobsStorage -eq "UseDevelopmentStorage=true") {
- Write-Output 'Setting "AzureWebJobsStorage":"UseDevelopmentStorage=true" in local.settings.json not supported with Docker, must use connection string'
- Exit
-}
-
-$fhirVersion = $env."FhirVersion"
-if(!$fhirVersion) {
- Write-Output 'The FHIR version not found in local.settings.json, using R4 as default.'
- $fhirVersion = 'R4'
-}
-
-docker build --tag iomt:v1.0.0 --build-arg FhirVersion=$fhirVersion .
-docker run -p 8080:80 `
- -e AzureFunctionsJobHost__Logging__Console__IsEnabled='true' `
- -e AzureWebJobsScriptRoot='/home/site/wwwroot' `
- -e AzureWebJobsStorage="$($env."AzureWebJobsStorage")" `
- -e AzureWebJobsSecretStorageType="$($env."AzureWebJobsSecretStorageType")" `
- -e FhirVersion="$fhirVersion" `
- -e FhirService:Authority="$($env."FhirService:Authority")" `
- -e FhirService:ClientId="$($env."FhirService:ClientId")" `
- -e FhirService:ClientSecret="$($env."FhirService:ClientSecret")" `
- -e FhirService:Resource="$($env."FhirService:Resource")" `
- -e FhirService:Url="$($env."FhirService:Url")" `
- -e FUNCTIONS_WORKER_RUNTIME="$($env."FUNCTIONS_WORKER_RUNTIME")" `
- -e InputEventHub="$($env."InputEventHub")" `
- -e OutputEventHub="$($env."OutputEventHub")" `
- -e ResourceIdentity:ResourceIdentityServiceType="$($env."ResourceIdentity:ResourceIdentityServiceType")" `
- -e ResourceIdentity:DefaultDeviceIdentifierSystem="$($env."ResourceIdentity:DefaultDeviceIdentifierSystem")" `
- -e Template:DeviceContent="$($env."Template:DeviceContent")" `
- -e Template:FhirMapping="$($env."Template:FhirMapping")" `
- -it iomt:v1.0.0
\ No newline at end of file
diff --git a/deploy/scripts/Create-IomtFhirSandboxEnvironment.ps1 b/deploy/scripts/Create-IomtFhirSandboxEnvironment.ps1
deleted file mode 100644
index 89139eae..00000000
--- a/deploy/scripts/Create-IomtFhirSandboxEnvironment.ps1
+++ /dev/null
@@ -1,117 +0,0 @@
-<#
-.SYNOPSIS
-Creates a new IoMT FHIR Connector for Azure sandbox environment.
-.DESCRIPTION
-#>
-param
-(
- [Parameter(Mandatory = $true)]
- [ValidateNotNullOrEmpty()]
- [ValidateLength(5,12)]
- [ValidateScript({
- if ("$_" -cmatch "(^([a-z]|\d)+$)") {
- return $true
- }
- else {
- throw "Environment name must be lowercase and numbers"
- return $false
- }
- })]
- [string]$EnvironmentName,
-
- [Parameter(Mandatory = $false)]
- [ValidateSet('Australia East','East US','East US 2', 'West US', 'West US 2','North Central US','South Central US','Southeast Asia','North Europe','West Europe','UK West','UK South')]
- [string]$EnvironmentLocation = "North Central US",
-
- [Parameter(Mandatory = $false)]
- [ValidateSet('North Europe', 'Central US')]
- [string]$IotCentralLocation = "Central US",
-
- [Parameter(Mandatory = $false)]
- [ValidateSet('R4')]
- [string]$FhirVersion = "R4",
-
- [Parameter(Mandatory = $false)]
- [string]$FhirApiLocation = "northcentralus",
-
- [Parameter(Mandatory = $false)]
- [string]$SourceRepository = "https://github.com/microsoft/iomt-fhir",
-
- [Parameter(Mandatory = $false)]
- [string]$SourceRevision = "main",
-
- [parameter(Mandatory = $false)]
- [SecureString]$AdminPassword,
-
- [parameter(Mandatory = $false)]
- [ValidateSet('Lookup', 'Create', 'LookupWithEncounter')]
- [string]$ResourceIdentityResolutionType = "Create"
-)
-
-Set-StrictMode -Version Latest
-
-# Get current Az context
-try {
- $azContext = Get-AzContext
-}
-catch {
- throw "Please log in to Azure RM with Login-AzAccount cmdlet before proceeding"
-}
-
-# Get current account context - User/Service Principal
-if ($azContext.Account.Type -eq "User") {
- Write-Host "Current context is user: $($azContext.Account.Id)"
-
- $currentUser = Get-AzADUser -UserPrincipalName $azContext.Account.Id
-
- #If this is guest account, we will try a search instead
- if (!$currentUser) {
- # External user accounts have UserPrincipalNames of the form:
- # myuser_outlook.com#EXT#@mytenant.onmicrosoft.com for a user with username myuser@outlook.com
- $tmpUserName = $azContext.Account.Id.Replace("@", "_")
- $currentUser = Get-AzureADUser -Filter "startswith(UserPrincipalName, '${tmpUserName}')"
- $currentObjectId = $currentUser.ObjectId
- } else {
- $currentObjectId = $currentUser.Id
- }
-
- if (!$currentObjectId) {
- throw "Failed to find objectId for signed in user"
- }
-}
-elseif ($azContext.Account.Type -eq "ServicePrincipal") {
- Write-Host "Current context is service principal: $($azContext.Account.Id)"
- $currentObjectId = (Get-AzADServicePrincipal -ServicePrincipalName $azContext.Account.Id).Id
-}
-else {
- Write-Host "Current context is account of type '$($azContext.Account.Type)' with id of '$($azContext.Account.Id)"
- throw "Running as an unsupported account type. Please use either a 'User' or 'Service Principal' to run this command"
-}
-
-# Creating Resource Group
-Write-Host "Creating resource group with the name $EnvironmentName in the subscription $($azContext.Subscription.Name)"
-$resourceGroup = Get-AzResourceGroup -Name $EnvironmentName -ErrorAction SilentlyContinue
-if (!$resourceGroup) {
- New-AzResourceGroup -Name $EnvironmentName -Location $EnvironmentLocation | Out-Null
-}
-
-# Deploy the template
-$githubRawBaseUrl = $SourceRepository.Replace("github.com","raw.githubusercontent.com").TrimEnd('/')
-$sandboxTemplate = "..\templates\default-azuredeploy-sandbox.json"
-$iomtConnectorTemplate = "${githubRawBaseUrl}/${SourceRevision}/deploy/templates/default-managed-identity-azuredeploy.json"
-$fhirServerUrl = "https://${EnvironmentName}.azurehealthcareapis.com"
-
-Write-Host "Deploying resources..."
-New-AzResourceGroupDeployment -TemplateFile $sandboxTemplate -ResourceGroupName $EnvironmentName -ServiceName $EnvironmentName -FhirServiceLocation $FhirApiLocation -FhirVersion $FhirVersion -RepositoryUrl $SourceRepository -RepositoryBranch $SourceRevision -FhirServiceUrl $fhirServerUrl -ResourceLocation $EnvironmentLocation -IomtConnectorTemplateUrl $iomtConnectorTemplate -ResourceIdentityResolutionType $ResourceIdentityResolutionType
-
-# Copy the config templates to storage
-Write-Host "Copying templates to storage..."
-$storageAcct = Get-AzStorageAccount -ResourceGroupName $EnvironmentName -Name $EnvironmentName
-Get-ChildItem -Path "../../sample/templates/sandbox" -File | Set-AzStorageBlobContent -Context $storageAcct.Context -Container "template" -Force
-
-Write-Host "Warming up site..."
-Invoke-WebRequest -Uri "${fhirServerUrl}/metadata" | Out-Null
-
-@{
- fhirServerUrl = $fhirServerUrl
-}
diff --git a/deploy/scripts/Delete-IomtFhirSandboxEnvironment.ps1 b/deploy/scripts/Delete-IomtFhirSandboxEnvironment.ps1
deleted file mode 100644
index f27ce01c..00000000
--- a/deploy/scripts/Delete-IomtFhirSandboxEnvironment.ps1
+++ /dev/null
@@ -1,24 +0,0 @@
-<#
-.SYNOPSIS
-Removes a IoMT FHIR Connector for Azure sandbox environment
-.DESCRIPTION
-#>
-param
-(
- [Parameter(Mandatory = $true)]
- [ValidateNotNullOrEmpty()]
- [string]$EnvironmentName
-)
-
-Set-StrictMode -Version Latest
-
-# Get current Az context
-try {
- $azContext = Get-AzContext
-}
-catch {
- throw "Please log in to Azure RM with Login-AzAccount cmdlet before proceeding"
-}
-
-# Wipe out the environment
-Get-AzResourceGroup -Name $EnvironmentName | Remove-AzResourceGroup -Verbose -Force
diff --git a/deploy/templates/consumption-azuredeploy.json b/deploy/templates/consumption-azuredeploy.json
deleted file mode 100644
index e664e937..00000000
--- a/deploy/templates/consumption-azuredeploy.json
+++ /dev/null
@@ -1,867 +0,0 @@
-{
- "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {
- "ServiceName": {
- "type": "string",
- "minLength": 3,
- "maxLength": 20,
- "metadata": {
- "description": "Name for the service(s) being deployed. Name will applied to all relevant services being created."
- }
- },
- "RepositoryUrl": {
- "type": "string",
- "defaultValue": "https://github.com/Microsoft/iomt-fhir",
- "metadata": {
- "description": "Repository to pull source code from. If blank, source code will not be deployed."
- }
- },
- "RepositoryBranch": {
- "type": "string",
- "defaultValue": "main",
- "metadata": {
- "description": "Source code branch to deploy."
- }
- },
- "JobWindowUnit": {
- "type": "string",
- "allowedValues": [
- "SECOND",
- "MINUTE",
- "HOUR"
- ],
- "metadata": {
- "description": "The time period to collect events before sending them to the FHIR server."
- },
- "defaultValue": "MINUTE"
- },
- "JobWindowMagnitude": {
- "type": "int",
- "minValue": 1,
- "maxValue": 60,
- "metadata": {
- "description": "The magnitude of time period to collect events before sending them to the FHIR server."
- },
- "defaultValue": 5
- },
- "StreamingUnits": {
- "type": "int",
- "minValue": 1,
- "maxValue": 120,
- "metadata": {
- "description": "Number of Streaming Units for the ASA job processing device events."
- },
- "allowedValues": [
- 1,
- 3,
- 6,
- 12,
- 18,
- 24,
- 30,
- 36,
- 42,
- 48,
- 54,
- 60,
- 66,
- 72,
- 78,
- 84,
- 90,
- 96,
- 102,
- 108,
- 114,
- 120
- ],
- "defaultValue": 1
- },
- "ThroughputUnits": {
- "type": "int",
- "minValue": 1,
- "maxValue": 20,
- "metadata": {
- "description": "The throughput units reserved for the Event Hubs created."
- },
- "defaultValue": 1
- },
- "ResourceLocation": {
- "type": "string",
- "allowedValues": [
- "Australia East",
- "East US",
- "East US 2",
- "West US",
- "West US 2",
- "North Central US",
- "South Central US",
- "Southeast Asia",
- "North Europe",
- "West Europe",
- "UK West",
- "UK South"
- ],
- "metadata": {
- "description": "The location of the deployed resources."
- }
- },
- "FhirVersion": {
- "type": "string",
- "allowedValues": [
- "R4"
- ],
- "defaultValue": "R4",
- "metadata": {
- "description": "The FHIR version used in the connector. It should match the version used in the FHIR service."
- }
- },
- "FhirServiceUrl": {
- "type": "string",
- "metadata": {
- "description": "Url of the FHIR server that IoMT will be written to."
- }
- },
- "FhirServiceAuthority": {
- "type": "string",
- "metadata": {
- "description": "Authority of the FHIR to retrieve a token against."
- }
- },
- "FhirServiceResource": {
- "type": "string",
- "metadata": {
- "description": "Resource/Audience representing the FHIR server on the provided authority."
- }
- },
- "FhirServiceClientId": {
- "type": "string",
- "metadata": {
- "description": "Client Id to run services as for access to the FHIR server."
- }
- },
- "FhirServiceClientSecret": {
- "type": "securestring",
- "metadata": {
- "description": "Client secret of the application for accessing a token."
- }
- },
- "ResourceIdentityResolutionType": {
- "type": "string",
- "allowedValues": [
- "Lookup",
- "Create",
- "LookupWithEncounter"
- ],
- "defaultValue": "Lookup",
- "metadata": {
- "description": "Configures how patient, device, and other FHIR resource identities are resolved from the ingested data stream."
- }
- },
- "DefaultDeviceIdentifierSystem": {
- "type": "string",
- "defaultValue": "",
- "metadata": {
- "description": "Default system to use when searching for device identities. If empty system is not used in the search."
- }
- }
- },
- "variables": {
- "asa_job_name": "[parameters('ServiceName')]",
- "eventhub_namespace_name": "[parameters('ServiceName')]",
- "normalizeddata_eventhub_name": "[concat(variables('eventhub_namespace_name'), '/normalizeddata')]",
- "devicedata_eventhub_name": "[concat(variables('eventhub_namespace_name'), '/devicedata')]",
- "storage_account_name": "[parameters('ServiceName')]",
- "app_plan_name": "[concat(parameters('ServiceName'), 'plan')]",
- "app_service_name": "[parameters('ServiceName')]",
- "app_insights_name": "[parameters('ServiceName')]",
- "key_vault_name": "[parameters('ServiceName')]",
- "app_service_resource_id": "[resourceId('Microsoft.Web/sites', variables('app_service_name'))]",
- "deploy_source_code": "[and(not(empty(parameters('repositoryUrl'))),not(empty(parameters('repositoryBranch'))))]",
- "sender_role": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '2b629674-e913-4c01-ae53-ef4638d8f975')]",
- "receiver_role": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'a638d3c7-ab3a-418d-83e6-5f17a39d4fde')]",
- "iomt_fhir_connector_name": "[concat('ResourceIdentity', ':', parameters('ResourceIdentityResolutionType'))]"
- },
- "resources": [
- {
- "type": "Microsoft.StreamAnalytics/StreamingJobs",
- "apiVersion": "2019-06-01",
- "name": "[variables('asa_job_name')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('eventhub_namespace_name'), 'normalizeddata', 'reader')]",
- "[resourceId('Microsoft.Web/sites', variables('app_service_name'))]",
- "[resourceId('Microsoft.Web/sites/config', variables('app_service_name'), 'web')]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/consumergroups', variables('eventhub_namespace_name'), 'devicedata', '$Default')]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/consumergroups', variables('eventhub_namespace_name'), 'normalizeddata', '$Default')]"
- ],
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "identity": {
- "type": "SystemAssigned"
- },
- "properties": {
- "outputStartMode": "JobStartTime",
- "sku": {
- "name": "standard"
- },
- "jobType": "Cloud",
- "eventsOutOfOrderPolicy": "Adjust",
- "outputErrorPolicy": "Stop",
- "eventsOutOfOrderMaxDelayInSeconds": 0,
- "eventsLateArrivalMaxDelayInSeconds": 5,
- "dataLocale": "en-US",
- "compatibilityLevel": "1.0",
- "inputs": [
- {
- "name": "normalizeddata",
- "properties": {
- "type": "Stream",
- "datasource": {
- "type": "Microsoft.ServiceBus/EventHub",
- "properties": {
- "serviceBusNamespace": "[variables('eventhub_namespace_name')]",
- "eventHubName": "normalizeddata",
- "consumerGroupName": null,
- "sharedAccessPolicyName": "reader",
- "sharedAccessPolicyKey": "[listkeys(resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('eventhub_namespace_name'), 'normalizeddata', 'reader'), '2017-04-01').primaryKey]"
- }
- },
- "compression": {
- "type": "None"
- },
- "serialization": {
- "type": "Json",
- "properties": {
- "encoding": "UTF8"
- }
- }
- }
- }
- ],
- "outputs": [
- {
- "name": "FhirImportOutput",
- "properties": {
- "datasource": {
- "type": "Microsoft.AzureFunction",
- "properties": {
- "functionAppName": "[variables('app_service_name')]",
- "functionName": "MeasurementCollectionToFhir",
- "apiKey": "[listkeys(concat(resourceId('Microsoft.Web/sites', variables('app_service_name')), '/host/default'), '2018-11-01').masterKey]",
- "maxBatchSize": null,
- "maxBatchCount": 100
- }
- }
- }
- }
- ],
- "transformation": {
- "name": "Transformation",
- "properties": {
- "streamingUnits": "[parameters('StreamingUnits')]",
- "query": "[concat('SELECT \r\n DeviceId [DeviceId], \r\n PatientId [PatientId],\r\n EncounterId [EncounterId],\r\n CorrelationId [CorrelationId],\r\n collect() [Data],\r\n System.Timestamp [WindowTime],\r\n Type [MeasureType],\r\n count(*) [Count]\r\nINTO\r\n [FhirImportOutput]\r\nFROM\r\n [NormalizedData] PARTITION BY PartitionId TIMESTAMP BY OccurrenceTimeUtc\r\nGROUP BY PartitionId, \r\n DeviceId, \r\n PatientId, \r\n EncounterId, \r\n CorrelationId, \r\n Type, \r\n TUMBLINGWINDOW(', parameters('JobWindowUnit'), ', ', parameters('JobWindowMagnitude'), ')')]"
- }
- },
- "functions": [
- ]
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces",
- "apiVersion": "2017-04-01",
- "name": "[variables('eventhub_namespace_name')]",
- "location": "[parameters('ResourceLocation')]",
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "sku": {
- "name": "Standard",
- "tier": "Standard",
- "capacity": "[parameters('ThroughputUnits')]"
- },
- "properties": {
- "zoneRedundant": true,
- "isAutoInflateEnabled": false,
- "maximumThroughputUnits": 0,
- "kafkaEnabled": false
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/AuthorizationRules",
- "apiVersion": "2017-04-01",
- "name": "[concat(variables('eventhub_namespace_name'), '/RootManageSharedAccessKey')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'devicedata')]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'normalizeddata')]"
- ],
- "properties": {
- "rights": [
- "Listen",
- "Manage",
- "Send"
- ]
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs",
- "apiVersion": "2017-04-01",
- "name": "[variables('devicedata_eventhub_name')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]"
- ],
- "properties": {
- "messageRetentionInDays": 1,
- "partitionCount": 32,
- "status": "Active"
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs",
- "apiVersion": "2017-04-01",
- "name": "[variables('normalizeddata_eventhub_name')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]"
- ],
- "properties": {
- "messageRetentionInDays": 1,
- "partitionCount": 32,
- "status": "Active"
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs/authorizationRules",
- "apiVersion": "2017-04-01",
- "name": "[concat(variables('eventhub_namespace_name'), '/devicedata/writer')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'devicedata')]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'normalizeddata')]",
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/AuthorizationRules', variables('eventhub_namespace_name'), 'RootManageSharedAccessKey')]"
- ],
- "properties": {
- "rights": [
- "Send"
- ]
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs/authorizationRules",
- "apiVersion": "2017-04-01",
- "name": "[concat(variables('eventhub_namespace_name'), '/normalizeddata/reader')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'devicedata')]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'normalizeddata')]",
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/AuthorizationRules', variables('eventhub_namespace_name'), 'RootManageSharedAccessKey')]"
- ],
- "properties": {
- "rights": [
- "Listen"
- ]
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs/consumergroups",
- "apiVersion": "2017-04-01",
- "name": "[concat(variables('eventhub_namespace_name'), '/devicedata/$Default')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'devicedata')]",
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('eventhub_namespace_name'), 'devicedata', 'writer')]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('eventhub_namespace_name'), 'normalizeddata', 'reader')]"
- ],
- "properties": {
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs/consumergroups",
- "apiVersion": "2017-04-01",
- "name": "[concat(variables('eventhub_namespace_name'), '/normalizeddata/$Default')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'normalizeddata')]",
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('eventhub_namespace_name'), 'devicedata', 'writer')]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('eventhub_namespace_name'), 'normalizeddata', 'reader')]"
- ],
- "properties": {
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs/providers/roleAssignments",
- "apiVersion": "2018-07-01",
- "name": "[concat(variables('devicedata_eventhub_name'), '/Microsoft.Authorization/', guid(uniqueString(variables('devicedata_eventhub_name'))))]",
- "dependsOn": [
- "[resourceId('Microsoft.Web/sites', variables('app_service_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'devicedata')]"
- ],
- "properties": {
- "roleDefinitionId": "[variables('receiver_role')]",
- "principalId": "[reference(variables('app_service_resource_id'), '2015-08-01', 'Full').Identity.principalId]",
- "scope": "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'devicedata')]",
- "principalType": "ServicePrincipal"
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs/providers/roleAssignments",
- "apiVersion": "2018-07-01",
- "name": "[concat(variables('normalizeddata_eventhub_name'), '/Microsoft.Authorization/', guid(uniqueString(variables('normalizeddata_eventhub_name'))))]",
- "dependsOn": [
- "[resourceId('Microsoft.Web/sites', variables('app_service_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'normalizeddata')]"
- ],
- "properties": {
- "roleDefinitionId": "[variables('sender_role')]",
- "principalId": "[reference(variables('app_service_resource_id'), '2015-08-01', 'Full').Identity.principalId]",
- "scope": "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'normalizeddata')]",
- "principalType": "ServicePrincipal"
- }
- },
- {
- "type": "Microsoft.Storage/storageAccounts",
- "apiVersion": "2019-04-01",
- "name": "[variables('storage_account_name')]",
- "location": "[parameters('ResourceLocation')]",
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "sku": {
- "name": "Standard_RAGRS",
- "tier": "Standard"
- },
- "kind": "StorageV2",
- "properties": {
- "networkAcls": {
- "bypass": "AzureServices",
- "virtualNetworkRules": [
- ],
- "ipRules": [
- ],
- "defaultAction": "Allow"
- },
- "supportsHttpsTrafficOnly": true,
- "encryption": {
- "services": {
- "file": {
- "enabled": true
- },
- "blob": {
- "enabled": true
- }
- },
- "keySource": "Microsoft.Storage"
- },
- "accessTier": "Hot"
- }
- },
- {
- "type": "Microsoft.Storage/storageAccounts/blobServices",
- "apiVersion": "2019-04-01",
- "name": "[concat(variables('storage_account_name'), '/default')]",
- "dependsOn": [
- "[resourceId('Microsoft.Storage/storageAccounts', variables('storage_account_name'))]"
- ],
- "properties": {
- "cors": {
- "corsRules": [
- ]
- },
- "deleteRetentionPolicy": {
- "enabled": false
- }
- }
- },
- {
- "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
- "apiVersion": "2019-04-01",
- "name": "[concat(variables('storage_account_name'), '/default/template')]",
- "dependsOn": [
- "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storage_account_name'), 'default')]",
- "[resourceId('Microsoft.Storage/storageAccounts', variables('storage_account_name'))]"
- ],
- "properties": {
- "publicAccess": "None"
- }
- },
- {
- "type": "Microsoft.Web/serverfarms",
- "apiVersion": "2018-02-01",
- "name": "[variables('app_plan_name')]",
- "location": "[parameters('ResourceLocation')]",
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "sku": {
- "name": "Y1",
- "tier": "Dynamic",
- "size": "Y1",
- "family": "Y",
- "capacity": 0
- },
- "kind": "functionapp",
- "properties": {
- "perSiteScaling": false,
- "maximumElasticWorkerCount": 1,
- "isSpot": false,
- "reserved": false,
- "isXenon": false,
- "hyperV": false,
- "targetWorkerCount": 0,
- "targetWorkerSizeId": 0
- }
- },
- {
- "type": "Microsoft.Web/sites",
- "apiVersion": "2016-08-01",
- "name": "[variables('app_service_name')]",
- "location": "[parameters('ResourceLocation')]",
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "dependsOn": [
- "[resourceId('Microsoft.Web/serverfarms', variables('app_plan_name'))]",
- "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storage_account_name'), 'default')]"
- ],
- "kind": "functionapp",
- "identity": {
- "type": "SystemAssigned"
- },
- "properties": {
- "enabled": true,
- "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('app_plan_name'))]",
- "reserved": false,
- "scmSiteAlsoStopped": false,
- "clientAffinityEnabled": false,
- "clientCertEnabled": false,
- "hostNamesDisabled": false,
- "containerSize": 1536,
- "dailyMemoryTimeQuota": 0,
- "httpsOnly": true
- },
- "resources": [
- {
- "apiVersion": "2015-08-01",
- "name": "appsettings",
- "type": "config",
- "dependsOn": [
- "[variables('app_service_resource_id')]",
- "[resourceId('Microsoft.Insights/components/', variables('app_insights_name'))]",
- "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-url')]",
- "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-authority')]",
- "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-resource')]",
- "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-clientid')]",
- "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-clientsecret')]"
- ],
- "properties": {
- "InputEventHub": "[concat('Endpoint=sb://', variables('app_service_name'), '.servicebus.windows.net/;Authentication=ManagedIdentity;EntityPath=devicedata')]",
- "OutputEventHub": "[concat('Endpoint=sb://', variables('app_service_name'), '.servicebus.windows.net/;Authentication=ManagedIdentity;EntityPath=normalizeddata')]",
- "FUNCTIONS_EXTENSION_VERSION": "~4",
- "FUNCTIONS_EXTENSION_RUNTIME": "dotnet",
- "PROJECT": "src/func/Microsoft.Health.Fhir.Ingest.Host/Microsoft.Health.Fhir.Ingest.Host.csproj",
- "AzureWebJobsStorage": "[concat('@Microsoft.KeyVault(SecretUri=', reference(resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'blob-storage-cs'), '2018-02-14').secretUriWithVersion, ')')]",
- "AzureWebJobsSecretStorageType": "Files",
- "FhirVersion": "[parameters('FhirVersion')]",
- "FhirService:Url": "[concat('@Microsoft.KeyVault(SecretUri=', reference(resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-url'), '2018-02-14').secretUriWithVersion, ')')]",
- "FhirService:Authority": "[concat('@Microsoft.KeyVault(SecretUri=', reference(resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-authority'), '2018-02-14').secretUriWithVersion, ')')]",
- "FhirService:Resource": "[concat('@Microsoft.KeyVault(SecretUri=', reference(resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-resource'), '2018-02-14').secretUriWithVersion, ')')]",
- "FhirService:ClientId": "[concat('@Microsoft.KeyVault(SecretUri=', reference(resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-clientid'), '2018-02-14').secretUriWithVersion, ')')]",
- "FhirService:ClientSecret": "[concat('@Microsoft.KeyVault(SecretUri=', reference(resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-clientsecret'), '2018-02-14').secretUriWithVersion, ')')]",
- "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(concat('Microsoft.Insights/components/', variables('app_insights_name'))).InstrumentationKey]",
- "Template:DeviceContent": "devicecontent.json",
- "Template:FhirMapping": "fhirmapping.json",
- "ResourceIdentity:ResourceIdentityServiceType": "[parameters('ResourceIdentityResolutionType')]",
- "ResourceIdentity:DefaultDeviceIdentifierSystem": "[parameters('DefaultDeviceIdentifierSystem')]"
- }
- },
- {
- "apiVersion": "2015-08-01",
- "name": "web",
- "type": "sourcecontrols",
- "condition": "[variables('deploy_source_code')]",
- "dependsOn": [
- "[variables('app_service_resource_id')]",
- "[resourceId('Microsoft.Web/sites/config', variables('app_service_name'), 'appsettings')]"
- ],
- "properties": {
- "RepoUrl": "[parameters('RepositoryURL')]",
- "branch": "[parameters('RepositoryBranch')]",
- "IsManualIntegration": true
- }
- }
- ]
- },
- {
- "type": "Microsoft.Web/sites/config",
- "apiVersion": "2016-08-01",
- "name": "[concat(variables('app_service_name'), '/web')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.Web/sites', variables('app_service_name'))]"
- ],
- "properties": {
- "numberOfWorkers": 1,
- "defaultDocuments": [
- ],
- "netFrameworkVersion": "v4.0",
- "phpVersion": "5.6",
- "pythonVersion": "",
- "nodeVersion": "",
- "linuxFxVersion": "",
- "requestTracingEnabled": false,
- "remoteDebuggingEnabled": false,
- "remoteDebuggingVersion": "VS2017",
- "httpLoggingEnabled": false,
- "logsDirectorySizeLimit": 35,
- "detailedErrorLoggingEnabled": false,
- "scmType": "None",
- "use32BitWorkerProcess": true,
- "webSocketsEnabled": false,
- "alwaysOn": false,
- "appCommandLine": "",
- "managedPipelineMode": "Integrated",
- "virtualApplications": [
- {
- "virtualPath": "/",
- "physicalPath": "site\\wwwroot",
- "preloadEnabled": true,
- "virtualDirectories": null
- }
- ],
- "winAuthAdminState": 0,
- "winAuthTenantState": 0,
- "customAppPoolIdentityAdminState": false,
- "customAppPoolIdentityTenantState": false,
- "loadBalancing": "LeastRequests",
- "routingRules": [
- ],
- "experiments": {
- "rampUpRules": [
- ]
- },
- "autoHealEnabled": false,
- "vnetName": "",
- "siteAuthEnabled": false,
- "siteAuthSettings": {
- "enabled": null,
- "unauthenticatedClientAction": null,
- "tokenStoreEnabled": null,
- "allowedExternalRedirectUrls": null,
- "defaultProvider": null,
- "clientId": null,
- "clientSecret": null,
- "clientSecretCertificateThumbprint": null,
- "issuer": null,
- "allowedAudiences": null,
- "additionalLoginParams": null,
- "isAadAutoProvisioned": false,
- "googleClientId": null,
- "googleClientSecret": null,
- "googleOAuthScopes": null,
- "facebookAppId": null,
- "facebookAppSecret": null,
- "facebookOAuthScopes": null,
- "twitterConsumerKey": null,
- "twitterConsumerSecret": null,
- "microsoftAccountClientId": null,
- "microsoftAccountClientSecret": null,
- "microsoftAccountOAuthScopes": null
- },
- "cors": {
- "allowedOrigins": [
- "https://functions.azure.com",
- "https://functions-staging.azure.com",
- "https://functions-next.azure.com"
- ],
- "supportCredentials": false
- },
- "localMySqlEnabled": false,
- "http20Enabled": false,
- "minTlsVersion": "1.2",
- "ftpsState": "FtpsOnly",
- "reservedInstanceCount": 0
- }
- },
- {
- "type": "Microsoft.Web/sites/hostNameBindings",
- "apiVersion": "2016-08-01",
- "name": "[concat(variables('app_service_name'), '/', variables('app_service_name'), '.azurewebsites.net')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.Web/sites', variables('app_service_name'))]"
- ],
- "properties": {
- "siteName": "variables('app_service_name')",
- "hostNameType": "Verified"
- }
- },
- {
- "type": "microsoft.insights/components",
- "apiVersion": "2015-05-01",
- "name": "[variables('app_insights_name')]",
- "location": "[parameters('ResourceLocation')]",
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "kind": "web",
- "properties": {
- "Application_Type": "web",
- "Flow_Type": "Redfield",
- "Request_Source": "IbizaAIExtension"
- }
- },
- {
- "type": "Microsoft.KeyVault/vaults",
- "apiVersion": "2016-10-01",
- "name": "[variables('key_vault_name')]",
- "location": "[parameters('ResourceLocation')]",
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "dependsOn": [
- "[variables('app_service_resource_id')]"
- ],
- "properties": {
- "sku": {
- "family": "A",
- "name": "Standard"
- },
- "tenantId": "[subscription().tenantId]",
- "accessPolicies": [
- {
- "tenantId": "[reference(variables('app_service_resource_id'), '2015-08-01', 'Full').Identity.tenantId]",
- "objectId": "[reference(variables('app_service_resource_id'), '2015-08-01', 'Full').Identity.principalId]",
- "permissions": {
- "keys": [
- ],
- "secrets": [
- "Get",
- "List"
- ],
- "certificates": [
- ]
- }
- }
- ],
- "enabledForDeployment": false,
- "enabledForDiskEncryption": false,
- "enabledForTemplateDeployment": false
- }
- },
- {
- "type": "Microsoft.KeyVault/vaults/secrets",
- "apiVersion": "2016-10-01",
- "name": "[concat(variables('key_vault_name'), '/blob-storage-cs')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.KeyVault/vaults', variables('key_vault_name'))]",
- "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storage_account_name'), 'default')]"
- ],
- "properties": {
- "contentType": "text/plain",
- "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storage_account_name'), ';AccountKey=', listkeys(resourceId('Microsoft.Storage/storageAccounts', variables('storage_account_name')), '2019-04-01').keys[0].value)]",
- "attributes": {
- "enabled": true
- }
- }
- },
- {
- "type": "Microsoft.KeyVault/vaults/secrets",
- "apiVersion": "2016-10-01",
- "name": "[concat(variables('key_vault_name'), '/fhirserver-authority')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.KeyVault/vaults', variables('key_vault_name'))]"
- ],
- "properties": {
- "contentType": "text/plain",
- "value": "[parameters('FhirServiceAuthority')]",
- "attributes": {
- "enabled": true
- }
- }
- },
- {
- "type": "Microsoft.KeyVault/vaults/secrets",
- "apiVersion": "2016-10-01",
- "name": "[concat(variables('key_vault_name'), '/fhirserver-clientid')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.KeyVault/vaults', variables('key_vault_name'))]"
- ],
- "properties": {
- "contentType": "text/plain",
- "value": "[parameters('FhirServiceClientId')]",
- "attributes": {
- "enabled": true
- }
- }
- },
- {
- "type": "Microsoft.KeyVault/vaults/secrets",
- "apiVersion": "2016-10-01",
- "name": "[concat(variables('key_vault_name'), '/fhirserver-clientsecret')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.KeyVault/vaults', variables('key_vault_name'))]"
- ],
- "properties": {
- "contentType": "text/plain",
- "value": "[parameters('FhirServiceClientSecret')]",
- "attributes": {
- "enabled": true
- }
- }
- },
- {
- "type": "Microsoft.KeyVault/vaults/secrets",
- "apiVersion": "2016-10-01",
- "name": "[concat(variables('key_vault_name'), '/fhirserver-resource')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.KeyVault/vaults', variables('key_vault_name'))]"
- ],
- "properties": {
- "contentType": "text/plain",
- "value": "[parameters('FhirServiceResource')]",
- "attributes": {
- "enabled": true
- }
- }
- },
- {
- "type": "Microsoft.KeyVault/vaults/secrets",
- "apiVersion": "2016-10-01",
- "name": "[concat(variables('key_vault_name'), '/fhirserver-url')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.KeyVault/vaults', variables('key_vault_name'))]"
- ],
- "properties": {
- "contentType": "text/plain",
- "value": "[parameters('FhirServiceUrl')]",
- "attributes": {
- "enabled": true
- }
- }
- }
- ],
- "outputs": {
- }
-}
\ No newline at end of file
diff --git a/deploy/templates/default-azuredeploy-sandbox.json b/deploy/templates/default-azuredeploy-sandbox.json
deleted file mode 100644
index 42712287..00000000
--- a/deploy/templates/default-azuredeploy-sandbox.json
+++ /dev/null
@@ -1,333 +0,0 @@
-{
- "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {
- "ServiceName": {
- "type": "string",
- "minLength": 3,
- "maxLength": 20,
- "metadata": {
- "description": "Name for the service(s) being deployed. Name will applied to all relevant services being created."
- }
- },
- "RepositoryUrl": {
- "type": "string",
- "defaultValue": "https://github.com/Microsoft/iomt-fhir",
- "metadata": {
- "description": "Repository to pull source code from. If blank, source code will not be deployed."
- }
- },
- "RepositoryBranch": {
- "type": "string",
- "defaultValue": "main",
- "metadata": {
- "description": "Source code branch to deploy."
- }
- },
- "JobWindowUnit": {
- "type": "string",
- "allowedValues": [
- "SECOND",
- "MINUTE",
- "HOUR"
- ],
- "metadata": {
- "description": "The time period to collect events before sending them to the FHIR server."
- },
- "defaultValue": "MINUTE"
- },
- "JobWindowMagnitude": {
- "type": "int",
- "minValue": 1,
- "maxValue": 60,
- "metadata": {
- "description": "The magnitude of time period to collect events before sending them to the FHIR server."
- },
- "defaultValue": 1
- },
- "StreamingUnits": {
- "type": "int",
- "minValue": 1,
- "maxValue": 120,
- "metadata": {
- "description": "Number of Streaming Units for the ASA job processing device events."
- },
- "allowedValues": [
- 1,
- 3,
- 6,
- 12,
- 18,
- 24,
- 30,
- 36,
- 42,
- 48,
- 54,
- 60,
- 66,
- 72,
- 78,
- 84,
- 90,
- 96,
- 102,
- 108,
- 114,
- 120
- ],
- "defaultValue": 1
- },
- "ThroughputUnits": {
- "type": "int",
- "minValue": 1,
- "maxValue": 20,
- "metadata": {
- "description": "The throughput units reserved for the Event Hubs created."
- },
- "defaultValue": 1
- },
- "AppServicePlanSku": {
- "type": "string",
- "allowedValues": [
- "F1",
- "D1",
- "B1",
- "B2",
- "B3",
- "S1",
- "S2",
- "S3",
- "P1",
- "P2",
- "P3",
- "P4"
- ],
- "defaultValue": "S1",
- "metadata": {
- "description": "The app service plan tier to use for hosting the required Azure Functions."
- }
- },
- "ResourceLocation": {
- "type": "string",
- "allowedValues": [
- "Australia East",
- "East US",
- "East US 2",
- "West US",
- "West US 2",
- "North Central US",
- "South Central US",
- "Southeast Asia",
- "North Europe",
- "West Europe",
- "UK West",
- "UK South"
- ],
- "metadata": {
- "description": "The location of the deployed resources."
- }
- },
- "FhirVersion": {
- "type": "string",
- "allowedValues": [
- "R4"
- ],
- "defaultValue": "R4",
- "metadata": {
- "description": "The FHIR version used in the connector. It should match the version used in the FHIR service."
- }
- },
- "FhirServiceUrl": {
- "type": "string",
- "metadata": {
- "description": "Url of the FHIR server that IoMT will be written to."
- }
- },
- "FhirServiceAudience": {
- "type": "string",
- "metadata": {
- "description": "Audience representing the FHIR server."
- },
- "defaultValue": ""
- },
- "ResourceIdentityResolutionType": {
- "type": "string",
- "allowedValues": [
- "Lookup",
- "Create",
- "LookupWithEncounter"
- ],
- "defaultValue": "Create",
- "metadata": {
- "description": "Configures how patient, device, and other FHIR resource identities are resolved from the ingested data stream."
- }
- },
- "DefaultDeviceIdentifierSystem": {
- "type": "string",
- "defaultValue": "",
- "metadata": {
- "description": "Default system to use when searching for device identities. If empty system is not used in the search."
- }
- },
- "FhirServiceLocation": {
- "type": "string",
- "allowedValues": [ "westus2", "northcentralus", "ukwest", "uksouth", "southeastasia", "australiaeast", "westeurope" ],
- "defaultValue": "northcentralus",
- "metadata": {
- "description": "Location of Azure API for FHIR"
- }
- },
- "IotCentralLocation": {
- "type": "string",
- "allowedValues": [
- "North Europe",
- "Central US"
- ],
- "defaultValue": "Central US",
- "metadata": {
- "description": "The location of the IoT Central template deployment."
- }
- },
- "IomtConnectorTemplateUrl": {
- "type": "string",
- "defaultValue": "https://raw.githubusercontent.com/Microsoft/iomt-fhir/main/deploy/templates/default-managed-identity-azuredeploy.json",
- "metadata": {
- "description": "URL for IOMT Connector template"
- }
- }
- },
- "variables": {
- "app_service_name": "[parameters('ServiceName')]",
- "app_service_deployment_name": "[concat(variables('app_service_name'),'-deploy')]",
- "fhir_datacontributor_role": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '5a1fc7df-4bf1-4951-a576-89034ee01acd')]", "fhir_service_kind": "[concat('fhir-', parameters('FhirVersion'))]",
- "fhir_service_name": "[parameters('ServiceName')]",
- "fhir_service_url": "[concat('https://', parameters('ServiceName'),'.azurehealthcareapis.com')]",
- "fhir_service_cosmos_throughput": 1000,
- "iot_central_name": "[parameters('ServiceName')]"
- },
- "resources": [
- {
- "type": "Microsoft.HealthcareApis/services",
- "kind": "[variables('fhir_service_kind')]",
- "name": "[variables('fhir_service_name')]",
- "apiVersion": "2019-09-16",
- "location": "[parameters('FhirServiceLocation')]",
- "tags": {},
- "properties": {
- "authenticationConfiguration": {
- "smartProxyEnabled": true
- },
- "corsConfiguration": {
- "origins": [
- "*"
- ],
- "headers": [
- "*"
- ],
- "methods": [
- "DELETE",
- "GET",
- "OPTIONS",
- "PATCH",
- "POST",
- "PUT"
- ],
- "maxAge": 1440,
- "allowCredentials": false
- },
- "cosmosDbConfiguration": {
- "offerThroughput": "[variables('fhir_service_cosmos_throughput')]"
- }
- }
- },
- {
- "type": "Microsoft.IoTCentral/IoTApps",
- "name": "[variables('iot_central_name')]",
- "location": "[parameters('IotCentralLocation')]",
- "apiVersion": "2018-09-01",
- "sku": {
- "name": "ST2"
- },
- "properties": {
- "displayName": "[variables('iot_central_name')]",
- "subdomain": "[variables('iot_central_name')]",
- "template": "iotc-patient@1.0.0"
- }
- },
- {
- "name": "[variables('app_service_deployment_name')]",
- "type": "Microsoft.Resources/deployments",
- "apiVersion": "2019-08-01",
- "properties": {
- "templateLink": {
- "uri": "[parameters('IomtConnectorTemplateUrl')]",
- "contentVersion": "1.0.0.0"
- },
- "parameters": {
- "ServiceName": {
- "value": "[parameters('ServiceName')]"
- },
- "RepositoryUrl": {
- "value": "[parameters('RepositoryUrl')]"
- },
- "RepositoryBranch": {
- "value": "[parameters('RepositoryBranch')]"
- },
- "JobWindowUnit": {
- "value": "[parameters('JobWindowUnit')]"
- },
- "JobWindowMagnitude": {
- "value": "[parameters('JobWindowMagnitude')]"
- },
- "StreamingUnits": {
- "value": "[parameters('StreamingUnits')]"
- },
- "ThroughputUnits": {
- "value": "[parameters('ThroughputUnits')]"
- },
- "AppServicePlanSku": {
- "value": "[parameters('AppServicePlanSku')]"
- },
- "ResourceLocation": {
- "value": "[parameters('ResourceLocation')]"
- },
- "FhirVersion": {
- "value": "[parameters('FhirVersion')]"
- },
- "FhirServiceUrl": {
- "value": "[parameters('FhirServiceUrl')]"
- },
- "FhirServiceAudience": {
- "value": "[parameters('FhirServiceAudience')]"
- },
- "ResourceIdentityResolutionType": {
- "value": "[parameters('ResourceIdentityResolutionType')]"
- },
- "DefaultDeviceIdentifierSystem": {
- "value": "[parameters('DefaultDeviceIdentifierSystem')]"
- }
- },
- "mode": "incremental"
- }
- },
- {
- "type": "Microsoft.HealthcareApis/services/providers/roleAssignments",
- "condition": "[contains(parameters('IomtConnectorTemplateUrl'), 'managed-identity-azuredeploy.json')]",
- "apiVersion": "2018-07-01",
- "name": "[concat(variables('fhir_service_name'), '/Microsoft.Authorization/', guid(uniqueString(variables('fhir_service_name'))))]",
- "dependsOn": [
- "[resourceId('Microsoft.HealthcareApis/services',variables('fhir_service_name'))]",
- "[resourceId('Microsoft.Resources/deployments', variables('app_service_deployment_name'))]"
- ],
- "properties": {
- "roleDefinitionId": "[variables('fhir_datacontributor_role')]",
- "principalId": "[reference(variables('app_service_deployment_name')).outputs.managedIdentityId.value]",
- "principalType": "ServicePrincipal",
- "scope": "[resourceId('Microsoft.HealthcareApis/services', variables('fhir_service_name'))]"
- }
- }
- ],
- "outputs": {
- }
-}
\ No newline at end of file
diff --git a/deploy/templates/default-managed-identity-azuredeploy.json b/deploy/templates/default-managed-identity-azuredeploy.json
deleted file mode 100644
index dc7d89cf..00000000
--- a/deploy/templates/default-managed-identity-azuredeploy.json
+++ /dev/null
@@ -1,798 +0,0 @@
-{
- "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {
- "ServiceName": {
- "type": "string",
- "minLength": 3,
- "maxLength": 20,
- "metadata": {
- "description": "Name for the service(s) being deployed. Name will applied to all relevant services being created."
- }
- },
- "RepositoryUrl": {
- "type": "string",
- "defaultValue": "https://github.com/Microsoft/iomt-fhir",
- "metadata": {
- "description": "Repository to pull source code from. If blank, source code will not be deployed."
- }
- },
- "RepositoryBranch": {
- "type": "string",
- "defaultValue": "main",
- "metadata": {
- "description": "Source code branch to deploy."
- }
- },
- "JobWindowUnit": {
- "type": "string",
- "allowedValues": [
- "SECOND",
- "MINUTE",
- "HOUR"
- ],
- "metadata": {
- "description": "The time period to collect events before sending them to the FHIR server."
- },
- "defaultValue": "MINUTE"
- },
- "JobWindowMagnitude": {
- "type": "int",
- "minValue": 1,
- "maxValue": 60,
- "metadata": {
- "description": "The magnitude of time period to collect events before sending them to the FHIR server."
- },
- "defaultValue": 5
- },
- "StreamingUnits": {
- "type": "int",
- "minValue": 1,
- "maxValue": 120,
- "metadata": {
- "description": "Number of Streaming Units for the ASA job processing device events."
- },
- "allowedValues": [
- 1,
- 3,
- 6,
- 12,
- 18,
- 24,
- 30,
- 36,
- 42,
- 48,
- 54,
- 60,
- 66,
- 72,
- 78,
- 84,
- 90,
- 96,
- 102,
- 108,
- 114,
- 120
- ],
- "defaultValue": 1
- },
- "ThroughputUnits": {
- "type": "int",
- "minValue": 1,
- "maxValue": 20,
- "metadata": {
- "description": "The throughput units reserved for the Event Hubs created."
- },
- "defaultValue": 1
- },
- "AppServicePlanSku": {
- "type": "string",
- "allowedValues": [
- "F1",
- "D1",
- "B1",
- "B2",
- "B3",
- "S1",
- "S2",
- "S3",
- "P1",
- "P2",
- "P3",
- "P4"
- ],
- "defaultValue": "S1",
- "metadata": {
- "description": "The app service plan tier to use for hosting the required Azure Functions."
- }
- },
- "ResourceLocation": {
- "type": "string",
- "allowedValues": [
- "Australia East",
- "East US",
- "East US 2",
- "West US",
- "West US 2",
- "North Central US",
- "South Central US",
- "Southeast Asia",
- "North Europe",
- "West Europe",
- "UK West",
- "UK South"
- ],
- "metadata": {
- "description": "The location of the deployed resources."
- }
- },
- "FhirVersion": {
- "type": "string",
- "allowedValues": [
- "R4"
- ],
- "defaultValue": "R4",
- "metadata": {
- "description": "The FHIR version used in the connector. It should match the version used in the FHIR service."
- }
- },
- "FhirServiceUrl": {
- "type": "string",
- "metadata": {
- "description": "Url of the FHIR server that IoMT will be written to."
- }
- },
- "FhirServiceAudience": {
- "type": "string",
- "metadata": {
- "description": "Audience representing the FHIR server."
- },
- "defaultValue": ""
- },
- "ResourceIdentityResolutionType": {
- "type": "string",
- "allowedValues": [
- "Lookup",
- "Create",
- "LookupWithEncounter"
- ],
- "defaultValue": "Lookup",
- "metadata": {
- "description": "Configures how patient, device, and other FHIR resource identities are resolved from the ingested data stream."
- }
- },
- "DefaultDeviceIdentifierSystem": {
- "type": "string",
- "defaultValue": "",
- "metadata": {
- "description": "Default system to use when searching for device identities. If empty system is not used in the search."
- }
- }
- },
- "variables": {
- "asa_job_name": "[parameters('ServiceName')]",
- "eventhub_namespace_name": "[parameters('ServiceName')]",
- "eventhub_hostname": "[concat(variables('eventhub_namespace_name'), '.servicebus.windows.net')]",
- "normalizeddata_name": "normalizeddata",
- "devicedata_name": "devicedata",
- "normalizeddata_eventhub_name": "[concat(variables('eventhub_namespace_name'), '/', variables('normalizeddata_name'))]",
- "devicedata_eventhub_name": "[concat(variables('eventhub_namespace_name'), '/', variables('devicedata_name'))]",
- "storage_account_name": "[parameters('ServiceName')]",
- "app_plan_name": "[concat(parameters('ServiceName'), 'plan')]",
- "app_service_name": "[parameters('ServiceName')]",
- "app_insights_name": "[parameters('ServiceName')]",
- "key_vault_name": "[parameters('ServiceName')]",
- "app_service_resource_id": "[resourceId('Microsoft.Web/sites', variables('app_service_name'))]",
- "deploy_source_code": "[and(not(empty(parameters('repositoryUrl'))),not(empty(parameters('repositoryBranch'))))]",
- "sender_role": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '2b629674-e913-4c01-ae53-ef4638d8f975')]",
- "receiver_role": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'a638d3c7-ab3a-418d-83e6-5f17a39d4fde')]",
- "iomt_fhir_connector_name": "[concat('ResourceIdentity', ':', parameters('ResourceIdentityResolutionType'))]",
- "fhir_service_audience": "[if(or(equals(parameters('FhirServiceAudience'), json('null')), equals(parameters('FhirServiceAudience'), '')), parameters('FhirServiceUrl'), parameters('FhirServiceAudience'))]",
- "akv_secrets_user_role": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '4633458b-17de-408a-b874-0445c86b69e6')]"
- },
- "resources": [
- {
- "type": "Microsoft.StreamAnalytics/StreamingJobs",
- "apiVersion": "2019-06-01",
- "name": "[variables('asa_job_name')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('eventhub_namespace_name'), variables('normalizeddata_name'), 'reader')]",
- "[resourceId('Microsoft.Web/sites', variables('app_service_name'))]",
- "[resourceId('Microsoft.Web/sites/config', variables('app_service_name'), 'web')]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/consumergroups', variables('eventhub_namespace_name'), variables('devicedata_name'), '$Default')]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/consumergroups', variables('eventhub_namespace_name'), variables('normalizeddata_name'), '$Default')]"
- ],
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "identity": {
- "type": "SystemAssigned"
- },
- "properties": {
- "outputStartMode": "JobStartTime",
- "sku": {
- "name": "standard"
- },
- "jobType": "Cloud",
- "eventsOutOfOrderPolicy": "Adjust",
- "outputErrorPolicy": "Stop",
- "eventsOutOfOrderMaxDelayInSeconds": 0,
- "eventsLateArrivalMaxDelayInSeconds": 5,
- "dataLocale": "en-US",
- "compatibilityLevel": "1.0",
- "inputs": [
- {
- "name": "[variables('normalizeddata_name')]",
- "properties": {
- "type": "Stream",
- "datasource": {
- "type": "Microsoft.ServiceBus/EventHub",
- "properties": {
- "serviceBusNamespace": "[variables('eventhub_namespace_name')]",
- "eventHubName": "[variables('normalizeddata_name')]",
- "consumerGroupName": null,
- "sharedAccessPolicyName": "reader",
- "sharedAccessPolicyKey": "[listkeys(resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('eventhub_namespace_name'), variables('normalizeddata_name'), 'reader'), '2017-04-01').primaryKey]"
- }
- },
- "compression": {
- "type": "None"
- },
- "serialization": {
- "type": "Json",
- "properties": {
- "encoding": "UTF8"
- }
- }
- }
- }
- ],
- "outputs": [
- {
- "name": "FhirImportOutput",
- "properties": {
- "datasource": {
- "type": "Microsoft.AzureFunction",
- "properties": {
- "functionAppName": "[variables('app_service_name')]",
- "functionName": "MeasurementCollectionToFhir",
- "apiKey": "[listkeys(concat(resourceId('Microsoft.Web/sites', variables('app_service_name')), '/host/default'), '2018-11-01').masterKey]",
- "maxBatchSize": null,
- "maxBatchCount": 100
- }
- }
- }
- }
- ],
- "transformation": {
- "name": "Transformation",
- "properties": {
- "streamingUnits": "[parameters('StreamingUnits')]",
- "query": "[concat('SELECT \r\n DeviceId [DeviceId], \r\n PatientId [PatientId],\r\n EncounterId [EncounterId],\r\n CorrelationId [CorrelationId],\r\n collect() [Data],\r\n System.Timestamp [WindowTime],\r\n Type [MeasureType],\r\n count(*) [Count]\r\nINTO\r\n [FhirImportOutput]\r\nFROM\r\n [NormalizedData] PARTITION BY PartitionId TIMESTAMP BY OccurrenceTimeUtc\r\nGROUP BY PartitionId, \r\n DeviceId, \r\n PatientId, \r\n EncounterId, \r\n CorrelationId, \r\n Type, \r\n TUMBLINGWINDOW(', parameters('JobWindowUnit'), ', ', parameters('JobWindowMagnitude'), ')')]"
- }
- },
- "functions": [
- ]
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces",
- "apiVersion": "2017-04-01",
- "name": "[variables('eventhub_namespace_name')]",
- "location": "[parameters('ResourceLocation')]",
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "sku": {
- "name": "Standard",
- "tier": "Standard",
- "capacity": "[parameters('ThroughputUnits')]"
- },
- "properties": {
- "zoneRedundant": true,
- "isAutoInflateEnabled": false,
- "maximumThroughputUnits": 0,
- "kafkaEnabled": false
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/AuthorizationRules",
- "apiVersion": "2017-04-01",
- "name": "[concat(variables('eventhub_namespace_name'), '/RootManageSharedAccessKey')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), variables('devicedata_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), variables('normalizeddata_name'))]"
- ],
- "properties": {
- "rights": [
- "Listen",
- "Manage",
- "Send"
- ]
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs",
- "apiVersion": "2017-04-01",
- "name": "[variables('devicedata_eventhub_name')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]"
- ],
- "properties": {
- "messageRetentionInDays": 1,
- "partitionCount": 32,
- "status": "Active"
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs",
- "apiVersion": "2017-04-01",
- "name": "[variables('normalizeddata_eventhub_name')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]"
- ],
- "properties": {
- "messageRetentionInDays": 1,
- "partitionCount": 32,
- "status": "Active"
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs/authorizationRules",
- "apiVersion": "2017-04-01",
- "name": "[concat(variables('eventhub_namespace_name'), '/', variables('devicedata_name'), '/writer')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), variables('devicedata_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), variables('normalizeddata_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/AuthorizationRules', variables('eventhub_namespace_name'), 'RootManageSharedAccessKey')]"
- ],
- "properties": {
- "rights": [
- "Send"
- ]
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs/authorizationRules",
- "apiVersion": "2017-04-01",
- "name": "[concat(variables('eventhub_namespace_name'), '/', variables('normalizeddata_name'), '/reader')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), variables('devicedata_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), variables('normalizeddata_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/AuthorizationRules', variables('eventhub_namespace_name'), 'RootManageSharedAccessKey')]"
- ],
- "properties": {
- "rights": [
- "Listen"
- ]
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs/consumergroups",
- "apiVersion": "2017-04-01",
- "name": "[concat(variables('eventhub_namespace_name'), '/', variables('devicedata_name'), '/$Default')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), variables('devicedata_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('eventhub_namespace_name'), variables('devicedata_name'), 'writer')]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('eventhub_namespace_name'), variables('normalizeddata_name'), 'reader')]"
- ],
- "properties": {
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs/consumergroups",
- "apiVersion": "2017-04-01",
- "name": "[concat(variables('eventhub_namespace_name'), '/', variables('normalizeddata_name'), '/$Default')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), variables('normalizeddata_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('eventhub_namespace_name'), variables('devicedata_name'), 'writer')]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('eventhub_namespace_name'), variables('normalizeddata_name'), 'reader')]"
- ],
- "properties": {
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs/providers/roleAssignments",
- "apiVersion": "2018-09-01-preview",
- "name": "[concat(variables('devicedata_eventhub_name'), '/Microsoft.Authorization/', guid(uniqueString(variables('devicedata_eventhub_name'))))]",
- "dependsOn": [
- "[resourceId('Microsoft.Web/sites', variables('app_service_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), variables('devicedata_name'))]"
- ],
- "properties": {
- "roleDefinitionId": "[variables('receiver_role')]",
- "principalId": "[reference(variables('app_service_resource_id'), '2015-08-01', 'Full').Identity.principalId]",
- "scope": "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), variables('devicedata_name'))]",
- "principalType": "ServicePrincipal"
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs/providers/roleAssignments",
- "apiVersion": "2018-09-01-preview",
- "name": "[concat(variables('normalizeddata_eventhub_name'), '/Microsoft.Authorization/', guid(uniqueString(variables('normalizeddata_eventhub_name'))))]",
- "dependsOn": [
- "[resourceId('Microsoft.Web/sites', variables('app_service_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), variables('normalizeddata_name'))]"
- ],
- "properties": {
- "roleDefinitionId": "[variables('sender_role')]",
- "principalId": "[reference(variables('app_service_resource_id'), '2015-08-01', 'Full').Identity.principalId]",
- "scope": "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), variables('normalizeddata_name'))]",
- "principalType": "ServicePrincipal"
- }
- },
- {
- "type": "Microsoft.Storage/storageAccounts",
- "apiVersion": "2019-04-01",
- "name": "[variables('storage_account_name')]",
- "location": "[parameters('ResourceLocation')]",
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "sku": {
- "name": "Standard_RAGRS",
- "tier": "Standard"
- },
- "kind": "StorageV2",
- "properties": {
- "networkAcls": {
- "bypass": "AzureServices",
- "virtualNetworkRules": [
- ],
- "ipRules": [
- ],
- "defaultAction": "Allow"
- },
- "supportsHttpsTrafficOnly": true,
- "encryption": {
- "services": {
- "file": {
- "enabled": true
- },
- "blob": {
- "enabled": true
- }
- },
- "keySource": "Microsoft.Storage"
- },
- "accessTier": "Hot"
- }
- },
- {
- "type": "Microsoft.Storage/storageAccounts/blobServices",
- "apiVersion": "2019-04-01",
- "name": "[concat(variables('storage_account_name'), '/default')]",
- "dependsOn": [
- "[resourceId('Microsoft.Storage/storageAccounts', variables('storage_account_name'))]"
- ],
- "properties": {
- "cors": {
- "corsRules": [
- ]
- },
- "deleteRetentionPolicy": {
- "enabled": false
- }
- }
- },
- {
- "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
- "apiVersion": "2019-04-01",
- "name": "[concat(variables('storage_account_name'), '/default/template')]",
- "dependsOn": [
- "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storage_account_name'), 'default')]",
- "[resourceId('Microsoft.Storage/storageAccounts', variables('storage_account_name'))]"
- ],
- "properties": {
- "publicAccess": "None"
- }
- },
- {
- "type": "Microsoft.Web/serverfarms",
- "apiVersion": "2016-09-01",
- "name": "[variables('app_plan_name')]",
- "location": "[parameters('ResourceLocation')]",
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "sku": {
- "name": "[parameters('AppServicePlanSku')]"
- },
- "kind": "app",
- "properties": {
- "name": "[variables('app_plan_name')]",
- "perSiteScaling": false,
- "reserved": false,
- "targetWorkerCount": 0,
- "targetWorkerSizeId": 0
- }
- },
- {
- "type": "Microsoft.Web/sites",
- "apiVersion": "2022-03-01",
- "name": "[variables('app_service_name')]",
- "location": "[parameters('ResourceLocation')]",
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "dependsOn": [
- "[resourceId('Microsoft.Web/serverfarms', variables('app_plan_name'))]",
- "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storage_account_name'), 'default')]"
- ],
- "kind": "functionapp",
- "identity": {
- "type": "SystemAssigned"
- },
- "properties": {
- "enabled": true,
- "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('app_plan_name'))]",
- "reserved": false,
- "scmSiteAlsoStopped": false,
- "clientAffinityEnabled": false,
- "clientCertEnabled": false,
- "hostNamesDisabled": false,
- "containerSize": 1536,
- "dailyMemoryTimeQuota": 0,
- "httpsOnly": true
- },
- "resources": [
- {
- "apiVersion": "2022-03-01",
- "name": "appsettings",
- "type": "config",
- "dependsOn": [
- "[variables('app_service_resource_id')]",
- "[resourceId('Microsoft.Insights/components/', variables('app_insights_name'))]"
- ],
- "properties": {
- "InputEventHub": "[concat('Endpoint=sb://', variables('eventhub_hostname'), '/;Authentication=ManagedIdentity;EntityPath=', variables('devicedata_name'))]",
- "OutputEventHub": "[concat('Endpoint=sb://', variables('eventhub_hostname'), '/;Authentication=ManagedIdentity;EntityPath=', variables('normalizeddata_name'))]",
- "FUNCTIONS_EXTENSION_VERSION": "~4",
- "FUNCTIONS_EXTENSION_RUNTIME": "dotnet",
- "PROJECT": "src/func/Microsoft.Health.Fhir.Ingest.Host/Microsoft.Health.Fhir.Ingest.Host.csproj",
- "AzureWebJobsStorage": "[concat('@Microsoft.KeyVault(SecretUri=', reference(resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'blob-storage-cs'), '2018-02-14').secretUriWithVersion, ')')]",
- "AzureWebJobsSecretStorageType": "Files",
- "FhirVersion": "[parameters('FhirVersion')]",
- "FhirService:Url": "[parameters('FhirServiceUrl')]",
- "FhirService:Resource": "[variables('fhir_service_audience')]",
- "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(concat('Microsoft.Insights/components/', variables('app_insights_name'))).InstrumentationKey]",
- "Template:DeviceContent": "devicecontent.json",
- "Template:FhirMapping": "fhirmapping.json",
- "ResourceIdentity:ResourceIdentityServiceType": "[parameters('ResourceIdentityResolutionType')]",
- "ResourceIdentity:DefaultDeviceIdentifierSystem": "[parameters('DefaultDeviceIdentifierSystem')]",
- "FhirClient:UseManagedIdentity": "true"
- }
- },
- {
- "apiVersion": "2022-03-01",
- "name": "web",
- "type": "sourcecontrols",
- "condition": "[variables('deploy_source_code')]",
- "dependsOn": [
- "[variables('app_service_resource_id')]",
- "[resourceId('Microsoft.Web/sites/config', variables('app_service_name'), 'appsettings')]"
- ],
- "properties": {
- "RepoUrl": "[parameters('RepositoryURL')]",
- "branch": "[parameters('RepositoryBranch')]",
- "IsManualIntegration": true
- }
- }
- ]
- },
- {
- "type": "Microsoft.Web/sites/config",
- "apiVersion": "2022-03-01",
- "name": "[concat(variables('app_service_name'), '/web')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.Web/sites', variables('app_service_name'))]"
- ],
- "properties": {
- "numberOfWorkers": 1,
- "defaultDocuments": [
- ],
- "netFrameworkVersion": "v6.0",
- "phpVersion": "5.6",
- "pythonVersion": "",
- "nodeVersion": "",
- "linuxFxVersion": "",
- "requestTracingEnabled": false,
- "remoteDebuggingEnabled": false,
- "remoteDebuggingVersion": "VS2017",
- "httpLoggingEnabled": false,
- "logsDirectorySizeLimit": 35,
- "detailedErrorLoggingEnabled": false,
- "scmType": "None",
- "use32BitWorkerProcess": true,
- "webSocketsEnabled": false,
- "alwaysOn": true,
- "appCommandLine": "",
- "managedPipelineMode": "Integrated",
- "virtualApplications": [
- {
- "virtualPath": "/",
- "physicalPath": "site\\wwwroot",
- "preloadEnabled": true,
- "virtualDirectories": null
- }
- ],
- "winAuthAdminState": 0,
- "winAuthTenantState": 0,
- "customAppPoolIdentityAdminState": false,
- "customAppPoolIdentityTenantState": false,
- "loadBalancing": "LeastRequests",
- "routingRules": [
- ],
- "experiments": {
- "rampUpRules": [
- ]
- },
- "autoHealEnabled": false,
- "vnetName": "",
- "siteAuthEnabled": false,
- "siteAuthSettings": {
- "enabled": null,
- "unauthenticatedClientAction": null,
- "tokenStoreEnabled": null,
- "allowedExternalRedirectUrls": null,
- "defaultProvider": null,
- "clientId": null,
- "clientSecret": null,
- "clientSecretCertificateThumbprint": null,
- "issuer": null,
- "allowedAudiences": null,
- "additionalLoginParams": null,
- "isAadAutoProvisioned": false,
- "googleClientId": null,
- "googleClientSecret": null,
- "googleOAuthScopes": null,
- "facebookAppId": null,
- "facebookAppSecret": null,
- "facebookOAuthScopes": null,
- "twitterConsumerKey": null,
- "twitterConsumerSecret": null,
- "microsoftAccountClientId": null,
- "microsoftAccountClientSecret": null,
- "microsoftAccountOAuthScopes": null
- },
- "cors": {
- "allowedOrigins": [
- "https://functions.azure.com",
- "https://functions-staging.azure.com",
- "https://functions-next.azure.com"
- ],
- "supportCredentials": false
- },
- "localMySqlEnabled": false,
- "http20Enabled": false,
- "minTlsVersion": "1.2",
- "ftpsState": "FtpsOnly",
- "PreWarmedInstanceCount": 0
- }
- },
- {
- "type": "Microsoft.Web/sites/hostNameBindings",
- "apiVersion": "2016-08-01",
- "name": "[concat(variables('app_service_name'), '/', variables('app_service_name'), '.azurewebsites.net')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.Web/sites', variables('app_service_name'))]"
- ],
- "properties": {
- "siteName": "variables('app_service_name')",
- "hostNameType": "Verified"
- }
- },
- {
- "type": "microsoft.insights/components",
- "apiVersion": "2015-05-01",
- "name": "[variables('app_insights_name')]",
- "location": "[parameters('ResourceLocation')]",
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "kind": "web",
- "properties": {
- "Application_Type": "web",
- "Flow_Type": "Redfield",
- "Request_Source": "IbizaAIExtension"
- }
- },
- {
- "type": "Microsoft.KeyVault/vaults",
- "apiVersion": "2019-09-01",
- "name": "[variables('key_vault_name')]",
- "location": "[parameters('ResourceLocation')]",
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "dependsOn": [
- "[variables('app_service_resource_id')]"
- ],
- "properties": {
- "sku": {
- "family": "A",
- "name": "Standard"
- },
- "tenantId": "[subscription().tenantId]",
- "enableRbacAuthorization": true,
- "enabledForDeployment": false,
- "enabledForDiskEncryption": false,
- "enabledForTemplateDeployment": false
- }
- },
- {
- "type": "Microsoft.KeyVault/vaults/providers/roleAssignments",
- "apiVersion": "2018-07-01",
- "name": "[concat(variables('key_vault_name'), '/Microsoft.Authorization/', guid(uniqueString(concat(variables('key_vault_name'), '-akv'))))]",
- "dependsOn": [
- "[resourceId('Microsoft.Web/sites', variables('app_service_name'))]",
- "[resourceId('Microsoft.KeyVault/vaults',variables('key_vault_name'))]"
- ],
- "properties": {
- "roleDefinitionId": "[variables('akv_secrets_user_role')]",
- "principalId": "[reference(variables('app_service_resource_id'), '2015-08-01', 'Full').Identity.principalId]",
- "principalType": "ServicePrincipal",
- "scope": "[resourceId('Microsoft.KeyVault/vaults', variables('key_vault_name'))]"
- }
- },
- {
- "type": "Microsoft.KeyVault/vaults/secrets",
- "apiVersion": "2016-10-01",
- "name": "[concat(variables('key_vault_name'), '/blob-storage-cs')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.KeyVault/vaults', variables('key_vault_name'))]",
- "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storage_account_name'), 'default')]"
- ],
- "properties": {
- "contentType": "text/plain",
- "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storage_account_name'), ';AccountKey=', listkeys(resourceId('Microsoft.Storage/storageAccounts', variables('storage_account_name')), '2019-04-01').keys[0].value)]",
- "attributes": {
- "enabled": true
- }
- }
- }
- ],
- "outputs": {
- "deviceDataEventHubName": {
- "type": "string",
- "value": "[variables('devicedata_name')]"
- },
- "normalizedDataEventHubName": {
- "type": "string",
- "value": "[variables('normalizeddata_name')]"
- },
- "eventHubHostName": {
- "type": "string",
- "value": "[variables('eventhub_hostname')]"
- },
- "managedIdentityId": {
- "type": "string",
- "value": "[reference(variables('app_service_resource_id'), '2015-08-01', 'Full').Identity.principalId]"
- }
- }
-}
diff --git a/deploy/templates/managed/azuredeploy.json b/deploy/templates/managed/azuredeploy.json
deleted file mode 100644
index 4fdff4da..00000000
--- a/deploy/templates/managed/azuredeploy.json
+++ /dev/null
@@ -1,190 +0,0 @@
-{
- "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {
- "fhirServiceName": {
- "type": "string",
- "metadata": {
- "description": "The name of the parent Azure API for FHIR service."
- }
- },
- "location": {
- "type": "string",
- "allowedValues": [
- "australiaeast",
- "centralus",
- "eastus",
- "eastus2",
- "japaneast",
- "northcentralus",
- "northeurope",
- "southcentralus",
- "southeastasia",
- "uksouth",
- "ukwest",
- "westcentralus",
- "westeurope",
- "westus2"
- ],
- "metadata": {
- "description": "Location for your Azure API for FHIR service. Same location will be used for IoT Connector"
- }
- },
- "iotConnectorName": {
- "type": "string",
- "metadata": {
- "description": "The name you want to give to your IoT Connector."
- }
- },
- "connectionName": {
- "type": "string",
- "metadata": {
- "description": "The name for a connection to create for your IoT Connector."
- }
- },
- "iotCentralName": {
- "type": "string",
- "metadata": {
- "description": "The name you want to give to your IoT Central Application."
- }
- },
- "iotCentralLocation": {
- "type": "string",
- "allowedValues": [
- "unitedstates",
- "europe",
- "asiapacific",
- "australia",
- "uk",
- "japan"
- ],
- "metadata": {
- "description": "Location for your IoT Central Application."
- }
- }
- },
- "resources": [
- {
- "type": "Microsoft.HealthcareApis/services",
- "apiVersion": "2020-03-15",
- "name": "[parameters('fhirServiceName')]",
- "location": "[parameters('location')]",
- "kind": "fhir-R4",
- "properties": {
- "authenticationConfiguration": {
- "audience": "[concat('https://', parameters('fhirServiceName'), '.azurehealthcareapis.com')]",
- "authority": "[uri(environment().authentication.loginEndpoint, subscription().tenantId)]"
- }
- }
- },
- {
- "type": "Microsoft.HealthcareApis/services/iomtconnectors",
- "name": "[concat(parameters('fhirServiceName'), '/', parameters('iotConnectorName'))]",
- "apiVersion": "2020-05-01-preview",
- "location": "[parameters('location')]",
- "dependsOn": [
- "[resourceId('Microsoft.HealthcareApis/services', parameters('fhirServiceName'))]"
- ],
- "properties": {
- "serviceConfiguration": {
- "resourceIdentityResolutionType": "Create"
- }
- }
- },
- {
- "type": "Microsoft.HealthcareApis/services/iomtconnectors/connections",
- "name": "[concat(parameters('fhirServiceName'), '/', parameters('iotConnectorName'), '/', parameters('connectionName'))]",
- "apiVersion": "2020-05-01-preview",
- "location": "[parameters('location')]",
- "dependsOn": [
- "[resourceId('Microsoft.HealthcareApis/services/iomtconnectors', parameters('fhirServiceName'), parameters('iotConnectorName'))]"
- ]
- },
- {
- "type": "Microsoft.HealthcareApis/services/iomtconnectors/mappings",
- "name": "[concat(parameters('fhirServiceName'), '/', parameters('iotConnectorName'), '/device')]",
- "apiVersion": "2020-05-01-preview",
- "location": "[parameters('location')]",
- "dependsOn": [
- "[resourceId('Microsoft.HealthcareApis/services/iomtconnectors', parameters('fhirServiceName'), parameters('iotConnectorName'))]"
- ],
- "properties": {
- "content": {
- "templateType": "CollectionContent",
- "template": [
- {
- "templateType": "IotJsonPathContent",
- "template": {
- "typeName": "heartrate",
- "typeMatchExpression": "$..[?(@Body.HeartRate)]",
- "patientIdExpression": "$.SystemProperties.iothub-connection-device-id",
- "values": [
- {
- "required": "true",
- "valueExpression": "$.Body.HeartRate",
- "valueName": "hr"
- }
- ]
- }
- }
- ]
- }
- }
- },
- {
- "type": "Microsoft.HealthcareApis/services/iomtconnectors/mappings",
- "name": "[concat(parameters('fhirServiceName'), '/', parameters('iotConnectorName'), '/fhir')]",
- "apiVersion": "2020-05-01-preview",
- "location": "[parameters('location')]",
- "dependsOn": [
- "[resourceId('Microsoft.HealthcareApis/services/iomtconnectors', parameters('fhirServiceName'), parameters('iotConnectorName'))]"
- ],
- "properties": {
- "content": {
- "templateType": "CollectionFhir",
- "template": [
- {
- "templateType": "CodeValueFhir",
- "template": {
- "codes": [
- {
- "code": "8867-4",
- "system": "http://loinc.org",
- "display": "Heart rate"
- }
- ],
- "periodInterval": 0,
- "typeName": "heartrate",
- "value": {
- "unit": "count/min",
- "valueName": "hr",
- "valueType": "Quantity"
- }
- }
- }
- ]
- }
- }
- },
- {
- "type": "Microsoft.IoTCentral/IoTApps",
- "name": "[parameters('iotCentralName')]",
- "location": "[parameters('iotCentralLocation')]",
- "apiVersion": "2018-09-01",
- "sku": {
- "name": "ST2"
- },
- "properties": {
- "displayName": "[parameters('iotCentralName')]",
- "subdomain": "[parameters('iotCentralName')]",
- "template": "iotc-patient@1.0.0"
- }
- }
- ],
- "outputs": {
- "iomtKey": {
- "type": "string",
- "value": "[listkeys(resourceId('Microsoft.HealthcareApis/services/iomtconnectors/connections', parameters('fhirServiceName'), parameters('iotConnectorName'), parameters('connectionName')), '2020-05-01-preview').primaryConnectionString]"
- }
- }
-}
\ No newline at end of file
diff --git a/deploy/templates/managed/azuredeploy.parameters.json b/deploy/templates/managed/azuredeploy.parameters.json
deleted file mode 100644
index aed14f4e..00000000
--- a/deploy/templates/managed/azuredeploy.parameters.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {
- "fhirServiceName": {
- "value": "GEN-UNIQUE"
- },
- "location": {
- "value": "westus2"
- },
- "iotConnectorName": {
- "value": "GEN-UNIQUE"
- },
- "connectionName": {
- "value": "GEN-UNIQUE"
- },
- "iotCentralName": {
- "value": "GEN-UNIQUE"
- },
- "iotCentralLocation": {
- "value": "unitedstates"
- }
- }
-}
diff --git a/deploy/templates/premium-azuredeploy.json b/deploy/templates/premium-azuredeploy.json
deleted file mode 100644
index 4af58437..00000000
--- a/deploy/templates/premium-azuredeploy.json
+++ /dev/null
@@ -1,867 +0,0 @@
-{
- "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
- "contentVersion": "1.0.0.0",
- "parameters": {
- "ServiceName": {
- "type": "string",
- "minLength": 3,
- "maxLength": 20,
- "metadata": {
- "description": "Name for the service(s) being deployed. Name will applied to all relevant services being created."
- }
- },
- "RepositoryUrl": {
- "type": "string",
- "defaultValue": "https://github.com/Microsoft/iomt-fhir",
- "metadata": {
- "description": "Repository to pull source code from. If blank, source code will not be deployed."
- }
- },
- "RepositoryBranch": {
- "type": "string",
- "defaultValue": "main",
- "metadata": {
- "description": "Source code branch to deploy."
- }
- },
- "JobWindowUnit": {
- "type": "string",
- "allowedValues": [
- "SECOND",
- "MINUTE",
- "HOUR"
- ],
- "metadata": {
- "description": "The time period to collect events before sending them to the FHIR server."
- },
- "defaultValue": "MINUTE"
- },
- "JobWindowMagnitude": {
- "type": "int",
- "minValue": 1,
- "maxValue": 60,
- "metadata": {
- "description": "The magnitude of time period to collect events before sending them to the FHIR server."
- },
- "defaultValue": 5
- },
- "StreamingUnits": {
- "type": "int",
- "minValue": 1,
- "maxValue": 120,
- "metadata": {
- "description": "Number of Streaming Units for the ASA job processing device events."
- },
- "allowedValues": [
- 1,
- 3,
- 6,
- 12,
- 18,
- 24,
- 30,
- 36,
- 42,
- 48,
- 54,
- 60,
- 66,
- 72,
- 78,
- 84,
- 90,
- 96,
- 102,
- 108,
- 114,
- 120
- ],
- "defaultValue": 1
- },
- "ThroughputUnits": {
- "type": "int",
- "minValue": 1,
- "maxValue": 20,
- "metadata": {
- "description": "The throughput units reserved for the Event Hubs created."
- },
- "defaultValue": 1
- },
- "ResourceLocation": {
- "type": "string",
- "allowedValues": [
- "Australia East",
- "East US",
- "East US 2",
- "West US",
- "West US 2",
- "North Central US",
- "South Central US",
- "Southeast Asia",
- "North Europe",
- "West Europe",
- "UK West",
- "UK South"
- ],
- "metadata": {
- "description": "The location of the deployed resources."
- }
- },
- "FhirVersion": {
- "type": "string",
- "allowedValues": [
- "R4"
- ],
- "defaultValue": "R4",
- "metadata": {
- "description": "The FHIR version used in the connector. It should match the version used in the FHIR service."
- }
- },
- "FhirServiceUrl": {
- "type": "string",
- "metadata": {
- "description": "Url of the FHIR server that IoMT will be written to."
- }
- },
- "FhirServiceAuthority": {
- "type": "string",
- "metadata": {
- "description": "Authority of the FHIR to retrieve a token against."
- }
- },
- "FhirServiceResource": {
- "type": "string",
- "metadata": {
- "description": "Resource/Audience representing the FHIR server on the provided authority."
- }
- },
- "FhirServiceClientId": {
- "type": "string",
- "metadata": {
- "description": "Client Id to run services as for access to the FHIR server."
- }
- },
- "FhirServiceClientSecret": {
- "type": "securestring",
- "metadata": {
- "description": "Client secret of the application for accessing a token."
- }
- },
- "ResourceIdentityResolutionType": {
- "type": "string",
- "allowedValues": [
- "Lookup",
- "Create",
- "LookupWithEncounter"
- ],
- "defaultValue": "Lookup",
- "metadata": {
- "description": "Configures how patient, device, and other FHIR resource identities are resolved from the ingested data stream."
- }
- },
- "DefaultDeviceIdentifierSystem": {
- "type": "string",
- "defaultValue": "",
- "metadata": {
- "description": "Default system to use when searching for device identities. If empty system is not used in the search."
- }
- }
- },
- "variables": {
- "asa_job_name": "[parameters('ServiceName')]",
- "eventhub_namespace_name": "[parameters('ServiceName')]",
- "normalizeddata_eventhub_name": "[concat(variables('eventhub_namespace_name'), '/normalizeddata')]",
- "devicedata_eventhub_name": "[concat(variables('eventhub_namespace_name'), '/devicedata')]",
- "storage_account_name": "[parameters('ServiceName')]",
- "app_plan_name": "[concat(parameters('ServiceName'), 'plan')]",
- "app_service_name": "[parameters('ServiceName')]",
- "app_insights_name": "[parameters('ServiceName')]",
- "key_vault_name": "[parameters('ServiceName')]",
- "app_service_resource_id": "[resourceId('Microsoft.Web/sites', variables('app_service_name'))]",
- "deploy_source_code": "[and(not(empty(parameters('repositoryUrl'))),not(empty(parameters('repositoryBranch'))))]",
- "sender_role": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '2b629674-e913-4c01-ae53-ef4638d8f975')]",
- "receiver_role": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'a638d3c7-ab3a-418d-83e6-5f17a39d4fde')]",
- "iomt_fhir_connector_name": "[concat('ResourceIdentity', ':', parameters('ResourceIdentityResolutionType'))]"
- },
- "resources": [
- {
- "type": "Microsoft.StreamAnalytics/StreamingJobs",
- "apiVersion": "2019-06-01",
- "name": "[variables('asa_job_name')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('eventhub_namespace_name'), 'normalizeddata', 'reader')]",
- "[resourceId('Microsoft.Web/sites', variables('app_service_name'))]",
- "[resourceId('Microsoft.Web/sites/config', variables('app_service_name'), 'web')]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/consumergroups', variables('eventhub_namespace_name'), 'devicedata', '$Default')]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/consumergroups', variables('eventhub_namespace_name'), 'normalizeddata', '$Default')]"
- ],
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "identity": {
- "type": "SystemAssigned"
- },
- "properties": {
- "outputStartMode": "JobStartTime",
- "sku": {
- "name": "standard"
- },
- "jobType": "Cloud",
- "eventsOutOfOrderPolicy": "Adjust",
- "outputErrorPolicy": "Stop",
- "eventsOutOfOrderMaxDelayInSeconds": 0,
- "eventsLateArrivalMaxDelayInSeconds": 5,
- "dataLocale": "en-US",
- "compatibilityLevel": "1.0",
- "inputs": [
- {
- "name": "normalizeddata",
- "properties": {
- "type": "Stream",
- "datasource": {
- "type": "Microsoft.ServiceBus/EventHub",
- "properties": {
- "serviceBusNamespace": "[variables('eventhub_namespace_name')]",
- "eventHubName": "normalizeddata",
- "consumerGroupName": null,
- "sharedAccessPolicyName": "reader",
- "sharedAccessPolicyKey": "[listkeys(resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('eventhub_namespace_name'), 'normalizeddata', 'reader'), '2017-04-01').primaryKey]"
- }
- },
- "compression": {
- "type": "None"
- },
- "serialization": {
- "type": "Json",
- "properties": {
- "encoding": "UTF8"
- }
- }
- }
- }
- ],
- "outputs": [
- {
- "name": "FhirImportOutput",
- "properties": {
- "datasource": {
- "type": "Microsoft.AzureFunction",
- "properties": {
- "functionAppName": "[variables('app_service_name')]",
- "functionName": "MeasurementCollectionToFhir",
- "apiKey": "[listkeys(concat(resourceId('Microsoft.Web/sites', variables('app_service_name')), '/host/default'), '2018-11-01').masterKey]",
- "maxBatchSize": null,
- "maxBatchCount": 100
- }
- }
- }
- }
- ],
- "transformation": {
- "name": "Transformation",
- "properties": {
- "streamingUnits": "[parameters('StreamingUnits')]",
- "query": "[concat('SELECT \r\n DeviceId [DeviceId], \r\n PatientId [PatientId],\r\n EncounterId [EncounterId],\r\n CorrelationId [CorrelationId],\r\n collect() [Data],\r\n System.Timestamp [WindowTime],\r\n Type [MeasureType],\r\n count(*) [Count]\r\nINTO\r\n [FhirImportOutput]\r\nFROM\r\n [NormalizedData] PARTITION BY PartitionId TIMESTAMP BY OccurrenceTimeUtc\r\nGROUP BY PartitionId, \r\n DeviceId, \r\n PatientId, \r\n EncounterId, \r\n CorrelationId, \r\n Type, \r\n TUMBLINGWINDOW(', parameters('JobWindowUnit'), ', ', parameters('JobWindowMagnitude'), ')')]"
- }
- },
- "functions": [
- ]
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces",
- "apiVersion": "2017-04-01",
- "name": "[variables('eventhub_namespace_name')]",
- "location": "[parameters('ResourceLocation')]",
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "sku": {
- "name": "Standard",
- "tier": "Standard",
- "capacity": "[parameters('ThroughputUnits')]"
- },
- "properties": {
- "zoneRedundant": true,
- "isAutoInflateEnabled": false,
- "maximumThroughputUnits": 0,
- "kafkaEnabled": false
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/AuthorizationRules",
- "apiVersion": "2017-04-01",
- "name": "[concat(variables('eventhub_namespace_name'), '/RootManageSharedAccessKey')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'devicedata')]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'normalizeddata')]"
- ],
- "properties": {
- "rights": [
- "Listen",
- "Manage",
- "Send"
- ]
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs",
- "apiVersion": "2017-04-01",
- "name": "[variables('devicedata_eventhub_name')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]"
- ],
- "properties": {
- "messageRetentionInDays": 1,
- "partitionCount": 32,
- "status": "Active"
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs",
- "apiVersion": "2017-04-01",
- "name": "[variables('normalizeddata_eventhub_name')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]"
- ],
- "properties": {
- "messageRetentionInDays": 1,
- "partitionCount": 32,
- "status": "Active"
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs/authorizationRules",
- "apiVersion": "2017-04-01",
- "name": "[concat(variables('eventhub_namespace_name'), '/devicedata/writer')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'devicedata')]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'normalizeddata')]",
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/AuthorizationRules', variables('eventhub_namespace_name'), 'RootManageSharedAccessKey')]"
- ],
- "properties": {
- "rights": [
- "Send"
- ]
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs/authorizationRules",
- "apiVersion": "2017-04-01",
- "name": "[concat(variables('eventhub_namespace_name'), '/normalizeddata/reader')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'devicedata')]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'normalizeddata')]",
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/AuthorizationRules', variables('eventhub_namespace_name'), 'RootManageSharedAccessKey')]"
- ],
- "properties": {
- "rights": [
- "Listen"
- ]
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs/consumergroups",
- "apiVersion": "2017-04-01",
- "name": "[concat(variables('eventhub_namespace_name'), '/devicedata/$Default')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'devicedata')]",
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('eventhub_namespace_name'), 'devicedata', 'writer')]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('eventhub_namespace_name'), 'normalizeddata', 'reader')]"
- ],
- "properties": {
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs/consumergroups",
- "apiVersion": "2017-04-01",
- "name": "[concat(variables('eventhub_namespace_name'), '/normalizeddata/$Default')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'normalizeddata')]",
- "[resourceId('Microsoft.EventHub/namespaces', variables('eventhub_namespace_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('eventhub_namespace_name'), 'devicedata', 'writer')]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs/authorizationRules', variables('eventhub_namespace_name'), 'normalizeddata', 'reader')]"
- ],
- "properties": {
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs/providers/roleAssignments",
- "apiVersion": "2018-07-01",
- "name": "[concat(variables('devicedata_eventhub_name'), '/Microsoft.Authorization/', guid(uniqueString(variables('devicedata_eventhub_name'))))]",
- "dependsOn": [
- "[resourceId('Microsoft.Web/sites', variables('app_service_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'devicedata')]"
- ],
- "properties": {
- "roleDefinitionId": "[variables('receiver_role')]",
- "principalId": "[reference(variables('app_service_resource_id'), '2015-08-01', 'Full').Identity.principalId]",
- "scope": "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'devicedata')]",
- "principalType": "ServicePrincipal"
- }
- },
- {
- "type": "Microsoft.EventHub/namespaces/eventhubs/providers/roleAssignments",
- "apiVersion": "2018-07-01",
- "name": "[concat(variables('normalizeddata_eventhub_name'), '/Microsoft.Authorization/', guid(uniqueString(variables('normalizeddata_eventhub_name'))))]",
- "dependsOn": [
- "[resourceId('Microsoft.Web/sites', variables('app_service_name'))]",
- "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'normalizeddata')]"
- ],
- "properties": {
- "roleDefinitionId": "[variables('sender_role')]",
- "principalId": "[reference(variables('app_service_resource_id'), '2015-08-01', 'Full').Identity.principalId]",
- "scope": "[resourceId('Microsoft.EventHub/namespaces/eventhubs', variables('eventhub_namespace_name'), 'normalizeddata')]",
- "principalType": "ServicePrincipal"
- }
- },
- {
- "type": "Microsoft.Storage/storageAccounts",
- "apiVersion": "2019-04-01",
- "name": "[variables('storage_account_name')]",
- "location": "[parameters('ResourceLocation')]",
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "sku": {
- "name": "Standard_RAGRS",
- "tier": "Standard"
- },
- "kind": "StorageV2",
- "properties": {
- "networkAcls": {
- "bypass": "AzureServices",
- "virtualNetworkRules": [
- ],
- "ipRules": [
- ],
- "defaultAction": "Allow"
- },
- "supportsHttpsTrafficOnly": true,
- "encryption": {
- "services": {
- "file": {
- "enabled": true
- },
- "blob": {
- "enabled": true
- }
- },
- "keySource": "Microsoft.Storage"
- },
- "accessTier": "Hot"
- }
- },
- {
- "type": "Microsoft.Storage/storageAccounts/blobServices",
- "apiVersion": "2019-04-01",
- "name": "[concat(variables('storage_account_name'), '/default')]",
- "dependsOn": [
- "[resourceId('Microsoft.Storage/storageAccounts', variables('storage_account_name'))]"
- ],
- "properties": {
- "cors": {
- "corsRules": [
- ]
- },
- "deleteRetentionPolicy": {
- "enabled": false
- }
- }
- },
- {
- "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
- "apiVersion": "2019-04-01",
- "name": "[concat(variables('storage_account_name'), '/default/template')]",
- "dependsOn": [
- "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storage_account_name'), 'default')]",
- "[resourceId('Microsoft.Storage/storageAccounts', variables('storage_account_name'))]"
- ],
- "properties": {
- "publicAccess": "None"
- }
- },
- {
- "type": "Microsoft.Web/serverfarms",
- "apiVersion": "2018-02-01",
- "name": "[variables('app_plan_name')]",
- "location": "[parameters('ResourceLocation')]",
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "sku": {
- "name": "EP1",
- "tier": "ElasticPremium",
- "size": "EP1",
- "family": "EP",
- "capacity": 1
- },
- "kind": "elastic",
- "properties": {
- "perSiteScaling": false,
- "maximumElasticWorkerCount": 20,
- "isSpot": false,
- "reserved": false,
- "isXenon": false,
- "hyperV": false,
- "targetWorkerCount": 0,
- "targetWorkerSizeId": 0
- }
- },
- {
- "type": "Microsoft.Web/sites",
- "apiVersion": "2016-08-01",
- "name": "[variables('app_service_name')]",
- "location": "[parameters('ResourceLocation')]",
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "dependsOn": [
- "[resourceId('Microsoft.Web/serverfarms', variables('app_plan_name'))]",
- "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storage_account_name'), 'default')]"
- ],
- "kind": "functionapp",
- "identity": {
- "type": "SystemAssigned"
- },
- "properties": {
- "enabled": true,
- "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('app_plan_name'))]",
- "reserved": false,
- "scmSiteAlsoStopped": false,
- "clientAffinityEnabled": false,
- "clientCertEnabled": false,
- "hostNamesDisabled": false,
- "containerSize": 1536,
- "dailyMemoryTimeQuota": 0,
- "httpsOnly": true
- },
- "resources": [
- {
- "apiVersion": "2015-08-01",
- "name": "appsettings",
- "type": "config",
- "dependsOn": [
- "[variables('app_service_resource_id')]",
- "[resourceId('Microsoft.Insights/components/', variables('app_insights_name'))]",
- "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-url')]",
- "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-authority')]",
- "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-resource')]",
- "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-clientid')]",
- "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-clientsecret')]"
- ],
- "properties": {
- "InputEventHub": "[concat('Endpoint=sb://', variables('app_service_name'), '.servicebus.windows.net/;Authentication=ManagedIdentity;EntityPath=devicedata')]",
- "OutputEventHub": "[concat('Endpoint=sb://', variables('app_service_name'), '.servicebus.windows.net/;Authentication=ManagedIdentity;EntityPath=normalizeddata')]",
- "FUNCTIONS_EXTENSION_VERSION": "~4",
- "FUNCTIONS_EXTENSION_RUNTIME": "dotnet",
- "PROJECT": "src/func/Microsoft.Health.Fhir.Ingest.Host/Microsoft.Health.Fhir.Ingest.Host.csproj",
- "AzureWebJobsStorage": "[concat('@Microsoft.KeyVault(SecretUri=', reference(resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'blob-storage-cs'), '2018-02-14').secretUriWithVersion, ')')]",
- "AzureWebJobsSecretStorageType": "Files",
- "FhirVersion": "[parameters('FhirVersion')]",
- "FhirService:Url": "[concat('@Microsoft.KeyVault(SecretUri=', reference(resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-url'), '2018-02-14').secretUriWithVersion, ')')]",
- "FhirService:Authority": "[concat('@Microsoft.KeyVault(SecretUri=', reference(resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-authority'), '2018-02-14').secretUriWithVersion, ')')]",
- "FhirService:Resource": "[concat('@Microsoft.KeyVault(SecretUri=', reference(resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-resource'), '2018-02-14').secretUriWithVersion, ')')]",
- "FhirService:ClientId": "[concat('@Microsoft.KeyVault(SecretUri=', reference(resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-clientid'), '2018-02-14').secretUriWithVersion, ')')]",
- "FhirService:ClientSecret": "[concat('@Microsoft.KeyVault(SecretUri=', reference(resourceId('Microsoft.KeyVault/vaults/secrets', variables('key_vault_name'),'fhirserver-clientsecret'), '2018-02-14').secretUriWithVersion, ')')]",
- "APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(concat('Microsoft.Insights/components/', variables('app_insights_name'))).InstrumentationKey]",
- "Template:DeviceContent": "devicecontent.json",
- "Template:FhirMapping": "fhirmapping.json",
- "ResourceIdentity:ResourceIdentityServiceType": "[parameters('ResourceIdentityResolutionType')]",
- "ResourceIdentity:DefaultDeviceIdentifierSystem": "[parameters('DefaultDeviceIdentifierSystem')]"
- }
- },
- {
- "apiVersion": "2015-08-01",
- "name": "web",
- "type": "sourcecontrols",
- "condition": "[variables('deploy_source_code')]",
- "dependsOn": [
- "[variables('app_service_resource_id')]",
- "[resourceId('Microsoft.Web/sites/config', variables('app_service_name'), 'appsettings')]"
- ],
- "properties": {
- "RepoUrl": "[parameters('RepositoryURL')]",
- "branch": "[parameters('RepositoryBranch')]",
- "IsManualIntegration": true
- }
- }
- ]
- },
- {
- "type": "Microsoft.Web/sites/config",
- "apiVersion": "2016-08-01",
- "name": "[concat(variables('app_service_name'), '/web')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.Web/sites', variables('app_service_name'))]"
- ],
- "properties": {
- "numberOfWorkers": 1,
- "defaultDocuments": [
- ],
- "netFrameworkVersion": "v4.0",
- "phpVersion": "5.6",
- "pythonVersion": "",
- "nodeVersion": "",
- "linuxFxVersion": "",
- "requestTracingEnabled": false,
- "remoteDebuggingEnabled": false,
- "remoteDebuggingVersion": "VS2017",
- "httpLoggingEnabled": false,
- "logsDirectorySizeLimit": 35,
- "detailedErrorLoggingEnabled": false,
- "scmType": "None",
- "use32BitWorkerProcess": true,
- "webSocketsEnabled": false,
- "alwaysOn": true,
- "appCommandLine": "",
- "managedPipelineMode": "Integrated",
- "virtualApplications": [
- {
- "virtualPath": "/",
- "physicalPath": "site\\wwwroot",
- "preloadEnabled": true,
- "virtualDirectories": null
- }
- ],
- "winAuthAdminState": 0,
- "winAuthTenantState": 0,
- "customAppPoolIdentityAdminState": false,
- "customAppPoolIdentityTenantState": false,
- "loadBalancing": "LeastRequests",
- "routingRules": [
- ],
- "experiments": {
- "rampUpRules": [
- ]
- },
- "autoHealEnabled": false,
- "vnetName": "",
- "siteAuthEnabled": false,
- "siteAuthSettings": {
- "enabled": null,
- "unauthenticatedClientAction": null,
- "tokenStoreEnabled": null,
- "allowedExternalRedirectUrls": null,
- "defaultProvider": null,
- "clientId": null,
- "clientSecret": null,
- "clientSecretCertificateThumbprint": null,
- "issuer": null,
- "allowedAudiences": null,
- "additionalLoginParams": null,
- "isAadAutoProvisioned": false,
- "googleClientId": null,
- "googleClientSecret": null,
- "googleOAuthScopes": null,
- "facebookAppId": null,
- "facebookAppSecret": null,
- "facebookOAuthScopes": null,
- "twitterConsumerKey": null,
- "twitterConsumerSecret": null,
- "microsoftAccountClientId": null,
- "microsoftAccountClientSecret": null,
- "microsoftAccountOAuthScopes": null
- },
- "cors": {
- "allowedOrigins": [
- "https://functions.azure.com",
- "https://functions-staging.azure.com",
- "https://functions-next.azure.com"
- ],
- "supportCredentials": false
- },
- "localMySqlEnabled": false,
- "http20Enabled": false,
- "minTlsVersion": "1.2",
- "ftpsState": "FtpsOnly",
- "reservedInstanceCount": 0
- }
- },
- {
- "type": "Microsoft.Web/sites/hostNameBindings",
- "apiVersion": "2016-08-01",
- "name": "[concat(variables('app_service_name'), '/', variables('app_service_name'), '.azurewebsites.net')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.Web/sites', variables('app_service_name'))]"
- ],
- "properties": {
- "siteName": "variables('app_service_name')",
- "hostNameType": "Verified"
- }
- },
- {
- "type": "microsoft.insights/components",
- "apiVersion": "2015-05-01",
- "name": "[variables('app_insights_name')]",
- "location": "[parameters('ResourceLocation')]",
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "kind": "web",
- "properties": {
- "Application_Type": "web",
- "Flow_Type": "Redfield",
- "Request_Source": "IbizaAIExtension"
- }
- },
- {
- "type": "Microsoft.KeyVault/vaults",
- "apiVersion": "2016-10-01",
- "name": "[variables('key_vault_name')]",
- "location": "[parameters('ResourceLocation')]",
- "tags": {
- "IomtFhirConnector": "[variables('iomt_fhir_connector_name')]",
- "IomtFhirVersion": "[parameters('FhirVersion')]"
- },
- "dependsOn": [
- "[variables('app_service_resource_id')]"
- ],
- "properties": {
- "sku": {
- "family": "A",
- "name": "Standard"
- },
- "tenantId": "[subscription().tenantId]",
- "accessPolicies": [
- {
- "tenantId": "[reference(variables('app_service_resource_id'), '2015-08-01', 'Full').Identity.tenantId]",
- "objectId": "[reference(variables('app_service_resource_id'), '2015-08-01', 'Full').Identity.principalId]",
- "permissions": {
- "keys": [
- ],
- "secrets": [
- "Get",
- "List"
- ],
- "certificates": [
- ]
- }
- }
- ],
- "enabledForDeployment": false,
- "enabledForDiskEncryption": false,
- "enabledForTemplateDeployment": false
- }
- },
- {
- "type": "Microsoft.KeyVault/vaults/secrets",
- "apiVersion": "2016-10-01",
- "name": "[concat(variables('key_vault_name'), '/blob-storage-cs')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.KeyVault/vaults', variables('key_vault_name'))]",
- "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storage_account_name'), 'default')]"
- ],
- "properties": {
- "contentType": "text/plain",
- "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storage_account_name'), ';AccountKey=', listkeys(resourceId('Microsoft.Storage/storageAccounts', variables('storage_account_name')), '2019-04-01').keys[0].value)]",
- "attributes": {
- "enabled": true
- }
- }
- },
- {
- "type": "Microsoft.KeyVault/vaults/secrets",
- "apiVersion": "2016-10-01",
- "name": "[concat(variables('key_vault_name'), '/fhirserver-authority')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.KeyVault/vaults', variables('key_vault_name'))]"
- ],
- "properties": {
- "contentType": "text/plain",
- "value": "[parameters('FhirServiceAuthority')]",
- "attributes": {
- "enabled": true
- }
- }
- },
- {
- "type": "Microsoft.KeyVault/vaults/secrets",
- "apiVersion": "2016-10-01",
- "name": "[concat(variables('key_vault_name'), '/fhirserver-clientid')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.KeyVault/vaults', variables('key_vault_name'))]"
- ],
- "properties": {
- "contentType": "text/plain",
- "value": "[parameters('FhirServiceClientId')]",
- "attributes": {
- "enabled": true
- }
- }
- },
- {
- "type": "Microsoft.KeyVault/vaults/secrets",
- "apiVersion": "2016-10-01",
- "name": "[concat(variables('key_vault_name'), '/fhirserver-clientsecret')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.KeyVault/vaults', variables('key_vault_name'))]"
- ],
- "properties": {
- "contentType": "text/plain",
- "value": "[parameters('FhirServiceClientSecret')]",
- "attributes": {
- "enabled": true
- }
- }
- },
- {
- "type": "Microsoft.KeyVault/vaults/secrets",
- "apiVersion": "2016-10-01",
- "name": "[concat(variables('key_vault_name'), '/fhirserver-resource')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.KeyVault/vaults', variables('key_vault_name'))]"
- ],
- "properties": {
- "contentType": "text/plain",
- "value": "[parameters('FhirServiceResource')]",
- "attributes": {
- "enabled": true
- }
- }
- },
- {
- "type": "Microsoft.KeyVault/vaults/secrets",
- "apiVersion": "2016-10-01",
- "name": "[concat(variables('key_vault_name'), '/fhirserver-url')]",
- "location": "[parameters('ResourceLocation')]",
- "dependsOn": [
- "[resourceId('Microsoft.KeyVault/vaults', variables('key_vault_name'))]"
- ],
- "properties": {
- "contentType": "text/plain",
- "value": "[parameters('FhirServiceUrl')]",
- "attributes": {
- "enabled": true
- }
- }
- }
- ],
- "outputs": {
- }
-}
\ No newline at end of file
diff --git a/docs/ARMInstallation.md b/docs/ARMInstallation.md
deleted file mode 100644
index f712365e..00000000
--- a/docs/ARMInstallation.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# Installation via ARM Template for use with Azure API for FHIR and Azure Active Directory
-This article details provisioning and installation of the IoMT FHIR Connector for Azure and connecting to Azure API for FHIR with a managed identity in the same subscription using an ARM template.
-
-## ARM Template Provisioning
-
-
-
-
-An [ARM Template](../deploy/templates/default-managed-identity-azuredeploy.json) is provided for easy provisioning of an environment within Azure with the Azure API for FHIR. When executed, the ARM template will provision the following:
-
-* App Service Plan - The service plan for used for hosting the Azure Functions Web app.
-* Azure Web App - The web app running the Azure Functions responsible for normalization and FHIR conversion.
-* Azure Event Hubs - Two Event Hubs are deployed. One is the initial ingestion point for device data. The second receives normalized device data for further processing.
-* Azure Stream Analytics - Used to group and buffer the normalized data stream. Controls the end to end latency between device data ingested and landing the data in the configured FHIR server.
-* Azure Key Vault - Used for secret storage. Event Hub Shared Access Keys and the OAuth client credentials are stored here.
-* Azure Storage - Used by the Azure Functions to track Event Hub processing watermark and also hosts the configuration files for device normalization mapping and FHIR conversion mapping.
-* App Insights - Used to record telemetry.
-* Managed Identity - an Azure Active Directory service identity for the IoMT FHIR Connector for Azure to use to connect to the Azure API for FHIR
-
-### Prerequisites
-To run this ARM template the following additional items must be set up before execution:
-
-* FHIR Server - An Azure API for FHIR instance using FHIR version R4
-
-### Parameters
-The following parameters are provided by the ARM template:
-
-|Parameter|Use
-|---|---
-|**Service Name**|Name for the service(s) being deployed. Name will applied to all relevant services being created.
-|**Repository URL**|Repository to pull source code from. If blank, source code will not be deployed.
-|**Repository Branch**|Source code branch to deploy.
-|**Job Window Unit**|The time period to collect events before sending them to the FHIR server.
-|**Job Window Magnitude**|The magnitude of time period to collect events before sending them to the FHIR server.
-|**Streaming Units**|Number of Streaming Units for the Stream Analytics job processing device events. For more information see [understanding Streaming Units](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-streaming-unit-consumption) in the Stream Analytics documentation.
-|**Throughput Units**| The throughput units reserved for the Event Hubs created. For more information see [Throughput units FAQ](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-faq#throughput-units) in the Event Hubs documentation.
-|**App Service Plan SKU**|The app service plan tier to use for hosting the required Azure Functions.
-|**Resource Location**|The location of the deployed resources.
-|**FHIR Version**|The FHIR version used in the connector. It should match the version used in the FHIR service.
-|**FHIR Service URL**|URL of the FHIR server that IoMT data will be written to.
-|**Resource Identity Resolution Type**|Configures how patient, device, and other FHIR resource identities are resolved from the ingested data stream. The different supported modes are further documented below.
-|**Default Device Identifier System**|Default system to use when searching for device identities. If empty system is not used in the search.
-
-### Resource Identity Resolution Type
-**Note** all identity look ups are cached once resolved to decrease load on the FHIR server. If you plan on reusing devices with multiple patients it is advised you create a *virtual device* resource that is specific to the patient and the virtual device identifier is what is sent in the message payload. The virtual device can be linked to the actual device resource as a parent.
-
-|Type|Behavior
-|---|---
-|**Lookup**|Default setting. Device identifier from ingested messages is retrieved from the FHIR server. Patient is expected to be linked to the device.
-|**Create**|System attempts to retrieve the device identifier and associated patient from the FHIR server. If either isn't found a shell resource with just the identity will be created. Requires a patient identifier be mapped in the device content configuration template.
-|**LookupWithEncounter**|Like the first setting but allows you to include an encounter identifier with the message to associate with the device/patient. The encounter is looked up during processing and any observations created are linked to the encounter. The association here is assumed to be one encounter per device.
-
-## Post Deployment
-After the ARM template is successfully deployed, [configure Azure RBAC for your Azure API for FHIR](https://docs.microsoft.com/en-us/azure/healthcare-apis/fhir/configure-azure-rbac) using the App Service name when searching for the entity to assign the role to, in order to assign access for the IoMT FHIR Connector for Azure to the Azure API for FHIR data plane. Also, the Authority on the Authentication page of your Azure API for FHIR should NOT be changed from the Azure Active Directory in your subscription, or this connection will be broken.
-
- Also, the mapping configurations for device content and converting to FHIR need to be added to the template container in the deployed Azure Storage blob. You can use a tool like [Azure Storage Explorer](https://azure.microsoft.com/en-us/features/storage-explorer/) to easily upload and update the configurations. Navigate to the Azure Storage account deployed by the ARM template (it will be service name you selected) and select the template storage to container. From there upload the configurations and you are done.
-
-More information on mapping templates can be found [here](https://github.com/microsoft/iomt-fhir/blob/7794cbcc463e8d26c3097cd5e2243d770f26fe45/docs/Configuration.md).
-Full examples can be found in the repository under [/sample/templates](https://github.com/microsoft/iomt-fhir/tree/7794cbcc463e8d26c3097cd5e2243d770f26fe45/sample/templates)
diff --git a/docs/BicepInstallation.md b/docs/BicepInstallation.md
index 180f78dc..24e92c7e 100644
--- a/docs/BicepInstallation.md
+++ b/docs/BicepInstallation.md
@@ -1,50 +1,57 @@
-# Installation options via Bicep Templates for use with FHIR service in Azure Health Data Services
-This article details three deployment options for provisioning and installation of the IoMT FHIR Connector for Azure and [FHIR service in Azure Health Data Services](https://learn.microsoft.com/en-us/azure/healthcare-apis/fhir/overview) using Bicep templates.
+# Installation options via Bicep Templates for use with FHIR service in Azure Health Data Services
+
+This article details three deployment options for provisioning and installation of the IoMT FHIR Connector for Azure and [FHIR service in Azure Health Data Services](https://learn.microsoft.com/en-us/azure/healthcare-apis/fhir/overview) using Bicep templates.
The following Azure components will be provisioned once deployment has completed:
-* Storage Account
+* Storage Account
* Two Blob Containers
* Event Hubs Namespace
-* Two Event Hubs
+* Two Event Hubs
* Azure Health Data Services workspace
-* FHIR service*
-* Azure Container Registry
-* Log Analytics Workspace
-* App Insights
-* User-Assigned Managed Identity
+* FHIR service*
+* Azure Container Registry
+* Log Analytics Workspace
+* App Insights
+* User-Assigned Managed Identity
* Container Apps Environment
* Two Container Apps
-An additional Storage Account and Container Instances will be created if the 'deploymentScripts' Bicep resource type is used in the chosen deployment option (Options 1 and 2).
+An additional Storage Account and Container Instances will be created if the 'deploymentScripts' Bicep resource type is used in the chosen deployment option (Options 1 and 2).
+
+\* NOTE: These deployment options use the FHIR service in Azure Health Data Services as opposed to the Azure API for FHIR. For more information on the differences between these services, please see this [page](https://learn.microsoft.com/en-us/azure/healthcare-apis/fhir/overview).
-\* NOTE: These deployment options use the FHIR service in Azure Health Data Services as opposed to the Azure API for FHIR. For more information on the differences between these services, please see this [page](https://learn.microsoft.com/en-us/azure/healthcare-apis/fhir/overview).
+## Prerequisites
-### Prerequisites
To run any of these deployment options, the following items must be set up before execution:
-* Contributor and User Access Administrator OR Owner permissions on your Azure subscription
+* Contributor and User Access Administrator OR Owner permissions on your Azure subscription
For local deployments (Options 2 and 3), the following additional steps must be performed:
-* Install the [Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) module
-* Log into your Azure account and select the subscription you want to deploy the resources in:
+* Install the [Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) module
+
+* Log into your Azure account and select the subscription you want to deploy the resources in:
+
```PowerShell
az login
```
-* If you have more than one subscription, select the subscription you would like to deploy to:
+* If you have more than one subscription, select the subscription you would like to deploy to:
+
```PowerShell
az account set --subscription
```
-* Clone this repo and navigate to the Bicep deployment folder:
+* Clone this repo and navigate to the Bicep deployment folder:
+
```PowerShell
git clone https://github.com/Microsoft/iomt-fhir
cd iomt-fhir/deploy/templates/bicep
```
-### Parameters
+## Parameters
+
The following parameters are provided by the Bicep template:
|Parameter|Use
@@ -54,7 +61,8 @@ The following parameters are provided by the Bicep template:
|**Resource Identity Resolution Type**|Configures how patient, device, and other FHIR resource identities are resolved from the ingested data stream. The different supported modes are further documented below.
|**FHIR Version**|The FHIR version used in the connector.
-### Resource Identity Resolution Type
+## Resource Identity Resolution Type
+
NOTE: All identity look ups are cached once resolved to decrease load on the FHIR server. If you plan on reusing devices with multiple patients it is advised you create a *virtual device* resource that is specific to the patient and the virtual device identifier is what is sent in the message payload. The virtual device can be linked to the actual device resource as a parent.
|Type|Behavior
@@ -63,74 +71,84 @@ NOTE: All identity look ups are cached once resolved to decrease load on the FHI
|**Lookup**|Device identifier from ingested messages is retrieved from the FHIR server. Patient is expected to be linked to the device.
|**LookupWithEncounter**|Similar to the 'Lookup' setting but allows you to include an encounter identifier with the message to associate with the device/patient. The encounter is looked up during processing and any observations created are linked to the encounter. The association here is assumed to be one encounter per device.
-## Deployment
+## Deployment
+
### Option 1: Single-click Deploy to Azure via ARM template generated from Bicep Template
-[](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2Fmicrosoft%2Fiomt-fhir%2Fpersonal%2Ft-wenolivia%2Fcontainerapps-deployment%2Fdeploy%2Ftemplates%2Fbicep%2FContainerApp-SingleAzureDeploy.json)
-Click the button above to provision the IoMT FHIR Connector via Azure Portal. This button deploys a remote [ARM template](../deploy/templates/bicep/ContainerApp-SingleAzureDeploy.json) generated from the single [Bicep template](../deploy/templates/bicep/ContainerApp-SingleAzureDeploy.bicep) entry point for provisioning all necessary Azure resources and role assignments in Option 2.
+[](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2Fmicrosoft%2Fiomt-fhir%2Fmain%2Fdeploy%2Ftemplates%2Fbicep%2FContainerApp-SingleAzureDeploy.json)
+
+Click the button above to provision the IoMT FHIR Connector via Azure Portal. This button deploys a remote [ARM template](../deploy/templates/bicep/ContainerApp-SingleAzureDeploy.json) generated from the single [Bicep template](../deploy/templates/bicep/ContainerApp-SingleAzureDeploy.bicep) entry point for provisioning all necessary Azure resources and role assignments in Option 2.
-You will need to provide a *baseName* to name the services that will be provisioned. Select values for *location*, *resourceIdentityResolutionType*, and *fhirVersion* via a dropdown list of the valid options. Hover over the 'i' icon next to each parameter if you wish to see a description.
+You will need to provide a *baseName* to name the services that will be provisioned. Select values for *location*, *resourceIdentityResolutionType*, and *fhirVersion* via a dropdown list of the valid options. Hover over the 'i' icon next to each parameter if you wish to see a description.
-Since this is a remote deployment option, there is no need to clone this repo or install additional tools.
+Since this is a remote deployment option, there is no need to clone this repo or install additional tools.
-Sample configuration templates, [devicecontent.json](../sample/templates/basic/devicecontent.json) and [fhirmapping.json](../sample/templates/basic/fhirmapping.json) are also uploaded as part of the deployment to the 'template' container in the Storage Account using a User-Assigned Managed Identity.
+Sample configuration templates, [devicecontent.json](../sample/templates/basic/devicecontent.json) and [fhirmapping.json](../sample/templates/basic/fhirmapping.json) are also uploaded as part of the deployment to the 'template' container in the Storage Account using a User-Assigned Managed Identity.
-The 'deploymentScripts' resource type in Bicep is used to (1) upload the sample mapping templates and (2) build and push container images to the ACR. An additional Storage Account is provisioned to execute these deployment scripts. A Container Instance is also created for each 'deploymentScripts' resource instance and is deleted upon successful deployment.
+The 'deploymentScripts' resource type in Bicep is used to (1) upload the sample mapping templates and (2) build and push container images to the ACR. An additional Storage Account is provisioned to execute these deployment scripts. A Container Instance is also created for each 'deploymentScripts' resource instance and is deleted upon successful deployment.
-### Option 2: Deploy a single Bicep file locally
-Deploy the [Bicep template](../deploy/templates/bicep/ContainerApp-SingleAzureDeploy.bicep) by running the following command:
+### Option 2: Deploy a single Bicep file locally
+
+Deploy the [Bicep template](../deploy/templates/bicep/ContainerApp-SingleAzureDeploy.bicep) by running the following command:
```PowerShell
az deployment sub create --location --template-file ContainerApp-SingleAzureDeploy.bicep
```
-Example:
+Example:
+
```PowerShell
az deployment sub create --location westus2 --template-file ContainerApp-SingleAzureDeploy.bicep
```
-NOTE: See [region availability](https://azure.microsoft.com/en-us/explore/global-infrastructure/products-by-region/?products=health-data-services) for Azure Health Data Servicces to select a valid location for the resources to be deployed in.
+NOTE: See [region availability](https://azure.microsoft.com/en-us/explore/global-infrastructure/products-by-region/?products=health-data-services) for Azure Health Data Servicces to select a valid location for the resources to be deployed in.
-You will need to provide a *baseName* to name the services that will be provisioned. The valid *location*, *resourceIdentityResolutionType*, and *fhirVersion* options are presented as an enumerated list. To select an option, type the number corresponding to your desired selection. For help, type '?' to see a description of a parameter.
+You will need to provide a *baseName* to name the services that will be provisioned. The valid *location*, *resourceIdentityResolutionType*, and *fhirVersion* options are presented as an enumerated list. To select an option, type the number corresponding to your desired selection. For help, type '?' to see a description of a parameter.
-This option deploys the Bicep file that was used to generate the ARM template in Option 1. This Bicep template serves as a single entry point for setting up all necessary Azure resources and role assignments. Sample configuration templates, [devicecontent.json](../sample/templates/basic/devicecontent.json) and [fhirmapping.json](../sample/templates/basic/fhirmapping.json) are also uploaded to the 'template' container in the Storage Account using a User-Assigned Managed Identity.
+This option deploys the Bicep file that was used to generate the ARM template in Option 1. This Bicep template serves as a single entry point for setting up all necessary Azure resources and role assignments. Sample configuration templates, [devicecontent.json](../sample/templates/basic/devicecontent.json) and [fhirmapping.json](../sample/templates/basic/fhirmapping.json) are also uploaded to the 'template' container in the Storage Account using a User-Assigned Managed Identity.
-The 'deploymentScripts' resource type in Bicep is used to (1) upload the sample mapping templates and (2) build and push container images to the ACR. An additional Storage Account is provisioned to execute these deployment scripts. A Container Instance is also created for each 'deploymentScripts' resource instance and is deleted upon successful deployment.
+The 'deploymentScripts' resource type in Bicep is used to (1) upload the sample mapping templates and (2) build and push container images to the ACR. An additional Storage Account is provisioned to execute these deployment scripts. A Container Instance is also created for each 'deploymentScripts' resource instance and is deleted upon successful deployment.
### Option 3: Execute a single PowerShell deployment script locally
-Run the following command to run the PowerShell deployment script:
+
+Run the following command to run the PowerShell deployment script:
```PowerShell
./Create-IomtContainerAppEnv.ps1
```
-Values for *baseName*, *location*, *resourceIdentityResolutionType*, *fhirVersion* will need to be provided. Please note the valid options listed in the PowerShell deployment script file for each parameter before deployment. Be careful to provide these values exactly, otherwise the deployment will fail.
+Values for *baseName*, *location*, *resourceIdentityResolutionType*, *fhirVersion* will need to be provided. Please note the valid options listed in the PowerShell deployment script file for each parameter before deployment. Be careful to provide these values exactly, otherwise the deployment will fail.
-This [PowerShell deployment script](../deploy/templates/bicep/Create-IomtContainerAppEnv.ps1) sets up all necessary Azure resources for running the IoMT Service by deploying Bicep templates via Azure CLI commands. Azure CLI commands are also used to build and push container images to the ACR. The 'deploymentScripts' resource type is not used in this option and the commands are instead invoked locally via the PowerShell script. Therefore, no additional Storage Account or Container Instances are created. The duration of running these commands locally is also shorter than running the commands within the 'deploymentScripts' resource in Bicep.
+This [PowerShell deployment script](../deploy/templates/bicep/Create-IomtContainerAppEnv.ps1) sets up all necessary Azure resources for running the IoMT Service by deploying Bicep templates via Azure CLI commands. Azure CLI commands are also used to build and push container images to the ACR. The 'deploymentScripts' resource type is not used in this option and the commands are instead invoked locally via the PowerShell script. Therefore, no additional Storage Account or Container Instances are created. The duration of running these commands locally is also shorter than running the commands within the 'deploymentScripts' resource in Bicep.
The mapping configurations for device content and converting to FHIR need to be added to the 'template' container in the deployed Azure Storage blob. Navigate to the Storage Account and select the 'template' storage container. From there, upload the configurations to complete set up of the IoMT FHIR Connector.
More information on mapping templates can be found [here](./Configuration.md). Full examples can be found in the repository under [../sample/templates](../sample/templates/)
-### Additional Deployment Notes
+## Additional Deployment Notes
+
To view the progress of a deployment, navigate to the resource group in Azure Portal and select the 'Deployments' tab under 'Settings' in the left panel.
-All deployment options reference separate Bicep files that are used to provision a set of resources. To redeploy a specific supporting Bicep file, run the following command:
+All deployment options reference separate Bicep files that are used to provision a set of resources. To redeploy a specific supporting Bicep file, run the following command:
+
```PowerShell
az deployment group create --resource-group --template-file
```
-Example:
+Example:
+
```PowerShell
az deployment group create --resource-group testdeployment --template-file BuildContainerImages.bicep
```
-NOTE: If you wish to redeploy Main.bicep, run the following command:
+NOTE: If you wish to redeploy Main.bicep, run the following command:
+
```PowerShell
az deployment sub create --location --template-file Main.bicep
```
-Example:
+Example:
+
```PowerShell
az deployment sub create --location westus2 --template-file Main.bicep
-```
\ No newline at end of file
+```
diff --git a/docs/Configuration.md b/docs/Configuration.md
index a4a3b707..c12fa45f 100644
--- a/docs/Configuration.md
+++ b/docs/Configuration.md
@@ -1,17 +1,18 @@
+# Configure IoMT FHIR Connector for Azure
+
- [Configuration](#configuration)
- [Device Content Mapping](#device-content-mapping)
- [Templates](#templates)
+ - [**CollectionContentTemplate**](#collectioncontenttemplate)
- [**CalculatedContentTemplate**](#calculatedcontenttemplate)
- [Expression Languages](#expression-languages)
- [Custom Functions](#custom-functions)
- [Matched Token](#matched-token)
- - [Examples](#examples)
+ - [CalculatedContent Examples](#calculatedcontent-examples)
- [**JsonPathContentTemplate**](#jsonpathcontenttemplate)
- - [Examples](#examples-1)
+ - [JsonPathContent Examples](#jsonpathcontent-examples)
- [**IotJsonPathContentTemplate**](#iotjsonpathcontenttemplate)
- - [Examples](#examples-2)
- - [**IotCentralJsonPathContentTemplate**](#iotcentraljsonpathcontenttemplate)
- - [Examples](#examples-3)
+ - [IotJsonPathContentTemplate Examples](#iotjsonpathcontenttemplate-examples)
- [FHIR Mapping](#fhir-mapping)
- [CodeValueFhirTemplate](#codevaluefhirtemplate)
- [Value Type Templates](#value-type-templates)
@@ -19,22 +20,22 @@
- [Quantity](#quantity)
- [String](#string)
- [CodeableConcept](#codeableconcept)
- - [Examples](#examples-4)
+ - [CodeValueFhir Examples](#codevaluefhir-examples)
-# Configuration
+## Configuration
This article details how to configure your instance of the IoMT FHIR Connector for Azure.
-The IoMT FHIR Connector for Azure requires two JSON configuration files. The first, device content, is responsible for mapping the payloads sent to the Event Hub end point and extracting types, device identifiers, measurement date time, and the measurement value(s). The second template controls the FHIR mapping. The FHIR mapping allows configuration of the length of the observation period, FHIR data type used to store the values, and code(s). The two configuration files should be uploaded to the storage container "template" created under the blob storage account provisioned during the [ARM template deployment](ARMInstallation.md). The device content mapping file **MUST** be named `devicecontent.json` and the FHIR mapping file **MUST** be named `fhirmapping.json`. Full examples can be found in the repository under [/sample/templates](../sample/templates). Configuration files are loaded from blob per compute execution. Once updated they should take effect immediately.
+The IoMT FHIR Connector for Azure requires two JSON configuration files. The first, device content, is responsible for mapping the payloads sent to the Event Hub end point and extracting types, device identifiers, measurement date time, and the measurement value(s). The second template controls the FHIR mapping. The FHIR mapping allows configuration of the length of the observation period, FHIR data type used to store the values, and code(s). The two configuration files should be uploaded to the storage container "template" created under the blob storage account provisioned during the [Bicep template deployment](BicepInstallation.md). The device content mapping file **MUST** be named `devicecontent.json` and the FHIR mapping file **MUST** be named `fhirmapping.json`. Full examples can be found in the repository under [/sample/templates](../sample/templates). Configuration files are loaded from blob per compute execution. Once updated they should take effect immediately.
-# Device Content Mapping
+## Device Content Mapping
Using user provided mapping templates, the IoMT FHIR Connector for Azure is able to extract data from Event Hub messages into a common format for further evaluation. Each event hub message received is evaluated against all templates. This allows a single inbound message to be projected to multiple outbound messages and subsequently mapped to different observations in FHIR. The result is a normalized data object representing the value or values parsed by the templates. The normalized data model has a few required properties that must be found and extracted:
| Property | Description |
|----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Type** | The name/type to classify the measurement. This is used to bind to the desired FHIR mapping template. Multiple templates can output to the same type allowing you to map different representations across multiple devices to a single common output. |
-| **OccurenceTimeUtc** | The time the measurement occurred. |
+| **OccurrenceTimeUtc** | The time the measurement occurred. |
| **DeviceId** | The identifier for the device. This should match an identifier on the device resource that resides on the destination FHIR server. |
|**Properties**|Extract at least one property so the value can be saved in the observation created. Properties are a collection of key value pairs extracted during normalization.|
@@ -44,10 +45,11 @@ Below is a conceptual example of what happens during normalization.

-Given the above, below is an example of the [Measurement](../src/lib/Microsoft.Health.Fhir.Ingest.Schema/IMeasurement.cs) produced for the **heartrate** value:
+Given the above, below is an example of the [Measurement](../src/lib/Microsoft.Health.Fhir.Ingest.Schema/IMeasurement.cs) produced for the **heartRate** value:
+
```json
{
- "Type": "heartrate",
+ "Type": "heartRate",
"OccurrenceTimeUtc": "2019-02-01T22:46:01.875Z",
"IngestionTimeUtc": null,
"DeviceId": "device123",
@@ -86,19 +88,18 @@ Given the above, below is an example of the [Measurement](../src/lib/Microsoft.H
}
```
-## Templates
+### Templates
Users can define one or more templates within their device mapping file. Each event hub message received is evaluated against all templates. This allows a single inbound message to be projected to multiple outbound messages.
-A variety of template types exist and may be used when building the device mapping file.
+A variety of template types exist and may be used when building the device mapping file.
| Name | Description |
|-------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|
-| CollectionContentTemplate | Used to represent a list of templates which will be used during normalization |
-| [CalculatedContentTemplate](#CalculatedContentTemplate) | A template which supports writing expressions using one of several expressions languages. Supports data transformation via the use of JmesPath functions |
-| [JsonPathContentTemplate](#JsonPathContentTemplate) | A template which supports writing expressions using JsonPath |
-| [IotJsonPathContentTemplate](#IotJsonPathContentTemplate) | Supports messages sent via Azure Iot Hub or via the Legacy Export Data feature of Azure Iot Central. |
-| [IotCentralJsonPathContentTemplate](#IotCentralJsonPathContentTemplate) | Supports messages sent via the Export Data feature of Azure Iot Central. |
+| [CollectionContentTemplate](#collectioncontenttemplate) | Used to represent a list of templates which will be used during normalization |
+| [CalculatedContentTemplate](#calculatedcontenttemplate) | A template which supports writing expressions using one of several expressions languages. Supports data transformation via the use of JmesPath functions |
+| [JsonPathContentTemplate](#jsonpathcontenttemplate) | A template which supports writing expressions using JsonPath |
+| [IotJsonPathContentTemplate](#iotjsonpathcontenttemplate) | Supports messages sent via Azure Iot Hub or via the Legacy Export Data feature of Azure Iot Central. | |
Example:
@@ -109,7 +110,7 @@ Example:
{
"templateType": "CalculatedContent",
"template": {
- "typeName": "heartrate",
+ "typeName": "heartRate",
"typeMatchExpression": "$..[?(@heartRate)]",
"deviceIdExpression": "$.matchedToken.deviceId",
"timestampExpression": "$.matchedToken.endDate",
@@ -125,7 +126,7 @@ Example:
{
"templateType": "CalculatedContent",
"template": {
- "typeName": "stepcount",
+ "typeName": "stepCount",
"typeMatchExpression": "$..[?(@steps)]",
"deviceIdExpression": "$.matchedToken.deviceId",
"timestampExpression": "$.matchedToken.endDate",
@@ -141,11 +142,25 @@ Example:
]
}
```
-## **CalculatedContentTemplate**
+
+### **CollectionContentTemplate**
+
+CollectionContent is the root template type used by the IoMT FHIR Connector for Azure device mapping. CollectionContent is a list of all templates that are used during the normalization stage. You can define one or more templates within CollectionContent, with each device message received by the IoMT FHIR Connector for Azure being evaluated against all templates.
+
+```json
+{
+ "templateType": "CollectionContent",
+ "template": [
+ ]
+}
+```
+
+### **CalculatedContentTemplate**
The IoMT Fhir Connector provides an expression based content template to both match the desired template and extract values. **Expressions** may be expressed using either JSON Path or JmesPath, and each expression within the template may choose its own expression language. If an expression language is not defined, the default expression language configured for the template will be used. By default this is JSONPath but can be overwritten if needed.
An expression is defined as:
+
```json
: {
"value" : ,
@@ -158,7 +173,7 @@ In the example below, _typeMatchExpression_ is defined as:
```json
"templateType": "CalculatedContent",
"template": {
- "typeName": "heartrate",
+ "typeName": "heartRate",
"typeMatchExpression": {
"value" : "$..[?(@heartRate)]",
"language": "JsonPath"
@@ -172,7 +187,7 @@ The default expression language to use for a template is JsonPath. If it's desir
```json
"templateType": "CalculatedContent",
"template": {
- "typeName": "heartrate",
+ "typeName": "heartRate",
"typeMatchExpression": "$..[?(@heartRate)]",
...
}
@@ -183,7 +198,7 @@ Finally, the default expression language to use for a template can be explicitly
```json
"templateType": "CalculatedContent",
"template": {
- "typeName": "heartrate",
+ "typeName": "heartRate",
"defaultExpressionLanguage": "JsonPath",
"typeMatchExpression": "$..[?(@heartRate)]",
...
@@ -194,7 +209,7 @@ The CalculatedContentTemplate allows matching on and extracting values from an E
| Property | Description | Example |
|--------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------|
-| TypeName | The type to associate with measurements that match the template. | heartrate |
+| TypeName | The type to associate with measurements that match the template. | heartRate |
| TypeMatchExpression | The expression that is evaluated against the EventData payload. If a matching JToken is found the template is considered a match. All subsequent expressions are evaluated against the extracted JToken matched here. | $..[?(@heartRate)] |
| TimestampExpression | The expression to extract the timestamp value for the measurement's OccurrenceTimeUtc. | $.matchedToken.endDate |
| DeviceIdExpression | The expression to extract the device identifier. | $.matchedToken.deviceId |
@@ -205,7 +220,7 @@ The CalculatedContentTemplate allows matching on and extracting values from an E
| Values[].ValueExpression | The expression to extract the desired value. | $.matchedToken.heartRate |
| Values[].Required | Will require the value to be present in the payload. If not found a measurement will not be generated and an InvalidOperationException will be thrown. A value is considered present within the payload when it is not null. If the value is a String it must also not be empty. | true |
-### Expression Languages
+#### Expression Languages
When specifying the language to use for the expression, the below values are valid:
| Expression Language | Value |
@@ -213,20 +228,19 @@ When specifying the language to use for the expression, the below values are val
| JSON Path | **JsonPath** |
| JmesPath | **JmesPath** |
-More information on JSON Path can be found [here](https://goessner.net/articles/JsonPath/). The [CalculatedContentTemplete](#CalculatedContentTemplate) uses the [JSON .NET implementation](https://www.newtonsoft.com/json/help/html/QueryJsonSelectTokenJsonPath.htm) for resolving JSON Path expressions. Additional examples can be found in the [unit tests](../test/Microsoft.Health.Fhir.Ingest.Template.UnitTests/CalculatedFunctionContentTemplateTests.cs).
+More information on JSON Path can be found [here](https://goessner.net/articles/JsonPath/). The [CalculatedContentTemplate](#calculatedcontenttemplate) uses the [JSON .NET implementation](https://www.newtonsoft.com/json/help/html/QueryJsonSelectTokenJsonPath.htm) for resolving JSON Path expressions. Additional examples can be found in the [unit tests](../test/Microsoft.Health.Fhir.Ingest.Template.UnitTests/CalculatedFunctionContentTemplateTests.cs).
-More information on JmesPath can be found [here](https://jmespath.org/specification.html). [CalculatedContentTemplete](#CalculatedContentTemplate) uses the [JmesPath .NET implementation](https://github.com/jdevillard/JmesPath.Net) for resolving JmesPath expressions.
+More information on JmesPath can be found [here](https://jmespath.org/specification.html). [CalculatedContentTemplate](#calculatedcontenttemplate) uses the [JmesPath .NET implementation](https://github.com/jdevillard/JmesPath.Net) for resolving JmesPath expressions.
-### Custom Functions
+#### Custom Functions
-In addtion to the functions provided as part of the specification a set of custom functions are also available for use. More information on them can be found [here](./CustomFunctions.md). Source code for the functions can be found [here](../src/lib/Microsoft.Health.Expressions)
+In addition to the functions provided as part of the specification a set of custom functions are also available for use. More information on them can be found [here](./CustomFunctions.md). Source code for the functions can be found [here](../src/lib/Microsoft.Health.Expressions).
-### Matched Token
-The **TypeMatchExpression** is evaluated against the incoming EventData payload. If a matching JToken is found the template is considered a match. All subsequent expressions are evaluated against a new JToken which contains both the original EventData payload as well as the extracted JToken matched here. In this way, the original payload as well as the matched object are available to each subsequent expression. The extracted JToken will be available as the property __matchedToken__.
+#### Matched Token
-Given the following:
+The **TypeMatchExpression** is evaluated against the incoming EventData payload. If a matching JToken is found the template is considered a match. All subsequent expressions are evaluated against a new JToken which contains both the original EventData payload as well as the extracted JToken matched here. In this way, the original payload as well as the matched object are available to each subsequent expression. The extracted JToken will be available as the property **matchedToken**.
-_Message_
+Given the following message:
```json
{
@@ -250,7 +264,7 @@ _Message_
}
```
-_Template_
+Using the following CalculatedContent template type:
```json
{
@@ -259,7 +273,7 @@ _Template_
{
"templateType": "CalculatedContent",
"template": {
- "typeName": "heartrate",
+ "typeName": "heartRate",
"typeMatchExpression": "$..[?(@systolic && @diastolic)]", // Expression
"deviceIdExpression": "$.Body.deviceId", // This accesses the attribute 'deviceId' which belongs to the original event data
"timestampExpression": "$.matchedToken.date",
@@ -310,7 +324,7 @@ Two matches will be extracted using the above expression and used to create JTok
}
```
-And
+Will result in the following normalized data:
```json
{
@@ -340,13 +354,11 @@ And
}
```
-#### Examples
+##### CalculatedContent Examples
---
-**Heart Rate**
-
-*Message*
+Given the following heart rate message:
```json
{
@@ -360,13 +372,13 @@ And
}
```
-*Template*
+A CalculatedContent template type can be used to extract the heart rate:
```json
{
"templateType": "CalculatedContent",
"template": {
- "typeName": "heartrate",
+ "typeName": "heartRate",
"typeMatchExpression": "$..[?(@heartRate)]",
"deviceIdExpression": "$.matchedToken.deviceId",
"timestampExpression": "$.matchedToken.endDate",
@@ -383,9 +395,7 @@ And
---
-**Blood Pressure**
-
-*Message*
+Given the following blood pressure message:
```json
{
@@ -400,13 +410,13 @@ And
}
```
-*Template*
+A CalculatedContent template type can be used to extract the blood pressure:
```json
{
"templateType": "CalculatedContent",
"template": {
- "typeName": "bloodpressure",
+ "typeName": "bloodPressure",
"typeMatchExpression": "$..[?(@systolic && @diastolic)]", // Expression
"deviceIdExpression": "$.matchedToken.deviceId",
"timestampExpression": "$.matchedToken.endDate",
@@ -428,9 +438,7 @@ And
---
-**Project Multiple Measurements from Single Message**
-
-*Message*
+Given the following message that contains multiple types:
```json
{
@@ -445,13 +453,13 @@ And
}
```
-*Template 1*
+A CalculatedContent template type can be used to extract the heart rate:
```json
{
"templateType": "CalculatedContent",
"template": {
- "typeName": "heartrate",
+ "typeName": "heartRate",
"typeMatchExpression": "$..[?(@heartRate)]", // Expression
"deviceIdExpression": "$.matchedToken.deviceId",
"timestampExpression": "$.matchedToken.endDate",
@@ -466,13 +474,13 @@ And
},
```
-*Template 2*
+And an additional CalculatedContent template type can be used to extract the step count:
```json
{
"templateType": "CalculatedContent",
"template": {
- "typeName": "stepcount",
+ "typeName": "stepCount",
"typeMatchExpression": "$..[?(@steps)]", // Expression
"deviceIdExpression": "$.matchedToken.deviceId",
"timestampExpression": "$.matchedToken.endDate",
@@ -489,9 +497,7 @@ And
---
-**Project Multiple Measurements from Array in Message**
-
-*Message*
+Given the following message that contains multiple heart rate measurements in an array:
```json
{
@@ -517,13 +523,13 @@ And
}
```
-*Template*
+A CalculatedContent template type can be used to extract all heart rates:
```json
{
"templateType": "CalculatedContent",
"template": {
- "typeName": "heartrate",
+ "typeName": "heartRate",
"typeMatchExpression": "$..[?(@heartRate)]", // Expression
"deviceIdExpression": "$.matchedToken.deviceId",
"timestampExpression": "$.matchedToken.endDate",
@@ -540,9 +546,7 @@ And
---
-**Project Data From Matched Token And Original Event**
-
-*Message*
+Project Data From Matched Token And Original Event from a single message:
```json
{
@@ -566,13 +570,13 @@ And
}
```
-*Template*
+A CalculatedContent template type can be used to extract data at all levels in the message:
```json
{
"templateType": "CalculatedContent",
"template": {
- "typeName": "heartrate",
+ "typeName": "heartRate",
"typeMatchExpression": "$..[?(@systolic && @diastolic)]", // Expression
"deviceIdExpression": "$.Body.deviceId", // This accesses the attribute 'deviceId' which belongs to the original event data
"timestampExpression": "$.matchedToken.date",
@@ -594,12 +598,10 @@ And
---
-**Select and transform incoming data**
+Select and transform incoming data from a message.
In the below example, height data arrives in either inches or meters. We want all normalized height data to be in meters. To achieve this we create a template which targets only height data in inches and transforms it into meters. Another template targets height data in meters and simply stores it as is.
-*Message*
-
```json
{
"Body": [
@@ -621,7 +623,7 @@ In the below example, height data arrives in either inches or meters. We want al
}
```
-*Template 1*
+A CalculatedContent template type can be used to transform data:
```json
{
@@ -645,7 +647,7 @@ In the below example, height data arrives in either inches or meters. We want al
}
```
-*Template 2*
+An additional CalculatedContent template type can be used to extract data that does not need to be transformed:
```json
{
@@ -676,20 +678,18 @@ The JsonPathContentTemplate allows matching on and extracting values from an Eve
| **TypeMatchExpression** | The JSON Path expression that is evaluated against the EventData payload. If a matching JToken is found the template is considered a match. All subsequent expressions are evaluated against the extracted JToken matched here. |
| **TimestampExpression** | The JSON Path expression to extract the timestamp value for the measurement's OccurrenceTimeUtc. |
| **DeviceIdExpression** | The JSON Path expression to extract the device identifier. |
-| **PatientIdExpression** | *Required* when IdentityResolution is in [Create](ARMInstallation.md#Resource-Identity-Resolution-Type) mode and *Optional* when IdentityResolution is in [Lookup](ARMInstallation.md#Resource-Identity-Resolution-Type) mode. The JSON Path expression to extract the patient identifier. |
-| **EncounterIdExpression** | *Optional*: The JSON Path expression to extract the encounter identifier. |
-| **CorrelationIdExpression** | *Optional*: The JSON Path expression to extract the correlation identifier. If extracted this value can be used to group values into a single observation in the FHIR mapping template. |
+| **PatientIdExpression** | _Required_ when IdentityResolution is in [Create](BicepInstallation.md#resource-identity-resolution-type) mode and _Optional_ when IdentityResolution is in [Lookup](BicepInstallation.md#resource-identity-resolution-type) mode. The JSON Path expression to extract the patient identifier. |
+| **EncounterIdExpression** | _Optional_: The JSON Path expression to extract the encounter identifier. |
+| **CorrelationIdExpression** | _Optional_: The JSON Path expression to extract the correlation identifier. If extracted this value can be used to group values into a single observation in the FHIR mapping template. |
| **Values[].ValueName** | The name to associate with the value extracted by the subsequent expression. Used to bind the desired value/component in the FHIR mapping template. |
| **Values[].ValueExpression** | The JSON Path expression to extract the desired value. |
| **Values[].Required** | Will require the value to be present in the payload. If not found a measurement will not be generated and an InvalidOperationException will be thrown. |
-### Examples
+### JsonPathContent Examples
---
-**Heart Rate**
-
-*Message*
+Given the following heart rate message:
```json
{
@@ -703,13 +703,13 @@ The JsonPathContentTemplate allows matching on and extracting values from an Eve
}
```
-*Template*
+A JsonPathContent template type can be used to extract the heart rate:
```json
{
"templateType": "JsonPathContent",
"template": {
- "typeName": "heartrate",
+ "typeName": "heartRate",
"typeMatchExpression": "$..[?(@heartRate)]",
"deviceIdExpression": "$.deviceId",
"timestampExpression": "$.endDate",
@@ -726,9 +726,7 @@ The JsonPathContentTemplate allows matching on and extracting values from an Eve
---
-**Blood Pressure**
-
-*Message*
+Given the following blood pressure message:
```json
{
@@ -743,13 +741,13 @@ The JsonPathContentTemplate allows matching on and extracting values from an Eve
}
```
-*Template*
+A JsonPathContent template type can be used to extract the both blood pressure components (systolic and diastolic):
```json
{
- "typeName": "bloodpressure",
+ "typeName": "bloodPressure",
"typeMatchExpression": "$..[?(@systolic && @diastolic)]",
- "deviceIdExpression": "$.deviceid",
+ "deviceIdExpression": "$.deviceId",
"timestampExpression": "$.endDate",
"values": [
{
@@ -768,9 +766,7 @@ The JsonPathContentTemplate allows matching on and extracting values from an Eve
---
-**Project Multiple Measurements from Single Message**
-
-*Message*
+Given the following message that contains multiple types:
```json
{
@@ -785,13 +781,13 @@ The JsonPathContentTemplate allows matching on and extracting values from an Eve
}
```
-*Template 1*
+A JsonPathContent template type can be used to extract the heart rate:
```json
{
"templateType": "JsonPathContent",
"template": {
- "typeName": "heartrate",
+ "typeName": "heartRate",
"typeMatchExpression": "$..[?(@heartRate)]",
"deviceIdExpression": "$.deviceId",
"timestampExpression": "$.endDate",
@@ -806,13 +802,13 @@ The JsonPathContentTemplate allows matching on and extracting values from an Eve
}
```
-*Template 2*
+And an additional JsonPathContent template type can be used to extract the step count:
```json
{
"templateType": "JsonPathContent",
"template": {
- "typeName": "stepcount",
+ "typeName": "stepCount",
"typeMatchExpression": "$..[?(@steps)]",
"deviceIdExpression": "$.deviceId",
"timestampExpression": "$.endDate",
@@ -829,9 +825,7 @@ The JsonPathContentTemplate allows matching on and extracting values from an Eve
---
-**Project Multiple Measurements from Array in Message**
-
-*Message*
+Given the following message that contains multiple heart rate measurements in an array:
```json
{
@@ -857,13 +851,13 @@ The JsonPathContentTemplate allows matching on and extracting values from an Eve
}
```
-*Template*
+A JsonPathContent template type can be used to extract all heart rates:
```json
{
"templateType": "JsonPathContent",
"template": {
- "typeName": "heartrate",
+ "typeName": "heartRate",
"typeMatchExpression": "$..[?(@heartRate)]",
"deviceIdExpression": "$.deviceId",
"timestampExpression": "$.endDate",
@@ -882,17 +876,24 @@ The JsonPathContentTemplate allows matching on and extracting values from an Eve
The IotJsonPathContentTemplate is similar to the JsonPathContentTemplate except the DeviceIdExpression and TimestampExpression are not required.
-The assumption when using this template is the messages being evaluated were sent using the [Azure IoT Hub Device SDKs](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-sdks#azure-iot-hub-device-sdks) or [Export Data (legacy)](https://docs.microsoft.com/en-us/azure/iot-central/core/howto-export-data-legacy) feature of [Azure IoT Central](https://docs.microsoft.com/en-us/azure/iot-central/core/howto-export-data). When using these SDKs the device identity (assuming the device id from IoT Hub/Central is registered as an identifer for a device resource on the destination FHIR server) is known as well as the timestamp of the message. If you are using Azure IoT Hub Device SDKs but are using custom properties in the message body for the device identity or measurement timestamp you can still use the JsonPathContentTemplate.
+The assumption when using this template is the messages being evaluated were sent using the [Azure IoT Hub Device SDKs](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-sdks#azure-iot-hub-device-sdks). When using these SDKs the device identity (assuming the device id from IoT Hub is registered as an identifier for a device resource on the destination FHIR server) is known as well as the timestamp of the message. If you are using Azure IoT Hub Device SDKs but are using custom properties in the message body for the device identity or measurement timestamp you can still use the JsonPathContentTemplate.
*Note: When using the IotJsonPathContentTemplate the TypeMatchExpression should resolve to the entire message as a JToken. Please see the examples below.*
-### Examples
+### IotJsonPathContentTemplate Examples
---
-**Heart Rate**
+Given the following heart rate message:
+
+```json
+{
+ "heartRate": "78"
+}
+```
+
+Iot Hub will wrap the original message in a `Body` element and add a timestamp (`iothub-creation-time-utc`) and device identifier (`iothub-connection-device-id`).
-*Message*
```json
{
"Body": {
@@ -906,15 +907,15 @@ The assumption when using this template is the messages being evaluated were sen
}
}
```
-*Template*
+
+A IotJsonPathContent template type can be used to extract the heart rate value. The time of the measurement and device identifier do not need to be mapped because when using IotJsonPathContent, the device identifier and time stamp are added by IoT Hub.
+
```json
{
- "templateType": "JsonPathContent",
+ "templateType": "IotJsonPathContent",
"template": {
- "typeName": "heartrate",
+ "typeName": "heartRate",
"typeMatchExpression": "$..[?(@Body.heartRate)]",
- "deviceIdExpression": "$.deviceId",
- "timestampExpression": "$.endDate",
"values": [
{
"required": "true",
@@ -925,11 +926,20 @@ The assumption when using this template is the messages being evaluated were sen
}
}
```
+
---
-**Blood Pressure**
+Given the following blood pressure message:
+
+```json
+{
+ "systolic": "123",
+ "diastolic" : "87"
+}
+```
+
+Iot Hub will wrap the original message in a `Body` element and add a timestamp (`iothub-creation-time-utc`) and device identifier (`iothub-connection-device-id`).
-*Message*
```json
{
"Body": {
@@ -944,151 +954,38 @@ The assumption when using this template is the messages being evaluated were sen
}
}
```
-*Template*
-```json
-{
- "typeName": "bloodpressure",
- "typeMatchExpression": "$..[?(@Body.systolic && @Body.diastolic)]",
- "values": [
- {
- "required": "true",
- "valueExpression": "$.Body.systolic",
- "valueName": "systolic"
- },
- {
- "required": "true",
- "valueExpression": "$.Body.diastolic",
- "valueName": "diastolic"
- }
- ]
-}
-```
-Full example template can be found [here](https://github.com/microsoft/iomt-fhir/tree/7794cbcc463e8d26c3097cd5e2243d770f26fe45/sample/templates/legacy).
+A IotJsonPathContent template type can be used to extract the heart rate value. The time of the measurement and device identifier do not need to be mapped because when using IotJsonPathContent, the device identifier and time stamp are added by IoT Hub.
-## **IotCentralJsonPathContentTemplate**
-
-The IotCentralJsonPathContentTemplate is similar to the JsonPathContentTemplate except the DeviceIdExpression and TimestampExpression are not required.
-
-The assumption when using this template is the messages being evaluated were sent using the [Export Data](https://docs.microsoft.com/en-us/azure/iot-central/core/howto-export-data) feature of [Azure IoT Central](https://docs.microsoft.com/en-us/azure/iot-central/core/howto-export-data). When using this feature the device identity (assuming the device id from Iot Central is registered as an identifer for a device resource on the destination FHIR server) is known as well as the timestamp of the message. If you are using this export feature but are using custom properties in the message body for the device identity or measurement timestamp you can still use the JsonPathContentTemplate.
-
-*Note: When using the IotCentralJsonPathContentTemplate the TypeMatchExpression should resolve to the entire message as a JToken. Please see the examples below.*
-
-### Examples
-
----
-
-**Heart Rate**
-
-*Message*
-```json
-{
- "applicationId": "1dffa667-9bee-4f16-b243-25ad4151475e",
- "messageSource": "telemetry",
- "deviceId": "1vzb5ghlsg1",
- "schema": "default@v1",
- "templateId": "urn:qugj6vbw5:___qbj_27r",
- "enqueuedTime": "2020-08-05T22:26:55.455Z",
- "telemetry": {
- "Activity": "running",
- "BloodPressure": {
- "Diastolic": 7,
- "Systolic": 71
- },
- "BodyTemperature": 98.73447010562934,
- "HeartRate": 88,
- "HeartRateVariability": 17,
- "RespiratoryRate": 13
- },
- "enrichments": {
- "userSpecifiedKey": "sampleValue"
- },
- "messageProperties": {
- "messageProp": "value"
- }
-}
-```
-*Template*
```json
{
- "templateType": "IotCentralJsonPathContent",
- "template": {
- "typeName": "heartrate",
- "typeMatchExpression": "$..[?(@telemetry.HeartRate)]",
- "values": [
- {
- "required": "true",
- "valueExpression": "$.telemetry.HeartRate",
- "valueName": "hr"
- }
- ]
- }
-}
-```
----
-**Blood Pressure**
-
-*Message*
-```json
-{
- "applicationId": "1dffa667-9bee-4f16-b243-25ad4151475e",
- "messageSource": "telemetry",
- "deviceId": "1vzb5ghlsg1",
- "schema": "default@v1",
- "templateId": "urn:qugj6vbw5:___qbj_27r",
- "enqueuedTime": "2020-08-05T22:26:55.455Z",
- "telemetry": {
- "Activity": "running",
- "BloodPressure": {
- "Diastolic": 7,
- "Systolic": 71
- },
- "BodyTemperature": 98.73447010562934,
- "HeartRate": 88,
- "HeartRateVariability": 17,
- "RespiratoryRate": 13
- },
- "enrichments": {
- "userSpecifiedKey": "sampleValue"
- },
- "messageProperties": {
- "messageProp": "value"
- }
-}
-```
-*Template*
-```json
-{
- "templateType": "IotCentralJsonPathContent",
+ "templateType": "IotJsonPathContent",
"template": {
"typeName": "bloodPressure",
- "typeMatchExpression": "$..[?(@telemetry.BloodPressure.Diastolic && @telemetry.BloodPressure.Systolic)]",
+ "typeMatchExpression": "$..[?(@Body.systolic && @Body.diastolic)]",
"values": [
{
"required": "true",
- "valueExpression": "$.telemetry.BloodPressure.Diastolic",
- "valueName": "bp_diastolic"
+ "valueExpression": "$.Body.systolic",
+ "valueName": "systolic"
},
{
"required": "true",
- "valueExpression": "$.telemetry.BloodPressure.Systolic",
- "valueName": "bp_systolic"
+ "valueExpression": "$.Body.diastolic",
+ "valueName": "diastolic"
}
]
}
}
```
-Full example template can be found [here](https://github.com/microsoft/iomt-fhir/tree/7794cbcc463e8d26c3097cd5e2243d770f26fe45/sample/templates/sandbox).
-
----
-# FHIR Mapping
+## FHIR Mapping
Once the device content is extracted into [Measurement](../src/lib/Microsoft.Health.Fhir.Ingest.Schema/Measurement.cs) definitions the data is collected and grouped according to a window of time (set during deployment), device id, and type. The output of this grouping is sent to be converted into a FHIR resource (observation currently). Here the FHIR mapping controls how the data is mapped into a FHIR observation. Should an observation be created for a point in time or over a period of an hour? What codes should be added to the observation? Should be value be represented as SampledData or a Quantity? These are all options the FHIR mapping configuration controls.
The FHIR mapping also controls how the measurements are grouped into an observation. This is controlled by the ```PeriodInterval``` setting in the template documentation below. The simplest option is ```Instance``` which means each measurement will map to a single observation. This is option appropriate if your data collection is infrequent (a couple times a day or less). If you are collecting data with high frequency (every second or ever minute) then using a period of ```Hour``` or ```Day``` is recommended. When set data that arrived will be mapped to the correct hourly and daily observation. This should be used with a value type SampledData which will capture measurements according to the period you configure. The last option is grouping by ```CorrelationId``` which will group all measurements that share the same device, type, and correlation id (defined and extracted during device mapping). This should also use the SampledData value type so all values with in the observation period can be represented.
-## CodeValueFhirTemplate
+### CodeValueFhirTemplate
The CodeValueFhirTemplate is currently the only template supported in FHIR mapping at this time. It allows you defined codes, the effective period, and value of the observation. Multiple value types are supported: SampledData, CodeableConcept, String, and Quantity. In addition to these configurable values the identifier for the observation, along with linking to the proper device and patient are handled automatically. An additional code used by IoMT FHIR Connector for Azure is also added.
@@ -1106,7 +1003,7 @@ The CodeValueFhirTemplate is currently the only template supported in FHIR mappi
| **Components[].Codes** |
| **Components[].Value** |
-## Value Type Templates
+### Value Type Templates
Each Value type defines at least the following properties:
| Property |
@@ -1116,7 +1013,7 @@ Each Value type defines at least the following properties:
Below are the currently supported value type templates. In the future further templates may be added.
-### SampledData
+#### SampledData
Represents the [SampledData](http://hl7.org/fhir/datatypes.html#SampledData) FHIR data type. Measurements are written to value stream starting with start of the observations and incrementing forward using the period defined. If no value is present an `E` will be written into the data stream. If the period is such that two more values occupy the same position in the data stream the latest value is used. The same logic is applied when an observation using the SampledData is updated.
@@ -1125,7 +1022,7 @@ Represents the [SampledData](http://hl7.org/fhir/datatypes.html#SampledData) FHI
| **DefaultPeriod** |
| **Unit** |
-### Quantity
+#### Quantity
Represents the [Quantity](http://hl7.org/fhir/datatypes.html#Quantity) FHIR data type. If more than one value is present in the grouping only the first value is used. If new value arrives that maps to the same observation it will overwrite the old value.
@@ -1135,13 +1032,13 @@ Represents the [Quantity](http://hl7.org/fhir/datatypes.html#Quantity) FHIR data
| **Code** |
| **System** |
-### String
+#### String
Represent the [string](https://www.hl7.org/fhir/datatypes.html#string) FHIR data type. If more than one value is present in the grouping only the first value is used. If new value arrives that maps to the same observation it will overwrite the old value.
No additional properties are defined.
-### CodeableConcept
+#### CodeableConcept
Represents the [CodeableConcept](http://hl7.org/fhir/datatypes.html#CodeableConcept) FHIR data type. The actual value isn't used.
@@ -1153,9 +1050,9 @@ Represents the [CodeableConcept](http://hl7.org/fhir/datatypes.html#CodeableConc
| **Codes[].System** |
| **Codes[].Display** |
-## Examples
+### CodeValueFhir Examples
-**Heart Rate - Sampled Data**
+Heart Rate - Sampled Data
```json
{
@@ -1169,7 +1066,7 @@ Represents the [CodeableConcept](http://hl7.org/fhir/datatypes.html#CodeableConc
}
],
"periodInterval": 60,
- "typeName": "heartrate",
+ "typeName": "heartRate",
"value": {
"defaultPeriod": 5000,
"unit": "count/min",
@@ -1182,7 +1079,7 @@ Represents the [CodeableConcept](http://hl7.org/fhir/datatypes.html#CodeableConc
---
-**Steps - Sampled Data**
+Steps - Sampled Data
```json
{
@@ -1209,7 +1106,7 @@ Represents the [CodeableConcept](http://hl7.org/fhir/datatypes.html#CodeableConc
---
-**Blood Pressure - Sampled Data**
+Blood Pressure - Sampled Data
```json
{
@@ -1223,7 +1120,7 @@ Represents the [CodeableConcept](http://hl7.org/fhir/datatypes.html#CodeableConc
}
],
"periodInterval": 60,
- "typeName": "bloodpressure",
+ "typeName": "bloodPressure",
"components": [
{
"codes": [
@@ -1262,7 +1159,7 @@ Represents the [CodeableConcept](http://hl7.org/fhir/datatypes.html#CodeableConc
---
-**Blood Pressure - Quantity**
+Blood Pressure - Quantity
```json
{
@@ -1276,7 +1173,7 @@ Represents the [CodeableConcept](http://hl7.org/fhir/datatypes.html#CodeableConc
}
],
"periodInterval": 0,
- "typeName": "bloodpressure",
+ "typeName": "bloodPressure",
"components": [
{
"codes": [
@@ -1313,7 +1210,7 @@ Represents the [CodeableConcept](http://hl7.org/fhir/datatypes.html#CodeableConc
---
-**Device Removed - Codeable Concept**
+Device Removed - Codeable Concept
```json
{
@@ -1345,4 +1242,4 @@ Represents the [CodeableConcept](http://hl7.org/fhir/datatypes.html#CodeableConc
```
---
-FHIR® is the registered trademark of HL7 and is used with the permission of HL7.
\ No newline at end of file
+FHIR® is the registered trademark of HL7 and is used with the permission of HL7.
diff --git a/docs/CustomFunctions.md b/docs/CustomFunctions.md
index 06f02d26..50ca60a5 100644
--- a/docs/CustomFunctions.md
+++ b/docs/CustomFunctions.md
@@ -1,7 +1,9 @@
+# Using Custom Functions in CalculatedContent templates
+
- [Custom Functions](#custom-functions)
- [Literal Values](#literal-values)
- [Exception Handling](#exception-handling)
- - [Mathmatical Functions](#mathmatical-functions)
+ - [Mathematical Functions](#mathematical-functions)
- [add](#add)
- [divide](#divide)
- [multiply](#multiply)
@@ -13,26 +15,26 @@
- [fromUnixTimestamp](#fromunixtimestamp)
- [fromUnixTimestampMs](#fromunixtimestampms)
-# Custom Functions
+## Custom Functions
-A variety of functions are available for use when using **JmesPath** as the expression language. In addition to the functions available as part of the JmesPath [specification](https://jmespath.org/specification.html#built-in-functions), a number of custom functions may also be used. This article describes these functions.
+A variety of functions are available for use when using **JmesPath** as the expression language. In addition to the functions available as part of the JmesPath [specification](https://jmespath.org/specification.html#built-in-functions), a number of custom functions may also be used. This article describes these functions.
Each function has a signature that follows the JmesPath [specification](https://jmespath.org/specification.html#built-in-functions). This can be represented as:
-```
+```c
return_type function_name(type $argname)
```
-The signature indicates the valid types for the arugments. If an invalid type is passed in for an argument an error will occur.
+The signature indicates the valid types for the arguments. If an invalid type is passed in for an argument an error will occur.
-When math related functions are performed the end result _must_ be able to fit within a C# [long](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/integral-numeric-types#characteristics-of-the-integral-types) value. If this cannot happen then a mathmatical error will occur.
+When math related functions are performed the end result _must_ be able to fit within a C# [long](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/integral-numeric-types#characteristics-of-the-integral-types) value. If this cannot happen then a mathematical error will occur.
**Note**: As stated previously, these functions may only be used when specifying **JmesPath** as the expression language. By default the expression language is **JsonPath**. The language can be changed [when defining the expression](Configuration.md#calculatedcontenttemplate). For example:
```json
"templateType": "CalculatedContent",
"template": {
- "typeName": "heartrate",
+ "typeName": "heartRate",
"patientIdExpression": {
"value": "insertString('123', 'patient', `0`) ",
"language": "JmesPath"
@@ -43,44 +45,44 @@ When math related functions are performed the end result _must_ be able to fit w
The above uses the [insertString](#insertstring) expression to generate the patient ID `patient123`
-## Literal Values
+### Literal Values
Constant values may be supplied to functions.
- - Numeric values should be enclosed within backticks: \`
- - Example: add(\`10\`, \`10\`)
- - String values should be enclosed within single quotes: '
- - Example: insertString('mple', 'sa', \`0\`)
+- Numeric values should be enclosed within backticks: \`
+ - Example: add(\`10\`, \`10\`)
+- String values should be enclosed within single quotes: '
+ - Example: insertString('mple', 'sa', \`0\`)
Please see the [specification](https://jmespath.org/specification.html#built-in-functions) for more details.
-## Exception Handling
+### Exception Handling
-Exceptions may occur at various points within the event processing lifecyle. We detail the various points where they can occur below.
+Exceptions may occur at various points within the event processing lifecycle. We detail the various points where they can occur below.
- Template Parsing
- When
- Each time a new batch of messages is received the device mapping template is loaded and parsed
- Exceptions that may occur
- - Failure to parse the template
- - Failure to parse any expressions
- - Outcome
- - System will attempt to reload and parse the latest device mapping template until parsing succeeds. No new messages will be processed until parsing is successful
+ - Failure to parse the template
+ - Failure to parse any expressions
+ - Outcome
+ - System will attempt to reload and parse the latest device mapping template until parsing succeeds. No new messages will be processed until parsing is successful
- Function Execution
- When
- Each time a function is executed against data within a message
- Exceptions that may occur
- - Input data does not match that of the function signature
- - Any additional exceptions listed in the description of the function
- - Outcome
- - System stop processing that message. The message is not retried.
+ - Input data does not match that of the function signature
+ - Any additional exceptions listed in the description of the function
+ - Outcome
+ - System stop processing that message. The message is not retried.
-## Mathmatical Functions
+### Mathematical Functions
-### add
+#### add
-```
+```c
number add(number $left, number $right)
```
@@ -93,9 +95,9 @@ Examples:
| {"left" : 40, "right" : 50} | add(left, right) | 90 |
| {"left" : 0, "right" : 50} | add(left, right) | 50 |
-### divide
+#### divide
-```
+```c
number divide(number $left, number $right)
```
@@ -107,11 +109,11 @@ Examples:
| n/a | divide(\`10\`, \`10\`) | 1 |
| {"left" : 40, "right" : 50} | divide(left, right) | 0.8 |
| {"left" : 0, "right" : 50} | divide(left, right) | 0 |
-| {"left" : 50, "right" : 0} | divide(left, right) | mathmatic error : divide by zero |
+| {"left" : 50, "right" : 0} | divide(left, right) | mathematic error : divide by zero |
-### multiply
+#### multiply
-```
+```c
number multiply(number $left, number $right)
```
@@ -124,10 +126,9 @@ Examples:
| {"left" : 40, "right" : 50} | multiply(left, right) | 2000 |
| {"left" : 0, "right" : 50} | multiply(left, right) | 0 |
+#### pow
-### pow
-
-```
+```c
number pow(number $left, number $right)
```
@@ -137,13 +138,13 @@ Examples:
| Given | Expression | Result |
|-------------------------------|---------------------|----------------------------|
| n/a | pow(\`10\`, \`10\`) | 10000000000 |
-| {"left" : 40, "right" : 50} | pow(left, right) | mathmatic error : overflow |
+| {"left" : 40, "right" : 50} | pow(left, right) | mathematic error : overflow |
| {"left" : 0, "right" : 50} | pow(left, right) | 0 |
| {"left" : 100, "right" : 0.5} | pow(left, right) | 10 |
-### subtract
+#### subtract
-```
+```c
number subtract(number $left, number $right)
```
@@ -156,15 +157,15 @@ Examples:
| {"left" : 40, "right" : 50} | subtract(left, right) | -10 |
| {"left" : 0, "right" : 50} | subtract(left, right) | -50 |
-## String Functions
+### String Functions
-### insertString
+#### insertString
-```
+```c
string insertString(string $original, string $toInsert, number pos)
```
-Produces a new string by inserting the value of _toInsert_ into the string _original_. The string will be inserted at position _pos_ within the string _original_.
+Produces a new string by inserting the value of _toInsert_ into the string _original_. The string will be inserted at position _pos_ within the string _original_.
The positional argument is zero based, the position of zero refers to the first character within the string. If the positional argument provided is out of range of the length of _original_ then an error will occur.
@@ -179,11 +180,11 @@ Examples:
| {"original" : "myString", "toInsert" : "!!", "pos" : 100} | insertString(original, toInsert, pos) | error: out of range |
| {"original" : "myString", "toInsert" : "!!", "pos" : -1} | insertString(original, toInsert, pos) | error: out of range |
-## Date Functions
+### Date Functions
-### fromUnixTimestamp
+#### fromUnixTimestamp
-```
+```c
string fromUnixTimestamp(number $unixTimestampInSeconds)
```
@@ -195,9 +196,9 @@ Examples:
| {"unix" : 1625677200} | fromUnixTimestamp(unix) | "2021-07-07T17:00:00+0" |
| {"unix" : 0} | fromUnixTimestamp(unix) | "1970-01-01T00:00:00+0" |
-### fromUnixTimestampMs
+#### fromUnixTimestampMs
-```
+```c
string fromUnixTimestampMs(number $unixTimestampInMs)
```
diff --git a/docs/Debugging.md b/docs/Debugging.md
index 6a159851..9995d75e 100644
--- a/docs/Debugging.md
+++ b/docs/Debugging.md
@@ -1,11 +1,15 @@
# Debugging
+
This article details how to troubleshoot and debug your deployed instance of the IoMT FHIR Connector for Azure. Below will cover troubleshooting your deployed instance as well as how to debug locally.
## Troubleshooting Deployed Services
+
An instance of [Application Insights](https://docs.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview) is deployed as part of the IoMT FHIR Connector for Azure. From here you can see errors and telemetry for logical components of the connector. In addition to the information contained in Application Insights each component deployed (Event Hub & Stream Analytics) has its own telemetry you can use as well. Some important information includes the number of messages received and sent on the Event Hubs and the watermark delay along with input and output events of the Stream Analytic job.
### Telemetry Collected
+
All telemetry below can be viewed in [Application Insights](https://docs.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview). Select the [metrics](https://docs.microsoft.com/en-us/azure/azure-monitor/platform/metrics-charts) section. The telemetry documented will fall under the **custom** category.
+
* **MeasurementIngestionLatency**: The difference between the ingestion time on the event hub end point and received by the FHIR conversion function. Measured in milliseconds.
* **MeasurementGroup**: The number of unique groupings of measurements across type, device, patient, and configured time period generated by the FHIR conversion function. Should directly correlate to the number of observations being created or updated.
* **Measurement**: The number of raw value readings received by the FHIR conversion function.
@@ -22,77 +26,88 @@ All telemetry below can be viewed in [Application Insights](https://docs.microso
|**FhirResourceNotFoundException**|Thrown when the identifier provided in the message isn't found. The actual telemetry recorded will be specific the type of resource not found (i.e. Patient, Device, or Encounter).
### Common Issues
+
* **Messages are being sent but I don't see any output on the normalized data Event Hub.**
- First ensure you have properly deployed the configuration with your template(s) into the Storage Blob template container with the name `devicecontent.json`. If there is a problem loading templates the issue will surface in Application Insights as ArgumentNullExceptions.
+ First, ensure you have properly deployed the configuration with your template(s) into the Storage Blob template container with the name `devicecontent.json`. If there is a problem loading templates the issue will surface in Application Insights as ArgumentNullExceptions.
- Another potiential cause is your device content templates aren't matching the payloads being sent. If possible you can try debugging locally. Otherwise you can try retrieving messages from the device data Event Hub and investigating the payload. The are example unit tests in the solution you can modify to match your template and payload so you can check the template is being applied as intended.
-* **Messages are processed but I don't see the FHIR conversion being called.**
+ Another potential cause is your device content templates aren't matching the payloads being sent. If possible you can try debugging locally. Otherwise you can try retrieving messages from the device data Event Hub and investigating the payload. The are example unit tests in the solution you can modify to match your template and payload so you can check the template is being applied as intended.
- Check the [Stream Analytics](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-monitoring) job and make sure it isn't delayed. If the volume is too high you may need to [increase streaming units](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-streaming-unit-consumption) to scale the job up. Checking the current job watermark is a good first step.
* **Messages are processed and job output are being sent to the FHIR conversion but I don't see any observations created.**
- Check that you have properly created a device resource that is linked to a patient resource in the FHIR server. The device id extracted by the template should match the device identifier on device resource in FHIR. If not setup correcly you will see PatientNotFoundException or DeviceNotFoundException metrics in Applications Insights.
+ Check that you have properly created a device resource that is linked to a patient resource in the FHIR server. The device id extracted by the template should match the device identifier on device resource in FHIR. If not setup correctly you will see PatientNotFoundException or DeviceNotFoundException metrics in Applications Insights.
+
+## Run and Debug Locally
+
+The core logic of the IoMT FHIR Connector for Azure is handled by two dotnet applications. You can run the projects locally but the projects have dependencies on resources deployed in Azure (see below).
+
+* **Microsoft.Health.Fhir.Ingest.Console.Normalization**
+ * Azure Event Hub Namespace
+ * 2 Azure Event Hubs (1 for device data and 1 for normalized data)
+ * Storage Account
-## Run and Debug Functions Locally
-The core logic of the IoMT FHIR Connector for Azure is handled by two Azure Functions. You can run functions project locally.
+* **Microsoft.Health.Fhir.Ingest.Console.FhirTransformation**
+ * Azure Event Hub Namespace
+ * 1 Azure Event Hubs (for normalized data)
+ * Storage Account
+ * Health Data Services workspace
+ * Fhir Service
-Please be sure you have the [prerequisites](https://docs.microsoft.com/en-us/azure/azure-functions/functions-develop-vs#prerequisites) met for debugging Azure Functions on your machine.
+* Ensure the project that you want to debug is set as the startup project in the solution.
+* Upload your device content and/or FHIR mapping to the Storage Account.
+* Complete the `local.settings.json` file in the root of the project.
+ * **NOTE -** If settings fail to load make sure the `Copy to Output Directory` property of the `local.settings.json` is set to `Copy always` or `Copy if newer`.
-In addition to the Azure Functions prerequisites the following tasks need to be done prior to starting the project:
-* Ensure `Microsoft.Health.Ingest.Host.csproj` is the startup project in the solution.
-* Provide your device content and FHIR mapping. The default during debugging is to use the [Azure Storage Emulator](https://docs.microsoft.com/en-us/azure/storage/common/storage-use-emulator). It should be installed as part of the Azure Function prerequisites.
-* Provide a completed `local.settings.json` file in the root of the project. A partially completed version can found [here](./local.settings.json). An example is also available below.
+### Example Microsoft.Health.Fhir.Ingest.Console.Normalization local.settings.json
-### Example local.settings.json
```json
{
- "IsEncrypted": false,
- "Values": {
- "AzureWebJobsStorage": "UseDevelopmentStorage=true",
- "FhirVersion": "R4",
- "FhirService:Authority": "<>",
- "FhirService:ClientId": "<>",
- "FhirService:ClientSecret": "<>",
- "FhirService:Resource": "<>",
- "FhirService:Url": "<>",
- "FUNCTIONS_WORKER_RUNTIME": "dotnet",
- "InputEventHub": "<>",
- "OutputEventHub": "<>",
- "ResourceIdentity:ResourceIdentityServiceType": "Lookup",
- "ResourceIdentity:DefaultDeviceIdentifierSystem": "",
- "Template:DeviceContent": "devicecontent.json",
- "Template:FhirMapping": "fhirmapping.json"
- }
+ "EventBatching:FlushTimespan": 10,
+ "EventBatching:MaxEvents": 1,
+ "Checkpoint:CheckpointBatchCount": 1,
+ "Checkpoint:BlobPrefix": "devicedata",
+ "CheckpointStorage:AuthenticationType": "ManagedIdentity",
+ "CheckpointStorage:BlobStorageContainerUri": "<>",
+ "TemplateStorage:AuthenticationType": "ManagedIdentity",
+ "TemplateStorage:BlobStorageContainerUri": "<>",
+ "InputEventHub:AuthenticationType": "ManagedIdentity",
+ "InputEventHub:EventHubNamespaceFQDN": "<>",
+ "InputEventHub:EventHubConsumerGroup": "$Default",
+ "InputEventHub:EventHubName": "<>",
+ "NormalizationEventHub:AuthenticationType": "ManagedIdentity",
+ "NormalizationEventHub:EventHubNamespaceFQDN": "<>",
+ "NormalizationEventHub:EventHubConsumerGroup": "$Default",
+ "NormalizationEventHub:EventHubName": "<>",
+ "Template:DeviceContent": "devicecontent.json"
}
```
-Once you have completed the prerequisites you can run the solution/project. The Azure Function host will start up. The Event Hub processing function responsible for normalization, `NormalizeDeviceData`, will automatically start. Once started it will read events from the EventHub connection provided in the `local.settings.json`.
+### Example Microsoft.Health.Fhir.Ingest.Console.FhirTransformation local.settings.json
-The FHIR conversion function, `MeasurementCollectionToFhir`, can be invoked through you preferred tool (Postman, curl, etc.). The local endpoint should output to the console. You can submit POST requests to the endpoint. The expected input is an array of `Microsoft.Health.Fhir.Ingest.Data.IMeasurementGroup`. An example is below.
-
-### Example POST body
```json
-[
- {
- "deviceid": "com.apple.health.33BE1D5F-A55B-43BB-ABEA-9C0FBF71BA18",
- "data": [
- {
- "occurrenceTimeUtc": "2019-07-26T21:51:45.0000000Z",
- "type": "heartrate",
- "ingestionTimeUtc": "2019-07-26T21:58:35.9680000Z",
- "deviceId": "com.apple.health.33BE1D5F-A55B-43BB-ABEA-9C0FBF71BA18",
- "properties": [
- {
- "name": "hr",
- "value": "65"
- }
- ]
- }
- ],
- "windowtime": "2019-07-26T21:52:00.0000000Z",
- "measuretype": "heartrate",
- "count": 1
- }
-]
-```
\ No newline at end of file
+{
+ "EventBatching:FlushTimespan": 10,
+ "EventBatching:MaxEvents": 1,
+ "Checkpoint:CheckpointBatchCount": 1,
+ "Checkpoint:BlobPrefix": "normalizeddata",
+ "CheckpointStorage:AuthenticationType": "ManagedIdentity",
+ "CheckpointStorage:BlobStorageContainerUri": "<>",
+ "TemplateStorage:AuthenticationType": "ManagedIdentity",
+ "TemplateStorage:BlobStorageContainerUri": "<>",
+ "FhirClient:UseManagedIdentityCredential": "true",
+ "FhirService:Url": "<>",
+ "NormalizationEventHub:AuthenticationType": "ManagedIdentity",
+ "NormalizationEventHub:EventHubNamespaceFQDN": "<>",
+ "NormalizationEventHub:EventHubConsumerGroup": "$Default",
+ "NormalizationEventHub:EventHubName": "<>",
+ "ResourceIdentity:ResourceIdentityServiceType": "Create",
+ "ResourceIdentity:DefaultDeviceIdentifierSystem": "",
+ "Template:FhirMapping": "fhirmapping.json"
+}
+```
+
+Once you have completed the prerequisites you can run the projects.
+
+`Microsoft.Health.Fhir.Ingest.Console.Normalization` will read events from the `InputEventHub` defined in the `local.settings.json` and output normalized data to the `NormalizationEventHub` defined in the `local.settings.json`.
+
+`Microsoft.Health.Fhir.Ingest.Console.FhirTransformation` will read events from the `NormalizationEventHub` defined in the `local.settings.json` and write FHIR resources to the `FhirService` defined in the `local.settings.json`.
diff --git a/docs/Iot.md b/docs/Iot.md
index 7c929c7e..24ee1531 100644
--- a/docs/Iot.md
+++ b/docs/Iot.md
@@ -1,9 +1,4 @@
-# Connection to Azure IoT
-This article details connecting the IoMT FHIR Connector for Azure to IoT Hub or IoT Central.
+# Connection to Azure IoT Hub
-## Connect to IoT Hub
Connecting to IoT Hub is done by using the [message routing](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messages-d2c#routing-endpoints) feature. You will want to create a [custom endpoint](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-endpoints#custom-endpoints
) pointing to the `devicedata` Event Hub.
-
-## Connect to IoT Central
-Connecting IoT Central is done by using the [continuous data export](https://docs.microsoft.com/en-us/azure/iot-central/core/howto-export-data-pnp) feature. Please follow the instructions for exporting to Event Hub. The target endpoint will be the `devicedata` Event Hub. When selecting the types of data to export only *Telemetry* is needed. Device and templates can be left unchecked.
\ No newline at end of file
diff --git a/docs/PartitionLocking.md b/docs/PartitionLocking.md
index 32934ee4..eedf0642 100644
--- a/docs/PartitionLocking.md
+++ b/docs/PartitionLocking.md
@@ -1,3 +1,5 @@
+# Partition Locking
+
Below is a flowchart of an event hub processor implementation that locks the partitions before reading events from the partition. The locking (via blob leases) is done so that two event hub processors cannot both read from the same event hub partition(s) at the same time.
See [PartitionLockingService.cs](https://github.com/microsoft/iomt-fhir/pull/268/files#diff-316b56d2a26014f9f8a392be2c1d400b48f9f7689e1b7c5e00113671e69e875f) and [PartitionCoordinator.cs](https://github.com/microsoft/iomt-fhir/pull/268/files#diff-89ff615f3dcbf679f7f8b056961fbd87f12098af45bae6ae0c26650e1d672651) for the actual code implementation.
diff --git a/docs/Sandbox.md b/docs/Sandbox.md
deleted file mode 100644
index 1c44a2f0..00000000
--- a/docs/Sandbox.md
+++ /dev/null
@@ -1,89 +0,0 @@
-# IoMT FHIR Connector for Azure Sandbox
-
-You can deploy a sandbox application to see how [IoMT FHIR Connector for Azure](./ARMInstallation.md) can be used with [Azure API for FHIR](https://docs.microsoft.com/azure/healthcare-apis) and [Azure IoT Central](https://azure.microsoft.com/services/iot-central/). The script deploys all of these components with mock devices sending data through the IoMT FHIR Connector for Azure pipeline.
-
-Once deployment is completed you should see the following Azure components:
-
-- App Service
-- App Service plan
-- Application Insights
-- Event Hubs Namespace
-- Stream Analytics job
-- Storage account
-- Key vault
-- Azure API for FHIR (R4)
-- IoT Central Application
-
-For the ease of using the sandbox, a few steps will be taken for you:
-
-1. Simulated devices are set up in IoT Central to generate data.
-2. Template files for those devices will be copied to the IoMT FHIR Connector for Azure storage account "Template" blob.
-3. The IoMT FHIR Connector for Azure will be configured with the Resource Identity Resolution Type "Create" so that patients will automatically be created for each device.
-
-## Prerequisites
-
-Before deploying the samples scenario make sure that you have `Az` and `AzureAd` powershell modules installed (not required for Azure Cloud Shell):
-
-```PowerShell
-Install-Module Az
-Install-Module AzureAd
-```
-
-## Deployment
-
-To deploy the sample scenario, first clone this git repo and find the deployment scripts folder:
-
-```PowerShell
-git clone https://github.com/Microsoft/iomt-fhir
-cd iomt-fhir/deploy/scripts
-```
-
-Log into your Azure subscription:
-
-```PowerShell
-Login-AzAccount
-```
-
-If you have more than one subscription, you can choose which to deploy to with:
-
-```PowerShell
-Select-AzSubscription
-```
-
-Then deploy the scenario with the Open Source IoMT FHIR Connector for Azure:
-
-```PowerShell
-.\Create-IomtFhirSandboxEnvironment.ps1 -EnvironmentName
-```
-
-## Post Deployment
-
-**NOTE** The device conversion mapping template provided in this guide is designed to work with the [Export Data](https://docs.microsoft.com/en-us/azure/iot-central/core/howto-export-data) feature of [Azure IoT Central](https://docs.microsoft.com/en-us/azure/iot-central/core/howto-export-data).
-
-After successful deployment, your IoT Central application must be connected to the IoMT FHIR Connector for Azure. To do so:
-
-1. Navigate to your IoT Central app at \.azureiotcentral.com
-2. On the left panel, navigate to "Data export".
-3. Setup the destination to which the data has to be exported to:
- * Under the Destinations tab, click "Add a destination" or "+ New Destination".
- * Enter a name for this destination.
- * Select "Azure Event Hubs" as the Destination type.
- * [Get the connection string to the Event Hubs Namespace](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-get-connection-string) resource created in your environment and enter it in the Connection string field.
- * Enter "devicedata" for the Event Hub field.
- * Click Save.
-4. Under the Exports tab, click "Add an export" or "+ New export".
-5. Select "Telemetry" for type of data to export.
-6. Select the name of the destination created in step 3.
-7. Click Save.
-
-## Verification
-
-Copy the FHIR server URL from the deployment output to query the FHIR server.
-
-After a few minutes, you should begin to [see observations in the FHIR server](https://docs.microsoft.com/azure/healthcare-apis/access-fhir-postman-tutorial) from the simulated devices using the following GET URL
-
-```
-https://.azurehealthcareapis.com/Observation
-```
-
-If no data is flowing, you should [debug the environment](./Debugging.md)
diff --git a/docs/local.settings.json b/docs/local.settings.json
deleted file mode 100644
index 1d7497bd..00000000
--- a/docs/local.settings.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "IsEncrypted": false,
- "Values": {
- "AzureWebJobsStorage": "UseDevelopmentStorage=true",
- "FhirVersion": "R4",
- "FhirService:Authority": "",
- "FhirService:ClientId": "",
- "FhirService:ClientSecret": "",
- "FhirService:Resource": "",
- "FhirService:Url": "",
- "FUNCTIONS_WORKER_RUNTIME": "dotnet",
- "InputEventHub": "",
- "OutputEventHub": "",
- "ResourceIdentity:ResourceIdentityServiceType": "Lookup",
- "ResourceIdentity:DefaultDeviceIdentifierSystem": "",
- "Template:DeviceContent": "devicecontent.json",
- "Template:FhirMapping": "fhirmapping.json"
- }
-}
\ No newline at end of file
diff --git a/src/console/Microsoft.Health.Fhir.Ingest.Console.FhirTransformation/local.appsettings.json b/src/console/Microsoft.Health.Fhir.Ingest.Console.FhirTransformation/local.appsettings.json
index 50632891..fb97616f 100644
--- a/src/console/Microsoft.Health.Fhir.Ingest.Console.FhirTransformation/local.appsettings.json
+++ b/src/console/Microsoft.Health.Fhir.Ingest.Console.FhirTransformation/local.appsettings.json
@@ -1,24 +1,18 @@
{
- "APPINSIGHTS_INSTRUMENTATIONKEY": "",
- "EventBatching:FlushTimespan": 300,
- "EventBatching:MaxEvents": 300,
- "Checkpoint:BlobPrefix": "MeasurementToFhir",
+ "EventBatching:FlushTimespan": 10,
+ "EventBatching:MaxEvents": 1,
+ "Checkpoint:CheckpointBatchCount": 1,
+ "Checkpoint:BlobPrefix": "normalizeddata",
"CheckpointStorage:AuthenticationType": "ManagedIdentity",
- "CheckpointStorage:BlobStorageContainerUri": "",
- "CheckpointStorage:BlobContainerName": "checkpoint",
+ "CheckpointStorage:BlobStorageContainerUri": "<>",
"TemplateStorage:AuthenticationType": "ManagedIdentity",
- "TemplateStorage:BlobStorageContainerUri": "",
- "TemplateStorage:BlobContainerName": "template",
- "FhirClient:UseManagedIdentity": "true",
- "FhirService:Url": "",
- "InputEventHub:AuthenticationType": "ManagedIdentity",
- "InputEventHub:EventHubNamespaceFQDN": "",
- "InputEventHub:EventHubConsumerGroup": "$Default",
- "InputEventHub:EventHubName": "",
+ "TemplateStorage:BlobStorageContainerUri": "<>",
+ "FhirClient:UseManagedIdentityCredential": "true",
+ "FhirService:Url": "<>",
"NormalizationEventHub:AuthenticationType": "ManagedIdentity",
- "NormalizationEventHub:EventHubNamespaceFQDN": "",
+ "NormalizationEventHub:EventHubNamespaceFQDN": "<>",
"NormalizationEventHub:EventHubConsumerGroup": "$Default",
- "NormalizationEventHub:EventHubName": "",
+ "NormalizationEventHub:EventHubName": "<>",
"ResourceIdentity:ResourceIdentityServiceType": "Create",
"ResourceIdentity:DefaultDeviceIdentifierSystem": "",
"Template:FhirMapping": "fhirmapping.json"
diff --git a/src/console/Microsoft.Health.Fhir.Ingest.Console.Normalization/local.appsettings.json b/src/console/Microsoft.Health.Fhir.Ingest.Console.Normalization/local.appsettings.json
index ef200a22..246c8422 100644
--- a/src/console/Microsoft.Health.Fhir.Ingest.Console.Normalization/local.appsettings.json
+++ b/src/console/Microsoft.Health.Fhir.Ingest.Console.Normalization/local.appsettings.json
@@ -1,21 +1,19 @@
{
- "APPINSIGHTS_INSTRUMENTATIONKEY": "",
- "EventBatching:FlushTimespan": 30,
- "EventBatching:MaxEvents": 20,
- "Checkpoint:BlobPrefix": "Normalization",
+ "EventBatching:FlushTimespan": 10,
+ "EventBatching:MaxEvents": 1,
+ "Checkpoint:CheckpointBatchCount": 1,
+ "Checkpoint:BlobPrefix": "devicedata",
"CheckpointStorage:AuthenticationType": "ManagedIdentity",
- "CheckpointStorage:BlobStorageContainerUri": "",
- "CheckpointStorage:BlobContainerName": "checkpoint",
+ "CheckpointStorage:BlobStorageContainerUri": "<>",
"TemplateStorage:AuthenticationType": "ManagedIdentity",
- "TemplateStorage:BlobStorageContainerUri": "",
- "TemplateStorage:BlobContainerName": "template",
+ "TemplateStorage:BlobStorageContainerUri": "<>",
"InputEventHub:AuthenticationType": "ManagedIdentity",
- "InputEventHub:EventHubNamespaceFQDN": "",
+ "InputEventHub:EventHubNamespaceFQDN": "<>",
"InputEventHub:EventHubConsumerGroup": "$Default",
- "InputEventHub:EventHubName": "",
+ "InputEventHub:EventHubName": "<>",
"NormalizationEventHub:AuthenticationType": "ManagedIdentity",
- "NormalizationEventHub:EventHubNamespaceFQDN": "",
+ "NormalizationEventHub:EventHubNamespaceFQDN": "<>",
"NormalizationEventHub:EventHubConsumerGroup": "$Default",
- "NormalizationEventHub:EventHubName": "",
+ "NormalizationEventHub:EventHubName": "<>",
"Template:DeviceContent": "devicecontent.json"
}
diff --git a/src/func/Microsoft.Health.Fhir.Ingest.Host/.gitignore b/src/func/Microsoft.Health.Fhir.Ingest.Host/.gitignore
deleted file mode 100644
index 3c3f4e6a..00000000
--- a/src/func/Microsoft.Health.Fhir.Ingest.Host/.gitignore
+++ /dev/null
@@ -1,264 +0,0 @@
-## Ignore Visual Studio temporary files, build results, and
-## files generated by popular Visual Studio add-ons.
-
-# Azure Functions localsettings file
-local.settings.json
-
-# User-specific files
-*.suo
-*.user
-*.userosscache
-*.sln.docstates
-
-# User-specific files (MonoDevelop/Xamarin Studio)
-*.userprefs
-
-# Build results
-[Dd]ebug/
-[Dd]ebugPublic/
-[Rr]elease/
-[Rr]eleases/
-x64/
-x86/
-bld/
-[Bb]in/
-[Oo]bj/
-[Ll]og/
-
-# Visual Studio 2015 cache/options directory
-.vs/
-# Uncomment if you have tasks that create the project's static files in wwwroot
-#wwwroot/
-
-# MSTest test Results
-[Tt]est[Rr]esult*/
-[Bb]uild[Ll]og.*
-
-# NUNIT
-*.VisualState.xml
-TestResult.xml
-
-# Build Results of an ATL Project
-[Dd]ebugPS/
-[Rr]eleasePS/
-dlldata.c
-
-# DNX
-project.lock.json
-project.fragment.lock.json
-artifacts/
-
-*_i.c
-*_p.c
-*_i.h
-*.ilk
-*.meta
-*.obj
-*.pch
-*.pdb
-*.pgc
-*.pgd
-*.rsp
-*.sbr
-*.tlb
-*.tli
-*.tlh
-*.tmp
-*.tmp_proj
-*.log
-*.vspscc
-*.vssscc
-.builds
-*.pidb
-*.svclog
-*.scc
-
-# Chutzpah Test files
-_Chutzpah*
-
-# Visual C++ cache files
-ipch/
-*.aps
-*.ncb
-*.opendb
-*.opensdf
-*.sdf
-*.cachefile
-*.VC.db
-*.VC.VC.opendb
-
-# Visual Studio profiler
-*.psess
-*.vsp
-*.vspx
-*.sap
-
-# TFS 2012 Local Workspace
-$tf/
-
-# Guidance Automation Toolkit
-*.gpState
-
-# ReSharper is a .NET coding add-in
-_ReSharper*/
-*.[Rr]e[Ss]harper
-*.DotSettings.user
-
-# JustCode is a .NET coding add-in
-.JustCode
-
-# TeamCity is a build add-in
-_TeamCity*
-
-# DotCover is a Code Coverage Tool
-*.dotCover
-
-# NCrunch
-_NCrunch_*
-.*crunch*.local.xml
-nCrunchTemp_*
-
-# MightyMoose
-*.mm.*
-AutoTest.Net/
-
-# Web workbench (sass)
-.sass-cache/
-
-# Installshield output folder
-[Ee]xpress/
-
-# DocProject is a documentation generator add-in
-DocProject/buildhelp/
-DocProject/Help/*.HxT
-DocProject/Help/*.HxC
-DocProject/Help/*.hhc
-DocProject/Help/*.hhk
-DocProject/Help/*.hhp
-DocProject/Help/Html2
-DocProject/Help/html
-
-# Click-Once directory
-publish/
-
-# Publish Web Output
-*.[Pp]ublish.xml
-*.azurePubxml
-# TODO: Comment the next line if you want to checkin your web deploy settings
-# but database connection strings (with potential passwords) will be unencrypted
-#*.pubxml
-*.publishproj
-
-# Microsoft Azure Web App publish settings. Comment the next line if you want to
-# checkin your Azure Web App publish settings, but sensitive information contained
-# in these scripts will be unencrypted
-PublishScripts/
-
-# NuGet Packages
-*.nupkg
-# The packages folder can be ignored because of Package Restore
-**/packages/*
-# except build/, which is used as an MSBuild target.
-!**/packages/build/
-# Uncomment if necessary however generally it will be regenerated when needed
-#!**/packages/repositories.config
-# NuGet v3's project.json files produces more ignoreable files
-*.nuget.props
-*.nuget.targets
-
-# Microsoft Azure Build Output
-csx/
-*.build.csdef
-
-# Microsoft Azure Emulator
-ecf/
-rcf/
-
-# Windows Store app package directories and files
-AppPackages/
-BundleArtifacts/
-Package.StoreAssociation.xml
-_pkginfo.txt
-
-# Visual Studio cache files
-# files ending in .cache can be ignored
-*.[Cc]ache
-# but keep track of directories ending in .cache
-!*.[Cc]ache/
-
-# Others
-ClientBin/
-~$*
-*~
-*.dbmdl
-*.dbproj.schemaview
-*.jfm
-*.pfx
-*.publishsettings
-node_modules/
-orleans.codegen.cs
-
-# Since there are multiple workflows, uncomment next line to ignore bower_components
-# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
-#bower_components/
-
-# RIA/Silverlight projects
-Generated_Code/
-
-# Backup & report files from converting an old project file
-# to a newer Visual Studio version. Backup files are not needed,
-# because we have git ;-)
-_UpgradeReport_Files/
-Backup*/
-UpgradeLog*.XML
-UpgradeLog*.htm
-
-# SQL Server files
-*.mdf
-*.ldf
-
-# Business Intelligence projects
-*.rdl.data
-*.bim.layout
-*.bim_*.settings
-
-# Microsoft Fakes
-FakesAssemblies/
-
-# GhostDoc plugin setting file
-*.GhostDoc.xml
-
-# Node.js Tools for Visual Studio
-.ntvs_analysis.dat
-
-# Visual Studio 6 build log
-*.plg
-
-# Visual Studio 6 workspace options file
-*.opt
-
-# Visual Studio LightSwitch build output
-**/*.HTMLClient/GeneratedArtifacts
-**/*.DesktopClient/GeneratedArtifacts
-**/*.DesktopClient/ModelManifest.xml
-**/*.Server/GeneratedArtifacts
-**/*.Server/ModelManifest.xml
-_Pvt_Extensions
-
-# Paket dependency manager
-.paket/paket.exe
-paket-files/
-
-# FAKE - F# Make
-.fake/
-
-# JetBrains Rider
-.idea/
-*.sln.iml
-
-# CodeRush
-.cr/
-
-# Python Tools for Visual Studio (PTVS)
-__pycache__/
-*.pyc
\ No newline at end of file
diff --git a/src/func/Microsoft.Health.Fhir.Ingest.Host/AssemblyInfo.cs b/src/func/Microsoft.Health.Fhir.Ingest.Host/AssemblyInfo.cs
deleted file mode 100644
index 134efaff..00000000
--- a/src/func/Microsoft.Health.Fhir.Ingest.Host/AssemblyInfo.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-// -------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// -------------------------------------------------------------------------------------------------
-
-using Microsoft.Azure.Functions.Extensions.DependencyInjection;
-
-[assembly: FunctionsStartup(typeof(Microsoft.Health.Fhir.Ingest.Service.Startup))]
\ No newline at end of file
diff --git a/src/func/Microsoft.Health.Fhir.Ingest.Host/IomtConnectorFunctions.cs b/src/func/Microsoft.Health.Fhir.Ingest.Host/IomtConnectorFunctions.cs
deleted file mode 100644
index fde69115..00000000
--- a/src/func/Microsoft.Health.Fhir.Ingest.Host/IomtConnectorFunctions.cs
+++ /dev/null
@@ -1,113 +0,0 @@
-// -------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// -------------------------------------------------------------------------------------------------
-
-using System;
-using System.IO;
-using System.Threading.Tasks;
-using DevLab.JmesPath;
-using EnsureThat;
-using Microsoft.AspNetCore.Http;
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.Azure.EventHubs;
-using Microsoft.Azure.WebJobs;
-using Microsoft.Azure.WebJobs.Extensions.Http;
-using Microsoft.Extensions.Options;
-using Microsoft.Health.Common.Telemetry;
-using Microsoft.Health.Expressions;
-using Microsoft.Health.Fhir.Ingest.Data;
-using Microsoft.Health.Fhir.Ingest.Host;
-using Microsoft.Health.Fhir.Ingest.Telemetry;
-using Microsoft.Health.Fhir.Ingest.Template;
-using Microsoft.Health.Logging.Telemetry;
-
-namespace Microsoft.Health.Fhir.Ingest.Service
-{
- public class IomtConnectorFunctions
- {
- private readonly ITelemetryLogger _logger;
- private readonly CollectionContentTemplateFactory _collectionContentTemplateFactory;
- private readonly IExceptionTelemetryProcessor _exceptionTelemetryProcessor;
-
- public IomtConnectorFunctions(ITelemetryLogger logger, NormalizationExceptionTelemetryProcessor telemetryProcessor)
- {
- _logger = EnsureArg.IsNotNull(logger, nameof(logger));
- _exceptionTelemetryProcessor = EnsureArg.IsNotNull(telemetryProcessor, nameof(telemetryProcessor));
-
- var expressionRegister = new AssemblyExpressionRegister(typeof(IExpressionRegister).Assembly, _logger);
- var jmesPath = new JmesPath();
- expressionRegister.RegisterExpressions(jmesPath.FunctionRepository);
- _collectionContentTemplateFactory = new CollectionContentTemplateFactory(
- new JsonPathContentTemplateFactory(),
- new IotJsonPathContentTemplateFactory(),
- new IotCentralJsonPathContentTemplateFactory(),
- new CalculatedFunctionContentTemplateFactory(
- new TemplateExpressionEvaluatorFactory(jmesPath), _logger));
- }
-
- [FunctionName("MeasurementCollectionToFhir")]
- public async Task MeasurementCollectionToFhir(
- [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
- [Blob("template/%Template:FhirMapping%", FileAccess.Read)] string templateDefinition,
- [MeasurementFhirImport] MeasurementFhirImportService measurementImportService)
- {
- EnsureArg.IsNotNull(measurementImportService, nameof(measurementImportService));
- EnsureArg.IsNotNull(req, nameof(req));
-
- try
- {
- await measurementImportService.ProcessStreamAsync(req.Body, templateDefinition, _logger).ConfigureAwait(false);
- return new AcceptedResult();
- }
- catch (Exception ex)
- {
- _logger.LogMetric(
- IomtMetrics.UnhandledException(ex.GetType().Name, ConnectorOperation.FHIRConversion),
- 1);
- throw;
- }
- }
-
- [FunctionName("NormalizeDeviceData")]
- public async Task NormalizeDeviceData(
- [EventHubTrigger("input", Connection = "InputEventHub")] EventData[] events,
- [EventHubMeasurementCollector("output", Connection = "OutputEventHub")] IAsyncCollector output,
- [Blob("template/%Template:DeviceContent%", FileAccess.Read)] string templateDefinitions,
- [DeviceDataNormalization] IOptions normalizationSettings)
- {
- try
- {
- EnsureArg.IsNotNull(templateDefinitions, nameof(templateDefinitions));
- EnsureArg.IsNotNull(events, nameof(events));
- EnsureArg.IsNotNull(normalizationSettings, nameof(normalizationSettings));
-
- var templateContext = _collectionContentTemplateFactory.Create(templateDefinitions);
- templateContext.EnsureValid();
- var template = templateContext.Template;
-
- _logger.LogMetric(
- IomtMetrics.DeviceEvent(),
- events.Length);
-
- IDataNormalizationService dataNormalizationService = new MeasurementEventNormalizationService(_logger, template, _exceptionTelemetryProcessor);
- await dataNormalizationService.ProcessAsync(events, output).ConfigureAwait(false);
-
- if (normalizationSettings.Value.LogDeviceIngressSizeBytes)
- {
- var eventStats = await events.CalculateEventStats();
- _logger.LogMetric(
- IomtMetrics.DeviceIngressSizeBytes(),
- eventStats.TotalEventsProcessedBytes);
- }
- }
- catch (Exception ex)
- {
- _logger.LogMetric(
- IomtMetrics.UnhandledException(ex.GetType().Name, ConnectorOperation.Normalization),
- 1);
- throw;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/func/Microsoft.Health.Fhir.Ingest.Host/Microsoft.Health.Fhir.Ingest.Host.csproj b/src/func/Microsoft.Health.Fhir.Ingest.Host/Microsoft.Health.Fhir.Ingest.Host.csproj
deleted file mode 100644
index 353f3946..00000000
--- a/src/func/Microsoft.Health.Fhir.Ingest.Host/Microsoft.Health.Fhir.Ingest.Host.csproj
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
- $(LatestVersion)
- v4
- Microsoft.Health.Fhir.Ingest.Host
- Microsoft.Health.Fhir.Ingest.Host
-
-
- R4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PreserveNewest
-
-
- Always
- Never
-
-
- Never
-
-
- Never
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/func/Microsoft.Health.Fhir.Ingest.Host/Startup.cs b/src/func/Microsoft.Health.Fhir.Ingest.Host/Startup.cs
deleted file mode 100644
index 574470fb..00000000
--- a/src/func/Microsoft.Health.Fhir.Ingest.Host/Startup.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-// -------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// -------------------------------------------------------------------------------------------------
-
-using System;
-using System.Linq;
-using EnsureThat;
-using Microsoft.ApplicationInsights;
-using Microsoft.ApplicationInsights.Extensibility;
-using Microsoft.Azure.Functions.Extensions.DependencyInjection;
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Health.Logging.Telemetry;
-
-namespace Microsoft.Health.Fhir.Ingest.Service
-{
- public class Startup : FunctionsStartup
- {
- public override void Configure(IFunctionsHostBuilder builder)
- {
- EnsureArg.IsNotNull(builder, nameof(builder));
-
- var instrumentationKey = Environment.GetEnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY");
-
- if (instrumentationKey != null)
- {
- var configDescriptor = builder.Services.SingleOrDefault(tc => tc.ServiceType == typeof(TelemetryConfiguration));
- if (configDescriptor?.ImplementationFactory == null)
- {
- throw new Exception($"Unable to retrieve TelemetryConfiguration of type {typeof(TelemetryConfiguration)}");
- }
-
- var implFactory = configDescriptor.ImplementationFactory;
-
- builder.Services.Remove(configDescriptor);
- builder.Services.AddSingleton(provider =>
- {
- if (!(implFactory.Invoke(provider) is TelemetryConfiguration config))
- {
- throw new Exception("Unable to build TelemetryConfiguration");
- }
-
- config.TelemetryProcessorChainBuilder.Build();
-
- var telemetryClient = new TelemetryClient(config);
- return new IomtTelemetryLogger(telemetryClient);
- });
- }
- else
- {
- builder.Services.AddSingleton(sp =>
- {
- var config = new TelemetryConfiguration();
- var telemetryClient = new TelemetryClient(config);
- return new IomtTelemetryLogger(telemetryClient);
- });
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/func/Microsoft.Health.Fhir.Ingest.Host/host.json b/src/func/Microsoft.Health.Fhir.Ingest.Host/host.json
deleted file mode 100644
index a9bc519d..00000000
--- a/src/func/Microsoft.Health.Fhir.Ingest.Host/host.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "aggregator": {
- "batchSize": 5000,
- "flushTimeout": "00:01:00"
- },
- "logging": {
- "applicationInsights": {
- "enableDependencyTracking": true,
- "enablePerformanceCountersCollection": true,
- "samplingSettings": {
- "isEnabled": true,
- "maxTelemetryItemsPerSecond": 20
- }
- }
- },
- "extensions": {
- "eventHubs": {
- "batchCheckpointFrequency": 1,
- "eventProcessorOptions": {
- "maxBatchSize": 1024,
- "prefetchCount": 2048
- }
- }
- },
- "version": "2.0"
-}
\ No newline at end of file
diff --git a/src/func/Microsoft.Health.Fhir.Ingest.Host/packages.lock.json b/src/func/Microsoft.Health.Fhir.Ingest.Host/packages.lock.json
deleted file mode 100644
index 98ab972e..00000000
--- a/src/func/Microsoft.Health.Fhir.Ingest.Host/packages.lock.json
+++ /dev/null
@@ -1,2718 +0,0 @@
-{
- "version": 2,
- "dependencies": {
- "net6.0": {
- "Azure.Storage.Queues": {
- "type": "Direct",
- "requested": "[12.14.0, )",
- "resolved": "12.14.0",
- "contentHash": "Oi6grxE26z3nARhZrY3sWM562MB86biw0Fosuj5fBAl28vo0wP7k1o0Z7W265TdJXV9iXOu7B2k58OwXoEBMbw==",
- "dependencies": {
- "Azure.Storage.Common": "12.15.0",
- "System.Memory.Data": "1.0.2",
- "System.Text.Json": "4.7.2"
- }
- },
- "Ensure.That": {
- "type": "Direct",
- "requested": "[10.1.0, )",
- "resolved": "10.1.0",
- "contentHash": "rzTMSs0lQnu0WsesvTjs/zDzqiZXb9r5dv+wFQcPg/iIZqXb5BzwpIWEwi8Q3HA0TS4ytRcY129aSek6IzuOmA=="
- },
- "Microsoft.AspNetCore.Hosting": {
- "type": "Direct",
- "requested": "[2.2.7, )",
- "resolved": "2.2.7",
- "contentHash": "O0ZBE53Fa9bVGXykDzvgMFW0Pe1QyPPFg1pazN8l3RUFSWBsDJ9/iD1LHXgADA8+ZD3R/1zkvraPa9SZdievxQ==",
- "dependencies": {
- "Microsoft.AspNetCore.Hosting.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.Http": "2.2.0",
- "Microsoft.AspNetCore.Http.Extensions": "2.2.0",
- "Microsoft.Extensions.Configuration": "2.2.0",
- "Microsoft.Extensions.Configuration.EnvironmentVariables": "2.2.4",
- "Microsoft.Extensions.Configuration.FileExtensions": "2.2.0",
- "Microsoft.Extensions.DependencyInjection": "2.2.0",
- "Microsoft.Extensions.FileProviders.Physical": "2.2.0",
- "Microsoft.Extensions.Hosting.Abstractions": "2.2.0",
- "Microsoft.Extensions.Logging": "2.2.0",
- "Microsoft.Extensions.Options": "2.2.0",
- "System.Diagnostics.DiagnosticSource": "4.5.1",
- "System.Reflection.Metadata": "1.6.0"
- }
- },
- "Microsoft.Azure.EventHubs.Processor": {
- "type": "Direct",
- "requested": "[4.3.1, )",
- "resolved": "4.3.1",
- "contentHash": "VCQL9NErdiDdU574gNeF/Tzn5NvuG1EsIQeGIraCavVjq00rwbKeEqZY6ZBlD2SDX9ZTTsba9Sg2GxOCK0Vgpg==",
- "dependencies": {
- "Microsoft.Azure.EventHubs": "4.3.1",
- "Microsoft.Azure.KeyVault.Core": "3.0.3",
- "Microsoft.Azure.Storage.Blob": "11.1.7",
- "Newtonsoft.Json": "10.0.3"
- }
- },
- "Microsoft.Azure.WebJobs": {
- "type": "Direct",
- "requested": "[3.0.31, )",
- "resolved": "3.0.31",
- "contentHash": "Jn6E7OgT7LkwVB6lCpjXJcoQIvKrbJT+taVLA4CekEpa21pzZv6nQ2sYRSNzPz5ul3FAcYhmrCQgV7v2iopjgA==",
- "dependencies": {
- "Microsoft.Azure.WebJobs.Core": "3.0.31",
- "Microsoft.Extensions.Configuration": "2.1.1",
- "Microsoft.Extensions.Configuration.Abstractions": "2.1.1",
- "Microsoft.Extensions.Configuration.EnvironmentVariables": "2.1.0",
- "Microsoft.Extensions.Configuration.Json": "2.1.0",
- "Microsoft.Extensions.Hosting": "2.1.0",
- "Microsoft.Extensions.Logging": "2.1.1",
- "Microsoft.Extensions.Logging.Abstractions": "2.1.1",
- "Microsoft.Extensions.Logging.Configuration": "2.1.0",
- "Newtonsoft.Json": "11.0.2",
- "System.Memory.Data": "1.0.1",
- "System.Threading.Tasks.Dataflow": "4.8.0"
- }
- },
- "Microsoft.Azure.WebJobs.Extensions.EventHubs": {
- "type": "Direct",
- "requested": "[4.3.0, )",
- "resolved": "4.3.0",
- "contentHash": "JNgkywyIwYWzl2yBaqCGayy0M3JDkbD1uU4ACNtewUeu2H1hu9KPgTfbXvOYBKaMInV8DykKynpirpXu0pDMiA==",
- "dependencies": {
- "Microsoft.Azure.Amqp": "2.4.11",
- "Microsoft.Azure.EventHubs.Processor": "3.0.0",
- "Microsoft.Azure.WebJobs": "3.0.23"
- }
- },
- "Microsoft.Azure.WebJobs.Extensions.Http": {
- "type": "Direct",
- "requested": "[3.0.12, )",
- "resolved": "3.0.12",
- "contentHash": "MjkRW5Twk3Qgqaa/gjNrrdzN/AFw/6+eh7hMszO3nDoczgSQWWypqYOLedqmfPy8v0/QqK5f4vrcs8SQEj+TZg==",
- "dependencies": {
- "Microsoft.AspNet.WebApi.Client": "5.2.4",
- "Microsoft.AspNetCore.Http": "2.1.0",
- "Microsoft.AspNetCore.Mvc.Formatters.Json": "2.1.0",
- "Microsoft.AspNetCore.Mvc.WebApiCompatShim": "2.1.0",
- "Microsoft.AspNetCore.Routing": "2.1.0",
- "Microsoft.Azure.WebJobs": "3.0.25"
- }
- },
- "Microsoft.Azure.WebJobs.Extensions.Storage": {
- "type": "Direct",
- "requested": "[5.0.0, )",
- "resolved": "5.0.0",
- "contentHash": "nu/a8wnkP+dXY6obqRDPoNFcOTElwWQukuAyx5r6bnWi6ybauD2J15dS7sdMb1jHgHQ9LPxWJLLl6W9sYhua/w==",
- "dependencies": {
- "Microsoft.Azure.WebJobs.Extensions.Storage.Blobs": "5.0.0",
- "Microsoft.Azure.WebJobs.Extensions.Storage.Queues": "5.0.0"
- }
- },
- "Microsoft.Azure.WebJobs.Logging.ApplicationInsights": {
- "type": "Direct",
- "requested": "[3.0.27, )",
- "resolved": "3.0.27",
- "contentHash": "zk6LdV3Fs8ejRI9aZPZdIXS4XTsm/JJcK45MUyDwOmtDbQVEFdCAK5SNTRkPQKERK2ABua91wjoFan8D91tQwQ==",
- "dependencies": {
- "Microsoft.ApplicationInsights": "2.16.0",
- "Microsoft.ApplicationInsights.AspNetCore": "2.16.0",
- "Microsoft.ApplicationInsights.DependencyCollector": "2.16.0",
- "Microsoft.ApplicationInsights.PerfCounterCollector": "2.16.0",
- "Microsoft.ApplicationInsights.SnapshotCollector": "1.3.7.3",
- "Microsoft.ApplicationInsights.WindowsServer": "2.16.0",
- "Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel": "2.16.0",
- "Microsoft.AspNetCore.Http.Abstractions": "2.1.1",
- "Microsoft.AspNetCore.Http.Extensions": "2.1.1",
- "Microsoft.Azure.WebJobs": "3.0.27",
- "Microsoft.Extensions.Logging.Abstractions": "2.1.1",
- "System.Diagnostics.TraceSource": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Thread": "4.3.0"
- }
- },
- "Microsoft.Extensions.Configuration": {
- "type": "Direct",
- "requested": "[6.0.1, )",
- "resolved": "6.0.1",
- "contentHash": "BUyFU9t+HzlSE7ri4B+AQN2BgTgHv/uM82s5ZkgU1BApyzWzIl48nDsG5wR1t0pniNuuyTBzG3qCW8152/NtSw==",
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.AzureKeyVault": {
- "type": "Direct",
- "requested": "[3.1.24, )",
- "resolved": "3.1.24",
- "contentHash": "dAir8lfKn3Ukvis2sGddZ72bbuEQ24VusFELZg2JZDPTjBDyoVVocbxbe/39YAEHEq3TfCAIbHicCCKgHBBa2A==",
- "dependencies": {
- "Microsoft.Azure.KeyVault": "2.3.2",
- "Microsoft.Azure.Services.AppAuthentication": "1.0.3",
- "Microsoft.Extensions.Configuration": "3.1.24",
- "Microsoft.Extensions.Configuration.FileExtensions": "3.1.24"
- }
- },
- "Microsoft.Extensions.Configuration.Json": {
- "type": "Direct",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "GJGery6QytCzS/BxJ96klgG9in3uH26KcUBbiVG/coNDXCRq6LGVVlUT4vXq34KPuM+R2av+LeYdX9h4IZOCUg==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "6.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.Configuration.FileExtensions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
- "System.Text.Json": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.UserSecrets": {
- "type": "Direct",
- "requested": "[6.0.1, )",
- "resolved": "6.0.1",
- "contentHash": "Fy8yr4V6obi7ZxvKYI1i85jqtwMq8tqyxQVZpRSkgeA8enqy/KvBIMdcuNdznlxQMZa72mvbHqb7vbg4Pyx95w==",
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.Configuration.Json": "6.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Physical": "6.0.0"
- }
- },
- "Microsoft.Net.Compilers.Toolset": {
- "type": "Direct",
- "requested": "[4.2.0, )",
- "resolved": "4.2.0",
- "contentHash": "Hs7t4nRCp68XaWcGf3+SZ5Rud3Km6zQ8+jvR42tBohjVu2Nu2x2QhHVpEzQ56aZmGYEcZUztrTHLYyE0GYLpvg=="
- },
- "Microsoft.NET.Sdk.Functions": {
- "type": "Direct",
- "requested": "[4.1.1, )",
- "resolved": "4.1.1",
- "contentHash": "G+b+bHtta7P8KPItSWygbVwQhwamU/WWmBoiv3snf8ScVYai3PbC1JSW3H22X+askqxhiw/Tx0yZKdE5oKMhRQ==",
- "dependencies": {
- "Microsoft.Azure.Functions.Analyzers": "[1.0.0, 2.0.0)",
- "Microsoft.Azure.WebJobs": "[3.0.23, 3.1.0)",
- "Microsoft.Azure.WebJobs.Extensions": "3.0.6",
- "Microsoft.Azure.WebJobs.Extensions.Http": "[3.0.2, 3.1.0)",
- "Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator": "4.0.1",
- "Newtonsoft.Json": "11.0.2"
- }
- },
- "StyleCop.Analyzers": {
- "type": "Direct",
- "requested": "[1.1.118, )",
- "resolved": "1.1.118",
- "contentHash": "Onx6ovGSqXSK07n/0eM3ZusiNdB6cIlJdabQhWGgJp3Vooy9AaLS/tigeybOJAobqbtggTamoWndz72JscZBvw=="
- },
- "System.Drawing.Common": {
- "type": "Direct",
- "requested": "[4.7.2, )",
- "resolved": "4.7.2",
- "contentHash": "I2y4KBK3VCvU/WqE2xv7NjQ67maXHttkFSHYKgU2evrG9Yqh0oFjfORXt5hZTk+BVjdyFo2h0/YQZsca33BGmg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "3.1.4",
- "Microsoft.Win32.SystemEvents": "4.7.0"
- }
- },
- "System.Text.Encodings.Web": {
- "type": "Direct",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "Vg8eB5Tawm1IFqj4TVK1czJX89rhFxJo9ELqc/Eiq0eXy13RK00eubyU6TJE6y+GQXjyV5gSfiewDUZjQgSE0w==",
- "dependencies": {
- "System.Runtime.CompilerServices.Unsafe": "6.0.0"
- }
- },
- "System.Text.RegularExpressions": {
- "type": "Direct",
- "requested": "[4.3.1, )",
- "resolved": "4.3.1",
- "contentHash": "N0kNRrWe4+nXOWlpLT4LAY5brb8caNFlUuIRpraCVMDLYutKkol1aV079rQjLuSxKMJT2SpBQsYX9xbcTMmzwg==",
- "dependencies": {
- "System.Runtime": "4.3.1"
- }
- },
- "Azure.Core.Amqp": {
- "type": "Transitive",
- "resolved": "1.3.0",
- "contentHash": "6GG4gyFkAuHtpBVkvj0wE5+lCM+ttsZlIWAipBkI+jlCUlTgrTiNUROBFnb8xuKoymVDw9Tf1W8RoKqgbd71lg==",
- "dependencies": {
- "Microsoft.Azure.Amqp": "2.6.1",
- "System.Memory": "4.5.4",
- "System.Memory.Data": "1.0.2"
- }
- },
- "Azure.Storage.Common": {
- "type": "Transitive",
- "resolved": "12.15.0",
- "contentHash": "/SAgn9hhjfHO0RPWp0ilGLr3aMPz+rrz6iRgLKTb1708pI78WLtsQ7/kGooUbCU2flSnk/egmJ0Qj9rFVks/nA==",
- "dependencies": {
- "Azure.Core": "1.31.0",
- "System.IO.Hashing": "6.0.0"
- }
- },
- "Firely.Fhir.Packages": {
- "type": "Transitive",
- "resolved": "3.0.2",
- "contentHash": "lPUFQ8qz84atZbDYQmgMqnm8nvjkntnx1QZuMUt793i8QZYOLbglIRhD6HguCaDiWyjUA2fwuu8N7ZcAkd5YPw==",
- "dependencies": {
- "Hl7.Fhir.Serialization": "4.2.1",
- "Hl7.Fhir.Support": "4.2.1",
- "Newtonsoft.Json": "13.0.1",
- "SemanticVersioning": "1.2.0",
- "SharpZipLib": "1.3.3",
- "System.Memory": "4.5.4",
- "System.Net.Http": "4.3.4",
- "System.Threading.Tasks.Extensions": "4.5.2"
- }
- },
- "Hl7.Fhir.ElementModel": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "VUXBP+W0/1tBpOzo7KeW7y1CnVxaBjLbruX7QORrlImUXJwWpKU/yd3rkpkyd6RW6V06/cg46/afbFYnH+v0DA==",
- "dependencies": {
- "Hl7.Fhir.Support": "4.3.0"
- }
- },
- "Hl7.Fhir.Serialization": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "uoCk3ABMIeg9O6ArBTSnhYPbwrhjQ09v+G2PcWIDCMvkA9exf+JQVsZWLJ9JYRRGI/xPqrJs3fsrlWRpRRQFAg==",
- "dependencies": {
- "Hl7.Fhir.ElementModel": "4.3.0",
- "Hl7.Fhir.Support": "4.3.0",
- "Newtonsoft.Json": "13.0.1"
- }
- },
- "Hl7.Fhir.Support": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "rJx7g5rH0hngu/9C7JjWm/tb0TDkJa5xYYgI7A9USKg4JAGWE2aQIR/MSDaEh9U1wrfynyC1bwZ0B9Krjc0vLQ==",
- "dependencies": {
- "System.Reflection.Emit.Lightweight": "4.7.0"
- }
- },
- "Hl7.Fhir.Support.Poco": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "24NYNe1dn2Dp8SUG8RXlkycKwMprwjWe8DFD/zbp77hsiQ7RbOHKX4x+HjkvLTJKnI864szUsg+q3lVn+/jHnw==",
- "dependencies": {
- "Firely.Fhir.Packages": "3.0.2",
- "Hl7.Fhir.ElementModel": "4.3.0",
- "Hl7.Fhir.Serialization": "4.3.0",
- "Hl7.Fhir.Support": "4.3.0",
- "Hl7.FhirPath": "4.3.0",
- "System.ComponentModel.Annotations": "5.0.0"
- }
- },
- "Hl7.FhirPath": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "V1AZecGUE7U/W0swFly8oQJe8t+wEu6ohXYC8nilILYUN7HYkoWLihMp6VEnhb5mJlROAB8F29051KxbIcQ3fA==",
- "dependencies": {
- "Hl7.Fhir.ElementModel": "4.3.0",
- "Hl7.Fhir.Support": "4.3.0"
- }
- },
- "JmesPath.Net.Parser": {
- "type": "Transitive",
- "resolved": "1.0.205",
- "contentHash": "ghZ/GtO0xm+ieE2IxOdlwI5u16qBf8qhFqbeVOXQ56wtjweuP0oC9UAYd0gjRrrrcLAvQ9eV79mlHLy+6ZiQ9w==",
- "dependencies": {
- "NETStandard.Library": "1.6.1"
- }
- },
- "Microsoft.ApplicationInsights.AspNetCore": {
- "type": "Transitive",
- "resolved": "2.16.0",
- "contentHash": "ih6Gj80QRZqBq7NH4oA48ZPp/9xASrjG3JVHasnnPAeypGe2H8mwgowzy1sP2OZb892oa9LetYh2MVeRvt9Jwg==",
- "dependencies": {
- "Microsoft.ApplicationInsights": "2.16.0",
- "Microsoft.ApplicationInsights.DependencyCollector": "2.16.0",
- "Microsoft.ApplicationInsights.EventCounterCollector": "2.16.0",
- "Microsoft.ApplicationInsights.PerfCounterCollector": "2.16.0",
- "Microsoft.ApplicationInsights.WindowsServer": "2.16.0",
- "Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel": "2.16.0",
- "Microsoft.AspNetCore.Hosting": "2.1.1",
- "Microsoft.Extensions.Configuration.Json": "2.1.0",
- "Microsoft.Extensions.Logging.ApplicationInsights": "2.16.0",
- "System.Diagnostics.DiagnosticSource": "5.0.0",
- "System.Net.NameResolution": "4.3.0"
- }
- },
- "Microsoft.ApplicationInsights.DependencyCollector": {
- "type": "Transitive",
- "resolved": "2.16.0",
- "contentHash": "zV89gAi8DcEAnmEIrJjeKkJUbUMbIChq2bQmc5+fQ4NSkv5LSjLOCfhWxLaaXdPM7jIzT4mwXUp42/zocgZ8hQ==",
- "dependencies": {
- "Microsoft.ApplicationInsights": "2.16.0",
- "System.Diagnostics.DiagnosticSource": "5.0.0",
- "System.Diagnostics.StackTrace": "4.3.0"
- }
- },
- "Microsoft.ApplicationInsights.EventCounterCollector": {
- "type": "Transitive",
- "resolved": "2.16.0",
- "contentHash": "p4Q15h9Um8NaqrxC6JZe+FQRcDxIi5hMO7LFkhDL2i/zGb1kPnLXe3T9XcDl+4uhfs9/DXZrhX4kybRRRUT94Q==",
- "dependencies": {
- "Microsoft.ApplicationInsights": "2.16.0"
- }
- },
- "Microsoft.ApplicationInsights.PerfCounterCollector": {
- "type": "Transitive",
- "resolved": "2.16.0",
- "contentHash": "wJv3VO7lGTW0uLjtsuHulOFYazJD8/CLXe9Q9pbG0VQnh807mJAlF5QNhLIKqN8h7rKuYAIS800uPkl/4w70fg==",
- "dependencies": {
- "Microsoft.ApplicationInsights": "2.16.0",
- "Microsoft.Extensions.Caching.Memory": "1.0.0",
- "System.Diagnostics.PerformanceCounter": "4.7.0"
- }
- },
- "Microsoft.ApplicationInsights.SnapshotCollector": {
- "type": "Transitive",
- "resolved": "1.3.7.3",
- "contentHash": "ElslWaTtmVX8wualBLm4r5lKrnhGAmkunWfDRIGUkcOwcnqVC5Y4/jXIzOvYFtBH6vQQPtan92MosedHjcYkaA==",
- "dependencies": {
- "Microsoft.ApplicationInsights.AspNetCore": "2.2.1"
- }
- },
- "Microsoft.ApplicationInsights.WindowsServer": {
- "type": "Transitive",
- "resolved": "2.16.0",
- "contentHash": "y776gI50TnU3MErP4gGlQND6fhdjw81peDi9rupO+4mjTLK5EqpZGq4tzJk9+WazTwT98U1VrbZ//mMJStgNmA==",
- "dependencies": {
- "Microsoft.ApplicationInsights": "2.16.0",
- "Microsoft.ApplicationInsights.DependencyCollector": "2.16.0",
- "Microsoft.ApplicationInsights.PerfCounterCollector": "2.16.0",
- "Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel": "2.16.0",
- "System.Diagnostics.DiagnosticSource": "5.0.0",
- "System.Runtime.Serialization.Json": "4.3.0",
- "System.Runtime.Serialization.Primitives": "4.3.0"
- }
- },
- "Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel": {
- "type": "Transitive",
- "resolved": "2.16.0",
- "contentHash": "s1uDDqQWQ7aAV/Zure5bpuyeOo4k8+ceRRwiGttuj54OlqumUgWR1LJcyEoiUYiI2iVNLrDeP4GQv7snr3XpeA==",
- "dependencies": {
- "Microsoft.ApplicationInsights": "2.16.0",
- "System.IO.FileSystem.AccessControl": "4.7.0"
- }
- },
- "Microsoft.AspNet.WebApi.Client": {
- "type": "Transitive",
- "resolved": "5.2.4",
- "contentHash": "OdBVC2bQWkf9qDd7Mt07ev4SwIdu6VmLBMTWC0D5cOP/HWSXyv/77otwtXVrAo42duNjvXOjzjP5oOI9m1+DTQ==",
- "dependencies": {
- "Newtonsoft.Json": "10.0.1",
- "Newtonsoft.Json.Bson": "1.0.1"
- }
- },
- "Microsoft.AspNetCore.Authentication.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "VloMLDJMf3n/9ic5lCBOa42IBYJgyB1JhzLsL68Zqg+2bEPWfGBj/xCJy/LrKTArN0coOcZp3wyVTZlx0y9pHQ==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
- "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
- "Microsoft.Extensions.Options": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Authentication.Core": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "XlVJzJ5wPOYW+Y0J6Q/LVTEyfS4ssLXmt60T0SPP+D8abVhBTl+cgw2gDHlyKYIkcJg7btMVh383NDkMVqD/fg==",
- "dependencies": {
- "Microsoft.AspNetCore.Authentication.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.Http": "2.2.0",
- "Microsoft.AspNetCore.Http.Extensions": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Authorization": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "/L0W8H3jMYWyaeA9gBJqS/tSWBegP9aaTM0mjRhxTttBY9z4RVDRYJ2CwPAmAXIuPr3r1sOw+CS8jFVRGHRezQ==",
- "dependencies": {
- "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
- "Microsoft.Extensions.Options": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Authorization.Policy": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "aJCo6niDRKuNg2uS2WMEmhJTooQUGARhV2ENQ2tO5443zVHUo19MSgrgGo9FIrfD+4yKPF8Q+FF33WkWfPbyKw==",
- "dependencies": {
- "Microsoft.AspNetCore.Authentication.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.Authorization": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Hosting.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "ubycklv+ZY7Kutdwuy1W4upWcZ6VFR8WUXU7l7B2+mvbDBBPAcfpi+E+Y5GFe+Q157YfA3C49D2GCjAZc7Mobw==",
- "dependencies": {
- "Microsoft.AspNetCore.Hosting.Server.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
- "Microsoft.Extensions.Hosting.Abstractions": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Hosting.Server.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "1PMijw8RMtuQF60SsD/JlKtVfvh4NORAhF4wjysdABhlhTrYmtgssqyncR0Stq5vqtjplZcj6kbT4LRTglt9IQ==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Features": "2.2.0",
- "Microsoft.Extensions.Configuration.Abstractions": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Http": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "YogBSMotWPAS/X5967pZ+yyWPQkThxhmzAwyCHCSSldzYBkW5W5d6oPfBaPqQOnSHYTpSOSOkpZoAce0vwb6+A==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.WebUtilities": "2.2.0",
- "Microsoft.Extensions.ObjectPool": "2.2.0",
- "Microsoft.Extensions.Options": "2.2.0",
- "Microsoft.Net.Http.Headers": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Http.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "Nxs7Z1q3f1STfLYKJSVXCs1iBl+Ya6E8o4Oy1bCxJ/rNI44E/0f6tbsrVqAWfB7jlnJfyaAtIalBVxPKUPQb4Q==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Features": "2.2.0",
- "System.Text.Encodings.Web": "4.5.0"
- }
- },
- "Microsoft.AspNetCore.Http.Extensions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "2DgZ9rWrJtuR7RYiew01nGRzuQBDaGHGmK56Rk54vsLLsCdzuFUPqbDTJCS1qJQWTbmbIQ9wGIOjpxA1t0l7/w==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "2.2.0",
- "Microsoft.Net.Http.Headers": "2.2.0",
- "System.Buffers": "4.5.0"
- }
- },
- "Microsoft.AspNetCore.Http.Features": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "ziFz5zH8f33En4dX81LW84I6XrYXKf9jg6aM39cM+LffN9KJahViKZ61dGMSO2gd3e+qe5yBRwsesvyqlZaSMg==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.JsonPatch": {
- "type": "Transitive",
- "resolved": "2.1.0",
- "contentHash": "JE5LRurYn0rglbY/Nj3sB1a+yGPacyYHsuLRgvZtmjLG73R0zEfSIjGmzwtIym0HDLX0RIym8q+BLH4w1nWdog==",
- "dependencies": {
- "Microsoft.CSharp": "4.5.0",
- "Newtonsoft.Json": "11.0.2"
- }
- },
- "Microsoft.AspNetCore.Mvc.Formatters.Json": {
- "type": "Transitive",
- "resolved": "2.1.0",
- "contentHash": "Xkbx6LWehUL44rx0gcry+qY013m5LbAjqWfdeisdiSPx2bU/q4EdteRY+zDmO8vT3jKbWcAuvTVUf6AcPPQpTQ==",
- "dependencies": {
- "Microsoft.AspNetCore.JsonPatch": "2.1.0",
- "Microsoft.AspNetCore.Mvc.Core": "2.1.0"
- }
- },
- "Microsoft.AspNetCore.Mvc.WebApiCompatShim": {
- "type": "Transitive",
- "resolved": "2.1.0",
- "contentHash": "pYsNGveHyMCHQ+xpUIsTHtFFv7Xm+q2pmL3UmL6QujO5ICu/bcnSlwu9FEQhXYQ+cDxfO2VShdM/OrkWzNFGFw==",
- "dependencies": {
- "Microsoft.AspNet.WebApi.Client": "5.2.4",
- "Microsoft.AspNetCore.Mvc.Core": "2.1.0",
- "Microsoft.AspNetCore.Mvc.Formatters.Json": "2.1.0",
- "Microsoft.AspNetCore.WebUtilities": "2.1.0"
- }
- },
- "Microsoft.AspNetCore.ResponseCaching.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "CIHWEKrHzZfFp7t57UXsueiSA/raku56TgRYauV/W1+KAQq6vevz60zjEKaazt3BI76zwMz3B4jGWnCwd8kwQw==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Routing": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "jAhDBy0wryOnMhhZTtT9z63gJbvCzFuLm8yC6pHzuVu9ZD1dzg0ltxIwT4cfwuNkIL/TixdKsm3vpVOpG8euWQ==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Extensions": "2.2.0",
- "Microsoft.AspNetCore.Routing.Abstractions": "2.2.0",
- "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
- "Microsoft.Extensions.ObjectPool": "2.2.0",
- "Microsoft.Extensions.Options": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Routing.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "lRRaPN7jDlUCVCp9i0W+PB0trFaKB0bgMJD7hEJS9Uo4R9MXaMC8X2tJhPLmeVE3SGDdYI4QNKdVmhNvMJGgPQ==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Abstractions": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.WebUtilities": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "9ErxAAKaDzxXASB/b5uLEkLgUWv1QbeVxyJYEHQwMaxXOeFFVkQxiq8RyfVcifLU7NR0QY0p3acqx4ZpYfhHDg==",
- "dependencies": {
- "Microsoft.Net.Http.Headers": "2.2.0",
- "System.Text.Encodings.Web": "4.5.0"
- }
- },
- "Microsoft.Azure.Amqp": {
- "type": "Transitive",
- "resolved": "2.6.2",
- "contentHash": "6hQqWRiHRd9J6pGBlzQM9LBOWaO8xIsRVYs3olrDGqOkK7v9mgwz9rmrv+49FIbLEOGgkP9IKLnXdsA4Y8IIYw=="
- },
- "Microsoft.Azure.Functions.Analyzers": {
- "type": "Transitive",
- "resolved": "1.0.0",
- "contentHash": "8nQq/IlK9BMBchRw3lfChSKaFNjMUOxXcPcDC3rkMd5PeWRm54nz2Owr6fZjPHMYJ36XX/9PGOfjn4jyiRojjw=="
- },
- "Microsoft.Azure.KeyVault": {
- "type": "Transitive",
- "resolved": "2.3.2",
- "contentHash": "A82ESUdfLz2wMhYuPxrwf/fA7JVt3IARgeMCG3TsaLtxUxa9RBKX3f0zdnKmvBvJ/u1/5g03OLR26GPekqY5HQ==",
- "dependencies": {
- "Microsoft.Azure.KeyVault.WebKey": "2.0.7",
- "Microsoft.Rest.ClientRuntime": "[2.3.8, 3.0.0)",
- "Microsoft.Rest.ClientRuntime.Azure": "[3.3.7, 4.0.0)",
- "NETStandard.Library": "1.6.1",
- "Newtonsoft.Json": "9.0.1",
- "System.Net.Http": "4.3.0"
- }
- },
- "Microsoft.Azure.KeyVault.Core": {
- "type": "Transitive",
- "resolved": "3.0.3",
- "contentHash": "amP4gG7tMficBHRuTaCJpdiPGZyfrLHqYth0D4Yp3lu7Z7XQfEau0/BWNSuvpdZJKWW8M/wmFyI07vTA6EF88A==",
- "dependencies": {
- "NETStandard.Library": "1.6.1"
- }
- },
- "Microsoft.Azure.KeyVault.WebKey": {
- "type": "Transitive",
- "resolved": "2.0.7",
- "contentHash": "MVSYao62R9rwl9KF+IsJm+XBLupJj1ma2lfwNeFlSWziXGAopnYK+YkDWqABOqNIV9kpza/MvNBxITzhlJIyIw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.0.2",
- "NETStandard.Library": "1.6.1",
- "Newtonsoft.Json": "9.0.1",
- "System.Collections": "4.0.11",
- "System.Collections.Concurrent": "4.0.12",
- "System.Linq": "4.1.0",
- "System.Runtime": "4.1.0",
- "System.Security.Cryptography.Algorithms": "4.2.0"
- }
- },
- "Microsoft.Azure.Services.AppAuthentication": {
- "type": "Transitive",
- "resolved": "1.0.3",
- "contentHash": "ywpQaK1klu1IoX4VUf+TBmU4kR71aWNI6O5rEIJU8z28L2xhJhnIm7k2Nf1Zu/PygeuOtt5g0QPCk5+lLltbeQ==",
- "dependencies": {
- "Microsoft.IdentityModel.Clients.ActiveDirectory": "3.14.2",
- "NETStandard.Library": "1.6.1",
- "System.Diagnostics.Process": "4.3.0"
- }
- },
- "Microsoft.Azure.Storage.Blob": {
- "type": "Transitive",
- "resolved": "11.1.7",
- "contentHash": "QanFEujuKCJiD6KopY884jLx7LPexuwbWIsg1UTIdJBw6q7crqHoSCFUob2sSDpRTL7eyRpgMh/103AIUk+5Lg==",
- "dependencies": {
- "Microsoft.Azure.Storage.Common": "11.1.7",
- "NETStandard.Library": "2.0.1"
- }
- },
- "Microsoft.Azure.Storage.Common": {
- "type": "Transitive",
- "resolved": "11.1.7",
- "contentHash": "qonfDPyO41vUb8PqHmzoD9yJuhB2K3afPHCe6eNv3kl/PKtddjR58BV++8zLE16K/1PMRInXiU+wJ8EJ+DnG7A==",
- "dependencies": {
- "Microsoft.Azure.KeyVault.Core": "2.0.4",
- "NETStandard.Library": "2.0.1",
- "Newtonsoft.Json": "10.0.2"
- }
- },
- "Microsoft.Azure.WebJobs.Core": {
- "type": "Transitive",
- "resolved": "3.0.31",
- "contentHash": "iStV0MQ9env8R2F+8cbaynMK4TDkU6bpPVLdOzIs83iriHYMF+uWF6WZWI8ZJahWR37puQWc86u1YCsoIZEocA==",
- "dependencies": {
- "System.ComponentModel.Annotations": "4.4.0",
- "System.Diagnostics.TraceSource": "4.3.0"
- }
- },
- "Microsoft.Azure.WebJobs.Extensions": {
- "type": "Transitive",
- "resolved": "3.0.6",
- "contentHash": "y7RgGsJFHhlD/2SIoQpgyjM1By9sbBpY9YaQCS183z743rErqBGAO3BrJ01z52IIveP2NW/7qLD1zm/bFI2MPg==",
- "dependencies": {
- "Microsoft.Azure.WebJobs": "3.0.14",
- "Microsoft.Azure.WebJobs.Host.Storage": "3.0.14",
- "ncrontab.signed": "3.3.0"
- }
- },
- "Microsoft.Azure.WebJobs.Extensions.Storage.Blobs": {
- "type": "Transitive",
- "resolved": "5.0.0",
- "contentHash": "7zfLwrm2xqx2+NaYpFk3Jp4x56Rr/RHFyawaDbdlGmfK+8UDoCZMkwk65j0eg+bVtxNaorOojK5PfX39kUo9dQ==",
- "dependencies": {
- "Azure.Storage.Blobs": "12.10.0",
- "Azure.Storage.Queues": "12.8.0",
- "Microsoft.Azure.WebJobs": "3.0.30",
- "Microsoft.Extensions.Azure": "1.1.1"
- }
- },
- "Microsoft.Azure.WebJobs.Extensions.Storage.Queues": {
- "type": "Transitive",
- "resolved": "5.0.0",
- "contentHash": "TvpZFiQ13W926FxpZxhbP2v1yJyy3tO1chBcJhvJmGE45Rox3sOb9ED36SJVMGEUVS2N/CiJuibrcb2HfPsKZg==",
- "dependencies": {
- "Azure.Storage.Queues": "12.8.0",
- "Microsoft.Azure.WebJobs": "3.0.30",
- "Microsoft.Extensions.Azure": "1.1.1"
- }
- },
- "Microsoft.Azure.WebJobs.Host.Storage": {
- "type": "Transitive",
- "resolved": "3.0.14",
- "contentHash": "1M9VzF4/skqaFezaNI6QUo5ftI1ifGAc6TQfbDdi94lUkUcnSnlBq/uBzx1P73SQgY9WzIE0KZn2+DOx6CL9Sg==",
- "dependencies": {
- "Microsoft.Azure.WebJobs": "3.0.14",
- "WindowsAzure.Storage": "9.3.1"
- }
- },
- "Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator": {
- "type": "Transitive",
- "resolved": "4.0.1",
- "contentHash": "o1E0hetLv8Ix0teA1hGH9D136RGSs24Njm5+a4FKzJHLlxfclvmOxmcg87vcr6LIszKzenNKd1oJGnOwg2WMnw==",
- "dependencies": {
- "System.Runtime.Loader": "4.3.0"
- }
- },
- "Microsoft.CSharp": {
- "type": "Transitive",
- "resolved": "4.5.0",
- "contentHash": "kaj6Wb4qoMuH3HySFJhxwQfe8R/sJsNJnANrvv8WdFPMoNbKY5htfNscv+LHCu5ipz+49m2e+WQXpLXr9XYemQ=="
- },
- "Microsoft.DotNet.PlatformAbstractions": {
- "type": "Transitive",
- "resolved": "2.1.0",
- "contentHash": "9KPDwvb/hLEVXYruVHVZ8BkebC8j17DmPb56LnqRF74HqSPLjCkrlFUjOtFpQPA2DeADBRTI/e69aCfRBfrhxw==",
- "dependencies": {
- "System.AppContext": "4.1.0",
- "System.Collections": "4.0.11",
- "System.IO": "4.1.0",
- "System.IO.FileSystem": "4.0.1",
- "System.Reflection.TypeExtensions": "4.1.0",
- "System.Runtime.Extensions": "4.1.0",
- "System.Runtime.InteropServices": "4.1.0",
- "System.Runtime.InteropServices.RuntimeInformation": "4.0.0"
- }
- },
- "Microsoft.Extensions.Azure": {
- "type": "Transitive",
- "resolved": "1.1.1",
- "contentHash": "3BruEhX5qrQ7wSX/2qw6rQJNBuXgXg3gHZyN/64eVpZRPjkgE4+OhrRIpWbNqw+XPg9pGzzjfwdri9v4eOdtsw==",
- "dependencies": {
- "Azure.Core": "1.19.0",
- "Azure.Identity": "1.4.0",
- "Microsoft.Extensions.Configuration.Abstractions": "2.1.0",
- "Microsoft.Extensions.Configuration.Binder": "2.1.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0",
- "Microsoft.Extensions.Logging.Abstractions": "2.1.0",
- "Microsoft.Extensions.Options": "2.1.0"
- }
- },
- "Microsoft.Extensions.Caching.Abstractions": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "bcz5sSFJbganH0+YrfvIjJDIcKNW7TL07C4d1eTmXy/wOt52iz4LVogJb6pazs7W0+74j0YpXFErvp++Aq5Bsw==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.CommandLine": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "3nL1qCkZ1Oxx14ZTzgo4MmlO7tso7F+TtMZAY2jUAtTLyAcDp+EDjk3RqafoKiNaePyPvvlleEcBxh3b2Hzl1g==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "6.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.EnvironmentVariables": {
- "type": "Transitive",
- "resolved": "6.0.1",
- "contentHash": "pnyXV1LFOsYjGveuC07xp0YHIyGq7jRq5Ncb5zrrIieMLWVwgMyYxcOH0jTnBedDT4Gh1QinSqsjqzcieHk1og==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "6.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.FileExtensions": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "V4Dth2cYMZpw3HhGw9XUDIijpI6gN+22LDt0AhufIgOppCUfpWX4483OmN+dFXRJkJLc8Tv0Q8QK+1ingT2+KQ==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "6.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Physical": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.DependencyInjection.Abstractions": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg=="
- },
- "Microsoft.Extensions.DependencyModel": {
- "type": "Transitive",
- "resolved": "2.1.0",
- "contentHash": "nS2XKqi+1A1umnYNLX2Fbm/XnzCxs5i+zXVJ3VC6r9t2z0NZr9FLnJN4VQpKigdcWH/iFTbMuX6M6WQJcTjVIg==",
- "dependencies": {
- "Microsoft.DotNet.PlatformAbstractions": "2.1.0",
- "Newtonsoft.Json": "9.0.1",
- "System.Diagnostics.Debug": "4.0.11",
- "System.Dynamic.Runtime": "4.0.11",
- "System.Linq": "4.1.0"
- }
- },
- "Microsoft.Extensions.FileProviders.Abstractions": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "0pd4/fho0gC12rQswaGQxbU34jOS1TPS8lZPpkFCH68ppQjHNHYle9iRuHeev1LhrJ94YPvzcRd8UmIuFk23Qw==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.FileProviders.Physical": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "QvkL7l0nM8udt3gfyu0Vw8bbCXblxaKOl7c2oBfgGy4LCURRaL9XWZX1FWJrQc43oMokVneVxH38iz+bY1sbhg==",
- "dependencies": {
- "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileSystemGlobbing": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.FileSystemGlobbing": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "ip8jnL1aPiaPeKINCqaTEbvBFDmVx9dXQEBZ2HOBRXPD1eabGNqP/bKlsIcp7U2lGxiXd5xIhoFcmY8nM4Hdiw=="
- },
- "Microsoft.Extensions.Hosting.Abstractions": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "GcT5l2CYXL6Sa27KCSh0TixsRfADUgth+ojQSD5EkzisZxmGFh7CwzkcYuGwvmXLjr27uWRNrJ2vuuEjMhU05Q==",
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0"
- }
- },
- "Microsoft.Extensions.Logging": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "System.Diagnostics.DiagnosticSource": "6.0.0"
- }
- },
- "Microsoft.Extensions.Logging.ApplicationInsights": {
- "type": "Transitive",
- "resolved": "2.16.0",
- "contentHash": "V5tdtmoefDmU99k44E4ewFiUFwC8Bx7I6zSnKdMUIfd3S3nZAf+CnLrCPEWHlrlL+VbWQg9QUbFpxLlQtWpatQ==",
- "dependencies": {
- "Microsoft.ApplicationInsights": "2.16.0",
- "Microsoft.Extensions.Logging": "2.1.0"
- }
- },
- "Microsoft.Extensions.Logging.Configuration": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "ZDskjagmBAbv+K8rYW9VhjPplhbOE63xUD0DiuydZJwt15dRyoqicYklLd86zzeintUc7AptDkHn+YhhYkYo8A==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "6.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.Configuration.Binder": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "Microsoft.Extensions.Options.ConfigurationExtensions": "6.0.0"
- }
- },
- "Microsoft.Extensions.Logging.Console": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "gsqKzOEdsvq28QiXFxagmn1oRB9GeI5GgYCkoybZtQA0IUb7QPwf1WmN3AwJeNIsadTvIFQCiVK0OVIgKfOBGg==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging.Configuration": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "System.Text.Json": "6.0.0"
- }
- },
- "Microsoft.Extensions.Logging.Debug": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "M9g/JixseSZATJE9tcMn9uzoD4+DbSglivFqVx8YkRJ7VVPmnvCEbOZ0AAaxsL1EKyI4cz07DXOOJExxNsUOHw==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0"
- }
- },
- "Microsoft.Extensions.Logging.EventLog": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "rlo0RxlMd0WtLG3CHI0qOTp6fFn7MvQjlrCjucA31RqmiMFCZkF8CHNbe8O7tbBIyyoLGWB1he9CbaA5iyHthg==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "System.Diagnostics.EventLog": "6.0.0"
- }
- },
- "Microsoft.Extensions.Logging.EventSource": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "BeDyyqt7nkm/nr+Gdk+L8n1tUT/u33VkbXAOesgYSNsxDM9hJ1NOBGoZfj9rCbeD2+9myElI6JOVVFmnzgeWQA==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0",
- "System.Runtime.CompilerServices.Unsafe": "6.0.0",
- "System.Text.Json": "6.0.0"
- }
- },
- "Microsoft.Extensions.ObjectPool": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "gA8H7uQOnM5gb+L0uTNjViHYr+hRDqCdfugheGo/MxQnuHzmhhzCBTIPm19qL1z1Xe0NEMabfcOBGv9QghlZ8g=="
- },
- "Microsoft.Extensions.Options.ConfigurationExtensions": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "bXWINbTn0vC0FYc9GaQTISbxhQLAMrvtbuvD9N6JelEaIS/Pr62wUCinrq5bf1WRBGczt1v4wDhxFtVFNcMdUQ==",
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.Configuration.Binder": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.Primitives": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==",
- "dependencies": {
- "System.Runtime.CompilerServices.Unsafe": "6.0.0"
- }
- },
- "Microsoft.Health.Client": {
- "type": "Transitive",
- "resolved": "6.2.135",
- "contentHash": "wPzwRknOn0+CUCJbX9YEaseKlsaq8pQliQPuydN4p8BEHygwGxZU4Xr9RgWiRTCzPiBm7LyUlZv6jYIe/oYKhQ==",
- "dependencies": {
- "Azure.Identity": "1.10.0",
- "Ensure.That": "10.1.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.Configuration.Binder": "6.0.0",
- "Microsoft.Extensions.Http": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "Microsoft.Extensions.Options.ConfigurationExtensions": "6.0.0",
- "Microsoft.Health.Extensions.DependencyInjection": "6.2.135",
- "Microsoft.IdentityModel.JsonWebTokens": "6.32.1",
- "Microsoft.IdentityModel.Protocols.OpenIdConnect": "6.32.1",
- "Microsoft.IdentityModel.Tokens": "6.32.1"
- }
- },
- "Microsoft.Identity.Client.Extensions.Msal": {
- "type": "Transitive",
- "resolved": "2.31.0",
- "contentHash": "IhGSqN0szneKC5Qk3/okJQJbDpQfLW/+mvslhzJPox4t2UuIkA2ZHe4w/z62ASye46G9sQWF9qqLXTgNacE2xQ==",
- "dependencies": {
- "Microsoft.Identity.Client": "4.54.1",
- "System.IO.FileSystem.AccessControl": "5.0.0",
- "System.Security.Cryptography.ProtectedData": "4.5.0"
- }
- },
- "Microsoft.IdentityModel.Abstractions": {
- "type": "Transitive",
- "resolved": "6.32.1",
- "contentHash": "S44xfpWeoPOQl2YHdp1TB0iYMXF0QHvHHFHsLere9j/0VL5/sTimy7KYjNI+46GXwOjRFvdtt+vIb36UjubEaA=="
- },
- "Microsoft.IdentityModel.Clients.ActiveDirectory": {
- "type": "Transitive",
- "resolved": "3.14.2",
- "contentHash": "TNsJJMiRnkeby1ovThVoV9yFsPWjAdluwOA+Nf0LtSsBVVrKQv8Qp4kYOgyNwMVj+pDwbhXISySk+4HyHVWNZQ==",
- "dependencies": {
- "NETStandard.Library": "1.6.0",
- "System.Runtime.Serialization.Json": "4.0.2",
- "System.Runtime.Serialization.Primitives": "4.1.1"
- }
- },
- "Microsoft.IdentityModel.JsonWebTokens": {
- "type": "Transitive",
- "resolved": "6.32.1",
- "contentHash": "mfEKYEyemkzkLfjxyN5/d1owLpE8JArslFNeDMlNMX75p+U9E67rg5MGzOXHhrOICfDS+OKV2ChJmPPZ9o4HIA==",
- "dependencies": {
- "Microsoft.IdentityModel.Tokens": "6.32.1",
- "System.Text.Encoding": "4.3.0",
- "System.Text.Encodings.Web": "4.7.2",
- "System.Text.Json": "4.7.2"
- }
- },
- "Microsoft.IdentityModel.Logging": {
- "type": "Transitive",
- "resolved": "6.32.1",
- "contentHash": "g+VienLv1RjOfnxsDid3f6g5MTCRv/vDl3mofabc6m/uDzJpoAlXymo2kqpSAWMrGbqCQI01SvYDxHjmoo3h+Q==",
- "dependencies": {
- "Microsoft.IdentityModel.Abstractions": "6.32.1"
- }
- },
- "Microsoft.IdentityModel.Protocols": {
- "type": "Transitive",
- "resolved": "6.32.1",
- "contentHash": "5zRyffBKOVw2y6McX7jSXmt8GUkdoKxkR5564C49xlDQEXUzh4P1IAL0G53b1BhfSzai7In93pnidyAjiVMQUQ==",
- "dependencies": {
- "Microsoft.IdentityModel.Logging": "6.32.1",
- "Microsoft.IdentityModel.Tokens": "6.32.1"
- }
- },
- "Microsoft.IdentityModel.Protocols.OpenIdConnect": {
- "type": "Transitive",
- "resolved": "6.32.1",
- "contentHash": "/ZDC5DijpAheHVG6+X6Se68kuaMxD2Rkh8wW+yc26LStICQoLFwbYjnUTsi2Cw1h5TkD5oW1HYQkHf9SRkWBNw==",
- "dependencies": {
- "Microsoft.IdentityModel.Protocols": "6.32.1",
- "System.IdentityModel.Tokens.Jwt": "6.32.1"
- }
- },
- "Microsoft.IdentityModel.Tokens": {
- "type": "Transitive",
- "resolved": "6.32.1",
- "contentHash": "8zGvRVWoVQSYg7qQj3zUslleZ/9lwDb6cWgDkIuqr0mCtXK/dr6IDgP7KpWJ5UhkoYYfLvwBl4GYEz4xMH524A==",
- "dependencies": {
- "Microsoft.CSharp": "4.5.0",
- "Microsoft.IdentityModel.Logging": "6.32.1",
- "System.Security.Cryptography.Cng": "4.5.0"
- }
- },
- "Microsoft.Net.Http.Headers": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "iZNkjYqlo8sIOI0bQfpsSoMTmB/kyvmV2h225ihyZT33aTp48ZpF6qYnXxzSXmHt8DpBAwBTX+1s1UFLbYfZKg==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "2.2.0",
- "System.Buffers": "4.5.0"
- }
- },
- "Microsoft.NETCore.Platforms": {
- "type": "Transitive",
- "resolved": "5.0.0",
- "contentHash": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ=="
- },
- "Microsoft.NETCore.Targets": {
- "type": "Transitive",
- "resolved": "1.1.3",
- "contentHash": "3Wrmi0kJDzClwAC+iBdUBpEKmEle8FQNsCs77fkiOIw/9oYA07bL1EZNX0kQ2OMN3xpwvl0vAtOCYY3ndDNlhQ=="
- },
- "Microsoft.Rest.ClientRuntime": {
- "type": "Transitive",
- "resolved": "2.3.8",
- "contentHash": "Hj96LBoCwKY2VQKfSCVGGPV1sSumVjuYnrlpBwL4JSTnSK4b6ZxjLtXj8LgmKav8xJ2gps+UN7eI3hHVFKvBFw==",
- "dependencies": {
- "NETStandard.Library": "1.6.1",
- "Newtonsoft.Json": "9.0.1"
- }
- },
- "Microsoft.Rest.ClientRuntime.Azure": {
- "type": "Transitive",
- "resolved": "3.3.7",
- "contentHash": "6u8JIuvrztse4tPOcvNzAJuzGBP0uY+Ijggk8ZYhp0siGEZ1XfZylf1vpNGUicvwcrhhoIgDW73Z1L6QGssr2g==",
- "dependencies": {
- "Microsoft.Rest.ClientRuntime": "[2.3.8, 3.0.0)",
- "NETStandard.Library": "1.6.1",
- "Newtonsoft.Json": "9.0.1"
- }
- },
- "Microsoft.Win32.Primitives": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "Microsoft.Win32.Registry": {
- "type": "Transitive",
- "resolved": "4.7.0",
- "contentHash": "KSrRMb5vNi0CWSGG1++id2ZOs/1QhRqROt+qgbEAdQuGjGrFcl4AOl4/exGPUYz2wUnU42nvJqon1T3U0kPXLA==",
- "dependencies": {
- "System.Security.AccessControl": "4.7.0",
- "System.Security.Principal.Windows": "4.7.0"
- }
- },
- "Microsoft.Win32.SystemEvents": {
- "type": "Transitive",
- "resolved": "4.7.0",
- "contentHash": "mtVirZr++rq+XCDITMUdnETD59XoeMxSpLRIII7JRI6Yj0LEDiO1pPn0ktlnIj12Ix8bfvQqQDMMIF9wC98oCA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "3.1.0"
- }
- },
- "ncrontab.signed": {
- "type": "Transitive",
- "resolved": "3.3.0",
- "contentHash": "w+fVX+uCk3C0nR7BDjWAmUzDQPNAaBusTPljWehx/2cbBTxuKm81sCTebwRnJtHfS+38xbqF7NiiwPWjRMKiFQ==",
- "dependencies": {
- "System.Collections": "4.0.11",
- "System.Diagnostics.Debug": "4.0.11",
- "System.Globalization": "4.0.11",
- "System.IO": "4.1.0",
- "System.Net.Primitives": "4.0.11",
- "System.Resources.ResourceManager": "4.0.1"
- }
- },
- "NETStandard.Library": {
- "type": "Transitive",
- "resolved": "2.0.1",
- "contentHash": "oA6nwv9MhEKYvLpjZ0ggSpb1g4CQViDVQjLUcDWg598jtvJbpfeP2reqwI1GLW2TbxC/Ml7xL6BBR1HmKPXlTg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0"
- }
- },
- "Newtonsoft.Json.Bson": {
- "type": "Transitive",
- "resolved": "1.0.1",
- "contentHash": "5PYT/IqQ+UK31AmZiSS102R6EsTo+LGTSI8bp7WAUqDKaF4wHXD8U9u4WxTI1vc64tYi++8p3dk3WWNqPFgldw==",
- "dependencies": {
- "NETStandard.Library": "1.6.1",
- "Newtonsoft.Json": "10.0.1"
- }
- },
- "Polly.Extensions.Http": {
- "type": "Transitive",
- "resolved": "3.0.0",
- "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==",
- "dependencies": {
- "Polly": "7.1.0"
- }
- },
- "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "7VSGO0URRKoMEAq0Sc9cRz8mb6zbyx/BZDEWhgPdzzpmFhkam3fJ1DAGWFXBI4nGlma+uPKpfuMQP5LXRnOH5g=="
- },
- "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "0oAaTAm6e2oVH+/Zttt0cuhGaePQYKII1dY8iaqP7CvOpVKgLybKRFvQjXR2LtxXOXTVPNv14j0ot8uV+HrUmw=="
- },
- "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "G24ibsCNi5Kbz0oXWynBoRgtGvsw5ZSVEWjv13/KiCAM8C6wz9zzcCniMeQFIkJ2tasjo2kXlvlBZhplL51kGg=="
- },
- "runtime.native.System": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0"
- }
- },
- "runtime.native.System.Net.Http": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0"
- }
- },
- "runtime.native.System.Security.Cryptography.Apple": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==",
- "dependencies": {
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0"
- }
- },
- "runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "QR1OwtwehHxSeQvZKXe+iSd+d3XZNkEcuWMFYa2i0aG1l+lR739HPicKMlTbJst3spmeekDVBUS7SeS26s4U/g==",
- "dependencies": {
- "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
- }
- },
- "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "I+GNKGg2xCHueRd1m9PzeEW7WLbNNLznmTuEi8/vZX71HudUbx1UTwlGkiwMri7JLl8hGaIAWnA/GONhu+LOyQ=="
- },
- "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "1Z3TAq1ytS1IBRtPXJvEUZdVsfWfeNEhBkbiOCGEl9wwAfsjP2lz3ZFDx5tq8p60/EqbS0HItG5piHuB71RjoA=="
- },
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ=="
- },
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "6mU/cVmmHtQiDXhnzUImxIcDL48GbTk+TsptXyJA+MIOG9LRjPoAQC/qBFB7X+UNyK86bmvGwC8t+M66wsYC8w=="
- },
- "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "vjwG0GGcTW/PPg6KVud8F9GLWYuAV1rrw1BKAqY0oh4jcUqg15oYF1+qkGR2x2ZHM4DQnWKQ7cJgYbfncz/lYg=="
- },
- "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "7KMFpTkHC/zoExs+PwP8jDCWcrK9H6L7soowT80CUx3e+nxP/AFnq0AQAW5W76z2WYbLAYCRyPfwYFG6zkvQRw=="
- },
- "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "xrlmRCnKZJLHxyyLIqkZjNXqgxnKdZxfItrPkjI+6pkRo5lHX8YvSZlWrSI5AVwLMi4HbNWP7064hcAWeZKp5w=="
- },
- "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "leXiwfiIkW7Gmn7cgnNcdtNAU70SjmKW3jxGj1iKHOvdn0zRWsgv/l2OJUO5zdGdiv2VRFnAsxxhDgMzofPdWg=="
- },
- "SemanticVersioning": {
- "type": "Transitive",
- "resolved": "1.2.0",
- "contentHash": "uYqkmqYk0D7pAShLoxCQsKX2aHj+D+Omf2g1NXoRADsJcFduwf1HLqiYY99vremiFobQfcsia948Gt3bG3ryFQ=="
- },
- "SharpZipLib": {
- "type": "Transitive",
- "resolved": "1.3.3",
- "contentHash": "N8+hwhsKZm25tDJfWpBSW7EGhH/R7EMuiX+KJ4C4u+fCWVc1lJ5zg1u3S1RPPVYgTqhx/C3hxrqUpi6RwK5+Tg=="
- },
- "System.AppContext": {
- "type": "Transitive",
- "resolved": "4.1.0",
- "contentHash": "3QjO4jNV7PdKkmQAVp9atA+usVnKRwI3Kx1nMwJ93T0LcQfx7pKAYk0nKz5wn1oP5iqlhZuy6RXOFdhr7rDwow==",
- "dependencies": {
- "System.Runtime": "4.1.0"
- }
- },
- "System.Buffers": {
- "type": "Transitive",
- "resolved": "4.5.0",
- "contentHash": "pL2ChpaRRWI/p4LXyy4RgeWlYF2sgfj/pnVMvBqwNFr5cXg7CXNnWZWxrOONLg8VGdFB8oB+EG2Qw4MLgTOe+A=="
- },
- "System.Collections": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Collections.Concurrent": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.Configuration.ConfigurationManager": {
- "type": "Transitive",
- "resolved": "4.7.0",
- "contentHash": "/anOTeSZCNNI2zDilogWrZ8pNqCmYbzGNexUnNhjW8k0sHqEZ2nHJBp147jBV3hGYswu5lINpNg1vxR7bnqvVA==",
- "dependencies": {
- "System.Security.Cryptography.ProtectedData": "4.7.0",
- "System.Security.Permissions": "4.7.0"
- }
- },
- "System.Diagnostics.Debug": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Diagnostics.DiagnosticSource": {
- "type": "Transitive",
- "resolved": "6.0.1",
- "contentHash": "KiLYDu2k2J82Q9BJpWiuQqCkFjRBWVq4jDzKKWawVi9KWzyD0XG3cmfX0vqTQlL14Wi9EufJrbL0+KCLTbqWiQ==",
- "dependencies": {
- "System.Runtime.CompilerServices.Unsafe": "6.0.0"
- }
- },
- "System.Diagnostics.EventLog": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw=="
- },
- "System.Diagnostics.PerformanceCounter": {
- "type": "Transitive",
- "resolved": "4.7.0",
- "contentHash": "kE9szT4i3TYT9bDE/BPfzg9/BL6enMiZlcUmnUEBrhRtxWvurKoa8qhXkLTRhrxMzBqaDleWlRfIPE02tulU+w==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "3.1.0",
- "Microsoft.Win32.Registry": "4.7.0",
- "System.Configuration.ConfigurationManager": "4.7.0",
- "System.Security.Principal.Windows": "4.7.0"
- }
- },
- "System.Diagnostics.Process": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "J0wOX07+QASQblsfxmIMFc9Iq7KTXYL3zs2G/Xc704Ylv3NpuVdo6gij6V3PGiptTxqsK0K7CdXenRvKUnkA2g==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.Win32.Primitives": "4.3.0",
- "Microsoft.Win32.Registry": "4.3.0",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Text.Encoding.Extensions": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "System.Threading.Thread": "4.3.0",
- "System.Threading.ThreadPool": "4.3.0",
- "runtime.native.System": "4.3.0"
- }
- },
- "System.Diagnostics.StackTrace": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "BiHg0vgtd35/DM9jvtaC1eKRpWZxr0gcQd643ABG7GnvSlf5pOkY2uyd42mMOJoOmKvnpNj0F4tuoS1pacTwYw==",
- "dependencies": {
- "System.IO.FileSystem": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Metadata": "1.4.1",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Diagnostics.Tools": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Diagnostics.TraceSource": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "VnYp1NxGx8Ww731y2LJ1vpfb/DKVNKEZ8Jsh5SgQTZREL/YpWRArgh9pI8CDLmgHspZmLL697CaLvH85qQpRiw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Threading": "4.3.0",
- "runtime.native.System": "4.3.0"
- }
- },
- "System.Diagnostics.Tracing": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Dynamic.Runtime": {
- "type": "Transitive",
- "resolved": "4.0.11",
- "contentHash": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==",
- "dependencies": {
- "System.Collections": "4.0.11",
- "System.Diagnostics.Debug": "4.0.11",
- "System.Globalization": "4.0.11",
- "System.Linq": "4.1.0",
- "System.Linq.Expressions": "4.1.0",
- "System.ObjectModel": "4.0.12",
- "System.Reflection": "4.1.0",
- "System.Reflection.Emit": "4.0.1",
- "System.Reflection.Emit.ILGeneration": "4.0.1",
- "System.Reflection.Primitives": "4.0.1",
- "System.Reflection.TypeExtensions": "4.1.0",
- "System.Resources.ResourceManager": "4.0.1",
- "System.Runtime": "4.1.0",
- "System.Runtime.Extensions": "4.1.0",
- "System.Threading": "4.0.11"
- }
- },
- "System.Globalization": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Globalization.Calendars": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Globalization": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Globalization.Extensions": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Globalization": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0"
- }
- },
- "System.IdentityModel.Tokens.Jwt": {
- "type": "Transitive",
- "resolved": "6.32.1",
- "contentHash": "m6kuL4jfpDHuWkUNS5peyO71nRH8nE2TsTC/n0Isajze4d86xTUmEJ3J0vzYdp4X3OQ72y9KXnQGtxgu9Axd0w==",
- "dependencies": {
- "Microsoft.IdentityModel.JsonWebTokens": "6.32.1",
- "Microsoft.IdentityModel.Tokens": "6.32.1"
- }
- },
- "System.IO": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.IO.FileSystem": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.IO.FileSystem.AccessControl": {
- "type": "Transitive",
- "resolved": "5.0.0",
- "contentHash": "SxHB3nuNrpptVk+vZ/F+7OHEpoHUIKKMl02bUmYHQr1r+glbZQxs7pRtsf4ENO29TVm2TH3AEeep2fJcy92oYw==",
- "dependencies": {
- "System.Security.AccessControl": "5.0.0",
- "System.Security.Principal.Windows": "5.0.0"
- }
- },
- "System.IO.FileSystem.Primitives": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==",
- "dependencies": {
- "System.Runtime": "4.3.0"
- }
- },
- "System.IO.Hashing": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "Rfm2jYCaUeGysFEZjDe7j1R4x6Z6BzumS/vUT5a1AA/AWJuGX71PoGB0RmpyX3VmrGqVnAwtfMn39OHR8Y/5+g=="
- },
- "System.Linq": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0"
- }
- },
- "System.Linq.Expressions": {
- "type": "Transitive",
- "resolved": "4.1.0",
- "contentHash": "I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
- "dependencies": {
- "System.Collections": "4.0.11",
- "System.Diagnostics.Debug": "4.0.11",
- "System.Globalization": "4.0.11",
- "System.IO": "4.1.0",
- "System.Linq": "4.1.0",
- "System.ObjectModel": "4.0.12",
- "System.Reflection": "4.1.0",
- "System.Reflection.Emit": "4.0.1",
- "System.Reflection.Emit.ILGeneration": "4.0.1",
- "System.Reflection.Emit.Lightweight": "4.0.1",
- "System.Reflection.Extensions": "4.0.1",
- "System.Reflection.Primitives": "4.0.1",
- "System.Reflection.TypeExtensions": "4.1.0",
- "System.Resources.ResourceManager": "4.0.1",
- "System.Runtime": "4.1.0",
- "System.Runtime.Extensions": "4.1.0",
- "System.Threading": "4.0.11"
- }
- },
- "System.Memory.Data": {
- "type": "Transitive",
- "resolved": "1.0.2",
- "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==",
- "dependencies": {
- "System.Text.Encodings.Web": "4.7.2",
- "System.Text.Json": "4.6.0"
- }
- },
- "System.Net.NameResolution": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "AFYl08R7MrsrEjqpQWTZWBadqXyTzNDaWpMqyxhb0d6sGhV6xMDKueuBXlLL30gz+DIRY6MpdgnHWlCh5wmq9w==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Net.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Principal.Windows": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "runtime.native.System": "4.3.0"
- }
- },
- "System.Net.Primitives": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0"
- }
- },
- "System.Numerics.Vectors": {
- "type": "Transitive",
- "resolved": "4.5.0",
- "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ=="
- },
- "System.ObjectModel": {
- "type": "Transitive",
- "resolved": "4.0.12",
- "contentHash": "tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
- "dependencies": {
- "System.Collections": "4.0.11",
- "System.Diagnostics.Debug": "4.0.11",
- "System.Resources.ResourceManager": "4.0.1",
- "System.Runtime": "4.1.0",
- "System.Threading": "4.0.11"
- }
- },
- "System.Private.DataContractSerialization": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "yDaJ2x3mMmjdZEDB4IbezSnCsnjQ4BxinKhRAaP6kEgL6Bb6jANWphs5SzyD8imqeC/3FxgsuXT6ykkiH1uUmA==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Collections.Concurrent": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Linq": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Emit.ILGeneration": "4.3.0",
- "System.Reflection.Emit.Lightweight": "4.3.0",
- "System.Reflection.Extensions": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Reflection.TypeExtensions": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Serialization.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Text.Encoding.Extensions": "4.3.0",
- "System.Text.RegularExpressions": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0",
- "System.Xml.XDocument": "4.3.0",
- "System.Xml.XmlDocument": "4.3.0",
- "System.Xml.XmlSerializer": "4.3.0"
- }
- },
- "System.Reflection": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.IO": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Emit": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==",
- "dependencies": {
- "System.IO": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Emit.ILGeneration": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Emit.ILGeneration": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==",
- "dependencies": {
- "System.Reflection": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Emit.Lightweight": {
- "type": "Transitive",
- "resolved": "4.7.0",
- "contentHash": "a4OLB4IITxAXJeV74MDx49Oq2+PsF6Sml54XAFv+2RyWwtDBcabzoxiiJRhdhx+gaohLh4hEGCLQyBozXoQPqA=="
- },
- "System.Reflection.Extensions": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Reflection": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Metadata": {
- "type": "Transitive",
- "resolved": "1.6.0",
- "contentHash": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ=="
- },
- "System.Reflection.Primitives": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.TypeExtensions": {
- "type": "Transitive",
- "resolved": "4.7.0",
- "contentHash": "VybpaOQQhqE6siHppMktjfGBw1GCwvCqiufqmP8F1nj7fTUNtW35LOEt3UZTEsECfo+ELAl/9o9nJx3U91i7vA=="
- },
- "System.Resources.ResourceManager": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Globalization": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime": {
- "type": "Transitive",
- "resolved": "4.3.1",
- "contentHash": "abhfv1dTK6NXOmu4bgHIONxHyEqFjW8HwXPmpY9gmll+ix9UNo4XDcmzJn6oLooftxNssVHdJC1pGT9jkSynQg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.1",
- "Microsoft.NETCore.Targets": "1.1.3"
- }
- },
- "System.Runtime.CompilerServices.Unsafe": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg=="
- },
- "System.Runtime.Extensions": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime.Handles": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime.InteropServices": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0"
- }
- },
- "System.Runtime.InteropServices.RuntimeInformation": {
- "type": "Transitive",
- "resolved": "4.0.0",
- "contentHash": "hWPhJxc453RCa8Z29O91EmfGeZIHX1ZH2A8L6lYQVSaKzku2DfArSfMEb1/MYYzPQRJZeu0c9dmYeJKxW5Fgng==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.0.1",
- "System.Reflection": "4.1.0",
- "System.Resources.ResourceManager": "4.0.1",
- "System.Runtime": "4.1.0",
- "System.Runtime.InteropServices": "4.1.0",
- "System.Threading": "4.0.11",
- "runtime.native.System": "4.0.0"
- }
- },
- "System.Runtime.Loader": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "DHMaRn8D8YCK2GG2pw+UzNxn/OHVfaWx7OTLBD/hPegHZZgcZh3H6seWegrC4BYwsfuGrywIuT+MQs+rPqRLTQ==",
- "dependencies": {
- "System.IO": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime.Numerics": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==",
- "dependencies": {
- "System.Globalization": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0"
- }
- },
- "System.Runtime.Serialization.Json": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "CpVfOH0M/uZ5PH+M9+Gu56K0j9lJw3M+PKRegTkcrY/stOIvRUeonggxNrfBYLA5WOHL2j15KNJuTuld3x4o9w==",
- "dependencies": {
- "System.IO": "4.3.0",
- "System.Private.DataContractSerialization": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime.Serialization.Primitives": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "Wz+0KOukJGAlXjtKr+5Xpuxf8+c8739RI1C+A2BoQZT+wMCCoMDDdO8/4IRHfaVINqL78GO8dW8G2lW/e45Mcw==",
- "dependencies": {
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Security.AccessControl": {
- "type": "Transitive",
- "resolved": "5.0.0",
- "contentHash": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "5.0.0",
- "System.Security.Principal.Windows": "5.0.0"
- }
- },
- "System.Security.Cryptography.Algorithms": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.Numerics": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "runtime.native.System.Security.Cryptography.Apple": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Security.Cryptography.Cng": {
- "type": "Transitive",
- "resolved": "4.5.0",
- "contentHash": "WG3r7EyjUe9CMPFSs6bty5doUqT+q9pbI80hlNzo2SkPkZ4VTuZkGWjpp77JB8+uaL4DFPRdBsAY+DX3dBK92A=="
- },
- "System.Security.Cryptography.Csp": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.IO": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0"
- }
- },
- "System.Security.Cryptography.Encoding": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.Collections.Concurrent": "4.3.0",
- "System.Linq": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.Numerics": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Security.Cryptography.Primitives": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==",
- "dependencies": {
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.Security.Cryptography.ProtectedData": {
- "type": "Transitive",
- "resolved": "4.7.0",
- "contentHash": "ehYW0m9ptxpGWvE4zgqongBVWpSDU/JCFD4K7krxkQwSz/sFQjEXCUqpvencjy6DYDbn7Ig09R8GFffu8TtneQ=="
- },
- "System.Security.Cryptography.X509Certificates": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Globalization.Calendars": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.Numerics": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Cng": "4.3.0",
- "System.Security.Cryptography.Csp": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.OpenSsl": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "runtime.native.System": "4.3.0",
- "runtime.native.System.Net.Http": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Security.Permissions": {
- "type": "Transitive",
- "resolved": "4.7.0",
- "contentHash": "dkOV6YYVBnYRa15/yv004eCGRBVADXw8qRbbNiCn/XpdJSUXkkUeIvdvFHkvnko4CdKMqG8yRHC4ox83LSlMsQ==",
- "dependencies": {
- "System.Security.AccessControl": "4.7.0",
- "System.Windows.Extensions": "4.7.0"
- }
- },
- "System.Security.Principal.Windows": {
- "type": "Transitive",
- "resolved": "5.0.0",
- "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA=="
- },
- "System.Text.Encoding": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Text.Encoding.Extensions": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0",
- "System.Text.Encoding": "4.3.0"
- }
- },
- "System.Text.Json": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "zaJsHfESQvJ11vbXnNlkrR46IaMULk/gHxYsJphzSF+07kTjPHv+Oc14w6QEOfo3Q4hqLJgStUaYB9DBl0TmWg==",
- "dependencies": {
- "System.Runtime.CompilerServices.Unsafe": "6.0.0",
- "System.Text.Encodings.Web": "6.0.0"
- }
- },
- "System.Threading": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==",
- "dependencies": {
- "System.Runtime": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.Threading.Channels": {
- "type": "Transitive",
- "resolved": "4.7.1",
- "contentHash": "6akRtHK/wab3246t4p5v3HQrtQk8LboOt5T4dtpNgsp3zvDeM4/Gx8V12t0h+c/W9/enUrilk8n6EQqdQorZAA=="
- },
- "System.Threading.Tasks": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Threading.Tasks.Extensions": {
- "type": "Transitive",
- "resolved": "4.5.4",
- "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg=="
- },
- "System.Threading.Thread": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "OHmbT+Zz065NKII/ZHcH9XO1dEuLGI1L2k7uYss+9C1jLxTC9kTZZuzUOyXHayRk+dft9CiDf3I/QZ0t8JKyBQ==",
- "dependencies": {
- "System.Runtime": "4.3.0"
- }
- },
- "System.Threading.ThreadPool": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "k/+g4b7vjdd4aix83sTgC9VG6oXYKAktSfNIJUNGxPEj7ryEOfzHHhfnmsZvjxawwcD9HyWXKCXmPjX8U4zeSw==",
- "dependencies": {
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0"
- }
- },
- "System.Windows.Extensions": {
- "type": "Transitive",
- "resolved": "4.7.0",
- "contentHash": "CeWTdRNfRaSh0pm2gDTJFwVaXfTq6Xwv/sA887iwPTneW7oMtMlpvDIO+U60+3GWTB7Aom6oQwv5VZVUhQRdPQ==",
- "dependencies": {
- "System.Drawing.Common": "4.7.0"
- }
- },
- "System.Xml.ReaderWriter": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Text.Encoding.Extensions": "4.3.0",
- "System.Text.RegularExpressions": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "System.Threading.Tasks.Extensions": "4.3.0"
- }
- },
- "System.Xml.XDocument": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.Tools": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0"
- }
- },
- "System.Xml.XmlDocument": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "lJ8AxvkX7GQxpC6GFCeBj8ThYVyQczx2+f/cWHJU8tjS7YfI6Cv6bon70jVEgs2CiFbmmM8b9j1oZVx0dSI2Ww==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0"
- }
- },
- "System.Xml.XmlSerializer": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "MYoTCP7EZ98RrANESW05J5ZwskKDoN0AuZ06ZflnowE50LTpbR5yRg3tHckTVm5j/m47stuGgCrCHWePyHS70Q==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Linq": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Emit": "4.3.0",
- "System.Reflection.Emit.ILGeneration": "4.3.0",
- "System.Reflection.Extensions": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Reflection.TypeExtensions": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Text.RegularExpressions": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0",
- "System.Xml.XmlDocument": "4.3.0"
- }
- },
- "WindowsAzure.Storage": {
- "type": "Transitive",
- "resolved": "9.3.1",
- "contentHash": "NooNF4glP6BO7U4dno/xSfiEVVIv6OFcFfisX24Us2CZa9NQR3TSVEj9eVUlM5rLat5H9CHxk6M/mNSIaq7Vrw==",
- "dependencies": {
- "NETStandard.Library": "1.6.1",
- "Newtonsoft.Json": "10.0.2"
- }
- },
- "microsoft.health.common": {
- "type": "Project",
- "dependencies": {
- "Azure.Core": "[1.34.0, )",
- "Azure.Identity": "[1.10.0, )",
- "Azure.Storage.Blobs": "[12.16.0, )",
- "Ensure.That": "[10.1.0, )",
- "Microsoft.Extensions.Configuration.Abstractions": "[6.0.0, )",
- "Microsoft.Extensions.Configuration.Binder": "[6.0.0, )",
- "Microsoft.Extensions.Options": "[6.0.0, )",
- "Newtonsoft.Json": "[13.0.3, )",
- "System.Text.Encodings.Web": "[6.0.0, )",
- "System.Text.RegularExpressions": "[4.3.1, )",
- "System.Threading.Tasks.Dataflow": "[6.0.0, )"
- }
- },
- "microsoft.health.events": {
- "type": "Project",
- "dependencies": {
- "Azure.Identity": "[1.10.0, )",
- "Azure.Messaging.EventHubs": "[5.9.2, )",
- "Azure.Messaging.EventHubs.Processor": "[5.9.2, )",
- "Azure.Storage.Blobs": "[12.16.0, )",
- "Ensure.That": "[10.1.0, )",
- "Microsoft.AspNetCore.Mvc.Abstractions": "[2.2.0, )",
- "Microsoft.AspNetCore.Mvc.Core": "[2.2.5, )",
- "Microsoft.Bcl.AsyncInterfaces": "[6.0.0, )",
- "Microsoft.Extensions.Hosting": "[6.0.1, )",
- "Microsoft.Health.Common": "[1.0.0, )",
- "Microsoft.Health.Logging": "[1.0.0, )",
- "System.Text.Encodings.Web": "[6.0.0, )"
- }
- },
- "microsoft.health.expressions": {
- "type": "Project",
- "dependencies": {
- "Ensure.That": "[10.1.0, )",
- "JmesPath.Net": "[1.0.205, )",
- "Microsoft.Health.Logging": "[1.0.0, )",
- "Newtonsoft.Json": "[13.0.3, )",
- "System.Text.RegularExpressions": "[4.3.1, )"
- }
- },
- "microsoft.health.extensions.fhir": {
- "type": "Project",
- "dependencies": {
- "Ensure.That": "[10.1.0, )",
- "Microsoft.Extensions.Http": "[6.0.0, )",
- "Microsoft.Health.Common": "[1.0.0, )",
- "Microsoft.Health.Extensions.Host": "[1.0.0, )",
- "System.Text.RegularExpressions": "[4.3.1, )"
- }
- },
- "microsoft.health.extensions.fhir.r4": {
- "type": "Project",
- "dependencies": {
- "Azure.Identity": "[1.10.0, )",
- "Ensure.That": "[10.1.0, )",
- "Hl7.Fhir.R4": "[4.3.0, )",
- "Microsoft.Extensions.DependencyInjection": "[6.0.0, )",
- "Microsoft.Extensions.Http": "[6.0.0, )",
- "Microsoft.Extensions.Http.Polly": "[6.0.7, )",
- "Microsoft.Health.Common": "[1.0.0, )",
- "Microsoft.Health.Extensions.DependencyInjection": "[6.2.135, )",
- "Microsoft.Health.Extensions.Fhir": "[1.0.0, )",
- "Microsoft.Health.Extensions.Host": "[1.0.0, )",
- "Microsoft.Health.Fhir.Ingest": "[1.0.0, )",
- "Microsoft.Health.Fhir.R4.Client": "[3.4.280, )",
- "Microsoft.Health.Logging": "[1.0.0, )",
- "System.Text.RegularExpressions": "[4.3.1, )"
- }
- },
- "microsoft.health.extensions.host": {
- "type": "Project",
- "dependencies": {
- "Azure.Identity": "[1.10.0, )",
- "Ensure.That": "[10.1.0, )",
- "Microsoft.Azure.WebJobs": "[3.0.31, )",
- "Microsoft.Health.Common": "[1.0.0, )",
- "Microsoft.Identity.Client": "[4.54.1, )",
- "System.Text.RegularExpressions": "[4.3.1, )"
- }
- },
- "microsoft.health.fhir.ingest": {
- "type": "Project",
- "dependencies": {
- "Ensure.That": "[10.1.0, )",
- "Microsoft.ApplicationInsights": "[2.21.0, )",
- "Microsoft.Azure.Functions.Extensions": "[1.1.0, )",
- "Microsoft.Azure.WebJobs": "[3.0.31, )",
- "Microsoft.Extensions.Caching.Memory": "[6.0.1, )",
- "Microsoft.Extensions.Configuration.Abstractions": "[6.0.0, )",
- "Microsoft.Extensions.Logging.Abstractions": "[6.0.1, )",
- "Microsoft.Health.Common": "[1.0.0, )",
- "Microsoft.Health.Events": "[1.0.0, )",
- "Microsoft.Health.Extensions.Fhir": "[1.0.0, )",
- "Microsoft.Health.Extensions.Host": "[1.0.0, )",
- "Microsoft.Health.Fhir.Ingest.Template": "[1.0.0, )",
- "Microsoft.Toolkit.HighPerformance": "[7.1.2, )",
- "Newtonsoft.Json": "[13.0.3, )",
- "Polly": "[7.2.4, )",
- "System.Memory": "[4.5.5, )",
- "System.Text.RegularExpressions": "[4.3.1, )",
- "System.Threading.Tasks.Dataflow": "[6.0.0, )"
- }
- },
- "microsoft.health.fhir.ingest.legacy": {
- "type": "Project",
- "dependencies": {
- "Ensure.That": "[10.1.0, )",
- "Microsoft.ApplicationInsights": "[2.21.0, )",
- "Microsoft.Azure.EventHubs": "[3.0.0, )",
- "Microsoft.Azure.Functions.Extensions": "[1.1.0, )",
- "Microsoft.Azure.WebJobs": "[3.0.31, )",
- "Microsoft.Extensions.Caching.Memory": "[6.0.1, )",
- "Microsoft.Extensions.Configuration.Abstractions": "[6.0.0, )",
- "Microsoft.Extensions.Logging.Abstractions": "[6.0.1, )",
- "Microsoft.Health.Common": "[1.0.0, )",
- "Microsoft.Health.Events": "[1.0.0, )",
- "Microsoft.Health.Extensions.Fhir": "[1.0.0, )",
- "Microsoft.Health.Extensions.Host": "[1.0.0, )",
- "Microsoft.Health.Fhir.Ingest": "[1.0.0, )",
- "Microsoft.Health.Fhir.Ingest.Template": "[1.0.0, )",
- "Microsoft.Toolkit.HighPerformance": "[7.1.2, )",
- "Newtonsoft.Json": "[13.0.3, )",
- "Polly": "[7.2.4, )",
- "System.Memory": "[4.5.5, )",
- "System.Text.RegularExpressions": "[4.3.1, )",
- "System.Threading.Tasks.Dataflow": "[6.0.0, )"
- }
- },
- "Microsoft.Health.Fhir.Ingest.R4": {
- "type": "Project",
- "dependencies": {
- "Ensure.That": "[10.1.0, )",
- "Hl7.Fhir.R4": "[4.3.0, )",
- "Microsoft.Azure.Functions.Extensions": "[1.1.0, )",
- "Microsoft.Health.Common": "[1.0.0, )",
- "Microsoft.Health.Extensions.Fhir": "[1.0.0, )",
- "Microsoft.Health.Extensions.Fhir.R4": "[1.0.0, )",
- "Microsoft.Health.Extensions.Host": "[1.0.0, )",
- "Microsoft.Health.Fhir.Ingest": "[1.0.0, )",
- "Microsoft.Health.Fhir.Ingest.R4.Templates": "[1.0.0, )",
- "Newtonsoft.Json": "[13.0.3, )",
- "Polly": "[7.2.4, )",
- "System.Memory": "[4.5.5, )",
- "System.Text.RegularExpressions": "[4.3.1, )",
- "System.Threading.Tasks.Dataflow": "[6.0.0, )"
- }
- },
- "Microsoft.Health.Fhir.Ingest.R4.Templates": {
- "type": "Project",
- "dependencies": {
- "Hl7.Fhir.R4": "[4.3.0, )",
- "Microsoft.Health.Fhir.Ingest": "[1.0.0, )"
- }
- },
- "microsoft.health.fhir.ingest.schema": {
- "type": "Project",
- "dependencies": {
- "System.Memory": "[4.5.5, )",
- "System.Text.RegularExpressions": "[4.3.1, )"
- }
- },
- "microsoft.health.fhir.ingest.template": {
- "type": "Project",
- "dependencies": {
- "Ensure.That": "[10.1.0, )",
- "JmesPath.Net": "[1.0.205, )",
- "Microsoft.Health.Fhir.Ingest.Schema": "[1.0.0, )",
- "Microsoft.Health.Logging": "[1.0.0, )",
- "Newtonsoft.Json": "[13.0.3, )",
- "System.ComponentModel.Annotations": "[5.0.0, )",
- "System.Text.RegularExpressions": "[4.3.1, )"
- }
- },
- "microsoft.health.logging": {
- "type": "Project",
- "dependencies": {
- "Ensure.That": "[10.1.0, )",
- "Microsoft.ApplicationInsights": "[2.21.0, )",
- "Microsoft.Health.Common": "[1.0.0, )"
- }
- },
- "Azure.Core": {
- "type": "CentralTransitive",
- "requested": "[1.34.0, )",
- "resolved": "1.34.0",
- "contentHash": "6dNpM8OlGO+5gvt97tHXBp9qWRFkimRFulupDSGRgyT3sje1kQNza1/EMYaDcolmNARPmVJo8+wgD6ReV9wG5Q==",
- "dependencies": {
- "Microsoft.Bcl.AsyncInterfaces": "1.1.1",
- "System.Diagnostics.DiagnosticSource": "6.0.1",
- "System.Memory.Data": "1.0.2",
- "System.Numerics.Vectors": "4.5.0",
- "System.Text.Encodings.Web": "4.7.2",
- "System.Text.Json": "4.7.2",
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "Azure.Identity": {
- "type": "CentralTransitive",
- "requested": "[1.10.0, )",
- "resolved": "1.10.0",
- "contentHash": "j7HIhQ8Bnf2s325hNwjsTa7jXlJmWFSPgKJCrc1cv2XozEmFsjto1XaCnQzLmbPaTeL6CS5t26icTflY20BnHQ==",
- "dependencies": {
- "Azure.Core": "1.34.0",
- "Microsoft.Identity.Client": "4.54.1",
- "Microsoft.Identity.Client.Extensions.Msal": "2.31.0",
- "System.Memory": "4.5.4",
- "System.Security.Cryptography.ProtectedData": "4.7.0",
- "System.Text.Json": "4.7.2",
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "Azure.Messaging.EventHubs": {
- "type": "CentralTransitive",
- "requested": "[5.9.2, )",
- "resolved": "5.9.2",
- "contentHash": "KAC79xzlOUrtQ0mlrPqijznfmlKeraiqavtZ3RfbV+8ukJf9C5fFSZCMSqq9N/2+eUkW3G4wJSchMXAyf+jxow==",
- "dependencies": {
- "Azure.Core": "1.32.0",
- "Azure.Core.Amqp": "1.3.0",
- "Microsoft.Azure.Amqp": "2.6.2",
- "Microsoft.Bcl.AsyncInterfaces": "1.1.1",
- "System.Diagnostics.DiagnosticSource": "4.6.0",
- "System.Memory.Data": "1.0.2",
- "System.Reflection.TypeExtensions": "4.7.0",
- "System.Threading.Channels": "4.7.1",
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "Azure.Messaging.EventHubs.Processor": {
- "type": "CentralTransitive",
- "requested": "[5.9.2, )",
- "resolved": "5.9.2",
- "contentHash": "vx5R1za8dZPcKZ76Hz9KprSX/CP8UWsGuffdYdwI12GQjhyh4fHN0AEJ+knWw3+TvaFXcEW6GpC6fzC4LHvxuw==",
- "dependencies": {
- "Azure.Messaging.EventHubs": "5.9.2",
- "Azure.Storage.Blobs": "12.16.0",
- "Microsoft.Azure.Amqp": "2.6.2",
- "Microsoft.Bcl.AsyncInterfaces": "1.1.1",
- "System.Diagnostics.DiagnosticSource": "4.6.0",
- "System.Reflection.TypeExtensions": "4.7.0",
- "System.Threading.Channels": "4.7.1",
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "Azure.Storage.Blobs": {
- "type": "CentralTransitive",
- "requested": "[12.16.0, )",
- "resolved": "12.16.0",
- "contentHash": "1ibzh49byOzB2ds6k9bsPqXvxxzdc2U9+MmooDr/lYJHgaWEnPZYX/i04vH0oN0jBGN1diW4N27xER8npvOzCw==",
- "dependencies": {
- "Azure.Storage.Common": "12.15.0",
- "System.Text.Json": "4.7.2"
- }
- },
- "Hl7.Fhir.R4": {
- "type": "CentralTransitive",
- "requested": "[4.3.0, )",
- "resolved": "4.3.0",
- "contentHash": "n90L+LNDwCy8leWwo+2J8Ofh8y5TjyZPg0H0O3lI7a9+Sq9FscqeKrMTcH0wAa9vwN5TK8+lgDcDyJrjxf71RA==",
- "dependencies": {
- "Hl7.Fhir.Serialization": "4.3.0",
- "Hl7.Fhir.Support": "4.3.0",
- "Hl7.Fhir.Support.Poco": "4.3.0",
- "Hl7.FhirPath": "4.3.0",
- "System.ComponentModel.Annotations": "5.0.0"
- }
- },
- "JmesPath.Net": {
- "type": "CentralTransitive",
- "requested": "[1.0.205, )",
- "resolved": "1.0.205",
- "contentHash": "3zzfc4zUbSahnrFDDiJb/EY1uV0BnIi7HImnjaflxIeXeWCpauAVcIFr7o8AWJ7QzxX3g9CVjZ6ybSv+BZsGSA==",
- "dependencies": {
- "JmesPath.Net.Parser": "1.0.205",
- "NETStandard.Library": "1.6.1",
- "Newtonsoft.Json": "13.0.1",
- "System.Reflection.TypeExtensions": "4.7.0"
- }
- },
- "Microsoft.ApplicationInsights": {
- "type": "CentralTransitive",
- "requested": "[2.21.0, )",
- "resolved": "2.21.0",
- "contentHash": "btZEDWAFNo9CoYliMCriSMTX3ruRGZTtYw4mo2XyyfLlowFicYVM2Xszi5evDG95QRYV7MbbH3D2RqVwfZlJHw==",
- "dependencies": {
- "System.Diagnostics.DiagnosticSource": "5.0.0"
- }
- },
- "Microsoft.AspNetCore.Mvc.Abstractions": {
- "type": "CentralTransitive",
- "requested": "[2.2.0, )",
- "resolved": "2.2.0",
- "contentHash": "ET6uZpfVbGR1NjCuLaLy197cQ3qZUjzl7EG5SL4GfJH/c9KRE89MMBrQegqWsh0w1iRUB/zQaK0anAjxa/pz4g==",
- "dependencies": {
- "Microsoft.AspNetCore.Routing.Abstractions": "2.2.0",
- "Microsoft.Net.Http.Headers": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Mvc.Core": {
- "type": "CentralTransitive",
- "requested": "[2.2.5, )",
- "resolved": "2.2.5",
- "contentHash": "/8sr8ixIUD57UFwUntha9bOwex7/AkZfdk1f9oNJG1Ek7p/uuKVa7fuHmYZpQOf35Oxrt+2Ku4WPwMSbNxOuWg==",
- "dependencies": {
- "Microsoft.AspNetCore.Authentication.Core": "2.2.0",
- "Microsoft.AspNetCore.Authorization.Policy": "2.2.0",
- "Microsoft.AspNetCore.Hosting.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.Http": "2.2.0",
- "Microsoft.AspNetCore.Http.Extensions": "2.2.0",
- "Microsoft.AspNetCore.Mvc.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.ResponseCaching.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.Routing": "2.2.0",
- "Microsoft.AspNetCore.Routing.Abstractions": "2.2.0",
- "Microsoft.Extensions.DependencyInjection": "2.2.0",
- "Microsoft.Extensions.DependencyModel": "2.1.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "2.2.0",
- "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
- "System.Diagnostics.DiagnosticSource": "4.5.0",
- "System.Threading.Tasks.Extensions": "4.5.1"
- }
- },
- "Microsoft.Azure.EventHubs": {
- "type": "CentralTransitive",
- "requested": "[3.0.0, )",
- "resolved": "4.3.1",
- "contentHash": "f4wNM9wjgPVwc8GB9MqVCcKyJF0X5vkfe1NtMw3xGhPveNfAoixpIaRd7frpG1FAOUZZVwiowIiILxd6MrtIEA==",
- "dependencies": {
- "Microsoft.Azure.Amqp": "2.4.6",
- "Microsoft.Azure.Services.AppAuthentication": "[1.0.3, 2.0.0)",
- "System.Diagnostics.DiagnosticSource": "4.5.1",
- "System.IdentityModel.Tokens.Jwt": "5.4.0",
- "System.Net.Http": "4.3.4",
- "System.Reflection.TypeExtensions": "[4.5.1, 4.9.0)",
- "System.Runtime.Serialization.Primitives": "4.3.0"
- }
- },
- "Microsoft.Azure.Functions.Extensions": {
- "type": "CentralTransitive",
- "requested": "[1.1.0, )",
- "resolved": "1.1.0",
- "contentHash": "zYKtQQoS1fdzufxFApuMFiFtoi9QAGH6McXxntpylwLKgKjmCMWdgUd1dcekzTKNR9DPSDPRLiulvukqXnpWrQ==",
- "dependencies": {
- "Microsoft.Azure.WebJobs": "3.0.18",
- "Microsoft.Extensions.DependencyInjection": "2.1.0"
- }
- },
- "Microsoft.Bcl.AsyncInterfaces": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg=="
- },
- "Microsoft.Extensions.Caching.Memory": {
- "type": "CentralTransitive",
- "requested": "[6.0.1, )",
- "resolved": "6.0.1",
- "contentHash": "B4y+Cev05eMcjf1na0v9gza6GUtahXbtY1JCypIgx3B4Ea/KAgsWyXEmW4q6zMbmTMtKzmPVk09rvFJirvMwTg==",
- "dependencies": {
- "Microsoft.Extensions.Caching.Abstractions": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.Abstractions": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "qWzV9o+ZRWq+pGm+1dF+R7qTgTYoXvbyowRoBxQJGfqTpqDun2eteerjRQhq5PQ/14S+lqto3Ft4gYaRyl4rdQ==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.Binder": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "b3ErKzND8LIC7o08QAVlKfaEIYEvLJbtmVbFZVBRXeu9YkKfSSzLZfR1SUfQPBIy9mKLhEtJgGYImkcMNaKE0A==",
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0"
- }
- },
- "Microsoft.Extensions.DependencyInjection": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "System.Runtime.CompilerServices.Unsafe": "6.0.0"
- }
- },
- "Microsoft.Extensions.Hosting": {
- "type": "CentralTransitive",
- "requested": "[6.0.1, )",
- "resolved": "6.0.1",
- "contentHash": "hbmizc9KPWOacLU8Z8YMaBG6KWdZFppczYV/KwnPGU/8xebWxQxdDeJmLOgg968prb7g2oQgnp6JVLX6lgby8g==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "6.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.Configuration.Binder": "6.0.0",
- "Microsoft.Extensions.Configuration.CommandLine": "6.0.0",
- "Microsoft.Extensions.Configuration.EnvironmentVariables": "6.0.1",
- "Microsoft.Extensions.Configuration.FileExtensions": "6.0.0",
- "Microsoft.Extensions.Configuration.Json": "6.0.0",
- "Microsoft.Extensions.Configuration.UserSecrets": "6.0.1",
- "Microsoft.Extensions.DependencyInjection": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Physical": "6.0.0",
- "Microsoft.Extensions.Hosting.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging.Configuration": "6.0.0",
- "Microsoft.Extensions.Logging.Console": "6.0.0",
- "Microsoft.Extensions.Logging.Debug": "6.0.0",
- "Microsoft.Extensions.Logging.EventLog": "6.0.0",
- "Microsoft.Extensions.Logging.EventSource": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0"
- }
- },
- "Microsoft.Extensions.Http": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "15+pa2G0bAMHbHewaQIdr/y6ag2H3yh4rd9hTXavtWDzQBkvpe2RMqFg8BxDpcQWssmjmBApGPcw93QRz6YcMg==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0"
- }
- },
- "Microsoft.Extensions.Http.Polly": {
- "type": "CentralTransitive",
- "requested": "[6.0.7, )",
- "resolved": "6.0.7",
- "contentHash": "JfnvJFyyREfeOVLuBSndcxMtK0kPiIE42FlN1qLjlwnk4irdNOrExYf9GoDLve9MIkEncDuqJPbmGLIfFaPuKA==",
- "dependencies": {
- "Microsoft.Extensions.Http": "6.0.0",
- "Polly": "7.2.2",
- "Polly.Extensions.Http": "3.0.0"
- }
- },
- "Microsoft.Extensions.Logging.Abstractions": {
- "type": "CentralTransitive",
- "requested": "[6.0.1, )",
- "resolved": "6.0.1",
- "contentHash": "dzB2Cgg+JmrouhjkcQGzSFjjvpwlq353i8oBQO2GWNjCXSzhbtBRUf28HSauWe7eib3wYOdb3tItdjRwAdwCSg=="
- },
- "Microsoft.Extensions.Options": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Health.Extensions.DependencyInjection": {
- "type": "CentralTransitive",
- "requested": "[6.2.135, )",
- "resolved": "6.2.135",
- "contentHash": "gAFXVPrV/3ujJyZvBnmJFbI0HCv6gLYBRtl/cDeEyhtyFqXTaoxGWd+RBV/WK/n5EWobWK7lLOQ5Pn4rZLPArA==",
- "dependencies": {
- "Ensure.That": "10.1.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0"
- }
- },
- "Microsoft.Health.Fhir.R4.Client": {
- "type": "CentralTransitive",
- "requested": "[3.4.280, )",
- "resolved": "3.4.280",
- "contentHash": "7D0cyrf9C2Uq9Qm3EpCpWZjJY+0qO6KSWGPzlRiwKxjGgUaHb+XIW8O7K1C3Gb3RfhS1YM+0rCdgvLR5SXxsAg==",
- "dependencies": {
- "Ensure.That": "10.1.0",
- "Hl7.Fhir.R4": "4.3.0",
- "Microsoft.Health.Client": "6.2.135"
- }
- },
- "Microsoft.Identity.Client": {
- "type": "CentralTransitive",
- "requested": "[4.54.1, )",
- "resolved": "4.54.1",
- "contentHash": "YkQkV3IRaA1W36HD4NRD1cq+QFr+4QPKK3SgTSpx+RiobXnLZ6E9anOjDi2TS7okOEofBbjR6GyTPp4IR0MnEQ==",
- "dependencies": {
- "Microsoft.IdentityModel.Abstractions": "6.22.0"
- }
- },
- "Microsoft.Toolkit.HighPerformance": {
- "type": "CentralTransitive",
- "requested": "[7.1.2, )",
- "resolved": "7.1.2",
- "contentHash": "cezzRky0BUJyYmSrcQUcX8qAv90JfUwCqWEbqfWZLHyeANo9/LWgW6y50pqbyc8r8SPXVsu2GNH98fB3VxrnvA=="
- },
- "Newtonsoft.Json": {
- "type": "CentralTransitive",
- "requested": "[13.0.3, )",
- "resolved": "13.0.3",
- "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
- },
- "Polly": {
- "type": "CentralTransitive",
- "requested": "[7.2.4, )",
- "resolved": "7.2.4",
- "contentHash": "bw00Ck5sh6ekduDE3mnCo1ohzuad946uslCDEENu3091+6UKnBuKLo4e+yaNcCzXxOZCXWY2gV4a35+K1d4LDA=="
- },
- "System.ComponentModel.Annotations": {
- "type": "CentralTransitive",
- "requested": "[5.0.0, )",
- "resolved": "5.0.0",
- "contentHash": "dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg=="
- },
- "System.Memory": {
- "type": "CentralTransitive",
- "requested": "[4.5.5, )",
- "resolved": "4.5.5",
- "contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw=="
- },
- "System.Net.Http": {
- "type": "CentralTransitive",
- "requested": "[4.3.4, )",
- "resolved": "4.3.4",
- "contentHash": "aOa2d51SEbmM+H+Csw7yJOuNZoHkrP2XnAurye5HWYgGVVU54YZDvsLUYRv6h18X3sPnjNCANmN7ZhIPiqMcjA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.1",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.DiagnosticSource": "4.3.0",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Globalization.Extensions": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.Net.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.OpenSsl": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Security.Cryptography.X509Certificates": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "runtime.native.System": "4.3.0",
- "runtime.native.System.Net.Http": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
- }
- },
- "System.Threading.Tasks.Dataflow": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "+tyDCU3/B1lDdOOAJywHQoFwyXIUghIaP2BxG79uvhfTnO+D9qIgjVlL/JV2NTliYbMHpd6eKDmHp2VHpij7MA=="
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Config/EventHubMeasurementCollectorOptions.cs b/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Config/EventHubMeasurementCollectorOptions.cs
deleted file mode 100644
index b6f7c327..00000000
--- a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Config/EventHubMeasurementCollectorOptions.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-// -------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// -------------------------------------------------------------------------------------------------
-
-using System;
-using System.Collections.Concurrent;
-using EnsureThat;
-using Microsoft.Azure.EventHubs;
-
-namespace Microsoft.Health.Fhir.Ingest.Config
-{
- public class EventHubMeasurementCollectorOptions
- {
- private readonly ConcurrentDictionary _clients = new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase);
-
- public EventHubClient GetEventHubClient(string eventHubName, string connection)
- {
- EnsureArg.IsNotNullOrWhiteSpace(eventHubName, nameof(eventHubName));
-
- if (_clients.TryGetValue(eventHubName, out var client))
- {
- return client;
- }
- else if (!string.IsNullOrWhiteSpace(connection))
- {
- return _clients.GetOrAdd(eventHubName, key => CreateClient(key, connection));
- }
-
- throw new InvalidOperationException($"Event hub connection named {eventHubName} is not defined and no connection string was provided.");
- }
-
- public void AddSender(string eventHubName, string connection)
- {
- _clients[eventHubName] = CreateClient(eventHubName, connection);
- }
-
- private static EventHubClient CreateClient(string eventHubName, string connection)
- {
- EnsureArg.IsNotNullOrWhiteSpace(eventHubName, nameof(eventHubName));
- EnsureArg.IsNotNullOrWhiteSpace(connection, nameof(connection));
-
- var sb = new EventHubsConnectionStringBuilder(connection);
- if (string.IsNullOrWhiteSpace(sb.EntityPath))
- {
- sb.EntityPath = eventHubName;
- }
-
- return EventHubClient.CreateFromConnectionString(sb.ToString());
- }
- }
-}
\ No newline at end of file
diff --git a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Data/EventDataWithJsonBodyToJTokenConverter.cs b/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Data/EventDataWithJsonBodyToJTokenConverter.cs
deleted file mode 100644
index 5b631fe3..00000000
--- a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Data/EventDataWithJsonBodyToJTokenConverter.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-// -------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// -------------------------------------------------------------------------------------------------
-
-using System.Text;
-using EnsureThat;
-using Microsoft.Azure.EventHubs;
-using Microsoft.Health.Fhir.Ingest.Service;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-
-namespace Microsoft.Health.Fhir.Ingest.Data
-{
- public class EventDataWithJsonBodyToJTokenConverter : IConverter
- {
- public JToken Convert(EventData input)
- {
- EnsureArg.IsNotNull(input, nameof(input));
- JToken token;
-
- try
- {
- var body = input.Body.Count > 0
- ? JToken.Parse(Encoding.UTF8.GetString(input.Body.Array, input.Body.Offset, input.Body.Count))
- : null;
- var data = new { Body = body, input.Properties, input.SystemProperties };
- token = JToken.FromObject(data);
- }
- catch (JsonReaderException ex)
- {
- throw new InvalidDataFormatException("Invalid event message. Cannot be parsed into a JSON object.", ex);
- }
-
- return token;
- }
- }
-}
diff --git a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Data/MeasurementToEventAsyncCollector.cs b/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Data/MeasurementToEventAsyncCollector.cs
deleted file mode 100644
index 639cfe37..00000000
--- a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Data/MeasurementToEventAsyncCollector.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-// -------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// -------------------------------------------------------------------------------------------------
-
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-using EnsureThat;
-using Microsoft.Azure.EventHubs;
-using Microsoft.Azure.WebJobs;
-using Microsoft.Health.Fhir.Ingest.Service;
-using Newtonsoft.Json;
-
-namespace Microsoft.Health.Fhir.Ingest.Data
-{
- public class MeasurementToEventAsyncCollector :
- IAsyncCollector
- {
- private readonly IEventHubService _eventHubService;
-
- public MeasurementToEventAsyncCollector(IEventHubService eventHubService)
- {
- _eventHubService = EnsureArg.IsNotNull(eventHubService, nameof(eventHubService));
- }
-
- public async Task AddAsync(IMeasurement item, CancellationToken cancellationToken = default(CancellationToken))
- {
- EnsureArg.IsNotNull(item, nameof(item));
-
- var partitionKey = Ensure.String.IsNotNullOrWhiteSpace(item.DeviceId, nameof(item.DeviceId));
- var measurementContent = JsonConvert.SerializeObject(item, Formatting.None);
- var contentBytes = Encoding.UTF8.GetBytes(measurementContent);
-
- using (var eventData = new EventData(contentBytes))
- {
- await _eventHubService.SendAsync(eventData, partitionKey).ConfigureAwait(false);
- }
- }
-
- public async Task FlushAsync(CancellationToken cancellationToken = default(CancellationToken))
- {
- // Currently no batching, no flush needed at this time.
- await Task.Yield();
- }
- }
-}
diff --git a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Host/DeviceDataNormalizationExtensions.cs b/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Host/DeviceDataNormalizationExtensions.cs
deleted file mode 100644
index f9190ef3..00000000
--- a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Host/DeviceDataNormalizationExtensions.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-// -------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// -------------------------------------------------------------------------------------------------
-
-using System;
-using EnsureThat;
-using Microsoft.Azure.WebJobs;
-using Microsoft.Extensions.Configuration;
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Health.Extensions.Host;
-using Microsoft.Health.Fhir.Ingest.Config;
-using Microsoft.Health.Fhir.Ingest.Service;
-using Microsoft.Health.Fhir.Ingest.Telemetry;
-using Microsoft.Health.Logging.Telemetry;
-
-namespace Microsoft.Health.Fhir.Ingest.Host
-{
- public static class DeviceDataNormalizationExtensions
- {
- public static IWebJobsBuilder AddDeviceNormalization(this IWebJobsBuilder builder)
- {
- EnsureArg.IsNotNull(builder, nameof(builder));
-
- builder.AddExtension()
- .BindOptions();
-
- builder.AddExtension();
-
- builder.Services.AddDeviceNormalization();
-
- return builder;
- }
- }
-}
\ No newline at end of file
diff --git a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Host/EventHubMeasurementCollectorAttribute.cs b/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Host/EventHubMeasurementCollectorAttribute.cs
deleted file mode 100644
index 60ed5d1b..00000000
--- a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Host/EventHubMeasurementCollectorAttribute.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-// -------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// -------------------------------------------------------------------------------------------------
-
-using System;
-using Microsoft.Azure.WebJobs.Description;
-
-namespace Microsoft.Health.Fhir.Ingest.Host
-{
- [Binding]
- [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = true)]
- public sealed class EventHubMeasurementCollectorAttribute : Attribute
- {
- public EventHubMeasurementCollectorAttribute(string eventHubName)
- {
- EventHubName = eventHubName;
- }
-
- [AutoResolve]
- public string EventHubName { get; private set; }
-
- [ConnectionString]
- public string Connection { get; set; }
- }
-}
\ No newline at end of file
diff --git a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Host/EventHubMeasurementCollectorProvider.cs b/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Host/EventHubMeasurementCollectorProvider.cs
deleted file mode 100644
index e99f56f2..00000000
--- a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Host/EventHubMeasurementCollectorProvider.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-// -------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// -------------------------------------------------------------------------------------------------
-
-using EnsureThat;
-using Microsoft.Azure.WebJobs;
-using Microsoft.Azure.WebJobs.Host.Config;
-using Microsoft.Azure.WebJobs.Logging;
-using Microsoft.Extensions.Logging;
-using Microsoft.Extensions.Options;
-using Microsoft.Health.Fhir.Ingest.Config;
-using Microsoft.Health.Fhir.Ingest.Data;
-using Microsoft.Health.Fhir.Ingest.Service;
-
-namespace Microsoft.Health.Fhir.Ingest.Host
-{
- public class EventHubMeasurementCollectorProvider : IExtensionConfigProvider
- {
- private readonly IOptions _options;
- private readonly ILoggerFactory _loggerFactory;
-
- public EventHubMeasurementCollectorProvider(
- IOptions options,
- ILoggerFactory loggerFactory)
- {
- _options = options;
- _loggerFactory = loggerFactory;
- }
-
- public void Initialize(ExtensionConfigContext context)
- {
- EnsureArg.IsNotNull(context, nameof(context));
-
- context.AddBindingRule()
- .BindToInput(attr => CreateCollector(attr.EventHubName, attr.Connection));
- }
-
- private IAsyncCollector CreateCollector(string eventHubName, string connectionString)
- {
- var logger = _loggerFactory?.CreateLogger(LogCategories.Executor);
- logger?.LogTrace($"Instantiating Measurement Collector for event hub {eventHubName}.");
-
- var client = _options.Value.GetEventHubClient(eventHubName, connectionString);
- return new MeasurementToEventAsyncCollector(new EventHubService(client));
- }
- }
-}
\ No newline at end of file
diff --git a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Host/IngestWebJobsStartup.cs b/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Host/IngestWebJobsStartup.cs
deleted file mode 100644
index 0e5508f5..00000000
--- a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Host/IngestWebJobsStartup.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-// -------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// -------------------------------------------------------------------------------------------------
-
-using Microsoft.Azure.WebJobs;
-using Microsoft.Azure.WebJobs.Hosting;
-using Microsoft.Health.Fhir.Ingest.Host;
-
-[assembly: WebJobsStartup(typeof(IngestWebJobsStartup), "Fhir.Ingest")]
-
-namespace Microsoft.Health.Fhir.Ingest.Host
-{
- public class IngestWebJobsStartup : IWebJobsStartup
- {
- public void Configure(IWebJobsBuilder builder)
- {
- builder.AddDeviceNormalization();
- }
- }
-}
diff --git a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Microsoft.Health.Fhir.Ingest.Legacy.csproj b/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Microsoft.Health.Fhir.Ingest.Legacy.csproj
deleted file mode 100644
index a2109c38..00000000
--- a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Microsoft.Health.Fhir.Ingest.Legacy.csproj
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
- $(LegacyVersion)
- Microsoft.Health.Fhir.Ingest.Legacy
- Microsoft.Health.Fhir.Ingest
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Service/EventHubService.cs b/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Service/EventHubService.cs
deleted file mode 100644
index 38cb1dad..00000000
--- a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Service/EventHubService.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-// -------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// -------------------------------------------------------------------------------------------------
-
-using System.Collections.Generic;
-using System.Threading.Tasks;
-using EnsureThat;
-using Microsoft.Azure.EventHubs;
-
-namespace Microsoft.Health.Fhir.Ingest.Service
-{
- public class EventHubService : IEventHubService
- {
- private readonly EventHubClient _client;
-
- public EventHubService(EventHubClient client)
- {
- _client = EnsureArg.IsNotNull(client, nameof(client));
- }
-
- public async Task CloseAsync()
- {
- await _client.CloseAsync().ConfigureAwait(false);
- }
-
- public async Task SendAsync(EventData eventData)
- {
- await _client.SendAsync(eventData).ConfigureAwait(false);
- }
-
- public async Task SendAsync(EventData eventData, string partitionKey)
- {
- await _client.SendAsync(eventData, partitionKey).ConfigureAwait(false);
- }
-
- public async Task SendAsync(IEnumerable eventData, string partitionKey)
- {
- await _client.SendAsync(eventData, partitionKey).ConfigureAwait(false);
- }
- }
-}
diff --git a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Service/EventMetricExtensions.cs b/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Service/EventMetricExtensions.cs
deleted file mode 100644
index a44fb1e5..00000000
--- a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Service/EventMetricExtensions.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-// -------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// -------------------------------------------------------------------------------------------------
-
-using System;
-using System.Collections.Generic;
-using System.Threading.Tasks;
-using Microsoft.Azure.EventHubs;
-
-namespace Microsoft.Health.Fhir.Ingest.Service
-{
- public static class EventMetricExtensions
- {
- public static Task CalculateEventStats(this IEnumerable events)
- {
- double ingressSizeBytes = 0;
-
- foreach (var e in events)
- {
- var bodySizeBytes = e.Body.Array.Length;
- var propSizeBytes = EventProcessingMeter.CalculateDictionarySizeBytes(e.Properties);
- var syspSizeBytes = EventProcessingMeter.CalculateDictionarySizeBytes(e.SystemProperties);
- ingressSizeBytes += bodySizeBytes + propSizeBytes + syspSizeBytes;
- }
-
- var eventStats = new EventStats()
- {
- TotalEventsProcessedBytes = Convert.ToDouble(ingressSizeBytes),
- };
-
- return Task.FromResult(eventStats);
- }
- }
-}
diff --git a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Service/IEventHubService.cs b/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Service/IEventHubService.cs
deleted file mode 100644
index f34abdc6..00000000
--- a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Service/IEventHubService.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-// -------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// -------------------------------------------------------------------------------------------------
-
-using System.Collections.Generic;
-using System.Threading.Tasks;
-using Microsoft.Azure.EventHubs;
-
-namespace Microsoft.Health.Fhir.Ingest.Service
-{
- ///
- /// Provide a testable interface for EventHubClient operations.
- ///
- public interface IEventHubService
- {
- Task SendAsync(EventData eventData);
-
- Task SendAsync(EventData eventData, string partitionKey);
-
- Task SendAsync(IEnumerable eventData, string partitionKey);
-
- Task CloseAsync();
- }
-}
diff --git a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Service/MeasurementEventNormalizationService.cs b/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Service/MeasurementEventNormalizationService.cs
deleted file mode 100644
index 8f7f6ec1..00000000
--- a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/Service/MeasurementEventNormalizationService.cs
+++ /dev/null
@@ -1,216 +0,0 @@
-// -------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// -------------------------------------------------------------------------------------------------
-
-using System;
-using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Linq;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Threading.Tasks.Dataflow;
-using EnsureThat;
-using Microsoft.Azure.EventHubs;
-using Microsoft.Azure.WebJobs;
-using Microsoft.Health.Fhir.Ingest.Data;
-using Microsoft.Health.Fhir.Ingest.Telemetry;
-using Microsoft.Health.Fhir.Ingest.Template;
-using Microsoft.Health.Logging.Telemetry;
-using Newtonsoft.Json.Linq;
-
-namespace Microsoft.Health.Fhir.Ingest.Service
-{
- public class MeasurementEventNormalizationService : IDataNormalizationService
- {
- private const TaskContinuationOptions AsyncContinueOnSuccess = TaskContinuationOptions.RunContinuationsAsynchronously | TaskContinuationOptions.NotOnFaulted | TaskContinuationOptions.NotOnCanceled;
- private readonly IContentTemplate _contentTemplate = null;
- private readonly Data.IConverter _converter = null;
- private readonly int _maxParallelism;
- private readonly ITelemetryLogger _log;
- private readonly int _asyncCollectorBatchSize;
- private readonly IExceptionTelemetryProcessor _exceptionTelemetryProcessor;
-
- public MeasurementEventNormalizationService(
- ITelemetryLogger log,
- IContentTemplate contentTemplate,
- IExceptionTelemetryProcessor exceptionTelemetryProcessor)
- : this(log, contentTemplate, new EventDataWithJsonBodyToJTokenConverter(), exceptionTelemetryProcessor, 1)
- {
- }
-
- public MeasurementEventNormalizationService(
- ITelemetryLogger log,
- IContentTemplate contentTemplate,
- Data.IConverter converter,
- IExceptionTelemetryProcessor exceptionTelemetryProcessor,
- int maxParallelism,
- int asyncCollectorBatchSize = 200)
- {
- _log = EnsureArg.IsNotNull(log, nameof(log));
- _contentTemplate = EnsureArg.IsNotNull(contentTemplate, nameof(contentTemplate));
- _converter = EnsureArg.IsNotNull(converter, nameof(converter));
- _exceptionTelemetryProcessor = EnsureArg.IsNotNull(exceptionTelemetryProcessor, nameof(exceptionTelemetryProcessor));
- _maxParallelism = maxParallelism;
- _asyncCollectorBatchSize = EnsureArg.IsGt(asyncCollectorBatchSize, 0, nameof(asyncCollectorBatchSize));
- }
-
- public async Task ProcessAsync(IEnumerable data, IAsyncCollector collector, Func> errorConsumer = null)
- {
- EnsureArg.IsNotNull(data, nameof(data));
- EnsureArg.IsNotNull(collector, nameof(collector));
-
- await StartConsumer(StartProducer(data), new EnumerableAsyncCollectorFacade(collector), errorConsumer ?? ProcessErrorAsync).ConfigureAwait(false);
- }
-
- public async Task ProcessAsync(IEnumerable data, IEnumerableAsyncCollector collector, Func> errorConsumer = null)
- {
- EnsureArg.IsNotNull(data, nameof(data));
- EnsureArg.IsNotNull(collector, nameof(collector));
-
- await StartConsumer(StartProducer(data), collector, errorConsumer ?? ProcessErrorAsync).ConfigureAwait(false);
- }
-
- private static ISourceBlock StartProducer(IEnumerable data)
- {
- var producer = new BufferBlock(new DataflowBlockOptions { BoundedCapacity = DataflowBlockOptions.Unbounded });
-
- _ = Task.Run(async () =>
- {
- foreach (var evt in data)
- {
- while (!await producer.SendAsync(evt))
- {
- await Task.Yield();
- }
- }
-
- producer.Complete();
- });
-
- return producer;
- }
-
- private async Task StartConsumer(ISourceBlock producer, IEnumerableAsyncCollector collector, Func> errorConsumer)
- {
- // Collect non operation canceled exceptions as they occur to ensure the entire data stream is processed
- var exceptions = new ConcurrentBag();
- var cts = new CancellationTokenSource();
- var transformingConsumer = new TransformManyBlock(
- async evt =>
- {
- var createdMeasurements = new List<(string, IMeasurement)>();
- try
- {
- string partitionId = evt.SystemProperties.PartitionKey;
- var deviceEventProcessingLatency = DateTime.UtcNow - evt.SystemProperties.EnqueuedTimeUtc;
-
- _log.LogMetric(
- IomtMetrics.DeviceEventProcessingLatency(partitionId),
- deviceEventProcessingLatency.TotalSeconds);
-
- _log.LogMetric(
- IomtMetrics.DeviceEventProcessingLatencyMs(partitionId),
- deviceEventProcessingLatency.TotalMilliseconds);
-
- var token = _converter.Convert(evt);
-
- try
- {
- var stopWatch = new Stopwatch();
- stopWatch.Start();
-
- foreach (var measurement in _contentTemplate.GetMeasurements(token))
- {
- measurement.IngestionTimeUtc = evt.SystemProperties.EnqueuedTimeUtc;
- createdMeasurements.Add((partitionId, measurement));
-
- stopWatch.Stop();
- _log.LogMetric(
- IomtMetrics.NormalizedEventGenerationTimeMs(partitionId),
- stopWatch.ElapsedMilliseconds);
- stopWatch.Reset();
- stopWatch.Start();
- }
- }
- catch (Exception ex)
- {
- // Translate all Normalization Mapping exceptions into a common type for easy identification.
- throw new NormalizationDataMappingException(ex, nameof(NormalizationDataMappingException));
- }
- }
- catch (Exception ex)
- {
- if (await errorConsumer(ex, evt).ConfigureAwait(false))
- {
- exceptions.Add(ex);
- }
- }
-
- return createdMeasurements;
- });
-
- var asyncCollectorConsumer = new ActionBlock<(string, IMeasurement)[]>(
- async partitionIdAndeasurements =>
- {
- try
- {
- var measurements = partitionIdAndeasurements.Select(pm => pm.Item2);
- await collector.AddAsync(measurements, cts.Token).ConfigureAwait(false);
-
- foreach (var partitionAndMeasurment in partitionIdAndeasurements)
- {
- _log.LogMetric(IomtMetrics.NormalizedEvent(partitionAndMeasurment.Item1), 1);
- }
- }
- catch (OperationCanceledException)
- {
- cts.Cancel();
- throw;
- }
- catch (Exception ex)
- {
- exceptions.Add(ex);
- }
- },
- new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = _maxParallelism, SingleProducerConstrained = true, CancellationToken = cts.Token });
-
- // Connect the input EventData to the transformer block
- producer.LinkTo(transformingConsumer, new DataflowLinkOptions { PropagateCompletion = true });
-
- // Batch the produced IMeasurements
- var batchBlock = new BatchBlock<(string, IMeasurement)>(_asyncCollectorBatchSize);
- transformingConsumer.LinkTo(batchBlock, new DataflowLinkOptions { PropagateCompletion = true });
-
- // Connect the final action of writing events into EventHub
- batchBlock.LinkTo(asyncCollectorConsumer, new DataflowLinkOptions { PropagateCompletion = true });
-
- await asyncCollectorConsumer.Completion
- .ContinueWith(
- task =>
- {
- if (!exceptions.IsEmpty)
- {
- throw new AggregateException(exceptions);
- }
- },
- cts.Token,
- AsyncContinueOnSuccess,
- TaskScheduler.Current)
- .ConfigureAwait(false);
- }
-
- ///
- /// Default error processor that returns true if the exception is handled and false otherwise.
- ///
- /// The exception to be processed.
- /// Event data that encountered an error upon processing.
- /// Returns true if the exception is handled and false otherwise.
- private Task ProcessErrorAsync(Exception ex, EventData data)
- {
- var handled = _exceptionTelemetryProcessor.HandleException(ex, _log);
- return Task.FromResult(!handled);
- }
- }
-}
\ No newline at end of file
diff --git a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/packages.lock.json b/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/packages.lock.json
deleted file mode 100644
index 26dbca0d..00000000
--- a/src/lib/Microsoft.Health.Fhir.Ingest.Legacy/packages.lock.json
+++ /dev/null
@@ -1,2117 +0,0 @@
-{
- "version": 2,
- "dependencies": {
- ".NETStandard,Version=v2.0": {
- "Ensure.That": {
- "type": "Direct",
- "requested": "[10.1.0, )",
- "resolved": "10.1.0",
- "contentHash": "rzTMSs0lQnu0WsesvTjs/zDzqiZXb9r5dv+wFQcPg/iIZqXb5BzwpIWEwi8Q3HA0TS4ytRcY129aSek6IzuOmA=="
- },
- "Microsoft.ApplicationInsights": {
- "type": "Direct",
- "requested": "[2.21.0, )",
- "resolved": "2.21.0",
- "contentHash": "btZEDWAFNo9CoYliMCriSMTX3ruRGZTtYw4mo2XyyfLlowFicYVM2Xszi5evDG95QRYV7MbbH3D2RqVwfZlJHw==",
- "dependencies": {
- "System.Diagnostics.DiagnosticSource": "5.0.0"
- }
- },
- "Microsoft.Azure.EventHubs": {
- "type": "Direct",
- "requested": "[3.0.0, )",
- "resolved": "3.0.0",
- "contentHash": "WwRcZ0ybAWL/gor0jT29WkpAtO5rxFTb2jAMQPPmej/FbclytH/tK3v6U4sIgFggesf+l9wupxDuid4AX6qMRQ==",
- "dependencies": {
- "Microsoft.Azure.Amqp": "2.3.7",
- "Microsoft.Azure.Services.AppAuthentication": "1.0.3",
- "Microsoft.IdentityModel.Clients.ActiveDirectory": "4.5.0",
- "System.Diagnostics.DiagnosticSource": "4.5.0",
- "System.IdentityModel.Tokens.Jwt": "5.2.4",
- "System.Net.Http": "4.3.3",
- "System.Reflection.TypeExtensions": "4.3.0",
- "System.Runtime.Serialization.Primitives": "4.3.0"
- }
- },
- "Microsoft.Azure.Functions.Extensions": {
- "type": "Direct",
- "requested": "[1.1.0, )",
- "resolved": "1.1.0",
- "contentHash": "zYKtQQoS1fdzufxFApuMFiFtoi9QAGH6McXxntpylwLKgKjmCMWdgUd1dcekzTKNR9DPSDPRLiulvukqXnpWrQ==",
- "dependencies": {
- "Microsoft.Azure.WebJobs": "3.0.18",
- "Microsoft.Extensions.DependencyInjection": "2.1.0"
- }
- },
- "Microsoft.Azure.WebJobs": {
- "type": "Direct",
- "requested": "[3.0.31, )",
- "resolved": "3.0.31",
- "contentHash": "Jn6E7OgT7LkwVB6lCpjXJcoQIvKrbJT+taVLA4CekEpa21pzZv6nQ2sYRSNzPz5ul3FAcYhmrCQgV7v2iopjgA==",
- "dependencies": {
- "Microsoft.Azure.WebJobs.Core": "3.0.31",
- "Microsoft.Extensions.Configuration": "2.1.1",
- "Microsoft.Extensions.Configuration.Abstractions": "2.1.1",
- "Microsoft.Extensions.Configuration.EnvironmentVariables": "2.1.0",
- "Microsoft.Extensions.Configuration.Json": "2.1.0",
- "Microsoft.Extensions.Hosting": "2.1.0",
- "Microsoft.Extensions.Logging": "2.1.1",
- "Microsoft.Extensions.Logging.Abstractions": "2.1.1",
- "Microsoft.Extensions.Logging.Configuration": "2.1.0",
- "Newtonsoft.Json": "11.0.2",
- "System.Memory.Data": "1.0.1",
- "System.Threading.Tasks.Dataflow": "4.8.0"
- }
- },
- "Microsoft.Extensions.Caching.Memory": {
- "type": "Direct",
- "requested": "[6.0.1, )",
- "resolved": "6.0.1",
- "contentHash": "B4y+Cev05eMcjf1na0v9gza6GUtahXbtY1JCypIgx3B4Ea/KAgsWyXEmW4q6zMbmTMtKzmPVk09rvFJirvMwTg==",
- "dependencies": {
- "Microsoft.Extensions.Caching.Abstractions": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.Abstractions": {
- "type": "Direct",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "qWzV9o+ZRWq+pGm+1dF+R7qTgTYoXvbyowRoBxQJGfqTpqDun2eteerjRQhq5PQ/14S+lqto3Ft4gYaRyl4rdQ==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.Logging.Abstractions": {
- "type": "Direct",
- "requested": "[6.0.1, )",
- "resolved": "6.0.1",
- "contentHash": "dzB2Cgg+JmrouhjkcQGzSFjjvpwlq353i8oBQO2GWNjCXSzhbtBRUf28HSauWe7eib3wYOdb3tItdjRwAdwCSg==",
- "dependencies": {
- "System.Buffers": "4.5.1",
- "System.Memory": "4.5.4"
- }
- },
- "Microsoft.Net.Compilers.Toolset": {
- "type": "Direct",
- "requested": "[4.2.0, )",
- "resolved": "4.2.0",
- "contentHash": "Hs7t4nRCp68XaWcGf3+SZ5Rud3Km6zQ8+jvR42tBohjVu2Nu2x2QhHVpEzQ56aZmGYEcZUztrTHLYyE0GYLpvg=="
- },
- "Microsoft.Toolkit.HighPerformance": {
- "type": "Direct",
- "requested": "[7.1.2, )",
- "resolved": "7.1.2",
- "contentHash": "cezzRky0BUJyYmSrcQUcX8qAv90JfUwCqWEbqfWZLHyeANo9/LWgW6y50pqbyc8r8SPXVsu2GNH98fB3VxrnvA==",
- "dependencies": {
- "Microsoft.Bcl.HashCode": "1.1.0",
- "System.Memory": "4.5.4",
- "System.Runtime.CompilerServices.Unsafe": "5.0.0",
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "NETStandard.Library": {
- "type": "Direct",
- "requested": "[2.0.3, )",
- "resolved": "2.0.3",
- "contentHash": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0"
- }
- },
- "Newtonsoft.Json": {
- "type": "Direct",
- "requested": "[13.0.3, )",
- "resolved": "13.0.3",
- "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
- },
- "Polly": {
- "type": "Direct",
- "requested": "[7.2.4, )",
- "resolved": "7.2.4",
- "contentHash": "bw00Ck5sh6ekduDE3mnCo1ohzuad946uslCDEENu3091+6UKnBuKLo4e+yaNcCzXxOZCXWY2gV4a35+K1d4LDA=="
- },
- "StyleCop.Analyzers": {
- "type": "Direct",
- "requested": "[1.1.118, )",
- "resolved": "1.1.118",
- "contentHash": "Onx6ovGSqXSK07n/0eM3ZusiNdB6cIlJdabQhWGgJp3Vooy9AaLS/tigeybOJAobqbtggTamoWndz72JscZBvw=="
- },
- "System.Memory": {
- "type": "Direct",
- "requested": "[4.5.5, )",
- "resolved": "4.5.5",
- "contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
- "dependencies": {
- "System.Buffers": "4.5.1",
- "System.Numerics.Vectors": "4.4.0",
- "System.Runtime.CompilerServices.Unsafe": "4.5.3"
- }
- },
- "System.Text.RegularExpressions": {
- "type": "Direct",
- "requested": "[4.3.1, )",
- "resolved": "4.3.1",
- "contentHash": "N0kNRrWe4+nXOWlpLT4LAY5brb8caNFlUuIRpraCVMDLYutKkol1aV079rQjLuSxKMJT2SpBQsYX9xbcTMmzwg==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.1",
- "System.Runtime.Extensions": "4.3.1",
- "System.Threading": "4.3.0"
- }
- },
- "System.Threading.Tasks.Dataflow": {
- "type": "Direct",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "+tyDCU3/B1lDdOOAJywHQoFwyXIUghIaP2BxG79uvhfTnO+D9qIgjVlL/JV2NTliYbMHpd6eKDmHp2VHpij7MA=="
- },
- "Azure.Core.Amqp": {
- "type": "Transitive",
- "resolved": "1.3.0",
- "contentHash": "6GG4gyFkAuHtpBVkvj0wE5+lCM+ttsZlIWAipBkI+jlCUlTgrTiNUROBFnb8xuKoymVDw9Tf1W8RoKqgbd71lg==",
- "dependencies": {
- "Microsoft.Azure.Amqp": "2.6.1",
- "System.Memory": "4.5.4",
- "System.Memory.Data": "1.0.2"
- }
- },
- "Azure.Storage.Common": {
- "type": "Transitive",
- "resolved": "12.15.0",
- "contentHash": "/SAgn9hhjfHO0RPWp0ilGLr3aMPz+rrz6iRgLKTb1708pI78WLtsQ7/kGooUbCU2flSnk/egmJ0Qj9rFVks/nA==",
- "dependencies": {
- "Azure.Core": "1.31.0",
- "System.IO.Hashing": "6.0.0"
- }
- },
- "JmesPath.Net.Parser": {
- "type": "Transitive",
- "resolved": "1.0.205",
- "contentHash": "ghZ/GtO0xm+ieE2IxOdlwI5u16qBf8qhFqbeVOXQ56wtjweuP0oC9UAYd0gjRrrrcLAvQ9eV79mlHLy+6ZiQ9w==",
- "dependencies": {
- "NETStandard.Library": "1.6.1"
- }
- },
- "Microsoft.AspNetCore.Authentication.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "VloMLDJMf3n/9ic5lCBOa42IBYJgyB1JhzLsL68Zqg+2bEPWfGBj/xCJy/LrKTArN0coOcZp3wyVTZlx0y9pHQ==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
- "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
- "Microsoft.Extensions.Options": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Authentication.Core": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "XlVJzJ5wPOYW+Y0J6Q/LVTEyfS4ssLXmt60T0SPP+D8abVhBTl+cgw2gDHlyKYIkcJg7btMVh383NDkMVqD/fg==",
- "dependencies": {
- "Microsoft.AspNetCore.Authentication.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.Http": "2.2.0",
- "Microsoft.AspNetCore.Http.Extensions": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Authorization": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "/L0W8H3jMYWyaeA9gBJqS/tSWBegP9aaTM0mjRhxTttBY9z4RVDRYJ2CwPAmAXIuPr3r1sOw+CS8jFVRGHRezQ==",
- "dependencies": {
- "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
- "Microsoft.Extensions.Options": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Authorization.Policy": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "aJCo6niDRKuNg2uS2WMEmhJTooQUGARhV2ENQ2tO5443zVHUo19MSgrgGo9FIrfD+4yKPF8Q+FF33WkWfPbyKw==",
- "dependencies": {
- "Microsoft.AspNetCore.Authentication.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.Authorization": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Hosting.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "ubycklv+ZY7Kutdwuy1W4upWcZ6VFR8WUXU7l7B2+mvbDBBPAcfpi+E+Y5GFe+Q157YfA3C49D2GCjAZc7Mobw==",
- "dependencies": {
- "Microsoft.AspNetCore.Hosting.Server.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
- "Microsoft.Extensions.Hosting.Abstractions": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Hosting.Server.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "1PMijw8RMtuQF60SsD/JlKtVfvh4NORAhF4wjysdABhlhTrYmtgssqyncR0Stq5vqtjplZcj6kbT4LRTglt9IQ==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Features": "2.2.0",
- "Microsoft.Extensions.Configuration.Abstractions": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Http": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "YogBSMotWPAS/X5967pZ+yyWPQkThxhmzAwyCHCSSldzYBkW5W5d6oPfBaPqQOnSHYTpSOSOkpZoAce0vwb6+A==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.WebUtilities": "2.2.0",
- "Microsoft.Extensions.ObjectPool": "2.2.0",
- "Microsoft.Extensions.Options": "2.2.0",
- "Microsoft.Net.Http.Headers": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Http.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "Nxs7Z1q3f1STfLYKJSVXCs1iBl+Ya6E8o4Oy1bCxJ/rNI44E/0f6tbsrVqAWfB7jlnJfyaAtIalBVxPKUPQb4Q==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Features": "2.2.0",
- "System.Text.Encodings.Web": "4.5.0"
- }
- },
- "Microsoft.AspNetCore.Http.Extensions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "2DgZ9rWrJtuR7RYiew01nGRzuQBDaGHGmK56Rk54vsLLsCdzuFUPqbDTJCS1qJQWTbmbIQ9wGIOjpxA1t0l7/w==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "2.2.0",
- "Microsoft.Net.Http.Headers": "2.2.0",
- "System.Buffers": "4.5.0"
- }
- },
- "Microsoft.AspNetCore.Http.Features": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "ziFz5zH8f33En4dX81LW84I6XrYXKf9jg6aM39cM+LffN9KJahViKZ61dGMSO2gd3e+qe5yBRwsesvyqlZaSMg==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.ResponseCaching.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "CIHWEKrHzZfFp7t57UXsueiSA/raku56TgRYauV/W1+KAQq6vevz60zjEKaazt3BI76zwMz3B4jGWnCwd8kwQw==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Routing": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "jAhDBy0wryOnMhhZTtT9z63gJbvCzFuLm8yC6pHzuVu9ZD1dzg0ltxIwT4cfwuNkIL/TixdKsm3vpVOpG8euWQ==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Extensions": "2.2.0",
- "Microsoft.AspNetCore.Routing.Abstractions": "2.2.0",
- "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
- "Microsoft.Extensions.ObjectPool": "2.2.0",
- "Microsoft.Extensions.Options": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Routing.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "lRRaPN7jDlUCVCp9i0W+PB0trFaKB0bgMJD7hEJS9Uo4R9MXaMC8X2tJhPLmeVE3SGDdYI4QNKdVmhNvMJGgPQ==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Abstractions": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.WebUtilities": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "9ErxAAKaDzxXASB/b5uLEkLgUWv1QbeVxyJYEHQwMaxXOeFFVkQxiq8RyfVcifLU7NR0QY0p3acqx4ZpYfhHDg==",
- "dependencies": {
- "Microsoft.Net.Http.Headers": "2.2.0",
- "System.Text.Encodings.Web": "4.5.0"
- }
- },
- "Microsoft.Azure.Amqp": {
- "type": "Transitive",
- "resolved": "2.6.2",
- "contentHash": "6hQqWRiHRd9J6pGBlzQM9LBOWaO8xIsRVYs3olrDGqOkK7v9mgwz9rmrv+49FIbLEOGgkP9IKLnXdsA4Y8IIYw=="
- },
- "Microsoft.Azure.Services.AppAuthentication": {
- "type": "Transitive",
- "resolved": "1.0.3",
- "contentHash": "ywpQaK1klu1IoX4VUf+TBmU4kR71aWNI6O5rEIJU8z28L2xhJhnIm7k2Nf1Zu/PygeuOtt5g0QPCk5+lLltbeQ==",
- "dependencies": {
- "Microsoft.IdentityModel.Clients.ActiveDirectory": "3.14.2",
- "NETStandard.Library": "1.6.1",
- "System.Diagnostics.Process": "4.3.0"
- }
- },
- "Microsoft.Azure.WebJobs.Core": {
- "type": "Transitive",
- "resolved": "3.0.31",
- "contentHash": "iStV0MQ9env8R2F+8cbaynMK4TDkU6bpPVLdOzIs83iriHYMF+uWF6WZWI8ZJahWR37puQWc86u1YCsoIZEocA==",
- "dependencies": {
- "System.ComponentModel.Annotations": "4.4.0",
- "System.Diagnostics.TraceSource": "4.3.0"
- }
- },
- "Microsoft.Bcl.HashCode": {
- "type": "Transitive",
- "resolved": "1.1.0",
- "contentHash": "J2G1k+u5unBV+aYcwxo94ip16Rkp65pgWFb0R6zwJipzWNMgvqlWeuI7/+R+e8bob66LnSG+llLJ+z8wI94cHg=="
- },
- "Microsoft.DotNet.PlatformAbstractions": {
- "type": "Transitive",
- "resolved": "2.1.0",
- "contentHash": "9KPDwvb/hLEVXYruVHVZ8BkebC8j17DmPb56LnqRF74HqSPLjCkrlFUjOtFpQPA2DeADBRTI/e69aCfRBfrhxw==",
- "dependencies": {
- "System.AppContext": "4.1.0",
- "System.Collections": "4.0.11",
- "System.IO": "4.1.0",
- "System.IO.FileSystem": "4.0.1",
- "System.Reflection.TypeExtensions": "4.1.0",
- "System.Runtime.Extensions": "4.1.0",
- "System.Runtime.InteropServices": "4.1.0",
- "System.Runtime.InteropServices.RuntimeInformation": "4.0.0"
- }
- },
- "Microsoft.Extensions.Caching.Abstractions": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "bcz5sSFJbganH0+YrfvIjJDIcKNW7TL07C4d1eTmXy/wOt52iz4LVogJb6pazs7W0+74j0YpXFErvp++Aq5Bsw==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.CommandLine": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "3nL1qCkZ1Oxx14ZTzgo4MmlO7tso7F+TtMZAY2jUAtTLyAcDp+EDjk3RqafoKiNaePyPvvlleEcBxh3b2Hzl1g==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "6.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.EnvironmentVariables": {
- "type": "Transitive",
- "resolved": "6.0.1",
- "contentHash": "pnyXV1LFOsYjGveuC07xp0YHIyGq7jRq5Ncb5zrrIieMLWVwgMyYxcOH0jTnBedDT4Gh1QinSqsjqzcieHk1og==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "6.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.FileExtensions": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "V4Dth2cYMZpw3HhGw9XUDIijpI6gN+22LDt0AhufIgOppCUfpWX4483OmN+dFXRJkJLc8Tv0Q8QK+1ingT2+KQ==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "6.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Physical": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.DependencyInjection.Abstractions": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==",
- "dependencies": {
- "Microsoft.Bcl.AsyncInterfaces": "6.0.0",
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "Microsoft.Extensions.DependencyModel": {
- "type": "Transitive",
- "resolved": "2.1.0",
- "contentHash": "nS2XKqi+1A1umnYNLX2Fbm/XnzCxs5i+zXVJ3VC6r9t2z0NZr9FLnJN4VQpKigdcWH/iFTbMuX6M6WQJcTjVIg==",
- "dependencies": {
- "Microsoft.DotNet.PlatformAbstractions": "2.1.0",
- "Newtonsoft.Json": "9.0.1",
- "System.Diagnostics.Debug": "4.0.11",
- "System.Dynamic.Runtime": "4.0.11",
- "System.Linq": "4.1.0"
- }
- },
- "Microsoft.Extensions.FileProviders.Abstractions": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "0pd4/fho0gC12rQswaGQxbU34jOS1TPS8lZPpkFCH68ppQjHNHYle9iRuHeev1LhrJ94YPvzcRd8UmIuFk23Qw==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.FileProviders.Physical": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "QvkL7l0nM8udt3gfyu0Vw8bbCXblxaKOl7c2oBfgGy4LCURRaL9XWZX1FWJrQc43oMokVneVxH38iz+bY1sbhg==",
- "dependencies": {
- "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileSystemGlobbing": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.FileSystemGlobbing": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "ip8jnL1aPiaPeKINCqaTEbvBFDmVx9dXQEBZ2HOBRXPD1eabGNqP/bKlsIcp7U2lGxiXd5xIhoFcmY8nM4Hdiw=="
- },
- "Microsoft.Extensions.Hosting.Abstractions": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "GcT5l2CYXL6Sa27KCSh0TixsRfADUgth+ojQSD5EkzisZxmGFh7CwzkcYuGwvmXLjr27uWRNrJ2vuuEjMhU05Q==",
- "dependencies": {
- "Microsoft.Bcl.AsyncInterfaces": "6.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
- "System.Runtime.CompilerServices.Unsafe": "6.0.0",
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "Microsoft.Extensions.Logging": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==",
- "dependencies": {
- "Microsoft.Bcl.AsyncInterfaces": "6.0.0",
- "Microsoft.Extensions.DependencyInjection": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "System.Diagnostics.DiagnosticSource": "6.0.0"
- }
- },
- "Microsoft.Extensions.Logging.Configuration": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "ZDskjagmBAbv+K8rYW9VhjPplhbOE63xUD0DiuydZJwt15dRyoqicYklLd86zzeintUc7AptDkHn+YhhYkYo8A==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "6.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.Configuration.Binder": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "Microsoft.Extensions.Options.ConfigurationExtensions": "6.0.0"
- }
- },
- "Microsoft.Extensions.Logging.Console": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "gsqKzOEdsvq28QiXFxagmn1oRB9GeI5GgYCkoybZtQA0IUb7QPwf1WmN3AwJeNIsadTvIFQCiVK0OVIgKfOBGg==",
- "dependencies": {
- "Microsoft.Bcl.AsyncInterfaces": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging.Configuration": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "System.Buffers": "4.5.1",
- "System.Text.Json": "6.0.0"
- }
- },
- "Microsoft.Extensions.Logging.Debug": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "M9g/JixseSZATJE9tcMn9uzoD4+DbSglivFqVx8YkRJ7VVPmnvCEbOZ0AAaxsL1EKyI4cz07DXOOJExxNsUOHw==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0"
- }
- },
- "Microsoft.Extensions.Logging.EventLog": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "rlo0RxlMd0WtLG3CHI0qOTp6fFn7MvQjlrCjucA31RqmiMFCZkF8CHNbe8O7tbBIyyoLGWB1he9CbaA5iyHthg==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "System.Diagnostics.EventLog": "6.0.0"
- }
- },
- "Microsoft.Extensions.Logging.EventSource": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "BeDyyqt7nkm/nr+Gdk+L8n1tUT/u33VkbXAOesgYSNsxDM9hJ1NOBGoZfj9rCbeD2+9myElI6JOVVFmnzgeWQA==",
- "dependencies": {
- "Microsoft.Bcl.AsyncInterfaces": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0",
- "System.Memory": "4.5.4",
- "System.Runtime.CompilerServices.Unsafe": "6.0.0",
- "System.Text.Json": "6.0.0"
- }
- },
- "Microsoft.Extensions.ObjectPool": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "gA8H7uQOnM5gb+L0uTNjViHYr+hRDqCdfugheGo/MxQnuHzmhhzCBTIPm19qL1z1Xe0NEMabfcOBGv9QghlZ8g=="
- },
- "Microsoft.Extensions.Options.ConfigurationExtensions": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "bXWINbTn0vC0FYc9GaQTISbxhQLAMrvtbuvD9N6JelEaIS/Pr62wUCinrq5bf1WRBGczt1v4wDhxFtVFNcMdUQ==",
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.Configuration.Binder": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.Primitives": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==",
- "dependencies": {
- "System.Memory": "4.5.4",
- "System.Runtime.CompilerServices.Unsafe": "6.0.0"
- }
- },
- "Microsoft.Identity.Client.Extensions.Msal": {
- "type": "Transitive",
- "resolved": "2.31.0",
- "contentHash": "IhGSqN0szneKC5Qk3/okJQJbDpQfLW/+mvslhzJPox4t2UuIkA2ZHe4w/z62ASye46G9sQWF9qqLXTgNacE2xQ==",
- "dependencies": {
- "Microsoft.Identity.Client": "4.54.1",
- "System.IO.FileSystem.AccessControl": "5.0.0",
- "System.Security.Cryptography.ProtectedData": "4.5.0"
- }
- },
- "Microsoft.IdentityModel.Abstractions": {
- "type": "Transitive",
- "resolved": "6.22.0",
- "contentHash": "iI+9V+2ciCrbheeLjpmjcqCnhy+r6yCoEcid3nkoFWerHgjVuT6CPM4HODUTtUPe1uwks4wcnAujJ8u+IKogHQ=="
- },
- "Microsoft.IdentityModel.Clients.ActiveDirectory": {
- "type": "Transitive",
- "resolved": "4.5.0",
- "contentHash": "YcSLCMaFwhy7EBIndvzjRde2OiT7DoMCLRhgBWzrOUAUrqYEMtyzwm1D6J+nli1GpYQ/+NtujVn1wFiIMC0/Yw==",
- "dependencies": {
- "NETStandard.Library": "1.6.1",
- "System.Runtime.Serialization.Json": "4.3.0",
- "System.Runtime.Serialization.Primitives": "4.3.0",
- "System.Security.Cryptography.X509Certificates": "4.3.0",
- "System.Security.SecureString": "4.3.0",
- "System.Xml.XDocument": "4.3.0"
- }
- },
- "Microsoft.IdentityModel.JsonWebTokens": {
- "type": "Transitive",
- "resolved": "5.2.4",
- "contentHash": "494JCwsMINjjmrl/kOTdOtcsm3ESh8W16zg0b3nNJBgnpOu9eDgs8KDOtP3kRjSQtHcLrTsBI1XJ5FbhKm1TrA==",
- "dependencies": {
- "Microsoft.IdentityModel.Tokens": "5.2.4",
- "NETStandard.Library": "1.6.1",
- "Newtonsoft.Json": "10.0.1"
- }
- },
- "Microsoft.IdentityModel.Logging": {
- "type": "Transitive",
- "resolved": "5.2.4",
- "contentHash": "12iZoCdMrwcQ8yOvg0AlG9oz6dIqvCczWsrHdALICsMWcBNFCAEyA0LELUYD0FZ7FVGvh4Z/KrPMkBVqVnIg2A==",
- "dependencies": {
- "NETStandard.Library": "1.6.1",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0"
- }
- },
- "Microsoft.IdentityModel.Tokens": {
- "type": "Transitive",
- "resolved": "5.2.4",
- "contentHash": "hVkEnZTnU23IQv5hsbBmlJgmr/NdDg1yU6QPSoVirbfK1z+sDSItzDpZuKDcLjE81v174BlChdezKfVOzpr2YA==",
- "dependencies": {
- "Microsoft.IdentityModel.Logging": "5.2.4",
- "NETStandard.Library": "1.6.1",
- "Newtonsoft.Json": "10.0.1",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Tools": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.InteropServices.RuntimeInformation": "4.3.0",
- "System.Runtime.Serialization.Xml": "4.3.0",
- "System.Security.Claims": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.X509Certificates": "4.3.0",
- "System.Text.RegularExpressions": "4.3.0",
- "System.Threading": "4.3.0"
- }
- },
- "Microsoft.Net.Http.Headers": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "iZNkjYqlo8sIOI0bQfpsSoMTmB/kyvmV2h225ihyZT33aTp48ZpF6qYnXxzSXmHt8DpBAwBTX+1s1UFLbYfZKg==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "2.2.0",
- "System.Buffers": "4.5.0"
- }
- },
- "Microsoft.NETCore.Platforms": {
- "type": "Transitive",
- "resolved": "1.1.1",
- "contentHash": "TMBuzAHpTenGbGgk0SMTwyEkyijY/Eae4ZGsFNYJvAr/LDn1ku3Etp3FPxChmDp5HHF3kzJuoaa08N0xjqAJfQ=="
- },
- "Microsoft.NETCore.Targets": {
- "type": "Transitive",
- "resolved": "1.1.3",
- "contentHash": "3Wrmi0kJDzClwAC+iBdUBpEKmEle8FQNsCs77fkiOIw/9oYA07bL1EZNX0kQ2OMN3xpwvl0vAtOCYY3ndDNlhQ=="
- },
- "Microsoft.Win32.Primitives": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "Microsoft.Win32.Registry": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "Lw1/VwLH1yxz6SfFEjVRCN0pnflLEsWgnV4qsdJ512/HhTwnKXUG+zDQ4yTO3K/EJQemGoNaBHX5InISNKTzUQ==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0"
- }
- },
- "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "7VSGO0URRKoMEAq0Sc9cRz8mb6zbyx/BZDEWhgPdzzpmFhkam3fJ1DAGWFXBI4nGlma+uPKpfuMQP5LXRnOH5g=="
- },
- "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "0oAaTAm6e2oVH+/Zttt0cuhGaePQYKII1dY8iaqP7CvOpVKgLybKRFvQjXR2LtxXOXTVPNv14j0ot8uV+HrUmw=="
- },
- "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "G24ibsCNi5Kbz0oXWynBoRgtGvsw5ZSVEWjv13/KiCAM8C6wz9zzcCniMeQFIkJ2tasjo2kXlvlBZhplL51kGg=="
- },
- "runtime.native.System": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0"
- }
- },
- "runtime.native.System.Net.Http": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0"
- }
- },
- "runtime.native.System.Security.Cryptography.Apple": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==",
- "dependencies": {
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0"
- }
- },
- "runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "QR1OwtwehHxSeQvZKXe+iSd+d3XZNkEcuWMFYa2i0aG1l+lR739HPicKMlTbJst3spmeekDVBUS7SeS26s4U/g==",
- "dependencies": {
- "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
- }
- },
- "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "I+GNKGg2xCHueRd1m9PzeEW7WLbNNLznmTuEi8/vZX71HudUbx1UTwlGkiwMri7JLl8hGaIAWnA/GONhu+LOyQ=="
- },
- "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "1Z3TAq1ytS1IBRtPXJvEUZdVsfWfeNEhBkbiOCGEl9wwAfsjP2lz3ZFDx5tq8p60/EqbS0HItG5piHuB71RjoA=="
- },
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ=="
- },
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "6mU/cVmmHtQiDXhnzUImxIcDL48GbTk+TsptXyJA+MIOG9LRjPoAQC/qBFB7X+UNyK86bmvGwC8t+M66wsYC8w=="
- },
- "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "vjwG0GGcTW/PPg6KVud8F9GLWYuAV1rrw1BKAqY0oh4jcUqg15oYF1+qkGR2x2ZHM4DQnWKQ7cJgYbfncz/lYg=="
- },
- "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "7KMFpTkHC/zoExs+PwP8jDCWcrK9H6L7soowT80CUx3e+nxP/AFnq0AQAW5W76z2WYbLAYCRyPfwYFG6zkvQRw=="
- },
- "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "xrlmRCnKZJLHxyyLIqkZjNXqgxnKdZxfItrPkjI+6pkRo5lHX8YvSZlWrSI5AVwLMi4HbNWP7064hcAWeZKp5w=="
- },
- "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "leXiwfiIkW7Gmn7cgnNcdtNAU70SjmKW3jxGj1iKHOvdn0zRWsgv/l2OJUO5zdGdiv2VRFnAsxxhDgMzofPdWg=="
- },
- "System.AppContext": {
- "type": "Transitive",
- "resolved": "4.1.0",
- "contentHash": "3QjO4jNV7PdKkmQAVp9atA+usVnKRwI3Kx1nMwJ93T0LcQfx7pKAYk0nKz5wn1oP5iqlhZuy6RXOFdhr7rDwow==",
- "dependencies": {
- "System.Runtime": "4.1.0"
- }
- },
- "System.Buffers": {
- "type": "Transitive",
- "resolved": "4.5.1",
- "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg=="
- },
- "System.Collections": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Collections.Concurrent": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.Diagnostics.Debug": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Diagnostics.DiagnosticSource": {
- "type": "Transitive",
- "resolved": "6.0.1",
- "contentHash": "KiLYDu2k2J82Q9BJpWiuQqCkFjRBWVq4jDzKKWawVi9KWzyD0XG3cmfX0vqTQlL14Wi9EufJrbL0+KCLTbqWiQ==",
- "dependencies": {
- "System.Memory": "4.5.4",
- "System.Runtime.CompilerServices.Unsafe": "6.0.0"
- }
- },
- "System.Diagnostics.EventLog": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw==",
- "dependencies": {
- "System.Security.Principal.Windows": "5.0.0"
- }
- },
- "System.Diagnostics.Process": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "J0wOX07+QASQblsfxmIMFc9Iq7KTXYL3zs2G/Xc704Ylv3NpuVdo6gij6V3PGiptTxqsK0K7CdXenRvKUnkA2g==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.Win32.Primitives": "4.3.0",
- "Microsoft.Win32.Registry": "4.3.0",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Text.Encoding.Extensions": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "System.Threading.Thread": "4.3.0",
- "System.Threading.ThreadPool": "4.3.0",
- "runtime.native.System": "4.3.0"
- }
- },
- "System.Diagnostics.Tools": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Diagnostics.TraceSource": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "VnYp1NxGx8Ww731y2LJ1vpfb/DKVNKEZ8Jsh5SgQTZREL/YpWRArgh9pI8CDLmgHspZmLL697CaLvH85qQpRiw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Threading": "4.3.0",
- "runtime.native.System": "4.3.0"
- }
- },
- "System.Diagnostics.Tracing": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Dynamic.Runtime": {
- "type": "Transitive",
- "resolved": "4.0.11",
- "contentHash": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==",
- "dependencies": {
- "System.Collections": "4.0.11",
- "System.Diagnostics.Debug": "4.0.11",
- "System.Globalization": "4.0.11",
- "System.Linq": "4.1.0",
- "System.Linq.Expressions": "4.1.0",
- "System.ObjectModel": "4.0.12",
- "System.Reflection": "4.1.0",
- "System.Reflection.Emit": "4.0.1",
- "System.Reflection.Emit.ILGeneration": "4.0.1",
- "System.Reflection.Primitives": "4.0.1",
- "System.Reflection.TypeExtensions": "4.1.0",
- "System.Resources.ResourceManager": "4.0.1",
- "System.Runtime": "4.1.0",
- "System.Runtime.Extensions": "4.1.0",
- "System.Threading": "4.0.11"
- }
- },
- "System.Globalization": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Globalization.Calendars": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Globalization": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Globalization.Extensions": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Globalization": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0"
- }
- },
- "System.IdentityModel.Tokens.Jwt": {
- "type": "Transitive",
- "resolved": "5.2.4",
- "contentHash": "IVIGJO1X8THAUfOIb3/KhPWALPOtXzpnP+36JBBM3BrQdnsE7kbi5m4Hpbax9JQVSdA5KG9cFeFoAtFOWfn90A==",
- "dependencies": {
- "Microsoft.IdentityModel.JsonWebTokens": "5.2.4",
- "Microsoft.IdentityModel.Tokens": "5.2.4",
- "NETStandard.Library": "1.6.1",
- "Newtonsoft.Json": "10.0.1"
- }
- },
- "System.IO": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.IO.FileSystem": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.IO.FileSystem.AccessControl": {
- "type": "Transitive",
- "resolved": "5.0.0",
- "contentHash": "SxHB3nuNrpptVk+vZ/F+7OHEpoHUIKKMl02bUmYHQr1r+glbZQxs7pRtsf4ENO29TVm2TH3AEeep2fJcy92oYw==",
- "dependencies": {
- "System.Buffers": "4.5.1",
- "System.Memory": "4.5.4",
- "System.Security.AccessControl": "5.0.0",
- "System.Security.Principal.Windows": "5.0.0"
- }
- },
- "System.IO.FileSystem.Primitives": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==",
- "dependencies": {
- "System.Runtime": "4.3.0"
- }
- },
- "System.IO.Hashing": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "Rfm2jYCaUeGysFEZjDe7j1R4x6Z6BzumS/vUT5a1AA/AWJuGX71PoGB0RmpyX3VmrGqVnAwtfMn39OHR8Y/5+g==",
- "dependencies": {
- "System.Buffers": "4.5.1",
- "System.Memory": "4.5.4"
- }
- },
- "System.Linq": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0"
- }
- },
- "System.Linq.Expressions": {
- "type": "Transitive",
- "resolved": "4.1.0",
- "contentHash": "I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==",
- "dependencies": {
- "System.Collections": "4.0.11",
- "System.Diagnostics.Debug": "4.0.11",
- "System.Globalization": "4.0.11",
- "System.IO": "4.1.0",
- "System.Linq": "4.1.0",
- "System.ObjectModel": "4.0.12",
- "System.Reflection": "4.1.0",
- "System.Reflection.Emit": "4.0.1",
- "System.Reflection.Emit.ILGeneration": "4.0.1",
- "System.Reflection.Emit.Lightweight": "4.0.1",
- "System.Reflection.Extensions": "4.0.1",
- "System.Reflection.Primitives": "4.0.1",
- "System.Reflection.TypeExtensions": "4.1.0",
- "System.Resources.ResourceManager": "4.0.1",
- "System.Runtime": "4.1.0",
- "System.Runtime.Extensions": "4.1.0",
- "System.Threading": "4.0.11"
- }
- },
- "System.Memory.Data": {
- "type": "Transitive",
- "resolved": "1.0.2",
- "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==",
- "dependencies": {
- "System.Text.Encodings.Web": "4.7.2",
- "System.Text.Json": "4.6.0"
- }
- },
- "System.Net.Primitives": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0"
- }
- },
- "System.Numerics.Vectors": {
- "type": "Transitive",
- "resolved": "4.5.0",
- "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ=="
- },
- "System.ObjectModel": {
- "type": "Transitive",
- "resolved": "4.0.12",
- "contentHash": "tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==",
- "dependencies": {
- "System.Collections": "4.0.11",
- "System.Diagnostics.Debug": "4.0.11",
- "System.Resources.ResourceManager": "4.0.1",
- "System.Runtime": "4.1.0",
- "System.Threading": "4.0.11"
- }
- },
- "System.Private.DataContractSerialization": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "yDaJ2x3mMmjdZEDB4IbezSnCsnjQ4BxinKhRAaP6kEgL6Bb6jANWphs5SzyD8imqeC/3FxgsuXT6ykkiH1uUmA==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Collections.Concurrent": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Linq": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Emit.ILGeneration": "4.3.0",
- "System.Reflection.Emit.Lightweight": "4.3.0",
- "System.Reflection.Extensions": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Reflection.TypeExtensions": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Serialization.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Text.Encoding.Extensions": "4.3.0",
- "System.Text.RegularExpressions": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0",
- "System.Xml.XDocument": "4.3.0",
- "System.Xml.XmlDocument": "4.3.0",
- "System.Xml.XmlSerializer": "4.3.0"
- }
- },
- "System.Reflection": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.IO": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Emit": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==",
- "dependencies": {
- "System.IO": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Emit.ILGeneration": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Emit.ILGeneration": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==",
- "dependencies": {
- "System.Reflection": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Emit.Lightweight": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==",
- "dependencies": {
- "System.Reflection": "4.3.0",
- "System.Reflection.Emit.ILGeneration": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Extensions": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Reflection": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Primitives": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.TypeExtensions": {
- "type": "Transitive",
- "resolved": "4.7.0",
- "contentHash": "VybpaOQQhqE6siHppMktjfGBw1GCwvCqiufqmP8F1nj7fTUNtW35LOEt3UZTEsECfo+ELAl/9o9nJx3U91i7vA=="
- },
- "System.Resources.ResourceManager": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Globalization": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime": {
- "type": "Transitive",
- "resolved": "4.3.1",
- "contentHash": "abhfv1dTK6NXOmu4bgHIONxHyEqFjW8HwXPmpY9gmll+ix9UNo4XDcmzJn6oLooftxNssVHdJC1pGT9jkSynQg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.1",
- "Microsoft.NETCore.Targets": "1.1.3"
- }
- },
- "System.Runtime.CompilerServices.Unsafe": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg=="
- },
- "System.Runtime.Extensions": {
- "type": "Transitive",
- "resolved": "4.3.1",
- "contentHash": "qAtKMcHOAq9/zKkl0dwvF0T0pmgCQxX1rC49rJXoU8jq+lw6MC3uXy7nLFmjEI20T3Aq069eWz4LcYR64vEmJw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.1",
- "Microsoft.NETCore.Targets": "1.1.3",
- "System.Runtime": "4.3.1"
- }
- },
- "System.Runtime.Handles": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime.InteropServices": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0"
- }
- },
- "System.Runtime.InteropServices.RuntimeInformation": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==",
- "dependencies": {
- "System.Reflection": "4.3.0",
- "System.Reflection.Extensions": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Threading": "4.3.0",
- "runtime.native.System": "4.3.0"
- }
- },
- "System.Runtime.Numerics": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==",
- "dependencies": {
- "System.Globalization": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0"
- }
- },
- "System.Runtime.Serialization.Json": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "CpVfOH0M/uZ5PH+M9+Gu56K0j9lJw3M+PKRegTkcrY/stOIvRUeonggxNrfBYLA5WOHL2j15KNJuTuld3x4o9w==",
- "dependencies": {
- "System.IO": "4.3.0",
- "System.Private.DataContractSerialization": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime.Serialization.Primitives": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "Wz+0KOukJGAlXjtKr+5Xpuxf8+c8739RI1C+A2BoQZT+wMCCoMDDdO8/4IRHfaVINqL78GO8dW8G2lW/e45Mcw==",
- "dependencies": {
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime.Serialization.Xml": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "nUQx/5OVgrqEba3+j7OdiofvVq9koWZAC7Z3xGI8IIViZqApWnZ5+lLcwYgTlbkobrl/Rat+Jb8GeD4WQESD2A==",
- "dependencies": {
- "System.IO": "4.3.0",
- "System.Private.DataContractSerialization": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Serialization.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0"
- }
- },
- "System.Security.AccessControl": {
- "type": "Transitive",
- "resolved": "5.0.0",
- "contentHash": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
- "dependencies": {
- "System.Security.Principal.Windows": "5.0.0"
- }
- },
- "System.Security.Claims": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "P/+BR/2lnc4PNDHt/TPBAWHVMLMRHsyYZbU1NphW4HIWzCggz8mJbTQQ3MKljFE7LS3WagmVFuBgoLcFzYXlkA==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Security.Principal": "4.3.0"
- }
- },
- "System.Security.Cryptography.Algorithms": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.Numerics": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "runtime.native.System.Security.Cryptography.Apple": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Security.Cryptography.Cng": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0"
- }
- },
- "System.Security.Cryptography.Csp": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.IO": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0"
- }
- },
- "System.Security.Cryptography.Encoding": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.Collections.Concurrent": "4.3.0",
- "System.Linq": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.Numerics": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Security.Cryptography.Primitives": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==",
- "dependencies": {
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.Security.Cryptography.ProtectedData": {
- "type": "Transitive",
- "resolved": "4.7.0",
- "contentHash": "ehYW0m9ptxpGWvE4zgqongBVWpSDU/JCFD4K7krxkQwSz/sFQjEXCUqpvencjy6DYDbn7Ig09R8GFffu8TtneQ==",
- "dependencies": {
- "System.Memory": "4.5.3"
- }
- },
- "System.Security.Cryptography.X509Certificates": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Globalization.Calendars": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.Numerics": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Cng": "4.3.0",
- "System.Security.Cryptography.Csp": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.OpenSsl": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "runtime.native.System": "4.3.0",
- "runtime.native.System.Net.Http": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Security.Principal": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "I1tkfQlAoMM2URscUtpcRo/hX0jinXx6a/KUtEQoz3owaYwl3qwsO8cbzYVVnjxrzxjHo3nJC+62uolgeGIS9A==",
- "dependencies": {
- "System.Runtime": "4.3.0"
- }
- },
- "System.Security.Principal.Windows": {
- "type": "Transitive",
- "resolved": "5.0.0",
- "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA=="
- },
- "System.Security.SecureString": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "PnXp38O9q/2Oe4iZHMH60kinScv6QiiL2XH54Pj2t0Y6c2zKPEiAZsM/M3wBOHLNTBDFP0zfy13WN2M0qFz5jg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0"
- }
- },
- "System.Text.Encoding": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Text.Encoding.Extensions": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0",
- "System.Text.Encoding": "4.3.0"
- }
- },
- "System.Text.Json": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "zaJsHfESQvJ11vbXnNlkrR46IaMULk/gHxYsJphzSF+07kTjPHv+Oc14w6QEOfo3Q4hqLJgStUaYB9DBl0TmWg==",
- "dependencies": {
- "Microsoft.Bcl.AsyncInterfaces": "6.0.0",
- "System.Buffers": "4.5.1",
- "System.Memory": "4.5.4",
- "System.Numerics.Vectors": "4.5.0",
- "System.Runtime.CompilerServices.Unsafe": "6.0.0",
- "System.Text.Encodings.Web": "6.0.0",
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "System.Threading": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==",
- "dependencies": {
- "System.Runtime": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.Threading.Channels": {
- "type": "Transitive",
- "resolved": "4.7.1",
- "contentHash": "6akRtHK/wab3246t4p5v3HQrtQk8LboOt5T4dtpNgsp3zvDeM4/Gx8V12t0h+c/W9/enUrilk8n6EQqdQorZAA==",
- "dependencies": {
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "System.Threading.Tasks": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Threading.Tasks.Extensions": {
- "type": "Transitive",
- "resolved": "4.5.4",
- "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==",
- "dependencies": {
- "System.Runtime.CompilerServices.Unsafe": "4.5.3"
- }
- },
- "System.Threading.Thread": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "OHmbT+Zz065NKII/ZHcH9XO1dEuLGI1L2k7uYss+9C1jLxTC9kTZZuzUOyXHayRk+dft9CiDf3I/QZ0t8JKyBQ==",
- "dependencies": {
- "System.Runtime": "4.3.0"
- }
- },
- "System.Threading.ThreadPool": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "k/+g4b7vjdd4aix83sTgC9VG6oXYKAktSfNIJUNGxPEj7ryEOfzHHhfnmsZvjxawwcD9HyWXKCXmPjX8U4zeSw==",
- "dependencies": {
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0"
- }
- },
- "System.Xml.ReaderWriter": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Text.Encoding.Extensions": "4.3.0",
- "System.Text.RegularExpressions": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "System.Threading.Tasks.Extensions": "4.3.0"
- }
- },
- "System.Xml.XDocument": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.Tools": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0"
- }
- },
- "System.Xml.XmlDocument": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "lJ8AxvkX7GQxpC6GFCeBj8ThYVyQczx2+f/cWHJU8tjS7YfI6Cv6bon70jVEgs2CiFbmmM8b9j1oZVx0dSI2Ww==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0"
- }
- },
- "System.Xml.XmlSerializer": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "MYoTCP7EZ98RrANESW05J5ZwskKDoN0AuZ06ZflnowE50LTpbR5yRg3tHckTVm5j/m47stuGgCrCHWePyHS70Q==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Linq": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Emit": "4.3.0",
- "System.Reflection.Emit.ILGeneration": "4.3.0",
- "System.Reflection.Extensions": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Reflection.TypeExtensions": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Text.RegularExpressions": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0",
- "System.Xml.XmlDocument": "4.3.0"
- }
- },
- "microsoft.health.common": {
- "type": "Project",
- "dependencies": {
- "Azure.Core": "[1.34.0, )",
- "Azure.Identity": "[1.10.0, )",
- "Azure.Storage.Blobs": "[12.16.0, )",
- "Ensure.That": "[10.1.0, )",
- "Microsoft.Extensions.Configuration.Abstractions": "[6.0.0, )",
- "Microsoft.Extensions.Configuration.Binder": "[6.0.0, )",
- "Microsoft.Extensions.Options": "[6.0.0, )",
- "Newtonsoft.Json": "[13.0.3, )",
- "System.Text.Encodings.Web": "[6.0.0, )",
- "System.Text.RegularExpressions": "[4.3.1, )",
- "System.Threading.Tasks.Dataflow": "[6.0.0, )"
- }
- },
- "microsoft.health.events": {
- "type": "Project",
- "dependencies": {
- "Azure.Identity": "[1.10.0, )",
- "Azure.Messaging.EventHubs": "[5.9.2, )",
- "Azure.Messaging.EventHubs.Processor": "[5.9.2, )",
- "Azure.Storage.Blobs": "[12.16.0, )",
- "Ensure.That": "[10.1.0, )",
- "Microsoft.AspNetCore.Mvc.Abstractions": "[2.2.0, )",
- "Microsoft.AspNetCore.Mvc.Core": "[2.2.5, )",
- "Microsoft.Bcl.AsyncInterfaces": "[6.0.0, )",
- "Microsoft.Extensions.Hosting": "[6.0.1, )",
- "Microsoft.Health.Common": "[1.0.0, )",
- "Microsoft.Health.Logging": "[1.0.0, )",
- "System.Text.Encodings.Web": "[6.0.0, )"
- }
- },
- "microsoft.health.extensions.fhir": {
- "type": "Project",
- "dependencies": {
- "Ensure.That": "[10.1.0, )",
- "Microsoft.Extensions.Http": "[6.0.0, )",
- "Microsoft.Health.Common": "[1.0.0, )",
- "Microsoft.Health.Extensions.Host": "[1.0.0, )",
- "System.Text.RegularExpressions": "[4.3.1, )"
- }
- },
- "microsoft.health.extensions.host": {
- "type": "Project",
- "dependencies": {
- "Azure.Identity": "[1.10.0, )",
- "Ensure.That": "[10.1.0, )",
- "Microsoft.Azure.WebJobs": "[3.0.31, )",
- "Microsoft.Health.Common": "[1.0.0, )",
- "Microsoft.Identity.Client": "[4.54.1, )",
- "System.Text.RegularExpressions": "[4.3.1, )"
- }
- },
- "microsoft.health.fhir.ingest": {
- "type": "Project",
- "dependencies": {
- "Ensure.That": "[10.1.0, )",
- "Microsoft.ApplicationInsights": "[2.21.0, )",
- "Microsoft.Azure.Functions.Extensions": "[1.1.0, )",
- "Microsoft.Azure.WebJobs": "[3.0.31, )",
- "Microsoft.Extensions.Caching.Memory": "[6.0.1, )",
- "Microsoft.Extensions.Configuration.Abstractions": "[6.0.0, )",
- "Microsoft.Extensions.Logging.Abstractions": "[6.0.1, )",
- "Microsoft.Health.Common": "[1.0.0, )",
- "Microsoft.Health.Events": "[1.0.0, )",
- "Microsoft.Health.Extensions.Fhir": "[1.0.0, )",
- "Microsoft.Health.Extensions.Host": "[1.0.0, )",
- "Microsoft.Health.Fhir.Ingest.Template": "[1.0.0, )",
- "Microsoft.Toolkit.HighPerformance": "[7.1.2, )",
- "Newtonsoft.Json": "[13.0.3, )",
- "Polly": "[7.2.4, )",
- "System.Memory": "[4.5.5, )",
- "System.Text.RegularExpressions": "[4.3.1, )",
- "System.Threading.Tasks.Dataflow": "[6.0.0, )"
- }
- },
- "microsoft.health.fhir.ingest.schema": {
- "type": "Project",
- "dependencies": {
- "System.Memory": "[4.5.5, )",
- "System.Text.RegularExpressions": "[4.3.1, )"
- }
- },
- "microsoft.health.fhir.ingest.template": {
- "type": "Project",
- "dependencies": {
- "Ensure.That": "[10.1.0, )",
- "JmesPath.Net": "[1.0.205, )",
- "Microsoft.Health.Fhir.Ingest.Schema": "[1.0.0, )",
- "Microsoft.Health.Logging": "[1.0.0, )",
- "Newtonsoft.Json": "[13.0.3, )",
- "System.ComponentModel.Annotations": "[5.0.0, )",
- "System.Text.RegularExpressions": "[4.3.1, )"
- }
- },
- "microsoft.health.logging": {
- "type": "Project",
- "dependencies": {
- "Ensure.That": "[10.1.0, )",
- "Microsoft.ApplicationInsights": "[2.21.0, )",
- "Microsoft.Health.Common": "[1.0.0, )"
- }
- },
- "Azure.Core": {
- "type": "CentralTransitive",
- "requested": "[1.34.0, )",
- "resolved": "1.34.0",
- "contentHash": "6dNpM8OlGO+5gvt97tHXBp9qWRFkimRFulupDSGRgyT3sje1kQNza1/EMYaDcolmNARPmVJo8+wgD6ReV9wG5Q==",
- "dependencies": {
- "Microsoft.Bcl.AsyncInterfaces": "1.1.1",
- "System.Diagnostics.DiagnosticSource": "6.0.1",
- "System.Memory.Data": "1.0.2",
- "System.Numerics.Vectors": "4.5.0",
- "System.Text.Encodings.Web": "4.7.2",
- "System.Text.Json": "4.7.2",
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "Azure.Identity": {
- "type": "CentralTransitive",
- "requested": "[1.10.0, )",
- "resolved": "1.10.0",
- "contentHash": "j7HIhQ8Bnf2s325hNwjsTa7jXlJmWFSPgKJCrc1cv2XozEmFsjto1XaCnQzLmbPaTeL6CS5t26icTflY20BnHQ==",
- "dependencies": {
- "Azure.Core": "1.34.0",
- "Microsoft.Identity.Client": "4.54.1",
- "Microsoft.Identity.Client.Extensions.Msal": "2.31.0",
- "System.Memory": "4.5.4",
- "System.Security.Cryptography.ProtectedData": "4.7.0",
- "System.Text.Json": "4.7.2",
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "Azure.Messaging.EventHubs": {
- "type": "CentralTransitive",
- "requested": "[5.9.2, )",
- "resolved": "5.9.2",
- "contentHash": "KAC79xzlOUrtQ0mlrPqijznfmlKeraiqavtZ3RfbV+8ukJf9C5fFSZCMSqq9N/2+eUkW3G4wJSchMXAyf+jxow==",
- "dependencies": {
- "Azure.Core": "1.32.0",
- "Azure.Core.Amqp": "1.3.0",
- "Microsoft.Azure.Amqp": "2.6.2",
- "Microsoft.Bcl.AsyncInterfaces": "1.1.1",
- "System.Diagnostics.DiagnosticSource": "4.6.0",
- "System.Memory.Data": "1.0.2",
- "System.Reflection.TypeExtensions": "4.7.0",
- "System.Threading.Channels": "4.7.1",
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "Azure.Messaging.EventHubs.Processor": {
- "type": "CentralTransitive",
- "requested": "[5.9.2, )",
- "resolved": "5.9.2",
- "contentHash": "vx5R1za8dZPcKZ76Hz9KprSX/CP8UWsGuffdYdwI12GQjhyh4fHN0AEJ+knWw3+TvaFXcEW6GpC6fzC4LHvxuw==",
- "dependencies": {
- "Azure.Messaging.EventHubs": "5.9.2",
- "Azure.Storage.Blobs": "12.16.0",
- "Microsoft.Azure.Amqp": "2.6.2",
- "Microsoft.Bcl.AsyncInterfaces": "1.1.1",
- "System.Diagnostics.DiagnosticSource": "4.6.0",
- "System.Reflection.TypeExtensions": "4.7.0",
- "System.Threading.Channels": "4.7.1",
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "Azure.Storage.Blobs": {
- "type": "CentralTransitive",
- "requested": "[12.16.0, )",
- "resolved": "12.16.0",
- "contentHash": "1ibzh49byOzB2ds6k9bsPqXvxxzdc2U9+MmooDr/lYJHgaWEnPZYX/i04vH0oN0jBGN1diW4N27xER8npvOzCw==",
- "dependencies": {
- "Azure.Storage.Common": "12.15.0",
- "System.Text.Json": "4.7.2"
- }
- },
- "JmesPath.Net": {
- "type": "CentralTransitive",
- "requested": "[1.0.205, )",
- "resolved": "1.0.205",
- "contentHash": "3zzfc4zUbSahnrFDDiJb/EY1uV0BnIi7HImnjaflxIeXeWCpauAVcIFr7o8AWJ7QzxX3g9CVjZ6ybSv+BZsGSA==",
- "dependencies": {
- "JmesPath.Net.Parser": "1.0.205",
- "NETStandard.Library": "1.6.1",
- "Newtonsoft.Json": "13.0.1",
- "System.Reflection.TypeExtensions": "4.7.0"
- }
- },
- "Microsoft.AspNetCore.Mvc.Abstractions": {
- "type": "CentralTransitive",
- "requested": "[2.2.0, )",
- "resolved": "2.2.0",
- "contentHash": "ET6uZpfVbGR1NjCuLaLy197cQ3qZUjzl7EG5SL4GfJH/c9KRE89MMBrQegqWsh0w1iRUB/zQaK0anAjxa/pz4g==",
- "dependencies": {
- "Microsoft.AspNetCore.Routing.Abstractions": "2.2.0",
- "Microsoft.Net.Http.Headers": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Mvc.Core": {
- "type": "CentralTransitive",
- "requested": "[2.2.5, )",
- "resolved": "2.2.5",
- "contentHash": "/8sr8ixIUD57UFwUntha9bOwex7/AkZfdk1f9oNJG1Ek7p/uuKVa7fuHmYZpQOf35Oxrt+2Ku4WPwMSbNxOuWg==",
- "dependencies": {
- "Microsoft.AspNetCore.Authentication.Core": "2.2.0",
- "Microsoft.AspNetCore.Authorization.Policy": "2.2.0",
- "Microsoft.AspNetCore.Hosting.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.Http": "2.2.0",
- "Microsoft.AspNetCore.Http.Extensions": "2.2.0",
- "Microsoft.AspNetCore.Mvc.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.ResponseCaching.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.Routing": "2.2.0",
- "Microsoft.AspNetCore.Routing.Abstractions": "2.2.0",
- "Microsoft.Extensions.DependencyInjection": "2.2.0",
- "Microsoft.Extensions.DependencyModel": "2.1.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "2.2.0",
- "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
- "System.Diagnostics.DiagnosticSource": "4.5.0",
- "System.Threading.Tasks.Extensions": "4.5.1"
- }
- },
- "Microsoft.Bcl.AsyncInterfaces": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg==",
- "dependencies": {
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "Microsoft.Extensions.Configuration": {
- "type": "CentralTransitive",
- "requested": "[6.0.1, )",
- "resolved": "6.0.0",
- "contentHash": "tq2wXyh3fL17EMF2bXgRhU7JrbO3on93MRKYxzz4JzzvuGSA1l0W3GI9/tl8EO89TH+KWEymP7bcFway6z9fXg==",
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.Binder": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "b3ErKzND8LIC7o08QAVlKfaEIYEvLJbtmVbFZVBRXeu9YkKfSSzLZfR1SUfQPBIy9mKLhEtJgGYImkcMNaKE0A==",
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.Json": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "GJGery6QytCzS/BxJ96klgG9in3uH26KcUBbiVG/coNDXCRq6LGVVlUT4vXq34KPuM+R2av+LeYdX9h4IZOCUg==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "6.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.Configuration.FileExtensions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
- "System.Memory": "4.5.4",
- "System.Text.Json": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.UserSecrets": {
- "type": "CentralTransitive",
- "requested": "[6.0.1, )",
- "resolved": "6.0.1",
- "contentHash": "Fy8yr4V6obi7ZxvKYI1i85jqtwMq8tqyxQVZpRSkgeA8enqy/KvBIMdcuNdznlxQMZa72mvbHqb7vbg4Pyx95w==",
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.Configuration.Json": "6.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Physical": "6.0.0"
- }
- },
- "Microsoft.Extensions.DependencyInjection": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==",
- "dependencies": {
- "Microsoft.Bcl.AsyncInterfaces": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "System.Runtime.CompilerServices.Unsafe": "6.0.0",
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "Microsoft.Extensions.Hosting": {
- "type": "CentralTransitive",
- "requested": "[6.0.1, )",
- "resolved": "6.0.1",
- "contentHash": "hbmizc9KPWOacLU8Z8YMaBG6KWdZFppczYV/KwnPGU/8xebWxQxdDeJmLOgg968prb7g2oQgnp6JVLX6lgby8g==",
- "dependencies": {
- "Microsoft.Bcl.AsyncInterfaces": "6.0.0",
- "Microsoft.Extensions.Configuration": "6.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.Configuration.Binder": "6.0.0",
- "Microsoft.Extensions.Configuration.CommandLine": "6.0.0",
- "Microsoft.Extensions.Configuration.EnvironmentVariables": "6.0.1",
- "Microsoft.Extensions.Configuration.FileExtensions": "6.0.0",
- "Microsoft.Extensions.Configuration.Json": "6.0.0",
- "Microsoft.Extensions.Configuration.UserSecrets": "6.0.1",
- "Microsoft.Extensions.DependencyInjection": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Physical": "6.0.0",
- "Microsoft.Extensions.Hosting.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging.Configuration": "6.0.0",
- "Microsoft.Extensions.Logging.Console": "6.0.0",
- "Microsoft.Extensions.Logging.Debug": "6.0.0",
- "Microsoft.Extensions.Logging.EventLog": "6.0.0",
- "Microsoft.Extensions.Logging.EventSource": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "System.Runtime.CompilerServices.Unsafe": "6.0.0",
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "Microsoft.Extensions.Http": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "15+pa2G0bAMHbHewaQIdr/y6ag2H3yh4rd9hTXavtWDzQBkvpe2RMqFg8BxDpcQWssmjmBApGPcw93QRz6YcMg==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0"
- }
- },
- "Microsoft.Extensions.Options": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0",
- "System.ComponentModel.Annotations": "5.0.0"
- }
- },
- "Microsoft.Identity.Client": {
- "type": "CentralTransitive",
- "requested": "[4.54.1, )",
- "resolved": "4.54.1",
- "contentHash": "YkQkV3IRaA1W36HD4NRD1cq+QFr+4QPKK3SgTSpx+RiobXnLZ6E9anOjDi2TS7okOEofBbjR6GyTPp4IR0MnEQ==",
- "dependencies": {
- "Microsoft.IdentityModel.Abstractions": "6.22.0"
- }
- },
- "System.ComponentModel.Annotations": {
- "type": "CentralTransitive",
- "requested": "[5.0.0, )",
- "resolved": "5.0.0",
- "contentHash": "dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg=="
- },
- "System.Net.Http": {
- "type": "CentralTransitive",
- "requested": "[4.3.4, )",
- "resolved": "4.3.3",
- "contentHash": "7rCqIbkC/P2+A00NoDH5gnvFhADmX7Dc4INvsOajbU1MVhktE9vZNrjPtF82N6Uo7obK+yzlrPUv/M+snnN/9w==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.DiagnosticSource": "4.3.0",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Globalization.Extensions": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.Net.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.OpenSsl": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Security.Cryptography.X509Certificates": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "runtime.native.System": "4.3.0",
- "runtime.native.System.Net.Http": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
- }
- },
- "System.Text.Encodings.Web": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "Vg8eB5Tawm1IFqj4TVK1czJX89rhFxJo9ELqc/Eiq0eXy13RK00eubyU6TJE6y+GQXjyV5gSfiewDUZjQgSE0w==",
- "dependencies": {
- "System.Buffers": "4.5.1",
- "System.Memory": "4.5.4",
- "System.Runtime.CompilerServices.Unsafe": "6.0.0"
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/Config/EventHubMeasurementCollectorOptionsTests.cs b/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/Config/EventHubMeasurementCollectorOptionsTests.cs
deleted file mode 100644
index 3b385e95..00000000
--- a/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/Config/EventHubMeasurementCollectorOptionsTests.cs
+++ /dev/null
@@ -1,92 +0,0 @@
-// -------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// -------------------------------------------------------------------------------------------------
-
-using System;
-using Microsoft.Azure.EventHubs;
-using Xunit;
-
-namespace Microsoft.Health.Fhir.Ingest.Config
-{
- public class EventHubMeasurementCollectorOptionsTests
- {
- [Fact]
- public void GivenEventHubConnectionStringAndName_WhenAddSenderFollowedByGet_ThenEventHubClientCreatedAndReturned_Test()
- {
- var options = new EventHubMeasurementCollectorOptions();
-
- var cs = CreateTestConnectionString();
- options.AddSender("test", cs);
-
- var client = options.GetEventHubClient("test", cs);
- Assert.NotNull(client);
- }
-
- [Fact]
- public void GivenEventHubNullConnectionStringAndName_WhenAddSender_ThenInvalidOperationExceptionThrown_Test()
- {
- var options = new EventHubMeasurementCollectorOptions();
- var ex = Assert.Throws(() => options.GetEventHubClient("test", null));
- Assert.Contains("test", ex.Message);
- }
-
- [Fact]
- public void GivenNewEventHubConnectionStringAndName_WhenGetEventHubClient_ThenEventHubClientReturned_Test()
- {
- var options = new EventHubMeasurementCollectorOptions();
-
- var cs = CreateTestConnectionString();
- var client = options.GetEventHubClient("test", cs);
- Assert.NotNull(client);
- }
-
- [Fact]
- public void GivenRepeatedEventHubConnectionStringAndName_WhenGetEventHubClient_ThenSameEventHubClientReturned_Test()
- {
- var options = new EventHubMeasurementCollectorOptions();
-
- var cs = CreateTestConnectionString();
- var client1 = options.GetEventHubClient("test", cs);
- Assert.NotNull(client1);
-
- var client2 = options.GetEventHubClient("test", null);
- Assert.NotNull(client2);
-
- Assert.Equal(client1, client2);
- }
-
- [Fact]
- public void GivenRepeatedDifferentEventHubConnectionStringAndName_WhenGetEventHubClient_ThenDifferentEventHubClientReturned_Test()
- {
- var options = new EventHubMeasurementCollectorOptions();
-
- var cs = CreateTestConnectionString();
- var client1 = options.GetEventHubClient("test1", cs);
- Assert.NotNull(client1);
-
- var client2 = options.GetEventHubClient("test2", cs);
- Assert.NotNull(client2);
-
- Assert.NotEqual(client1, client2);
- }
-
- [Fact]
- public void GivenEventHubConnectionStringWithoutEntityPathAndName_WhenAddSender_ThenNameUsedForEntityPath_Test()
- {
- var options = new EventHubMeasurementCollectorOptions();
-
- var cs = "Endpoint=sb://test/;SharedAccessKeyName=name;SharedAccessKey=key;";
- var client = options.GetEventHubClient("testA", cs);
- Assert.NotNull(client);
-
- Assert.Equal("testA", client.EventHubName);
- }
-
- private static string CreateTestConnectionString()
- {
- return new EventHubsConnectionStringBuilder(endpointAddress: new System.Uri("https://test"), entityPath: "test", sharedAccessKeyName: "name", sharedAccessKey: "key")
- .ToString();
- }
- }
-}
diff --git a/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/Data/EventDataWithJsonBodyToJTokenConverterTests.cs b/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/Data/EventDataWithJsonBodyToJTokenConverterTests.cs
deleted file mode 100644
index 87fa0672..00000000
--- a/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/Data/EventDataWithJsonBodyToJTokenConverterTests.cs
+++ /dev/null
@@ -1,101 +0,0 @@
-// -------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// -------------------------------------------------------------------------------------------------
-
-using System;
-using System.Text;
-using Microsoft.Azure.EventHubs;
-using Microsoft.Health.Fhir.Ingest.Service;
-using Microsoft.Health.Tests.Common;
-using Newtonsoft.Json;
-using Xunit;
-
-namespace Microsoft.Health.Fhir.Ingest.Data
-{
- public class EventDataWithJsonBodyToJTokenConverterTests
- {
- [Fact]
- public void GivenEmptyEvent_WhenConvert_ThenTokenReturned_Test()
- {
- var evt = new EventData(Array.Empty());
-
- var token = new EventDataWithJsonBodyToJTokenConverter().Convert(evt);
-
- Assert.NotNull(token);
- Assert.NotNull(token["Body"]);
- Assert.NotNull(token["Properties"]);
- Assert.NotNull(token["SystemProperties"]);
- }
-
- [Fact]
- public void GivenPopulatedEvent_WhenConvert_ThenTokenWithNonSerializedBodyReturned_Test()
- {
- var bodyObj = new { p1 = 1, p2 = "a", p3 = new DateTime(2019, 01, 01, 12, 30, 20) };
- var currentTime = DateTime.UtcNow;
- var offset = Guid.NewGuid().ToString();
- var partitionKey = Guid.NewGuid().ToString();
-
- var evt = new EventData(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(bodyObj)));
- evt.Properties.Add("a", 10);
- evt.SystemProperties = new EventData.SystemPropertiesCollection(100, currentTime, offset, partitionKey);
- var token = new EventDataWithJsonBodyToJTokenConverter().Convert(evt);
-
- Assert.NotNull(token);
- Assert.NotNull(token["Body"]);
- Assert.NotNull(token["Properties"]);
- Assert.NotNull(token["SystemProperties"]);
-
- // Verify Body is correctly turned into a JToken instead of a base 64 encoded array
- Assert.Equal(bodyObj.p1.ToString(), token["Body"]["p1"].ToString());
- Assert.Equal(bodyObj.p2.ToString(), token["Body"]["p2"].ToString());
- Assert.Equal(bodyObj.p3.ToString(), token["Body"]["p3"].ToString());
-
- // Verify EventData.Properties are present on the returned JToken
- Assert.Equal(10.ToString(), token["Properties"]["a"].ToString());
-
- // Verify EventData.SystemProperties are present on the returned JToken
- Assert.Equal(100.ToString(), token["SystemProperties"]["x-opt-sequence-number"].ToString());
- Assert.Equal(currentTime.ToString(), token["SystemProperties"]["x-opt-enqueued-time"].ToString());
- Assert.Equal(offset.ToString(), token["SystemProperties"]["x-opt-offset"].ToString());
- Assert.Equal(partitionKey.ToString(), token["SystemProperties"]["x-opt-partition-key"].ToString());
- }
-
- [Theory]
- [FileData(@"TestInput/data_IotHubPayloadExample.json")]
- public void GivenIoTCentralPopulatedEvent_WhenConvert_ThenTokenWithNonSerializedBodyAndPropertiesReturned_Test(string json)
- {
- var evt = EventDataTestHelper.BuildEventFromJson(json);
-
- var token = new EventDataWithJsonBodyToJTokenConverter().Convert(evt);
-
- Assert.NotNull(token);
- Assert.NotNull(token["Body"]);
- Assert.NotNull(token["Properties"]);
- Assert.NotNull(token["SystemProperties"]);
-
- // Verify Body is correctly turned into a JToken instead of a base 64 encoded array
- Assert.Equal("203", token["Body"]["heartrate"].ToString());
-
- // Verify EventData.Properties are present on the returned JToken
- Assert.Equal("2019-01-30T22:45:02.6073744Z", token["Properties"]["iothub-creation-time-utc"].ToObject().ToString("o"));
- Assert.Equal("America/Los_Angeles", token["Properties"]["tz"].ToString());
- Assert.Equal("55b1e26f-9c83-4264-a0dd-3567afd633d6", token["Properties"]["batchid"].ToString());
- Assert.Equal("60", token["Properties"]["batchsize"].ToString());
-
- // Verify EventData.SystemProperties are present on the returned JToken
- Assert.Equal("ev-d795-1d04-55ae", token["SystemProperties"]["iothub-connection-device-id"].ToString());
- Assert.Equal("{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}", token["SystemProperties"]["iothub-connection-auth-method"].ToString());
- Assert.Equal("636845741198574895", token["SystemProperties"]["iothub-connection-auth-generation-id"].ToString());
- Assert.Equal("2019-02-01T22:46:01.8750000Z", token["SystemProperties"]["iothub-enqueuedtime"].ToObject().ToString("o"));
- }
-
- [Fact]
- public void GivenInvalidEvent_WhenConvert_ThenExceptionThrown_Test()
- {
- var evt = new EventData(Encoding.Unicode.GetBytes("{invalid json}"));
-
- Assert.Throws(() => new EventDataWithJsonBodyToJTokenConverter().Convert(evt));
- }
- }
-}
diff --git a/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/Data/MeasurementToEventAsyncCollectorTests.cs b/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/Data/MeasurementToEventAsyncCollectorTests.cs
deleted file mode 100644
index e39a50aa..00000000
--- a/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/Data/MeasurementToEventAsyncCollectorTests.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-// -------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// -------------------------------------------------------------------------------------------------
-
-using System;
-using System.Text;
-using Microsoft.Azure.EventHubs;
-using Microsoft.Health.Fhir.Ingest.Service;
-using Microsoft.Health.Tests.Common;
-using Newtonsoft.Json;
-using NSubstitute;
-using Xunit;
-
-namespace Microsoft.Health.Fhir.Ingest.Data
-{
- public class MeasurementToEventAsyncCollectorTests
- {
- [Fact]
- public async void GivenMeasurementWithDeviceId_WhenAddAsync_ThenEventSentWithDeviceIdAsPartitionKey_Test()
- {
- var eh = Substitute.For();
- var measurement = Substitute.For().Mock(m => m.DeviceId.Returns("1"));
-
- var collector = new MeasurementToEventAsyncCollector(eh);
-
- await collector.AddAsync(measurement).ConfigureAwait(false);
-
- await eh.Received(1)
- .SendAsync(Arg.Is(evt => JsonConvert.DeserializeObject(Encoding.UTF8.GetString(evt.Body.Array, evt.Body.Offset, evt.Body.Count)).DeviceId == measurement.DeviceId), "1");
- }
-
- [Fact]
- public async void GivenMeasurementWithOutDeviceId_WhenAddAsync_ThenArgumentExceptionThrown_Test()
- {
- var eh = Substitute.For();
- var measurement = Substitute.For();
-
- var collector = new MeasurementToEventAsyncCollector(eh);
-
- var ex = await Assert.ThrowsAsync(async () => await collector.AddAsync(measurement).ConfigureAwait(false));
- Assert.Contains("DeviceId", ex.Message);
- }
-
- [Fact]
- public async void GivenCollector_WhenFlushAsync_OperationSuccess_Test()
- {
- var eh = Substitute.For();
-
- var collector = new MeasurementToEventAsyncCollector(eh);
- await collector.FlushAsync();
- }
- }
-}
diff --git a/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/EventDataTestHelper.cs b/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/EventDataTestHelper.cs
deleted file mode 100644
index 7760c24d..00000000
--- a/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/EventDataTestHelper.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-// -------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// -------------------------------------------------------------------------------------------------
-
-using System;
-using System.Collections.Generic;
-using Microsoft.Azure.EventHubs;
-using Newtonsoft.Json.Linq;
-
-namespace Microsoft.Health.Fhir.Ingest
-{
- public static class EventDataTestHelper
- {
- public static EventData BuildEventFromJson(string json)
- {
- var token = JToken.Parse(json);
-
- var bodyContent = JToken.Parse(token["Body"].Value());
- var propContent = JToken.Parse(token["Properties"].Value());
- var syspContent = JToken.Parse(token["SystemProperties"].Value());
-
- var eventData = new EventData(Convert.FromBase64String(bodyContent.Value()));
- var properties = propContent.ToObject>();
-
- foreach (var p in properties)
- {
- eventData.Properties.Add(p);
- }
-
- eventData.SystemProperties = new EventData.SystemPropertiesCollection(0, default(DateTime), null, null);
- eventData.SystemProperties.Clear();
- var sysProperties = syspContent.ToObject>();
-
- foreach (var sp in sysProperties)
- {
- eventData.SystemProperties.Add(sp.Key, sp.Value);
- }
-
- return eventData;
- }
- }
-}
diff --git a/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests.csproj b/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests.csproj
deleted file mode 100644
index b5d786a0..00000000
--- a/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests.csproj
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
- $(LatestVersion)
- Microsoft.Health.Fhir.Ingest
- Off
-
-
-
-
-
-
-
-
-
-
-
-
-
- Always
-
-
- Always
-
-
-
diff --git a/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/Service/MeasurementEventNormalizationServiceTests.cs b/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/Service/MeasurementEventNormalizationServiceTests.cs
deleted file mode 100644
index b91e5af2..00000000
--- a/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/Service/MeasurementEventNormalizationServiceTests.cs
+++ /dev/null
@@ -1,238 +0,0 @@
-// -------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
-// -------------------------------------------------------------------------------------------------
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading;
-using System.Threading.Tasks;
-using Microsoft.Azure.EventHubs;
-using Microsoft.Health.Fhir.Ingest.Data;
-using Microsoft.Health.Fhir.Ingest.Telemetry;
-using Microsoft.Health.Fhir.Ingest.Template;
-using Microsoft.Health.Logging.Telemetry;
-using Newtonsoft.Json.Linq;
-using NSubstitute;
-using Xunit;
-
-namespace Microsoft.Health.Fhir.Ingest.Service
-{
- public class MeasurementEventNormalizationServiceTests
- {
- private IContentTemplate _template;
- private IEnumerableAsyncCollector _consumer;
- private IConverter _converter;
- private ITelemetryLogger _logger;
- private IExceptionTelemetryProcessor _exceptionTelemetryProcessor;
-
- public MeasurementEventNormalizationServiceTests()
- {
- _template = Substitute.For();
- _consumer = Substitute.For>();
- _converter = Substitute.For>();
- _logger = Substitute.For();
- _exceptionTelemetryProcessor = Substitute.For();
- }
-
- [Fact]
- public async Task GivenMultipleEventsWithOneResultPer_WhenProcessAsync_ThenEachEventConsumed_Test()
- {
- _template.GetMeasurements(null).ReturnsForAnyArgs(new[] { Substitute.For() });
- var events = Enumerable.Range(0, 10).Select(i => BuildEvent(i)).ToArray();
-
- var srv = new MeasurementEventNormalizationService(_logger, _template, _exceptionTelemetryProcessor);
- await srv.ProcessAsync(events, _consumer);
-
- _template.ReceivedWithAnyArgs(events.Length).GetMeasurements(null);
- await _consumer.Received(1).AddAsync(Arg.Is>(l => l.Count() == 10), Arg.Any());
- }
-
- [Fact]
- public async Task GivenMultipleEventsWithOneResultPer_WhenTotalMeauresmentsProcessed_AreGreaterThanBatchSize_ThenEachEventConsumedInMultipleBatches_Test()
- {
- _template.GetMeasurements(null).ReturnsForAnyArgs(new[] { Substitute.For() });
- var events = Enumerable.Range(0, 51).Select(i => BuildEvent(i)).ToArray();
-
- var srv = new MeasurementEventNormalizationService(_logger, _template, _converter, _exceptionTelemetryProcessor, 3, 25);
- await srv.ProcessAsync(events, _consumer);
-
- _template.ReceivedWithAnyArgs(events.Length).GetMeasurements(null);
-
- // 51 Events with a batch size of 25 = 2 * 25 measurement batches and 1 * 1 measurement batch
- await _consumer.Received(2).AddAsync(Arg.Is>(l => l.Count() == 25), Arg.Any());
- await _consumer.Received(1).AddAsync(Arg.Is>(l => l.Count() == 1), Arg.Any());
- }
-
- [Fact]
- public async Task GivenEventWithTwoResultPer_WhenProcessAsync_ThenEachEventResultConsumedTwice_Test()
- {
- var events = Enumerable.Range(0, 10)
- .Select(i => BuildEvent(i))
- .ToDictionary(ed => ed, ed => JToken.FromObject(new object()));
-
- _template.GetMeasurements(null).ReturnsForAnyArgs(new[] { Substitute.For(), Substitute.For() });
- _converter.Convert(null).ReturnsForAnyArgs(args => events[args.Arg()]);
-
- var srv = new MeasurementEventNormalizationService(_logger, _template, _converter, _exceptionTelemetryProcessor, 3);
- await srv.ProcessAsync(events.Keys, _consumer);
-
- _template.ReceivedWithAnyArgs(events.Count).GetMeasurements(null);
- _converter.ReceivedWithAnyArgs(events.Count).Convert(null);
- await _consumer.Received(1).AddAsync(Arg.Is>(l => l.Count() == events.Count * 2), Arg.Any());
-
- foreach (var evt in events)
- {
- _converter.Received(1).Convert(evt.Key);
- _template.Received(1).GetMeasurements(evt.Value);
- }
- }
-
- [Fact]
- public async Task GivenEvents_WhenProcessAsync_ThenIngestionTimeUtcSet_Test()
- {
- _template.GetMeasurements(null)
- .ReturnsForAnyArgs(
- new[] { new Measurement() },
- new[] { new Measurement() },
- new[] { new Measurement() },
- new[] { new Measurement() },
- new[] { new Measurement() },
- new[] { new Measurement() },
- new[] { new Measurement() },
- new[] { new Measurement() },
- new[] { new Measurement() },
- new[] { new Measurement() });
-
- var events = Enumerable.Range(0, 10).Select(i => BuildEvent(i)).ToArray();
-
- var srv = new MeasurementEventNormalizationService(_logger, _template, _converter, _exceptionTelemetryProcessor, 1);
- await srv.ProcessAsync(events, _consumer);
-
- _template.ReceivedWithAnyArgs(10).GetMeasurements(null);
- _converter.ReceivedWithAnyArgs(10).Convert(null);
- await _consumer.Received(1).AddAsync(
- Arg.Is>(
- measurements =>
- measurements.Count() == 10 &&
- measurements.Where(m => events.Any(e => m.IngestionTimeUtc == e.SystemProperties.EnqueuedTimeUtc)).Count() == 10),
- Arg.Any());
- }
-
- [Fact]
- public async Task GivenEventsAndDefaultErrorConsumer_WhenProcessAsyncAndConsumerErrors_ThenEachEventResultConsumed_And_ErrorPerBatchProprogated_Test()
- {
- _template.GetMeasurements(null).ReturnsForAnyArgs(new[] { Substitute.For() });
-
- var events = Enumerable.Range(0, 10).Select(i => BuildEvent(i)).ToArray();
-
- _consumer.AddAsync(null).ReturnsForAnyArgs(v => Task.FromException(new Exception()));
-
- var srv = new MeasurementEventNormalizationService(_logger, _template, _converter, _exceptionTelemetryProcessor, 1, 5); // Set asyncCollectorBatchSize to 5 to produce 2 batches
- var exception = await Assert.ThrowsAsync(() => srv.ProcessAsync(events, _consumer));
- Assert.Equal(2, exception.InnerExceptions.Count);
-
- _template.ReceivedWithAnyArgs(events.Length).GetMeasurements(null);
- _converter.ReceivedWithAnyArgs(events.Length).Convert(null);
- await _consumer.Received(2).AddAsync(Arg.Is>(l => l.Count() == 5), Arg.Any());
- }
-
- [Theory]
- [InlineData(typeof(IncompatibleDataException))]
- [InlineData(typeof(InvalidDataFormatException))]
- public async Task GivenEventsAndDefaultErrorConsumer_WhenProcessAsyncAndHandleableConsumerErrors_ThenExceptionNotThrown_Test(System.Type exType)
- {
- var ex = Activator.CreateInstance(exType) as Exception;
-
- _template.GetMeasurements(null).ReturnsForAnyArgs(new[] { Substitute.For() });
-
- var events = Enumerable.Range(0, 10).Select(i => BuildEvent(i)).ToArray();
-
- _converter.Convert(null).ReturnsForAnyArgs(v => throw ex);
-
- var exceptionConfig = Substitute.For();
- _exceptionTelemetryProcessor = new NormalizationExceptionTelemetryProcessor(exceptionConfig);
-
- var srv = new MeasurementEventNormalizationService(_logger, _template, _converter, _exceptionTelemetryProcessor, 1);
- await srv.ProcessAsync(events, _consumer);
-
- _template.ReceivedWithAnyArgs(0).GetMeasurements(null);
- _converter.ReceivedWithAnyArgs(events.Length).Convert(null);
- await _consumer.ReceivedWithAnyArgs(0).AddAsync(null);
- }
-
- [Fact]
- public async Task GivenEventsAndNormalization_WhenProcessAsyncAndDataMappingErrors_ThenExecutionNotHaltedAndNormalizationDataMappingExceptionThrown_Test()
- {
- _template.GetMeasurements(null).ReturnsForAnyArgs(m => throw new Exception("Test"));
-
- var events = Enumerable.Range(0, 10)
- .Select(i => BuildEvent(i))
- .ToDictionary(ed => ed, ed => JToken.FromObject(new object()));
- _converter.Convert(null).ReturnsForAnyArgs(args => events[args.Arg()]);
-
- var exceptionConfig = Substitute.For();
-
- _exceptionTelemetryProcessor = new NormalizationExceptionTelemetryProcessor(exceptionConfig);
-
- var srv = new MeasurementEventNormalizationService(_logger, _template, _converter, _exceptionTelemetryProcessor, 1);
- var exception = await Assert.ThrowsAsync(() => srv.ProcessAsync(events.Keys, _consumer));
-
- Action validateInnerExceptions = e =>
- {
- Assert.IsType(e);
- Assert.Equal("Test", e.Message);
- };
-
- // Verify all exceptions in the returned aggregate exception
- Assert.Collection(exception.InnerExceptions, Enumerable.Range(0, 10).Select(i => validateInnerExceptions).ToArray());
-
- _template.ReceivedWithAnyArgs(10).GetMeasurements(null);
- _converter.ReceivedWithAnyArgs(10).Convert(null);
- await _consumer.ReceivedWithAnyArgs(0).AddAsync(null);
- }
-
- [Fact]
- public async Task GivenEventsAndOperationCancellationException_WhenProcessAsync_ThenExecutionHalted_Test()
- {
- _template.GetMeasurements(null).ReturnsForAnyArgs(new[] { Substitute.For(), Substitute.For() });
-
- var events = Enumerable.Range(0, 10).Select(i => BuildEvent(i)).ToArray();
-
- _consumer.AddAsync(null).ReturnsForAnyArgs(v => Task.FromException(new OperationCanceledException()));
-
- var srv = new MeasurementEventNormalizationService(_logger, _template, _converter, _exceptionTelemetryProcessor, 1);
- var exception = await Assert.ThrowsAsync(() => srv.ProcessAsync(events, _consumer));
-
- _template.ReceivedWithAnyArgs(events.Length).GetMeasurements(null);
- _converter.ReceivedWithAnyArgs(events.Length).Convert(null);
- await _consumer.Received(1).AddAsync(Arg.Is>(l => l.Count() == events.Length * 2), Arg.Any());
- }
-
- [Fact]
- public async Task GivenEventsAndTaskCancellationException_WhenProcessAsync_ThenExecutionHalted_Test()
- {
- _template.GetMeasurements(null).ReturnsForAnyArgs(new[] { Substitute.For(), Substitute.For() });
-
- var events = Enumerable.Range(0, 10).Select(i => BuildEvent(i)).ToArray();
-
- _consumer.AddAsync(null).ReturnsForAnyArgs(v => Task.FromException(new TaskCanceledException()));
-
- var srv = new MeasurementEventNormalizationService(_logger, _template, _converter, _exceptionTelemetryProcessor, 1);
- var exception = await Assert.ThrowsAsync(() => srv.ProcessAsync(events, _consumer));
-
- _template.ReceivedWithAnyArgs(events.Length).GetMeasurements(null);
- _converter.ReceivedWithAnyArgs(events.Length).Convert(null);
- await _consumer.Received(1).AddAsync(Arg.Is>(l => l.Count() == events.Length * 2), Arg.Any());
- }
-
- private static EventData BuildEvent(int? sequence = 0)
- {
- return new EventData(Array.Empty())
- {
- SystemProperties = new EventData.SystemPropertiesCollection(sequence.Value, DateTime.UtcNow.AddSeconds(sequence.Value - 10), sequence?.ToString(), 0.ToString()),
- };
- }
- }
-}
diff --git a/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/TestInput/data_IotHubPayloadExample.json b/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/TestInput/data_IotHubPayloadExample.json
deleted file mode 100644
index f6ca6266..00000000
--- a/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/TestInput/data_IotHubPayloadExample.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "Properties": "{\"iothub-creation-time-utc\":\"2019-01-30T22:45:02.6073744Z\",\"tz\":\"America/Los_Angeles\",\"batchid\":\"55b1e26f-9c83-4264-a0dd-3567afd633d6\",\"batchsize\":\"60\"}",
- "SystemProperties": "{\"iothub-connection-device-id\":\"ev-d795-1d04-55ae\",\"iothub-connection-auth-method\":\"{\\\"scope\\\":\\\"device\\\",\\\"type\\\":\\\"sas\\\",\\\"issuer\\\":\\\"iothub\\\",\\\"acceptingIpFilterRule\\\":null}\",\"iothub-connection-auth-generation-id\":\"636845741198574895\",\"iothub-enqueuedtime\":\"2019-02-01T22:46:01.8750000Z\"}",
- "Body": "\"eyJoZWFydHJhdGUiOiIyMDMifQ==\""
-}
diff --git a/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/packages.lock.json b/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/packages.lock.json
deleted file mode 100644
index d2b421e1..00000000
--- a/test/Microsoft.Health.Fhir.Ingest.Legacy.UnitTests/packages.lock.json
+++ /dev/null
@@ -1,2328 +0,0 @@
-{
- "version": 2,
- "dependencies": {
- "net6.0": {
- "Microsoft.Net.Compilers.Toolset": {
- "type": "Direct",
- "requested": "[4.2.0, )",
- "resolved": "4.2.0",
- "contentHash": "Hs7t4nRCp68XaWcGf3+SZ5Rud3Km6zQ8+jvR42tBohjVu2Nu2x2QhHVpEzQ56aZmGYEcZUztrTHLYyE0GYLpvg=="
- },
- "Microsoft.NET.Test.Sdk": {
- "type": "Direct",
- "requested": "[17.2.0, )",
- "resolved": "17.2.0",
- "contentHash": "kYmkDYbcDd+jNvmMH4TMtgHjsUYbIsWENM2VcjB0X7TawXbehL5I8OIsu2TgFS/nQCgZE94InrqMxrm7WDy+Lw==",
- "dependencies": {
- "Microsoft.CodeCoverage": "17.2.0",
- "Microsoft.TestPlatform.TestHost": "17.2.0"
- }
- },
- "Newtonsoft.Json": {
- "type": "Direct",
- "requested": "[13.0.3, )",
- "resolved": "13.0.3",
- "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
- },
- "NSubstitute": {
- "type": "Direct",
- "requested": "[4.4.0, )",
- "resolved": "4.4.0",
- "contentHash": "aArWp0M9n/3IZHCNSb3QIHy0tkPLSft8l3KFeUa54GbznKiv0FE687TBfPhZbXf0/zGtc4EsHLEUqEEf0Bf4HQ==",
- "dependencies": {
- "Castle.Core": "5.0.0"
- }
- },
- "StyleCop.Analyzers": {
- "type": "Direct",
- "requested": "[1.1.118, )",
- "resolved": "1.1.118",
- "contentHash": "Onx6ovGSqXSK07n/0eM3ZusiNdB6cIlJdabQhWGgJp3Vooy9AaLS/tigeybOJAobqbtggTamoWndz72JscZBvw=="
- },
- "System.Net.Http": {
- "type": "Direct",
- "requested": "[4.3.4, )",
- "resolved": "4.3.4",
- "contentHash": "aOa2d51SEbmM+H+Csw7yJOuNZoHkrP2XnAurye5HWYgGVVU54YZDvsLUYRv6h18X3sPnjNCANmN7ZhIPiqMcjA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.1",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.DiagnosticSource": "4.3.0",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Globalization.Extensions": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.Net.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.OpenSsl": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Security.Cryptography.X509Certificates": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "runtime.native.System": "4.3.0",
- "runtime.native.System.Net.Http": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
- }
- },
- "System.Text.RegularExpressions": {
- "type": "Direct",
- "requested": "[4.3.1, )",
- "resolved": "4.3.1",
- "contentHash": "N0kNRrWe4+nXOWlpLT4LAY5brb8caNFlUuIRpraCVMDLYutKkol1aV079rQjLuSxKMJT2SpBQsYX9xbcTMmzwg==",
- "dependencies": {
- "System.Runtime": "4.3.1"
- }
- },
- "xunit": {
- "type": "Direct",
- "requested": "[2.4.2, )",
- "resolved": "2.4.2",
- "contentHash": "6Mj73Ont3zj2CJuoykVJfE0ZmRwn7C+pTuRP8c4bnaaTFjwNG6tGe0prJ1yIbMe9AHrpDys63ctWacSsFJWK/w==",
- "dependencies": {
- "xunit.analyzers": "1.0.0",
- "xunit.assert": "2.4.2",
- "xunit.core": "[2.4.2]"
- }
- },
- "xunit.runner.visualstudio": {
- "type": "Direct",
- "requested": "[2.4.5, )",
- "resolved": "2.4.5",
- "contentHash": "OwHamvBdUKgqsXfBzWiCW/O98BTx81UKzx2bieIOQI7CZFE5NEQZGi8PBQGIKawDW96xeRffiNf20SjfC0x9hw=="
- },
- "Azure.Core.Amqp": {
- "type": "Transitive",
- "resolved": "1.3.0",
- "contentHash": "6GG4gyFkAuHtpBVkvj0wE5+lCM+ttsZlIWAipBkI+jlCUlTgrTiNUROBFnb8xuKoymVDw9Tf1W8RoKqgbd71lg==",
- "dependencies": {
- "Microsoft.Azure.Amqp": "2.6.1",
- "System.Memory": "4.5.4",
- "System.Memory.Data": "1.0.2"
- }
- },
- "Azure.Storage.Common": {
- "type": "Transitive",
- "resolved": "12.15.0",
- "contentHash": "/SAgn9hhjfHO0RPWp0ilGLr3aMPz+rrz6iRgLKTb1708pI78WLtsQ7/kGooUbCU2flSnk/egmJ0Qj9rFVks/nA==",
- "dependencies": {
- "Azure.Core": "1.31.0",
- "System.IO.Hashing": "6.0.0"
- }
- },
- "Castle.Core": {
- "type": "Transitive",
- "resolved": "5.0.0",
- "contentHash": "edc8jjyXqzzy8jFdhs36FZdwmlDDTgqPb2Zy1Q5F/f2uAc88bu/VS/0Tpvgupmpl9zJOvOo5ZizVANb0ltN1NQ==",
- "dependencies": {
- "System.Diagnostics.EventLog": "6.0.0"
- }
- },
- "JmesPath.Net.Parser": {
- "type": "Transitive",
- "resolved": "1.0.205",
- "contentHash": "ghZ/GtO0xm+ieE2IxOdlwI5u16qBf8qhFqbeVOXQ56wtjweuP0oC9UAYd0gjRrrrcLAvQ9eV79mlHLy+6ZiQ9w==",
- "dependencies": {
- "NETStandard.Library": "1.6.1"
- }
- },
- "Microsoft.AspNetCore.Authentication.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "VloMLDJMf3n/9ic5lCBOa42IBYJgyB1JhzLsL68Zqg+2bEPWfGBj/xCJy/LrKTArN0coOcZp3wyVTZlx0y9pHQ==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
- "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
- "Microsoft.Extensions.Options": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Authentication.Core": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "XlVJzJ5wPOYW+Y0J6Q/LVTEyfS4ssLXmt60T0SPP+D8abVhBTl+cgw2gDHlyKYIkcJg7btMVh383NDkMVqD/fg==",
- "dependencies": {
- "Microsoft.AspNetCore.Authentication.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.Http": "2.2.0",
- "Microsoft.AspNetCore.Http.Extensions": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Authorization": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "/L0W8H3jMYWyaeA9gBJqS/tSWBegP9aaTM0mjRhxTttBY9z4RVDRYJ2CwPAmAXIuPr3r1sOw+CS8jFVRGHRezQ==",
- "dependencies": {
- "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
- "Microsoft.Extensions.Options": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Authorization.Policy": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "aJCo6niDRKuNg2uS2WMEmhJTooQUGARhV2ENQ2tO5443zVHUo19MSgrgGo9FIrfD+4yKPF8Q+FF33WkWfPbyKw==",
- "dependencies": {
- "Microsoft.AspNetCore.Authentication.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.Authorization": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Hosting.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "ubycklv+ZY7Kutdwuy1W4upWcZ6VFR8WUXU7l7B2+mvbDBBPAcfpi+E+Y5GFe+Q157YfA3C49D2GCjAZc7Mobw==",
- "dependencies": {
- "Microsoft.AspNetCore.Hosting.Server.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
- "Microsoft.Extensions.Hosting.Abstractions": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Hosting.Server.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "1PMijw8RMtuQF60SsD/JlKtVfvh4NORAhF4wjysdABhlhTrYmtgssqyncR0Stq5vqtjplZcj6kbT4LRTglt9IQ==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Features": "2.2.0",
- "Microsoft.Extensions.Configuration.Abstractions": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Http": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "YogBSMotWPAS/X5967pZ+yyWPQkThxhmzAwyCHCSSldzYBkW5W5d6oPfBaPqQOnSHYTpSOSOkpZoAce0vwb6+A==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.WebUtilities": "2.2.0",
- "Microsoft.Extensions.ObjectPool": "2.2.0",
- "Microsoft.Extensions.Options": "2.2.0",
- "Microsoft.Net.Http.Headers": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Http.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "Nxs7Z1q3f1STfLYKJSVXCs1iBl+Ya6E8o4Oy1bCxJ/rNI44E/0f6tbsrVqAWfB7jlnJfyaAtIalBVxPKUPQb4Q==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Features": "2.2.0",
- "System.Text.Encodings.Web": "4.5.0"
- }
- },
- "Microsoft.AspNetCore.Http.Extensions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "2DgZ9rWrJtuR7RYiew01nGRzuQBDaGHGmK56Rk54vsLLsCdzuFUPqbDTJCS1qJQWTbmbIQ9wGIOjpxA1t0l7/w==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "2.2.0",
- "Microsoft.Net.Http.Headers": "2.2.0",
- "System.Buffers": "4.5.0"
- }
- },
- "Microsoft.AspNetCore.Http.Features": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "ziFz5zH8f33En4dX81LW84I6XrYXKf9jg6aM39cM+LffN9KJahViKZ61dGMSO2gd3e+qe5yBRwsesvyqlZaSMg==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.ResponseCaching.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "CIHWEKrHzZfFp7t57UXsueiSA/raku56TgRYauV/W1+KAQq6vevz60zjEKaazt3BI76zwMz3B4jGWnCwd8kwQw==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Routing": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "jAhDBy0wryOnMhhZTtT9z63gJbvCzFuLm8yC6pHzuVu9ZD1dzg0ltxIwT4cfwuNkIL/TixdKsm3vpVOpG8euWQ==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Extensions": "2.2.0",
- "Microsoft.AspNetCore.Routing.Abstractions": "2.2.0",
- "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
- "Microsoft.Extensions.ObjectPool": "2.2.0",
- "Microsoft.Extensions.Options": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Routing.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "lRRaPN7jDlUCVCp9i0W+PB0trFaKB0bgMJD7hEJS9Uo4R9MXaMC8X2tJhPLmeVE3SGDdYI4QNKdVmhNvMJGgPQ==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Abstractions": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.WebUtilities": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "9ErxAAKaDzxXASB/b5uLEkLgUWv1QbeVxyJYEHQwMaxXOeFFVkQxiq8RyfVcifLU7NR0QY0p3acqx4ZpYfhHDg==",
- "dependencies": {
- "Microsoft.Net.Http.Headers": "2.2.0",
- "System.Text.Encodings.Web": "4.5.0"
- }
- },
- "Microsoft.Azure.Amqp": {
- "type": "Transitive",
- "resolved": "2.6.2",
- "contentHash": "6hQqWRiHRd9J6pGBlzQM9LBOWaO8xIsRVYs3olrDGqOkK7v9mgwz9rmrv+49FIbLEOGgkP9IKLnXdsA4Y8IIYw=="
- },
- "Microsoft.Azure.Services.AppAuthentication": {
- "type": "Transitive",
- "resolved": "1.0.3",
- "contentHash": "ywpQaK1klu1IoX4VUf+TBmU4kR71aWNI6O5rEIJU8z28L2xhJhnIm7k2Nf1Zu/PygeuOtt5g0QPCk5+lLltbeQ==",
- "dependencies": {
- "Microsoft.IdentityModel.Clients.ActiveDirectory": "3.14.2",
- "NETStandard.Library": "1.6.1",
- "System.Diagnostics.Process": "4.3.0"
- }
- },
- "Microsoft.Azure.WebJobs.Core": {
- "type": "Transitive",
- "resolved": "3.0.31",
- "contentHash": "iStV0MQ9env8R2F+8cbaynMK4TDkU6bpPVLdOzIs83iriHYMF+uWF6WZWI8ZJahWR37puQWc86u1YCsoIZEocA==",
- "dependencies": {
- "System.ComponentModel.Annotations": "4.4.0",
- "System.Diagnostics.TraceSource": "4.3.0"
- }
- },
- "Microsoft.CodeCoverage": {
- "type": "Transitive",
- "resolved": "17.2.0",
- "contentHash": "MsKhJmwIfHxNDbTIlgQy29UpWSWPpbZOQPhQ7xalRy+ABnl8/neFHZGzSP3XlpW2dKAXHTFrtIcKzW/kopY2Bg=="
- },
- "Microsoft.DotNet.PlatformAbstractions": {
- "type": "Transitive",
- "resolved": "2.1.0",
- "contentHash": "9KPDwvb/hLEVXYruVHVZ8BkebC8j17DmPb56LnqRF74HqSPLjCkrlFUjOtFpQPA2DeADBRTI/e69aCfRBfrhxw==",
- "dependencies": {
- "System.AppContext": "4.1.0",
- "System.Collections": "4.0.11",
- "System.IO": "4.1.0",
- "System.IO.FileSystem": "4.0.1",
- "System.Reflection.TypeExtensions": "4.1.0",
- "System.Runtime.Extensions": "4.1.0",
- "System.Runtime.InteropServices": "4.1.0",
- "System.Runtime.InteropServices.RuntimeInformation": "4.0.0"
- }
- },
- "Microsoft.Extensions.Caching.Abstractions": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "bcz5sSFJbganH0+YrfvIjJDIcKNW7TL07C4d1eTmXy/wOt52iz4LVogJb6pazs7W0+74j0YpXFErvp++Aq5Bsw==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.CommandLine": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "3nL1qCkZ1Oxx14ZTzgo4MmlO7tso7F+TtMZAY2jUAtTLyAcDp+EDjk3RqafoKiNaePyPvvlleEcBxh3b2Hzl1g==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "6.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.EnvironmentVariables": {
- "type": "Transitive",
- "resolved": "6.0.1",
- "contentHash": "pnyXV1LFOsYjGveuC07xp0YHIyGq7jRq5Ncb5zrrIieMLWVwgMyYxcOH0jTnBedDT4Gh1QinSqsjqzcieHk1og==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "6.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.FileExtensions": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "V4Dth2cYMZpw3HhGw9XUDIijpI6gN+22LDt0AhufIgOppCUfpWX4483OmN+dFXRJkJLc8Tv0Q8QK+1ingT2+KQ==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "6.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Physical": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.DependencyInjection.Abstractions": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg=="
- },
- "Microsoft.Extensions.DependencyModel": {
- "type": "Transitive",
- "resolved": "2.1.0",
- "contentHash": "nS2XKqi+1A1umnYNLX2Fbm/XnzCxs5i+zXVJ3VC6r9t2z0NZr9FLnJN4VQpKigdcWH/iFTbMuX6M6WQJcTjVIg==",
- "dependencies": {
- "Microsoft.DotNet.PlatformAbstractions": "2.1.0",
- "Newtonsoft.Json": "9.0.1",
- "System.Diagnostics.Debug": "4.0.11",
- "System.Dynamic.Runtime": "4.0.11",
- "System.Linq": "4.1.0"
- }
- },
- "Microsoft.Extensions.FileProviders.Abstractions": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "0pd4/fho0gC12rQswaGQxbU34jOS1TPS8lZPpkFCH68ppQjHNHYle9iRuHeev1LhrJ94YPvzcRd8UmIuFk23Qw==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.FileProviders.Physical": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "QvkL7l0nM8udt3gfyu0Vw8bbCXblxaKOl7c2oBfgGy4LCURRaL9XWZX1FWJrQc43oMokVneVxH38iz+bY1sbhg==",
- "dependencies": {
- "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileSystemGlobbing": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.FileSystemGlobbing": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "ip8jnL1aPiaPeKINCqaTEbvBFDmVx9dXQEBZ2HOBRXPD1eabGNqP/bKlsIcp7U2lGxiXd5xIhoFcmY8nM4Hdiw=="
- },
- "Microsoft.Extensions.Hosting.Abstractions": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "GcT5l2CYXL6Sa27KCSh0TixsRfADUgth+ojQSD5EkzisZxmGFh7CwzkcYuGwvmXLjr27uWRNrJ2vuuEjMhU05Q==",
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0"
- }
- },
- "Microsoft.Extensions.Logging": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "System.Diagnostics.DiagnosticSource": "6.0.0"
- }
- },
- "Microsoft.Extensions.Logging.Configuration": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "ZDskjagmBAbv+K8rYW9VhjPplhbOE63xUD0DiuydZJwt15dRyoqicYklLd86zzeintUc7AptDkHn+YhhYkYo8A==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "6.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.Configuration.Binder": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "Microsoft.Extensions.Options.ConfigurationExtensions": "6.0.0"
- }
- },
- "Microsoft.Extensions.Logging.Console": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "gsqKzOEdsvq28QiXFxagmn1oRB9GeI5GgYCkoybZtQA0IUb7QPwf1WmN3AwJeNIsadTvIFQCiVK0OVIgKfOBGg==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging.Configuration": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "System.Text.Json": "6.0.0"
- }
- },
- "Microsoft.Extensions.Logging.Debug": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "M9g/JixseSZATJE9tcMn9uzoD4+DbSglivFqVx8YkRJ7VVPmnvCEbOZ0AAaxsL1EKyI4cz07DXOOJExxNsUOHw==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0"
- }
- },
- "Microsoft.Extensions.Logging.EventLog": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "rlo0RxlMd0WtLG3CHI0qOTp6fFn7MvQjlrCjucA31RqmiMFCZkF8CHNbe8O7tbBIyyoLGWB1he9CbaA5iyHthg==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "System.Diagnostics.EventLog": "6.0.0"
- }
- },
- "Microsoft.Extensions.Logging.EventSource": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "BeDyyqt7nkm/nr+Gdk+L8n1tUT/u33VkbXAOesgYSNsxDM9hJ1NOBGoZfj9rCbeD2+9myElI6JOVVFmnzgeWQA==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0",
- "System.Runtime.CompilerServices.Unsafe": "6.0.0",
- "System.Text.Json": "6.0.0"
- }
- },
- "Microsoft.Extensions.ObjectPool": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "gA8H7uQOnM5gb+L0uTNjViHYr+hRDqCdfugheGo/MxQnuHzmhhzCBTIPm19qL1z1Xe0NEMabfcOBGv9QghlZ8g=="
- },
- "Microsoft.Extensions.Options.ConfigurationExtensions": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "bXWINbTn0vC0FYc9GaQTISbxhQLAMrvtbuvD9N6JelEaIS/Pr62wUCinrq5bf1WRBGczt1v4wDhxFtVFNcMdUQ==",
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.Configuration.Binder": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.Primitives": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==",
- "dependencies": {
- "System.Runtime.CompilerServices.Unsafe": "6.0.0"
- }
- },
- "Microsoft.Identity.Client.Extensions.Msal": {
- "type": "Transitive",
- "resolved": "2.31.0",
- "contentHash": "IhGSqN0szneKC5Qk3/okJQJbDpQfLW/+mvslhzJPox4t2UuIkA2ZHe4w/z62ASye46G9sQWF9qqLXTgNacE2xQ==",
- "dependencies": {
- "Microsoft.Identity.Client": "4.54.1",
- "System.IO.FileSystem.AccessControl": "5.0.0",
- "System.Security.Cryptography.ProtectedData": "4.5.0"
- }
- },
- "Microsoft.IdentityModel.Abstractions": {
- "type": "Transitive",
- "resolved": "6.22.0",
- "contentHash": "iI+9V+2ciCrbheeLjpmjcqCnhy+r6yCoEcid3nkoFWerHgjVuT6CPM4HODUTtUPe1uwks4wcnAujJ8u+IKogHQ=="
- },
- "Microsoft.IdentityModel.Clients.ActiveDirectory": {
- "type": "Transitive",
- "resolved": "4.5.0",
- "contentHash": "YcSLCMaFwhy7EBIndvzjRde2OiT7DoMCLRhgBWzrOUAUrqYEMtyzwm1D6J+nli1GpYQ/+NtujVn1wFiIMC0/Yw==",
- "dependencies": {
- "NETStandard.Library": "1.6.1",
- "System.Runtime.Serialization.Json": "4.3.0",
- "System.Runtime.Serialization.Primitives": "4.3.0",
- "System.Security.Cryptography.X509Certificates": "4.3.0",
- "System.Security.SecureString": "4.3.0",
- "System.Xml.XDocument": "4.3.0"
- }
- },
- "Microsoft.IdentityModel.JsonWebTokens": {
- "type": "Transitive",
- "resolved": "5.2.4",
- "contentHash": "494JCwsMINjjmrl/kOTdOtcsm3ESh8W16zg0b3nNJBgnpOu9eDgs8KDOtP3kRjSQtHcLrTsBI1XJ5FbhKm1TrA==",
- "dependencies": {
- "Microsoft.IdentityModel.Tokens": "5.2.4",
- "NETStandard.Library": "1.6.1",
- "Newtonsoft.Json": "10.0.1"
- }
- },
- "Microsoft.IdentityModel.Logging": {
- "type": "Transitive",
- "resolved": "5.2.4",
- "contentHash": "12iZoCdMrwcQ8yOvg0AlG9oz6dIqvCczWsrHdALICsMWcBNFCAEyA0LELUYD0FZ7FVGvh4Z/KrPMkBVqVnIg2A==",
- "dependencies": {
- "NETStandard.Library": "1.6.1",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0"
- }
- },
- "Microsoft.IdentityModel.Tokens": {
- "type": "Transitive",
- "resolved": "5.2.4",
- "contentHash": "hVkEnZTnU23IQv5hsbBmlJgmr/NdDg1yU6QPSoVirbfK1z+sDSItzDpZuKDcLjE81v174BlChdezKfVOzpr2YA==",
- "dependencies": {
- "Microsoft.IdentityModel.Logging": "5.2.4",
- "NETStandard.Library": "1.6.1",
- "Newtonsoft.Json": "10.0.1",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Tools": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.InteropServices.RuntimeInformation": "4.3.0",
- "System.Runtime.Serialization.Xml": "4.3.0",
- "System.Security.Claims": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.X509Certificates": "4.3.0",
- "System.Text.RegularExpressions": "4.3.0",
- "System.Threading": "4.3.0"
- }
- },
- "Microsoft.Net.Http.Headers": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "iZNkjYqlo8sIOI0bQfpsSoMTmB/kyvmV2h225ihyZT33aTp48ZpF6qYnXxzSXmHt8DpBAwBTX+1s1UFLbYfZKg==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "2.2.0",
- "System.Buffers": "4.5.0"
- }
- },
- "Microsoft.NETCore.Platforms": {
- "type": "Transitive",
- "resolved": "5.0.0",
- "contentHash": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ=="
- },
- "Microsoft.NETCore.Targets": {
- "type": "Transitive",
- "resolved": "1.1.3",
- "contentHash": "3Wrmi0kJDzClwAC+iBdUBpEKmEle8FQNsCs77fkiOIw/9oYA07bL1EZNX0kQ2OMN3xpwvl0vAtOCYY3ndDNlhQ=="
- },
- "Microsoft.TestPlatform.ObjectModel": {
- "type": "Transitive",
- "resolved": "17.2.0",
- "contentHash": "7j1KYDHLhU98XnCEbECMncXLydI9fNiFLcFsiBsP3lV6EkHOaj5kTPAWHYkKnPGRC9TbZUboSQq8rWI4dTQsxg==",
- "dependencies": {
- "NuGet.Frameworks": "5.11.0",
- "System.Reflection.Metadata": "1.6.0"
- }
- },
- "Microsoft.TestPlatform.TestHost": {
- "type": "Transitive",
- "resolved": "17.2.0",
- "contentHash": "bI67J+hers241h7eD2eecS02p9CbKcQDIeoRvO4FgMlTWg2ZTzc0D3uWLYr5U+K5x9O1pNmyMoMDbYIeWY/TWw==",
- "dependencies": {
- "Microsoft.TestPlatform.ObjectModel": "17.2.0",
- "Newtonsoft.Json": "9.0.1"
- }
- },
- "Microsoft.Win32.Primitives": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "Microsoft.Win32.Registry": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "Lw1/VwLH1yxz6SfFEjVRCN0pnflLEsWgnV4qsdJ512/HhTwnKXUG+zDQ4yTO3K/EJQemGoNaBHX5InISNKTzUQ==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0"
- }
- },
- "NETStandard.Library": {
- "type": "Transitive",
- "resolved": "1.6.1",
- "contentHash": "WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.Win32.Primitives": "4.3.0",
- "System.AppContext": "4.3.0",
- "System.Collections": "4.3.0",
- "System.Collections.Concurrent": "4.3.0",
- "System.Console": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.Tools": "4.3.0",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Globalization.Calendars": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.Compression": "4.3.0",
- "System.IO.Compression.ZipFile": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Linq": "4.3.0",
- "System.Linq.Expressions": "4.3.0",
- "System.Net.Http": "4.3.0",
- "System.Net.Primitives": "4.3.0",
- "System.Net.Sockets": "4.3.0",
- "System.ObjectModel": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Extensions": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.InteropServices.RuntimeInformation": "4.3.0",
- "System.Runtime.Numerics": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Security.Cryptography.X509Certificates": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Text.Encoding.Extensions": "4.3.0",
- "System.Text.RegularExpressions": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "System.Threading.Timer": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0",
- "System.Xml.XDocument": "4.3.0"
- }
- },
- "NuGet.Frameworks": {
- "type": "Transitive",
- "resolved": "5.11.0",
- "contentHash": "eaiXkUjC4NPcquGWzAGMXjuxvLwc6XGKMptSyOGQeT0X70BUZObuybJFZLA0OfTdueLd3US23NBPTBb6iF3V1Q=="
- },
- "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "7VSGO0URRKoMEAq0Sc9cRz8mb6zbyx/BZDEWhgPdzzpmFhkam3fJ1DAGWFXBI4nGlma+uPKpfuMQP5LXRnOH5g=="
- },
- "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "0oAaTAm6e2oVH+/Zttt0cuhGaePQYKII1dY8iaqP7CvOpVKgLybKRFvQjXR2LtxXOXTVPNv14j0ot8uV+HrUmw=="
- },
- "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "G24ibsCNi5Kbz0oXWynBoRgtGvsw5ZSVEWjv13/KiCAM8C6wz9zzcCniMeQFIkJ2tasjo2kXlvlBZhplL51kGg=="
- },
- "runtime.native.System": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0"
- }
- },
- "runtime.native.System.IO.Compression": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0"
- }
- },
- "runtime.native.System.Net.Http": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0"
- }
- },
- "runtime.native.System.Security.Cryptography.Apple": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==",
- "dependencies": {
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0"
- }
- },
- "runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "QR1OwtwehHxSeQvZKXe+iSd+d3XZNkEcuWMFYa2i0aG1l+lR739HPicKMlTbJst3spmeekDVBUS7SeS26s4U/g==",
- "dependencies": {
- "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
- "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
- }
- },
- "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "I+GNKGg2xCHueRd1m9PzeEW7WLbNNLznmTuEi8/vZX71HudUbx1UTwlGkiwMri7JLl8hGaIAWnA/GONhu+LOyQ=="
- },
- "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "1Z3TAq1ytS1IBRtPXJvEUZdVsfWfeNEhBkbiOCGEl9wwAfsjP2lz3ZFDx5tq8p60/EqbS0HItG5piHuB71RjoA=="
- },
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ=="
- },
- "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "6mU/cVmmHtQiDXhnzUImxIcDL48GbTk+TsptXyJA+MIOG9LRjPoAQC/qBFB7X+UNyK86bmvGwC8t+M66wsYC8w=="
- },
- "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "vjwG0GGcTW/PPg6KVud8F9GLWYuAV1rrw1BKAqY0oh4jcUqg15oYF1+qkGR2x2ZHM4DQnWKQ7cJgYbfncz/lYg=="
- },
- "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "7KMFpTkHC/zoExs+PwP8jDCWcrK9H6L7soowT80CUx3e+nxP/AFnq0AQAW5W76z2WYbLAYCRyPfwYFG6zkvQRw=="
- },
- "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "xrlmRCnKZJLHxyyLIqkZjNXqgxnKdZxfItrPkjI+6pkRo5lHX8YvSZlWrSI5AVwLMi4HbNWP7064hcAWeZKp5w=="
- },
- "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.2",
- "contentHash": "leXiwfiIkW7Gmn7cgnNcdtNAU70SjmKW3jxGj1iKHOvdn0zRWsgv/l2OJUO5zdGdiv2VRFnAsxxhDgMzofPdWg=="
- },
- "System.AppContext": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==",
- "dependencies": {
- "System.Runtime": "4.3.0"
- }
- },
- "System.Buffers": {
- "type": "Transitive",
- "resolved": "4.5.0",
- "contentHash": "pL2ChpaRRWI/p4LXyy4RgeWlYF2sgfj/pnVMvBqwNFr5cXg7CXNnWZWxrOONLg8VGdFB8oB+EG2Qw4MLgTOe+A=="
- },
- "System.Collections": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Collections.Concurrent": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.Tracing": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.Console": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.IO": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Text.Encoding": "4.3.0"
- }
- },
- "System.Diagnostics.Debug": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Diagnostics.DiagnosticSource": {
- "type": "Transitive",
- "resolved": "6.0.1",
- "contentHash": "KiLYDu2k2J82Q9BJpWiuQqCkFjRBWVq4jDzKKWawVi9KWzyD0XG3cmfX0vqTQlL14Wi9EufJrbL0+KCLTbqWiQ==",
- "dependencies": {
- "System.Runtime.CompilerServices.Unsafe": "6.0.0"
- }
- },
- "System.Diagnostics.EventLog": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw=="
- },
- "System.Diagnostics.Process": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "J0wOX07+QASQblsfxmIMFc9Iq7KTXYL3zs2G/Xc704Ylv3NpuVdo6gij6V3PGiptTxqsK0K7CdXenRvKUnkA2g==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.Win32.Primitives": "4.3.0",
- "Microsoft.Win32.Registry": "4.3.0",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Text.Encoding.Extensions": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "System.Threading.Thread": "4.3.0",
- "System.Threading.ThreadPool": "4.3.0",
- "runtime.native.System": "4.3.0"
- }
- },
- "System.Diagnostics.Tools": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Diagnostics.TraceSource": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "VnYp1NxGx8Ww731y2LJ1vpfb/DKVNKEZ8Jsh5SgQTZREL/YpWRArgh9pI8CDLmgHspZmLL697CaLvH85qQpRiw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Threading": "4.3.0",
- "runtime.native.System": "4.3.0"
- }
- },
- "System.Diagnostics.Tracing": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Dynamic.Runtime": {
- "type": "Transitive",
- "resolved": "4.0.11",
- "contentHash": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==",
- "dependencies": {
- "System.Collections": "4.0.11",
- "System.Diagnostics.Debug": "4.0.11",
- "System.Globalization": "4.0.11",
- "System.Linq": "4.1.0",
- "System.Linq.Expressions": "4.1.0",
- "System.ObjectModel": "4.0.12",
- "System.Reflection": "4.1.0",
- "System.Reflection.Emit": "4.0.1",
- "System.Reflection.Emit.ILGeneration": "4.0.1",
- "System.Reflection.Primitives": "4.0.1",
- "System.Reflection.TypeExtensions": "4.1.0",
- "System.Resources.ResourceManager": "4.0.1",
- "System.Runtime": "4.1.0",
- "System.Runtime.Extensions": "4.1.0",
- "System.Threading": "4.0.11"
- }
- },
- "System.Globalization": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Globalization.Calendars": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Globalization": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Globalization.Extensions": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Globalization": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0"
- }
- },
- "System.IdentityModel.Tokens.Jwt": {
- "type": "Transitive",
- "resolved": "5.2.4",
- "contentHash": "IVIGJO1X8THAUfOIb3/KhPWALPOtXzpnP+36JBBM3BrQdnsE7kbi5m4Hpbax9JQVSdA5KG9cFeFoAtFOWfn90A==",
- "dependencies": {
- "Microsoft.IdentityModel.JsonWebTokens": "5.2.4",
- "Microsoft.IdentityModel.Tokens": "5.2.4",
- "NETStandard.Library": "1.6.1",
- "Newtonsoft.Json": "10.0.1"
- }
- },
- "System.IO": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.IO.Compression": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Buffers": "4.3.0",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "runtime.native.System": "4.3.0",
- "runtime.native.System.IO.Compression": "4.3.0"
- }
- },
- "System.IO.Compression.ZipFile": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==",
- "dependencies": {
- "System.Buffers": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.Compression": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Text.Encoding": "4.3.0"
- }
- },
- "System.IO.FileSystem": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.IO.FileSystem.AccessControl": {
- "type": "Transitive",
- "resolved": "5.0.0",
- "contentHash": "SxHB3nuNrpptVk+vZ/F+7OHEpoHUIKKMl02bUmYHQr1r+glbZQxs7pRtsf4ENO29TVm2TH3AEeep2fJcy92oYw==",
- "dependencies": {
- "System.Security.AccessControl": "5.0.0",
- "System.Security.Principal.Windows": "5.0.0"
- }
- },
- "System.IO.FileSystem.Primitives": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==",
- "dependencies": {
- "System.Runtime": "4.3.0"
- }
- },
- "System.IO.Hashing": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "Rfm2jYCaUeGysFEZjDe7j1R4x6Z6BzumS/vUT5a1AA/AWJuGX71PoGB0RmpyX3VmrGqVnAwtfMn39OHR8Y/5+g=="
- },
- "System.Linq": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0"
- }
- },
- "System.Linq.Expressions": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Linq": "4.3.0",
- "System.ObjectModel": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Emit": "4.3.0",
- "System.Reflection.Emit.ILGeneration": "4.3.0",
- "System.Reflection.Emit.Lightweight": "4.3.0",
- "System.Reflection.Extensions": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Reflection.TypeExtensions": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Threading": "4.3.0"
- }
- },
- "System.Memory.Data": {
- "type": "Transitive",
- "resolved": "1.0.2",
- "contentHash": "JGkzeqgBsiZwKJZ1IxPNsDFZDhUvuEdX8L8BDC8N3KOj+6zMcNU28CNN59TpZE/VJYy9cP+5M+sbxtWJx3/xtw==",
- "dependencies": {
- "System.Text.Encodings.Web": "4.7.2",
- "System.Text.Json": "4.6.0"
- }
- },
- "System.Net.Primitives": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0"
- }
- },
- "System.Net.Sockets": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.IO": "4.3.0",
- "System.Net.Primitives": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.Numerics.Vectors": {
- "type": "Transitive",
- "resolved": "4.5.0",
- "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ=="
- },
- "System.ObjectModel": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Threading": "4.3.0"
- }
- },
- "System.Private.DataContractSerialization": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "yDaJ2x3mMmjdZEDB4IbezSnCsnjQ4BxinKhRAaP6kEgL6Bb6jANWphs5SzyD8imqeC/3FxgsuXT6ykkiH1uUmA==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Collections.Concurrent": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Linq": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Emit.ILGeneration": "4.3.0",
- "System.Reflection.Emit.Lightweight": "4.3.0",
- "System.Reflection.Extensions": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Reflection.TypeExtensions": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Serialization.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Text.Encoding.Extensions": "4.3.0",
- "System.Text.RegularExpressions": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0",
- "System.Xml.XDocument": "4.3.0",
- "System.Xml.XmlDocument": "4.3.0",
- "System.Xml.XmlSerializer": "4.3.0"
- }
- },
- "System.Reflection": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.IO": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Emit": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==",
- "dependencies": {
- "System.IO": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Emit.ILGeneration": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Emit.ILGeneration": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==",
- "dependencies": {
- "System.Reflection": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Emit.Lightweight": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==",
- "dependencies": {
- "System.Reflection": "4.3.0",
- "System.Reflection.Emit.ILGeneration": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Extensions": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Reflection": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.Metadata": {
- "type": "Transitive",
- "resolved": "1.6.0",
- "contentHash": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ=="
- },
- "System.Reflection.Primitives": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Reflection.TypeExtensions": {
- "type": "Transitive",
- "resolved": "4.7.0",
- "contentHash": "VybpaOQQhqE6siHppMktjfGBw1GCwvCqiufqmP8F1nj7fTUNtW35LOEt3UZTEsECfo+ELAl/9o9nJx3U91i7vA=="
- },
- "System.Resources.ResourceManager": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Globalization": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime": {
- "type": "Transitive",
- "resolved": "4.3.1",
- "contentHash": "abhfv1dTK6NXOmu4bgHIONxHyEqFjW8HwXPmpY9gmll+ix9UNo4XDcmzJn6oLooftxNssVHdJC1pGT9jkSynQg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.1",
- "Microsoft.NETCore.Targets": "1.1.3"
- }
- },
- "System.Runtime.CompilerServices.Unsafe": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg=="
- },
- "System.Runtime.Extensions": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime.Handles": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime.InteropServices": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0"
- }
- },
- "System.Runtime.InteropServices.RuntimeInformation": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==",
- "dependencies": {
- "System.Reflection": "4.3.0",
- "System.Reflection.Extensions": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Threading": "4.3.0",
- "runtime.native.System": "4.3.0"
- }
- },
- "System.Runtime.Numerics": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==",
- "dependencies": {
- "System.Globalization": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0"
- }
- },
- "System.Runtime.Serialization.Json": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "CpVfOH0M/uZ5PH+M9+Gu56K0j9lJw3M+PKRegTkcrY/stOIvRUeonggxNrfBYLA5WOHL2j15KNJuTuld3x4o9w==",
- "dependencies": {
- "System.IO": "4.3.0",
- "System.Private.DataContractSerialization": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime.Serialization.Primitives": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "Wz+0KOukJGAlXjtKr+5Xpuxf8+c8739RI1C+A2BoQZT+wMCCoMDDdO8/4IRHfaVINqL78GO8dW8G2lW/e45Mcw==",
- "dependencies": {
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Runtime.Serialization.Xml": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "nUQx/5OVgrqEba3+j7OdiofvVq9koWZAC7Z3xGI8IIViZqApWnZ5+lLcwYgTlbkobrl/Rat+Jb8GeD4WQESD2A==",
- "dependencies": {
- "System.IO": "4.3.0",
- "System.Private.DataContractSerialization": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Serialization.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0"
- }
- },
- "System.Security.AccessControl": {
- "type": "Transitive",
- "resolved": "5.0.0",
- "contentHash": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "5.0.0",
- "System.Security.Principal.Windows": "5.0.0"
- }
- },
- "System.Security.Claims": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "P/+BR/2lnc4PNDHt/TPBAWHVMLMRHsyYZbU1NphW4HIWzCggz8mJbTQQ3MKljFE7LS3WagmVFuBgoLcFzYXlkA==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Security.Principal": "4.3.0"
- }
- },
- "System.Security.Cryptography.Algorithms": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.Numerics": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "runtime.native.System.Security.Cryptography.Apple": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Security.Cryptography.Cng": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0"
- }
- },
- "System.Security.Cryptography.Csp": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.IO": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0"
- }
- },
- "System.Security.Cryptography.Encoding": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.Collections.Concurrent": "4.3.0",
- "System.Linq": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Security.Cryptography.OpenSsl": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.Numerics": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Security.Cryptography.Primitives": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==",
- "dependencies": {
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.Security.Cryptography.ProtectedData": {
- "type": "Transitive",
- "resolved": "4.7.0",
- "contentHash": "ehYW0m9ptxpGWvE4zgqongBVWpSDU/JCFD4K7krxkQwSz/sFQjEXCUqpvencjy6DYDbn7Ig09R8GFffu8TtneQ=="
- },
- "System.Security.Cryptography.X509Certificates": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.Globalization.Calendars": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Runtime.Numerics": "4.3.0",
- "System.Security.Cryptography.Algorithms": "4.3.0",
- "System.Security.Cryptography.Cng": "4.3.0",
- "System.Security.Cryptography.Csp": "4.3.0",
- "System.Security.Cryptography.Encoding": "4.3.0",
- "System.Security.Cryptography.OpenSsl": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "runtime.native.System": "4.3.0",
- "runtime.native.System.Net.Http": "4.3.0",
- "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0"
- }
- },
- "System.Security.Principal": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "I1tkfQlAoMM2URscUtpcRo/hX0jinXx6a/KUtEQoz3owaYwl3qwsO8cbzYVVnjxrzxjHo3nJC+62uolgeGIS9A==",
- "dependencies": {
- "System.Runtime": "4.3.0"
- }
- },
- "System.Security.Principal.Windows": {
- "type": "Transitive",
- "resolved": "5.0.0",
- "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA=="
- },
- "System.Security.SecureString": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "PnXp38O9q/2Oe4iZHMH60kinScv6QiiL2XH54Pj2t0Y6c2zKPEiAZsM/M3wBOHLNTBDFP0zfy13WN2M0qFz5jg==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Security.Cryptography.Primitives": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0"
- }
- },
- "System.Text.Encoding": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Text.Encoding.Extensions": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0",
- "System.Text.Encoding": "4.3.0"
- }
- },
- "System.Text.Json": {
- "type": "Transitive",
- "resolved": "6.0.0",
- "contentHash": "zaJsHfESQvJ11vbXnNlkrR46IaMULk/gHxYsJphzSF+07kTjPHv+Oc14w6QEOfo3Q4hqLJgStUaYB9DBl0TmWg==",
- "dependencies": {
- "System.Runtime.CompilerServices.Unsafe": "6.0.0",
- "System.Text.Encodings.Web": "6.0.0"
- }
- },
- "System.Threading": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==",
- "dependencies": {
- "System.Runtime": "4.3.0",
- "System.Threading.Tasks": "4.3.0"
- }
- },
- "System.Threading.Channels": {
- "type": "Transitive",
- "resolved": "4.7.1",
- "contentHash": "6akRtHK/wab3246t4p5v3HQrtQk8LboOt5T4dtpNgsp3zvDeM4/Gx8V12t0h+c/W9/enUrilk8n6EQqdQorZAA=="
- },
- "System.Threading.Tasks": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Threading.Tasks.Extensions": {
- "type": "Transitive",
- "resolved": "4.5.4",
- "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg=="
- },
- "System.Threading.Thread": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "OHmbT+Zz065NKII/ZHcH9XO1dEuLGI1L2k7uYss+9C1jLxTC9kTZZuzUOyXHayRk+dft9CiDf3I/QZ0t8JKyBQ==",
- "dependencies": {
- "System.Runtime": "4.3.0"
- }
- },
- "System.Threading.ThreadPool": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "k/+g4b7vjdd4aix83sTgC9VG6oXYKAktSfNIJUNGxPEj7ryEOfzHHhfnmsZvjxawwcD9HyWXKCXmPjX8U4zeSw==",
- "dependencies": {
- "System.Runtime": "4.3.0",
- "System.Runtime.Handles": "4.3.0"
- }
- },
- "System.Threading.Timer": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==",
- "dependencies": {
- "Microsoft.NETCore.Platforms": "1.1.0",
- "Microsoft.NETCore.Targets": "1.1.0",
- "System.Runtime": "4.3.0"
- }
- },
- "System.Xml.ReaderWriter": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.IO.FileSystem": "4.3.0",
- "System.IO.FileSystem.Primitives": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Runtime.InteropServices": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Text.Encoding.Extensions": "4.3.0",
- "System.Text.RegularExpressions": "4.3.0",
- "System.Threading.Tasks": "4.3.0",
- "System.Threading.Tasks.Extensions": "4.3.0"
- }
- },
- "System.Xml.XDocument": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Diagnostics.Tools": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0"
- }
- },
- "System.Xml.XmlDocument": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "lJ8AxvkX7GQxpC6GFCeBj8ThYVyQczx2+f/cWHJU8tjS7YfI6Cv6bon70jVEgs2CiFbmmM8b9j1oZVx0dSI2Ww==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Diagnostics.Debug": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Text.Encoding": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0"
- }
- },
- "System.Xml.XmlSerializer": {
- "type": "Transitive",
- "resolved": "4.3.0",
- "contentHash": "MYoTCP7EZ98RrANESW05J5ZwskKDoN0AuZ06ZflnowE50LTpbR5yRg3tHckTVm5j/m47stuGgCrCHWePyHS70Q==",
- "dependencies": {
- "System.Collections": "4.3.0",
- "System.Globalization": "4.3.0",
- "System.IO": "4.3.0",
- "System.Linq": "4.3.0",
- "System.Reflection": "4.3.0",
- "System.Reflection.Emit": "4.3.0",
- "System.Reflection.Emit.ILGeneration": "4.3.0",
- "System.Reflection.Extensions": "4.3.0",
- "System.Reflection.Primitives": "4.3.0",
- "System.Reflection.TypeExtensions": "4.3.0",
- "System.Resources.ResourceManager": "4.3.0",
- "System.Runtime": "4.3.0",
- "System.Runtime.Extensions": "4.3.0",
- "System.Text.RegularExpressions": "4.3.0",
- "System.Threading": "4.3.0",
- "System.Xml.ReaderWriter": "4.3.0",
- "System.Xml.XmlDocument": "4.3.0"
- }
- },
- "xunit.abstractions": {
- "type": "Transitive",
- "resolved": "2.0.3",
- "contentHash": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg=="
- },
- "xunit.analyzers": {
- "type": "Transitive",
- "resolved": "1.0.0",
- "contentHash": "BeO8hEgs/c8Ls2647fPfieMngncvf0D0xYNDfIO59MolxtCtVjFRd6SRc+7tj8VMqkVOuJcnc9eh4ngI2cAmLQ=="
- },
- "xunit.assert": {
- "type": "Transitive",
- "resolved": "2.4.2",
- "contentHash": "pxJISOFjn2XTTi1mcDCkRZrTFb9OtRRCtx2kZFNF51GdReLr1ls2rnyxvAS4JO247K3aNtflvh5Q0346K5BROA==",
- "dependencies": {
- "NETStandard.Library": "1.6.1"
- }
- },
- "xunit.core": {
- "type": "Transitive",
- "resolved": "2.4.2",
- "contentHash": "KB4yGCxNqIVyekhJLXtKSEq6BaXVp/JO3mbGVE1hxypZTLEe7h+sTbAhpA+yZW2dPtXTuiW+C1B2oxxHEkrmOw==",
- "dependencies": {
- "xunit.extensibility.core": "[2.4.2]",
- "xunit.extensibility.execution": "[2.4.2]"
- }
- },
- "xunit.extensibility.core": {
- "type": "Transitive",
- "resolved": "2.4.2",
- "contentHash": "W1BoXTIN1C6kpVSMw25huSet25ky6IAQUNovu3zGOGN/jWnbgSoTyCrlIhmXSg0tH5nEf8q7h3OjNHOjyu5PfA==",
- "dependencies": {
- "NETStandard.Library": "1.6.1",
- "xunit.abstractions": "2.0.3"
- }
- },
- "xunit.extensibility.execution": {
- "type": "Transitive",
- "resolved": "2.4.2",
- "contentHash": "CZmgcKkwpyo8FlupZdWpJCryrAOWLh1FBPG6gmVZuPQkGQsim/oL4PcP4nfrC2hHgXUFtluvaJ0Sp9PQKUMNpg==",
- "dependencies": {
- "NETStandard.Library": "1.6.1",
- "xunit.extensibility.core": "[2.4.2]"
- }
- },
- "microsoft.health.common": {
- "type": "Project",
- "dependencies": {
- "Azure.Core": "[1.34.0, )",
- "Azure.Identity": "[1.10.0, )",
- "Azure.Storage.Blobs": "[12.16.0, )",
- "Ensure.That": "[10.1.0, )",
- "Microsoft.Extensions.Configuration.Abstractions": "[6.0.0, )",
- "Microsoft.Extensions.Configuration.Binder": "[6.0.0, )",
- "Microsoft.Extensions.Options": "[6.0.0, )",
- "Newtonsoft.Json": "[13.0.3, )",
- "System.Text.Encodings.Web": "[6.0.0, )",
- "System.Text.RegularExpressions": "[4.3.1, )",
- "System.Threading.Tasks.Dataflow": "[6.0.0, )"
- }
- },
- "microsoft.health.events": {
- "type": "Project",
- "dependencies": {
- "Azure.Identity": "[1.10.0, )",
- "Azure.Messaging.EventHubs": "[5.9.2, )",
- "Azure.Messaging.EventHubs.Processor": "[5.9.2, )",
- "Azure.Storage.Blobs": "[12.16.0, )",
- "Ensure.That": "[10.1.0, )",
- "Microsoft.AspNetCore.Mvc.Abstractions": "[2.2.0, )",
- "Microsoft.AspNetCore.Mvc.Core": "[2.2.5, )",
- "Microsoft.Bcl.AsyncInterfaces": "[6.0.0, )",
- "Microsoft.Extensions.Hosting": "[6.0.1, )",
- "Microsoft.Health.Common": "[1.0.0, )",
- "Microsoft.Health.Logging": "[1.0.0, )",
- "System.Text.Encodings.Web": "[6.0.0, )"
- }
- },
- "microsoft.health.extensions.fhir": {
- "type": "Project",
- "dependencies": {
- "Ensure.That": "[10.1.0, )",
- "Microsoft.Extensions.Http": "[6.0.0, )",
- "Microsoft.Health.Common": "[1.0.0, )",
- "Microsoft.Health.Extensions.Host": "[1.0.0, )",
- "System.Text.RegularExpressions": "[4.3.1, )"
- }
- },
- "microsoft.health.extensions.host": {
- "type": "Project",
- "dependencies": {
- "Azure.Identity": "[1.10.0, )",
- "Ensure.That": "[10.1.0, )",
- "Microsoft.Azure.WebJobs": "[3.0.31, )",
- "Microsoft.Health.Common": "[1.0.0, )",
- "Microsoft.Identity.Client": "[4.54.1, )",
- "System.Text.RegularExpressions": "[4.3.1, )"
- }
- },
- "microsoft.health.fhir.ingest": {
- "type": "Project",
- "dependencies": {
- "Ensure.That": "[10.1.0, )",
- "Microsoft.ApplicationInsights": "[2.21.0, )",
- "Microsoft.Azure.Functions.Extensions": "[1.1.0, )",
- "Microsoft.Azure.WebJobs": "[3.0.31, )",
- "Microsoft.Extensions.Caching.Memory": "[6.0.1, )",
- "Microsoft.Extensions.Configuration.Abstractions": "[6.0.0, )",
- "Microsoft.Extensions.Logging.Abstractions": "[6.0.1, )",
- "Microsoft.Health.Common": "[1.0.0, )",
- "Microsoft.Health.Events": "[1.0.0, )",
- "Microsoft.Health.Extensions.Fhir": "[1.0.0, )",
- "Microsoft.Health.Extensions.Host": "[1.0.0, )",
- "Microsoft.Health.Fhir.Ingest.Template": "[1.0.0, )",
- "Microsoft.Toolkit.HighPerformance": "[7.1.2, )",
- "Newtonsoft.Json": "[13.0.3, )",
- "Polly": "[7.2.4, )",
- "System.Memory": "[4.5.5, )",
- "System.Text.RegularExpressions": "[4.3.1, )",
- "System.Threading.Tasks.Dataflow": "[6.0.0, )"
- }
- },
- "microsoft.health.fhir.ingest.legacy": {
- "type": "Project",
- "dependencies": {
- "Ensure.That": "[10.1.0, )",
- "Microsoft.ApplicationInsights": "[2.21.0, )",
- "Microsoft.Azure.EventHubs": "[3.0.0, )",
- "Microsoft.Azure.Functions.Extensions": "[1.1.0, )",
- "Microsoft.Azure.WebJobs": "[3.0.31, )",
- "Microsoft.Extensions.Caching.Memory": "[6.0.1, )",
- "Microsoft.Extensions.Configuration.Abstractions": "[6.0.0, )",
- "Microsoft.Extensions.Logging.Abstractions": "[6.0.1, )",
- "Microsoft.Health.Common": "[1.0.0, )",
- "Microsoft.Health.Events": "[1.0.0, )",
- "Microsoft.Health.Extensions.Fhir": "[1.0.0, )",
- "Microsoft.Health.Extensions.Host": "[1.0.0, )",
- "Microsoft.Health.Fhir.Ingest": "[1.0.0, )",
- "Microsoft.Health.Fhir.Ingest.Template": "[1.0.0, )",
- "Microsoft.Toolkit.HighPerformance": "[7.1.2, )",
- "Newtonsoft.Json": "[13.0.3, )",
- "Polly": "[7.2.4, )",
- "System.Memory": "[4.5.5, )",
- "System.Text.RegularExpressions": "[4.3.1, )",
- "System.Threading.Tasks.Dataflow": "[6.0.0, )"
- }
- },
- "microsoft.health.fhir.ingest.schema": {
- "type": "Project",
- "dependencies": {
- "System.Memory": "[4.5.5, )",
- "System.Text.RegularExpressions": "[4.3.1, )"
- }
- },
- "microsoft.health.fhir.ingest.template": {
- "type": "Project",
- "dependencies": {
- "Ensure.That": "[10.1.0, )",
- "JmesPath.Net": "[1.0.205, )",
- "Microsoft.Health.Fhir.Ingest.Schema": "[1.0.0, )",
- "Microsoft.Health.Logging": "[1.0.0, )",
- "Newtonsoft.Json": "[13.0.3, )",
- "System.ComponentModel.Annotations": "[5.0.0, )",
- "System.Text.RegularExpressions": "[4.3.1, )"
- }
- },
- "microsoft.health.logging": {
- "type": "Project",
- "dependencies": {
- "Ensure.That": "[10.1.0, )",
- "Microsoft.ApplicationInsights": "[2.21.0, )",
- "Microsoft.Health.Common": "[1.0.0, )"
- }
- },
- "microsoft.health.tests.common": {
- "type": "Project",
- "dependencies": {
- "Ensure.That": "[10.1.0, )",
- "Microsoft.NET.Test.Sdk": "[17.2.0, )",
- "NSubstitute": "[4.4.0, )",
- "Newtonsoft.Json": "[13.0.3, )",
- "System.Net.Http": "[4.3.4, )",
- "System.Text.RegularExpressions": "[4.3.1, )",
- "xunit": "[2.4.2, )",
- "xunit.runner.visualstudio": "[2.4.5, )"
- }
- },
- "Azure.Core": {
- "type": "CentralTransitive",
- "requested": "[1.34.0, )",
- "resolved": "1.34.0",
- "contentHash": "6dNpM8OlGO+5gvt97tHXBp9qWRFkimRFulupDSGRgyT3sje1kQNza1/EMYaDcolmNARPmVJo8+wgD6ReV9wG5Q==",
- "dependencies": {
- "Microsoft.Bcl.AsyncInterfaces": "1.1.1",
- "System.Diagnostics.DiagnosticSource": "6.0.1",
- "System.Memory.Data": "1.0.2",
- "System.Numerics.Vectors": "4.5.0",
- "System.Text.Encodings.Web": "4.7.2",
- "System.Text.Json": "4.7.2",
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "Azure.Identity": {
- "type": "CentralTransitive",
- "requested": "[1.10.0, )",
- "resolved": "1.10.0",
- "contentHash": "j7HIhQ8Bnf2s325hNwjsTa7jXlJmWFSPgKJCrc1cv2XozEmFsjto1XaCnQzLmbPaTeL6CS5t26icTflY20BnHQ==",
- "dependencies": {
- "Azure.Core": "1.34.0",
- "Microsoft.Identity.Client": "4.54.1",
- "Microsoft.Identity.Client.Extensions.Msal": "2.31.0",
- "System.Memory": "4.5.4",
- "System.Security.Cryptography.ProtectedData": "4.7.0",
- "System.Text.Json": "4.7.2",
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "Azure.Messaging.EventHubs": {
- "type": "CentralTransitive",
- "requested": "[5.9.2, )",
- "resolved": "5.9.2",
- "contentHash": "KAC79xzlOUrtQ0mlrPqijznfmlKeraiqavtZ3RfbV+8ukJf9C5fFSZCMSqq9N/2+eUkW3G4wJSchMXAyf+jxow==",
- "dependencies": {
- "Azure.Core": "1.32.0",
- "Azure.Core.Amqp": "1.3.0",
- "Microsoft.Azure.Amqp": "2.6.2",
- "Microsoft.Bcl.AsyncInterfaces": "1.1.1",
- "System.Diagnostics.DiagnosticSource": "4.6.0",
- "System.Memory.Data": "1.0.2",
- "System.Reflection.TypeExtensions": "4.7.0",
- "System.Threading.Channels": "4.7.1",
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "Azure.Messaging.EventHubs.Processor": {
- "type": "CentralTransitive",
- "requested": "[5.9.2, )",
- "resolved": "5.9.2",
- "contentHash": "vx5R1za8dZPcKZ76Hz9KprSX/CP8UWsGuffdYdwI12GQjhyh4fHN0AEJ+knWw3+TvaFXcEW6GpC6fzC4LHvxuw==",
- "dependencies": {
- "Azure.Messaging.EventHubs": "5.9.2",
- "Azure.Storage.Blobs": "12.16.0",
- "Microsoft.Azure.Amqp": "2.6.2",
- "Microsoft.Bcl.AsyncInterfaces": "1.1.1",
- "System.Diagnostics.DiagnosticSource": "4.6.0",
- "System.Reflection.TypeExtensions": "4.7.0",
- "System.Threading.Channels": "4.7.1",
- "System.Threading.Tasks.Extensions": "4.5.4"
- }
- },
- "Azure.Storage.Blobs": {
- "type": "CentralTransitive",
- "requested": "[12.16.0, )",
- "resolved": "12.16.0",
- "contentHash": "1ibzh49byOzB2ds6k9bsPqXvxxzdc2U9+MmooDr/lYJHgaWEnPZYX/i04vH0oN0jBGN1diW4N27xER8npvOzCw==",
- "dependencies": {
- "Azure.Storage.Common": "12.15.0",
- "System.Text.Json": "4.7.2"
- }
- },
- "Ensure.That": {
- "type": "CentralTransitive",
- "requested": "[10.1.0, )",
- "resolved": "10.1.0",
- "contentHash": "rzTMSs0lQnu0WsesvTjs/zDzqiZXb9r5dv+wFQcPg/iIZqXb5BzwpIWEwi8Q3HA0TS4ytRcY129aSek6IzuOmA=="
- },
- "JmesPath.Net": {
- "type": "CentralTransitive",
- "requested": "[1.0.205, )",
- "resolved": "1.0.205",
- "contentHash": "3zzfc4zUbSahnrFDDiJb/EY1uV0BnIi7HImnjaflxIeXeWCpauAVcIFr7o8AWJ7QzxX3g9CVjZ6ybSv+BZsGSA==",
- "dependencies": {
- "JmesPath.Net.Parser": "1.0.205",
- "NETStandard.Library": "1.6.1",
- "Newtonsoft.Json": "13.0.1",
- "System.Reflection.TypeExtensions": "4.7.0"
- }
- },
- "Microsoft.ApplicationInsights": {
- "type": "CentralTransitive",
- "requested": "[2.21.0, )",
- "resolved": "2.21.0",
- "contentHash": "btZEDWAFNo9CoYliMCriSMTX3ruRGZTtYw4mo2XyyfLlowFicYVM2Xszi5evDG95QRYV7MbbH3D2RqVwfZlJHw==",
- "dependencies": {
- "System.Diagnostics.DiagnosticSource": "5.0.0"
- }
- },
- "Microsoft.AspNetCore.Mvc.Abstractions": {
- "type": "CentralTransitive",
- "requested": "[2.2.0, )",
- "resolved": "2.2.0",
- "contentHash": "ET6uZpfVbGR1NjCuLaLy197cQ3qZUjzl7EG5SL4GfJH/c9KRE89MMBrQegqWsh0w1iRUB/zQaK0anAjxa/pz4g==",
- "dependencies": {
- "Microsoft.AspNetCore.Routing.Abstractions": "2.2.0",
- "Microsoft.Net.Http.Headers": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Mvc.Core": {
- "type": "CentralTransitive",
- "requested": "[2.2.5, )",
- "resolved": "2.2.5",
- "contentHash": "/8sr8ixIUD57UFwUntha9bOwex7/AkZfdk1f9oNJG1Ek7p/uuKVa7fuHmYZpQOf35Oxrt+2Ku4WPwMSbNxOuWg==",
- "dependencies": {
- "Microsoft.AspNetCore.Authentication.Core": "2.2.0",
- "Microsoft.AspNetCore.Authorization.Policy": "2.2.0",
- "Microsoft.AspNetCore.Hosting.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.Http": "2.2.0",
- "Microsoft.AspNetCore.Http.Extensions": "2.2.0",
- "Microsoft.AspNetCore.Mvc.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.ResponseCaching.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.Routing": "2.2.0",
- "Microsoft.AspNetCore.Routing.Abstractions": "2.2.0",
- "Microsoft.Extensions.DependencyInjection": "2.2.0",
- "Microsoft.Extensions.DependencyModel": "2.1.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "2.2.0",
- "Microsoft.Extensions.Logging.Abstractions": "2.2.0",
- "System.Diagnostics.DiagnosticSource": "4.5.0",
- "System.Threading.Tasks.Extensions": "4.5.1"
- }
- },
- "Microsoft.Azure.EventHubs": {
- "type": "CentralTransitive",
- "requested": "[3.0.0, )",
- "resolved": "3.0.0",
- "contentHash": "WwRcZ0ybAWL/gor0jT29WkpAtO5rxFTb2jAMQPPmej/FbclytH/tK3v6U4sIgFggesf+l9wupxDuid4AX6qMRQ==",
- "dependencies": {
- "Microsoft.Azure.Amqp": "2.3.7",
- "Microsoft.Azure.Services.AppAuthentication": "1.0.3",
- "Microsoft.IdentityModel.Clients.ActiveDirectory": "4.5.0",
- "System.Diagnostics.DiagnosticSource": "4.5.0",
- "System.IdentityModel.Tokens.Jwt": "5.2.4",
- "System.Net.Http": "4.3.3",
- "System.Reflection.TypeExtensions": "4.3.0",
- "System.Runtime.Serialization.Primitives": "4.3.0"
- }
- },
- "Microsoft.Azure.Functions.Extensions": {
- "type": "CentralTransitive",
- "requested": "[1.1.0, )",
- "resolved": "1.1.0",
- "contentHash": "zYKtQQoS1fdzufxFApuMFiFtoi9QAGH6McXxntpylwLKgKjmCMWdgUd1dcekzTKNR9DPSDPRLiulvukqXnpWrQ==",
- "dependencies": {
- "Microsoft.Azure.WebJobs": "3.0.18",
- "Microsoft.Extensions.DependencyInjection": "2.1.0"
- }
- },
- "Microsoft.Azure.WebJobs": {
- "type": "CentralTransitive",
- "requested": "[3.0.31, )",
- "resolved": "3.0.31",
- "contentHash": "Jn6E7OgT7LkwVB6lCpjXJcoQIvKrbJT+taVLA4CekEpa21pzZv6nQ2sYRSNzPz5ul3FAcYhmrCQgV7v2iopjgA==",
- "dependencies": {
- "Microsoft.Azure.WebJobs.Core": "3.0.31",
- "Microsoft.Extensions.Configuration": "2.1.1",
- "Microsoft.Extensions.Configuration.Abstractions": "2.1.1",
- "Microsoft.Extensions.Configuration.EnvironmentVariables": "2.1.0",
- "Microsoft.Extensions.Configuration.Json": "2.1.0",
- "Microsoft.Extensions.Hosting": "2.1.0",
- "Microsoft.Extensions.Logging": "2.1.1",
- "Microsoft.Extensions.Logging.Abstractions": "2.1.1",
- "Microsoft.Extensions.Logging.Configuration": "2.1.0",
- "Newtonsoft.Json": "11.0.2",
- "System.Memory.Data": "1.0.1",
- "System.Threading.Tasks.Dataflow": "4.8.0"
- }
- },
- "Microsoft.Bcl.AsyncInterfaces": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg=="
- },
- "Microsoft.Extensions.Caching.Memory": {
- "type": "CentralTransitive",
- "requested": "[6.0.1, )",
- "resolved": "6.0.1",
- "contentHash": "B4y+Cev05eMcjf1na0v9gza6GUtahXbtY1JCypIgx3B4Ea/KAgsWyXEmW4q6zMbmTMtKzmPVk09rvFJirvMwTg==",
- "dependencies": {
- "Microsoft.Extensions.Caching.Abstractions": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration": {
- "type": "CentralTransitive",
- "requested": "[6.0.1, )",
- "resolved": "6.0.0",
- "contentHash": "tq2wXyh3fL17EMF2bXgRhU7JrbO3on93MRKYxzz4JzzvuGSA1l0W3GI9/tl8EO89TH+KWEymP7bcFway6z9fXg==",
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.Abstractions": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "qWzV9o+ZRWq+pGm+1dF+R7qTgTYoXvbyowRoBxQJGfqTpqDun2eteerjRQhq5PQ/14S+lqto3Ft4gYaRyl4rdQ==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.Binder": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "b3ErKzND8LIC7o08QAVlKfaEIYEvLJbtmVbFZVBRXeu9YkKfSSzLZfR1SUfQPBIy9mKLhEtJgGYImkcMNaKE0A==",
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.Json": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "GJGery6QytCzS/BxJ96klgG9in3uH26KcUBbiVG/coNDXCRq6LGVVlUT4vXq34KPuM+R2av+LeYdX9h4IZOCUg==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "6.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.Configuration.FileExtensions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
- "System.Text.Json": "6.0.0"
- }
- },
- "Microsoft.Extensions.Configuration.UserSecrets": {
- "type": "CentralTransitive",
- "requested": "[6.0.1, )",
- "resolved": "6.0.1",
- "contentHash": "Fy8yr4V6obi7ZxvKYI1i85jqtwMq8tqyxQVZpRSkgeA8enqy/KvBIMdcuNdznlxQMZa72mvbHqb7vbg4Pyx95w==",
- "dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.Configuration.Json": "6.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Physical": "6.0.0"
- }
- },
- "Microsoft.Extensions.DependencyInjection": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "System.Runtime.CompilerServices.Unsafe": "6.0.0"
- }
- },
- "Microsoft.Extensions.Hosting": {
- "type": "CentralTransitive",
- "requested": "[6.0.1, )",
- "resolved": "6.0.1",
- "contentHash": "hbmizc9KPWOacLU8Z8YMaBG6KWdZFppczYV/KwnPGU/8xebWxQxdDeJmLOgg968prb7g2oQgnp6JVLX6lgby8g==",
- "dependencies": {
- "Microsoft.Extensions.Configuration": "6.0.0",
- "Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
- "Microsoft.Extensions.Configuration.Binder": "6.0.0",
- "Microsoft.Extensions.Configuration.CommandLine": "6.0.0",
- "Microsoft.Extensions.Configuration.EnvironmentVariables": "6.0.1",
- "Microsoft.Extensions.Configuration.FileExtensions": "6.0.0",
- "Microsoft.Extensions.Configuration.Json": "6.0.0",
- "Microsoft.Extensions.Configuration.UserSecrets": "6.0.1",
- "Microsoft.Extensions.DependencyInjection": "6.0.0",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Abstractions": "6.0.0",
- "Microsoft.Extensions.FileProviders.Physical": "6.0.0",
- "Microsoft.Extensions.Hosting.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging.Configuration": "6.0.0",
- "Microsoft.Extensions.Logging.Console": "6.0.0",
- "Microsoft.Extensions.Logging.Debug": "6.0.0",
- "Microsoft.Extensions.Logging.EventLog": "6.0.0",
- "Microsoft.Extensions.Logging.EventSource": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0"
- }
- },
- "Microsoft.Extensions.Http": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "15+pa2G0bAMHbHewaQIdr/y6ag2H3yh4rd9hTXavtWDzQBkvpe2RMqFg8BxDpcQWssmjmBApGPcw93QRz6YcMg==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Logging": "6.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "6.0.0",
- "Microsoft.Extensions.Options": "6.0.0"
- }
- },
- "Microsoft.Extensions.Logging.Abstractions": {
- "type": "CentralTransitive",
- "requested": "[6.0.1, )",
- "resolved": "6.0.1",
- "contentHash": "dzB2Cgg+JmrouhjkcQGzSFjjvpwlq353i8oBQO2GWNjCXSzhbtBRUf28HSauWe7eib3wYOdb3tItdjRwAdwCSg=="
- },
- "Microsoft.Extensions.Options": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==",
- "dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
- "Microsoft.Extensions.Primitives": "6.0.0"
- }
- },
- "Microsoft.Identity.Client": {
- "type": "CentralTransitive",
- "requested": "[4.54.1, )",
- "resolved": "4.54.1",
- "contentHash": "YkQkV3IRaA1W36HD4NRD1cq+QFr+4QPKK3SgTSpx+RiobXnLZ6E9anOjDi2TS7okOEofBbjR6GyTPp4IR0MnEQ==",
- "dependencies": {
- "Microsoft.IdentityModel.Abstractions": "6.22.0"
- }
- },
- "Microsoft.Toolkit.HighPerformance": {
- "type": "CentralTransitive",
- "requested": "[7.1.2, )",
- "resolved": "7.1.2",
- "contentHash": "cezzRky0BUJyYmSrcQUcX8qAv90JfUwCqWEbqfWZLHyeANo9/LWgW6y50pqbyc8r8SPXVsu2GNH98fB3VxrnvA=="
- },
- "Polly": {
- "type": "CentralTransitive",
- "requested": "[7.2.4, )",
- "resolved": "7.2.4",
- "contentHash": "bw00Ck5sh6ekduDE3mnCo1ohzuad946uslCDEENu3091+6UKnBuKLo4e+yaNcCzXxOZCXWY2gV4a35+K1d4LDA=="
- },
- "System.ComponentModel.Annotations": {
- "type": "CentralTransitive",
- "requested": "[5.0.0, )",
- "resolved": "5.0.0",
- "contentHash": "dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg=="
- },
- "System.Memory": {
- "type": "CentralTransitive",
- "requested": "[4.5.5, )",
- "resolved": "4.5.5",
- "contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw=="
- },
- "System.Text.Encodings.Web": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "Vg8eB5Tawm1IFqj4TVK1czJX89rhFxJo9ELqc/Eiq0eXy13RK00eubyU6TJE6y+GQXjyV5gSfiewDUZjQgSE0w==",
- "dependencies": {
- "System.Runtime.CompilerServices.Unsafe": "6.0.0"
- }
- },
- "System.Threading.Tasks.Dataflow": {
- "type": "CentralTransitive",
- "requested": "[6.0.0, )",
- "resolved": "6.0.0",
- "contentHash": "+tyDCU3/B1lDdOOAJywHQoFwyXIUghIaP2BxG79uvhfTnO+D9qIgjVlL/JV2NTliYbMHpd6eKDmHp2VHpij7MA=="
- }
- }
- }
-}
\ No newline at end of file