diff --git a/.deployments/k8-argo-run-ris.yaml b/.deployments/k8-argo-run-ris.yaml index 2224e76..b563548 100644 --- a/.deployments/k8-argo-run-ris.yaml +++ b/.deployments/k8-argo-run-ris.yaml @@ -13,8 +13,8 @@ spec: - subscriptions.argo.run - cdex.ri.argo.run - ecr.ri.argo.run - - vitals-server.ri.argo.run - - feature-cs-server.ri.argo.run + # - vitals-server.ri.argo.run + # - feature-cs-server.ri.argo.run secretName: tls-secret rules: - host: subscriptions.argo.run @@ -47,26 +47,26 @@ spec: number: 80 path: / pathType: Prefix - - host: vitals-server.ri.argo.run - http: - paths: - - backend: - service: - name: ri-vitals-server - port: - number: 80 - path: / - pathType: Prefix - - host: feature-cs-server.ri.argo.run - http: - paths: - - backend: - service: - name: ri-feature-cs-server - port: - number: 80 - path: / - pathType: Prefix + # - host: vitals-server.ri.argo.run + # http: + # paths: + # - backend: + # service: + # name: ri-vitals-server + # port: + # number: 80 + # path: / + # pathType: Prefix + # - host: feature-cs-server.ri.argo.run + # http: + # paths: + # - backend: + # service: + # name: ri-feature-cs-server + # port: + # number: 80 + # path: / + # pathType: Prefix --- # subscriptions.argo.run Deployment apiVersion: apps/v1 @@ -92,8 +92,10 @@ spec: resources: limits: memory: "512Mi" + cpu: "1000m" requests: memory: "128Mi" + cpu: "100m" command: ["dotnet"] args: ["fhir-candle.dll", "--reference-implementation", "subscriptions", "--load-package", "hl7.fhir.uv.subscriptions-backport#1.1.0", "--load-examples", "false", "--protect-source", "true", "-m", "200"] envFrom: @@ -177,8 +179,10 @@ spec: resources: limits: memory: "512Mi" + cpu: "1000m" requests: memory: "128Mi" + cpu: "100m" command: ["dotnet"] args: ["fhir-candle.dll", "--reference-implementation", "hl7.fhir.us.davinci-cdex", "--ci-package", "HL7/davinci-pas", "--load-package", "hl7.fhir.us.davinci-cdex#2.0.0", "--r4", "provider", "--r4", "payer", "--protect-source", "true", "-m", "400", "--max-subscription-minutes", "1440"] envFrom: @@ -263,8 +267,10 @@ spec: resources: limits: memory: "512Mi" + cpu: "1000m" requests: memory: "128Mi" + cpu: "100m" command: ["dotnet"] args: ["fhir-candle.dll", "--reference-implementation", "hl7.fhir.us.ecr", "--load-package", "hl7.fhir.us.ecr", "--r4", "r4", "--smart-optional", "r4", "--protect-source", "true", "-m", "1000", "--max-subscription-minutes", "240", "--load-examples", "true"] envFrom: @@ -324,177 +330,6 @@ spec: port: 80 targetPort: 5826 ---- -# vitals-server.ri.argo.run Deployment -apiVersion: apps/v1 -kind: Deployment -metadata: - name: ri-vitals-server - namespace: subscriptions-ri - labels: - app: ri-vitals-server -spec: - replicas: 1 - selector: - matchLabels: - app: ri-vitals-server - template: - metadata: - labels: - app: ri-vitals-server - spec: - containers: - - name: fhir-candle - image: ghcr.io/fhir/fhir-candle:latest - resources: - limits: - memory: "512Mi" - requests: - memory: "128Mi" - command: ["dotnet"] - args: ["fhir-candle.dll", "--reference-implementation", "smart", "--r4", "open", "--r4", "smart", "--smart-required", "smart", "--protect-source", "true", "-m", "500"] - envFrom: - - configMapRef: - name: special-config - env: - - name: Listen_Port - value: "5826" - - name: Public_Url - value: "https://subscriptions.argo.run" - - name: Zulip_Email - valueFrom: - secretKeyRef: - name: argonaut-secrets - key: Zulip_Email - - name: Zulip_Key - valueFrom: - secretKeyRef: - name: argonaut-secrets - key: Zulip_Key - - name: Zulip_Url - value: "https://chat.fhir.org" - - name: SMTP_Host - valueFrom: - secretKeyRef: - name: argonaut-secrets - key: SMTP_Host - - name: SMTP_Password - valueFrom: - secretKeyRef: - name: argonaut-secrets - key: SMTP_Password - - name: SMTP_Port - valueFrom: - secretKeyRef: - name: argonaut-secrets - key: SMTP_Port - - name: SMTP_User - valueFrom: - secretKeyRef: - name: argonaut-secrets - key: SMTP_User - ports: - - containerPort: 5826 ---- -# vitals-server.ri.argo.run Service -apiVersion: v1 -kind: Service -metadata: - namespace: subscriptions-ri - name: ri-vitals-server -spec: - selector: - app: ri-vitals-server - ports: - - protocol: TCP - port: 80 - targetPort: 5826 - ---- -# feature-cs-server.ri.argo.run Deployment -apiVersion: apps/v1 -kind: Deployment -metadata: - name: ri-feature-cs-server - namespace: subscriptions-ri - labels: - app: ri-feature-cs-server -spec: - replicas: 1 - selector: - matchLabels: - app: ri-feature-cs-server - template: - metadata: - labels: - app: ri-feature-cs-server - spec: - containers: - - name: fhir-candle - image: ghcr.io/fhir/fhir-candle:latest - resources: - limits: - memory: "512Mi" - requests: - memory: "128Mi" - command: ["dotnet"] - args: ["fhir-candle.dll", "--reference-implementation", "feature-cs", "--r4", "r4", "--smart-optional", "r4", "--protect-source", "true", "-m", "100"] - envFrom: - - configMapRef: - name: special-config - env: - - name: Listen_Port - value: "5826" - - name: Public_Url - value: "https://subscriptions.argo.run" - - name: Zulip_Email - valueFrom: - secretKeyRef: - name: argonaut-secrets - key: Zulip_Email - - name: Zulip_Key - valueFrom: - secretKeyRef: - name: argonaut-secrets - key: Zulip_Key - - name: Zulip_Url - value: "https://chat.fhir.org" - - name: SMTP_Host - valueFrom: - secretKeyRef: - name: argonaut-secrets - key: SMTP_Host - - name: SMTP_Password - valueFrom: - secretKeyRef: - name: argonaut-secrets - key: SMTP_Password - - name: SMTP_Port - valueFrom: - secretKeyRef: - name: argonaut-secrets - key: SMTP_Port - - name: SMTP_User - valueFrom: - secretKeyRef: - name: argonaut-secrets - key: SMTP_User - ports: - - containerPort: 5826 ---- -# vitals-server.ri.argo.run Service -apiVersion: v1 -kind: Service -metadata: - namespace: subscriptions-ri - name: ri-feature-cs-server -spec: - selector: - app: ri-feature-cs-server - ports: - - protocol: TCP - port: 80 - targetPort: 5826 --- # Create a service account for GH workflow rollouts diff --git a/README.md b/README.md index eed6883..d5d571d 100644 --- a/README.md +++ b/README.md @@ -159,8 +159,6 @@ docker run --rm --name jaeger -p 4317:4317 -p 4318:4318 -p 5778:5778 -p 16686:16 Note: items are unsorted within their priorities ## High priority -* Composite search parameter support -* Reverse chaining (`_has`) * Feature/module definitions for selective loading Build interfaces for Hosted Services, etc. Add module tag to Operation, etc. @@ -170,15 +168,12 @@ Note: items are unsorted within their priorities * Save/restore points * Versioned Resource support * Resource display / edit in UI -* Subscription RI scenario/walkthrough * Resource editor design improvements * Add loading packages/profiles to CapabilityStatement ## Mid Priority * SMART support * Transaction support -* Proxy header support -* Conditional interaction support (e.g., `conditional-update`, `if-match`) * OpenAPI generation * Compartments * Contained resources diff --git a/changelog.md b/changelog.md new file mode 100644 index 0000000..d40db7a --- /dev/null +++ b/changelog.md @@ -0,0 +1,12 @@ +* Work in Progress + * Added commit log + * Updated `Microsoft.IdentityModel.Tokens` to `8.0.2` + * Added CSS fonts for monospace content. + +* v2024.910 - [PR 14](https://github.com/FHIR/fhir-candle/commit/70a8b38a40649160b3711e9a5a7ad4307e8e9d9a) + * [f220fcc](https://github.com/FHIR/fhir-candle/commit/f220fccc24647311d43fb7807d910cc1613f7f27) Fix: Inverted string search test in some combinations. +* v2024.909 - [PR 13](https://github.com/FHIR/fhir-candle/commit/31fbbecd122f38003d44d2ff2f284ed864a3ed96) + * [77beafc](https://github.com/FHIR/fhir-candle/commit/77beafc36fbb1b5b80f76a27312032efe26aa729) Fix: Only allow source content loads from a single directory if there are no subdirectories for tenant/endpoint names. + +* Previous content + * See [commit log](https://github.com/FHIR/fhir-candle/commits/main/) diff --git a/fhir-candle.props b/fhir-candle.props index 7fc9500..aa9f582 100644 --- a/fhir-candle.props +++ b/fhir-candle.props @@ -14,7 +14,7 @@ FHIR Foundation Project Copyright 2022-2024 git - https://github.com/GinoCanessa/fhir-candle + https://github.com/FHIR/fhir-candle en diff --git a/fhir-candle.sln b/fhir-candle.sln index 184dff8..eeb73fb 100644 --- a/fhir-candle.sln +++ b/fhir-candle.sln @@ -21,6 +21,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig .gitignore = .gitignore + changelog.md = changelog.md CONTRIBUTING.MD = CONTRIBUTING.MD Dockerfile = Dockerfile fhir-candle.props = fhir-candle.props @@ -46,8 +47,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{1AAC EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{22C11CB9-2408-4056-B41E-87DD07AECF94}" ProjectSection(SolutionItems) = preProject - .github\workflows\build-and-test.yml = .github\workflows\build-and-test.yml .github\workflows\argo-ris.yml = .github\workflows\argo-ris.yml + .github\workflows\build-and-test.yml = .github\workflows\build-and-test.yml .github\workflows\ghcr-docker.yml = .github\workflows\ghcr-docker.yml .github\workflows\nuget-tool.yml = .github\workflows\nuget-tool.yml EndProjectSection diff --git a/src/FhirStore.Common/FhirCandle.Common.csproj b/src/FhirStore.Common/FhirCandle.Common.csproj index 5874fed..01b237a 100644 --- a/src/FhirStore.Common/FhirCandle.Common.csproj +++ b/src/FhirStore.Common/FhirCandle.Common.csproj @@ -24,7 +24,7 @@ - + diff --git a/src/FhirStore.CommonVersioned/Models/ParsedSearchParameter.cs b/src/FhirStore.CommonVersioned/Models/ParsedSearchParameter.cs index 8dcc899..0b44cea 100644 --- a/src/FhirStore.CommonVersioned/Models/ParsedSearchParameter.cs +++ b/src/FhirStore.CommonVersioned/Models/ParsedSearchParameter.cs @@ -1040,16 +1040,16 @@ private record SearchKeyParseResult( null, null); - int contintuationStart = colonIndex + 1 + revResourceName.Length + revLinkParamName.Length + 2; + int continuationStart = colonIndex + 1 + revResourceName.Length + revLinkParamName.Length + 2; - if (contintuationStart >= key.Length) + if (continuationStart >= key.Length) { Console.WriteLine($"Unable to parse _has parameter: {key}"); return null; } SearchKeyParseResult? reverseLinkFilter = TryParseKey( - key.Substring(contintuationStart), + key.Substring(continuationStart), store, (IVersionedResourceStore)store[revResourceName], revResourceName); @@ -1432,4 +1432,4 @@ public static bool TryParseDateString(string dateString, out DateTimeOffset star return true; } -} \ No newline at end of file +} diff --git a/src/FhirStore.CommonVersioned/Operations/OpIsFhir.cs b/src/FhirStore.CommonVersioned/Operations/OpIsFhir.cs index 6a6bc8d..6808141 100644 --- a/src/FhirStore.CommonVersioned/Operations/OpIsFhir.cs +++ b/src/FhirStore.CommonVersioned/Operations/OpIsFhir.cs @@ -63,7 +63,7 @@ public class OpTestIfFhir : IFhirOperation /// Gets the supported resources. public HashSet SupportedResources => new(); - /// Executes the Subscription/$events operation. + /// Executes the $test-if-fhir operation. /// The context. /// The store. /// The resource store. diff --git a/src/fhir-candle/Services/FhirPackageService.cs b/src/fhir-candle/Services/FhirPackageService.cs index 63bbc0b..ff37157 100644 --- a/src/fhir-candle/Services/FhirPackageService.cs +++ b/src/fhir-candle/Services/FhirPackageService.cs @@ -419,27 +419,18 @@ public async Task> InstallPackages( private async ValueTask<(PackageReference, IPackageServer?)> ResolveLatest(string name) { - ConcurrentBag<(PackageReference pr, IPackageServer server)> latestRecs = new(); + List<(PackageReference pr, IPackageServer server)> latestRecs = new(); - IEnumerable tasks = _packageClients.Select(async server => + foreach (IPackageServer server in _packageClients) { PackageReference pr = await server.GetLatest(name); if (pr == PackageReference.None) { - return; + continue; } - latestRecs.Add((pr, server)); - }); - - Task t = System.Threading.Tasks.Task.WhenAll(tasks); - - try - { - await t.WaitAsync(TimeSpan.FromSeconds(30)); } - catch { } - + if (latestRecs.Count == 0) { return (PackageReference.None, null); diff --git a/src/fhir-candle/_ForPackages/FhirCiClient.cs b/src/fhir-candle/_ForPackages/FhirCiClient.cs index 8f83868..c240241 100644 --- a/src/fhir-candle/_ForPackages/FhirCiClient.cs +++ b/src/fhir-candle/_ForPackages/FhirCiClient.cs @@ -829,7 +829,7 @@ private async ValueTask downloadPackage(PackageReference reference, Fhir { if (url.StartsWith("HL7/fhir/", StringComparison.OrdinalIgnoreCase)) { - url = "https://build.fhir.org/" + url; + url = "https://build.fhir.org/" + url.Substring(9); } else { diff --git a/src/fhir-candle/wwwroot/css/app.css b/src/fhir-candle/wwwroot/css/app.css index 28ecbab..df47b51 100644 --- a/src/fhir-candle/wwwroot/css/app.css +++ b/src/fhir-candle/wwwroot/css/app.css @@ -41,6 +41,7 @@ body { --type-ramp-plus-6-font-size: 2.2rem; --type-ramp-plus-6-line-height: 2.6rem; --body-font: "Segoe UI Variable", "Segoe UI", sans-serif; + --font-monospace: "Cascadia Code", Consolas, "Courier New", "Liberation Mono", SFMono-Regular, Menlo, Monaco, monospace; font-family: var(--body-font); font-size: var(--type-ramp-base-font-size); line-height: var(--type-ramp-base-line-height); @@ -311,4 +312,4 @@ fluent-number-field { .copy-click.is-copied:after { content: 'Copied!'; -} \ No newline at end of file +}