BUILD_IN_PUBLIC // EXPERIMENTAL

GESTIONALE A3

ALLEGATO 3A ALLEGATO 3B D.LGS 81/08 TESTO UNICO

Un tentativo di gestionale "local-first" per la Medicina del Lavoro. Formattazione dati compatibile per l'invio degli Allegati 3B all' INAIL con standardizzazione della cartella sanitaria digitale (Allegato 3A).

SOURCE_CODE (GPL) DOCUMENTAZIONE
aziende_list_view.dart
convertitore_xml_3b.dart
visita_form.dart
calcolatore_3b.dart
aziende_list_view.dart
convertitore_xml_3b.dart
aziende_list_view.dart
convertitore_xml_3b.dart
visita_form.dart
calcolatore_3b.dart
aziende_list_view.dart
convertitore_xml_3b.dart

!!! ATTENZIONE

Software in stato PRE-ALPHA. L'architettura è soggetta a modifiche radicali. Utilizzare esclusivamente per test e ricerca.

01

CORE & DATABASE (DRIFT)

Definizione dello schema relazionale per l'archiviazione conforme agli Allegati 3A e 3B. Gestione automatizzata di Unità Produttive e Codici ATECO.

// data/database.dart
@DataClassName('Azienda')
class Aziende extends Table {
  IntColumn get id => integer().autoIncrement()();
  TextColumn get ragioneSociale => text()();
  TextColumn get codiceAteco => text()();
  // Dati occupazionali aggregati (3B)
  IntColumn get occupati3112Maschi => integer().withDefault(const Constant(0))();
  IntColumn get occupati3112Femmine => integer().withDefault(const Constant(0))();
}
                
02

CONFIGURAZIONE MEDICO

Centralizzazione dei dati del Medico Competente e gestione degli asset per la firma digitale nei PDF dei Giudizi di Idoneità.

// config_medico.dart
class ConfigMedico {
  static const String nome = "NOME";
  static const String codiceFiscale = "CFMEDICO12345678";
  static const String email = "medico@competente.it";

  // Asset firma per export PDF
  static const String pathFirma = "assets/images/firma.png";
}
                
03

SORVEGLIANZA SANITARIA

Tracking completo dei rischi (MMC, VDT, Rumore) e dei dati clinici necessari per la generazione automatica dell'Allegato 3A.

// data/database.dart (Table: Visite)
@DataClassName('Visita')
class Visite extends Table {
  IntColumn get lavoratoreId => integer().references(Lavoratori, #id)();
  DateTimeColumn get dataVisita => dateTime()();
  // ALLEGATO 3B - Rischi per Aggregazione
  BoolColumn get rMmc => boolean().withDefault(const Constant(false))();
  BoolColumn get rRumore => boolean().withDefault(const Constant(false))();
  IntColumn get giudizioIdoneita => integer()();
}
                
04

INAIL XML ENGINE

Motore di conversione per la generazione del file XML Allegato 3B. Trasformazione dei dati aggregati nel formato conforme alle specifiche tecniche INAIL.

// data/convertitore_xml_3b.dart
String generaXmlInail(Map<String, dynamic> dati) {
  final builder = XmlBuilder();
  builder.processing('xml', 'version="1.0" encoding="UTF-8"');
  builder.element('ComunicazioneAllegato3B', nest: () {
    builder.element('AnnoRiferimento', nest: dati['anno'].toString());
    final Azienda az = dati['azienda'];
    builder.element('DatiAzienda', nest: az.ragioneSociale);
  });
  return builder.buildDocument().toString();
}