Domanda

Il cliente ci vuole "log" le "azioni" che un utente esegue sul nostro sistema: creazione, cancellazione e aggiornamento, per lo più. Ho già un aspetto che registra la traccia, ma che funziona a un livello piuttosto basso di registrazione ogni chiamata di metodo. Quindi, se un utente fa clic sul pulsante "aprire il file medico" il registro sarebbe il seguente:

  1. closePreviousFiles ( "paziente zero")
  2. createMedicalFile ( "paziente zero") -> file # 001
  3. changestatus ( "# 001") -> Apri

mentre il risultato desiderato è:

  1. aperto cartella clinica # 001 per il paziente a zero

Sto pensando di strumentazione azioni Struts2 con dichiarazioni di registro, ma mi chiedo ... c'è un altro modo per farlo? Potrei usare AspectJ di nuovo (o un filtro) e mantenere la logica in un solo luogo, in modo che io possa configurare il registro facilmente, ma poi ho paura che tutto diventerà più difficile da capire (vale a dire "il registro per questa azione è sbagliato ... dove diamine devo cercare per il disturbo? ").

È stato utile?

Soluzione

suona come il vostro cliente vuole un audit trail di azioni dell'utente nel sistema.

Si consideri che in punto di ingresso di ogni azione (dalla richiesta web) per avviare una voce di controllo con un enum / costante sull'azione. Popolarla con l'utente le informazioni ha fornito, se possibile.

All'uscita / infine, indicare nella revisione se è riuscito o non riuscito. Un esempio in pseudocodice:

enum Actions {
  OPEN_MEDICAL_FILE
  ...
}

void handleRequest(...) {
  String patient = ...;
  Audit audit = new Audit(OPEN_MEDICAL_FILE);
  audit.addParameter("patient", patient);
  try {
     ... more things ..
     audit.addParameter("file", "#001");
     ... more things ...
     audit.setSuccess();
  } finally {
    audit.save();
  }
}

Ciò che è importante è che tutte le azioni dell'utente vengono salvate, a prescindere dal successo o il fallimento. Inoltre, il cliente davvero bisogno di conoscere tutte le informazioni pertinenti con l'azione.

Dal momento che stiamo accedendo costanti d'azione e dei dati, la presentazione della revisione contabile per il client può essere codificato separatamente. Si guadagna la flessibilità, in quanto anche un cambio di stringa di presentazione (ad es. "Ha aperto cartella clinica # 001 per il paziente zero" al "paziente ha aperto # 001 cartella clinica zero) non è determinato al momento dell'azione, ma più tardi. È don' t deve remassage i dati di audit.

Altri suggerimenti

Recentemente ho log post-processato per generare sintesi. Si può prendere in considerazione questo approccio, soprattutto se # 2 e # 3 nei registri di cui sopra sono generati in luoghi diversi e il risultato desiderato richiederebbe da portare in giro lo stato da un luogo ad un altro.

Se si lavora con i dati medici che si può prendere in considerazione sia la registrazione e il controllo delle versioni. Vorrei anche pensare di fare questo con i trigger del database. Non faccio un sacco di programmazione Java, ma ho discusso questo tema con il nostro team Sistema Informativo Studenti. Usano Oracle sul backend e registrare una variabile di sessione con le loro connessioni. I loro trigger utilizzano questa variabile di sessione per creare voci di registro e le storie di versione (su aggiornamenti / elimina) di tabelle critiche. Questo dà loro sia le capacità di controllo e di rollback. Penserei che sia di questi sarebbe utile per un'applicazione di cartelle cliniche.

Usano anche log4j per fare la registrazione a livello di applicazione, ma la registrazione dei dati avviene nel database.

Ho fatto cose simili in azioni Struts2, ho usato "log4j". A seconda del server di applicazioni, si potrebbe avere un sistema di registrazione integrato che permette l'uso di cataloghi dei messaggi (ad es .: Weblogic).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top