/* * This file is part of osc-variant * * Copyright (C) 2023-2024 the original author or authors. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ use std::cmp::Ordering; use std::collections::HashSet; use console::style; use serde::{Deserialize, Serialize}; use crate::checks::CheckNotice::ErrorWithCode; use crate::checks::{CheckNotice, Checkable}; 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, Kennzahlen, Listable, MenuCategory, PlausibilityRules, PunkteKategorien, RefEntries, Script, Sortable, }; use crate::model::{Haeufigkeiten, Ordner}; use crate::profile::Profile; #[derive(Serialize, Deserialize, Debug)] #[serde(deny_unknown_fields)] 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")] #[serde(skip_serializing_if = "Option::is_none")] befragung_relevant: Option, #[serde(rename = "Hotkey")] #[serde(skip_serializing_if = "Option::is_none")] hotkey: Option, #[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, #[serde(rename = "ErkrankungText", default)] #[serde(skip_serializing_if = "Option::is_none")] erkrankung_text: Option, #[serde(rename = "ErkrankungTextLong")] #[serde(skip_serializing_if = "Option::is_none")] erkrankung_text_long: Option, #[serde(rename = "ErkrankungProzedurText")] #[serde(skip_serializing_if = "Option::is_none")] erkrankung_prozedur_text: Option, #[serde(rename = "ErkrankungSummary")] #[serde(skip_serializing_if = "Option::is_none")] erkrankung_summary: Option, #[serde(rename = "ErkrankungBigSummary")] #[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 = "ShowHistoryButton", default)] #[serde(skip_serializing_if = "Option::is_none")] show_history_button: Option, #[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")] #[serde(skip_serializing_if = "Option::is_none")] datenschutz_relevant: Option, #[serde(rename = "KonferenzRelevant")] konferenz_relevant: bool, #[serde(rename = "Drucken")] #[serde(skip_serializing_if = "Option::is_none")] drucken: Option, #[serde(rename = "hatUnterformulare")] hat_unterformulare: bool, #[serde(rename = "ScriptBeimSchliessen")] #[serde(skip_serializing_if = "Option::is_none")] script_beim_schliessen: Option