1
0
mirror of https://github.com/pcvolkmer/osc-variant.git synced 2025-07-03 17:22:54 +00:00

Initial import

This commit is contained in:
2023-06-01 19:31:36 +02:00
commit 193b01dc92
12 changed files with 1536 additions and 0 deletions

136
src/model/data_catalogue.rs Normal file
View File

@ -0,0 +1,136 @@
/*
* MIT License
*
* Copyright (c) 2023 Comprehensive Cancer Center Mainfranken
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
use serde::{Deserialize, Serialize};
use crate::model::onkostar_editor::Ordner;
#[derive(Serialize, Deserialize, Debug)]
pub struct DataCatalogue {
#[serde(rename = "Name")]
name: String,
#[serde(rename = "NameExport")]
name_export: String,
#[serde(rename = "Category")]
category: String,
#[serde(rename = "Description")]
description: String,
#[serde(rename = "Note")]
note: String,
#[serde(rename = "Readonly")]
readonly: bool,
#[serde(rename = "BestOf")]
best_of: bool,
#[serde(rename = "SID")]
sid: String,
#[serde(rename = "GUID")]
guid: String,
#[serde(rename = "Revision")]
revision: u16,
#[serde(rename = "Entries")]
entries: Entries,
#[serde(rename = "Ordner")]
ordner: Ordner
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Entries {
#[serde(rename = "Entry")]
entry: Vec<Entry>
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Entry {
#[serde(rename = "PropertyCatalogue")]
#[serde(skip_serializing_if="Option::is_none")]
property_catalogue: Option<String>,
#[serde(rename = "Name")]
name: String,
#[serde(rename = "NameExport")]
name_export: String,
#[serde(rename = "Description")]
description: String,
#[serde(rename = "Type")]
entry_type: String,
#[serde(rename = "SubTable")]
sub_table: String,
#[serde(rename = "ScaleUnit")]
scale_unit: String,
#[serde(rename = "MaxLength")]
max_length: u32,
#[serde(rename = "DefaultValue")]
default_value: String,
#[serde(rename = "Active")]
active: bool,
#[serde(rename = "Readonly")]
read_only: bool,
#[serde(rename = "Filterable")]
filterable: bool,
#[serde(rename = "RangeFrom")]
#[serde(skip_serializing_if="Option::is_none")]
range_from: Option<String>,
#[serde(rename = "RangeUntil")]
#[serde(skip_serializing_if="Option::is_none")]
range_until: Option<String>,
#[serde(rename = "MultipleChoice")]
multiple_choice: bool,
#[serde(rename = "Position")]
position: String,
#[serde(rename = "Note")]
note: String,
#[serde(rename = "DateEstimatedAllowed")]
date_estimated_allowed: bool,
#[serde(rename = "DateUnknownAllowed")]
date_unknown_allowed: bool,
#[serde(rename = "oeChoiceOptions")]
oe_choice_options: String,
#[serde(rename = "Fachabteilungsbezug")]
fachabteilungsbezug: bool,
#[serde(rename = "Use")]
#[serde(skip_serializing_if="Option::is_none")]
use_: Option<Use>,
#[serde(rename = "FesteNachkommastellen")]
#[serde(skip_serializing_if="Option::is_none")]
feste_nachkommastellen: Option<u16>,
#[serde(rename = "SID")]
sid: String,
#[serde(rename = "GUID")]
guid: String,
#[serde(rename = "Revision")]
revision: u16,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Use {
#[serde(rename = "ProgramModule", default)]
program_module: Vec<ProgramModule>
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ProgramModule {
#[serde(rename="@program")]
program: String,
#[serde(rename="@name")]
name: String
}

343
src/model/data_form.rs Normal file
View File

@ -0,0 +1,343 @@
/*
* MIT License
*
* Copyright (c) 2023 Comprehensive Cancer Center Mainfranken
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
use serde::{Deserialize, Serialize};
use crate::model::{Ansichten, Entries, Filter, MenuCategory, PlausibilityRules, Script};
use crate::model::onkostar_editor::Ordner;
#[derive(Serialize, Deserialize, Debug)]
pub struct DataForm {
#[serde(rename = "DataCatalogues")]
data_catalogues: DataCatalogues,
#[serde(rename = "Category")]
category: String,
#[serde(rename = "Name")]
name: String,
#[serde(rename = "Version")]
version: String,
#[serde(rename = "MenuEntry")]
menu_entry: String,
#[serde(rename = "Title")]
title: String,
#[serde(rename = "Description")]
description: String,
#[serde(rename = "Note")]
note: String,
#[serde(rename = "Readonly")]
readonly: bool,
#[serde(rename = "Active")]
active: bool,
#[serde(rename = "TudokPosition")]
tudok_position: String,
#[serde(rename = "Aktenbereich")]
aktenbereich: String,
#[serde(rename = "BefragungRelevant")]
befragung_relevant: bool,
#[serde(rename = "Hotkey")]
#[serde(skip_serializing_if="Option::is_none")]
hotkey: Option<String>,
#[serde(rename = "Summary")]
summary: String,
#[serde(rename = "BigSummary")]
big_summary: String,
#[serde(rename = "KalenderSchnipsel")]
kalender_schnipsel: String,
#[serde(rename = "EmailTemplate")]
#[serde(skip_serializing_if="Option::is_none")]
mail_template: Option<String>,
#[serde(rename = "ErkrankungText")]
erkrankung_text: String,
#[serde(rename = "ErkrankungTextLong")]
erkrankung_text_long: String,
#[serde(rename = "ErkrankungProzedurText")]
erkrankung_prozedur_text: String,
#[serde(rename = "ErkrankungSummary")]
erkrankung_summary: String,
#[serde(rename = "ErkrankungBigSummary")]
erkrankung_big_summary: String,
#[serde(rename = "Kontext")]
kontext: String,
#[serde(rename = "TudokReadonly")]
tudok_readonly: bool,
#[serde(rename = "VitalstatusRelevant")]
vitalstatus_relevant: bool,
#[serde(rename = "AutoNummerierung")]
auto_nummerierung: bool,
#[serde(rename = "Zwischenspeichern")]
zwischenspeichern: bool,
#[serde(rename = "Zurueckblaettern")]
zurueckblaettern: bool,
#[serde(rename = "Datenbankexport")]
datenbankexport: bool,
#[serde(rename = "DatenschutzRelevant")]
datenschutz_relevant: bool,
#[serde(rename = "KonferenzRelevant")]
konferenz_relevant: bool,
#[serde(rename = "hatUnterformulare")]
hat_unterformulare: bool,
#[serde(rename = "ScriptBeimSchliessen")]
#[serde(skip_serializing_if="Option::is_none")]
script_beim_schliessen: Option<Script>,
#[serde(rename = "ScriptBeimSpeichern")]
#[serde(skip_serializing_if="Option::is_none")]
script_beim_speichern: Option<Script>,
#[serde(rename = "ScriptBeimNeuanlegen")]
#[serde(skip_serializing_if="Option::is_none")]
script_beim_neuanlegen: Option<Script>,
#[serde(rename = "ScriptBeimBearbeiten")]
#[serde(skip_serializing_if="Option::is_none")]
script_beim_bearbeiten: Option<Script>,
#[serde(rename = "ScriptBeimKopieren")]
#[serde(skip_serializing_if="Option::is_none")]
script_beim_kopieren: Option<Script>,
#[serde(rename = "ScriptBeimImport")]
#[serde(skip_serializing_if="Option::is_none")]
script_beim_import: Option<Script>,
#[serde(rename = "ScriptBeimAnonymisieren")]
#[serde(skip_serializing_if="Option::is_none")]
script_beim_anonymisieren: Option<Script>,
#[serde(rename = "SID")]
sid: String,
#[serde(rename = "GUID")]
guid: String,
#[serde(rename = "Revision")]
revision: u16,
#[serde(rename = "SeitenzahlSichtbar")]
seitenanzahl_sichtbar: bool,
#[serde(rename = "Entries")]
entries: Entries<Entry>,
#[serde(rename = "PlausibilityRules")]
plausibility_rules: PlausibilityRules<DataFormEntries>,
#[serde(rename = "Haeufigkeiten")]
haeufigkeiten: String,
#[serde(rename = "Kennzahlen")]
kennzahlen: String,
#[serde(rename = "Ordner")]
ordner: Ordner,
#[serde(rename = "MenuCategory")]
#[serde(skip_serializing_if="Option::is_none")]
menu_category: Option<MenuCategory>,
#[serde(rename = "Ansichten")]
#[serde(skip_serializing_if="Option::is_none")]
ansichten: Option<Ansichten>
}
#[derive(Serialize, Deserialize, Debug)]
pub struct DataCatalogues {
#[serde(rename = "DataCatalogue")]
data_catalogue: Vec<String>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Entry {
#[serde(rename="@parentId")]
#[serde(skip_serializing_if="Option::is_none")]
parent_id: Option<u32>,
#[serde(rename="@parentRefId")]
#[serde(skip_serializing_if="Option::is_none")]
parent_ref_id: Option<u32>,
#[serde(rename = "Type")]
type_: String,
#[serde(rename = "Name")]
name: String,
#[serde(rename = "Description")]
description: String,
#[serde(rename = "Active")]
active: bool,
#[serde(rename = "Readonly")]
read_only: bool,
#[serde(rename = "Printable")]
printable: bool,
#[serde(rename = "Position")]
position: String,
#[serde(rename = "Note")]
note: String,
#[serde(rename = "Beschriftung1")]
#[serde(skip_serializing_if="Option::is_none")]
beschriftung1: Option<String>,
#[serde(rename = "Beschriftung2")]
#[serde(skip_serializing_if="Option::is_none")]
beschriftung2: Option<String>,
#[serde(rename = "WertAnzeigenPatmodul")]
#[serde(skip_serializing_if="Option::is_none")]
wert_anzeigen_patmodul: Option<String>,
#[serde(rename = "MultipleChoice")]
multiple_choice: bool,
#[serde(rename = "DefaultValue")]
default_value: String,
#[serde(rename = "Alignment")]
alignment: String,
#[serde(rename = "Direction")]
direction: String,
#[serde(rename = "DataCatalogueEntry")]
data_catalogue_entry: String,
#[serde(rename = "DataCatalogueEntryTable")]
#[serde(skip_serializing_if="Option::is_none")]
data_catalogue_entry_table: Option<String>,
#[serde(rename = "ElementParent")]
element_parent: String,
#[serde(rename = "ProcedureDateStatus")]
procedure_date_status: String,
#[serde(rename = "ZuordnungErkrankung")]
zuordnung_erkrankung: String,
#[serde(rename = "Grafik")]
#[serde(skip_serializing_if="Option::is_none")]
grafik: Option<String>,
#[serde(rename = "GrafikAusrichtung")]
#[serde(skip_serializing_if="Option::is_none")]
grafik_ausrichtung: Option<String>,
#[serde(rename = "Mandatory")]
mandatory: String,
#[serde(rename = "Filter")]
#[serde(skip_serializing_if="Option::is_none")]
filter: Option<Filter>,
#[serde(rename = "NotSpecified")]
not_specified: bool,
#[serde(rename = "Scripts")]
#[serde(skip_serializing_if="Option::is_none")]
scripts: Option<Script>,
#[serde(rename = "ReferencedDataForm")]
#[serde(skip_serializing_if="Option::is_none")]
referenced_data_form: Option<String>,
#[serde(rename = "ReferencedDataFormField")]
#[serde(skip_serializing_if="Option::is_none")]
referenced_data_form_field: Option<String>,
#[serde(rename = "Anzeige")]
anzeige: String,
#[serde(rename = "AnzeigeAuswahl")]
#[serde(skip_serializing_if="Option::is_none")]
anzeige_auswahl: Option<String>,
#[serde(rename = "VersionFrom")]
#[serde(skip_serializing_if="Option::is_none")]
version_from: Option<String>,
#[serde(rename = "Speichern")]
speichern: String,
#[serde(rename = "LeerAusblenden")]
leer_ausblenden: bool,
#[serde(rename = "GeschlossenAnzeigen")]
geschlossen_anzeigen: bool,
#[serde(rename = "Min")]
min: u32,
#[serde(rename = "Max")]
max: u32,
#[serde(rename = "InUebersichtAnzeigen")]
in_uebersicht_anzeigen: bool,
#[serde(rename = "Hinweis")]
hinweis: String,
#[serde(rename = "Vorschlagskategorie")]
#[serde(skip_serializing_if="Option::is_none")]
vorschlagskategorie: Option<String>,
#[serde(rename = "CategoryFilterName")]
#[serde(skip_serializing_if="Option::is_none")]
category_filer_name: Option<String>,
#[serde(rename = "Platzhalter")]
#[serde(skip_serializing_if="Option::is_none")]
platzhalter: Option<String>,
#[serde(rename = "ShowAuspraegungen")]
show_auspraegungen: bool,
#[serde(rename = "ProzedurdatumUebernehmen")]
prozedurdatum_uebernehmen: bool,
#[serde(rename = "Vorschlaege")]
vorschlaege: bool,
#[serde(rename = "AnzeigeAuswahldialog")]
anzeige_auswahldialog: String,
#[serde(rename = "SucheAuswahldialog")]
suche_auswahldialog: String,
#[serde(rename = "InfoAuswahldialog")]
#[serde(skip_serializing_if="Option::is_none")]
info_auswahldialog: Option<String>,
#[serde(rename = "DiseaseCategoryFilter")]
#[serde(skip_serializing_if="Option::is_none")]
disease_category_filter: Option<String>,
#[serde(rename = "MindestbreiteLabel")]
#[serde(skip_serializing_if="Option::is_none")]
mindestbreite_label: Option<u16>,
#[serde(rename = "MindestbreiteFeld")]
#[serde(skip_serializing_if="Option::is_none")]
mindestbreite_feld: Option<u16>,
#[serde(rename = "OrganisationunitFilter")]
#[serde(skip_serializing_if="Option::is_none")]
ou_filter: Option<String>,
#[serde(rename = "Aktion")]
#[serde(skip_serializing_if="Option::is_none")]
aktion: Option<String>,
#[serde(rename = "Top10")]
#[serde(skip_serializing_if="Option::is_none")]
top10: Option<String>,
#[serde(rename = "GroesseTextfeld")]
groesse_textfeld: u16,
#[serde(rename = "FilterAufheben")]
filter_aufheben: bool,
#[serde(rename = "Resizable")]
resizable: bool,
#[serde(rename = "Verschluesselt")]
verschluesselt: bool,
#[serde(rename = "MemoWidth")]
#[serde(skip_serializing_if="Option::is_none")]
memo_width: Option<u32>,
#[serde(rename = "MemoArt")]
#[serde(skip_serializing_if="Option::is_none")]
memo_art: Option<String>,
#[serde(rename = "DateValidFrom")]
date_valid_from: String,
#[serde(rename = "DateValidTo")]
date_valid_to: String,
#[serde(rename = "DateValidFuture")]
date_valid_future: bool,
#[serde(rename = "Titel")]
#[serde(skip_serializing_if="Option::is_none")]
titel: Option<String>,
#[serde(rename = "InAuswertung")]
in_auswertung: bool,
#[serde(rename = "InAuswertungGraph")]
in_auswertung_graph: bool,
#[serde(rename = "AlignmentPatModul")]
alignment_pat_modul: String,
#[serde(rename = "DirectionPatModul")]
direction_pat_modul: String,
#[serde(rename = "SeitenumbruchPatModul")]
seitenumbruch_pat_modul: bool,
#[serde(rename = "MarkierungIgnorieren")]
markierung_ignorieren: bool,
#[serde(rename = "SucheArt")]
#[serde(skip_serializing_if="Option::is_none")]
suche_art: Option<String>,
#[serde(rename = "SID")]
sid: String,
#[serde(rename = "GUID")]
guid: String,
#[serde(rename = "Revision")]
revision: u16,
#[serde(rename = "vorherigeWerte")]
vorherige_werte: String,
#[serde(rename = "EinfuegenVerhindern")]
einfuegen_verhindern: String,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct DataFormEntries {
#[serde(rename = "EntryName")]
entry_name: Option<Vec<String>>
}

142
src/model/mod.rs Normal file
View File

@ -0,0 +1,142 @@
/*
* MIT License
*
* Copyright (c) 2023 Comprehensive Cancer Center Mainfranken
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
use serde::{Deserialize, Serialize};
pub mod onkostar_editor;
pub mod property_catalogue;
pub mod data_catalogue;
pub mod data_form;
pub mod unterformular;
#[derive(Serialize, Deserialize, Debug)]
pub struct Script {
#[serde(rename = "Code")]
code: String,
#[serde(rename = "Valid")]
valid: bool
}
#[derive(Serialize, Deserialize, Debug)]
pub struct PlausibilityRule<T> {
#[serde(rename = "Type")]
type_: String,
#[serde(rename = "Message")]
message: String,
#[serde(rename = "Description")]
description: String,
#[serde(rename = "Bezeichnung")]
bezeichnung: String,
#[serde(rename = "Formula")]
formula: String,
#[serde(rename = "Active")]
active: bool,
#[serde(rename = "Editable")]
editable: bool,
#[serde(rename = "Valid")]
valid: bool,
#[serde(rename = "Condition")]
#[serde(skip_serializing_if="Option::is_none")]
condition: Option<String>,
#[serde(rename = "ConditionValid")]
#[serde(skip_serializing_if="Option::is_none")]
condition_valid: Option<bool>,
#[serde(rename = "Statusauswirkung")]
statusauswirkung: String,
#[serde(rename = "DataFormEntries")]
data_form_entries: T,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Entries<T> {
#[serde(rename = "Entry")]
entry: Vec<T>
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Ansicht {
#[serde(rename = "Name")]
name: String,
#[serde(rename = "Beschreibung")]
beschreibung: String,
#[serde(rename = "Konfiguration")]
konfiguration: String,
#[serde(rename = "DataForm")]
data_form: String,
#[serde(rename = "DataCatalogue")]
data_catalogue: String,
#[serde(rename = "TypAuswahl")]
typ_auswahl: String,
#[serde(rename = "Suche")]
suche: bool,
#[serde(rename = "SID")]
sid: String,
#[serde(rename = "GUID")]
guid: String,
#[serde(rename = "Revision")]
revision: u16,
#[serde(rename = "InBibliothekAusliefern")]
in_bibliothek_ausliefern: bool,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Ansichten {
#[serde(rename = "Ansicht", default)]
program_module: Vec<Ansicht>
}
#[derive(Serialize, Deserialize, Debug)]
pub struct MenuCategory {
#[serde(rename = "name")]
name: String,
#[serde(rename = "position")]
position: String,
#[serde(rename = "column")]
column: String
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Filter {
#[serde(rename = "Condition")]
condition: String,
#[serde(rename = "Valid")]
valid: bool,
#[serde(rename = "RefEntries")]
#[serde(skip_serializing_if="Option::is_none")]
ref_entries: Option<RefEntries>
}
#[derive(Serialize, Deserialize, Debug)]
pub struct RefEntries {
#[serde(rename = "RefEntry")]
#[serde(skip_serializing_if="Option::is_none")]
ref_entry: Option<Vec<String>>
}
#[derive(Serialize, Deserialize, Debug)]
pub struct PlausibilityRules<T> {
#[serde(rename = "PlausibilityRule")]
#[serde(skip_serializing_if="Option::is_none")]
plausibility_rule: Option<Vec<PlausibilityRule<T>>>
}

View File

@ -0,0 +1,80 @@
/*
* MIT License
*
* 2023 Comprehensive Cancer Center Mainfranken
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
use serde::{Deserialize, Serialize};
use crate::model::data_catalogue::DataCatalogue;
use crate::model::data_form::DataForm;
use crate::model::property_catalogue::PropertyCatalogue;
use crate::model::unterformular::Unterformular;
#[derive(Serialize, Deserialize, Debug)]
pub struct OnkostarEditor {
#[serde(rename = "InfoXML")]
info_xml: InfoXML,
#[serde(rename = "Editor")]
editor: Editor
}
#[derive(Serialize, Deserialize, Debug)]
pub struct InfoXML {
#[serde(rename = "DatumXML")]
datum_xml: String,
#[serde(rename = "Name")]
name: String,
#[serde(rename = "Version")]
version: String
}
#[derive(Serialize, Deserialize, Debug)]
struct Editor {
#[serde(rename = "PropertyCatalogue")]
property_catalogue: Vec<PropertyCatalogue>,
#[serde(rename = "DataCatalogue")]
data_catalogue: Vec<DataCatalogue>,
#[serde(rename = "Unterformular")]
unterformular: Vec<Unterformular>,
#[serde(rename = "DataForm")]
data_form: Vec<DataForm>
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Ordner {
#[serde(rename = "Bibliothek")]
bibliothek: Bibliothek,
#[serde(rename = "Name")]
name: String,
#[serde(rename = "Typ")]
typ: String,
#[serde(rename = "ParentOrdner", default)]
#[serde(skip_serializing_if="Option::is_none")]
parent_order: Option<Box<Ordner>>
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Bibliothek {
#[serde(rename = "Name")]
name: String
}

View File

@ -0,0 +1,189 @@
/*
* MIT License
*
* Copyright (c) 2023 Comprehensive Cancer Center Mainfranken
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
use serde::{Deserialize, Serialize};
use crate::model::onkostar_editor::Ordner;
#[derive(Serialize, Deserialize, Debug)]
pub struct PropertyCatalogue {
#[serde(rename = "Name")]
name: String,
#[serde(rename = "Description")]
description: String,
#[serde(rename = "Standard")]
standard: String,
#[serde(rename = "Readonly")]
readonly: bool,
#[serde(rename = "Anmerkung")]
#[serde(skip_serializing_if="Option::is_none")]
anmerkung: Option<String>,
#[serde(rename = "SID")]
sid: String,
#[serde(rename = "GUID")]
guid: String,
#[serde(rename = "Revision")]
revision: u16,
#[serde(rename = "Versions")]
versions: Versions,
#[serde(rename = "Ordner")]
ordner: Ordner
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Versions {
#[serde(rename = "Version")]
#[serde(skip_serializing_if="Option::is_none")]
entry: Option<Vec<Version>>
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Version {
#[serde(rename = "VersionNumber")]
version_number: u16,
#[serde(rename = "ValidFrom")]
valid_from: String,
#[serde(rename = "OID")]
oid: String,
#[serde(rename = "Active")]
active: bool,
#[serde(rename = "Description")]
description: String,
#[serde(rename = "SID")]
sid: String,
#[serde(rename = "GUID")]
guid: String,
#[serde(rename = "Revision")]
revision: u16,
#[serde(rename = "Entries")]
entries: VersionEntries,
#[serde(rename = "Abbildung")]
#[serde(skip_serializing_if="Option::is_none")]
abbildung: Option<Vec<Abbildung>>,
#[serde(rename = "Categories")]
categories: Categories
}
#[derive(Serialize, Deserialize, Debug)]
pub struct VersionEntries {
#[serde(rename = "Entry", default)]
content: Vec<VersionEntry>
}
#[derive(Serialize, Deserialize, Debug)]
pub struct VersionEntry {
#[serde(rename = "Code")]
code: String,
#[serde(rename = "ShortDescription")]
short_description: String,
#[serde(rename = "Description")]
description: String,
#[serde(rename = "Synonyms", default)]
#[serde(skip_serializing_if="Option::is_none")]
synonyms: Option<String>,
#[serde(rename = "Note", default)]
#[serde(skip_serializing_if="Option::is_none")]
note: Option<String>,
#[serde(rename = "Position")]
position: String
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Categories {
#[serde(rename = "Category", default)]
content: Vec<Category>
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Category {
#[serde(rename = "Name")]
name: String,
#[serde(rename = "Position")]
position: String,
#[serde(rename = "Auswahldialog")]
auswahldialog: bool,
#[serde(rename = "EntryCount")]
entry_count: u16,
#[serde(rename = "Beschreibung")]
beschreibung: String,
#[serde(rename = "CategoryEntries")]
category_entries: CategoryEntries
}
#[derive(Serialize, Deserialize, Debug)]
pub struct CategoryEntries {
#[serde(rename = "CategoryEntry", default)]
content: Vec<CategoryEntry>
}
#[derive(Serialize, Deserialize, Debug)]
pub struct CategoryEntry {
#[serde(rename = "Code")]
code: String,
#[serde(rename = "shortdesc", default)]
#[serde(skip_serializing_if="Option::is_none")]
shortdesc: Option<String>,
#[serde(rename = "description", default)]
#[serde(skip_serializing_if="Option::is_none")]
description: Option<String>,
#[serde(rename = "Synonyms", default)]
#[serde(skip_serializing_if="Option::is_none")]
synonyms: Option<String>,
#[serde(rename = "note", default)]
#[serde(skip_serializing_if="Option::is_none")]
note: Option<String>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Abbildung {
#[serde(rename = "ZielMKVersionOid")]
ziel_mk_version_oid: String,
#[serde(rename = "Eintrag", default)]
content: Vec<AbbildungEintrag>
}
#[derive(Serialize, Deserialize, Debug)]
pub struct AbbildungEintrag {
#[serde(rename = "Entry-from")]
entry_from: AbbildungEntry,
#[serde(rename = "Entry-to")]
entry_to: AbbildungEntry
}
#[derive(Serialize, Deserialize, Debug)]
pub struct AbbildungEntry {
#[serde(rename = "Code")]
code: String,
#[serde(rename = "ShortDescription")]
short_description: String,
#[serde(rename = "Description")]
description: String,
#[serde(rename = "Synonyms")]
#[serde(skip_serializing_if="Option::is_none")]
synonyms: Option<String>,
#[serde(rename = "Note")]
note: String,
#[serde(rename = "Position")]
position: String
}

353
src/model/unterformular.rs Normal file
View File

@ -0,0 +1,353 @@
/*
* MIT License
*
* Copyright (c) 2023 Comprehensive Cancer Center Mainfranken
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
use serde::{Deserialize, Serialize};
use crate::model::{Ansichten, Entries, Filter, MenuCategory, PlausibilityRules, Script};
use crate::model::onkostar_editor::Ordner;
#[derive(Serialize, Deserialize, Debug)]
pub struct Unterformular {
#[serde(rename = "DataCatalogues")]
data_catalogues: DataCatalogues,
#[serde(rename = "Category")]
category: String,
#[serde(rename = "Name")]
name: String,
#[serde(rename = "Version")]
version: String,
#[serde(rename = "MenuEntry")]
menu_entry: String,
#[serde(rename = "Title")]
title: String,
#[serde(rename = "Description")]
description: String,
#[serde(rename = "Note")]
note: String,
#[serde(rename = "Readonly")]
readonly: bool,
#[serde(rename = "Active")]
active: bool,
#[serde(rename = "TudokPosition")]
tudok_position: String,
#[serde(rename = "Aktenbereich")]
aktenbereich: String,
#[serde(rename = "BefragungRelevant")]
befragung_relevant: bool,
#[serde(rename = "Hotkey")]
#[serde(skip_serializing_if="Option::is_none")]
hotkey: Option<String>,
#[serde(rename = "Summary")]
summary: String,
#[serde(rename = "BigSummary")]
big_summary: String,
#[serde(rename = "KalenderSchnipsel")]
kalender_schnipsel: String,
#[serde(rename = "EmailTemplate")]
#[serde(skip_serializing_if="Option::is_none")]
mail_template: Option<String>,
#[serde(rename = "ErkrankungText")]
#[serde(skip_serializing_if="Option::is_none")]
erkrankung_text: Option<String>,
#[serde(rename = "ErkrankungTextLong")]
#[serde(skip_serializing_if="Option::is_none")]
erkrankung_text_long: Option<String>,
#[serde(rename = "ErkrankungProzedurText")]
#[serde(skip_serializing_if="Option::is_none")]
erkrankung_prozedur_text: Option<String>,
#[serde(rename = "ErkrankungSummary")]
#[serde(skip_serializing_if="Option::is_none")]
erkrankung_summary: Option<String>,
#[serde(rename = "ErkrankungBigSummary")]
#[serde(skip_serializing_if="Option::is_none")]
erkrankung_big_summary: Option<String>,
#[serde(rename = "Kontext")]
kontext: String,
#[serde(rename = "TudokReadonly")]
tudok_readonly: bool,
#[serde(rename = "VitalstatusRelevant")]
vitalstatus_relevant: bool,
#[serde(rename = "AutoNummerierung")]
auto_nummerierung: bool,
#[serde(rename = "Zwischenspeichern")]
zwischenspeichern: bool,
#[serde(rename = "Zurueckblaettern")]
zurueckblaettern: bool,
#[serde(rename = "Datenbankexport")]
datenbankexport: bool,
#[serde(rename = "DatenschutzRelevant")]
datenschutz_relevant: bool,
#[serde(rename = "KonferenzRelevant")]
konferenz_relevant: bool,
#[serde(rename = "hatUnterformulare")]
hat_unterformulare: bool,
#[serde(rename = "ScriptBeimSchliessen")]
#[serde(skip_serializing_if="Option::is_none")]
script_beim_schliessen: Option<Script>,
#[serde(rename = "ScriptBeimSpeichern")]
#[serde(skip_serializing_if="Option::is_none")]
script_beim_speichern: Option<Script>,
#[serde(rename = "ScriptBeimNeuanlegen")]
#[serde(skip_serializing_if="Option::is_none")]
script_beim_neuanlegen: Option<Script>,
#[serde(rename = "ScriptBeimBearbeiten")]
#[serde(skip_serializing_if="Option::is_none")]
script_beim_bearbeiten: Option<Script>,
#[serde(rename = "ScriptBeimKopieren")]
#[serde(skip_serializing_if="Option::is_none")]
script_beim_kopieren: Option<Script>,
#[serde(rename = "ScriptBeimImport")]
#[serde(skip_serializing_if="Option::is_none")]
script_beim_import: Option<Script>,
#[serde(rename = "ScriptBeimAnonymisieren")]
#[serde(skip_serializing_if="Option::is_none")]
script_beim_anonymisieren: Option<Script>,
#[serde(rename = "SID")]
sid: String,
#[serde(rename = "GUID")]
guid: String,
#[serde(rename = "Revision")]
revision: u16,
#[serde(rename = "VerknuepftGUID")]
#[serde(skip_serializing_if="Option::is_none")]
verknuepft_guid: Option<String>,
#[serde(rename = "SeitenzahlSichtbar")]
seitenanzahl_sichtbar: bool,
#[serde(rename = "Entries")]
entries: Entries<Entry>,
#[serde(rename = "PlausibilityRules")]
plausibility_rules: PlausibilityRules<DataFormEntries>,
#[serde(rename = "Haeufigkeiten")]
haeufigkeiten: String,
#[serde(rename = "Kennzahlen")]
kennzahlen: String,
#[serde(rename = "Ordner")]
ordner: Ordner,
#[serde(rename = "MenuCategory")]
#[serde(skip_serializing_if="Option::is_none")]
menu_category: Option<MenuCategory>,
#[serde(rename = "Ansichten")]
#[serde(skip_serializing_if="Option::is_none")]
ansichten: Option<Ansichten>
}
#[derive(Serialize, Deserialize, Debug)]
pub struct DataCatalogues {
#[serde(rename = "DataCatalogue")]
data_catalogue: Vec<String>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Entry {
#[serde(rename="@parentId")]
#[serde(skip_serializing_if="Option::is_none")]
parent_id: Option<u32>,
#[serde(rename="@parentRefId")]
#[serde(skip_serializing_if="Option::is_none")]
parent_ref_id: Option<u32>,
#[serde(rename = "Type")]
type_: String,
#[serde(rename = "Name")]
name: String,
#[serde(rename = "Description")]
description: String,
#[serde(rename = "Active")]
active: bool,
#[serde(rename = "Readonly")]
read_only: bool,
#[serde(rename = "Printable")]
printable: bool,
#[serde(rename = "Position")]
position: String,
#[serde(rename = "Note")]
note: String,
#[serde(rename = "Beschriftung1")]
#[serde(skip_serializing_if="Option::is_none")]
beschriftung1: Option<String>,
#[serde(rename = "Beschriftung2")]
#[serde(skip_serializing_if="Option::is_none")]
beschriftung2: Option<String>,
#[serde(rename = "WertAnzeigenPatmodul")]
#[serde(skip_serializing_if="Option::is_none")]
wert_anzeigen_patmodul: Option<String>,
#[serde(rename = "MultipleChoice")]
multiple_choice: bool,
#[serde(rename = "DefaultValue")]
default_value: String,
#[serde(rename = "Alignment")]
alignment: String,
#[serde(rename = "Direction")]
direction: String,
#[serde(rename = "DataCatalogueEntry")]
data_catalogue_entry: String,
#[serde(rename = "DataCatalogueEntryTable")]
#[serde(skip_serializing_if="Option::is_none")]
data_catalogue_entry_table: Option<String>,
#[serde(rename = "ElementParent")]
element_parent: String,
#[serde(rename = "ProcedureDateStatus")]
procedure_date_status: String,
#[serde(rename = "ZuordnungErkrankung")]
zuordnung_erkrankung: String,
#[serde(rename = "Grafik")]
#[serde(skip_serializing_if="Option::is_none")]
grafik: Option<String>,
#[serde(rename = "GrafikAusrichtung")]
#[serde(skip_serializing_if="Option::is_none")]
grafik_ausrichtung: Option<String>,
#[serde(rename = "Mandatory")]
mandatory: String,
#[serde(rename = "Filter")]
#[serde(skip_serializing_if="Option::is_none")]
filter: Option<Filter>,
#[serde(rename = "NotSpecified")]
not_specified: bool,
#[serde(rename = "Scripts")]
#[serde(skip_serializing_if="Option::is_none")]
scripts: Option<Script>,
#[serde(rename = "ReferencedDataForm")]
#[serde(skip_serializing_if="Option::is_none")]
referenced_data_form: Option<String>,
#[serde(rename = "ReferencedDataFormField")]
#[serde(skip_serializing_if="Option::is_none")]
referenced_data_form_field: Option<String>,
#[serde(rename = "Anzeige")]
anzeige: String,
#[serde(rename = "AnzeigeAuswahl")]
#[serde(skip_serializing_if="Option::is_none")]
anzeige_auswahl: Option<String>,
#[serde(rename = "VersionFrom")]
#[serde(skip_serializing_if="Option::is_none")]
version_from: Option<String>,
#[serde(rename = "Speichern")]
speichern: String,
#[serde(rename = "LeerAusblenden")]
leer_ausblenden: bool,
#[serde(rename = "GeschlossenAnzeigen")]
geschlossen_anzeigen: bool,
#[serde(rename = "Min")]
min: u32,
#[serde(rename = "Max")]
max: u32,
#[serde(rename = "InUebersichtAnzeigen")]
in_uebersicht_anzeigen: bool,
#[serde(rename = "Hinweis")]
#[serde(skip_serializing_if="Option::is_none")]
hinweis: Option<String>,
#[serde(rename = "Vorschlagskategorie")]
#[serde(skip_serializing_if="Option::is_none")]
vorschlagskategorie: Option<String>,
#[serde(rename = "CategoryFilterName")]
#[serde(skip_serializing_if="Option::is_none")]
category_filer_name: Option<String>,
#[serde(rename = "Platzhalter")]
#[serde(skip_serializing_if="Option::is_none")]
platzhalter: Option<String>,
#[serde(rename = "ShowAuspraegungen")]
show_auspraegungen: bool,
#[serde(rename = "ProzedurdatumUebernehmen")]
prozedurdatum_uebernehmen: bool,
#[serde(rename = "Vorschlaege")]
vorschlaege: bool,
#[serde(rename = "AnzeigeAuswahldialog")]
anzeige_auswahldialog: String,
#[serde(rename = "SucheAuswahldialog")]
suche_auswahldialog: String,
#[serde(rename = "InfoAuswahldialog")]
#[serde(skip_serializing_if="Option::is_none")]
info_auswahldialog: Option<String>,
#[serde(rename = "DiseaseCategoryFilter")]
#[serde(skip_serializing_if="Option::is_none")]
disease_category_filter: Option<String>,
#[serde(rename = "MindestbreiteLabel")]
#[serde(skip_serializing_if="Option::is_none")]
mindestbreite_label: Option<u16>,
#[serde(rename = "MindestbreiteFeld")]
#[serde(skip_serializing_if="Option::is_none")]
mindestbreite_feld: Option<u16>,
#[serde(rename = "OrganisationunitFilter")]
#[serde(skip_serializing_if="Option::is_none")]
ou_filter: Option<String>,
#[serde(rename = "Aktion")]
#[serde(skip_serializing_if="Option::is_none")]
aktion: Option<String>,
#[serde(rename = "Top10")]
#[serde(skip_serializing_if="Option::is_none")]
top10: Option<String>,
#[serde(rename = "GroesseTextfeld")]
groesse_textfeld: u16,
#[serde(rename = "FilterAufheben")]
filter_aufheben: bool,
#[serde(rename = "Resizable")]
resizable: bool,
#[serde(rename = "Verschluesselt")]
verschluesselt: bool,
#[serde(rename = "MemoWidth")]
#[serde(skip_serializing_if="Option::is_none")]
memo_width: Option<u32>,
#[serde(rename = "MemoArt")]
#[serde(skip_serializing_if="Option::is_none")]
memo_art: Option<String>,
#[serde(rename = "DateValidFrom")]
date_valid_from: String,
#[serde(rename = "DateValidTo")]
date_valid_to: String,
#[serde(rename = "DateValidFuture")]
date_valid_future: bool,
#[serde(rename = "Titel")]
#[serde(skip_serializing_if="Option::is_none")]
titel: Option<String>,
#[serde(rename = "InAuswertung")]
in_auswertung: bool,
#[serde(rename = "InAuswertungGraph")]
in_auswertung_graph: bool,
#[serde(rename = "AlignmentPatModul")]
alignment_pat_modul: String,
#[serde(rename = "DirectionPatModul")]
direction_pat_modul: String,
#[serde(rename = "SeitenumbruchPatModul")]
seitenumbruch_pat_modul: bool,
#[serde(rename = "MarkierungIgnorieren")]
markierung_ignorieren: bool,
#[serde(rename = "SucheArt")]
#[serde(skip_serializing_if="Option::is_none")]
suche_art: Option<String>,
#[serde(rename = "SID")]
sid: String,
#[serde(rename = "GUID")]
guid: String,
#[serde(rename = "Revision")]
revision: u16,
#[serde(rename = "vorherigeWerte")]
vorherige_werte: String,
#[serde(rename = "EinfuegenVerhindern")]
einfuegen_verhindern: String,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct DataFormEntries {
#[serde(rename = "EntryName")]
#[serde(skip_serializing_if="Option::is_none")]
entry_name: Option<Vec<String>>
}