Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] Subscriptions engine #4628

Open
wants to merge 51 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
4ca4b0a
Improve fhirtimer
brendankowitz Feb 29, 2024
4331d99
Subscription infra
brendankowitz Apr 16, 2024
1e7eb6d
Fixes wiring up of Transaction Watchdog => Orchestrator
brendankowitz Apr 16, 2024
2c47f35
Adding code for writing to storage
brendankowitz Apr 16, 2024
85f8ba0
Allow resourceKey to deserialize
brendankowitz Apr 16, 2024
70578fd
Implement basic subscription filtering
brendankowitz Apr 16, 2024
82f5c9d
Implements Channel Interface
brendankowitz Apr 16, 2024
35954c7
Add example subscription
brendankowitz Apr 17, 2024
cb40eb2
DataLakeChannel.
fhibf Apr 17, 2024
1eb5264
Changes in DataLakeChannel and the project config.
fhibf Apr 18, 2024
03977d3
Load from DB
brendankowitz Apr 18, 2024
fcd87c0
EventGrid WIP
brendankowitz Apr 22, 2024
4fde508
Improve fhirtimer
brendankowitz Feb 29, 2024
c1a084e
Fixes for subscriptionwatchdog
brendankowitz Jul 16, 2024
b56fc82
Aligns dotnet sdk version for build
brendankowitz Jul 16, 2024
1e5540b
Adds subscription to docker build
brendankowitz Jul 17, 2024
b0cf111
Adds SearchQueryInterpreter
brendankowitz Jul 25, 2024
e1fc436
Cleanup of SearchQueryInterpreter
brendankowitz Jul 26, 2024
b9eb3cf
fix sql retry service merge
aponakampalli Aug 21, 2024
f018f15
fix sql command extensions merge
aponakampalli Aug 21, 2024
94eb190
Improve fhirtimer
brendankowitz Feb 29, 2024
be52627
Subscription infra
brendankowitz Apr 16, 2024
22e1ce2
Fixes wiring up of Transaction Watchdog => Orchestrator
brendankowitz Apr 16, 2024
186ecaf
Adding code for writing to storage
brendankowitz Apr 16, 2024
afeab31
Allow resourceKey to deserialize
brendankowitz Apr 16, 2024
adf381a
Implement basic subscription filtering
brendankowitz Apr 16, 2024
3c49e3e
Implements Channel Interface
brendankowitz Apr 16, 2024
7c4a3c7
Add example subscription
brendankowitz Apr 17, 2024
eaeccd7
DataLakeChannel.
fhibf Apr 17, 2024
35c8371
Changes in DataLakeChannel and the project config.
fhibf Apr 18, 2024
5ed896e
Load from DB
brendankowitz Apr 18, 2024
66fba51
EventGrid WIP
brendankowitz Apr 22, 2024
d51bde3
Improve fhirtimer
brendankowitz Feb 29, 2024
656d4d6
Fixes for subscriptionwatchdog
brendankowitz Jul 16, 2024
09acb1e
Aligns dotnet sdk version for build
brendankowitz Jul 16, 2024
eb3b2bf
Adds subscription to docker build
brendankowitz Jul 17, 2024
c9cb566
Adds SearchQueryInterpreter
brendankowitz Jul 25, 2024
6971bec
Cleanup of SearchQueryInterpreter
brendankowitz Jul 26, 2024
b83c201
Remove <TLogger>
feordin Aug 22, 2024
d0eb1dd
In Memory Search Filter For Subscriptions (#3971)
aponakampalli Aug 22, 2024
082e105
Rest Hook Channel for Subscriptions (#4008)
aponakampalli Aug 28, 2024
bb71c57
Merge branch 'feature/subscription-engine' of https://github.com/micr…
aponakampalli Aug 28, 2024
bd063b8
remove duplicate tests
aponakampalli Aug 28, 2024
42438f2
remove duplicates in share core project items
aponakampalli Aug 29, 2024
4e4f3d7
add feature flag to subscription module
aponakampalli Aug 29, 2024
08ff8b2
set optional http context on publish notification and heartbeat
aponakampalli Aug 30, 2024
43a2b19
Merge remote-tracking branch 'origin/main' into feature/subscription-…
brendankowitz Sep 16, 2024
dc0d6c9
Small cleanup
brendankowitz Sep 19, 2024
3798370
Merge remote-tracking branch 'origin/main' into feature/subscription-…
brendankowitz Sep 24, 2024
af3adef
Merge remote-tracking branch 'origin/main' into feature/subscription-…
brendankowitz Oct 9, 2024
e048ce0
Fixes from merge
brendankowitz Oct 9, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
</PropertyGroup>
<ItemGroup Label="CVE Mitigation">
<!--Please include the CGA id if possible-->
<PackageVersion Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
<PackageVersion Include="System.Security.Cryptography.Xml" Version="8.0.1" />
<!--CVE-2023-29331-->
<PackageVersion Include="System.Security.Cryptography.Pkcs" Version="8.0.0" />
Expand All @@ -31,6 +33,7 @@
</Choose>
<ItemGroup>
<PackageVersion Include="AngleSharp" Version="1.1.2" />
<PackageVersion Include="Azure.Messaging.EventGrid" Version="4.24.0" />
<PackageVersion Include="Azure.Identity" Version="1.12.0" />
<PackageVersion Include="Azure.ResourceManager.CosmosDB" Version="1.3.2" />
<PackageVersion Include="Azure.Extensions.AspNetCore.Configuration.Secrets" Version="1.3.1" />
Expand Down Expand Up @@ -125,4 +128,4 @@
<PackageVersion Include="System.Drawing.Common" Version="8.0.8" />
<PackageVersion Include="Moq" Version="4.20.69" />
</ItemGroup>
</Project>
</Project>
22 changes: 18 additions & 4 deletions Microsoft.Health.Fhir.sln
Original file line number Diff line number Diff line change
Expand Up @@ -199,11 +199,15 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PerfTester", "tools\PerfTes
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SqlScriptRunner", "tools\SqlScriptRunner\SqlScriptRunner.csproj", "{76C29222-8D35-43A2-89C5-43114D113C10}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Health.Fhir.CosmosDb.Initialization", "src\Microsoft.Health.Fhir.CosmosDb.Initialization\Microsoft.Health.Fhir.CosmosDb.Initialization.csproj", "{10661BC9-01B0-4E35-9751-3B5CE97E25C0}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Fhir.CosmosDb.Initialization", "src\Microsoft.Health.Fhir.CosmosDb.Initialization\Microsoft.Health.Fhir.CosmosDb.Initialization.csproj", "{10661BC9-01B0-4E35-9751-3B5CE97E25C0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Health.Fhir.CosmosDb.Initialization.UnitTests", "src\Microsoft.Health.Fhir.CosmosDb.Initialization.UnitTests\Microsoft.Health.Fhir.CosmosDb.Initialization.UnitTests.csproj", "{B9AAA11D-8C8C-44C3-AADE-801376EF82F0}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Fhir.CosmosDb.Initialization.UnitTests", "src\Microsoft.Health.Fhir.CosmosDb.Initialization.UnitTests\Microsoft.Health.Fhir.CosmosDb.Initialization.UnitTests.csproj", "{B9AAA11D-8C8C-44C3-AADE-801376EF82F0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Health.Fhir.CosmosDb.Core", "src\Microsoft.Health.Fhir.CosmosDb.Core\Microsoft.Health.Fhir.CosmosDb.Core.csproj", "{1CD46DC5-6022-4BBE-9A1C-6B13C3CEFC75}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Fhir.CosmosDb.Core", "src\Microsoft.Health.Fhir.CosmosDb.Core\Microsoft.Health.Fhir.CosmosDb.Core.csproj", "{1CD46DC5-6022-4BBE-9A1C-6B13C3CEFC75}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Fhir.Subscriptions", "src\Microsoft.Health.Fhir.Subscriptions\Microsoft.Health.Fhir.Subscriptions.csproj", "{BD8F3137-89F5-4EE5-B269-24D73081E00A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Health.Fhir.Subscriptions.Tests", "src\Microsoft.Health.Fhir.Subscriptions.Tests\Microsoft.Health.Fhir.Subscriptions.Tests.csproj", "{AA73AB9D-52EF-4172-9911-3C9D661C8D48}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand Down Expand Up @@ -483,6 +487,14 @@ Global
{1CD46DC5-6022-4BBE-9A1C-6B13C3CEFC75}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1CD46DC5-6022-4BBE-9A1C-6B13C3CEFC75}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1CD46DC5-6022-4BBE-9A1C-6B13C3CEFC75}.Release|Any CPU.Build.0 = Release|Any CPU
{BD8F3137-89F5-4EE5-B269-24D73081E00A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BD8F3137-89F5-4EE5-B269-24D73081E00A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BD8F3137-89F5-4EE5-B269-24D73081E00A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BD8F3137-89F5-4EE5-B269-24D73081E00A}.Release|Any CPU.Build.0 = Release|Any CPU
{AA73AB9D-52EF-4172-9911-3C9D661C8D48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AA73AB9D-52EF-4172-9911-3C9D661C8D48}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AA73AB9D-52EF-4172-9911-3C9D661C8D48}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AA73AB9D-52EF-4172-9911-3C9D661C8D48}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down Expand Up @@ -578,10 +590,12 @@ Global
{10661BC9-01B0-4E35-9751-3B5CE97E25C0} = {DC5A2CB1-8995-4D39-97FE-3CE80E892C69}
{B9AAA11D-8C8C-44C3-AADE-801376EF82F0} = {DC5A2CB1-8995-4D39-97FE-3CE80E892C69}
{1CD46DC5-6022-4BBE-9A1C-6B13C3CEFC75} = {DC5A2CB1-8995-4D39-97FE-3CE80E892C69}
{BD8F3137-89F5-4EE5-B269-24D73081E00A} = {7457B218-2651-49B5-BED8-22233889516A}
{AA73AB9D-52EF-4172-9911-3C9D661C8D48} = {7457B218-2651-49B5-BED8-22233889516A}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
RESX_SortFileContentOnSave = True
SolutionGuid = {E370FB31-CF95-47D1-B1E1-863A77973FF8}
RESX_SortFileContentOnSave = True
EndGlobalSection
GlobalSection(SharedMSBuildProjectFiles) = preSolution
test\Microsoft.Health.Fhir.Shared.Tests.E2E.Common\Microsoft.Health.Fhir.Shared.Tests.E2E.Common.projitems*{0478b687-7105-40f6-a2dc-81057890e944}*SharedItemsImports = 13
Expand Down
6 changes: 3 additions & 3 deletions R4.slnf
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@
"src\\Microsoft.Health.Fhir.Shared.Web\\Microsoft.Health.Fhir.Shared.Web.shproj",
"src\\Microsoft.Health.Fhir.SqlServer.UnitTests\\Microsoft.Health.Fhir.SqlServer.UnitTests.csproj",
"src\\Microsoft.Health.Fhir.SqlServer\\Microsoft.Health.Fhir.SqlServer.csproj",
"src\\Microsoft.Health.Fhir.Subscriptions.Tests\\Microsoft.Health.Fhir.Subscriptions.Tests.csproj",
"src\\Microsoft.Health.Fhir.Subscriptions\\Microsoft.Health.Fhir.Subscriptions.csproj",
"src\\Microsoft.Health.Fhir.Tests.Common\\Microsoft.Health.Fhir.Tests.Common.csproj",
"src\\Microsoft.Health.TaskManagement\\Microsoft.Health.TaskManagement.csproj",
"src\\Microsoft.Health.TaskManagement.UnitTests\\Microsoft.Health.TaskManagement.UnitTests.csproj",
"src\\Microsoft.Health.Fhir.ValueSets\\Microsoft.Health.Fhir.ValueSets.csproj",
"src\\Microsoft.Health.TaskManagement.UnitTests\\Microsoft.Health.TaskManagement.UnitTests.csproj",
"src\\Microsoft.Health.TaskManagement\\Microsoft.Health.TaskManagement.csproj",
"test\\Microsoft.Health.Fhir.R4.Tests.E2E\\Microsoft.Health.Fhir.R4.Tests.E2E.csproj",
"test\\Microsoft.Health.Fhir.R4.Tests.Integration\\Microsoft.Health.Fhir.R4.Tests.Integration.csproj",
"test\\Microsoft.Health.Fhir.Shared.Tests.Crucible\\Microsoft.Health.Fhir.Shared.Tests.Crucible.shproj",
Expand All @@ -43,4 +43,4 @@
"test\\Microsoft.Health.Fhir.Shared.Tests.Integration\\Microsoft.Health.Fhir.Shared.Tests.Integration.shproj"
]
}
}
}
3 changes: 3 additions & 0 deletions build/docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ COPY ./src/Microsoft.Health.Fhir.CosmosDb.Core/Microsoft.Health.Fhir.CosmosDb.Co
COPY ./src/Microsoft.Health.Fhir.CosmosDb.Initialization/Microsoft.Health.Fhir.CosmosDb.Initialization.csproj \
./src/Microsoft.Health.Fhir.CosmosDb.Initialization/Microsoft.Health.Fhir.CosmosDb.Initialization.csproj

COPY ./src/Microsoft.Health.Fhir.Subscriptions/Microsoft.Health.Fhir.Subscriptions.csproj \
./src/Microsoft.Health.Fhir.Subscriptions/Microsoft.Health.Fhir.Subscriptions.csproj

COPY ./src/Microsoft.Health.Fhir.${FHIR_VERSION}.Core/Microsoft.Health.Fhir.${FHIR_VERSION}.Core.csproj \
./src/Microsoft.Health.Fhir.${FHIR_VERSION}.Core/Microsoft.Health.Fhir.${FHIR_VERSION}.Core.csproj

Expand Down
250 changes: 250 additions & 0 deletions docs/rest/Subscriptions.http
Original file line number Diff line number Diff line change
@@ -0,0 +1,250 @@
# # .SUMMARY Sample requests to verify FHIR Conditional Delete
# The assumption for the requests and resources below:
# The FHIR version is R4

@hostname = localhost:44348

### Get the bearer token, if authentication is enabled
# @name bearer
POST https://{{hostname}}/connect/token
content-type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_id=globalAdminServicePrincipal
&client_secret=globalAdminServicePrincipal
&scope=fhir-api

### PUT Subscription for Blob Storage
## More examples: https://build.fhir.org/ig/HL7/fhir-subscription-backport-ig/artifacts.html
PUT https://{{hostname}}/Subscription/example-backport-storage-patient
content-type: application/json
Authorization: Bearer {{bearer.response.body.access_token}}

{
"resourceType": "Subscription",
"id": "example-backport-storage-patient",
"meta" : {
"profile": ["http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-subscription"]
},
"status": "requested",
"end": "2031-01-01T12:00:00",
"reason": "Test subscription based on transactions, filtered by Patient",
"criteria" : "http://azurehealthcareapis.com/data-extentions/SubscriptionTopics/transactions",
"_criteria": {
"extension": [
{
"url": "http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-filter-criteria",
"valueString": "Patient"
}
]
},
"channel": {
"extension": [
{
"url": "http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-heartbeat-period",
"valueInteger": 120
}
],
"type" : "rest-hook",
"_type" : {
"extension" : [
{
"url" : "http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-channel-type",
"valueCoding" : {
"system" : "http://azurehealthcareapis.com/data-extentions/subscription-channel-type",
"code" : "azure-storage",
"display" : "Azure Blob Storage"
}
}
]
},
"endpoint": "sync-patient",
"payload": "application/fhir+json",
"_payload": {
"extension": [
{
"url": "http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-payload-content",
"valueCode": "full-resource"
}
]
}
}
}

### PUT Subscription for REST Hook
PUT https://{{hostname}}/Subscription/example-rest-hook-patient
content-type: application/json
Authorization: Bearer {{bearer.response.body.access_token}}

{
"resourceType": "Subscription",
"id": "example-rest-hook-patient",
"meta" : {
"profile": ["http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-subscription"]
},
"status": "requested",
"end": "2031-01-01T12:00:00",
"reason": "Test subscription based on transactions, filtered by Patient",
"criteria" : "http://azurehealthcareapis.com/data-extentions/SubscriptionTopics/transactions",
"_criteria": {
"extension": [
{
"url": "http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-filter-criteria",
"valueString": "Patient"
}
]
},
"channel": {
"extension": [
{
"url": "http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-heartbeat-period",
"valueInteger": 120
}
],
"type" : "rest-hook",
"endpoint": "https://subscriptions.argo.run/fhir/r4/$subscription-hook",
"_type" : {
"extension" : [
{
"url" : "http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-channel-type",
"valueCoding" : {
"system" : "http://azurehealthcareapis.com/data-extentions/subscription-channel-type",
"code" : "rest-hook",
"display" : "Rest Hook"
}
}
]
},
"payload": "application/fhir+json",
"_payload": {
"extension": [
{
"url": "http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-payload-content",
"valueCode": "full-resource"
}
]
}
}
}

### PUT Subscription for Blob Storage
## More examples: https://build.fhir.org/ig/HL7/fhir-subscription-backport-ig/artifacts.html
PUT https://{{hostname}}/Subscription/example-backport-storage-all
content-type: application/json
Authorization: Bearer {{bearer.response.body.access_token}}

{
"resourceType": "Subscription",
"id": "example-backport-storage-all",
"meta" : {
"profile": ["http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-subscription"]
},
"status": "requested",
"end": "2031-01-01T12:00:00",
"reason": "Test subscription based on transactions",
"criteria" : "http://azurehealthcareapis.com/data-extentions/SubscriptionTopics/transactions",
"channel": {
"extension": [
{
"url": "http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-heartbeat-period",
"valueInteger": 120
},
{
"url": "http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-max-count",
"valuePositiveInt": 20
}
],
"type" : "rest-hook",
"_type" : {
"extension" : [
{
"url" : "http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-channel-type",
"valueCoding" : {
"system" : "http://azurehealthcareapis.com/data-extentions/subscription-channel-type",
"code" : "azure-storage",
"display" : "Azure Blob Storage"
}
}
]
},
"endpoint": "sync-all",
"payload": "application/fhir+json",
"_payload": {
"extension": [
{
"url": "http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-payload-content",
"valueCode": "full-resource"
}
]
}
}
}

### PUT Subscription for Fabric
## More examples: https://build.fhir.org/ig/HL7/fhir-subscription-backport-ig/artifacts.html
PUT https://{{hostname}}/Subscription/example-backport-lake
content-type: application/json
Authorization: Bearer {{bearer.response.body.access_token}}

{
"resourceType": "Subscription",
"id": "example-backport-lake",
"meta" : {
"profile": ["http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-subscription"]
},
"status": "requested",
"end": "2031-01-01T12:00:00",
"reason": "Test subscription based on transactions",
"criteria" : "http://azurehealthcareapis.com/data-extentions/SubscriptionTopics/transactions",
"channel": {
"extension": [
{
"url": "http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-heartbeat-period",
"valueInteger": 120
}
],
"type" : "rest-hook",
"_type" : {
"extension" : [
{
"url" : "http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-channel-type",
"valueCoding" : {
"system" : "http://azurehealthcareapis.com/data-extentions/subscription-channel-type",
"code" : "azure-lake-storage",
"display" : "Azure Data Lake Contract Storage"
}
}
]
},
"endpoint": "sync-lake",
"payload": "application/fhir+ndjson",
"_payload": {
"extension": [
{
"url": "http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-payload-content",
"valueCode": "full-resource"
}
]
}
}
}

###
DELETE https://{{hostname}}/Subscription/example-backport-storage-all
content-type: application/json
Authorization: Bearer {{bearer.response.body.access_token}}

###
DELETE https://{{hostname}}/Subscription/example-backport-storage-patient
content-type: application/json
Authorization: Bearer {{bearer.response.body.access_token}}

###
DELETE https://{{hostname}}/Subscription/example-backport-lake
content-type: application/json
Authorization: Bearer {{bearer.response.body.access_token}}

###
DELETE https://{{hostname}}/Subscription/example-rest-hook-patient
content-type: application/json
Authorization: Bearer {{bearer.response.body.access_token}}
Original file line number Diff line number Diff line change
Expand Up @@ -138,11 +138,11 @@ private Uri ResolveResourceUrl(string resourceId, string resourceTypeName, strin
}

return GetRouteUri(
ActionContext.HttpContext,
ActionContext?.HttpContext,
routeName,
routeValues,
Request.Scheme,
Request.Host.Value);
Request?.Scheme,
Request?.Host.Value);
}

public Uri ResolveRouteUrl(IReadOnlyCollection<Tuple<string, string>> unsupportedSearchParams = null, IReadOnlyList<(SearchParameterInfo searchParameterInfo, SortOrder sortOrder)> resultSortOrder = null, string continuationToken = null, bool removeTotalParameter = false)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Microsoft.Health.Fhir.Core\Microsoft.Health.Fhir.Core.csproj" />
<ProjectReference Include="..\Microsoft.Health.Fhir.Subscriptions\Microsoft.Health.Fhir.Subscriptions.csproj" />
<ProjectReference Include="..\Microsoft.Health.Fhir.ValueSets\Microsoft.Health.Fhir.ValueSets.csproj" />
</ItemGroup>
<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
using Microsoft.Health.Api.Modules;
using Microsoft.Health.Extensions.DependencyInjection;
using Microsoft.Health.Fhir.Api.Configs;
using Microsoft.Health.Fhir.Subscriptions.Registration;

namespace Microsoft.Extensions.DependencyInjection
{
Expand All @@ -20,6 +21,7 @@ public static IServiceCollection AddFhirServerBase(this IServiceCollection servi

services.RegisterAssemblyModules(Assembly.GetExecutingAssembly(), fhirServerConfiguration);
services.RegisterAssemblyModules(typeof(InitializationModule).Assembly, fhirServerConfiguration);
services.RegisterAssemblyModules(typeof(SubscriptionsModule).Assembly, fhirServerConfiguration.CoreFeatures);

return services;
}
Expand Down
Loading
Loading