Arzamed

Ultimo aggiornamento: arzamed.md

Panoramica

  • Arzamed è un software gestionale per studi medici e dentistici che esporta i propri dati in file CSV.
  • La migrazione importa pazienti, note cliniche, aziende, prestazioni del listino, piani di cura con voci, fatture attive e passive, pagamenti, appuntamenti e (opzionalmente) documenti/immagini dei pazienti.
  • Il numero di anni di dati da importare deve essere indicato obbligatoriamente tramite l'opzione --converter-option=years=<valore>: i file CSV sono suddivisi per anno (es. fatture_1.csv, fatture_2.csv, ecc.) e il converter legge i file da 1 fino al valore indicato.
  • L'import dei documenti e immagini dei pazienti è opzionale e richiede il flag --converter-option=img-directory=<percorso>. Senza questo flag i file non vengono importati e viene mostrato un avviso. Attivarlo aumenta sensibilmente tempi di migrazione e dimensioni del backup.

Entità importate

  • Pazienti
  • Note cliniche
  • Aziende (fornitori/intestatari di fatture passive)
  • Prestazioni (listino)
  • Piani di cura
  • Voci di piano di cura
  • Fatture (attive e passive)
  • Righe di fattura
  • Pagamenti (transazioni)
  • Appuntamenti
  • Operatori
  • Documenti e immagini dei pazienti (opzionale)
  • Fonti di provenienza pazienti
  • Postazioni (studi/ambulatori)
  • Conti contabili (fittizi)
  • Metodi di pagamento

Campi importati

Pazienti

FieldNotes
NomeImportato direttamente dal CSV.
CognomeImportato direttamente dal CSV.
EmailEstratta dai campi Contatti, Contatti 2 o Contatti 3: viene usato il primo campo che inizia con il prefisso e-mail: (case-insensitive).
GenereNormalizzato: "maschio" → m, qualsiasi altro valore → f.
Codice fiscaleImportato direttamente dal CSV.
IndirizzoRicavato separando l'indirizzo dal CAP tramite split sulla stringa ", <CAP>".
ComuneImportato direttamente dal CSV.
ProvinciaConvertita dal nome esteso al codice provincia tramite tabella di mappatura interna. Se la provincia non è presente nella mappa, il campo rimane vuoto.
CAPTroncato a 5 caratteri se supera tale lunghezza.
Data di nascitaImportata e convertita in data; se assente il campo rimane vuoto.
Luogo di nascitaImportato direttamente dal CSV.
TelefoniI campi Contatti, Contatti 2 e Contatti 3 vengono trattati come numeri di telefono (salvo quelli riconosciuti come email).
Fonte di provenienzaRicavata dal campo "Segnalato da": vengono rimossi numeri e spazi e il risultato viene convertito in maiuscolo. Se il valore risultante è vuoto, nessuna fonte viene registrata.

Note cliniche

FieldNotes
PazienteCollegato tramite ID paziente.
ContenutoIl testo viene prefissato con il tipo di dato (es. "Tipo: Anamnesi") e formattato in HTML con interruzioni di riga. Le note con testo vuoto vengono scartate.
DataData della nota, nel formato dd/mm/YYYY HH:mm.
Data di creazioneUguale alla data della nota.

Aziende

FieldNotes
Ragione socialeImportata direttamente dal CSV.
Codice fiscaleImportato direttamente dal CSV.
Partita IVAObbligatoria: le aziende prive di partita IVA vengono scartate.
NazioneConvertita in minuscolo.
NoteConcatenazione dei campi Contatti, Contatti 2 e Contatti 3 separati da spazio.
IndirizzoImportato direttamente dal CSV.
ComuneImportato direttamente dal CSV.
ProvinciaImportata direttamente (non viene convertita al codice provincia come per i pazienti).
CAPImportato direttamente dal CSV.

Prestazioni (listino)

FieldNotes
CodiceImportato dal campo codice prestazione.
NomeImportato dal nome prestazione.
DescrizioneImportata dal campo "Attività associata".
DurataIn minuti, importata direttamente.
PrezzoAssociato a un listino prezzi fittizio denominato "Listino prezzi importato da Arzamed".

Piani di cura

FieldNotes
PazienteCollegato tramite mappatura nome/cognome paziente. I pazienti con nome duplicato e codice fiscale diverso non possono essere collegati ai piani di cura (viene emesso un avviso).
OperatoreCollegato tramite il nome dell'operatore presente nel CSV.
Nome"Prestazione importata da Arzamed <id>" se collegato a fattura, altrimenti "Prestazione importata da Arzamed".
Statoaccepted se la prestazione è collegata a una fattura; estimate se numero e anno fattura sono assenti.
BrancaSempre general.
Data accettazioneData della prestazione.
Data creazioneData della prestazione.

Voci di piano di cura

FieldNotes
PrestazioneCollegata tramite codice e nome; se la prestazione non esiste nel listino importato, viene creata al volo con solo codice e nome (senza durata o descrizione).
OperatoreCollegato tramite il nome dell'operatore.
PrezzoImportato dall'importo della prestazione.
Sconto assolutoImportato solo se il valore assoluto dello sconto è maggiore di zero.
EseguitaSempre impostata come eseguita (done = true).
Data esecuzioneData della prestazione.
Data creazioneData della prestazione.

Fatture

FieldNotes
Direzioneoutgoing (attiva) se intestata a paziente; incoming (passiva) se intestata ad azienda.
Piano di curaCollegato se esiste un piano di cura con id corrispondente; altrimenti viene creato un piano di cura fittizio "Piano per fatture importate da Arzamed" con stato closed.
TipoSempre full.
ImponibileImportato direttamente.
ScontoValore assoluto dello sconto.
Marca da bolloImportata direttamente.
Numero fatturaComposto come <numero>/<anno>.
Data emissioneImportata e convertita.
Dati intestatarioNome, cognome, indirizzo, comune e codice fiscale del cliente (ricavati dal CSV fattura).
Collegamento aziendaSe la partita IVA è presente tra le aziende importate, la fattura viene collegata all'azienda.
Impossibile importareSe il cliente non è trovato né tra i pazienti (per nome o codice fiscale) né tra le aziende (per partita IVA), la fattura viene scartata con avviso. Se vengono trovati più pazienti con lo stesso codice fiscale, la fattura viene scartata.

Righe di fattura

FieldNotes
Fattura collegataCollegata tramite numero e anno fattura.
Voce di piano di curaCollegata se la riga proviene da un file prestazioni.
DescrizioneNome della prestazione; se assente, "Prestazione importata da Arzamed". Per le fatture senza piano di cura preesistente, viene usato il campo "Servizi" del CSV fattura.
ImponibileImportato direttamente.
Aliquota IVACalcolata a partire dall'importo IVA e dall'importo totale tramite funzione interna.

Pagamenti (transazioni)

FieldNotes
Fattura collegataCollegata tramite l'ID fattura.
Tipoincoming per fatture attive (pazienti), outgoing per fatture passive (aziende).
Metodo di pagamentoMappato da colonne specifiche del CSV fattura: Contanti, POS, Bonifico, Carta di credito, Bancomat, Assegno, CUP Solidale, Bonifico bancario.
Contocash per contanti, bank per tutti gli altri metodi.
ImportoImportato direttamente dalla colonna del metodo di pagamento. I pagamenti con importo ≤ 1 vengono ignorati.
DataUguale alla data di emissione della fattura.

Appuntamenti

FieldNotes
PazienteCollegato tramite mappatura nome/cognome. Se il paziente non è trovato, il campo rimane vuoto (l'appuntamento viene comunque importato).
Statocancelled se lo stato attività è "Disdetta", altrimenti confirmed.
Postazione (studio)Collegata tramite il nome dell'ambulatorio; se non esiste, viene creata al volo.
OperatoreCollegato tramite nome; se non esiste, viene creato al volo con nome e cognome ricavati per split.
NomeConcatenazione dei campi Prestazioni, Prestazioni 2 e Prestazioni 3 separati da virgola. Se tutti vuoti, "Appuntamento importato da Arzamed".
DataSe presente la data attività, viene usata quella; altrimenti viene usata la data di inserimento. Gli appuntamenti con data inserimento di meno di 10 caratteri e data attività assente vengono scartati.
DurataIn minuti; se assente, viene impostata a 15.
Data creazioneData di inserimento dell'attività.
Descrizione attivitàSe presente e il paziente è collegato, il contenuto viene salvato come nota separata sul paziente anziché nel campo appuntamento.

Operatori

FieldNotes
NomeRicavato per split dal nome completo presente nel CSV appuntamenti.
CognomeRicavato per split dal nome completo presente nel CSV appuntamenti.

Documenti e immagini dei pazienti

FieldNotes
PazienteCollegato tramite corrispondenza cartella cognome_nome (case-insensitive).
TipoDeterminato automaticamente dal MIME type del file.
NomeNome del file (o <cartella>-<file> per file in sottocartelle).
EstensioneRilevata automaticamente.
MIME typeRilevato automaticamente.
FilePercorso fisico del file nella directory indicata.
Data creazioneImpostata alla data e ora di esecuzione della migrazione (non viene letta dal file system).
Pazienti con cartella ambiguaSe per un paziente esistono più cartelle candidate (stesso nome/cognome), i documenti non vengono importati e viene emesso un avviso.

Limitazioni note

  • Pazienti con nome duplicato e codice fiscale differente: quando esistono più pazienti con lo stesso nome e cognome ma codice fiscale diverso, il collegamento ai piani di cura e agli appuntamenti viene perso; viene emesso un avviso per ogni caso.
  • Collegamento pazienti tramite nome: la mappatura tra prestazioni/appuntamenti e pazienti avviene tramite nome e cognome (non tramite ID univoco); eventuali variazioni ortografiche o omonimie causano la perdita del collegamento.
  • Fatture non importabili: se il cliente di una fattura non corrisponde a nessun paziente (né per nome né per codice fiscale) e a nessuna azienda (per partita IVA), la fattura viene scartata con avviso.
  • Fatture con più pazienti trovati: se la ricerca per codice fiscale restituisce più di un paziente, la fattura viene scartata.
  • Aziende senza partita IVA: le aziende prive di partita IVA vengono scartate silenziosamente.
  • File CSV per anno: i file prestazioni_N.csv, fatture_N.csv e attivita_N.csv vengono cercati da 1 fino al numero di anni indicato; se un file non esiste, l'elaborazione per quell'anno si interrompe.
  • File aziende opzionale: il file aziende.csv potrebbe non essere presente nell'export (non tutti gli studi registrano le fatture passive); in tal caso l'import delle aziende viene saltato silenziosamente.
  • Provincia pazienti: la conversione da nome provincia a codice avviene tramite una tabella interna; province non presenti nella mappa vengono lasciate vuote.
  • Provincia aziende: per le aziende la provincia viene importata così com'è, senza conversione al codice.
  • Genere: qualsiasi valore diverso da "maschio" viene mappato a f; non è prevista una terza opzione.
  • Pagamenti con importo ≤ 1: vengono ignorati (soglia di filtro hard-coded).
  • Postazioni fisse: vengono create 5 postazioni fittizie (Studio 1–5); le postazioni reali trovate negli appuntamenti vengono aggiunte dinamicamente, ma potrebbero risultare duplicate rispetto a quelle fittizie.
  • Conti contabili e metodi di pagamento fittizi: i conti (Cassa, Banca) e i metodi di pagamento vengono creati staticamente; non provengono dall'export Arzamed.
  • Descrizione attività come nota: il testo descrittivo degli appuntamenti viene salvato come nota sul paziente, non come campo dell'appuntamento.
  • Data creazione documenti: la data di creazione di documenti e immagini viene impostata all'ora di esecuzione della migrazione, non alla data reale del file.
  • Documenti con cartella ambigua: se esistono più cartelle con lo stesso nome paziente, i documenti non vengono importati e viene emesso un avviso.