From 93981f7709120b1c2d5c7479da1654b26c82e8b5 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Mon, 6 Nov 2023 11:44:41 +0100 Subject: [PATCH] Issue #16: Add missing model entries and add optional declaration --- src/model/data_catalogue.rs | 5 +++- src/model/data_form.rs | 45 ++++++++++++++++++++++++++------- src/model/mod.rs | 38 ++++++++++++++++++++++++++-- src/model/property_catalogue.rs | 8 ++++-- src/model/unterformular.rs | 24 +++++++++++++++--- 5 files changed, 103 insertions(+), 17 deletions(-) diff --git a/src/model/data_catalogue.rs b/src/model/data_catalogue.rs index ed360f6..4e9c0d7 100644 --- a/src/model/data_catalogue.rs +++ b/src/model/data_catalogue.rs @@ -29,7 +29,7 @@ use serde::{Deserialize, Serialize}; use crate::model::onkostar_editor::OnkostarEditor; use crate::model::requirements::{Requirement, Requires}; -use crate::model::{Comparable, FolderContent, Listable, Ordner, Sortable}; +use crate::model::{Ansichten, Comparable, FolderContent, Listable, Ordner, Sortable}; #[derive(Serialize, Deserialize, Debug)] #[serde(deny_unknown_fields)] @@ -58,6 +58,9 @@ pub struct DataCatalogue { entries: Entries, #[serde(rename = "Ordner")] ordner: Ordner, + #[serde(rename = "Ansichten", default)] + #[serde(skip_serializing_if = "Option::is_none")] + ansichten: Option, } impl Listable for DataCatalogue { diff --git a/src/model/data_form.rs b/src/model/data_form.rs index 436ed1a..56e89b2 100644 --- a/src/model/data_form.rs +++ b/src/model/data_form.rs @@ -32,7 +32,7 @@ use crate::model::onkostar_editor::OnkostarEditor; use crate::model::requirements::{Requirement, Requires}; use crate::model::{ apply_profile_to_form_entry, apply_profile_to_form_field, Ansichten, Comparable, Entries, - Filter, FolderContent, FormEntry, FormEntryContainer, Listable, MenuCategory, + Filter, FolderContent, FormEntry, FormEntryContainer, Kennzahlen, Listable, MenuCategory, PlausibilityRules, RefEntries, Script, Sortable, }; use crate::model::{Haeufigkeiten, Ordner}; @@ -80,18 +80,26 @@ pub struct DataForm { #[serde(rename = "EmailTemplate")] #[serde(skip_serializing_if = "Option::is_none")] mail_template: Option, - #[serde(rename = "ErkrankungText")] - erkrankung_text: String, + #[serde(rename = "ErkrankungText", default)] + #[serde(skip_serializing_if = "Option::is_none")] + erkrankung_text: Option, #[serde(rename = "ErkrankungTextLong")] - erkrankung_text_long: String, + #[serde(skip_serializing_if = "Option::is_none")] + erkrankung_text_long: Option, #[serde(rename = "ErkrankungProzedurText")] - erkrankung_prozedur_text: String, + #[serde(skip_serializing_if = "Option::is_none")] + erkrankung_prozedur_text: Option, #[serde(rename = "ErkrankungSummary")] - erkrankung_summary: String, + #[serde(skip_serializing_if = "Option::is_none")] + erkrankung_summary: Option, #[serde(rename = "ErkrankungBigSummary")] - erkrankung_big_summary: String, + #[serde(skip_serializing_if = "Option::is_none")] + erkrankung_big_summary: Option, #[serde(rename = "Kontext")] kontext: String, + #[serde(rename = "Datenart")] + #[serde(skip_serializing_if = "Option::is_none")] + datenart: Option, #[serde(rename = "TudokReadonly")] tudok_readonly: bool, #[serde(rename = "VitalstatusRelevant")] @@ -138,6 +146,9 @@ pub struct DataForm { guid: String, #[serde(rename = "Revision")] revision: u16, + #[serde(rename = "VerknuepftGUID")] + #[serde(skip_serializing_if = "Option::is_none")] + verknuepft_guid: Option, #[serde(rename = "SeitenzahlSichtbar")] #[serde(skip_serializing_if = "Option::is_none")] seitenanzahl_sichtbar: Option, @@ -148,7 +159,7 @@ pub struct DataForm { #[serde(rename = "Haeufigkeiten")] haeufigkeiten: Haeufigkeiten, #[serde(rename = "Kennzahlen")] - kennzahlen: String, + kennzahlen: Kennzahlen, #[serde(rename = "Ordner")] ordner: Ordner, #[serde(rename = "MenuCategory")] @@ -437,6 +448,9 @@ pub struct Entry { grafik_ausrichtung: Option, #[serde(rename = "Mandatory")] mandatory: String, + #[serde(rename = "Datenart", default)] + #[serde(skip_serializing_if = "Option::is_none")] + datenart: Option, #[serde(rename = "Filter")] #[serde(skip_serializing_if = "Option::is_none")] filter: Option, @@ -456,6 +470,9 @@ pub struct Entry { #[serde(rename = "AnzeigeAuswahl")] #[serde(skip_serializing_if = "Option::is_none")] anzeige_auswahl: Option, + #[serde(rename = "Druckvorlage")] + #[serde(skip_serializing_if = "Option::is_none")] + druckvorlage: Option, #[serde(rename = "VersionFrom")] #[serde(skip_serializing_if = "Option::is_none")] version_from: Option, @@ -463,6 +480,9 @@ pub struct Entry { speichern: String, #[serde(rename = "LeerAusblenden")] leer_ausblenden: bool, + #[serde(rename = "Inhalt")] + #[serde(skip_serializing_if = "Option::is_none")] + inhalt: Option, #[serde(rename = "GeschlossenAnzeigen")] geschlossen_anzeigen: bool, #[serde(rename = "Min")] @@ -472,7 +492,8 @@ pub struct Entry { #[serde(rename = "InUebersichtAnzeigen")] in_uebersicht_anzeigen: bool, #[serde(rename = "Hinweis")] - hinweis: String, + #[serde(skip_serializing_if = "Option::is_none")] + hinweis: Option, #[serde(rename = "Vorschlagskategorie")] #[serde(skip_serializing_if = "Option::is_none")] vorschlagskategorie: Option, @@ -544,6 +565,12 @@ pub struct Entry { in_auswertung: bool, #[serde(rename = "InAuswertungGraph")] in_auswertung_graph: bool, + #[serde(rename = "FragebogenItemNummer")] + #[serde(skip_serializing_if = "Option::is_none")] + fragebogen_item_nummer: Option, + #[serde(rename = "Score")] + #[serde(skip_serializing_if = "Option::is_none")] + score: Option, #[serde(rename = "AlignmentPatModul")] alignment_pat_modul: String, #[serde(rename = "DirectionPatModul")] diff --git a/src/model/mod.rs b/src/model/mod.rs index a0e9548..eed540c 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -96,11 +96,15 @@ pub struct Ansicht { #[serde(rename = "Konfiguration")] konfiguration: String, #[serde(rename = "DataForm")] - data_form: String, + #[serde(skip_serializing_if = "Option::is_none")] + data_form: Option, #[serde(rename = "DataCatalogue")] data_catalogue: String, #[serde(rename = "TypAuswahl")] typ_auswahl: String, + #[serde(rename = "PersonenstammKontext", default)] + #[serde(skip_serializing_if = "Option::is_none")] + personenstamm_kontext: Option, #[serde(rename = "Suche")] suche: bool, #[serde(rename = "SID")] @@ -189,8 +193,12 @@ pub struct Haeufigkeit { taeglich_aktualisieren: bool, #[serde(rename = "Typ")] typ: String, + #[serde(rename = "NichtBerechnen")] + #[serde(skip_serializing_if = "Option::is_none")] + nicht_berechnen: Option, #[serde(rename = "TabellenName")] - tabellen_name: String, + #[serde(skip_serializing_if = "Option::is_none")] + tabellen_name: Option, } #[derive(Serialize, Deserialize, Debug)] @@ -214,6 +222,32 @@ pub struct Ordner { parent_order: Option>, } +#[derive(Serialize, Deserialize, Debug)] +#[serde(deny_unknown_fields)] +pub struct Kennzahlen { + #[serde(rename = "Kennzahl", default)] + kennzahl: Vec, +} + +#[derive(Serialize, Deserialize, Debug)] +#[serde(deny_unknown_fields)] +pub struct Kennzahl { + #[serde(rename = "Name")] + name: String, + #[serde(rename = "Nummer")] + nummer: String, + #[serde(rename = "Beschreibung")] + beschreibung: String, + #[serde(rename = "Notiz")] + notiz: String, + #[serde(rename = "Vorgabe")] + vorgabe: String, + #[serde(rename = "Haeufigkeitenzaehler")] + haeufigkeitenzaehler: String, + #[serde(rename = "Haeufigkeitennenner")] + haeufigkeitennenner: String, +} + fn apply_profile_to_form_entry(entry: &mut E, form_reference: &FormReference) where E: FormEntry, diff --git a/src/model/property_catalogue.rs b/src/model/property_catalogue.rs index 4d31b9e..3ae7d5d 100644 --- a/src/model/property_catalogue.rs +++ b/src/model/property_catalogue.rs @@ -191,6 +191,9 @@ pub struct VersionEntry { #[serde(rename = "Note", default)] #[serde(skip_serializing_if = "Option::is_none")] note: Option, + #[serde(rename = "Type", default)] + #[serde(skip_serializing_if = "Option::is_none")] + type_: Option, #[serde(rename = "Position")] position: String, } @@ -331,8 +334,9 @@ pub struct AbbildungEntry { #[serde(rename = "Synonyms")] #[serde(skip_serializing_if = "Option::is_none")] synonyms: Option, - #[serde(rename = "Note")] - note: String, + #[serde(rename = "Note", default)] + #[serde(skip_serializing_if = "Option::is_none")] + note: Option, #[serde(rename = "Position")] position: String, } diff --git a/src/model/unterformular.rs b/src/model/unterformular.rs index 60d4ceb..423c8fb 100644 --- a/src/model/unterformular.rs +++ b/src/model/unterformular.rs @@ -32,7 +32,7 @@ use crate::model::onkostar_editor::OnkostarEditor; use crate::model::requirements::{Requirement, Requires}; use crate::model::{ apply_profile_to_form_entry, apply_profile_to_form_field, Ansichten, Comparable, Entries, - Filter, FolderContent, FormEntry, FormEntryContainer, Listable, MenuCategory, + Filter, FolderContent, FormEntry, FormEntryContainer, Kennzahlen, Listable, MenuCategory, PlausibilityRules, RefEntries, Script, Sortable, }; use crate::model::{Haeufigkeiten, Ordner}; @@ -80,7 +80,7 @@ pub struct Unterformular { #[serde(rename = "EmailTemplate")] #[serde(skip_serializing_if = "Option::is_none")] mail_template: Option, - #[serde(rename = "ErkrankungText")] + #[serde(rename = "ErkrankungText", default)] #[serde(skip_serializing_if = "Option::is_none")] erkrankung_text: Option, #[serde(rename = "ErkrankungTextLong")] @@ -97,6 +97,9 @@ pub struct Unterformular { erkrankung_big_summary: Option, #[serde(rename = "Kontext")] kontext: String, + #[serde(rename = "Datenart")] + #[serde(skip_serializing_if = "Option::is_none")] + datenart: Option, #[serde(rename = "TudokReadonly")] tudok_readonly: bool, #[serde(rename = "VitalstatusRelevant")] @@ -159,7 +162,7 @@ pub struct Unterformular { #[serde(rename = "Haeufigkeiten")] haeufigkeiten: Haeufigkeiten, #[serde(rename = "Kennzahlen")] - kennzahlen: String, + kennzahlen: Kennzahlen, #[serde(rename = "Ordner")] ordner: Ordner, #[serde(rename = "MenuCategory")] @@ -442,6 +445,9 @@ pub struct Entry { grafik_ausrichtung: Option, #[serde(rename = "Mandatory")] mandatory: String, + #[serde(rename = "Datenart", default)] + #[serde(skip_serializing_if = "Option::is_none")] + datenart: Option, #[serde(rename = "Filter")] #[serde(skip_serializing_if = "Option::is_none")] filter: Option, @@ -461,6 +467,9 @@ pub struct Entry { #[serde(rename = "AnzeigeAuswahl")] #[serde(skip_serializing_if = "Option::is_none")] anzeige_auswahl: Option, + #[serde(rename = "Druckvorlage")] + #[serde(skip_serializing_if = "Option::is_none")] + druckvorlage: Option, #[serde(rename = "VersionFrom")] #[serde(skip_serializing_if = "Option::is_none")] version_from: Option, @@ -468,6 +477,9 @@ pub struct Entry { speichern: String, #[serde(rename = "LeerAusblenden")] leer_ausblenden: bool, + #[serde(rename = "Inhalt")] + #[serde(skip_serializing_if = "Option::is_none")] + inhalt: Option, #[serde(rename = "GeschlossenAnzeigen")] geschlossen_anzeigen: bool, #[serde(rename = "Min")] @@ -550,6 +562,12 @@ pub struct Entry { in_auswertung: bool, #[serde(rename = "InAuswertungGraph")] in_auswertung_graph: bool, + #[serde(rename = "FragebogenItemNummer")] + #[serde(skip_serializing_if = "Option::is_none")] + fragebogen_item_nummer: Option, + #[serde(rename = "Score")] + #[serde(skip_serializing_if = "Option::is_none")] + score: Option, #[serde(rename = "AlignmentPatModul")] alignment_pat_modul: String, #[serde(rename = "DirectionPatModul")]