pubmed_parser/europe_pmc/
models.rs1use serde::{Deserialize, Serialize};
9
10use super::de::opt_string_flex;
11
12#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
17#[serde(rename_all = "camelCase")]
18pub struct EuropePmcResult {
19 #[serde(default)]
21 pub id: String,
22 #[serde(default)]
24 pub source: String,
25 #[serde(default)]
27 pub pmid: Option<String>,
28 #[serde(default)]
30 pub pmcid: Option<String>,
31 #[serde(default)]
33 pub doi: Option<String>,
34 #[serde(default)]
36 pub title: Option<String>,
37 #[serde(default)]
39 pub author_string: Option<String>,
40 #[serde(default)]
42 pub journal_title: Option<String>,
43 #[serde(default, deserialize_with = "opt_string_flex")]
45 pub pub_year: Option<String>,
46 #[serde(default)]
48 pub is_open_access: Option<String>,
49 #[serde(flatten, default)]
51 pub extra: serde_json::Map<String, serde_json::Value>,
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
56#[serde(rename_all = "camelCase")]
57pub struct EuropePmcReference {
58 #[serde(default)]
60 pub source: Option<String>,
61 #[serde(default, deserialize_with = "opt_string_flex")]
63 pub id: Option<String>,
64 #[serde(default)]
66 pub citation_type: Option<String>,
67 #[serde(default)]
69 pub title: Option<String>,
70 #[serde(default)]
72 pub author_string: Option<String>,
73 #[serde(default)]
75 pub journal_abbreviation: Option<String>,
76 #[serde(default, deserialize_with = "opt_string_flex")]
78 pub pub_year: Option<String>,
79 #[serde(default)]
81 pub volume: Option<String>,
82 #[serde(default)]
84 pub issue: Option<String>,
85 #[serde(default)]
87 pub page_info: Option<String>,
88 #[serde(default, deserialize_with = "opt_string_flex")]
90 pub pmid: Option<String>,
91 #[serde(default)]
93 pub doi: Option<String>,
94 #[serde(flatten, default)]
96 pub extra: serde_json::Map<String, serde_json::Value>,
97}
98
99#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
101#[serde(rename_all = "camelCase")]
102pub struct EuropePmcCitation {
103 #[serde(default, deserialize_with = "opt_string_flex")]
105 pub id: Option<String>,
106 #[serde(default)]
108 pub source: Option<String>,
109 #[serde(default)]
111 pub citation_type: Option<String>,
112 #[serde(default)]
114 pub title: Option<String>,
115 #[serde(default)]
117 pub author_string: Option<String>,
118 #[serde(default)]
120 pub journal_abbreviation: Option<String>,
121 #[serde(default, deserialize_with = "opt_string_flex")]
123 pub pub_year: Option<String>,
124 #[serde(default)]
126 pub volume: Option<String>,
127 #[serde(default)]
129 pub issue: Option<String>,
130 #[serde(default)]
132 pub page_info: Option<String>,
133 #[serde(default, deserialize_with = "opt_string_flex")]
135 pub cited_by_count: Option<String>,
136 #[serde(flatten, default)]
138 pub extra: serde_json::Map<String, serde_json::Value>,
139}
140
141#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
144#[serde(rename_all = "camelCase")]
145pub struct EuropePmcDatabaseLink {
146 #[serde(default)]
148 pub db_name: Option<String>,
149 #[serde(default)]
151 pub db_count: Option<u32>,
152 #[serde(rename = "dbCrossReferenceInfo", default)]
154 pub info: Vec<EuropePmcDbCrossReferenceInfo>,
155}
156
157#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
160pub struct EuropePmcDbCrossReferenceInfo {
161 #[serde(default)]
163 pub info1: Option<String>,
164 #[serde(default)]
166 pub info2: Option<String>,
167 #[serde(default)]
169 pub info3: Option<String>,
170 #[serde(default)]
172 pub info4: Option<String>,
173}