/* * 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 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 = "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 = "hatUnterformulare")] hat_unterformulare: bool, #[serde(rename = "ScriptBeimSchliessen")] #[serde(skip_serializing_if = "Option::is_none")] script_beim_schliessen: Option