> AdditionalPagesByTenant { get; }
24 |
25 | /// Loads ri contents.
26 | /// The dir.
27 | void LoadRiContents(string dir);
28 |
29 | /// Loads requested packages.
30 | /// The supplemental root.
31 | /// True to load examples.
32 | /// An asynchronous result.
33 | Task LoadRequestedPackages(string supplementalRoot, bool loadExamples);
34 |
35 | /// State has changed.
36 | void StateHasChanged();
37 | }
38 |
--------------------------------------------------------------------------------
/src/fhir-candle.Tests/data/r4/Observation-656.json:
--------------------------------------------------------------------------------
1 | {
2 | "resourceType": "Observation",
3 | "id": "656",
4 | "text": {
5 | "status": "generated",
6 | "div": "Generated Narrative with Details
id: 656
identifier: patientId-urn:oid:1.2.4~0000000000000000~152584~20170503155426~820
status: final
code: MDC_FLOW_AWAY_EXP_FORCED_PEAK (Details : {urn:iso:std:iso:11073:10101 code '152584' = '152584', given as 'MDC_FLOW_AWAY_EXP_FORCED_PEAK'})
subject: Patient/PatientId-patientId
effective: 03/05/2017 3:54:26 PM
performer: Patient/PatientId-patientId
value: 820 cL/s (Details: urn:iso:std:iso:11073:10101 code 265201 = '265201')
"
7 | },
8 | "identifier": [
9 | {
10 | "value": "patientId-urn:oid:1.2.4~0000000000000000~152584~20170503155426~820"
11 | }
12 | ],
13 | "status": "final",
14 | "code": {
15 | "coding": [
16 | {
17 | "system": "urn:iso:std:iso:11073:10101",
18 | "code": "152584",
19 | "display": "MDC_FLOW_AWAY_EXP_FORCED_PEAK"
20 | }
21 | ]
22 | },
23 | "subject": {
24 | "reference": "Patient/PatientId-patientId"
25 | },
26 | "effectiveDateTime": "2017-05-03T15:54:26-04:00",
27 | "performer": [
28 | {
29 | "reference": "Patient/PatientId-patientId"
30 | }
31 | ],
32 | "valueQuantity": {
33 | "value": 820,
34 | "unit": "cL/s",
35 | "system": "urn:iso:std:iso:11073:10101",
36 | "code": "265201"
37 | }
38 | }
--------------------------------------------------------------------------------
/src/fhir-candle.Tests/data/r4b/Observation-656.json:
--------------------------------------------------------------------------------
1 | {
2 | "resourceType": "Observation",
3 | "id": "656",
4 | "text": {
5 | "status": "generated",
6 | "div": "Generated Narrative with Details
id: 656
identifier: patientId-urn:oid:1.2.4~0000000000000000~152584~20170503155426~820
status: final
code: MDC_FLOW_AWAY_EXP_FORCED_PEAK (Details : {urn:iso:std:iso:11073:10101 code '152584' = '152584', given as 'MDC_FLOW_AWAY_EXP_FORCED_PEAK'})
subject: Patient/PatientId-patientId
effective: 03/05/2017 3:54:26 PM
performer: Patient/PatientId-patientId
value: 820 cL/s (Details: urn:iso:std:iso:11073:10101 code 265201 = '265201')
"
7 | },
8 | "identifier": [
9 | {
10 | "value": "patientId-urn:oid:1.2.4~0000000000000000~152584~20170503155426~820"
11 | }
12 | ],
13 | "status": "final",
14 | "code": {
15 | "coding": [
16 | {
17 | "system": "urn:iso:std:iso:11073:10101",
18 | "code": "152584",
19 | "display": "MDC_FLOW_AWAY_EXP_FORCED_PEAK"
20 | }
21 | ]
22 | },
23 | "subject": {
24 | "reference": "Patient/PatientId-patientId"
25 | },
26 | "effectiveDateTime": "2017-05-03T15:54:26-04:00",
27 | "performer": [
28 | {
29 | "reference": "Patient/PatientId-patientId"
30 | }
31 | ],
32 | "valueQuantity": {
33 | "value": 820,
34 | "unit": "cL/s",
35 | "system": "urn:iso:std:iso:11073:10101",
36 | "code": "265201"
37 | }
38 | }
--------------------------------------------------------------------------------
/src/fhir-candle.Tests/data/r5/Observation-656.json:
--------------------------------------------------------------------------------
1 | {
2 | "resourceType": "Observation",
3 | "id": "656",
4 | "text": {
5 | "status": "generated",
6 | "div": "Generated Narrative with Details
id: 656
identifier: patientId-urn:oid:1.2.4~0000000000000000~152584~20170503155426~820
status: final
code: MDC_FLOW_AWAY_EXP_FORCED_PEAK (Details : {urn:iso:std:iso:11073:10101 code '152584' = '152584', given as 'MDC_FLOW_AWAY_EXP_FORCED_PEAK'})
subject: Patient/PatientId-patientId
effective: 03/05/2017 3:54:26 PM
performer: Patient/PatientId-patientId
value: 820 cL/s (Details: urn:iso:std:iso:11073:10101 code 265201 = '265201')
"
7 | },
8 | "identifier": [
9 | {
10 | "value": "patientId-urn:oid:1.2.4~0000000000000000~152584~20170503155426~820"
11 | }
12 | ],
13 | "status": "final",
14 | "code": {
15 | "coding": [
16 | {
17 | "system": "urn:iso:std:iso:11073:10101",
18 | "code": "152584",
19 | "display": "MDC_FLOW_AWAY_EXP_FORCED_PEAK"
20 | }
21 | ]
22 | },
23 | "subject": {
24 | "reference": "Patient/PatientId-patientId"
25 | },
26 | "effectiveDateTime": "2017-05-03T15:54:26-04:00",
27 | "performer": [
28 | {
29 | "reference": "Patient/PatientId-patientId"
30 | }
31 | ],
32 | "valueQuantity": {
33 | "value": 820,
34 | "unit": "cL/s",
35 | "system": "urn:iso:std:iso:11073:10101",
36 | "code": "265201"
37 | }
38 | }
--------------------------------------------------------------------------------
/fhirData/hl7.fhir.us.davinci-cdex/provider/Encounter-amy-shaw-surgical.json:
--------------------------------------------------------------------------------
1 | {
2 | "resourceType": "Encounter",
3 | "id": "amy-shaw-surgical",
4 | "meta": {
5 | "profile": [
6 | "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-encounter"
7 | ]
8 | },
9 | "extension": [
10 | {
11 | "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-patientStatus",
12 | "valueCodeableConcept": {
13 | "coding": [
14 | {
15 | "system": "https://www.nubc.org/CodeSystem/PatDischargeStatus",
16 | "code": "30",
17 | "display": "Still a patient"
18 | }
19 | ]
20 | }
21 | }
22 | ],
23 | "status": "planned",
24 | "class": {
25 | "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
26 | "code": "AMB"
27 | },
28 | "type": [
29 | {
30 | "coding": [
31 | {
32 | "system": "https://www.nubc.org/CodeSystem/PriorityTypeOfAdmitOrVisit",
33 | "code": "2"
34 | }
35 | ]
36 | }
37 | ],
38 | "subject": {
39 | "reference": "Patient/davinci-amy-shaw"
40 | },
41 | "period": {
42 | "start": "2020-07-02",
43 | "end": "2020-07-09"
44 | },
45 | "hospitalization": {
46 | "admitSource": {
47 | "coding": [
48 | {
49 | "system": "https://www.nubc.org/CodeSystem/PointOfOrigin",
50 | "code": "5"
51 | }
52 | ]
53 | }
54 | }
55 | }
--------------------------------------------------------------------------------
/fhirData/hl7.fhir.us.davinci-cdex/provider/Encounter-joe-smith-surgical.json:
--------------------------------------------------------------------------------
1 | {
2 | "resourceType": "Encounter",
3 | "id": "joe-smith-surgical",
4 | "meta": {
5 | "profile": [
6 | "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-encounter"
7 | ]
8 | },
9 | "extension": [
10 | {
11 | "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-patientStatus",
12 | "valueCodeableConcept": {
13 | "coding": [
14 | {
15 | "system": "https://www.nubc.org/CodeSystem/PatDischargeStatus",
16 | "code": "30",
17 | "display": "Still a patient"
18 | }
19 | ]
20 | }
21 | }
22 | ],
23 | "status": "planned",
24 | "class": {
25 | "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
26 | "code": "AMB"
27 | },
28 | "type": [
29 | {
30 | "coding": [
31 | {
32 | "system": "https://www.nubc.org/CodeSystem/PriorityTypeOfAdmitOrVisit",
33 | "code": "2"
34 | }
35 | ]
36 | }
37 | ],
38 | "subject": {
39 | "reference": "Patient/davinci-joe-smith"
40 | },
41 | "period": {
42 | "start": "2020-07-02",
43 | "end": "2020-07-09"
44 | },
45 | "hospitalization": {
46 | "admitSource": {
47 | "coding": [
48 | {
49 | "system": "https://www.nubc.org/CodeSystem/PointOfOrigin",
50 | "code": "5"
51 | }
52 | ]
53 | }
54 | }
55 | }
--------------------------------------------------------------------------------
/fhirData/hl7.fhir.us.davinci-cdex/provider/Encounter-jesse-smith-surgical.json:
--------------------------------------------------------------------------------
1 | {
2 | "resourceType": "Encounter",
3 | "id": "jesse-smith-surgical",
4 | "meta": {
5 | "profile": [
6 | "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-encounter"
7 | ]
8 | },
9 | "extension": [
10 | {
11 | "url": "http://hl7.org/fhir/us/davinci-pas/StructureDefinition/extension-patientStatus",
12 | "valueCodeableConcept": {
13 | "coding": [
14 | {
15 | "system": "https://www.nubc.org/CodeSystem/PatDischargeStatus",
16 | "code": "30",
17 | "display": "Still a patient"
18 | }
19 | ]
20 | }
21 | }
22 | ],
23 | "status": "planned",
24 | "class": {
25 | "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
26 | "code": "AMB"
27 | },
28 | "type": [
29 | {
30 | "coding": [
31 | {
32 | "system": "https://www.nubc.org/CodeSystem/PriorityTypeOfAdmitOrVisit",
33 | "code": "2"
34 | }
35 | ]
36 | }
37 | ],
38 | "subject": {
39 | "reference": "Patient/davinci-jesse-smith"
40 | },
41 | "period": {
42 | "start": "2020-07-02",
43 | "end": "2020-07-09"
44 | },
45 | "hospitalization": {
46 | "admitSource": {
47 | "coding": [
48 | {
49 | "system": "https://www.nubc.org/CodeSystem/PointOfOrigin",
50 | "code": "5"
51 | }
52 | ]
53 | }
54 | }
55 | }
--------------------------------------------------------------------------------
/src/fhir-candle/Ucum/UcumUtils.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
4 | //
5 |
6 | using Antlr4.Runtime;
7 |
8 | namespace fhir.candle.Ucum;
9 |
10 | /// An ucum utilities.
11 | public static class UcumUtils
12 | {
13 | /// Query if 'val' is valid ucum.
14 | /// The value.
15 | /// True if valid ucum, false if not.
16 | public static bool isValidUcum(string val)
17 | {
18 | try
19 | {
20 | ICharStream stream = CharStreams.fromString(val);
21 | UCUMLexer lexer = new UCUMLexer(stream);
22 | //lexer.RemoveErrorListeners();
23 | //lexer.AddErrorListener(SYNTAX_ERROR_LISTENER);
24 |
25 | CommonTokenStream tokens = new CommonTokenStream(lexer);
26 |
27 | UCUMParser parser = new UCUMParser(tokens);
28 | //parser.RemoveErrorListeners();
29 | //parser.AddErrorListener(SYNTAX_ERROR_LISTENER);
30 |
31 | UCUMParser.MainTermContext expression = parser.mainTerm();
32 | return expression != null;
33 | }
34 | catch (Exception ex)
35 | {
36 | Console.WriteLine($"isValidUcum <<< caught {ex.Message}");
37 | if (ex.InnerException != null)
38 | {
39 | Console.WriteLine($" <<< {ex.InnerException.Message}");
40 | }
41 | return false;
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/fhir-candle/_ForPackages/ManifestDateJsonConverter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Globalization;
4 | using System.Text;
5 | using Newtonsoft.Json;
6 |
7 | namespace fhir.candle._ForPackages
8 | {
9 | internal class ManifestDateJsonConverter : JsonConverter
10 | {
11 | public override bool CanConvert(Type objectType)
12 | {
13 | return (objectType == typeof(DateTimeOffset)) ||
14 | (objectType == typeof(string));
15 | }
16 |
17 | public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer)
18 | {
19 | string? dateString = reader.Value?.ToString();
20 |
21 | if (string.IsNullOrEmpty(dateString))
22 | {
23 | return null;
24 | }
25 |
26 | if (DateTimeOffset.TryParseExact(
27 | dateString,
28 | "yyyyMMddHHmmss",
29 | CultureInfo.InvariantCulture.DateTimeFormat,
30 | DateTimeStyles.None, out DateTimeOffset dto))
31 | {
32 | return dto;
33 | }
34 |
35 | return null;
36 | }
37 |
38 | public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
39 | {
40 | if (value is DateTimeOffset dto)
41 | {
42 | serializer.Serialize(writer, dto.ToUniversalTime().ToString("yyyyMMddHHmmss"));
43 | }
44 | else if (value != null)
45 | {
46 | serializer.Serialize(writer, value);
47 | }
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/fhirData/smart/r4/Practitioner-davinci-ronald-bone.json:
--------------------------------------------------------------------------------
1 | {
2 | "resourceType": "Practitioner",
3 | "id": "davinci-ronald-bone",
4 | "meta": {
5 | "profile": [
6 | "http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner"
7 | ],
8 | "tag": [
9 | {
10 | "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason",
11 | "code": "HTEST",
12 | "display": "test health data"
13 | }
14 | ]
15 | },
16 | "identifier": [
17 | {
18 | "system": "http://hl7.org/fhir/sid/us-npi",
19 | "value": "9941339100"
20 | },
21 | {
22 | "extension": [
23 | {
24 | "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-jurisdiction",
25 | "valueCodeableConcept": {
26 | "coding": [
27 | {
28 | "system": "https://www.usps.com/",
29 | "code": "MA"
30 | }
31 | ],
32 | "text": "Massachusetts"
33 | }
34 | }
35 | ],
36 | "system": "http://www.acme.org/practitioners",
37 | "value": "25456"
38 | }
39 | ],
40 | "name": [
41 | {
42 | "family": "Bone",
43 | "given": [
44 | "Ronald"
45 | ],
46 | "prefix": [
47 | "Dr"
48 | ]
49 | }
50 | ],
51 | "address": [
52 | {
53 | "use": "work",
54 | "line": [
55 | "1003 Healthcare Drive"
56 | ],
57 | "city": "Amherst",
58 | "state": "MA",
59 | "postalCode": "01002"
60 | }
61 | ]
62 | }
--------------------------------------------------------------------------------
/fhirData/feature-cs/r4/Practitioner-davinci-ronald-bone.json:
--------------------------------------------------------------------------------
1 | {
2 | "resourceType": "Practitioner",
3 | "id": "davinci-ronald-bone",
4 | "meta": {
5 | "profile": [
6 | "http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner"
7 | ],
8 | "tag": [
9 | {
10 | "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason",
11 | "code": "HTEST",
12 | "display": "test health data"
13 | }
14 | ]
15 | },
16 | "identifier": [
17 | {
18 | "system": "http://hl7.org/fhir/sid/us-npi",
19 | "value": "9941339100"
20 | },
21 | {
22 | "extension": [
23 | {
24 | "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-jurisdiction",
25 | "valueCodeableConcept": {
26 | "coding": [
27 | {
28 | "system": "https://www.usps.com/",
29 | "code": "MA"
30 | }
31 | ],
32 | "text": "Massachusetts"
33 | }
34 | }
35 | ],
36 | "system": "http://www.acme.org/practitioners",
37 | "value": "25456"
38 | }
39 | ],
40 | "name": [
41 | {
42 | "family": "Bone",
43 | "given": [
44 | "Ronald"
45 | ],
46 | "prefix": [
47 | "Dr"
48 | ]
49 | }
50 | ],
51 | "address": [
52 | {
53 | "use": "work",
54 | "line": [
55 | "1003 Healthcare Drive"
56 | ],
57 | "city": "Amherst",
58 | "state": "MA",
59 | "postalCode": "01002"
60 | }
61 | ]
62 | }
--------------------------------------------------------------------------------
/fhirData/smart/open/Practitioner-davinci-ronald-bone.json:
--------------------------------------------------------------------------------
1 | {
2 | "resourceType": "Practitioner",
3 | "id": "davinci-ronald-bone",
4 | "meta": {
5 | "profile": [
6 | "http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner"
7 | ],
8 | "tag": [
9 | {
10 | "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason",
11 | "code": "HTEST",
12 | "display": "test health data"
13 | }
14 | ]
15 | },
16 | "identifier": [
17 | {
18 | "system": "http://hl7.org/fhir/sid/us-npi",
19 | "value": "9941339100"
20 | },
21 | {
22 | "extension": [
23 | {
24 | "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-jurisdiction",
25 | "valueCodeableConcept": {
26 | "coding": [
27 | {
28 | "system": "https://www.usps.com/",
29 | "code": "MA"
30 | }
31 | ],
32 | "text": "Massachusetts"
33 | }
34 | }
35 | ],
36 | "system": "http://www.acme.org/practitioners",
37 | "value": "25456"
38 | }
39 | ],
40 | "name": [
41 | {
42 | "family": "Bone",
43 | "given": [
44 | "Ronald"
45 | ],
46 | "prefix": [
47 | "Dr"
48 | ]
49 | }
50 | ],
51 | "address": [
52 | {
53 | "use": "work",
54 | "line": [
55 | "1003 Healthcare Drive"
56 | ],
57 | "city": "Amherst",
58 | "state": "MA",
59 | "postalCode": "01002"
60 | }
61 | ]
62 | }
--------------------------------------------------------------------------------
/fhirData/hl7.fhir.us.davinci-cdex/provider/Practitioner-davinci-ronald-bone.json:
--------------------------------------------------------------------------------
1 | {
2 | "resourceType": "Practitioner",
3 | "id": "davinci-ronald-bone",
4 | "meta": {
5 | "profile": [
6 | "http://hl7.org/fhir/us/core/StructureDefinition/us-core-practitioner"
7 | ],
8 | "tag": [
9 | {
10 | "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason",
11 | "code": "HTEST",
12 | "display": "test health data"
13 | }
14 | ]
15 | },
16 | "identifier": [
17 | {
18 | "system": "http://hl7.org/fhir/sid/us-npi",
19 | "value": "9941339100"
20 | },
21 | {
22 | "extension": [
23 | {
24 | "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-jurisdiction",
25 | "valueCodeableConcept": {
26 | "coding": [
27 | {
28 | "system": "https://www.usps.com/",
29 | "code": "MA"
30 | }
31 | ],
32 | "text": "Massachusetts"
33 | }
34 | }
35 | ],
36 | "system": "http://www.acme.org/practitioners",
37 | "value": "25456"
38 | }
39 | ],
40 | "name": [
41 | {
42 | "family": "Bone",
43 | "given": [
44 | "Ronald"
45 | ],
46 | "prefix": [
47 | "Dr"
48 | ]
49 | }
50 | ],
51 | "address": [
52 | {
53 | "use": "work",
54 | "line": [
55 | "1003 Healthcare Drive"
56 | ],
57 | "city": "Amherst",
58 | "state": "MA",
59 | "postalCode": "01002"
60 | }
61 | ]
62 | }
--------------------------------------------------------------------------------
/src/fhir-candle/Layout/NavMenu.razor:
--------------------------------------------------------------------------------
1 | @using Microsoft.FluentUI.AspNetCore.Components;
2 |
3 | @namespace fhir.candle.Layout
4 |
5 | @implements IDialogContentComponent
6 |
7 | @inject IFhirStoreManager StoreManager
8 | @inject ISmartAuthManager AuthManager
9 |
10 |
11 |
12 | Home
13 |
14 | @if (AuthManager.IsEnabled)
15 | {
16 | SMART Clients
17 | }
18 |
19 | @foreach (string key in StoreManager.Keys.OrderBy(s => s))
20 | {
21 |
22 | FHIR Contents
23 | Local Subscriptions
24 | Received Notifications
25 |
26 | }
27 |
28 |
29 |
30 | @GetType().Assembly.GetName().Version?.ToString()
31 |
32 |
33 | @code {
34 | [Parameter]
35 | public string Content { get; set; } = default!;
36 | }
37 |
--------------------------------------------------------------------------------
/src/fhir-candle.Tests/Extensions/ShouldlyExtensions.cs:
--------------------------------------------------------------------------------
1 | using System.Diagnostics.CodeAnalysis;
2 | using System.Runtime.CompilerServices;
3 | using Shouldly;
4 |
5 | namespace fhir.candle.Tests.Extensions;
6 |
7 | internal static class ShouldlyExtensions
8 | {
9 | [MethodImpl(MethodImplOptions.NoInlining)]
10 | public static void ShouldNotBeNullOrEmpty([NotNull] this Dictionary? actual, string? customMessage = null)
11 | where TKey : notnull
12 | {
13 | if ((actual == null) || (actual.Count == 0))
14 | throw new ShouldAssertException(new ActualShouldlyMessage(actual, customMessage).ToString());
15 | }
16 |
17 | [MethodImpl(MethodImplOptions.NoInlining)]
18 | public static void ShouldNotBeNullOrEmpty([NotNull] this IEnumerable? actual, string? customMessage = null)
19 | {
20 | if ((actual == null) || (!actual.Any()))
21 | throw new ShouldAssertException(new ActualShouldlyMessage(actual, customMessage).ToString());
22 | }
23 |
24 | [MethodImpl(MethodImplOptions.NoInlining)]
25 | public static void ShouldHaveCount([NotNull] this IEnumerable? actual, int count, string? customMessage = null)
26 | {
27 | if (actual == null || actual.Count() != count)
28 | throw new ShouldAssertException(new ExpectedShouldlyMessage(actual, customMessage).ToString());
29 | }
30 |
31 | [MethodImpl(MethodImplOptions.NoInlining)]
32 | public static void ShouldHaveCount([NotNull] this Dictionary? actual, int count, string? customMessage = null)
33 | where TKey : notnull
34 | {
35 | if (actual == null || actual.Count() != count)
36 | throw new ShouldAssertException(new ExpectedShouldlyMessage(actual, customMessage).ToString());
37 | }
38 |
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/fhirData/hl7.fhir.us.davinci-cdex/provider/Condition-cdex-shaw-copd.json:
--------------------------------------------------------------------------------
1 | {
2 | "resourceType": "Condition",
3 | "meta": {
4 | "profile": [
5 | "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition"
6 | ],
7 | "tag": [
8 | {
9 | "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason",
10 | "code": "HTEST",
11 | "display": "test health data"
12 | }
13 | ]
14 | },
15 | "extension": [
16 | {
17 | "url": "http://hl7.org/fhir/StructureDefinition/condition-assertedDate",
18 | "valueDateTime": "2023-08-22"
19 | }
20 | ],
21 | "clinicalStatus": {
22 | "coding": [
23 | {
24 | "system": "http://terminology.hl7.org/CodeSystem/condition-clinical",
25 | "code": "active",
26 | "display": "Active"
27 | }
28 | ],
29 | "text": "Active"
30 | },
31 | "verificationStatus": {
32 | "coding": [
33 | {
34 | "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status",
35 | "code": "confirmed",
36 | "display": "Confirmed"
37 | }
38 | ],
39 | "text": "Confirmed"
40 | },
41 | "category": [
42 | {
43 | "coding": [
44 | {
45 | "system": "http://terminology.hl7.org/CodeSystem/condition-category",
46 | "code": "problem-list-item",
47 | "display": "Problem List Item"
48 | }
49 | ],
50 | "text": "Problem List Item"
51 | }
52 | ],
53 | "code": {
54 | "coding": [
55 | {
56 | "system": "http://snomed.info/sct",
57 | "code": "13645005",
58 | "display": "COPD",
59 | "version": "http://snomed.info/sct/731000124108"
60 | }
61 | ],
62 | "text": "Copd"
63 | },
64 | "subject": {
65 | "reference": "urn:uuid:81a90f68-4177-11ee-a1fc-daaf18ab2cba",
66 | "display": "Amy V. Shaw"
67 | },
68 | "recordedDate": "2023-08-22"
69 | }
--------------------------------------------------------------------------------
/fhir-candle.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 13.0
6 |
7 | net9.0;net8.0
8 | enable
9 | enable
10 | $([System.DateTime]::Now.ToString("yyyy.MMdd.HHmm"))
11 | $(VersionPrefix)
12 | $(AssemblyName.Replace(' ', '_'))
13 | $([System.DateTime]::Now.ToString("0.yyyy.MMdd.HHmm"))
14 | $([System.DateTime]::Now.ToString("0.yyyy.MMdd.HHmm"))
15 | GinoCanessa
16 | FHIR Foundation Project
17 | Copyright 2022-2025
18 | git
19 | https://github.com/FHIR/fhir-candle
20 | en
21 |
22 |
23 |
24 |
25 | LICENSE
26 |
27 |
28 | README.md
29 |
30 |
31 |
32 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/fhirData/hl7.fhir.us.davinci-cdex/provider/Condition-cdex-shaw-ear-burn.json:
--------------------------------------------------------------------------------
1 | {
2 | "resourceType": "Condition",
3 | "meta": {
4 | "profile": [
5 | "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition"
6 | ],
7 | "tag": [
8 | {
9 | "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason",
10 | "code": "HTEST",
11 | "display": "test health data"
12 | }
13 | ]
14 | },
15 | "extension": [
16 | {
17 | "url": "http://hl7.org/fhir/StructureDefinition/condition-assertedDate",
18 | "valueDateTime": "2021-01-21"
19 | }
20 | ],
21 | "clinicalStatus": {
22 | "coding": [
23 | {
24 | "system": "http://terminology.hl7.org/CodeSystem/condition-clinical",
25 | "code": "resolved",
26 | "display": "Resolved"
27 | }
28 | ],
29 | "text": "Active"
30 | },
31 | "verificationStatus": {
32 | "coding": [
33 | {
34 | "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status",
35 | "code": "confirmed",
36 | "display": "Confirmed"
37 | }
38 | ],
39 | "text": "Confirmed"
40 | },
41 | "category": [
42 | {
43 | "coding": [
44 | {
45 | "system": "http://terminology.hl7.org/CodeSystem/condition-category",
46 | "code": "problem-list-item",
47 | "display": "Problem List Item"
48 | }
49 | ],
50 | "text": "Problem List Item"
51 | }
52 | ],
53 | "code": {
54 | "coding": [
55 | {
56 | "system": "http://snomed.info/sct",
57 | "code": "39065001",
58 | "display": "Burn of ear",
59 | "version": "http://snomed.info/sct/731000124108"
60 | }
61 | ],
62 | "text": "Burn Of Ear"
63 | },
64 | "subject": {
65 | "reference": "urn:uuid:81a90f68-4177-11ee-a1fc-daaf18ab2cba",
66 | "display": "Amy V. Shaw"
67 | },
68 | "recordedDate": "2021-01-21"
69 | }
--------------------------------------------------------------------------------
/src/FhirStore.CommonVersioned/FhirStore.CommonVersioned.projitems:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | $(MSBuildAllProjects);$(MSBuildThisFileFullPath)
5 | true
6 | 05dd03de-a22d-4fd8-a8a8-06fd05f20a18
7 |
8 |
9 | FhirCandle
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/fhirData/hl7.fhir.us.davinci-cdex/provider/Condition-cdex-shaw-abscess.json:
--------------------------------------------------------------------------------
1 | {
2 | "resourceType": "Condition",
3 | "meta": {
4 | "profile": [
5 | "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition"
6 | ],
7 | "tag": [
8 | {
9 | "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason",
10 | "code": "HTEST",
11 | "display": "test health data"
12 | }
13 | ]
14 | },
15 | "extension": [
16 | {
17 | "url": "http://hl7.org/fhir/StructureDefinition/condition-assertedDate",
18 | "valueDateTime": "2018-02-02"
19 | }
20 | ],
21 | "clinicalStatus": {
22 | "coding": [
23 | {
24 | "system": "http://terminology.hl7.org/CodeSystem/condition-clinical",
25 | "code": "resolved",
26 | "display": "Resolved"
27 | }
28 | ],
29 | "text": "Active"
30 | },
31 | "verificationStatus": {
32 | "coding": [
33 | {
34 | "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status",
35 | "code": "confirmed",
36 | "display": "Confirmed"
37 | }
38 | ],
39 | "text": "Confirmed"
40 | },
41 | "category": [
42 | {
43 | "coding": [
44 | {
45 | "system": "http://terminology.hl7.org/CodeSystem/condition-category",
46 | "code": "problem-list-item",
47 | "display": "Problem List Item"
48 | }
49 | ],
50 | "text": "Problem List Item"
51 | }
52 | ],
53 | "code": {
54 | "coding": [
55 | {
56 | "system": "http://snomed.info/sct",
57 | "code": "18099001",
58 | "display": "Retropharyngeal abscess",
59 | "version": "http://snomed.info/sct/731000124108"
60 | }
61 | ],
62 | "text": "Retropharyngeal Abscess"
63 | },
64 | "subject": {
65 | "reference": "urn:uuid:81a90f68-4177-11ee-a1fc-daaf18ab2cba",
66 | "display": "Amy V. Shaw"
67 | },
68 | "recordedDate": "2018-02-02"
69 | }
--------------------------------------------------------------------------------
/fhirData/hl7.fhir.us.davinci-cdex/provider/Condition-cdex-shaw-examplitis.json:
--------------------------------------------------------------------------------
1 | {
2 | "resourceType": "Condition",
3 | "meta": {
4 | "profile": [
5 | "http://hl7.org/fhir/us/core/StructureDefinition/us-core-condition"
6 | ],
7 | "tag": [
8 | {
9 | "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason",
10 | "code": "HTEST",
11 | "display": "test health data"
12 | }
13 | ]
14 | },
15 | "extension": [
16 | {
17 | "url": "http://hl7.org/fhir/StructureDefinition/condition-assertedDate",
18 | "valueDateTime": "2023-08-21T20:16:25.019Z"
19 | }
20 | ],
21 | "clinicalStatus": {
22 | "coding": [
23 | {
24 | "system": "http://terminology.hl7.org/CodeSystem/condition-clinical",
25 | "code": "active",
26 | "display": "Active"
27 | }
28 | ],
29 | "text": "Active"
30 | },
31 | "verificationStatus": {
32 | "coding": [
33 | {
34 | "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status",
35 | "code": "confirmed",
36 | "display": "Confirmed"
37 | }
38 | ],
39 | "text": "Confirmed"
40 | },
41 | "category": [
42 | {
43 | "coding": [
44 | {
45 | "system": "http://terminology.hl7.org/CodeSystem/condition-category",
46 | "code": "problem-list-item",
47 | "display": "Problem List Item"
48 | }
49 | ],
50 | "text": "Problem List Item"
51 | }
52 | ],
53 | "code": {
54 | "coding": [
55 | {
56 | "system": "http://snomed.info/sct",
57 | "code": "123456789",
58 | "display": "examplitis",
59 | "version": "http://snomed.info/sct/731000124108"
60 | }
61 | ],
62 | "text": "Examplitis"
63 | },
64 | "subject": {
65 | "reference": "urn:uuid:81a90f68-4177-11ee-a1fc-daaf18ab2cba",
66 | "display": "Amy V. Shaw"
67 | },
68 | "recordedDate": "2023-08-21T20:16:25.019Z"
69 | }
--------------------------------------------------------------------------------
/src/FhirStore.Common/Models/IPackagePage.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace FhirCandle.Models;
8 |
9 | /// Information about the package page.
10 | /// The content for.
11 | /// Name of the page.
12 | /// The description.
13 | /// Full pathname of the route file.
14 | /// The FHIR version literal.
15 | /// The FHIR version numeric.
16 | /// The only show on endpoint.
17 | public record struct PackagePageInfo(
18 | string ContentFor,
19 | string PageName,
20 | string Description,
21 | string RoutePath,
22 | string FhirVersionLiteral,
23 | string FhirVersionNumeric,
24 | string OnlyShowOnEndpoint);
25 |
26 | /// Interface for package/ri pages.
27 | public interface IPackagePage
28 | {
29 | /// Gets the package or ri name this page is for.
30 | virtual static string ContentFor => string.Empty;
31 |
32 | /// Gets the name of the page.
33 | virtual static string PageName => string.Empty;
34 |
35 | /// Gets the description.
36 | virtual static string Description => string.Empty;
37 |
38 | /// Gets the full pathname of the route file.
39 | virtual static string RoutePath => string.Empty;
40 |
41 | /// Gets the FHIR version literal.
42 | virtual static string FhirVersionLiteral => string.Empty;
43 |
44 | /// Gets the FHIR version numeric.
45 | virtual static string FhirVersionNumeric => string.Empty;
46 |
47 | /// Gets the only show on endpoint.
48 | virtual static string OnlyShowOnEndpoint => string.Empty;
49 | }
50 |
--------------------------------------------------------------------------------
/src/fhir-candle.Tests/data/r5/subscriptiontopic-encounter-create-interaction.json:
--------------------------------------------------------------------------------
1 | {
2 | "resourceType": "SubscriptionTopic",
3 | "id": "encounter-create-interaction",
4 | "url": "http://example.org/FHIR/R5/SubscriptionTopic/encounter-create-interaction",
5 | "version": "1.0.0-beta.1",
6 | "title": "example",
7 | "status": "draft",
8 | "date": "2019-01-01",
9 | "description": "Example topic for all created encounters",
10 | "resourceTrigger": [
11 | {
12 | "description": "An Encounter has been created",
13 | "resource": "http://hl7.org/fhir/StructureDefinition/Encounter",
14 | "supportedInteraction": [
15 | "create"
16 | ]
17 | }
18 | ],
19 | "canFilterBy": [
20 | {
21 | "description": "Filter based on the subject of an encounter.",
22 | "resource": "Encounter",
23 | "filterParameter": "subject"
24 | },
25 | {
26 | "description": "Filter based on the group membership of the subject of an encounter.",
27 | "resource": "Encounter",
28 | "filterParameter": "_in"
29 | },
30 | {
31 | "description": "Filter based on the length of an encounter.",
32 | "resource": "Encounter",
33 | "filterParameter": "length",
34 | "comparator": [
35 | "gt",
36 | "lt",
37 | "ge",
38 | "le"
39 | ]
40 | },
41 | {
42 | "description": "Filter based on the account for billing an encounter.",
43 | "resource": "Encounter",
44 | "filterParameter": "account",
45 | "modifier": [
46 | "missing",
47 | "not",
48 | "identifier"
49 | ]
50 | }
51 | ],
52 | "notificationShape": [
53 | {
54 | "resource": "Encounter",
55 | "include": [
56 | "Encounter:patient&iterate=Patient.link",
57 | "Encounter:practitioner",
58 | "Encounter:service-provider",
59 | "Encounter:account",
60 | "Encounter:diagnosis",
61 | "Encounter:observation",
62 | "Encounter:location"
63 | ]
64 | }
65 | ]
66 | }
--------------------------------------------------------------------------------
/CONTRIBUTING.MD:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | This document describes guidelines for contributing to this repo.
4 |
5 | ## Submitting Pull Requests
6 |
7 | - **DO** submit all changes via pull requests (PRs). They will be reviewed and potentially be merged by maintainers after a peer review that includes at least one of the team members.
8 | - **DO** give PRs short but descriptive names.
9 | - **DO** write a useful but brief description of what the PR is for.
10 | - **DO** refer to any relevant issues and use [keywords](https://help.github.com/articles/closing-issues-using-keywords/) that automatically close issues when the PR is merged.
11 | - **DO** ensure each commit successfully builds. The entire PR must pass all checks before it will be merged.
12 | - **DO** address PR feedback in additional commits instead of amending.
13 | - **DO** assume that [Squash and Merge](https://blog.github.com/2016-04-01-squash-your-commits/) will be used to merge the commits unless specifically requested otherwise.
14 | - **DO NOT** submit "work in progress" PRs. A PR should only be submitted when it is considered ready for review.
15 | - **DO NOT** mix independent and unrelated changes in one PR.
16 |
17 | ## Coding Style
18 |
19 | The coding style is enforced through [StyleCop.Analyzers](https://github.com/DotNetAnalyzers/StyleCopAnalyzers), [.editorconfig](.editorconfig), and [stylecop.json](stylecop.json). Contributors should ensure these guidelines are followed when making submissions.
20 |
21 | - **DO** address the StyleCop.Analyzers errors.
22 | - **DO** follow the [.editorconfig](.editorconfig) and [stylecop.json](stylecop.json) settings.
23 |
24 | ## Creating Issues
25 |
26 | - **DO** use a descriptive title that identifies the issue or the requested feature.
27 | - **DO** write a detailed description of the issue or the requested feature.
28 | - **DO** provide details for issues you create:
29 | - Describe the expected and actual behavior.
30 | - Provide any relevant exception message or OperationOutcome.
31 | - **DO** subscribe to notifications for created issues in case there are any follow-up questions.
--------------------------------------------------------------------------------
/src/FhirCandle.Ui.R5/Subscriptions/TourStep01.razor:
--------------------------------------------------------------------------------
1 | @using Microsoft.FluentUI.AspNetCore.Components;
2 |
3 |
4 |
5 | In FHIR @Store.Config.FhirVersion, topics are discovered by searching the server for
6 | SubscriptionTopic resources. The list of topics in this
7 | tenant can be found
8 | here,
10 | or you can submit a FHIR search to:
11 | @Store.Config.BaseUrl/SubscriptionTopic.
12 |
13 |
14 |
15 | For this walkthrough, we will be using the included encounter-complete
16 | topic that has a canonical URL of http://example.org/FHIR/SubscriptionTopic/encounter-complete.
17 | The definition for this topic can be seen at
18 | here,
20 | or you can submit a FHIR read to:
21 | @Store.Config.BaseUrl/SubscriptionTopic/encounter-complete.
22 |
23 |
24 |
25 | Click next to select the encounter-complete topic.
26 |
27 |
28 |
29 | @code {
30 | /// Gets or sets the navigation tracker.
31 | [CascadingParameter]
32 | public INavTracker? NavTracker { get; set; } = null;
33 |
34 | /// Gets or sets the name of the store.
35 | [Parameter]
36 | public string StoreName { get; set; } = string.Empty;
37 |
38 | /// Gets or sets the package name.
39 | [Parameter]
40 | public IFhirStore Store { get; set; } = null!;
41 | }
42 |
--------------------------------------------------------------------------------
/src/FhirCandle.Ui.R4B/Subscriptions/TourStep01.razor:
--------------------------------------------------------------------------------
1 | @using Microsoft.FluentUI.AspNetCore.Components;
2 |
3 |
4 |
5 | In FHIR @Store.Config.FhirVersion, topics are discovered by searching the server for
6 | SubscriptionTopic resources. The list of topics in this
7 | tenant can be found
8 | here,
10 | or you can submit a FHIR search to:
11 | @Store.Config.BaseUrl/SubscriptionTopic.
12 |
13 |
14 |
15 | For this walkthrough, we will be using the included encounter-complete
16 | topic that has a canonical URL of http://example.org/FHIR/SubscriptionTopic/encounter-complete.
17 | The definition for this topic can be seen at
18 | here,
20 | or you can submit a FHIR read to:
21 | @Store.Config.BaseUrl/SubscriptionTopic/encounter-complete.
22 |
23 |
24 |
25 | Click next to select the encounter-complete topic.
26 |
27 |
28 |
29 | @code {
30 | /// Gets or sets the navigation tracker.
31 | [CascadingParameter]
32 | public INavTracker? NavTracker { get; set; } = null;
33 |
34 | /// Gets or sets the name of the store.
35 | [Parameter]
36 | public string StoreName { get; set; } = string.Empty;
37 |
38 | /// Gets or sets the package name.
39 | [Parameter]
40 | public IFhirStore Store { get; set; } = null!;
41 | }
42 |
--------------------------------------------------------------------------------
/src/FhirStore.Common/Models/FhirResponseContext.cs:
--------------------------------------------------------------------------------
1 | //
2 | // Copyright (c) Microsoft Corporation. All rights reserved.
3 | // Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
4 | //
5 |
6 | using System.Net;
7 |
8 | namespace FhirCandle.Models;
9 |
10 | /// A FHIR response context.
11 | public record class FhirResponseContext
12 | {
13 | /// Gets or initializes the status code.
14 | public HttpStatusCode? StatusCode { get; init; }
15 |
16 | /// Gets or initializes the serialized format.
17 | public string MimeType { get; init; } = string.Empty;
18 |
19 | /// Gets or initializes the resource.
20 | public object? Resource { get; init; }
21 |
22 | /// Gets or initializes the type of the resource.
23 | public string ResourceType { get; init; } = string.Empty;
24 |
25 | /// Gets or initializes the identifier.
26 | public string Id { get; init; } = string.Empty;
27 |
28 | /// Gets or initializes the serialized resource.
29 | public string SerializedResource { get; init; } = string.Empty;
30 |
31 | /// Gets or initializes the OperationOutcome.
32 | public object? Outcome { get; init; }
33 |
34 | /// Gets or initializes the serialized outcome.
35 | public string SerializedOutcome { get; init; } = string.Empty;
36 |
37 | /// Gets or initializes information describing a non-FHIR response.
38 | public object? NonFhirData { get; init; }
39 |
40 | /// Gets or initializes the tag.
41 | public string ETag { get; init; } = string.Empty;
42 |
43 | /// Gets or initializes the location.
44 | public string Location { get; init; } = string.Empty;
45 |
46 | /// Gets or initializes the last modified.
47 | public string LastModified { get; init; } = string.Empty;
48 | }
49 |
--------------------------------------------------------------------------------
/fhirData/subscriptions/r4b/subscriptiontopic-encounter-complete.json:
--------------------------------------------------------------------------------
1 | {
2 | "resourceType": "SubscriptionTopic",
3 | "id": "encounter-complete",
4 | "url": "http://example.org/FHIR/SubscriptionTopic/encounter-complete",
5 | "version": "1.0.0-fhir.r4b",
6 | "title": "encounter-complete",
7 | "status": "draft",
8 | "date": "2019-01-01",
9 | "description": "Example topic for completed encounters",
10 | "resourceTrigger": [
11 | {
12 | "description": "An Encounter has been completed",
13 | "resource": "http://hl7.org/fhir/StructureDefinition/Encounter",
14 | "supportedInteraction": [
15 | "create",
16 | "update"
17 | ],
18 | "queryCriteria": {
19 | "previous": "status:not=finished",
20 | "resultForCreate": "test-passes",
21 | "current": "status=finished",
22 | "resultForDelete": "test-fails",
23 | "requireBoth": true
24 | },
25 | "fhirPathCriteria": "(%previous.id.empty() or (%previous.status != 'finished')) and (%current.status = 'finished')"
26 | }
27 | ],
28 | "canFilterBy": [
29 | {
30 | "description": "Filter based on the subject of an encounter.",
31 | "resource": "Encounter",
32 | "filterParameter": "subject"
33 | },
34 | {
35 | "description": "Filter based on the group membership of the subject of an encounter.",
36 | "resource": "Encounter",
37 | "filterParameter": "_in"
38 | },
39 | {
40 | "description": "Filter based on the length of an encounter.",
41 | "resource": "Encounter",
42 | "filterParameter": "length",
43 | "modifier": [
44 | "gt",
45 | "lt",
46 | "ge",
47 | "le"
48 | ]
49 | }
50 | ],
51 | "notificationShape": [
52 | {
53 | "resource": "Encounter",
54 | "include": [
55 | "Encounter:patient&iterate=Patient.link",
56 | "Encounter:practitioner",
57 | "Encounter:service-provider",
58 | "Encounter:account",
59 | "Encounter:diagnosis",
60 | "Encounter:observation",
61 | "Encounter:location"
62 | ]
63 | }
64 | ]
65 | }
--------------------------------------------------------------------------------
/fhirData/subscriptions/r5/subscriptiontopic-encounter-complete.json:
--------------------------------------------------------------------------------
1 | {
2 | "resourceType": "SubscriptionTopic",
3 | "id": "encounter-complete",
4 | "url": "http://example.org/FHIR/SubscriptionTopic/encounter-complete",
5 | "version": "1.0.0-fhir.r5",
6 | "title": "encounter-complete",
7 | "status": "draft",
8 | "date": "2019-01-01",
9 | "description": "Example topic for completed encounters",
10 | "resourceTrigger": [
11 | {
12 | "description": "An Encounter has been completed",
13 | "resource": "http://hl7.org/fhir/StructureDefinition/Encounter",
14 | "supportedInteraction": [
15 | "create",
16 | "update"
17 | ],
18 | "queryCriteria": {
19 | "previous": "status:not=completed",
20 | "resultForCreate": "test-passes",
21 | "current": "status=completed",
22 | "resultForDelete": "test-fails",
23 | "requireBoth": true
24 | },
25 | "fhirPathCriteria": "(%previous.id.empty() or (%previous.status != 'completed')) and (%current.status = 'completed')"
26 | }
27 | ],
28 | "canFilterBy": [
29 | {
30 | "description": "Filter based on the subject of an encounter.",
31 | "resource": "Encounter",
32 | "filterParameter": "patient"
33 | },
34 | {
35 | "description": "Filter based on the group membership of the subject of an encounter.",
36 | "resource": "Encounter",
37 | "filterParameter": "_in"
38 | },
39 | {
40 | "description": "Filter based on the length of an encounter.",
41 | "resource": "Encounter",
42 | "filterParameter": "length",
43 | "comparator": [
44 | "gt",
45 | "lt",
46 | "ge",
47 | "le"
48 | ]
49 | }
50 | ],
51 | "notificationShape": [
52 | {
53 | "resource": "Encounter",
54 | "include": [
55 | "Encounter:patient&iterate=Patient.link",
56 | "Encounter:practitioner",
57 | "Encounter:service-provider",
58 | "Encounter:account",
59 | "Encounter:diagnosis",
60 | "Encounter:observation",
61 | "Encounter:location"
62 | ]
63 | }
64 | ]
65 | }
--------------------------------------------------------------------------------
/src/fhir-candle/wwwroot/highlight/languages/xml.min.js:
--------------------------------------------------------------------------------
1 | /*! `xml` grammar compiled for Highlight.js 11.8.0 */
2 | (()=>{var e=(()=>{"use strict";return e=>{
3 | const a=e.regex,n=a.concat(/[\p{L}_]/u,a.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s={
4 | className:"symbol",begin:/&[a-z]+;|[0-9]+;|[a-f0-9]+;/},t={begin:/\s/,
5 | contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]
6 | },i=e.inherit(t,{begin:/\(/,end:/\)/}),c=e.inherit(e.APOS_STRING_MODE,{
7 | className:"string"}),l=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),r={
8 | endsWithParent:!0,illegal:/,relevance:0,contains:[{className:"attr",
9 | begin:/[\p{L}0-9._:-]+/u,relevance:0},{begin:/=\s*/,relevance:0,contains:[{
10 | className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[s]},{
11 | begin:/'/,end:/'/,contains:[s]},{begin:/[^\s"'=<>`]+/}]}]}]};return{
12 | name:"HTML, XML",
13 | aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],
14 | case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[t,l,c,i,{begin:/\[/,end:/\]/,contains:[{
16 | className:"meta",begin://,contains:[t,i,l,c]}]}]
17 | },e.COMMENT(//,{relevance:10}),{begin://,
18 | relevance:10},s,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,
19 | relevance:10,contains:[l]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",
20 | begin:/