@@ -169,7 +169,7 @@ TValueSetWorker = class (TFslObject)
169
169
function sizeInBytesV (magic : integer) : cardinal; override;
170
170
procedure listDisplays (displays : TCodeDisplays; cs : TCodeSystemProvider; c: TCodeSystemProviderContext); overload;
171
171
procedure listDisplays (displays : TCodeDisplays; c: TFhirCodeSystemConceptW); overload;
172
- procedure listDisplays (displays: TCodeDisplays; c: TFhirValueSetComposeIncludeConceptW); overload;
172
+ procedure listDisplays (displays: TCodeDisplays; c: TFhirValueSetComposeIncludeConceptW; vs : TFHIRValueSetW ); overload;
173
173
public
174
174
constructor Create(factory : TFHIRFactory; getVS: TGetValueSetEvent; getCS : TGetProviderEvent; getVersions : TGetSystemVersionsEvent; txResources : TFslMetadataResourceList; languages : TIETFLanguageDefinitions); overload;
175
175
destructor Destroy; override;
@@ -185,7 +185,7 @@ TValueSetChecker = class (TValueSetWorker)
185
185
function determineSystem (code : String) : String;
186
186
function check (system, version, code : String; abstractOk, implySystem : boolean; displays : TCodeDisplays; var message, ver : String; var cause : TFhirIssueType; op : TFhirOperationOutcomeW; var contentMode : TFhirCodeSystemContentMode) : boolean; overload;
187
187
function findCode (cs : TFhirCodeSystemW; code: String; list : TFhirCodeSystemConceptListW; displays : TCodeDisplays; out isabstract : boolean): boolean;
188
- function checkConceptSet (cs: TCodeSystemProvider; cset : TFhirValueSetComposeIncludeW; code : String; abstractOk : boolean; displays : TCodeDisplays; var message : String) : boolean;
188
+ function checkConceptSet (cs: TCodeSystemProvider; cset : TFhirValueSetComposeIncludeW; code : String; abstractOk : boolean; displays : TCodeDisplays; vs : TFHIRValueSetW; var message : String) : boolean;
189
189
procedure prepareConceptSet (desc: string; cc: TFhirValueSetComposeIncludeW);
190
190
function getName : String;
191
191
protected
@@ -220,7 +220,7 @@ TFHIRValueSetExpander = class (TValueSetWorker)
220
220
procedure handleDefine (cs : TFhirCodeSystemW; list : TFslList<TFhirValueSetExpansionContainsW>; map : TFslMap<TFhirValueSetExpansionContainsW>; limitCount : integer; source : TFhirValueSetCodeSystemW; defines : TFhirCodeSystemConceptListW; filter : TSearchFilterText; expansion : TFhirValueSetExpansionW; imports : TFslList<TFHIRImportedValueSet>);
221
221
procedure importValueSet (list : TFslList<TFhirValueSetExpansionContainsW>; map : TFslMap<TFhirValueSetExpansionContainsW>; vs : TFHIRValueSetW; expansion : TFhirValueSetExpansionW; imports : TFslList<TFHIRImportedValueSet>; offset : integer);
222
222
procedure excludeValueSet (list: TFslList<TFhirValueSetExpansionContainsW>; map: TFslMap<TFhirValueSetExpansionContainsW>; vs : TFHIRValueSetW; expansion : TFhirValueSetExpansionW; imports : TFslList<TFHIRImportedValueSet>; offset : integer);
223
- procedure processCodes (doDelete : boolean; list : TFslList<TFhirValueSetExpansionContainsW>; map : TFslMap<TFhirValueSetExpansionContainsW>; limitCount : integer; cset : TFhirValueSetComposeIncludeW; filter : TSearchFilterText; dependencies : TStringList; expansion : TFhirValueSetExpansionW; var notClosed : boolean);
223
+ procedure processCodes (doDelete : boolean; list : TFslList<TFhirValueSetExpansionContainsW>; map : TFslMap<TFhirValueSetExpansionContainsW>; limitCount : integer; cset : TFhirValueSetComposeIncludeW; vsSrc : TFHIRValueSetW; filter : TSearchFilterText; dependencies : TStringList; expansion : TFhirValueSetExpansionW; var notClosed : boolean);
224
224
procedure handleCompose (list : TFslList<TFhirValueSetExpansionContainsW>; map : TFslMap<TFhirValueSetExpansionContainsW>; limitCount : integer; source : TFhirValueSetW; filter : TSearchFilterText; dependencies : TStringList; expansion : TFhirValueSetExpansionW; var notClosed : boolean);
225
225
226
226
function passesImports (imports : TFslList<TFHIRImportedValueSet>; system, code : String; offset : integer) : boolean;
@@ -769,7 +769,7 @@ function TValueSetChecker.check(system, version, code : String; abstractOk, impl
769
769
raise ETerminologyError.create(' Value Set Validation depends on supplement ' +s+' on ' +cs.systemUri(nil )+' that is not known' );
770
770
end ;
771
771
772
- result := ((system = SYSTEM_NOT_APPLICABLE) or (cs.systemUri(nil ) = system)) and checkConceptSet(cs, cc, code, abstractOk, displays, message);
772
+ result := ((system = SYSTEM_NOT_APPLICABLE) or (cs.systemUri(nil ) = system)) and checkConceptSet(cs, cc, code, abstractOk, displays, FValueSet, message);
773
773
end
774
774
else
775
775
result := false;
@@ -799,7 +799,7 @@ function TValueSetChecker.check(system, version, code : String; abstractOk, impl
799
799
if not cs.hasSupplement(s) then
800
800
raise ETerminologyError.create(' Value Set Validation depends on supplement ' +s+' on ' +cs.systemUri(nil )+' that is not known' );
801
801
end ;
802
- excluded := ((system = SYSTEM_NOT_APPLICABLE) or (cs.systemUri(nil ) = system)) and checkConceptSet(cs, cc, code, abstractOk, displays, message);
802
+ excluded := ((system = SYSTEM_NOT_APPLICABLE) or (cs.systemUri(nil ) = system)) and checkConceptSet(cs, cc, code, abstractOk, displays, FValueSet, message);
803
803
end ;
804
804
for s in cc.valueSets do
805
805
begin
@@ -1082,7 +1082,7 @@ function TValueSetChecker.check(system, version, code: String; implySystem : boo
1082
1082
cs.Close(ctxt);
1083
1083
end ;
1084
1084
1085
- function TValueSetChecker.checkConceptSet (cs: TCodeSystemProvider; cset : TFhirValueSetComposeIncludeW; code: String; abstractOk : boolean; displays : TCodeDisplays; var message : String): boolean;
1085
+ function TValueSetChecker.checkConceptSet (cs: TCodeSystemProvider; cset : TFhirValueSetComposeIncludeW; code: String; abstractOk : boolean; displays : TCodeDisplays; vs : TFHIRValueSetW; var message : String): boolean;
1086
1086
var
1087
1087
i : integer;
1088
1088
fc : TFhirValueSetComposeIncludeFilterW;
@@ -1117,7 +1117,7 @@ function TValueSetChecker.checkConceptSet(cs: TCodeSystemProvider; cset : TFhirV
1117
1117
if Loc <> nil then
1118
1118
begin
1119
1119
listDisplays(displays, cs, loc);
1120
- listDisplays(displays, cc);
1120
+ listDisplays(displays, cc, vs );
1121
1121
result := (abstractOk or not cs.IsAbstract(loc));
1122
1122
cs.close(loc);
1123
1123
exit;
@@ -1463,9 +1463,9 @@ procedure TFHIRValueSetExpander.handleCompose(list: TFslList<TFhirValueSetExpans
1463
1463
checkSource(c, expansion, limitCount, filter);
1464
1464
1465
1465
for c in source.includes.forEnum do
1466
- processCodes(false, list, map, limitCount, c, filter, dependencies, expansion, notClosed);
1466
+ processCodes(false, list, map, limitCount, c, source, filter, dependencies, expansion, notClosed);
1467
1467
for c in source.excludes.forEnum do
1468
- processCodes(true, list, map, limitCount, c, filter, dependencies, expansion, notClosed);
1468
+ processCodes(true, list, map, limitCount, c, source, filter, dependencies, expansion, notClosed);
1469
1469
end ;
1470
1470
1471
1471
procedure TFHIRValueSetExpander.handleDefine (cs : TFhirCodeSystemW; list : TFslList<TFhirValueSetExpansionContainsW>; map : TFslMap<TFhirValueSetExpansionContainsW>; limitCount : integer; source : TFhirValueSetCodeSystemW; defines : TFhirCodeSystemConceptListW; filter : TSearchFilterText; expansion : TFhirValueSetExpansionW; imports : TFslList<TFHIRImportedValueSet>);
@@ -1506,11 +1506,16 @@ procedure TValueSetWorker.listDisplays(displays : TCodeDisplays; c: TFhirCodeSys
1506
1506
displays.see(ccd.language, ccd.value );
1507
1507
end ;
1508
1508
1509
- procedure TValueSetWorker.listDisplays (displays : TCodeDisplays; c: TFhirValueSetComposeIncludeConceptW);
1509
+ procedure TValueSetWorker.listDisplays (displays : TCodeDisplays; c: TFhirValueSetComposeIncludeConceptW; vs : TFHIRValueSetW );
1510
1510
var
1511
1511
cd : TFhirValueSetComposeIncludeConceptDesignationW;
1512
1512
first : boolean;
1513
1513
begin
1514
+ if c.display <> ' ' then
1515
+ begin
1516
+ displays.Clear;
1517
+ displays.see(vs.language, c.display, true);
1518
+ end ;
1514
1519
first := true;
1515
1520
for cd in c.designations.forEnum do
1516
1521
begin
@@ -1813,7 +1818,7 @@ procedure TFHIRValueSetExpander.checkSource(cset: TFhirValueSetComposeIncludeW;
1813
1818
end ;
1814
1819
end ;
1815
1820
1816
- procedure TFHIRValueSetExpander.processCodes (doDelete : boolean; list: TFslList<TFhirValueSetExpansionContainsW>; map: TFslMap<TFhirValueSetExpansionContainsW>; limitCount : integer; cset: TFhirValueSetComposeIncludeW; filter : TSearchFilterText; dependencies : TStringList; expansion : TFhirValueSetExpansionW; var notClosed : boolean);
1821
+ procedure TFHIRValueSetExpander.processCodes (doDelete : boolean; list: TFslList<TFhirValueSetExpansionContainsW>; map: TFslMap<TFhirValueSetExpansionContainsW>; limitCount : integer; cset: TFhirValueSetComposeIncludeW; vsSrc : TFHIRValueSetW; filter : TSearchFilterText; dependencies : TStringList; expansion : TFhirValueSetExpansionW; var notClosed : boolean);
1817
1822
var
1818
1823
cs : TCodeSystemProvider;
1819
1824
i, count, offset : integer;
@@ -1986,7 +1991,7 @@ procedure TFHIRValueSetExpander.processCodes(doDelete : boolean; list: TFslList<
1986
1991
if (cctxt <> nil ) and (not FParams.activeOnly or not cs.IsInactive(cctxt)) and passesFilters(cctxt, 0 ) then
1987
1992
begin
1988
1993
listDisplays(cds, cs, cctxt);
1989
- listDisplays(cds, cc);
1994
+ listDisplays(cds, cc, vsSrc );
1990
1995
if filter.passes(cds) or filter.passes(cc.code) then
1991
1996
processCode(doDelete, limitCount, list, map, cs.systemUri(nil ), cs.version(nil ), cc.code, cds, cs.Definition(cctxt), expansion, valueSets);
1992
1997
end ;
0 commit comments