pharmaobservatory 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +83 -4
  3. data/docs/BiomarkerAlleleFrequenciesResponse.md +58 -0
  4. data/docs/BiomarkerAlleleFrequenciesRow.md +62 -0
  5. data/docs/BiomarkerAssayProvidersResponse.md +58 -0
  6. data/docs/BiomarkerAssayProvidersRow.md +72 -0
  7. data/docs/BiomarkerEvidenceByYearResponse.md +58 -0
  8. data/docs/BiomarkerEvidenceByYearRow.md +32 -0
  9. data/docs/BiomarkerTraversalStatusResponse.md +58 -0
  10. data/docs/BiomarkerTraversalStatusRow.md +36 -0
  11. data/docs/BiomarkersApi.md +320 -0
  12. data/docs/CompaniesApi.md +1001 -99
  13. data/docs/CompanyAssetsRow.md +5 -1
  14. data/docs/CompanyBiomarkerCapabilityResponse.md +58 -0
  15. data/docs/CompanyBiomarkerCapabilityRow.md +68 -0
  16. data/docs/CompanyProgramsRow.md +5 -1
  17. data/docs/CompanyRareDiseaseDeclarationsResponse.md +58 -0
  18. data/docs/CompanyRareDiseaseDeclarationsRow.md +52 -0
  19. data/docs/GxpFacilitiesRow.md +22 -0
  20. data/docs/LegalEntitiesApi.md +981 -101
  21. data/docs/LegalEntitiesRecordAttributes.md +6 -0
  22. data/docs/LegalEntitySecFilingsResponse.md +58 -0
  23. data/docs/LegalEntitySecFilingsRow.md +44 -0
  24. data/docs/OrgDisclosureTrendResponse.md +58 -0
  25. data/docs/OrgDisclosureTrendRow.md +62 -0
  26. data/docs/OwnershipSourceCoverageResponse.md +58 -0
  27. data/docs/OwnershipSourceCoverageRow.md +62 -0
  28. data/docs/ProgramLicensingCandidatesRow.md +5 -1
  29. data/docs/ProgramsRow.md +1 -1
  30. data/docs/RwdConductorDeliveryResponse.md +58 -0
  31. data/docs/RwdConductorDeliveryRow.md +74 -0
  32. data/docs/RwdConductorFootprintResponse.md +58 -0
  33. data/docs/RwdConductorFootprintRow.md +40 -0
  34. data/docs/RwdConductorStudiesResponse.md +58 -0
  35. data/docs/RwdConductorStudiesRow.md +42 -0
  36. data/docs/RwdConductorsApi.md +393 -0
  37. data/docs/RwdConductorsRecord.md +38 -0
  38. data/docs/RwdConductorsResponse.md +58 -0
  39. data/docs/RwdConductorsRow.md +72 -0
  40. data/docs/RwdInstitutionsApi.md +153 -0
  41. data/docs/RwdInstitutionsRecord.md +38 -0
  42. data/docs/RwdInstitutionsResponse.md +58 -0
  43. data/docs/RwdInstitutionsRow.md +154 -0
  44. data/docs/RwdNetworksApi.md +153 -0
  45. data/docs/RwdNetworksRecord.md +38 -0
  46. data/docs/RwdNetworksResponse.md +58 -0
  47. data/docs/RwdNetworksRow.md +110 -0
  48. data/docs/RwdStudiesApi.md +80 -0
  49. data/docs/SbtiCrosscheckResponse.md +58 -0
  50. data/docs/SbtiCrosscheckRow.md +48 -0
  51. data/docs/SponsorDeliveryResponse.md +58 -0
  52. data/docs/SponsorDeliveryRow.md +52 -0
  53. data/docs/SponsorPatentMentionsResponse.md +58 -0
  54. data/docs/SponsorPatentMentionsRow.md +42 -0
  55. data/docs/SponsorTrialConditionsResponse.md +58 -0
  56. data/docs/SponsorTrialConditionsRow.md +36 -0
  57. data/docs/SponsorTrialDrugsResponse.md +58 -0
  58. data/docs/SponsorTrialDrugsRow.md +34 -0
  59. data/lib/pharmaobservatory/api/biomarkers_api.rb +336 -0
  60. data/lib/pharmaobservatory/api/companies_api.rb +1131 -130
  61. data/lib/pharmaobservatory/api/legal_entities_api.rb +1047 -123
  62. data/lib/pharmaobservatory/api/rwd_conductors_api.rb +413 -0
  63. data/lib/pharmaobservatory/api/rwd_institutions_api.rb +161 -0
  64. data/lib/pharmaobservatory/api/rwd_networks_api.rb +161 -0
  65. data/lib/pharmaobservatory/api/rwd_studies_api.rb +84 -0
  66. data/lib/pharmaobservatory/models/biomarker_allele_frequencies_response.rb +478 -0
  67. data/lib/pharmaobservatory/models/biomarker_allele_frequencies_row.rb +465 -0
  68. data/lib/pharmaobservatory/models/biomarker_assay_providers_response.rb +478 -0
  69. data/lib/pharmaobservatory/models/biomarker_assay_providers_row.rb +520 -0
  70. data/lib/pharmaobservatory/models/biomarker_evidence_by_year_response.rb +478 -0
  71. data/lib/pharmaobservatory/models/biomarker_evidence_by_year_row.rb +300 -0
  72. data/lib/pharmaobservatory/models/biomarker_traversal_status_response.rb +478 -0
  73. data/lib/pharmaobservatory/models/biomarker_traversal_status_row.rb +322 -0
  74. data/lib/pharmaobservatory/models/company_assets_row.rb +24 -2
  75. data/lib/pharmaobservatory/models/company_biomarker_capability_response.rb +478 -0
  76. data/lib/pharmaobservatory/models/company_biomarker_capability_row.rb +498 -0
  77. data/lib/pharmaobservatory/models/company_programs_row.rb +24 -2
  78. data/lib/pharmaobservatory/models/company_rare_disease_declarations_response.rb +478 -0
  79. data/lib/pharmaobservatory/models/company_rare_disease_declarations_row.rb +410 -0
  80. data/lib/pharmaobservatory/models/gxp_facilities_row.rb +122 -1
  81. data/lib/pharmaobservatory/models/legal_entities_record_attributes.rb +28 -1
  82. data/lib/pharmaobservatory/models/legal_entity_sec_filings_response.rb +478 -0
  83. data/lib/pharmaobservatory/models/legal_entity_sec_filings_row.rb +370 -0
  84. data/lib/pharmaobservatory/models/org_disclosure_trend_response.rb +478 -0
  85. data/lib/pharmaobservatory/models/org_disclosure_trend_row.rb +465 -0
  86. data/lib/pharmaobservatory/models/ownership_source_coverage_response.rb +478 -0
  87. data/lib/pharmaobservatory/models/ownership_source_coverage_row.rb +465 -0
  88. data/lib/pharmaobservatory/models/program_licensing_candidates_row.rb +24 -2
  89. data/lib/pharmaobservatory/models/programs_row.rb +1 -1
  90. data/lib/pharmaobservatory/models/rwd_conductor_delivery_response.rb +478 -0
  91. data/lib/pharmaobservatory/models/rwd_conductor_delivery_row.rb +537 -0
  92. data/lib/pharmaobservatory/models/rwd_conductor_footprint_response.rb +478 -0
  93. data/lib/pharmaobservatory/models/rwd_conductor_footprint_row.rb +346 -0
  94. data/lib/pharmaobservatory/models/rwd_conductor_studies_response.rb +478 -0
  95. data/lib/pharmaobservatory/models/rwd_conductor_studies_row.rb +355 -0
  96. data/lib/pharmaobservatory/models/rwd_conductors_record.rb +385 -0
  97. data/lib/pharmaobservatory/models/rwd_conductors_response.rb +478 -0
  98. data/lib/pharmaobservatory/models/rwd_conductors_row.rb +526 -0
  99. data/lib/pharmaobservatory/models/rwd_institutions_record.rb +385 -0
  100. data/lib/pharmaobservatory/models/rwd_institutions_response.rb +478 -0
  101. data/lib/pharmaobservatory/models/rwd_institutions_row.rb +981 -0
  102. data/lib/pharmaobservatory/models/rwd_networks_record.rb +385 -0
  103. data/lib/pharmaobservatory/models/rwd_networks_response.rb +478 -0
  104. data/lib/pharmaobservatory/models/rwd_networks_row.rb +733 -0
  105. data/lib/pharmaobservatory/models/sbti_crosscheck_response.rb +478 -0
  106. data/lib/pharmaobservatory/models/sbti_crosscheck_row.rb +388 -0
  107. data/lib/pharmaobservatory/models/sponsor_delivery_response.rb +478 -0
  108. data/lib/pharmaobservatory/models/sponsor_delivery_row.rb +410 -0
  109. data/lib/pharmaobservatory/models/sponsor_patent_mentions_response.rb +478 -0
  110. data/lib/pharmaobservatory/models/sponsor_patent_mentions_row.rb +355 -0
  111. data/lib/pharmaobservatory/models/sponsor_trial_conditions_response.rb +478 -0
  112. data/lib/pharmaobservatory/models/sponsor_trial_conditions_row.rb +322 -0
  113. data/lib/pharmaobservatory/models/sponsor_trial_drugs_response.rb +478 -0
  114. data/lib/pharmaobservatory/models/sponsor_trial_drugs_row.rb +311 -0
  115. data/lib/pharmaobservatory/version.rb +1 -1
  116. data/lib/pharmaobservatory.rb +46 -0
  117. metadata +94 -2
@@ -0,0 +1,410 @@
1
+ =begin
2
+ #Pharma Observatory Public REST API
3
+
4
+ #Read-only REST API over the Pharma Observatory biomedical data platform. Reference: https://pharmaobservatory.com/api-reference
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.13.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module PharmaObservatory
17
+ # One row of the sponsor_delivery dataset: one row per lead sponsor organization as filed. A grouped request returns the group columns and the measures instead, as additional properties.
18
+ class SponsorDeliveryRow
19
+ # Legal-entity level: the lead sponsor organization record.
20
+ attr_accessor :sponsor_org_id
21
+
22
+ # Display name of the sponsor organization record.
23
+ attr_accessor :sponsor_name
24
+
25
+ # Company level: the company the sponsor belongs to (null when unresolved).
26
+ attr_accessor :sponsor_company_id
27
+
28
+ # Display name of the sponsor's company.
29
+ attr_accessor :sponsor_company_name
30
+
31
+ # Group level: the sponsor's current ultimate parent company; a root company's group is itself.
32
+ attr_accessor :sponsor_group_id
33
+
34
+ # Display name of the sponsor's group.
35
+ attr_accessor :sponsor_group_name
36
+
37
+ # Lead-sponsored trials of the organization.
38
+ attr_accessor :n_trials_total
39
+
40
+ # Trials whose planned dates come from the earliest estimate in the registry's own history.
41
+ attr_accessor :n_trials_with_observed_plan
42
+
43
+ # Trials with a measured difference between planned and actual enrollment; the base of the enrollment rate.
44
+ attr_accessor :n_trials_with_enrollment_delta
45
+
46
+ # Trials with a measured difference between planned and actual primary completion; the base of the on-time rate.
47
+ attr_accessor :n_trials_with_completion_delta
48
+
49
+ # Trials with an enrollment delta that reached their planned enrollment.
50
+ attr_accessor :n_enrollment_met
51
+
52
+ # Trials with an enrollment delta that did not reach their planned enrollment.
53
+ attr_accessor :n_enrollment_missed
54
+
55
+ # n_enrollment_met divided by n_trials_with_enrollment_delta; null when that base is zero.
56
+ attr_accessor :enrollment_hit_rate
57
+
58
+ # Median of actual enrollment as a percentage of planned, over trials with an enrollment delta.
59
+ attr_accessor :median_enrollment_attainment_pct
60
+
61
+ # Trials with a completion delta that were not delayed past their planned primary completion.
62
+ attr_accessor :n_ontime
63
+
64
+ # Trials with a completion delta that completed or are projected after their planned primary completion.
65
+ attr_accessor :n_slipped
66
+
67
+ # n_ontime divided by n_trials_with_completion_delta; null when that base is zero.
68
+ attr_accessor :on_time_rate
69
+
70
+ # Median days between planned and actual primary completion, over trials with a completion delta.
71
+ attr_accessor :median_completion_slip_days
72
+
73
+ # Attribute mapping from ruby-style variable name to JSON key.
74
+ def self.attribute_map
75
+ {
76
+ :'sponsor_org_id' => :'sponsor_org_id',
77
+ :'sponsor_name' => :'sponsor_name',
78
+ :'sponsor_company_id' => :'sponsor_company_id',
79
+ :'sponsor_company_name' => :'sponsor_company_name',
80
+ :'sponsor_group_id' => :'sponsor_group_id',
81
+ :'sponsor_group_name' => :'sponsor_group_name',
82
+ :'n_trials_total' => :'n_trials_total',
83
+ :'n_trials_with_observed_plan' => :'n_trials_with_observed_plan',
84
+ :'n_trials_with_enrollment_delta' => :'n_trials_with_enrollment_delta',
85
+ :'n_trials_with_completion_delta' => :'n_trials_with_completion_delta',
86
+ :'n_enrollment_met' => :'n_enrollment_met',
87
+ :'n_enrollment_missed' => :'n_enrollment_missed',
88
+ :'enrollment_hit_rate' => :'enrollment_hit_rate',
89
+ :'median_enrollment_attainment_pct' => :'median_enrollment_attainment_pct',
90
+ :'n_ontime' => :'n_ontime',
91
+ :'n_slipped' => :'n_slipped',
92
+ :'on_time_rate' => :'on_time_rate',
93
+ :'median_completion_slip_days' => :'median_completion_slip_days'
94
+ }
95
+ end
96
+
97
+ # Returns attribute mapping this model knows about
98
+ def self.acceptable_attribute_map
99
+ attribute_map
100
+ end
101
+
102
+ # Returns all the JSON keys this model knows about
103
+ def self.acceptable_attributes
104
+ acceptable_attribute_map.values
105
+ end
106
+
107
+ # Attribute type mapping.
108
+ def self.openapi_types
109
+ {
110
+ :'sponsor_org_id' => :'String',
111
+ :'sponsor_name' => :'String',
112
+ :'sponsor_company_id' => :'String',
113
+ :'sponsor_company_name' => :'String',
114
+ :'sponsor_group_id' => :'String',
115
+ :'sponsor_group_name' => :'String',
116
+ :'n_trials_total' => :'Integer',
117
+ :'n_trials_with_observed_plan' => :'Integer',
118
+ :'n_trials_with_enrollment_delta' => :'Integer',
119
+ :'n_trials_with_completion_delta' => :'Integer',
120
+ :'n_enrollment_met' => :'Integer',
121
+ :'n_enrollment_missed' => :'Integer',
122
+ :'enrollment_hit_rate' => :'Float',
123
+ :'median_enrollment_attainment_pct' => :'Float',
124
+ :'n_ontime' => :'Integer',
125
+ :'n_slipped' => :'Integer',
126
+ :'on_time_rate' => :'Float',
127
+ :'median_completion_slip_days' => :'Float'
128
+ }
129
+ end
130
+
131
+ # List of attributes with nullable: true
132
+ def self.openapi_nullable
133
+ Set.new([
134
+ :'sponsor_org_id',
135
+ :'sponsor_name',
136
+ :'sponsor_company_id',
137
+ :'sponsor_company_name',
138
+ :'sponsor_group_id',
139
+ :'sponsor_group_name',
140
+ :'n_trials_total',
141
+ :'n_trials_with_observed_plan',
142
+ :'n_trials_with_enrollment_delta',
143
+ :'n_trials_with_completion_delta',
144
+ :'n_enrollment_met',
145
+ :'n_enrollment_missed',
146
+ :'enrollment_hit_rate',
147
+ :'median_enrollment_attainment_pct',
148
+ :'n_ontime',
149
+ :'n_slipped',
150
+ :'on_time_rate',
151
+ :'median_completion_slip_days'
152
+ ])
153
+ end
154
+
155
+ # Initializes the object
156
+ # @param [Hash] attributes Model attributes in the form of hash
157
+ def initialize(attributes = {})
158
+ if (!attributes.is_a?(Hash))
159
+ fail ArgumentError, "The input argument (attributes) must be a hash in `PharmaObservatory::SponsorDeliveryRow` initialize method"
160
+ end
161
+
162
+ # check to see if the attribute exists and convert string to symbol for hash key
163
+ acceptable_attribute_map = self.class.acceptable_attribute_map
164
+ attributes = attributes.each_with_object({}) { |(k, v), h|
165
+ if (!acceptable_attribute_map.key?(k.to_sym))
166
+ fail ArgumentError, "`#{k}` is not a valid attribute in `PharmaObservatory::SponsorDeliveryRow`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
167
+ end
168
+ h[k.to_sym] = v
169
+ }
170
+
171
+ if attributes.key?(:'sponsor_org_id')
172
+ self.sponsor_org_id = attributes[:'sponsor_org_id']
173
+ end
174
+
175
+ if attributes.key?(:'sponsor_name')
176
+ self.sponsor_name = attributes[:'sponsor_name']
177
+ end
178
+
179
+ if attributes.key?(:'sponsor_company_id')
180
+ self.sponsor_company_id = attributes[:'sponsor_company_id']
181
+ end
182
+
183
+ if attributes.key?(:'sponsor_company_name')
184
+ self.sponsor_company_name = attributes[:'sponsor_company_name']
185
+ end
186
+
187
+ if attributes.key?(:'sponsor_group_id')
188
+ self.sponsor_group_id = attributes[:'sponsor_group_id']
189
+ end
190
+
191
+ if attributes.key?(:'sponsor_group_name')
192
+ self.sponsor_group_name = attributes[:'sponsor_group_name']
193
+ end
194
+
195
+ if attributes.key?(:'n_trials_total')
196
+ self.n_trials_total = attributes[:'n_trials_total']
197
+ end
198
+
199
+ if attributes.key?(:'n_trials_with_observed_plan')
200
+ self.n_trials_with_observed_plan = attributes[:'n_trials_with_observed_plan']
201
+ end
202
+
203
+ if attributes.key?(:'n_trials_with_enrollment_delta')
204
+ self.n_trials_with_enrollment_delta = attributes[:'n_trials_with_enrollment_delta']
205
+ end
206
+
207
+ if attributes.key?(:'n_trials_with_completion_delta')
208
+ self.n_trials_with_completion_delta = attributes[:'n_trials_with_completion_delta']
209
+ end
210
+
211
+ if attributes.key?(:'n_enrollment_met')
212
+ self.n_enrollment_met = attributes[:'n_enrollment_met']
213
+ end
214
+
215
+ if attributes.key?(:'n_enrollment_missed')
216
+ self.n_enrollment_missed = attributes[:'n_enrollment_missed']
217
+ end
218
+
219
+ if attributes.key?(:'enrollment_hit_rate')
220
+ self.enrollment_hit_rate = attributes[:'enrollment_hit_rate']
221
+ end
222
+
223
+ if attributes.key?(:'median_enrollment_attainment_pct')
224
+ self.median_enrollment_attainment_pct = attributes[:'median_enrollment_attainment_pct']
225
+ end
226
+
227
+ if attributes.key?(:'n_ontime')
228
+ self.n_ontime = attributes[:'n_ontime']
229
+ end
230
+
231
+ if attributes.key?(:'n_slipped')
232
+ self.n_slipped = attributes[:'n_slipped']
233
+ end
234
+
235
+ if attributes.key?(:'on_time_rate')
236
+ self.on_time_rate = attributes[:'on_time_rate']
237
+ end
238
+
239
+ if attributes.key?(:'median_completion_slip_days')
240
+ self.median_completion_slip_days = attributes[:'median_completion_slip_days']
241
+ end
242
+ end
243
+
244
+ # Show invalid properties with the reasons. Usually used together with valid?
245
+ # @return Array for valid properties with the reasons
246
+ def list_invalid_properties
247
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
248
+ invalid_properties = Array.new
249
+ invalid_properties
250
+ end
251
+
252
+ # Check to see if the all the properties in the model are valid
253
+ # @return true if the model is valid
254
+ def valid?
255
+ warn '[DEPRECATED] the `valid?` method is obsolete'
256
+ true
257
+ end
258
+
259
+ # Checks equality by comparing each attribute.
260
+ # @param [Object] Object to be compared
261
+ def ==(o)
262
+ return true if self.equal?(o)
263
+ self.class == o.class &&
264
+ sponsor_org_id == o.sponsor_org_id &&
265
+ sponsor_name == o.sponsor_name &&
266
+ sponsor_company_id == o.sponsor_company_id &&
267
+ sponsor_company_name == o.sponsor_company_name &&
268
+ sponsor_group_id == o.sponsor_group_id &&
269
+ sponsor_group_name == o.sponsor_group_name &&
270
+ n_trials_total == o.n_trials_total &&
271
+ n_trials_with_observed_plan == o.n_trials_with_observed_plan &&
272
+ n_trials_with_enrollment_delta == o.n_trials_with_enrollment_delta &&
273
+ n_trials_with_completion_delta == o.n_trials_with_completion_delta &&
274
+ n_enrollment_met == o.n_enrollment_met &&
275
+ n_enrollment_missed == o.n_enrollment_missed &&
276
+ enrollment_hit_rate == o.enrollment_hit_rate &&
277
+ median_enrollment_attainment_pct == o.median_enrollment_attainment_pct &&
278
+ n_ontime == o.n_ontime &&
279
+ n_slipped == o.n_slipped &&
280
+ on_time_rate == o.on_time_rate &&
281
+ median_completion_slip_days == o.median_completion_slip_days
282
+ end
283
+
284
+ # @see the `==` method
285
+ # @param [Object] Object to be compared
286
+ def eql?(o)
287
+ self == o
288
+ end
289
+
290
+ # Calculates hash code according to all attributes.
291
+ # @return [Integer] Hash code
292
+ def hash
293
+ [sponsor_org_id, sponsor_name, sponsor_company_id, sponsor_company_name, sponsor_group_id, sponsor_group_name, n_trials_total, n_trials_with_observed_plan, n_trials_with_enrollment_delta, n_trials_with_completion_delta, n_enrollment_met, n_enrollment_missed, enrollment_hit_rate, median_enrollment_attainment_pct, n_ontime, n_slipped, on_time_rate, median_completion_slip_days].hash
294
+ end
295
+
296
+ # Builds the object from hash
297
+ # @param [Hash] attributes Model attributes in the form of hash
298
+ # @return [Object] Returns the model itself
299
+ def self.build_from_hash(attributes)
300
+ return nil unless attributes.is_a?(Hash)
301
+ attributes = attributes.transform_keys(&:to_sym)
302
+ transformed_hash = {}
303
+ openapi_types.each_pair do |key, type|
304
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
305
+ transformed_hash["#{key}"] = nil
306
+ elsif type =~ /\AArray<(.*)>/i
307
+ # check to ensure the input is an array given that the attribute
308
+ # is documented as an array but the input is not
309
+ if attributes[attribute_map[key]].is_a?(Array)
310
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
311
+ end
312
+ elsif !attributes[attribute_map[key]].nil?
313
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
314
+ end
315
+ end
316
+ new(transformed_hash)
317
+ end
318
+
319
+ # Deserializes the data based on type
320
+ # @param string type Data type
321
+ # @param string value Value to be deserialized
322
+ # @return [Object] Deserialized data
323
+ def self._deserialize(type, value)
324
+ case type.to_sym
325
+ when :Time
326
+ Time.parse(value)
327
+ when :Date
328
+ Date.parse(value)
329
+ when :String
330
+ value.to_s
331
+ when :Integer
332
+ value.to_i
333
+ when :Float
334
+ value.to_f
335
+ when :Boolean
336
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
337
+ true
338
+ else
339
+ false
340
+ end
341
+ when :Object
342
+ # generic object (usually a Hash), return directly
343
+ value
344
+ when /\AArray<(?<inner_type>.+)>\z/
345
+ inner_type = Regexp.last_match[:inner_type]
346
+ value.map { |v| _deserialize(inner_type, v) }
347
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
348
+ k_type = Regexp.last_match[:k_type]
349
+ v_type = Regexp.last_match[:v_type]
350
+ {}.tap do |hash|
351
+ value.each do |k, v|
352
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
353
+ end
354
+ end
355
+ else # model
356
+ # models (e.g. Pet) or oneOf
357
+ klass = PharmaObservatory.const_get(type)
358
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
359
+ end
360
+ end
361
+
362
+ # Returns the string representation of the object
363
+ # @return [String] String presentation of the object
364
+ def to_s
365
+ to_hash.to_s
366
+ end
367
+
368
+ # to_body is an alias to to_hash (backward compatibility)
369
+ # @return [Hash] Returns the object in the form of hash
370
+ def to_body
371
+ to_hash
372
+ end
373
+
374
+ # Returns the object in the form of hash
375
+ # @return [Hash] Returns the object in the form of hash
376
+ def to_hash
377
+ hash = {}
378
+ self.class.attribute_map.each_pair do |attr, param|
379
+ value = self.send(attr)
380
+ if value.nil?
381
+ is_nullable = self.class.openapi_nullable.include?(attr)
382
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
383
+ end
384
+
385
+ hash[param] = _to_hash(value)
386
+ end
387
+ hash
388
+ end
389
+
390
+ # Outputs non-array value in the form of hash
391
+ # For object, use to_hash. Otherwise, just return the value
392
+ # @param [Object] value Any valid value
393
+ # @return [Hash] Returns the value in the form of hash
394
+ def _to_hash(value)
395
+ if value.is_a?(Array)
396
+ value.compact.map { |v| _to_hash(v) }
397
+ elsif value.is_a?(Hash)
398
+ {}.tap do |hash|
399
+ value.each { |k, v| hash[k] = _to_hash(v) }
400
+ end
401
+ elsif value.respond_to? :to_hash
402
+ value.to_hash
403
+ else
404
+ value
405
+ end
406
+ end
407
+
408
+ end
409
+
410
+ end