Case Study – Tax Collector Office Wait Times

The Seminole County Tax Collector wanted to show the wait times from their offices on their website. The tax collector runs 6 physical offices, each with a NemoQ system tracking service queues for things like driver license renewal and automobile registration. Each service is ticketed and queued and tracks overall wait times up to the minute. In order to get the times on the website a custom integration was needed to read the data from each location’s server and then format it for display in different interfaces on the www site.

As the SCTC web site is built mainly with flat-file HTML, this system needed to acquire and process data client side. In addition, since we could not expose the NemoQ servers to the internet, and we would not be able to handle the load anyway, we needed to proxy the data collection at the web server. With these constraints, we decided to move data on a frequent basis from the offices to the web server, where we could expose it to a client side process for parsing and display. This way we shift load to the web server, while still providing up to the minute data.

NemoQ provides a SOAP based API that returns XML data from each server. Aries Consulting Group wrote a custom Powershell script that pulls the XML data from each office over the County WAN and onto the tax collector’s web server. The data is updated frequently using a scheduled task and stored on the web server in a client accessible location.

In order to process the XML and display the data on the web page, Aries Consulting Group wrote a custom framework in vanilla JavaScript to process the XML data, apply configured business rules, and generate the display. This system needs to deal with missing or partial XML data, it needed to understand when sites opened and closed, when the Driver License queue was “cut-off”, and when the tax collector was off for a holiday. The framework grabs the xml data from the web server asynchronously, and is easily configurable via a JSON formatted file maintained on the web server.

The scripts parse each site xml based on the configuration in the JSON file. The data is then examined in the context of several business rules to determine the wait time display text. If the site is closed the display is “Closed”, if the site’s wait exceeds the closing time the display is “Closing”, if the queue is past cut-off time the display is “Cut-off”, otherwise the time is formatted for display unless it exceeds a threshold hours in which case “Exceeds # hours” is displayed.

The system runs as an event loop that is started via an external script and includes the ability to add custom functions. This loop also updates display elements on the page with data from the XML and configuration by targeting specific, configurable CSS classes incorporated into the web pages. This method allows us to quickly and easily integrate the wait times display and drives different view on the main and office pages of the website. The loop runs tasks asynchronously to maintain high performance.

Displaying the wait times on the website has already had a big impact. We are looking at ways to expand the reach of this data, to help the citizens of Seminole County make the best choice before they head to the office to renew their license or pay their property taxes.