Category: computer

  • CQL Tests UI Getting Live Test Execution

    Since announcing CQL Tests UI, the application has continued to receive enhancements that add the ability to execute new test runs yourself using the official CQFramework-family of CQL tests.

    What’s New: The Runner Integration

    The upcoming release introduces a complete CQL Test Runner integration that will allow users to execute CQL compliance tests directly from the web interface. No more switching between tools or managing configuration files manually.

    Key Features Added

    Live Test Execution: The new runner component will let you configure and execute the separately-running CQL test runner service against any CQL-capable FHIR server with a few clicks. Tests will run asynchronously in the background via the test runner, and results will be reported via the UI where they can be seamlessly loaded into the existing viewer.

    Flexible Configuration: The interface provides a user-friendly way to configure FHIR server endpoints, build settings, and test parameters. For power users, there will be a full JSON editor with syntax highlighting.

    Separate Deployment: The CQL Test Runner itself will operate as a separate service that needs to be deployed independently. It will be released as a Docker container.

    Results Integration: Once tests complete, you’ll be able to immediately view results in the existing results viewer or download them as JSON. The integration will be seamless – test results will flow directly into the visualization tools you’re already familiar with.

    Looking Forward

    As the project continues to evolve, I’d personally like to see CQL Tests UI grow into an even more full-featured CQL authoring environment. There is exciting potential to combine or align with efforts from the CDS Connect Authoring Tool Community Edition, bringing together the best of test execution and authoring capabilities in a single, user-friendly interface.

    Please share your thoughts with me via the GitHub repository, the FHIR Zulip community, or during the HL7 CQI and HL7 CDS working group calls.

  • Announcing CQL Tests UI: A Web Interface for Clinical Quality Language Engine Compliance Testing

    I’m pleased to announce the release of CQL Tests UI, a web application for viewing and analyzing Clinical Quality Language (CQL) engine test results generated by the CQL Tests Runner. I’ve contributed CQL Tests UI to the cqframework family of tools under the Apache 2.0 license following debut at the September, 2025 HL7 Connectathon.

    What is CQL Tests UI?

    CQL Tests UI is an intuitive web application that provides an interface for visualizing the results of CQL engine compliance tests. Whether you’re working on clinical decision support rules, quality measures, or other CQL-based artifacts, this tool helps you quickly identify engine issues and compare results across different CQL execution implementation environments.

    Key Features

    Cross-Engine Comparison Dashboard

    The dashboard provides a high-level dashboard summarizing test results across engines, allowing for broad-stroke summarization of correct CQL engine functionality across systems.

    CQL Tests UI Dashboard

    Detailed Result Viewer

    The results detail viewer zooms in on a specific test run. This feature allows you to examine expected and actual output of individual test cases and understand failures.

    CQL Tests UI Viewer

    Flexible Data Loading

    The application supports multiple ways to load your test data, making it easy to integrate into existing workflows.

    CQL Tests UI Loader

    Documentation and Deep-Linking

    Built-in documentation and deep-linking support make it easy to share specific test results and collaborate with team members.

    CQL Tests UI Documentation

    References

  • Substance Abuse Data Exchanges with FHIR: the ASU SHARES Program

    As part of my work at Arizona State University, I’ve been developing the technology stack for the Substance Use Health Records Sharing (SHARES) program. This initiative aims to transform how sensitive health data for substance use disorders (SUD) are managed and shared across healthcare systems. At a personal technical level, my goal is to provide a set of flexible developer libraries, pre-canned API services, and exemplar web UI applications for all U.S. entities to comply with 42 CFR part 2 using FHIR.

    While management of patient consent directives has its own set of challenges, such as those being addressed by the FAST Consent Management Implementation Guide, I’m more interested in the runtime enforcement of patient data sharing elections between organizations. Consent enforcement is an incredibly challenging area of healthcare interoperability wrought with legal and clinicotechnical quandaries.

    SHARES has been on a publishing spree, and I’m proud to.. share.. that FHIR Granular Sensitive Data Segmentation has been published in Applied Clinical Informatics (ACI). The referenced data labeling approach to information sensitivity classification is done in compliance with the FHIR DS4P implementation guide and heavily influenced by the ONC LEAP Computable Consent program. While we didn’t reuse LEAP’s Java and JavaScript code as we wanted SHARES to be entirely done in native TypeScript, we still retain some compatibility with LEAP’s CDS Hooks-based FHIR data labeling service using a modified version of their schema. SHARES has since moved on, however, to supporting numerous other means of integration for security label-based data segmentation.

    Since this manuscript was drafted, we’ve been hard at working rearchitecting the technology platform for scale, plugability of classification engines, and integration methodology. We also recently released v1 of a visual Consent Simulator that will be a focal point of upcoming technical iterations.

    I’m particularly excited for the next few technical phases that will use the new pluggable architecture to provide alternative means of data segmentation. More on that in future publications. 🙂

    For more information on the SHARES program, visit https://www.asushares.com .

  • Ruby Supercomputing: Using The GPU For Massive Performance Speedup

    Confreaks just released a Ruby/JRuby GPU presentation of mine from Mountain West Ruby Conference 2011 in Salt Lake City, Utah. Slightly stale, but all still very relevant to HPC today!

    http://confreaks.tv/videos/mwrc2011-ruby-supercomputing-using-the-gpu-for-massive-performance-speedup

  • Pairwise Sequence Alignment In JavaScript

    I just implemented a sample pairwise sequence aligner in JavaScript for a course. You can demo it at http://alignment.prestonlee.com, and grab the source code under an Apache 2 license at https://github.com/preston/alignment.

  • “My Videotag” Linkbucks WordPress Hack

    FYI to all the WordPress fans.. If you recently noticed that your links are getting hijacked by URLs pointing to “linkbucks.com”, try deleting your my-videotag plugin. I found this nastiness somehow embedded in the source code:

    $ find . -name ‘*.php’ |xargs grep -e linkbuck
    ./wp-content/plugins/my-videotag/my-videotag.php: return ‘<a href=”http://77aafbe6.linkbucks.com/url/’ . $matches[2] . ‘//’ . $matches[3] . ‘”‘ . $matches[1] . $matches[4] . ‘ target=”_blank”>’ . $matches[5] . ‘</a>’;

    Ack! We’ll be deleting the my-videotag plugin now. 🙂

  • Prolog for Ruby (ruby-prolog) Updated, Hits v1.0.1

    After a long period of inactivity I’ve updated the F/OSS ruby-prolog gem! It’s been updated for ruby 2.0.0, bundler, and minitest, and released as v1.0.1!

    ruby-prolog allows you to solve complex logic problems on the fly using a dynamic, Prolog-like DSL. Basic use is encompassed by stating basic facts using your data, defining rules, and then asking questions. Why is this cool? Because ruby-prolog allows you to leave your normal object-oriented vortex on demand and step into the alternate reality of declarative languages.

    With ruby-prolog:

    • There are no classes.
    • There are no functions.
    • There are no variables.
    • There are no control flow statements.

    You can use all these wonder things — it’s still Ruby after all — but they’re not needed, and mainly useful for getting data and results into/out of the interpreter. Prolog still tends to be favored heavily in artificial intelligence and theorem proving applications and is still relevant to computer science curricula as well, so I hope this updated release proves useful to the Ruby community.

    Check out a simple ACL enforcement example or, for the daring, the ruby-prolog solution to the Tower’s of Hanoi problem!

     

  • Don’t Upgrade vCenter Server Appliance From 5.0 to 5.1

    Thinking of upgrading your vCenter Server Appliance from a 5.0 image to the 5.1 image using the official VMware upgrade process covered in the documentation? Don’t do it. It fails somehow. Every time.

    Screen Shot 2013-06-27 at 3.08.32 PM

     

    Unexpected error during the upgrade process.

    To attempt to upgrade again, restore the old vCenter Server Appliance and external database from backup/snapshot, deploy the new vCenter Server Appliance again and start the upgrade process from the beginning.

    Yeah.. you read the right. Now both your old and new appliance images are b0rked, and you’ll need to restore from the vCenter 5.0 backup that you definitely made before attempting the upgrade. In private emails, VMware has acknowledged the issues and has advised to stick with 5.0 and hold off on upgrading the vCenter Server appliance until the next major release since the upgrade/migration tools are such horrible crap. Time to sit back and wait it out!

     

    Update: The built-in update tool in 5.0 that allows you to apply point release upgrades is also fairly broken. (See the red “Failed to install..” message in the background?)

    Screen Shot 2013-06-27 at 3.26.14 PM

  • Vudu Disc-To-Digital Review

    For those of you that just received this promo email…

    vudu_promotion

    I decided to give it a try with stack of old DVDs. The promo pricing is totally reasonable, but I doubt it’ll last. (50% off when you “convert” 10+ discs, then $2 off your total.) Your existing DVD/BD titles are $2 to convert, or $5 for upgrading a DVD to HDX. For the content I successfully converted, HDX quality is great. Some big caveats to considered before jumping in, though..

    • The Vudu To Go client necessary for the disc matching and verification process is buggy. On my Windows 8 Pro laptop — the only machine I have with a BD player — Vudu To Go would check for BD titles but outright refuse to check normal DVDs, displaying only a nasty error message. I had to use a secondary OSX machine (with a non-BD DVD player) to check DVD titles. I didn’t have any issues with my shopping cart when using two machines, but this was really inconvenient. I would think Vudu To Go on Windows 8 Pro would have the bugs worked out by now.
    • The disc-to-digital disc matching mechanism seemed to mis-match about 1 in 15 titles, such as my retail BD version of “Full Metal Jacket”.
    • Of my properly-recognized discs, Vudu only had rights to convert ~40% of the discs I tried. Understandable, but still a pretty low hit rate for users, especially for anyone like me that would really like to completely toss all discs in the trash, and don’t even have a DVD/BD player hooked up anymore.
    • For HDX quality, both machine and display *must* support HDCP. For example, “owning” Super 8 in HDX would only play in SD when web streaming due to my non-HDCP monitor.
    • Studios, of course, still place restrictions on your watching abilities, even though you’ve verified the disc. For example, I “own” 80’s comedy “Singles” in HDX, but “[t]his title is viewable on PC in SD only.” Lots of stupid crap like that.
    • Web streaming requires flash and uses a non-trivial amount of CPU. On my new brand new Dell Latitude 10 ST2 Win8 RT tablet, it’s totally unusable.
    I hope Amazon launches an equivalent, because I’m already committed to an Amazon content library and really, really, really don’t want to keep another vendor. If you only have a few stacks of decent titles just taking up space, though, it’s worth considering!
  • Capistrano Hanging During .tgz Upload

    I just spent an annoying amount of time troubleshooting a new cap-based deploy.rb for a Rails app to a new CentOS 6.4 server. The deploy.rb worked perfectly on other systems, but something about the configuration was causing `cap deploy’ to hang during the following:

    servers: [“myapp.example.com”]
    ** sftp upload /var/folders/0j/vmvt2by53m901wtmfv8xfjw40000gn/T/20130530225953.tar.gz -> /tmp/20130530225953.tar.gz

    Long story short, when manually sftp’ing to the server, I’d get:

    Received message too long 458961005

    Ah ha! After taking a cue from this dude, I edited the .bashrc to redirect any output to /dev/null. I could then successufully sftp to the server manually, and `cap deploy’ magically worked as expected. The offending line was actually rvm, which of course insists on print a color-coded message when you `rvm use 2.0.0′ (or whatever). Changing the offending line to:

    rvm use 2.0.0 >> /dev/null

    ..did the trick.