Skip to content

Commit 71ecdb3

Browse files
author
Grahame Grieve
committed
Add support for batch-validate-code
1 parent 846bff7 commit 71ecdb3

8 files changed

Lines changed: 488 additions & 95 deletions

File tree

library/fhir/fhir_tx.pas

Lines changed: 75 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,10 @@ TFHIRTxOperationParams = class (TFslObject)
144144
public
145145
constructor Create(Languages : TIETFLanguageDefinitions);
146146
destructor Destroy; override;
147-
function link : TFHIRTxOperationParams;
147+
function link : TFHIRTxOperationParams; overload;
148148

149+
function clone : TFHIRTxOperationParams; overload;
150+
procedure assign(other : TFslObject); override;
149151
class function defaultProfile(langDefs : TIETFLanguageDefinitions) : TFHIRTxOperationParams;
150152

151153
procedure seeParameter(name : String; value : TFHIRObject; isValidation, overwrite : boolean);
@@ -992,6 +994,78 @@ function TFHIRTxOperationParams.link: TFHIRTxOperationParams;
992994
result := TFHIRTxOperationParams(inherited Link);
993995
end;
994996

997+
function TFHIRTxOperationParams.clone: TFHIRTxOperationParams;
998+
begin
999+
result := TFHIRTxOperationParams(inherited clone);
1000+
1001+
end;
1002+
1003+
procedure TFHIRTxOperationParams.assign(other: TFslObject);
1004+
var
1005+
o : TFHIRTxOperationParams;
1006+
begin
1007+
inherited assign(other);
1008+
o := other as TFHIRTxOperationParams;
1009+
FLanguages := o.FLanguages.link;
1010+
FVersionRules.addAll(o.FVersionRules);
1011+
if (o.FValueSetVersionRules <> nil) then
1012+
begin
1013+
FValueSetVersionRules := TStringList.create;
1014+
FValueSetVersionRules.AddStrings(o.FValueSetVersionRules);
1015+
end;
1016+
FactiveOnly := o.FactiveOnly;
1017+
FexcludeNested := o.FexcludeNested;
1018+
FGenerateNarrative := o.FGenerateNarrative;
1019+
FlimitedExpansion := o.FlimitedExpansion;
1020+
FexcludeNotForUI := o.FexcludeNotForUI;
1021+
FexcludePostCoordinated := o.FexcludePostCoordinated;
1022+
FincludeDesignations := o.FincludeDesignations;
1023+
FincludeDefinition := o.FincludeDefinition;
1024+
FUid := o.FUid;
1025+
FMembershipOnly := o.FMembershipOnly;
1026+
FDefaultToLatestVersion := o.FDefaultToLatestVersion;
1027+
FIncompleteOK := o.FIncompleteOK;
1028+
FDisplayWarning := o.FDisplayWarning;
1029+
FDiagnostics := o.FDiagnostics;
1030+
FHasactiveOnly := o.FHasactiveOnly;
1031+
FHasExcludeNested := o.FHasExcludeNested;
1032+
FHasGenerateNarrative := o.FHasGenerateNarrative;
1033+
FHasLimitedExpansion := o.FHasLimitedExpansion;
1034+
1035+
FHesExcludeNotForUI := o.FHesExcludeNotForUI;
1036+
FHasExcludePostCoordinated := o.FHasExcludePostCoordinated;
1037+
FHasIncludeDesignations := o.FHasIncludeDesignations;
1038+
FHasIncludeDefinition := o.FHasIncludeDefinition;
1039+
FHasDefaultToLatestVersion := o.FHasDefaultToLatestVersion;
1040+
FHasIncompleteOK := o.FHasIncompleteOK;
1041+
FHasexcludeNotForUI := o.FHasIncompleteOK;
1042+
FHasMembershipOnly := o.FHasMembershipOnly;
1043+
FHasDisplayWarning := o.FHasDisplayWarning;
1044+
if (o.FAltCodeRules <> nil) then
1045+
begin
1046+
FAltCodeRules := TAlternateCodeOptions.create;
1047+
FAltCodeRules.all := o.FAltCodeRules.all;
1048+
FAltCodeRules.useTypes.AddStrings(o.FAltCodeRules.useTypes);
1049+
end;
1050+
1051+
if (o.FProperties <> nil) then
1052+
begin
1053+
FProperties := TStringList.create;
1054+
FProperties.AddStrings(o.FProperties);
1055+
end;
1056+
1057+
if (o.FDesignations <> nil) then
1058+
begin
1059+
FDesignations := TStringList.create;
1060+
FDesignations.AddStrings(o.FDesignations);
1061+
end;
1062+
1063+
if o.FHTTPLanguages <> nil then
1064+
FHTTPLanguages := o.FHTTPLanguages.clone;
1065+
if o.FDisplayLanguages <> nil then
1066+
FDisplayLanguages := o.FHTTPLanguages.clone;
1067+
end;
1068+
9951069

9961070
{ TFhirExpansionParamsVersionRule }
9971071

library/fsl/fsl_http.pas

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,8 @@ THTTPLanguageList = class (TFslObject)
166166
constructor Create(definitions: TIETFLanguageDefinitions; source : String; wildcard : boolean);
167167
destructor Destroy; override;
168168
function link : THTTPLanguageList; overload;
169+
function clone : THTTPLanguageList; overload;
170+
procedure assign(other : TFslObject); override;
169171

170172
class function defaultLocal : THTTPLanguageList;
171173
class function defaultWeb : THTTPLanguageList;
@@ -691,6 +693,23 @@ function THTTPLanguageList.link: THTTPLanguageList;
691693
result := THTTPLanguageList(inherited Link);
692694
end;
693695

696+
function THTTPLanguageList.clone: THTTPLanguageList;
697+
begin
698+
result := THTTPLanguageList(inherited clone);
699+
end;
700+
701+
procedure THTTPLanguageList.assign(other: TFslObject);
702+
var
703+
o : THTTPLanguageList;
704+
begin
705+
inherited assign(other);
706+
o := other as THTTPLanguageList;
707+
FDefinitions := o.FDefinitions;
708+
FWildCard := o.FWildCard;
709+
FSource := o.FSource;
710+
FLangs.AddAll(o.FLangs);
711+
end;
712+
694713
class function THTTPLanguageList.defaultLocal: THTTPLanguageList;
695714
{$IFDEF FPC}
696715
var

server/endpoint_txsvr.pas

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1373,6 +1373,7 @@ function TTerminologyFhirServerStorage.createOperationContext(langList : THTTPLa
13731373
result.Operations.add(TFhirExpandValueSetOperation.create(FServerContext.Factory.link, FServerContext.TerminologyServer.Link, FServerContext.TerminologyServer.CommonTerminologies.Languages.link));
13741374
result.Operations.add(TFhirLookupCodeSystemOperation.create(FServerContext.Factory.link, FServerContext.TerminologyServer.Link, FServerContext.TerminologyServer.CommonTerminologies.Languages.link));
13751375
result.Operations.add(TFhirValueSetValidationOperation.create(FServerContext.Factory.link, FServerContext.TerminologyServer.Link, FServerContext.TerminologyServer.CommonTerminologies.Languages.link));
1376+
result.Operations.add(TFhirValueSetBatchValidationOperation.create(FServerContext.Factory.link, FServerContext.TerminologyServer.Link, FServerContext.TerminologyServer.CommonTerminologies.Languages.link));
13761377
result.Operations.add(TFhirConceptMapTranslationOperation.create(FServerContext.Factory.link, FServerContext.TerminologyServer.Link, FServerContext.TerminologyServer.CommonTerminologies.Languages.link));
13771378
result.Operations.add(TFhirConceptMapClosureOperation.create(FServerContext.Factory.link, FServerContext.TerminologyServer.Link, FServerContext.TerminologyServer.CommonTerminologies.Languages.link));
13781379
result.Operations.add(TFhirVersionsOperation.create(Factory.link, FServerContext.TerminologyServer.CommonTerminologies.Languages.link));
@@ -2136,16 +2137,24 @@ procedure TTerminologyServerWebServer.PopulateConformance(sender: TObject; conf:
21362137
begin
21372138
inherited PopulateConformance(sender, conf, secure, baseUrl, caps);
21382139
rr := conf.addResource('CodeSystem');
2139-
rr.addInteraction('read', 'Read a code system');
2140-
rr.addInteraction('search-type', 'Search the code systems. Not that there a few major code systems that are not available through this API (SCT, LOINC etc)');
2141-
rr.addOperation('validate-code', 'http://hl7.org/fhir/OperationDefinition/CodeSystem-validate-code', '');
2142-
rr.addOperation('lookup', 'http://hl7.org/fhir/OperationDefinition/CodeSystem-lookup', '');
2140+
try
2141+
rr.addInteraction('read', 'Read a code system');
2142+
rr.addInteraction('search-type', 'Search the code systems. Not that there a few major code systems that are not available through this API (SCT, LOINC etc)');
2143+
rr.addOperation('validate-code', 'http://hl7.org/fhir/OperationDefinition/CodeSystem-validate-code', '');
2144+
rr.addOperation('lookup', 'http://hl7.org/fhir/OperationDefinition/CodeSystem-lookup', '');
2145+
finally
2146+
rr.free;
2147+
end;
21432148

21442149
rr := conf.addResource('ValueSet');
2145-
rr.addInteraction('read', 'Read a ValueSet');
2146-
rr.addInteraction('search-type', 'Search the value sets');
2147-
rr.addOperation('validate-code', 'http://hl7.org/fhir/OperationDefinition/ValueSet-validate-code', '');
2148-
rr.addOperation('expand', 'http://hl7.org/fhir/OperationDefinition/ValueSet-expand', '');
2150+
try
2151+
rr.addInteraction('read', 'Read a ValueSet');
2152+
rr.addInteraction('search-type', 'Search the value sets');
2153+
rr.addOperation('validate-code', 'http://hl7.org/fhir/OperationDefinition/ValueSet-validate-code', '');
2154+
rr.addOperation('expand', 'http://hl7.org/fhir/OperationDefinition/ValueSet-expand', '');
2155+
finally
2156+
rr.free;
2157+
end;
21492158

21502159
conf.addInstantiates('http://hl7.org/fhir/CapabilityStatement/terminology-server');
21512160
conf.addTxFeature(TX_TESTS_VERSION);

server/operations_r3.pas

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -604,6 +604,7 @@ procedure TFhirNativeOperationEngineR3.registerOperations;
604604
FOperations.add(TFhirExpandValueSetOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
605605
FOperations.add(TFhirLookupCodeSystemOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
606606
FOperations.add(TFhirValueSetValidationOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
607+
FOperations.add(TFhirValueSetBatchValidationOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
607608
FOperations.add(TFhirConceptMapTranslationOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
608609
FOperations.add(TFhirConceptMapClosureOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
609610
FOperations.add(TFhirValidationOperation.Create(Factory.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));

server/operations_r4.pas

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -678,6 +678,7 @@ procedure TFhirNativeOperationEngineR4.registerOperations;
678678
FOperations.add(TFhirExpandValueSetOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
679679
FOperations.add(TFhirLookupCodeSystemOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
680680
FOperations.add(TFhirValueSetValidationOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
681+
FOperations.add(TFhirValueSetBatchValidationOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
681682
FOperations.add(TFhirConceptMapTranslationOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
682683
FOperations.add(TFhirConceptMapClosureOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
683684
FOperations.add(TFhirValidationOperation.Create(Factory.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));

server/operations_r4b.pas

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,7 @@ procedure TFhirNativeOperationEngineR4B.registerOperations;
664664
FOperations.add(TFhirExpandValueSetOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
665665
FOperations.add(TFhirLookupCodeSystemOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
666666
FOperations.add(TFhirValueSetValidationOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
667+
FOperations.add(TFhirValueSetBatchValidationOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
667668
FOperations.add(TFhirConceptMapTranslationOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
668669
FOperations.add(TFhirConceptMapClosureOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
669670
FOperations.add(TFhirValidationOperation.Create(Factory.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));

server/operations_r5.pas

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -655,6 +655,7 @@ procedure TFhirNativeOperationEngineR5.registerOperations;
655655
FOperations.add(TFhirExpandValueSetOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.link));
656656
FOperations.add(TFhirLookupCodeSystemOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
657657
FOperations.add(TFhirValueSetValidationOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
658+
FOperations.add(TFhirValueSetBatchValidationOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
658659
FOperations.add(TFhirConceptMapTranslationOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
659660
FOperations.add(TFhirConceptMapClosureOperation.Create(Factory.link, ServerContext.TerminologyServer.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));
660661
FOperations.add(TFhirValidationOperation.Create(Factory.link, ServerContext.TerminologyServer.CommonTerminologies.Languages.Link));

0 commit comments

Comments
 (0)