diff --git a/docs/blueprints/all/uml/all_domain_model.txt b/docs/blueprints/all/uml/all_domain_model.txt index 16a58d96d8b6788602770b4443c6b239feebd210..437d0943d92bd0f6a8e2e6e7da593e71809fa4d2 100644 --- a/docs/blueprints/all/uml/all_domain_model.txt +++ b/docs/blueprints/all/uml/all_domain_model.txt @@ -1,496 +1,164 @@ @startuml - -interface AllImportFull { - {classifier} download_file() - {classifier} import_file() - {classifier} full_update_dimension_tables() - {classifier} full_update_fact_table() - {classifier} full_update_star_schema() -} - -interface AllImportIncrement { - {classifier} download_file() - {classifier} import_file() - {classifier} update_dimension_tables() - {classifier} update_fact_table() - {classifier} update_star_schema() -} - -interface DataImport { - datum_reported: Date - location: String - location_group: String - {classifier} download_file() - {classifier} import_file() - {classifier} full_update_dimension_tables() - {classifier} full_update_fact_table() - {classifier} full_update_star_schema() - {classifier} update_dimension_tables() - {classifier} update_fact_table() - {classifier} update_star_schema() -} - -entity WhoImport { - id: Integer - date_reported: String - country_code: String - country: String - who_region: String - new_cases: String - cumulative_cases: String - new_deaths: String - cumulative_deaths: String - {classifier} download_file() - {classifier} import_file() - {classifier} full_update_dimension_tables() - {classifier} full_update_fact_table() - {classifier} full_update_star_schema() - {classifier} update_dimension_tables() - {classifier} update_fact_table() - {classifier} update_star_schema() -} - -entity EcdcImport { +package covid19.blueprints.all { +entity ApplicationDateReported { id: Integer - date_rep: String - date_rep_day: String - date_rep_month: String - date_rep_year: String - cases: String - deaths: String - pop_data_2019: String - countries_and_territories: String - geo_id: String - country_territory_code: String - continent_exp: String - cumulative_number_for_14_days_of_covid19_cases_per_100000: String - {classifier} download_file() - {classifier} import_file() - {classifier} full_update_dimension_tables() - {classifier} full_update_fact_table() - {classifier} full_update_star_schema() - {classifier} update_dimension_tables() - {classifier} update_fact_table() - {classifier} update_star_schema() -} - - -entity RkiVaccinationImport { - id: Integer - dosen_kumulativ: Integer - dosen_differenz_zum_vortag: Integer - dosen_biontech_kumulativ: Integer - dosen_moderna_kumulativ: Integer - personen_erst_kumulativ: Integer - personen_voll_kumulativ: Integer - impf_quote_erst: Float - impf_quote_voll: Float - indikation_alter_dosen: Integer - indikation_beruf_dosen: Integer - indikation_medizinisch_dosen: Integer - indikation_pflegeheim_dosen: Integer - indikation_alter_erst: Integer - indikation_beruf_erst: Integer - indikation_medizinisch_erst: Integer - indikation_pflegeheim_erst: Integer - indikation_alter_voll: Integer - indikation_beruf_voll: Integer - indikation_medizinisch_voll: Integer - indikation_pflegeheim_voll: Integer - date_reported: String - {classifier} download_file() - {classifier} import_file() - {classifier} full_update_dimension_tables() - {classifier} full_update_fact_table() - {classifier} full_update_star_schema() - {classifier} update_dimension_tables() - {classifier} update_fact_table() - {classifier} update_star_schema() -} - -entity RkiCasesImport { - id: Integer - fid: String - id_bundesland: String - bundesland: String - landkreis: String - altersgruppe: String - geschlecht: String - anzahl_fall: String - anzahl_todesfall: String - meldedatum: String - id_landkreis: String - datenstand: String - neuer_fall: String - neuer_todesfall: String - ref_datum: String - neu_genesen: String - anzahl_genesen: String - ist_erkrankungsbeginn: String - altersgruppe2: String - {classifier} download_file() - {classifier} import_file() - {classifier} full_update_dimension_tables() - {classifier} full_update_fact_table() - {classifier} full_update_star_schema() - {classifier} update_dimension_tables() - {classifier} update_fact_table() - {classifier} update_star_schema() -} - - -entity OwidImport { - id: Integer - iso_code: String - continent: String - location: String - date: String - total_cases: String - new_cases: String - new_cases_smoothed: String - total_deaths: String - new_deaths: String - new_deaths_smoothed: String - total_cases_per_million: String - new_cases_per_million: String - new_cases_smoothed_per_million: String - total_deaths_per_million: String - new_deaths_per_million: String - new_deaths_smoothed_per_million: String - reproduction_rate: String - icu_patients: String - icu_patients_per_million: String - hosp_patients: String - hosp_patients_per_million: String - weekly_icu_admissions: String - weekly_icu_admissions_per_million: String - weekly_hosp_admissions: String - weekly_hosp_admissions_per_million: String - new_tests: String - total_tests: String - total_tests_per_thousand: String - new_tests_per_thousand: String - new_tests_smoothed: String - new_tests_smoothed_per_thousand: String - positive_rate: String - tests_per_case: String - tests_units: String - total_vaccinations: String - people_vaccinated: String - people_fully_vaccinated: String - new_vaccinations: String - new_vaccinations_smoothed: String - total_vaccinations_per_hundred: String - people_vaccinated_per_hundred: String - people_fully_vaccinated_per_hundred: String - new_vaccinations_smoothed_per_million: String - stringency_index: String - population: String - population_density: String - median_age: String - aged_65_older: String - aged_70_older: String - gdp_per_capita: String - extreme_poverty: String - cardiovasc_death_rate: String - diabetes_prevalence: String - female_smokers: String - male_smokers: String - handwashing_facilities: String - hospital_beds_per_thousand: String - life_expectancy: String - human_development_index: String - {classifier} download_file() - {classifier} import_file() - {classifier} full_update_dimension_tables() - {classifier} full_update_fact_table() - {classifier} full_update_star_schema() - {classifier} update_dimension_tables() - {classifier} update_fact_table() - {classifier} update_star_schema() -} - -interface AllFlat { - id: Integer - datum_reported: Date + date_reported: String + year_week: String + datum: Date year: Integer month: Integer day_of_month: Integer - day_of_year: Integer day_of_week: Integer week_of_year: Integer - year_week: String - day_of_week_str: String - month_str: String - location: String - location_group: String - {classifier} import_file_flat() - {classifier} get_years(): Integer[] - {classifier} get_days(): Date[] - {classifier} get_days_for_year(year: Integer): Date[] - {classifier} get_location_groups(): String[] - {classifier} get_locations_for_location_group(location_group: String): String[] - {classifier} get_data_for_location(location: String): AllFlat[] - {classifier} get_data_for_day(datum_reported: Date): AllFlat[] + get_name_for_weekday() + {classifier} get_names_for_weekday() + {classifier} get_datum_parts(my_date_rep: String) + {classifier} get_datum(my_year: Integer, my_month: Integer, my_day: Integer) + {classifier} get_datum_as_str(my_year: Integer, my_month: Integer, my_day: Integer) + {classifier} my_year_week(my_iso_year: Integer, week_number: Integer) + {classifier} create_new_object_factory(my_date_rep: String) } - -entity WhoFlat { +entity ApplicationRegion { id: Integer - datum_reported: Date - year: Integer - month: Integer - day_of_month: Integer - day_of_year: Integer - day_of_week: Integer - week_of_year: Integer - year_week: String - day_of_week_str: String - month_str: String - location: String - location_group: String - date_reported: String - country_code: String - country: String - who_region: String - new_cases: String - cumulative_cases: String - new_deaths: String - cumulative_deaths: String - {classifier} import_file_flat() - {classifier} get_years(): Integer[] - {classifier} get_days(): Date[] - {classifier} get_days_for_year(year: Integer): Date[] - {classifier} get_location_groups(): String[] - {classifier} get_locations_for_location_group(location_group: String): String[] - {classifier} get_data_for_location(location: String): WhoFlat[] - {classifier} get_data_for_day(datum_reported: Date): WhoFlat[] + continent: String + {classifier} remove_all() + {classifier} get_all_as_page(page: Integer) + {classifier} get_all() + {classifier} get_all_as_dict() + {classifier} get_by_id(other_id: Integer) + {classifier} find_by_id(other_id: Integer) } - -entity EcdcFlat { +entity RkiDateReported { id: Integer - datum_reported: Date + date_reported: String + year_week: String + datum: Date year: Integer month: Integer day_of_month: Integer - day_of_year: Integer day_of_week: Integer week_of_year: Integer - year_week: String - day_of_week_str: String - month_str: String - location: String - location_group: String - date_rep: String - date_rep_day: String - date_rep_month: String - date_rep_year: String - cases: String - deaths: String - pop_data_2019: String - countries_and_territories: String - geo_id: String - country_territory_code: String - continent_exp: String - cumulative_number_for_14_days_of_covid19_cases_per_100000: String - {classifier} import_file_flat() - {classifier} get_years(): Integer[] - {classifier} get_days(): Date[] - {classifier} get_days_for_year(year: Integer): Date[] - {classifier} get_location_groups(): String[] - {classifier} get_locations_for_location_group(location_group: String): String[] - {classifier} get_data_for_location(location: String): EcdcFlat[] - {classifier} get_data_for_day(datum_reported: Date): EcdcFlat[] + get_name_for_weekday() + {classifier} get_names_for_weekday() + {classifier} get_datum_parts(my_date_rep: String) + {classifier} get_datum(my_year: Integer, my_month: Integer, my_day: Integer) + {classifier} get_datum_as_str(my_year: Integer, my_month: Integer, my_day: Integer) + {classifier} my_year_week(my_iso_year: Integer, week_number: Integer) + {classifier} create_new_object_factory(my_date_rep: String) +} +class ApplicationPage << (T,#FF7700) Transient >> { + title: String + subtitle: String + subtitle_info: String } +class ApplicationServiceConfig << (T,#FF7700) Transient >> { + limit_nr: Integer + data_path: String + slug: String + category: String + sub_category: String + tablename: String + cvsfile_name: String + url_src: String + cvsfile_path: String + msg_job: String + msg_ok: String + msg_error: String + create_config_for_who() + create_config_for_rki_vaccination() + create_config_for_owid() + create_config_for_ecdc() + create_config_for_rki_bundeslaender() + create_config_for_rki_landkreise() +} +class ApplicationServiceDownload << (S,red) Service >> { + -log_error() + -log_success() + -prepare_download() + -download_with_wget() + -download_with_subprocess_and_os_native_wget() + download_file() +} +class database << (S,#FF7700) Singleton >> { + {static} int port + {static} bool run_run_with_debug + {static} int ITEMS_PER_PAGE + app: Flask + db: SQLAlchemy + admin: Admin + app_cors: CORS + app_bootstrap: Bootstrap + create_app() + create_db(my_app) + create_db_test(my_app) + create_celery(my_app) + create_admin(my_app) +} +class application_workers << (B,orchid) Boundary >> { + run_mq(my_app, my_celery) + run_app(my_app) +} +class application_views << (B,orchid) Boundary >> { + url_home() + url_root() +} +class application_services << (P,yellow) Proxy >> { -entity RkiVaccinationFlat { - id: Integer - datum_reported: Date - year: Integer - month: Integer - day_of_month: Integer - day_of_year: Integer - day_of_week: Integer - week_of_year: Integer - year_week: String - day_of_week_str: String - month_str: String - location: String - location_group: String - dosen_kumulativ: Integer - dosen_differenz_zum_vortag: Integer - dosen_biontech_kumulativ: Integer - dosen_moderna_kumulativ: Integer - personen_erst_kumulativ: Integer - personen_voll_kumulativ: Integer - impf_quote_erst: Float - impf_quote_voll: Float - indikation_alter_dosen: Integer - indikation_beruf_dosen: Integer - indikation_medizinisch_dosen: Integer - indikation_pflegeheim_dosen: Integer - indikation_alter_erst: Integer - indikation_beruf_erst: Integer - indikation_medizinisch_erst: Integer - indikation_pflegeheim_erst: Integer - indikation_alter_voll: Integer - indikation_beruf_voll: Integer - indikation_medizinisch_voll: Integer - indikation_pflegeheim_voll: Integer - date_reported: String - {classifier} import_file_flat() - {classifier} get_years(): Integer[] - {classifier} get_days(): Date[] - {classifier} get_days_for_year(year: Integer): Date[] - {classifier} get_location_groups(): String[] - {classifier} get_locations_for_location_group(location_group: String): String[] - {classifier} get_data_for_location(location: String): RkiVaccinationFlat[] - {classifier} get_data_for_day(datum_reported: Date): RkiVaccinationFlat[] } +class ApplicationService << (S,red) Service >> { -entity RkiCasesFlat { - id: Integer - datum_reported: Date - year: Integer - month: Integer - day_of_month: Integer - day_of_year: Integer - day_of_week: Integer - week_of_year: Integer - year_week: String - day_of_week_str: String - month_str: String - location: String - location_group: String - fid: String - id_bundesland: String - bundesland: String - landkreis: String - altersgruppe: String - geschlecht: String - anzahl_fall: String - anzahl_todesfall: String - meldedatum: String - id_landkreis: String - datenstand: String - neuer_fall: String - neuer_todesfall: String - ref_datum: String - neu_genesen: String - anzahl_genesen: String - ist_erkrankungsbeginn: String - altersgruppe2: String - {classifier} import_file_flat() - {classifier} get_years(): Integer[] - {classifier} get_days(): Date[] - {classifier} get_days_for_year(year: Integer): Date[] - {classifier} get_location_groups(): String[] - {classifier} get_locations_for_location_group(location_group: String): String[] - {classifier} get_data_for_location(location: String): RkiCasesFlat[] - {classifier} get_data_for_day(datum_reported: Date): RkiCasesFlat[] } +class AdminService << (S,red) Service >> { -entity OwidFlat { - id: Integer - datum_reported: Date - year: Integer - month: Integer - day_of_month: Integer - day_of_year: Integer - day_of_week: Integer - week_of_year: Integer - year_week: String - day_of_week_str: String - month_str: String - location: String - location_group: String - iso_code: String - continent: String - location: String - date: String - total_cases: String - new_cases: String - new_cases_smoothed: String - total_deaths: String - new_deaths: String - new_deaths_smoothed: String - total_cases_per_million: String - new_cases_per_million: String - new_cases_smoothed_per_million: String - total_deaths_per_million: String - new_deaths_per_million: String - new_deaths_smoothed_per_million: String - reproduction_rate: String - icu_patients: String - icu_patients_per_million: String - hosp_patients: String - hosp_patients_per_million: String - weekly_icu_admissions: String - weekly_icu_admissions_per_million: String - weekly_hosp_admissions: String - weekly_hosp_admissions_per_million: String - new_tests: String - total_tests: String - total_tests_per_thousand: String - new_tests_per_thousand: String - new_tests_smoothed: String - new_tests_smoothed_per_thousand: String - positive_rate: String - tests_per_case: String - tests_units: String - total_vaccinations: String - people_vaccinated: String - people_fully_vaccinated: String - new_vaccinations: String - new_vaccinations_smoothed: String - total_vaccinations_per_hundred: String - people_vaccinated_per_hundred: String - people_fully_vaccinated_per_hundred: String - new_vaccinations_smoothed_per_million: String - stringency_index: String - population: String - population_density: String - median_age: String - aged_65_older: String - aged_70_older: String - gdp_per_capita: String - extreme_poverty: String - cardiovasc_death_rate: String - diabetes_prevalence: String - female_smokers: String - male_smokers: String - handwashing_facilities: String - hospital_beds_per_thousand: String - life_expectancy: String - human_development_index: String - {classifier} import_file_flat() - {classifier} get_years(): Integer[] - {classifier} get_days(): Date[] - {classifier} get_days_for_year(year: Integer): Date[] - {classifier} get_location_groups(): String[] - {classifier} get_locations_for_location_group(location_group: String): String[] - {classifier} get_data_for_location(location: String): OwidFlat[] - {classifier} get_data_for_day(datum_reported: Date): OwidFlat[] } +class WhoService << (S,red) Service >> { -AllImportFull <|-- DataImport -AllImportIncrement <|-- DataImport -DataImport <|-- AllFlat +} +class EcdcService << (S,red) Service >> { -DataImport <|-- WhoImport -DataImport <|-- EcdcImport -DataImport <|-- RkiVaccinationImport -DataImport <|-- RkiCasesImport -DataImport <|-- OwidImport +} +class RkiVaccinationService << (S,red) Service >> { -AllFlat <|-- WhoFlat -AllFlat <|-- EcdcFlat -AllFlat <|-- RkiVaccinationFlat -AllFlat <|-- RkiCasesFlat -AllFlat <|-- OwidFlat +} +class RkiBundeslaenderService << (S,red) Service >> { + +} +class RkiLandkreiseService << (S,red) Service >> { -WhoImport <|-- WhoFlat -EcdcImport <|-- EcdcFlat -RkiVaccinationImport <|-- RkiVaccinationFlat -RkiCasesImport <|-- RkiCasesFlat -OwidImport <|-- OwidFlat +} +class OwidService << (S,red) Service >> { + +} +} +ApplicationDateReported <|-- RkiDateReported +ApplicationServiceDownload "*" --> "1" ApplicationServiceConfig: cfg +application_workers "1" --> "1" application_services: application_services +application_views "1" --> "1" application_services: application_services +application_views "*" --> "1" ApplicationPage: page_info +application_services "*" --> "1" ApplicationService: application_service +application_services "*" --> "1" AdminService: admin_service +application_services "*" --> "1" WhoService: who_service +application_services "*" --> "1" EcdcService: ecdc_service +application_services "*" --> "1" RkiVaccinationService: rki_vaccination_service +application_services "*" --> "1" RkiBundeslaenderService: rki_service_bundeslaender +application_services "*" --> "1" RkiLandkreiseService: rki_service_landkreise +application_services "*" --> "1" OwidService: owid_service +ApplicationService "*" --> "1" database +ApplicationServiceDownload "*" --> "1" database +AdminService "*" --> "1" database +WhoService "*" --> "1" database +EcdcService "*" --> "1" database +RkiBundeslaenderService "*" --> "1" database +RkiLandkreiseService "*" --> "1" database +RkiVaccinationService "*" --> "1" database +OwidService "*" --> "1" database +ApplicationService : SQLAlchemy database +ApplicationServiceDownload : SQLAlchemy database +AdminService : SQLAlchemy database +WhoService : SQLAlchemy database +EcdcService : SQLAlchemy database +RkiBundeslaenderService : SQLAlchemy database +RkiLandkreiseService : SQLAlchemy database +RkiVaccinationService : SQLAlchemy database +OwidService : SQLAlchemy database @enduml diff --git a/docs/blueprints/all/uml/all_domain_model_import.txt b/docs/blueprints/all/uml/all_domain_model_import.txt new file mode 100644 index 0000000000000000000000000000000000000000..16a58d96d8b6788602770b4443c6b239feebd210 --- /dev/null +++ b/docs/blueprints/all/uml/all_domain_model_import.txt @@ -0,0 +1,496 @@ +@startuml + +interface AllImportFull { + {classifier} download_file() + {classifier} import_file() + {classifier} full_update_dimension_tables() + {classifier} full_update_fact_table() + {classifier} full_update_star_schema() +} + +interface AllImportIncrement { + {classifier} download_file() + {classifier} import_file() + {classifier} update_dimension_tables() + {classifier} update_fact_table() + {classifier} update_star_schema() +} + +interface DataImport { + datum_reported: Date + location: String + location_group: String + {classifier} download_file() + {classifier} import_file() + {classifier} full_update_dimension_tables() + {classifier} full_update_fact_table() + {classifier} full_update_star_schema() + {classifier} update_dimension_tables() + {classifier} update_fact_table() + {classifier} update_star_schema() +} + +entity WhoImport { + id: Integer + date_reported: String + country_code: String + country: String + who_region: String + new_cases: String + cumulative_cases: String + new_deaths: String + cumulative_deaths: String + {classifier} download_file() + {classifier} import_file() + {classifier} full_update_dimension_tables() + {classifier} full_update_fact_table() + {classifier} full_update_star_schema() + {classifier} update_dimension_tables() + {classifier} update_fact_table() + {classifier} update_star_schema() +} + +entity EcdcImport { + id: Integer + date_rep: String + date_rep_day: String + date_rep_month: String + date_rep_year: String + cases: String + deaths: String + pop_data_2019: String + countries_and_territories: String + geo_id: String + country_territory_code: String + continent_exp: String + cumulative_number_for_14_days_of_covid19_cases_per_100000: String + {classifier} download_file() + {classifier} import_file() + {classifier} full_update_dimension_tables() + {classifier} full_update_fact_table() + {classifier} full_update_star_schema() + {classifier} update_dimension_tables() + {classifier} update_fact_table() + {classifier} update_star_schema() +} + + +entity RkiVaccinationImport { + id: Integer + dosen_kumulativ: Integer + dosen_differenz_zum_vortag: Integer + dosen_biontech_kumulativ: Integer + dosen_moderna_kumulativ: Integer + personen_erst_kumulativ: Integer + personen_voll_kumulativ: Integer + impf_quote_erst: Float + impf_quote_voll: Float + indikation_alter_dosen: Integer + indikation_beruf_dosen: Integer + indikation_medizinisch_dosen: Integer + indikation_pflegeheim_dosen: Integer + indikation_alter_erst: Integer + indikation_beruf_erst: Integer + indikation_medizinisch_erst: Integer + indikation_pflegeheim_erst: Integer + indikation_alter_voll: Integer + indikation_beruf_voll: Integer + indikation_medizinisch_voll: Integer + indikation_pflegeheim_voll: Integer + date_reported: String + {classifier} download_file() + {classifier} import_file() + {classifier} full_update_dimension_tables() + {classifier} full_update_fact_table() + {classifier} full_update_star_schema() + {classifier} update_dimension_tables() + {classifier} update_fact_table() + {classifier} update_star_schema() +} + +entity RkiCasesImport { + id: Integer + fid: String + id_bundesland: String + bundesland: String + landkreis: String + altersgruppe: String + geschlecht: String + anzahl_fall: String + anzahl_todesfall: String + meldedatum: String + id_landkreis: String + datenstand: String + neuer_fall: String + neuer_todesfall: String + ref_datum: String + neu_genesen: String + anzahl_genesen: String + ist_erkrankungsbeginn: String + altersgruppe2: String + {classifier} download_file() + {classifier} import_file() + {classifier} full_update_dimension_tables() + {classifier} full_update_fact_table() + {classifier} full_update_star_schema() + {classifier} update_dimension_tables() + {classifier} update_fact_table() + {classifier} update_star_schema() +} + + +entity OwidImport { + id: Integer + iso_code: String + continent: String + location: String + date: String + total_cases: String + new_cases: String + new_cases_smoothed: String + total_deaths: String + new_deaths: String + new_deaths_smoothed: String + total_cases_per_million: String + new_cases_per_million: String + new_cases_smoothed_per_million: String + total_deaths_per_million: String + new_deaths_per_million: String + new_deaths_smoothed_per_million: String + reproduction_rate: String + icu_patients: String + icu_patients_per_million: String + hosp_patients: String + hosp_patients_per_million: String + weekly_icu_admissions: String + weekly_icu_admissions_per_million: String + weekly_hosp_admissions: String + weekly_hosp_admissions_per_million: String + new_tests: String + total_tests: String + total_tests_per_thousand: String + new_tests_per_thousand: String + new_tests_smoothed: String + new_tests_smoothed_per_thousand: String + positive_rate: String + tests_per_case: String + tests_units: String + total_vaccinations: String + people_vaccinated: String + people_fully_vaccinated: String + new_vaccinations: String + new_vaccinations_smoothed: String + total_vaccinations_per_hundred: String + people_vaccinated_per_hundred: String + people_fully_vaccinated_per_hundred: String + new_vaccinations_smoothed_per_million: String + stringency_index: String + population: String + population_density: String + median_age: String + aged_65_older: String + aged_70_older: String + gdp_per_capita: String + extreme_poverty: String + cardiovasc_death_rate: String + diabetes_prevalence: String + female_smokers: String + male_smokers: String + handwashing_facilities: String + hospital_beds_per_thousand: String + life_expectancy: String + human_development_index: String + {classifier} download_file() + {classifier} import_file() + {classifier} full_update_dimension_tables() + {classifier} full_update_fact_table() + {classifier} full_update_star_schema() + {classifier} update_dimension_tables() + {classifier} update_fact_table() + {classifier} update_star_schema() +} + +interface AllFlat { + id: Integer + datum_reported: Date + year: Integer + month: Integer + day_of_month: Integer + day_of_year: Integer + day_of_week: Integer + week_of_year: Integer + year_week: String + day_of_week_str: String + month_str: String + location: String + location_group: String + {classifier} import_file_flat() + {classifier} get_years(): Integer[] + {classifier} get_days(): Date[] + {classifier} get_days_for_year(year: Integer): Date[] + {classifier} get_location_groups(): String[] + {classifier} get_locations_for_location_group(location_group: String): String[] + {classifier} get_data_for_location(location: String): AllFlat[] + {classifier} get_data_for_day(datum_reported: Date): AllFlat[] +} + +entity WhoFlat { + id: Integer + datum_reported: Date + year: Integer + month: Integer + day_of_month: Integer + day_of_year: Integer + day_of_week: Integer + week_of_year: Integer + year_week: String + day_of_week_str: String + month_str: String + location: String + location_group: String + date_reported: String + country_code: String + country: String + who_region: String + new_cases: String + cumulative_cases: String + new_deaths: String + cumulative_deaths: String + {classifier} import_file_flat() + {classifier} get_years(): Integer[] + {classifier} get_days(): Date[] + {classifier} get_days_for_year(year: Integer): Date[] + {classifier} get_location_groups(): String[] + {classifier} get_locations_for_location_group(location_group: String): String[] + {classifier} get_data_for_location(location: String): WhoFlat[] + {classifier} get_data_for_day(datum_reported: Date): WhoFlat[] +} + +entity EcdcFlat { + id: Integer + datum_reported: Date + year: Integer + month: Integer + day_of_month: Integer + day_of_year: Integer + day_of_week: Integer + week_of_year: Integer + year_week: String + day_of_week_str: String + month_str: String + location: String + location_group: String + date_rep: String + date_rep_day: String + date_rep_month: String + date_rep_year: String + cases: String + deaths: String + pop_data_2019: String + countries_and_territories: String + geo_id: String + country_territory_code: String + continent_exp: String + cumulative_number_for_14_days_of_covid19_cases_per_100000: String + {classifier} import_file_flat() + {classifier} get_years(): Integer[] + {classifier} get_days(): Date[] + {classifier} get_days_for_year(year: Integer): Date[] + {classifier} get_location_groups(): String[] + {classifier} get_locations_for_location_group(location_group: String): String[] + {classifier} get_data_for_location(location: String): EcdcFlat[] + {classifier} get_data_for_day(datum_reported: Date): EcdcFlat[] +} + +entity RkiVaccinationFlat { + id: Integer + datum_reported: Date + year: Integer + month: Integer + day_of_month: Integer + day_of_year: Integer + day_of_week: Integer + week_of_year: Integer + year_week: String + day_of_week_str: String + month_str: String + location: String + location_group: String + dosen_kumulativ: Integer + dosen_differenz_zum_vortag: Integer + dosen_biontech_kumulativ: Integer + dosen_moderna_kumulativ: Integer + personen_erst_kumulativ: Integer + personen_voll_kumulativ: Integer + impf_quote_erst: Float + impf_quote_voll: Float + indikation_alter_dosen: Integer + indikation_beruf_dosen: Integer + indikation_medizinisch_dosen: Integer + indikation_pflegeheim_dosen: Integer + indikation_alter_erst: Integer + indikation_beruf_erst: Integer + indikation_medizinisch_erst: Integer + indikation_pflegeheim_erst: Integer + indikation_alter_voll: Integer + indikation_beruf_voll: Integer + indikation_medizinisch_voll: Integer + indikation_pflegeheim_voll: Integer + date_reported: String + {classifier} import_file_flat() + {classifier} get_years(): Integer[] + {classifier} get_days(): Date[] + {classifier} get_days_for_year(year: Integer): Date[] + {classifier} get_location_groups(): String[] + {classifier} get_locations_for_location_group(location_group: String): String[] + {classifier} get_data_for_location(location: String): RkiVaccinationFlat[] + {classifier} get_data_for_day(datum_reported: Date): RkiVaccinationFlat[] +} + +entity RkiCasesFlat { + id: Integer + datum_reported: Date + year: Integer + month: Integer + day_of_month: Integer + day_of_year: Integer + day_of_week: Integer + week_of_year: Integer + year_week: String + day_of_week_str: String + month_str: String + location: String + location_group: String + fid: String + id_bundesland: String + bundesland: String + landkreis: String + altersgruppe: String + geschlecht: String + anzahl_fall: String + anzahl_todesfall: String + meldedatum: String + id_landkreis: String + datenstand: String + neuer_fall: String + neuer_todesfall: String + ref_datum: String + neu_genesen: String + anzahl_genesen: String + ist_erkrankungsbeginn: String + altersgruppe2: String + {classifier} import_file_flat() + {classifier} get_years(): Integer[] + {classifier} get_days(): Date[] + {classifier} get_days_for_year(year: Integer): Date[] + {classifier} get_location_groups(): String[] + {classifier} get_locations_for_location_group(location_group: String): String[] + {classifier} get_data_for_location(location: String): RkiCasesFlat[] + {classifier} get_data_for_day(datum_reported: Date): RkiCasesFlat[] +} + +entity OwidFlat { + id: Integer + datum_reported: Date + year: Integer + month: Integer + day_of_month: Integer + day_of_year: Integer + day_of_week: Integer + week_of_year: Integer + year_week: String + day_of_week_str: String + month_str: String + location: String + location_group: String + iso_code: String + continent: String + location: String + date: String + total_cases: String + new_cases: String + new_cases_smoothed: String + total_deaths: String + new_deaths: String + new_deaths_smoothed: String + total_cases_per_million: String + new_cases_per_million: String + new_cases_smoothed_per_million: String + total_deaths_per_million: String + new_deaths_per_million: String + new_deaths_smoothed_per_million: String + reproduction_rate: String + icu_patients: String + icu_patients_per_million: String + hosp_patients: String + hosp_patients_per_million: String + weekly_icu_admissions: String + weekly_icu_admissions_per_million: String + weekly_hosp_admissions: String + weekly_hosp_admissions_per_million: String + new_tests: String + total_tests: String + total_tests_per_thousand: String + new_tests_per_thousand: String + new_tests_smoothed: String + new_tests_smoothed_per_thousand: String + positive_rate: String + tests_per_case: String + tests_units: String + total_vaccinations: String + people_vaccinated: String + people_fully_vaccinated: String + new_vaccinations: String + new_vaccinations_smoothed: String + total_vaccinations_per_hundred: String + people_vaccinated_per_hundred: String + people_fully_vaccinated_per_hundred: String + new_vaccinations_smoothed_per_million: String + stringency_index: String + population: String + population_density: String + median_age: String + aged_65_older: String + aged_70_older: String + gdp_per_capita: String + extreme_poverty: String + cardiovasc_death_rate: String + diabetes_prevalence: String + female_smokers: String + male_smokers: String + handwashing_facilities: String + hospital_beds_per_thousand: String + life_expectancy: String + human_development_index: String + {classifier} import_file_flat() + {classifier} get_years(): Integer[] + {classifier} get_days(): Date[] + {classifier} get_days_for_year(year: Integer): Date[] + {classifier} get_location_groups(): String[] + {classifier} get_locations_for_location_group(location_group: String): String[] + {classifier} get_data_for_location(location: String): OwidFlat[] + {classifier} get_data_for_day(datum_reported: Date): OwidFlat[] +} + +AllImportFull <|-- DataImport +AllImportIncrement <|-- DataImport +DataImport <|-- AllFlat + +DataImport <|-- WhoImport +DataImport <|-- EcdcImport +DataImport <|-- RkiVaccinationImport +DataImport <|-- RkiCasesImport +DataImport <|-- OwidImport + +AllFlat <|-- WhoFlat +AllFlat <|-- EcdcFlat +AllFlat <|-- RkiVaccinationFlat +AllFlat <|-- RkiCasesFlat +AllFlat <|-- OwidFlat + +WhoImport <|-- WhoFlat +EcdcImport <|-- EcdcFlat +RkiVaccinationImport <|-- RkiVaccinationFlat +RkiCasesImport <|-- RkiCasesFlat +OwidImport <|-- OwidFlat +@enduml diff --git a/docs/blueprints/all/uml/img/all_domain_model.png b/docs/blueprints/all/uml/img/all_domain_model.png new file mode 100644 index 0000000000000000000000000000000000000000..15fe7d4b247cf6344208624b0c2ecb92c17ad93d Binary files /dev/null and b/docs/blueprints/all/uml/img/all_domain_model.png differ diff --git a/docs/blueprints/all/uml/img/all_domain_model_impl.png b/docs/blueprints/all/uml/img/all_domain_model_impl.png new file mode 100644 index 0000000000000000000000000000000000000000..15fe7d4b247cf6344208624b0c2ecb92c17ad93d Binary files /dev/null and b/docs/blueprints/all/uml/img/all_domain_model_impl.png differ diff --git a/docs/blueprints/all/uml/img/all_domain_model_import.png b/docs/blueprints/all/uml/img/all_domain_model_import.png new file mode 100644 index 0000000000000000000000000000000000000000..740530d8c3be33cdd444ea99daf07228bf5743a6 Binary files /dev/null and b/docs/blueprints/all/uml/img/all_domain_model_import.png differ diff --git a/docs/blueprints/all/uml/img/all_use_cases.png b/docs/blueprints/all/uml/img/all_use_cases.png new file mode 100644 index 0000000000000000000000000000000000000000..de21a76284f6971e58420ab977944980b6969f7e Binary files /dev/null and b/docs/blueprints/all/uml/img/all_use_cases.png differ diff --git a/docs/blueprints/all/uml/img/all_use_cases_impl.png b/docs/blueprints/all/uml/img/all_use_cases_impl.png new file mode 100644 index 0000000000000000000000000000000000000000..82c9f4ce2ebdb0db513b9112d3c8750e2590cba4 Binary files /dev/null and b/docs/blueprints/all/uml/img/all_use_cases_impl.png differ diff --git a/docs/blueprints/app_application/uml/img/app_admin_domain_model.png b/docs/blueprints/app_application/uml/img/app_admin_domain_model.png new file mode 100644 index 0000000000000000000000000000000000000000..b7294efeb19df012be9bdbdfa5907775d4d968cc Binary files /dev/null and b/docs/blueprints/app_application/uml/img/app_admin_domain_model.png differ diff --git a/docs/blueprints/app_application/uml/img/app_admin_domain_model_impl.png b/docs/blueprints/app_application/uml/img/app_admin_domain_model_impl.png new file mode 100644 index 0000000000000000000000000000000000000000..b7294efeb19df012be9bdbdfa5907775d4d968cc Binary files /dev/null and b/docs/blueprints/app_application/uml/img/app_admin_domain_model_impl.png differ diff --git a/docs/blueprints/app_application/uml/img/app_application_domain_model.png b/docs/blueprints/app_application/uml/img/app_application_domain_model.png new file mode 100644 index 0000000000000000000000000000000000000000..b7294efeb19df012be9bdbdfa5907775d4d968cc Binary files /dev/null and b/docs/blueprints/app_application/uml/img/app_application_domain_model.png differ diff --git a/docs/blueprints/app_application/uml/img/app_application_domain_model_impl.png b/docs/blueprints/app_application/uml/img/app_application_domain_model_impl.png new file mode 100644 index 0000000000000000000000000000000000000000..fafd0e7e816f0538b4b3c1563e3c5053bb200df5 Binary files /dev/null and b/docs/blueprints/app_application/uml/img/app_application_domain_model_impl.png differ diff --git a/docs/blueprints/app_application/uml/img/app_application_use_cases.png b/docs/blueprints/app_application/uml/img/app_application_use_cases.png new file mode 100644 index 0000000000000000000000000000000000000000..84cd4a3ef34af9337242c77190d7f367adb434b5 Binary files /dev/null and b/docs/blueprints/app_application/uml/img/app_application_use_cases.png differ diff --git a/docs/blueprints/app_application/uml/img/app_application_use_cases_impl.png b/docs/blueprints/app_application/uml/img/app_application_use_cases_impl.png new file mode 100644 index 0000000000000000000000000000000000000000..221d6c0f53256c3fbb8a180210ac9499913c5f92 Binary files /dev/null and b/docs/blueprints/app_application/uml/img/app_application_use_cases_impl.png differ diff --git a/docs/blueprints/app_user/uml/img/user_domain_model.png b/docs/blueprints/app_user/uml/img/user_domain_model.png new file mode 100644 index 0000000000000000000000000000000000000000..2da744014b383c8270b4676a733a21ae50ece3f9 Binary files /dev/null and b/docs/blueprints/app_user/uml/img/user_domain_model.png differ diff --git a/docs/blueprints/app_user/uml/img/user_domain_model_impl.png b/docs/blueprints/app_user/uml/img/user_domain_model_impl.png new file mode 100644 index 0000000000000000000000000000000000000000..2da744014b383c8270b4676a733a21ae50ece3f9 Binary files /dev/null and b/docs/blueprints/app_user/uml/img/user_domain_model_impl.png differ diff --git a/docs/blueprints/app_user/uml/img/user_use_cases.png b/docs/blueprints/app_user/uml/img/user_use_cases.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc3b246fb941d8ba3dac72a638d744b4b24b961 Binary files /dev/null and b/docs/blueprints/app_user/uml/img/user_use_cases.png differ diff --git a/docs/blueprints/app_user/uml/img/user_use_cases_impl.png b/docs/blueprints/app_user/uml/img/user_use_cases_impl.png new file mode 100644 index 0000000000000000000000000000000000000000..9682f6e8b5af9cefcbf9abbdbc7edaf6c0ec7fcd Binary files /dev/null and b/docs/blueprints/app_user/uml/img/user_use_cases_impl.png differ diff --git a/docs/blueprints/ecdc/uml/img/ecdc_domain_model.png b/docs/blueprints/ecdc/uml/img/ecdc_domain_model.png new file mode 100644 index 0000000000000000000000000000000000000000..68987908c387bbad8e74e3bc0453e1aeb185cd3d Binary files /dev/null and b/docs/blueprints/ecdc/uml/img/ecdc_domain_model.png differ diff --git a/docs/blueprints/ecdc/uml/img/ecdc_domain_model_impl.png b/docs/blueprints/ecdc/uml/img/ecdc_domain_model_impl.png new file mode 100644 index 0000000000000000000000000000000000000000..68987908c387bbad8e74e3bc0453e1aeb185cd3d Binary files /dev/null and b/docs/blueprints/ecdc/uml/img/ecdc_domain_model_impl.png differ diff --git a/docs/blueprints/ecdc/uml/img/ecdc_domain_model_import.png b/docs/blueprints/ecdc/uml/img/ecdc_domain_model_import.png new file mode 100644 index 0000000000000000000000000000000000000000..aa6d74ddfc31814bd5b5a16e2568473944ae12c0 Binary files /dev/null and b/docs/blueprints/ecdc/uml/img/ecdc_domain_model_import.png differ diff --git a/docs/blueprints/ecdc/uml/img/ecdc_use_cases.png b/docs/blueprints/ecdc/uml/img/ecdc_use_cases.png new file mode 100644 index 0000000000000000000000000000000000000000..cff8dc58b18f6c45640407fd3310f50f80cd5689 Binary files /dev/null and b/docs/blueprints/ecdc/uml/img/ecdc_use_cases.png differ diff --git a/docs/blueprints/ecdc/uml/img/ecdc_use_cases_impl.png b/docs/blueprints/ecdc/uml/img/ecdc_use_cases_impl.png new file mode 100644 index 0000000000000000000000000000000000000000..7ea254e1944ba2c98f92b1bad0ea06ecee72ea72 Binary files /dev/null and b/docs/blueprints/ecdc/uml/img/ecdc_use_cases_impl.png differ diff --git a/docs/blueprints/owid/uml/img/owid_domain_model.png b/docs/blueprints/owid/uml/img/owid_domain_model.png new file mode 100644 index 0000000000000000000000000000000000000000..3448f7515022efb23bbb5c821210c1e405eef1b9 Binary files /dev/null and b/docs/blueprints/owid/uml/img/owid_domain_model.png differ diff --git a/docs/blueprints/owid/uml/img/owid_domain_model_impl.png b/docs/blueprints/owid/uml/img/owid_domain_model_impl.png new file mode 100644 index 0000000000000000000000000000000000000000..3448f7515022efb23bbb5c821210c1e405eef1b9 Binary files /dev/null and b/docs/blueprints/owid/uml/img/owid_domain_model_impl.png differ diff --git a/docs/blueprints/owid/uml/img/owid_domain_model_import.png b/docs/blueprints/owid/uml/img/owid_domain_model_import.png new file mode 100644 index 0000000000000000000000000000000000000000..5d5796906ddb16cfa1640219de4d2165659f8224 Binary files /dev/null and b/docs/blueprints/owid/uml/img/owid_domain_model_import.png differ diff --git a/docs/blueprints/owid/uml/img/owid_use_cases.png b/docs/blueprints/owid/uml/img/owid_use_cases.png new file mode 100644 index 0000000000000000000000000000000000000000..e33673de6ffb18fcafe4eceda0fdf073fadc430c Binary files /dev/null and b/docs/blueprints/owid/uml/img/owid_use_cases.png differ diff --git a/docs/blueprints/owid/uml/img/owid_use_cases_impl.png b/docs/blueprints/owid/uml/img/owid_use_cases_impl.png new file mode 100644 index 0000000000000000000000000000000000000000..a639db03b47e7f828e9b7809388005e04acbe82a Binary files /dev/null and b/docs/blueprints/owid/uml/img/owid_use_cases_impl.png differ diff --git a/docs/blueprints/rki_cases/uml/img/rki_cases_domain_model.png b/docs/blueprints/rki_cases/uml/img/rki_cases_domain_model.png new file mode 100644 index 0000000000000000000000000000000000000000..3448f7515022efb23bbb5c821210c1e405eef1b9 Binary files /dev/null and b/docs/blueprints/rki_cases/uml/img/rki_cases_domain_model.png differ diff --git a/docs/blueprints/rki_cases/uml/img/rki_cases_domain_model_impl.png b/docs/blueprints/rki_cases/uml/img/rki_cases_domain_model_impl.png new file mode 100644 index 0000000000000000000000000000000000000000..3448f7515022efb23bbb5c821210c1e405eef1b9 Binary files /dev/null and b/docs/blueprints/rki_cases/uml/img/rki_cases_domain_model_impl.png differ diff --git a/docs/blueprints/rki_cases/uml/img/rki_cases_domain_model_import.png b/docs/blueprints/rki_cases/uml/img/rki_cases_domain_model_import.png new file mode 100644 index 0000000000000000000000000000000000000000..9b67b121445872c58972f07adf010f151419c875 Binary files /dev/null and b/docs/blueprints/rki_cases/uml/img/rki_cases_domain_model_import.png differ diff --git a/docs/blueprints/rki_cases/uml/img/rki_cases_use_cases.png b/docs/blueprints/rki_cases/uml/img/rki_cases_use_cases.png new file mode 100644 index 0000000000000000000000000000000000000000..8ea0c7e6c2604c9d2ec8c2783dbe6118ed59adf1 Binary files /dev/null and b/docs/blueprints/rki_cases/uml/img/rki_cases_use_cases.png differ diff --git a/docs/blueprints/rki_cases/uml/img/rki_cases_use_cases_impl.png b/docs/blueprints/rki_cases/uml/img/rki_cases_use_cases_impl.png new file mode 100644 index 0000000000000000000000000000000000000000..0874a52b23478bcd4d6f036819e9f1eb789b8f71 Binary files /dev/null and b/docs/blueprints/rki_cases/uml/img/rki_cases_use_cases_impl.png differ