Transaction Log

Transaction Log

The Transaction Log was implemented as a Version 8 beta feature for allowing support and development teams to identify the source of various behaviors. For more technical users or those willing to learn more technical parts of QuickEMR the Transaction log can tell you nearly everything that has occurred on the QuickEMR System as well as when it occurred and by which user. While it would be prohibitively long to write a full guide the most requested features are highlighted in this tutorial.


1. Finding the ID

The transaction log is keyed against 2 primary values. An "object" and an "ID". Both can be identified in the URL of the page you are viewing. Below is a screenshot of a single note. The URL contains the text "?note_id=5811". Therefore the object is "note" and the ID is "5811". You will see similar URL queries in case, insurance, employers, and anything else that is typically displayed in a table list. 



The other most common ID is the appointments. The object would be "Schedule" and the ID may be found by selecting the "i" on the appointment quick-links and then scrolling to the bottom of the appointment info on the left as demonstrated in the screenshot below that identifies the appointment ID as "29961".


2. Viewing and Filtering the log

The Transaction Log is available under "Reports" => "Logs" => "Transaction Log". When the log loads it will show you the last 100 log entries that have occurred on the system. This is probably not very useful as this log is updated with nearly every create, update, delete, login, and even when an object or list of objects is viewed or printed. So take the Object and ID retrieved from step 1 and set those in the filters as demonstrated in the screenshot below.



3. Understanding the log entries

Once the filter is applied to a specific object most of the activity relating to that object will be displayed. 

  • The entries will always display 100 at a time from most recent descending to oldest entry (usually the object creation). To display older entries select page down. to return to more recent entries select page up.
  • The "ID" column displays the Transaction ID (Not the object ID rather a unique ID for this transaction which may be used to reference the transaction in the future), The user who performed the operation and the exact date/time of the operation. 
  • The "Operation" column will display one of "Create, Update, Delete, N/A, User Login, View, and View List. This is followed the "Content Type" (object) and "Type ID" (ID that you filtered on).
  • The "message" is optional and is usually included to indicate that something attached to the object was affected instead of the object directly or the source of the transaction if multiple sources are available. For example a Case Insurance entry does not technically change the case but will be listed under the case ID for ease of finding the date.
  • The Diff will only show for operation create, update, and delete. The Key is the internal key and usually loosely lines up with the label on the object page. Occasionally these keys can be different from the object page. If you are looking for the key name of a specific field and cannot find it feel free to contact support using the HELP widget on the right of your screen. The before and after values also may not contain the human readable version of the value and instead may store IDs of another object. You may be able to identify the human readable value by visiting the relevant object but it may be easier to ask for assistance from the help desk. It is usually enough just to identify that a change took place.

4. Example Usage: Who added a charge to this note after it was marked complete?

  1. Visit the note in question. The URL has "note_id=5969 "
  2. Visit the transaction log and set the Content Type to "Note" and the Type ID to "5969 " and select submit.
  3. Scroll down slowly until you find the entry that indicates the note was marked complete (see screenshot).
  4. Now scroll up until you find an entry (after the note was marked complete) that says a charge was added. Screenshot. 
  5. Conclusion: Julian Bashir added charge "97140" after the note was already marked complete. And several months later according to the timestamps. He probably added his charge to the wrong note while doing an audit of an old patient.

5. Example Usage: Who marked Padme Amdala as canceled? She just showed up for an appointment that was re-booked!

  1. Identify the object and ID. Since this is an appointment we know the content type is "Schedule". We find the ID from the Quick Info tab. If you have cancelled appointment hidden you must display them first to find the id. If you delete cancelled appointments skip to the next example.
  2. Set the values in the transaction log and submit the filters. Now we look for an update operation that has a "status" key in the diff column. Screenshot. 
  3. Note on this that the "status" is actually "status_id". this is very common in the behind the scenes work for dynamic lists. The diff only shows the machine ID of the status not the human readable name. 
  4. If only one change in status is found like in this example it's obvious that Julian Bashir has cancelled his own patients appointment. In conferring with him you find out Padme did indeed call and cancel and speaking to the provider directly she remembered the conversation and apologized for the inconvenience.
  5. If their are several status changes and the human readable name is needed take note of the ID in question. Visit a status page Schedule => Lists => Appointment Statuses. Select one of the statuses (it does not matter which). In the URL you should see the now familiar "status_id=123". Manually change the URL to replace the number, and only the number, with the id shown in the log so it will read "status_id=4" and then hit enter on your keyboard. If you see an error you probably deleted the "=" or something other than the number.  Just repeat the steps being more careful. If done correctly you will see the human readable name of the given id.

6. Example Usage: Where did that appointment go? I know Mrs. Amidala had an appointment at this time. Who deleted it?

  1. When an item has been deleted it can be very difficult to find the ID. This also makes it difficult to find the log entries. But it is still possible. Go directly to the Transaction Log.
  2. In the filters select the object but do not supply the ID as you are unsure what it is. Optionally you may supply an Operation filter such as "Delete". Most values are not deleted but are instead deactivated. So for Schedule, Note, and Case, the operation will be delete. For nearly every other list in the system the operation will be update.
  3. Now you must scroll through all the values looking for the one of interest. It can help to know the approximate time something occurred, then you can simply page down until you see a timestamp close to that. Otherwise you must comb through the values until you identify what you are looking for. When I set the Object to schedule and the operation to delete in our test system I find in the first page the patient in Question with the entry shown in the screenshot. Note the before values are the last state of the appointment before it was deleted and could be used to re-build the appointment if needed. Turns out Julian was having a bad day and deleted several appointment in a regretful fit of rage. Lets add these back in using the values in the log.
    • Related Articles

    • Checking the Status of Faxes (Fax Log)

      Where to go? 1. This can be found under Reports ->Logs ->Fax Log Fax Log 1. Select your filters and click apply 1. Click "Check Status" to retrieve the most updated status.
    • Chat Logs

      Where to go? 1. To view previous chats, this can be found under Reports-> Logs -> Chat Log 1. Select your parameters and click Submit