Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
3161 commits
Select commit Hold shift + click to select a range
66117ba
LNK-2879: Log Census Producer Exceptions (#1439)
nvmLantana Feb 17, 2026
5757ed5
LNK-4819: Added Audit Events for delete/restore Tenant (#1440)
arianamihailescu Feb 17, 2026
62b6c6b
Re-adding patient log link to report view table from merge overwrite
seanmcilvenna Feb 17, 2026
2cdaa0b
Add environment cleanup script for MSSQL, MongoDB, Kafka, and Redis s…
seanmcilvenna Feb 17, 2026
8d14fb4
LNK-4830: index changes (#1442)
edward-miller-lcg Feb 18, 2026
0111f5f
LNK-4674: Merge Fjorge's fixes (#1445)
arianamihailescu Feb 19, 2026
8373e4c
Permit unauthenticated GET access to /info endpoint in security config
seanmcilvenna Feb 19, 2026
055505b
Permit unauthenticated GET access to /api/*/info endpoint in security…
seanmcilvenna Feb 20, 2026
31e4aaa
Handle missing service names as 'Unknown' when sorting in LinkHealthC…
seanmcilvenna Feb 20, 2026
ce95071
Add service info injection step using Python script in CD pipeline
seanmcilvenna Feb 20, 2026
28db678
TECH_DEBT: Add to Docker ignore lists (#1449)
smailliwcs Feb 20, 2026
4d48525
Update service-name in validation application config to 'Link Validat…
seanmcilvenna Feb 20, 2026
f7bb1cf
Merge remote-tracking branch 'origin/dev' into dev
seanmcilvenna Feb 20, 2026
068ebb8
Permit unauthenticated GET access to /v3/api-docs/** and /swagger-ui.…
seanmcilvenna Feb 20, 2026
3073f4f
LNK-4836: Query Optimizations for Data Acq Job (#1450)
edward-miller-lcg Feb 20, 2026
4084d8b
Removing wildcard /info anonymous access from Java security class. In…
seanmcilvenna Feb 23, 2026
7ecc5c9
Merge remote-tracking branch 'origin/dev' into dev
seanmcilvenna Feb 23, 2026
c02076b
TECH_DEBT: Standardizing the info endpoint for measureeval and valida…
seanmcilvenna Feb 23, 2026
8bd4f91
LNK-4817: Static scan fixes (#1446)
johnbritton Feb 23, 2026
9a21293
LNK-2880: Ensure when producing a ResourceNormalized message, that it…
edward-miller-lcg Feb 23, 2026
e768539
LNK-4791: Admin.BFF proxy is missing the report population and resour…
johnbritton Feb 23, 2026
a82879c
LNK-4675: Support for Pagination on Report Generation page (#1455)
arianamihailescu Feb 24, 2026
5bf62a8
TECH_DEBT: Updated Report consumer debug logs to write the name of th…
dvargaslantana Feb 24, 2026
60189fb
TECH_DEBT: Dops-490 Adding Kafka Topics Sync Pipeline (#1448)
kissalk Feb 25, 2026
3981a0b
Add script to fetch patient IDs from FHIR server and save to text file
seanmcilvenna Feb 25, 2026
42232da
TECH_DEBT: Fix minor DAW bug for Query Status Assignment (#1458)
edward-miller-lcg Feb 25, 2026
9475bcf
LNK-4675: support for paging and filtering on generate report (#1457)
arianamihailescu Feb 25, 2026
83834ac
LNK-4849: Excluded soft deleted facilities to be picked up by the sch…
arianamihailescu Feb 25, 2026
39bdfe9
LNK-4850: unable to regenerate report (#1460)
arianamihailescu Feb 25, 2026
1f494d3
LNK-4853: Kafka message keys for ResourceAcquired and ResourceNormali…
seanmcilvenna Feb 25, 2026
b9384d5
LNK-4850: unable to regenerate report (#1463)
arianamihailescu Feb 26, 2026
71abc53
LNK-4855: Allow filtering by multiple statuses in report endpoints; a…
seanmcilvenna Feb 26, 2026
c7cc0ca
LNK-4857: Resolve Data Acq Job Deadlocks (#1464)
edward-miller-lcg Feb 26, 2026
d6086bf
LNK-4722: Report Listener Integration Tests (#1467)
nvmLantana Mar 2, 2026
b41f413
LNK-4800: Added Restore back (#1470)
arianamihailescu Mar 2, 2026
5b126af
TECH_DEBT: Updating Kafka-Topics-Pipeline (#1473)
kissalk Mar 3, 2026
0c4336d
LNK-4797: Duplicate POIs cause errors in ad hoc reports (#1471)
smailliwcs Mar 3, 2026
06d9757
LNK-4800: fixed the http code for facility not found (#1474)
arianamihailescu Mar 3, 2026
2da32b7
LNK-4869: Remove Redis Setup from Report (#1475)
nvmLantana Mar 3, 2026
6db17e5
LNK-4863: use clustering for Quartz and SQL server (#1476)
arianamihailescu Mar 3, 2026
41a0487
TECH_DEBT: Dops 487 Updating DB Migration Pipeline w/ Automation (#1332)
kissalk Mar 3, 2026
54de2e1
LNK-4857: Fix Op Outcome retries (#1468)
edward-miller-lcg Mar 3, 2026
c0749ca
Bump project versions to 0.5.0 across .NET and Java modules.
seanmcilvenna Mar 4, 2026
bfe0198
Improve `list-deploy-changes.py`: optimize service detection, refine …
seanmcilvenna Mar 4, 2026
3042640
LNK-4869: Refactor Report Quartz Configuration (#1479)
nvmLantana Mar 5, 2026
ab5526e
LNK-4863: Report Quartz & Job Tweaks (#1488)
nvmLantana Mar 9, 2026
a962a52
LNK-4852: Initializing reportPopulation document for consumed ReportS…
dvargaslantana Mar 9, 2026
7280f30
LNK-4889: fix resource normalized error (#1491)
edward-miller-lcg Mar 10, 2026
dc34618
LNK-4822: Soft Delete Acquisition Logs (#1492)
arianamihailescu Mar 10, 2026
a7657ac
LNK-4899: consolidate ef core references (#1494)
nvmLantana Mar 10, 2026
b670d3d
LNK-4873: Update Validation for Release 2 (R2) of the Implementation …
johnbritton Mar 12, 2026
9e54564
LNK-4900: Add Aggregation End Points For Soft Delete/Restore; enhance…
arianamihailescu Mar 13, 2026
6f53cec
TECH_DEBT: Added exception handling for null blob storage containers …
dvargaslantana Mar 13, 2026
02cec40
LNK-4871: soft delete acquisition logs in UI and fix navigation menu …
arianamihailescu Mar 13, 2026
1e39f48
LNK-4634: make retries configurable. (#1496)
edward-miller-lcg Mar 13, 2026
bad0995
LNK-4879: Fix retry mecahanism - Acquisition Worker (#1489)
edward-miller-lcg Mar 16, 2026
f93e34e
LNK-4912: Restore Quartz Table Prefix, "reportjobs" (#1500)
nvmLantana Mar 16, 2026
af4178f
LNK-4901: Convert Report to SqlServer (#1502)
nvmLantana Mar 17, 2026
041427b
LNK-4921: Fix Report Error on Report Detail Page and Pagination on Re…
arianamihailescu Mar 18, 2026
ca2675c
Dops-608 (#1505)
kissalk Mar 18, 2026
4f4fa8c
LNK-3711: Ability to soft delete report (#1506)
arianamihailescu Mar 18, 2026
4f857a0
LNK-3711: ability to soft delete report (#1508)
arianamihailescu Mar 19, 2026
464f4b3
LNK-4920: Updated MeasureEval consumer logic to exclusively evaluate …
dvargaslantana Mar 19, 2026
c72d91a
LNK-4915: restore report after soft deletion (#1509)
arianamihailescu Mar 19, 2026
11d5977
LNK-4925: Report Service Bulk Operations (#1511)
nvmLantana Mar 20, 2026
6ac6836
LNK-4926: Measure And Resource Count Not Populated (#1513)
arianamihailescu Mar 23, 2026
18c65ea
LNK-3832: Feature SFTP Data Acquisition (#1472)
amphillipsLGC Mar 24, 2026
51dd9d7
LNK-4924: Added Search field to Report Dashboard and Facility View Re…
arianamihailescu Mar 24, 2026
319d077
LNK-4929: Enhance search on Report and Data Acquisition log screen (#…
arianamihailescu Mar 24, 2026
e1a0fc9
LNK-4852: Report Updates (#1514)
nvmLantana Mar 24, 2026
a5c8a7c
LNK-4852: MIgration Refactor (#1517)
nvmLantana Mar 25, 2026
2141575
LNK-4929: enhance data acquisitions and report screens (#1520)
arianamihailescu Mar 25, 2026
ebf41a2
LNK-4931: Enhance The Smoke Test (#1518)
nvmLantana Mar 26, 2026
0c787f4
LNK-4929: enhance da report screens (#1522)
arianamihailescu Mar 26, 2026
2e40452
LNK-4885: trying to trigger a build (#1524)
arianamihailescu Mar 27, 2026
43523aa
LNK-4885: add vendor configuration tenant service (#1525)
arianamihailescu Mar 27, 2026
0ffac23
Dops-608-2 - Removes repetitive code and becomes more DRY (#1507)
kissalk Mar 30, 2026
621a914
LNK-4885: add vendor configuration tenant service (#1527)
arianamihailescu Mar 31, 2026
e058310
LNK-5028: fix the version for system text so PR-s will build (#1530)
arianamihailescu Mar 31, 2026
1d60c20
LNK-4890: Fix Measure Eval's handling of nonexistent patient (#1531)
smailliwcs Mar 31, 2026
0f420f7
LNK-4955: Report Service Bug FIxes (#1526)
nvmLantana Mar 31, 2026
d429dd2
LNK-4885: add vendor configuration tenant service (#1529)
arianamihailescu Mar 31, 2026
841c655
LNK-5032: dotnet format link-cloud.sln (#1534)
nvmLantana Mar 31, 2026
5058e51
LNK-4957: Fix "Pending Validation" stuck state caused by premature Ka…
johnbritton Apr 1, 2026
0481bc6
LNK-5007: Implement Stalled Processing Logs Reset (#1540)
edward-miller-lcg Apr 2, 2026
2e66654
LNK-4949: Kafka Topic Pipeline Update (#1535)
kissalk Apr 2, 2026
77fc3f3
LNK-4943: Updated ReadyForValidation producer and consumer to include…
dvargaslantana Apr 3, 2026
34ee525
LNK-4949: Kafka Topic ResourceAcquired Max Message Size (#1543)
kissalk Apr 6, 2026
94f3984
TECH_DEBT: Fix topic creation script (#1547)
smailliwcs Apr 6, 2026
9757eeb
LNK-4952: Normalization Optimizations (0.5.1 Cherry Pick) (#1545)
dvargaslantana Apr 6, 2026
8abb41a
LNK-5054: Added new Automation Pipeline(s) (#1548)
kissalk Apr 6, 2026
41d1cb5
Incrementing version number to 0.6.0
seanmcilvenna Apr 6, 2026
220696c
LNK-5054: Updating testProject location (#1550)
kissalk Apr 7, 2026
9699608
LNK-4923: Add Tenant Search Fields (#1549)
arianamihailescu Apr 7, 2026
18155c2
LNK-5050: Validation for empty sftp root directories (#1551)
amphillipsLGC Apr 7, 2026
80cb8c5
LNK-5053: Moved transaction commit call for Cerner patient discharges…
dvargaslantana Apr 7, 2026
7149073
LNK-5057: Implement Custom Header Authentication for FHIR Servers (#1…
johnbritton Apr 9, 2026
e9ebcf5
LNK-5030: Filtering patients in report view doesn't work on some pati…
smailliwcs Apr 9, 2026
a276081
LNK-5071: Adding Null File to Script (#1558)
kissalk Apr 10, 2026
fb2e445
LNK-5039: cancel data acquisition logs (#1557)
arianamihailescu Apr 10, 2026
8b40855
LNK-5059: Data Acquisition Performance Update (#1546)
nvmLantana Apr 11, 2026
4a8f8e6
LNK-4932: Create Automation Library (#1521)
nvmLantana Apr 12, 2026
2bb0f7d
LNK-5080: Fix AppSettings File Encoding (#1561)
nvmLantana Apr 13, 2026
198ed34
LNK-5079: Optimize Scheduled Report Table (#1560)
nvmLantana Apr 13, 2026
2b00a29
LNK-5080: Adjust Mongo Index Creation for Cosmos Compatibility (#1562)
nvmLantana Apr 13, 2026
40416c2
LNK-5080: App Settings Encoding - Again (#1563)
nvmLantana Apr 13, 2026
3fd8a5e
LNK-5080: Update Readmes, Adjust Token/Auth settings (#1564)
nvmLantana Apr 13, 2026
9ce3dc4
LNK-5080: Update Validation Service Snapshot (#1565)
nvmLantana Apr 13, 2026
17e7081
LNK-5083: Release Mgmt - Cherry-Pick Release Branch Changes (#1566)
smailliwcs Apr 14, 2026
de5e05b
LNK-4414: Fix Tempo image version; add traceId and CorrelationId in D…
arianamihailescu Apr 14, 2026
b02b5b1
LNK-5059: Migration Fix (#1568)
nvmLantana Apr 15, 2026
ac7f562
LNK-5107: Make Validation database scripts idempotent (#1570)
johnbritton Apr 15, 2026
7fbc81d
LNK-5056: Implement OAuth2 Authentication for FHIR Servers (#1569)
johnbritton Apr 16, 2026
7ea85d7
LNK-5109: fill in more API model properties (#1571)
nvmLantana Apr 16, 2026
7517c78
LNK-5111: Update Data Acquisition 'No Config' Disposition with New St…
nvmLantana Apr 16, 2026
621b3da
LNK-5126: disable census configuration when we soft-delete a facility…
arianamihailescu Apr 17, 2026
abe63d7
LNK-5132: Restored removed debug log level statements and various com…
dvargaslantana Apr 20, 2026
22b4cbd
LNK-5131: Add Cancelled state as a Terminal state when sending a Tail…
arianamihailescu Apr 20, 2026
a2705c6
LNK-5042: Improved Dashboard, Improved Patient Generation, Enhanced T…
nvmLantana Apr 20, 2026
e155749
LNK-5129: Do Not Throw Transient Exception (#1577)
nvmLantana Apr 21, 2026
f82c3f8
LNK-5154: Update Generation Manifest to Include CQL Observation Filte…
nvmLantana Apr 22, 2026
dd67b21
LNK-5155: Remove Dependency on ReportResource Table (#1584)
nvmLantana Apr 22, 2026
5b6cf8b
LNK-4707: Deferred query logic (#1580)
amphillipsLGC Apr 22, 2026
524e028
LNK-5134: Removed writes to ReportResource table (#1578)
dvargaslantana Apr 22, 2026
cd5c8ca
LNK-5139: create entry (when missing) on Discharge events as well bes…
arianamihailescu Apr 22, 2026
58b21e8
LNK-4951: Data Acquisition checks Secret Management before Azure App …
johnbritton Apr 22, 2026
ab972ad
LNK-5160: Improve Our Test Suite Efficiency (#1588)
nvmLantana Apr 22, 2026
d1a860a
LNK-5128: limit ability to execute or cancel da log (#1587)
arianamihailescu Apr 22, 2026
3627a40
LNK-5140: Restore Reference Resource Query Efficiency (#1579)
nvmLantana Apr 22, 2026
d6c26b3
LNK-5158: Apply Missing Configuration Status to Logs During Creation …
nvmLantana Apr 23, 2026
22e947a
LNK-5163: Apply Annotations to Service Tests (#1591)
nvmLantana Apr 23, 2026
02df9c4
LNK-5128: limit ability to execute or cancel da log (#1590)
arianamihailescu Apr 23, 2026
0cfc899
LNK-4414: display link to traceId in Grafana/Tempo (#1593)
arianamihailescu Apr 23, 2026
0096545
LNK-5145: DA Issue when generating reports for facility : MyFacility…
smailliwcs Apr 23, 2026
55696f6
LNK-5139: Multi Tenant Report Scheduled Error (#1582)
nvmLantana Apr 23, 2026
9e48f18
LNK-5168: Translate Migration Into a More Convertible Format (#1594)
nvmLantana Apr 23, 2026
b007a9a
LNK-5174: Automation - Fix Multi-Day Dashboard Display (#1595)
nvmLantana Apr 24, 2026
7f87c04
LNK-4944: Optimize Generate Report Listener for Adhoc Reporting (#1596)
nvmLantana Apr 24, 2026
6830435
LNK-5178: Automation Misc Bugs and Tweaks (#1597)
nvmLantana Apr 27, 2026
a4fec22
LNK-5178: Adapt index handling for cosmos compatibility (#1599)
nvmLantana Apr 27, 2026
391d15d
LNK-5156: Real Time Display of Active Run Duration (#1600)
nvmLantana Apr 27, 2026
20c8fd4
LNK-5164: Run Diagnostics Export Option (#1601)
nvmLantana Apr 27, 2026
9933d46
LNK-5165: Update Data Acquisition Log Detail View (#1602)
nvmLantana Apr 27, 2026
f5f984a
LNK-5157: Set FacilityId to the Same Guid value as the RunId (#1603)
nvmLantana Apr 27, 2026
d798b41
LNK-4227: Store facility credentials in Azure Key Vault (#1604)
johnbritton Apr 28, 2026
a011be4
LNK-4916: establish shared process for required application configs (…
edward-miller-lcg Apr 28, 2026
7a3ac94
Updating /docs with latest from EC
seanmcilvenna Apr 28, 2026
ddf433c
Update PR title validation to support "LEGLINK-nnnn" prefix
seanmcilvenna Apr 30, 2026
bfbbee5
LEGLINK-45: Update Automation To Offer External FHIR Data Uploads (#1…
nvmLantana Apr 30, 2026
46cbf7c
LNK-57: Adding Support for Site Validation for Automation UI (#1609)
kissalk May 4, 2026
df88195
LNK-57: Updating Site Check Pipeline (#1610)
kissalk May 4, 2026
9bd465c
LEGLINK-25: Static Scan Remediations v0.6.0 4/24/26 (#1612)
smailliwcs May 5, 2026
3ba53a3
TECH_DEBT: Use BOM for C# files (#1608)
smailliwcs May 5, 2026
b585c5c
LEGLINK-76: Fix SQL deadlock errors in DataAcquisition (#1615)
johnbritton May 6, 2026
ed3bc57
LEGLINK-40: Accept Excel and CSV Input for CodeMaps (#1619)
arianamihailescu May 7, 2026
c2e65b9
LEGLINK-20: Normalization Operation POST requests will now add a defa…
dvargaslantana May 8, 2026
55f14c8
LEGLINK-40: defaulted the display to target code and let the user add…
arianamihailescu May 8, 2026
8b2e9e8
LEGLINK-40: enhance code maps (#1623)
arianamihailescu May 8, 2026
7570875
LEGLINK-20: added logging to some automation tests (#1624)
arianamihailescu May 11, 2026
ad67ce2
LEGLINK-191: Add Unique index for ResourceType Name to fix the race c…
arianamihailescu May 11, 2026
70827e2
LEGLINK-208: Submission - Removed Report REST requests for patient an…
dvargaslantana May 12, 2026
35274d3
LEGLINK-196: Handle Specimen Predictions (#1627)
nvmLantana May 14, 2026
577ef3e
LEGLINK-52: Regenerate of reports is not working in LCG test (#1629)
smailliwcs May 15, 2026
01f3581
LEGLINK-284: Auto-sequencing of normalization operations sometimes fa…
smailliwcs May 18, 2026
52ca8f1
LEGLINK-14: Secret manager storage of vendor signing material (#1633)
amphillipsLGC May 18, 2026
96a2324
LEGLINK-74: Enhanced normalization logging (#1634)
johnbritton May 20, 2026
36d8c3c
LEGLINK-68: Slack Notifications (#1635)
nvmLantana May 21, 2026
cd111a9
LEGLINK-317: Fix Redis connection failures over docker bridge network…
MikeAtPinnacle May 26, 2026
5790202
LEGLINK-308: Optimize GetDataAcquisitionLogStatisticsByReportAsync qu…
johnbritton May 26, 2026
c84e577
LEGLINK-68: Uncomitted Changes (#1636)
nvmLantana May 26, 2026
34f1819
TECH_DEBT: Patient Performance Metrics and Observability (#1589)
seanmcilvenna May 27, 2026
a651449
TECH_DEBT: Clinical Reasoning and HAPI Dependency Update (#1552)
c-schuler May 27, 2026
266461f
TECH_DEBT: Add mock FHIR server (#1639)
johnbritton May 27, 2026
78e89cc
Replacing EC docs with KS export.
seanmcilvenna May 28, 2026
a91e8d3
LEGLINK-68: Update pipeline for manual runs (#1640)
nvmLantana Jun 1, 2026
074d36f
LEGLINK-69: Normalization - Add extension removal support - Backend (…
smailliwcs Jun 2, 2026
1e9f032
LEGLINK-349: Add AdministrationMedication (#1642)
arianamihailescu Jun 2, 2026
d7b2a9c
LEGLINK-18: Normalization - Add extension removal support - UI (#1643)
smailliwcs Jun 2, 2026
857219b
LEGLINK-354: Fix Patient Count and Patient Bundle Upload Display (#1646)
nvmLantana Jun 4, 2026
cbf56b5
LEGLINK-65: Add PostSearch for Parameter queries (#1644)
MikeAtPinnacle Jun 4, 2026
ae3b1e8
LEGLINK-355: Query Plan Update (#1647)
nvmLantana Jun 5, 2026
501067d
TECH_DEBT: Fix artifact upload (#1649)
smailliwcs Jun 8, 2026
03dc46a
LEGLINK-391: Add SearchPost to acquisition log query type filter (#1654)
MikeAtPinnacle Jun 8, 2026
2b33689
LEGLINK-376: Configurable report donut chart colors + Admin.UI test s…
MikeAtPinnacle Jun 9, 2026
10fefbd
LEGLINK-294: Standardize QueryPlanConfig bad-request responses on RFC…
MikeAtPinnacle Jun 9, 2026
cfbac0b
LEGPROG-224: Post-Acquisition Optimizations (#1655)
johnbritton Jun 9, 2026
323715d
LEGLINK-376: Enhance pie chart with configurable color mapping in acq…
MikeAtPinnacle Jun 11, 2026
0c401bf
LEGLINK-15: MeasureEval - Add Meta MeasureReport profile for each eva…
arianamihailescu Jun 11, 2026
19cf5f5
LEGLINK-385: Validate Invalid URL Format Is Rejected When Adding Exte…
smailliwcs Jun 12, 2026
eadc22a
LEGLINK-99: API Health Test Automation (#1657)
nvmLantana Jun 15, 2026
27d2c4b
LEGLINK-405: Sequence Patient File Uploads (#1662)
nvmLantana Jun 15, 2026
69a4ccd
LEGLINK-481: Fix Grafana URL, Add Reason Column to API Health tables …
nvmLantana Jun 15, 2026
a4ca83a
LEGLINK-414: Admin UI showing Cache status as "N/A" for Java service …
arianamihailescu Jun 15, 2026
a441423
LEGLINK-483: Request & Response Body, Special Characters, Ongoing Tes…
nvmLantana Jun 16, 2026
3d4b0dd
LEGLINK-486: Optimize Scenario Run Workflow (#1669)
nvmLantana Jun 16, 2026
4f6d4ab
LEGLINK-366: Admin UI: Streamline process for manually configuring re…
smailliwcs Jun 16, 2026
0e1d1b6
LEGLINK-414: Admin UI showing Cache status as "N/A" for services impa…
johnbritton Jun 16, 2026
97411b4
LEGLINK-482: Improve State Management for Scenario and API runs (#1672)
nvmLantana Jun 16, 2026
84511ec
LEGLINK-494: Enhancements to Health checks for both Measure Eval and …
arianamihailescu Jun 17, 2026
7497518
LEGLINK-486: Optimize Storage of Run Data and Run Kick-Off (#1673)
nvmLantana Jun 18, 2026
9b6c69a
LEGLINK-374: Dev - Prevent "Access Control: Missing URL Normalization…
smailliwcs Jun 18, 2026
c9bce6f
LEGLINK-482: Enhanced Request/Response Body Capture (#1679)
nvmLantana Jun 23, 2026
08ed030
TECH_DEBT: Adopt Central Package Management (#1682)
MikeAtPinnacle Jun 23, 2026
c9fb6ac
LEGLINK-516: Automation.UI Do not persist full ABS Data (#1683)
nvmLantana Jun 24, 2026
7e51900
TECH_DEBT: Persist `fhir_server` data to volume (#1687)
smailliwcs Jun 24, 2026
d3470ee
LEGLINK-518: Align Chart/Graph colors with Pill Status colors (#1688)
nvmLantana Jun 24, 2026
ee1fb9d
LEGLINK-119: Implement cancelation token support in kafka event consu…
smailliwcs Jun 25, 2026
7ff5c29
LEGPROG-238: Submission Update to Support June Release (#1691)
smailliwcs Jun 25, 2026
7ba54e4
LEGLINK-361: Automaton.UI App Registration Consumption (#1685)
nvmLantana Jun 29, 2026
cdc2e8c
LEGLINK-497: Admin UI: Creating duplicate Removal Operations should n…
smailliwcs Jun 30, 2026
cf7e5b4
LEGLINK-564: Prevent duplicate resources in ABSResourceCache.cs (#1696)
johnbritton Jul 1, 2026
a9561a7
LEGLINK-541: Ingest CodeSystem status column and add cached-code look…
MikeAtPinnacle Jul 1, 2026
1f00ea3
LEGLINK-560: Surface inactive-code warning in code system validation …
MikeAtPinnacle Jul 2, 2026
eb5d8c0
TECH_DEBT: Guard OCE catch blocks (#1701)
smailliwcs Jul 2, 2026
a418930
LEGLINK-470: Parse CodeSystem CSV status column case-insensitively (#…
MikeAtPinnacle Jul 6, 2026
fc1fa12
LEGLINK-591: Return Problem Details for cached CodeSystem code lookup…
MikeAtPinnacle Jul 6, 2026
dee9983
LEGLINK-273: Update Audience For Bearer Token (#1709)
nvmLantana Jul 6, 2026
c6ddf34
LEGLINK-531: Update Report Schedule Test (#1708)
nvmLantana Jul 7, 2026
7a571e7
LEGLINK-600: Resolve versioned canonical URLs in terminology code-gro…
MikeAtPinnacle Jul 7, 2026
0530c70
LEGLINK-601: Register in-memory terminology support as a fallback in …
MikeAtPinnacle Jul 7, 2026
087393c
LEGLINK-602: Fix inverted-OR categorization matchers producing false …
MikeAtPinnacle Jul 7, 2026
ad15d8d
LEGLINK-616: Add support/handling for PatientAggregator:IncludeOrgani…
nvmLantana Jul 8, 2026
67a7eca
LEGLINK-618: Reduce PR noise and 'Skip Test' noise in TestAutomation …
nvmLantana Jul 8, 2026
5e10183
LEGLINK-618: Fix Morning Run (#1722)
nvmLantana Jul 9, 2026
9c34da6
LEGLINK-618: Test Not Triggering on Test Deploy (#1725)
nvmLantana Jul 9, 2026
3a8ae1c
LEGLINK-618: Fix Variable Parse Error (#1726)
nvmLantana Jul 9, 2026
0fdb526
LEGLINK-618: Summary Step of Pipeline to Use Environment Variables (#…
nvmLantana Jul 9, 2026
442c365
LEGLINK-618: Fix the URL/Variable for Test Trigger (#1729)
nvmLantana Jul 9, 2026
fcd2250
LEGLINK-591: Add ProblemDetails and status code pages for Terminology…
johnbritton Jul 9, 2026
51c58ee
LEGLINK-599: If CSV file contains duplicate codes w/ diff statuses, "…
johnbritton Jul 9, 2026
49e7277
LEGLINK-548: Add Inpatient Pattern Configuration to UI (#1733)
nvmLantana Jul 10, 2026
b845aba
LEGLINK-616: Update reading logic for PatientAggregator:IncludeOrgani…
nvmLantana Jul 13, 2026
ad35a42
LEGLINK-635: Update AdminBFF Auth, Build AdminBff into LinkSdk. (#1736)
nvmLantana Jul 13, 2026
7820f69
LEGLINK-633: Terminology performance fix (#1735)
johnbritton Jul 13, 2026
1735401
LEGLINK-497: Admin UI: Creating duplicate Removal Operations should n…
smailliwcs Jul 14, 2026
690ba6c
LEGLINK-635: Automation.UI Auth with AdminBff (#1738)
nvmLantana Jul 14, 2026
71208c0
LEGLINK-564: Fix duplicate resources in ResourcesNormalized when usin…
johnbritton Jul 15, 2026
a0c1314
LEGPROG-227: Location OrgID Resolution (#1743)
johnbritton Jul 16, 2026
ea525ac
LEGLINK-505: Automation.UI - Normalization Suites (#1742)
nvmLantana Jul 17, 2026
1819edc
LEGLINK-634: Fix reading/writing from/to Redis when Redis is slow or …
arianamihailescu Jul 17, 2026
dd65743
LEGLINK-769: Automation.UI - Change Loki Scraping Approach for Normal…
nvmLantana Jul 20, 2026
136984a
LEGLINK-769: Loki App Configuration Point (#1746)
nvmLantana Jul 20, 2026
091451c
LEGLINK-627: Enhance the Automation.UI ADO pipeline (#1747)
nvmLantana Jul 21, 2026
28dc61b
LEGLINK-580: Surface and categorize inactive codes end-to-end (#1718)
MikeAtPinnacle Jul 21, 2026
1207f03
LEGLINK-524: Static code scan fixes (#1748)
johnbritton Jul 21, 2026
befb693
LEGLINK-649: Enable Http client retries when terminology server is do…
arianamihailescu Jul 21, 2026
dd10e21
TECH_DEBT: Structured CQL debug output for measureeval $evaluate (#1668)
c-schuler Jul 21, 2026
419cdf3
LEGLINK-562: Submission: Enable dQM specific submissions (#1751)
smailliwcs Jul 22, 2026
8d2df47
TECH_DEBT: Update versions to 0.7.0 (#1752)
johnbritton Jul 22, 2026
c949280
TECH_DEBT: Update /docs (#1760) (#1762)
johnbritton Jul 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
55 changes: 55 additions & 0 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
language: "en-US"
early_access: false
knowledge_base:
web_search:
enabled: true
code_guidelines:
enabled: true
filePatterns:
- AGENTS.md
reviews:
profile: "chill"
request_changes_workflow: false
auto_review:
auto_incremental_review: false
base_branches:
- "main"
- "dev"
- "release/.*"
path_instructions:
- path: "**/*.cs"
instructions: |
The `HtmlInputSanitizer` class's `Sanitize()` and `SanitizeAndRemove()` methods should be used when dealing with `string` query parameters from REST requests.
- path: "**/*.cs"
instructions: |
Double-check `CancellationToken` plumbing. Flag any of the following:
- An `async` method that does not accept a `CancellationToken` parameter when one is reasonably available from the caller (HTTP endpoints, Kafka consumers/listeners,
Quartz jobs via `IJobExecutionContext.CancellationToken`, background services' `stoppingToken`, `ExecuteAsync` overrides, etc.).
- A method that accepts a `CancellationToken` but does not forward it to every call it makes that has a `CancellationToken` overload
(e.g., `HttpClient.GetAsync`/`PostAsync`/`SendAsync`, `HttpContent.ReadAsStringAsync`/`ReadAsStreamAsync`, `DbContext.SaveChangesAsync`,
EF Core async LINQ operators `ToListAsync`/`FirstOrDefaultAsync`/`AnyAsync`/`CountAsync`, `Stream.ReadAsync`/`WriteAsync`, `Task.Delay`,
`SemaphoreSlim.WaitAsync`, `Channel`/`BlockingCollection` async APIs, `IProducer.Flush`, Polly policies, MediatR `Send`/`Publish`, gRPC client calls, etc.).
- Use of `CancellationToken.None` or `default` inside a method that already has a `CancellationToken` in scope — call it out and ask why the ambient token is not used.
- A timeout-only `CancellationTokenSource` (e.g., `new CancellationTokenSource(TimeSpan.FromSeconds(...))`) whose token is passed to downstream calls without being
linked to the caller's `CancellationToken` via `CancellationTokenSource.CreateLinkedTokenSource(callerToken, timeoutCts.Token)`. Either signal should be honored.
- A long-running loop (per-patient, per-row, per-batch) that does not at least call `cancellationToken.ThrowIfCancellationRequested()` per iteration when the inner
operation has no `CancellationToken` overload (e.g., `IProducer<K,V>.Produce`).
- Public APIs on services/managers/repositories where adding an optional `CancellationToken cancellationToken = default` parameter would improve cooperative
cancellation without breaking existing callers — suggest adding it.
When flagging, prefer concrete suggestions showing how to thread the token through rather than generic comments.
- path: "**"
instructions: |
Pull requests that have "TECH_DEBT" in the title should only contain changes related to typos, unused code, linter/IDE suggestions, swagger specification updates,
and logging improvements. These TECH_DEBT PRs must not affect core functionality. All PRs that are not considered technical debt must include information on what
testing was performed in the description of the PR. If it does not, ask the author to provide details on what testing was performed.
When reviewing code, suggest unit tests using XUnit in the following scenarios:
- If/Else or Switch/Case blocks are introduced or modified — ensure each branch has a corresponding unit test.
- Logic that depends on service or interface configuration — suggest tests to validate different implementations are correctly resolved.
- No network activity (HTTP calls, sockets, etc.) should appear in unit tests. Recommend using mocks (via Moq) for any external communication.
Large unit tests should be avoided; keeping unit tests small and focused on targeted business logic (i.e. string sanitization)
All logging message arguments must be sanitized before they are passed to logger methods to avoid static code scanning security/vulnerability findings.

**App Config Check**:
If new required configuration keys (that don't have default values) are introduced, verify if new configuration keys have been added. If new required configuration keys are introduced, ensure that the
root-level `/app-config.yaml` file has been updated to include these new keys with appropriate descriptions. If `/app-config.yaml` is not updated
when new configuration is added, flag this as a required change and recommend blocking the PR until the configuration is documented in `/app-config.yaml`.
37 changes: 37 additions & 0 deletions .docker/collector.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
receivers:
otlp:
protocols:
grpc:

exporters:
otlp/tempo:
endpoint: tempo:4417
tls:
insecure: true

prometheus:
endpoint: "0.0.0.0:8889"
const_labels:
label1: value1

processors:
batch:

extensions:
health_check:
pprof:
endpoint: :1888
zpages:
endpoint: :55679

service:
extensions: [pprof, zpages, health_check]
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [otlp/tempo]
metrics:
receivers: [otlp]
processors: [batch]
exporters: [prometheus]
10 changes: 10 additions & 0 deletions .docker/create-dbs.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'link-audit') CREATE DATABASE [link-audit];
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'link-census') CREATE DATABASE [link-census];
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'link-dataacquisition') CREATE DATABASE [link-dataacquisition];
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'link-normalization') CREATE DATABASE [link-normalization];
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'link-notification') CREATE DATABASE [link-notification];
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'link-tenant') CREATE DATABASE [link-tenant];
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'link-validation') CREATE DATABASE [link-validation];
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'link-querydispatch') CREATE DATABASE [link-querydispatch];
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'link-account') CREATE DATABASE [link-account];
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'link-submission') CREATE DATABASE [link-submission];
70 changes: 70 additions & 0 deletions .docker/grafana.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
apiVersion: 1
datasources:
- name: Loki
type: loki
access: proxy
orgId: 1
url: http://loki:3100
basicAuth: false
isDefault: true
version: 1
editable: true
jsonData:
maxLines: 1000
derivedFields:
- datasourceUid: Tempo
matcherRegex: .*TraceId\":"(\w{32}).*
name: TraceID
url: '$${__value.raw}'
- name: Tempo
type: tempo
access: proxy
orgId: 1
url: http://tempo:3200
basicAuth: false
isDefault: false
version: 1
editable: true
apiVersion: 1
uid: tempo
jsonData:
tracesToLogsV2:
# Field with an internal link pointing to a logs data source in Grafana.
# datasourceUid value must match the uid value of the logs data source.
datasourceUid: Loki
spanStartTimeShift: '1h'
spanEndTimeShift: '-1h'
tags: ['job', 'instance', 'pod', 'namespace']
filterByTraceID: false
filterBySpanID: false
customQuery: true
#query: 'TraceID="${__span.tags.method}"'
query: '{app="{Link-BoTW}"} |= `` | json | TraceId = `${__span.tags.traceId}`'
tracesToMetrics:
datasourceUid: Prometheus
spanStartTimeShift: '1h'
spanEndTimeShift: '-1h'
tags: [{ key: 'service.name', value: 'service' }, { key: 'job' }]
queries:
- name: 'Sample query'
query: 'sum(rate(process_runtime_dotnet_gc_committed_memory_size_bytes{$__tags}[5m]))'
serviceMap:
datasourceUid: Prometheus
nodeGraph:
enabled: true
search:
hide: false
lokiSearch:
datasourceUid: Loki
traceQuery:
timeShiftEnabled: true
spanStartTimeShift: '1h'
spanEndTimeShift: '-1h'
spanBar:
type: 'Tag'
tag: 'http.path'
- name: Prometheus
type: prometheus
url: http://prometheus:9090
access: proxy
editable: true
5 changes: 5 additions & 0 deletions .docker/kafka-client.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="user" \
password="password";
6 changes: 6 additions & 0 deletions .docker/prometheus.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
scrape_configs:
- job_name: 'otel-collector'
scrape_interval: 10s
static_configs:
- targets: ['otel-collector:8889']
- targets: ['otel-collector:8888']
48 changes: 48 additions & 0 deletions .docker/tempo.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
server:
http_listen_port: 3200

distributor:
receivers:
jaeger:
protocols:
thrift_http:
grpc:
thrift_binary:
thrift_compact:
zipkin:
otlp:
protocols:
http:
grpc:
endpoint: tempo:4417
opencensus:

ingester:
trace_idle_period: 10s
max_block_bytes: 1_000_000
max_block_duration: 5m

compactor:
compaction:
compaction_window: 1h
max_block_bytes: 100_000_000
block_retention: 1h
compacted_block_retention: 10m

storage:
trace:
backend: local
block:
bloom_filter_false_positive: .05
v2_index_downsample_bytes: 1000
v2_encoding: zstd
wal:
path: /tmp/tempo/wal
v2_encoding: snappy
local:
path: /tmp/tempo/blocks
pool:
max_workers: 100
queue_depth: 10000


21 changes: 18 additions & 3 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,19 @@
.docker/
.github/
.junie/
Azure_Pipelines/
docs/
Java/
**/*Tests/
Scripts/
Web/
**/.classpath
**/.coderabbit.yaml
**/.dockerignore
**/.editorconfig
**/.env
**/.git
**/.gitattributes
**/.gitignore
**/.project
**/.settings
Expand All @@ -12,16 +24,19 @@
**/*.dbmdl
**/*.jfm
**/azds.yaml
**/bin
**/bin/
**/charts
**/docker-compose*
**/Dockerfile*
**/node_modules
**/npm-debug.log
**/obj
**/obj/
**/secrets.dev.yaml
**/values.dev.yaml
**/.idea
*.iml
AGENTS.md
LICENSE
README.md
README.md
SECURITY.md
topics.txt
15 changes: 14 additions & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
@@ -1,4 +1,17 @@
[*.cs]
root = true

[*]
charset = utf-8

[*.md]
charset = utf-8-bom

[*.cs]
charset = utf-8-bom

# CS8603: Possible null reference return.
dotnet_diagnostic.CS8603.severity = silent

# CA2254: Template should be a static expression
dotnet_diagnostic.CA2254.severity = error
dotnet_diagnostic.CA2253.severity = error
22 changes: 22 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
LINK_DB_USER=link-db-user
LINK_DB_PASS=7h3I^xMY%cgO
REDIS_PASS=suT1ChwYtkwWfbV1bUfRvQZO1YNhNRMj
KAFKA_SASL_CLIENT_USER=user
KAFKA_SASL_CLIENT_PASSWORD=password
KAFKA_INTER_BROKER_USER=controller_user
KAFKA_INTER_BROKER_PASSWORD=controller_password
SFTP_USER=admin
SFTP_PASSWORD=password
AZURITE_ACCOUNT_KEY=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==
AZURITE_CONNECTION_STRING=DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=${AZURITE_ACCOUNT_KEY};BlobEndpoint=http://azurite:10000/devstoreaccount1
INTERNAL_BLOB_CONTAINER_NAME=internal
EXTERNAL_BLOB_CONTAINER_NAME=external
EXTERNAL_BLOB_FLATTEN_HIERARCHY=false
ISSUER_URI=https://oauth.nhsnlink.org/realms/NHSNLink

KafkaConnection__SaslUsername=${KAFKA_SASL_CLIENT_USER}
KafkaConnection__SaslPassword=${KAFKA_SASL_CLIENT_PASSWORD}
Redis__Password=${REDIS_PASS}
InternalBlobStorage__BlobContainerName=${INTERNAL_BLOB_CONTAINER_NAME}
ExternalBlobStorage__BlobContainerName=${EXTERNAL_BLOB_CONTAINER_NAME}
ExternalBlobStorage__FlattenHierarchy=${EXTERNAL_BLOB_FLATTEN_HIERARCHY}
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto
*.sh text eol=lf
/topics.txt text eol=lf

###############################################################################
# Set default behavior for command prompt diff.
Expand Down
Loading
Loading