Skip to content

Commit 510cef7

Browse files
Merge branch 'dev' of https://github.com/lantanagroup/link-cloud into user/ariana/LEGLINK-961-MeasureEval-handleFhirResourceswithIdenticalds
2 parents ec42029 + 6e3bbc1 commit 510cef7

2 files changed

Lines changed: 70 additions & 1 deletion

File tree

DotNet/ServiceTests/UnitTests/Terminology/Services/FhirServiceTests.cs

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1394,6 +1394,69 @@ public void GetValueSets_ReturnsListOfValueSets()
13941394

13951395
#region GetCodeSystems Tests
13961396

1397+
[Fact]
1398+
public void GetCodeSystemById_WithCachedCodes_SetsContentToComplete()
1399+
{
1400+
// Arrange
1401+
var codeSystemId = "test-code-system";
1402+
var codeSystem = new CodeSystem
1403+
{
1404+
Id = codeSystemId,
1405+
Content = CodeSystemContentMode.NotPresent
1406+
};
1407+
var mockCodeGroup = new CodeGroup
1408+
{
1409+
Id = codeSystemId,
1410+
Type = CodeGroup.CodeGroupTypes.CodeSystem,
1411+
Resource = codeSystem,
1412+
Codes = new Dictionary<string, List<Code>>
1413+
{
1414+
{ "http://test.system", new List<Code> { new() { Value = "test-code", Display = "Test Code" } } }
1415+
}
1416+
};
1417+
1418+
_mockCacheService
1419+
.Setup(x => x.GetCodeGroupById(CodeGroup.CodeGroupTypes.CodeSystem, codeSystemId, It.IsAny<string>()))
1420+
.Returns(mockCodeGroup);
1421+
1422+
// Act
1423+
var result = _service.GetCodeSystemById(codeSystemId);
1424+
1425+
// Assert
1426+
Assert.NotNull(result);
1427+
Assert.Equal(CodeSystemContentMode.Complete, result.Content);
1428+
}
1429+
1430+
[Fact]
1431+
public void GetCodeSystemById_WithoutCachedCodes_PreservesContentMode()
1432+
{
1433+
// Arrange
1434+
var codeSystemId = "test-empty-code-system";
1435+
var codeSystem = new CodeSystem
1436+
{
1437+
Id = codeSystemId,
1438+
Content = CodeSystemContentMode.NotPresent
1439+
};
1440+
var mockCodeGroup = new CodeGroup
1441+
{
1442+
Id = codeSystemId,
1443+
Type = CodeGroup.CodeGroupTypes.CodeSystem,
1444+
Resource = codeSystem,
1445+
Codes = new Dictionary<string, List<Code>>()
1446+
};
1447+
1448+
_mockCacheService
1449+
.Setup(x => x.GetCodeGroupById(CodeGroup.CodeGroupTypes.CodeSystem, codeSystemId, It.IsAny<string>()))
1450+
.Returns(mockCodeGroup);
1451+
1452+
// Act
1453+
var result = _service.GetCodeSystemById(codeSystemId);
1454+
1455+
// Assert
1456+
Assert.NotNull(result);
1457+
Assert.Equal(CodeSystemContentMode.NotPresent, result.Content);
1458+
}
1459+
13971460
[Fact]
13981461
public void GetCodeSystems_WithDuplicateCode_EmitsSingleConceptWithLastDisplay()
13991462
{

DotNet/Terminology/Services/FhirService.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,11 @@ public CodeSystem GetCodeSystemById(string id)
183183
throw new KeyNotFoundException($"Code system not found with ID {id}");
184184
}
185185

186-
return codeGroup.Resource as CodeSystem;
186+
var codeSystem = codeGroup.Resource as CodeSystem;
187+
if(codeSystem != null && codeSystem.Content == CodeSystemContentMode.NotPresent && codeGroup.Codes.Values.Any(c => c.Count > 0))
188+
codeSystem.Content = CodeSystemContentMode.Complete;
189+
190+
return codeSystem;
187191
}
188192

189193
public Bundle GetCodeSystems(string? url, SummaryType? summary)
@@ -212,6 +216,8 @@ public Bundle GetCodeSystems(string? url, SummaryType? summary)
212216
}
213217

214218
CodeSystem clone = (CodeSystem)codeGroup.Resource.DeepCopy();
219+
if (clone.Content == CodeSystemContentMode.NotPresent && codeGroup.Codes.Values.Any(c => c.Count > 0))
220+
clone.Content = CodeSystemContentMode.Complete;
215221

216222
if (summary != SummaryType.True)
217223
{

0 commit comments

Comments
 (0)