fhir_client 1.6.3 → 1.6.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +34 -0
  3. data/.csslintrc +2 -0
  4. data/.eslintignore +1 -0
  5. data/.eslintrc +213 -0
  6. data/.rubocop.yml +1159 -0
  7. data/.travis.yml +8 -0
  8. data/Gemfile +5 -5
  9. data/Rakefile +14 -13
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/fhir_client.gemspec +34 -21
  13. data/lib/fhir_client.rb +13 -18
  14. data/lib/fhir_client/client.rb +533 -0
  15. data/lib/{client_exception.rb → fhir_client/client_exception.rb} +1 -3
  16. data/lib/{ext → fhir_client/ext}/bundle.rb +5 -7
  17. data/lib/{ext → fhir_client/ext}/model.rb +10 -2
  18. data/lib/fhir_client/ext/reference.rb +28 -0
  19. data/lib/{fhir_api_validation.json → fhir_client/fhir_api_validation.json} +0 -0
  20. data/lib/{model → fhir_client/model}/client_reply.rb +47 -51
  21. data/lib/{model → fhir_client/model}/tag.rb +6 -7
  22. data/lib/fhir_client/patch_format.rb +8 -0
  23. data/lib/{resource_address.rb → fhir_client/resource_address.rb} +135 -139
  24. data/lib/fhir_client/resource_format.rb +11 -0
  25. data/lib/{sections → fhir_client/sections}/crud.rb +28 -30
  26. data/lib/{sections → fhir_client/sections}/feed.rb +1 -4
  27. data/lib/{sections → fhir_client/sections}/history.rb +14 -15
  28. data/lib/{sections → fhir_client/sections}/operations.rb +22 -28
  29. data/lib/fhir_client/sections/search.rb +52 -0
  30. data/lib/{sections → fhir_client/sections}/tags.rb +12 -12
  31. data/lib/{sections → fhir_client/sections}/transactions.rb +17 -20
  32. data/lib/{sections → fhir_client/sections}/validate.rb +12 -15
  33. data/lib/{tasks → fhir_client/tasks}/tasks.rake +19 -18
  34. data/lib/fhir_client/version.rb +5 -0
  35. metadata +127 -83
  36. data/lib/client_interface.rb +0 -533
  37. data/lib/ext/reference.rb +0 -11
  38. data/lib/patch_format.rb +0 -10
  39. data/lib/resource_format.rb +0 -13
  40. data/lib/sections/search.rb +0 -53
  41. data/test/fixtures/bundle-example.xml +0 -79
  42. data/test/fixtures/parameters-example.json +0 -18
  43. data/test/fixtures/parameters-example.xml +0 -17
  44. data/test/test_helper.rb +0 -8
  45. data/test/unit/basic_test.rb +0 -17
  46. data/test/unit/bundle_test.rb +0 -21
  47. data/test/unit/parameters_test.rb +0 -44
@@ -0,0 +1,11 @@
1
+ module FHIR
2
+ module Formats
3
+ class ResourceFormat
4
+ RESOURCE_XML = 'application/fhir+xml'.freeze
5
+ RESOURCE_JSON = 'application/fhir+json'.freeze
6
+
7
+ RESOURCE_XML_DSTU2 = 'application/xml+fhir'.freeze
8
+ RESOURCE_JSON_DSTU2 = 'application/json+fhir'.freeze
9
+ end
10
+ end
11
+ end
@@ -1,11 +1,10 @@
1
1
  module FHIR
2
2
  module Sections
3
3
  module Crud
4
-
5
4
  #
6
5
  # Read the current state of a resource.
7
6
  #
8
- def read(klass, id, format=@default_format, summary=nil, options = {})
7
+ def read(klass, id, format = @default_format, summary = nil, options = {})
9
8
  options = { resource: klass, id: id, format: format }.merge(options)
10
9
  options[:summary] = summary if summary
11
10
  reply = get resource_url(options), fhir_headers(options)
@@ -17,7 +16,7 @@ module FHIR
17
16
  #
18
17
  # Read a resource bundle (an XML ATOM feed)
19
18
  #
20
- def read_feed(klass, format=@default_format)
19
+ def read_feed(klass, format = @default_format)
21
20
  options = { resource: klass, format: format }
22
21
  reply = get resource_url(options), fhir_headers(options)
23
22
  reply.resource = parse_reply(klass, format, reply)
@@ -28,8 +27,8 @@ module FHIR
28
27
  #
29
28
  # Read the state of a specific version of the resource
30
29
  #
31
- def vread(klass, id, version_id, format=@default_format)
32
- options = { resource: klass, id: id, format: format, history: {id: version_id} }
30
+ def vread(klass, id, version_id, format = @default_format)
31
+ options = { resource: klass, id: id, format: format, history: { id: version_id } }
33
32
  reply = get resource_url(options), fhir_headers(options)
34
33
  reply.resource = parse_reply(klass, format, reply)
35
34
  reply.resource_class = klass
@@ -49,22 +48,22 @@ module FHIR
49
48
  #
50
49
  # Update an existing resource by its id or create it if it is a new resource, not present on the server
51
50
  #
52
- def update(resource, id, format=@default_format)
51
+ def update(resource, id, format = @default_format)
53
52
  base_update(resource, id, nil, format)
54
53
  end
55
54
 
56
55
  #
57
56
  # Update an existing resource by its id or create it if it is a new resource, not present on the server
58
57
  #
59
- def conditional_update(resource, id, searchParams, format=@default_format)
58
+ def conditional_update(resource, id, search_params, format = @default_format)
60
59
  options = {
61
- :search => {
62
- :flag => false,
63
- :compartment => nil,
64
- :parameters => {}
60
+ search: {
61
+ flag: false,
62
+ compartment: nil,
63
+ parameters: {}
65
64
  }
66
65
  }
67
- searchParams.each do |key,value|
66
+ search_params.each do |key, value|
68
67
  options[:search][:parameters][key] = value
69
68
  end
70
69
  base_update(resource, id, options, format)
@@ -87,13 +86,13 @@ module FHIR
87
86
  #
88
87
  # Partial update using a patchset (PATCH)
89
88
  #
90
- def partial_update(klass, id, patchset, options={}, format=@default_format)
89
+ def partial_update(klass, id, patchset, options = {}, format = @default_format)
91
90
  options = { resource: klass, id: id, format: format }.merge options
92
91
 
93
- if (format == FHIR::Formats::ResourceFormat::RESOURCE_XML)
92
+ if format == FHIR::Formats::ResourceFormat::RESOURCE_XML
94
93
  options[:format] = FHIR::Formats::PatchFormat::PATCH_XML
95
94
  options[:Accept] = format
96
- elsif (format == FHIR::Formats::ResourceFormat::RESOURCE_JSON)
95
+ elsif format == FHIR::Formats::ResourceFormat::RESOURCE_JSON
97
96
  options[:format] = FHIR::Formats::PatchFormat::PATCH_JSON
98
97
  options[:Accept] = format
99
98
  end
@@ -107,7 +106,7 @@ module FHIR
107
106
  #
108
107
  # Delete the resource with the given ID.
109
108
  #
110
- def destroy(klass, id=nil, options={})
109
+ def destroy(klass, id = nil, options = {})
111
110
  options = { resource: klass, id: id, format: nil }.merge options
112
111
  reply = delete resource_url(options), fhir_headers(options)
113
112
  reply.resource_class = klass
@@ -118,17 +117,17 @@ module FHIR
118
117
  # Create a new resource with a server assigned id. Return the newly created
119
118
  # resource with the id the server assigned.
120
119
  #
121
- def create(resource, format=@default_format)
122
- base_create(resource, nil ,format)
120
+ def create(resource, format = @default_format)
121
+ base_create(resource, nil, format)
123
122
  end
124
123
 
125
124
  #
126
125
  # Conditionally create a new resource with a server assigned id.
127
126
  #
128
- def conditional_create(resource, ifNoneExistParameters, format=@default_format)
127
+ def conditional_create(resource, if_none_exist_parameters, format = @default_format)
129
128
  query = ''
130
- ifNoneExistParameters.each do |key,value|
131
- query += "#{key.to_s}=#{value.to_s}&"
129
+ if_none_exist_parameters.each do |key, value|
130
+ query += "#{key}=#{value}&"
132
131
  end
133
132
  query = query[0..-2] # strip off the trailing ampersand
134
133
  options = {}
@@ -145,16 +144,16 @@ module FHIR
145
144
  options[:resource] = resource.class
146
145
  options[:format] = format
147
146
  reply = post resource_url(options), resource, fhir_headers(options)
148
- if [200,201].include? reply.code
147
+ if [200, 201].include? reply.code
149
148
  type = reply.response[:headers][:content_type]
150
149
  if !type.nil?
151
- if type.include?('xml') && !reply.body.empty?
152
- reply.resource = resource.class.from_xml(reply.body)
153
- elsif type.include?('json') && !reply.body.empty?
154
- reply.resource = resource.class.from_fhir_json(reply.body)
155
- else
156
- reply.resource = resource # just send back the submitted resource
157
- end
150
+ reply.resource = if type.include?('xml') && !reply.body.empty?
151
+ resource.class.from_xml(reply.body)
152
+ elsif type.include?('json') && !reply.body.empty?
153
+ resource.class.from_fhir_json(reply.body)
154
+ else
155
+ resource # just send back the submitted resource
156
+ end
158
157
  else
159
158
  resource.id = FHIR::ResourceAddress.pull_out_id(resource.class.name.demodulize, reply.response[:headers]['location'])
160
159
  reply.resource = resource # don't know the content type, so return the resource provided
@@ -167,7 +166,6 @@ module FHIR
167
166
  reply.resource_class = resource.class
168
167
  reply
169
168
  end
170
-
171
169
  end
172
170
  end
173
171
  end
@@ -1,13 +1,12 @@
1
1
  module FHIR
2
2
  module Sections
3
3
  module Feed
4
-
5
4
  FORWARD = :next_link
6
5
  BACKWARD = :previous_link
7
6
  FIRST = :first_link
8
7
  LAST = :last_link
9
8
 
10
- def next_page(current, page=FORWARD)
9
+ def next_page(current, page = FORWARD)
11
10
  bundle = current.resource
12
11
  link = bundle.method(page).call
13
12
  return nil unless link
@@ -16,8 +15,6 @@ module FHIR
16
15
  reply.resource_class = current.resource_class
17
16
  reply
18
17
  end
19
-
20
-
21
18
  end
22
19
  end
23
20
  end
@@ -15,13 +15,13 @@ module FHIR
15
15
  # Retrieve the update history for a resource with given id since last update time.
16
16
  # Last update may be null TODO - ensure this is the case.
17
17
  #
18
- # @param lastUpdate
18
+ # @param last_update
19
19
  # @param resourceClass
20
20
  # @param id
21
21
  # @return
22
22
  #
23
- # public <T extends Resource> AtomFeed history(Calendar lastUpdate, Class<T> resourceClass, String id);
24
- # public <T extends Resource> AtomFeed history(DateAndTime lastUpdate, Class<T> resourceClass, String id);
23
+ # public <T extends Resource> AtomFeed history(Calendar last_update, Class<T> resourceClass, String id);
24
+ # public <T extends Resource> AtomFeed history(DateAndTime last_update, Class<T> resourceClass, String id);
25
25
 
26
26
  def history(options)
27
27
  reply = get resource_url(options), fhir_headers(options).except(:history)
@@ -36,43 +36,42 @@ module FHIR
36
36
  #
37
37
  # @param resourceClass
38
38
  # @param id
39
- # @param lastUpdate
39
+ # @param last_update
40
40
  # @return
41
41
  #
42
- def resource_instance_history_as_of(klass, id, lastUpdate)
43
- history(resource: klass, id: id, history:{since: lastUpdate})
42
+ def resource_instance_history_as_of(klass, id, last_update)
43
+ history(resource: klass, id: id, history: { since: last_update })
44
44
  end
45
45
 
46
46
  def resource_instance_history(klass, id)
47
- history(resource: klass, id: id, history:{})
47
+ history(resource: klass, id: id, history: {})
48
48
  end
49
49
 
50
50
  def resource_history(klass)
51
- history(resource: klass, history:{})
51
+ history(resource: klass, history: {})
52
52
  end
53
53
 
54
- def resource_history_as_of(klass, lastUpdate)
55
- history(resource: klass, history:{since: lastUpdate})
54
+ def resource_history_as_of(klass, last_update)
55
+ history(resource: klass, history: { since: last_update })
56
56
  end
57
57
 
58
58
  #
59
59
  # Retrieve the update history for all resource types since the start of server records.
60
60
  #
61
61
  def all_history
62
- history(history:{})
62
+ history(history: {})
63
63
  end
64
64
 
65
65
  #
66
66
  # Retrieve the update history for all resource types since a specific last update date/time.
67
67
  #
68
68
  # Note:
69
- # @param lastUpdate
69
+ # @param last_update
70
70
  # @return
71
71
  #
72
- def all_history_as_of(lastUpdate)
73
- history(history:{since: lastUpdate})
72
+ def all_history_as_of(last_update)
73
+ history(history: { since: last_update })
74
74
  end
75
-
76
75
  end
77
76
  end
78
77
  end
@@ -1,7 +1,6 @@
1
1
  module FHIR
2
2
  module Sections
3
3
  module Operations
4
-
5
4
  # DSTU 2 Operations: http://hl7.org/implement/standards/FHIR-Develop/operations.html
6
5
 
7
6
  # Concept Translation [base]/ConceptMap/$translate | [base]/ConceptMap/[id]/$translate
@@ -11,34 +10,32 @@ module FHIR
11
10
  # Fetch Patient Record [base]/Patient/$everything | [base]/Patient/[id]/$everything
12
11
  # http://hl7.org/implement/standards/FHIR-Develop/patient-operations.html#everything
13
12
  # Fetches resources for a given patient record, scoped by a start and end time, and returns a Bundle of results
14
- def fetch_patient_record(id=nil, startTime=nil, endTime=nil, method='GET', format=@default_format)
15
- fetch_record(id,startTime,endTime,method,FHIR::Patient,format)
13
+ def fetch_patient_record(id = nil, startTime = nil, endTime = nil, method = 'GET', format = @default_format)
14
+ fetch_record(id, [startTime, endTime], method, FHIR::Patient, format)
16
15
  end
17
16
 
18
- def fetch_encounter_record(id=nil, method='GET', format=@default_format)
19
- fetch_record(id,nil,nil,method,FHIR::Encounter,format)
17
+ def fetch_encounter_record(id = nil, method = 'GET', format = @default_format)
18
+ fetch_record(id, [nil, nil], method, FHIR::Encounter, format)
20
19
  end
21
20
 
22
- def fetch_record(id=nil, startTime=nil, endTime=nil, method='GET', klass=FHIR::Patient, format=@default_format)
21
+ def fetch_record(id = nil, time = [nil, nil], method = 'GET', klass = FHIR::Patient, format = @default_format)
23
22
  options = { resource: klass, format: format, operation: { name: :fetch_patient_record, method: method } }
24
- options.deep_merge!({id: id}) if !id.nil?
23
+ options.deep_merge!(id: id) unless id.nil?
25
24
  options[:operation][:parameters] = {} if options[:operation][:parameters].nil?
26
- options[:operation][:parameters].merge!({start: { type: 'Date', value: startTime}}) if !startTime.nil?
27
- options[:operation][:parameters].merge!({end: { type: 'Date', value:endTime}}) if !endTime.nil?
25
+ options[:operation][:parameters][:start] = { type: 'Date', value: time.first } unless time.first.nil?
26
+ options[:operation][:parameters][:end] = { type: 'Date', value: time.last } unless time.last.nil?
28
27
 
29
- if options[:operation][:method]=='GET'
28
+ if options[:operation][:method] == 'GET'
30
29
  reply = get resource_url(options), fhir_headers(options)
31
30
  else
32
31
  # create Parameters body
33
- body = nil
34
- if(options[:operation] && options[:operation][:parameters])
32
+ if options[:operation] && options[:operation][:parameters]
35
33
  p = FHIR::Parameters.new
36
- options[:operation][:parameters].each do |key,value|
34
+ options[:operation][:parameters].each do |key, value|
37
35
  parameter = FHIR::Parameters::Parameter.new.from_hash(name: key.to_s)
38
36
  parameter.method("value#{value[:type]}=").call(value[:value])
39
37
  p.parameter << parameter
40
38
  end
41
- body = p.to_xml
42
39
  end
43
40
  reply = post resource_url(options), p, fhir_headers(options)
44
41
  end
@@ -55,7 +52,7 @@ module FHIR
55
52
  # Value Set Expansion [base]/ValueSet/$expand | [base]/ValueSet/[id]/$expand
56
53
  # http://hl7.org/implement/standards/FHIR-Develop/valueset-operations.html#expand
57
54
  # The definition of a value set is used to create a simple collection of codes suitable for use for data entry or validation.
58
- def value_set_expansion(params={}, format=@default_format)
55
+ def value_set_expansion(params = {}, format = @default_format)
59
56
  options = { resource: FHIR::ValueSet, operation: { name: :value_set_expansion } }
60
57
  options.deep_merge!(params)
61
58
  terminology_operation(options, format)
@@ -64,51 +61,49 @@ module FHIR
64
61
  # Value Set based Validation [base]/ValueSet/$validate | [base]/ValueSet/[id]/$validate
65
62
  # http://hl7.org/implement/standards/FHIR-Develop/valueset-operations.html#validate
66
63
  # Validate that a coded value is in the set of codes allowed by a value set.
67
- def value_set_code_validation(params={}, format=@default_format)
68
- options = { resource: FHIR::ValueSet, operation: { name: :value_set_based_validation } }
64
+ def value_set_code_validation(params = {}, format = @default_format)
65
+ options = { resource: FHIR::ValueSet, operation: { name: :value_set_based_validation } }
69
66
  options.deep_merge!(params)
70
67
  terminology_operation(options, format)
71
68
  end
72
69
 
73
70
  # Concept Look Up [base]/CodeSystem/$lookup
74
- def code_system_lookup(params={}, format=@default_format)
71
+ def code_system_lookup(params = {}, format = @default_format)
75
72
  options = { resource: FHIR::CodeSystem, operation: { name: :code_system_lookup } }
76
73
  options.deep_merge!(params)
77
74
  terminology_operation(options, format)
78
75
  end
79
76
 
80
77
  # ConceptMap Translation
81
- def concept_map_translate(params={}, format=@default_format)
78
+ def concept_map_translate(params = {}, format = @default_format)
82
79
  options = { resource: FHIR::ConceptMap, operation: { name: :concept_map_translate } }
83
80
  options.deep_merge!(params)
84
81
  terminology_operation(options, format)
85
82
  end
86
83
 
87
84
  # ConceptMap Closure Table Maintenance
88
- def closure_table_maintenance(params={}, format=@default_format)
85
+ def closure_table_maintenance(params = {}, format = @default_format)
89
86
  options = { operation: { name: :closure_table_maintenance } }
90
87
  options.deep_merge!(params)
91
- terminology_operation(options, format)
88
+ terminology_operation(options, format)
92
89
  end
93
90
 
94
- def terminology_operation(params={}, format=@default_format)
91
+ def terminology_operation(params = {}, format = @default_format)
95
92
  options = { format: format }
96
93
  # params = [id, code, system, version, display, coding, codeableConcept, date, abstract]
97
94
  options.deep_merge!(params)
98
95
 
99
- if options[:operation][:method]=='GET'
96
+ if options[:operation][:method] == 'GET'
100
97
  reply = get resource_url(options), fhir_headers(options)
101
98
  else
102
99
  # create Parameters body
103
- body = nil
104
- if(options[:operation] && options[:operation][:parameters])
100
+ if options[:operation] && options[:operation][:parameters]
105
101
  p = FHIR::Parameters.new
106
- options[:operation][:parameters].each do |key,value|
102
+ options[:operation][:parameters].each do |key, value|
107
103
  parameter = FHIR::Parameters::Parameter.new.from_hash(name: key.to_s)
108
104
  parameter.method("value#{value[:type]}=").call(value[:value])
109
105
  p.parameter << parameter
110
106
  end
111
- body = p.to_xml
112
107
  end
113
108
  reply = post resource_url(options), p, fhir_headers(options)
114
109
  end
@@ -119,7 +114,6 @@ module FHIR
119
114
  end
120
115
 
121
116
  # Batch Mode Validation [base]/ValueSet/$batch
122
-
123
117
  end
124
118
  end
125
119
  end
@@ -0,0 +1,52 @@
1
+ module FHIR
2
+ module Sections
3
+ module Search
4
+ #
5
+ # Search a set of resources of a given type.
6
+ #
7
+ # @param klass The type of resource to be searched.
8
+ # @param options A hash of options used to construct the search query.
9
+ # @return FHIR::ClientReply
10
+ #
11
+ def search(klass, options = {}, format = @default_format)
12
+ options[:resource] = klass
13
+ options[:format] = format
14
+
15
+ reply = if options[:search] && options[:search][:flag]
16
+ post resource_url(options), nil, fhir_headers(options)
17
+ else
18
+ get resource_url(options), fhir_headers(options)
19
+ end
20
+ # reply = get resource_url(options), fhir_headers(options)
21
+ reply.resource = parse_reply(klass, format, reply)
22
+ reply.resource_class = klass
23
+ reply
24
+ end
25
+
26
+ def search_existing(klass, id, options = {}, format = @default_format)
27
+ options.merge!(resource: klass, id: id, format: format)
28
+ # if options[:search][:flag]
29
+ reply = if options[:search] && options[:search][:flag]
30
+ post resource_url(options), nil, fhir_headers(options)
31
+ else
32
+ get resource_url(options), fhir_headers(options)
33
+ end
34
+ reply.resource = parse_reply(klass, format, reply)
35
+ reply.resource_class = klass
36
+ reply
37
+ end
38
+
39
+ def search_all(options = {}, format = @default_format)
40
+ options[:format] = format
41
+ reply = if options[:search] && options[:search][:flag]
42
+ post resource_url(options), nil, fhir_headers(options)
43
+ else
44
+ get resource_url(options), fhir_headers(options)
45
+ end
46
+ reply.resource = parse_reply(nil, format, reply)
47
+ reply.resource_class = nil
48
+ reply
49
+ end
50
+ end
51
+ end
52
+ end
@@ -2,50 +2,50 @@ module FHIR
2
2
  module Sections
3
3
  module Tags
4
4
  #
5
- # Get a list of all tags on server
6
- #
5
+ # Get a list of all tags on server
6
+ #
7
7
  # GET [base]/_tags
8
8
  #
9
9
  # public List<AtomCategory> getAllTags();
10
10
 
11
11
  #
12
- # Get a list of all tags used for the nominated resource type
13
- #
12
+ # Get a list of all tags used for the nominated resource type
13
+ #
14
14
  # GET [base]/[type]/_tags
15
15
  #
16
16
  # public <T extends Resource> List<AtomCategory> getAllTagsForResourceType(Class<T> resourceClass);
17
17
 
18
18
  #
19
- # Get a list of all tags affixed to the nominated resource. This duplicates the HTTP header entries
20
- #
19
+ # Get a list of all tags affixed to the nominated resource. This duplicates the HTTP header entries
20
+ #
21
21
  # GET [base]/[type]/[id]/_tags
22
22
  #
23
23
  # public <T extends Resource> List<AtomCategory> getTagsForResource(Class<T> resource, String id);
24
24
 
25
25
  #
26
26
  # Get a list of all tags affixed to the nominated version of the resource. This duplicates the HTTP header entries
27
- #
27
+ #
28
28
  # GET [base]/[type]/[id]/_history/[vid]/_tags
29
29
  #
30
30
  # public <T extends Resource> List<AtomCategory> getTagsForResourceVersion(Class<T> resource, String id, String versionId);
31
31
 
32
32
  #
33
33
  # Remove all tags in the provided list from the list of tags for the nominated resource
34
- #
34
+ #
35
35
  # DELETE [base]/[type]/[id]/_tags
36
36
  #
37
37
  # //public <T extends Resource> boolean deleteTagsForResource(Class<T> resourceClass, String id);
38
38
 
39
39
  #
40
40
  # Remove tags in the provided list from the list of tags for the nominated version of the resource
41
- #
41
+ #
42
42
  # DELETE [base]/[type]/[id]/_history/[vid]/_tags
43
43
  #
44
44
  # public <T extends Resource> List<AtomCategory> deleteTags(List<AtomCategory> tags, Class<T> resourceClass, String id, String version);
45
45
 
46
46
  #
47
47
  # Affix tags in the list to the nominated resource
48
- #
48
+ #
49
49
  # POST [base]/[type]/[id]/_tags
50
50
  # @return
51
51
  #
@@ -53,9 +53,9 @@ module FHIR
53
53
 
54
54
  #
55
55
  # Affix tags in the list to the nominated version of the resource
56
- #
56
+ #
57
57
  # POST [base]/[type]/[id]/_history/[vid]/_tags
58
- #
58
+ #
59
59
  # @return
60
60
  #
61
61
  # public <T extends Resource> List<AtomCategory> createTags(List<AtomCategory> tags, Class<T> resourceClass, String id, String version);