10mwt Tool For Clinical Measurement: New features and improvements

in #utopian-io6 years ago (edited)

Project Background

Repository

https://github.com/tdreid/10mwt

Working Example

http://ten-mwt.herokuapp.com/

What is 10mwt

A timed ten meter walk test is a clinical measurement. It is used by healthcare providers to assess functional mobility, gait, and vestibular function in the course of treatment for many conditions as well as in healthy persons.

Such measurement helps document and quantify quality of life changes in patients treated for brain and spinal cord injuries, stroke, fractures, amputations and aging.

Traditionally the test has been administered with a stop watch and recorded on paper. You can see the test being administered this way in this video. The measurement is repeated three times per patient in order to take a reliable average. This can be time consuming and prone to delay in adding results to electronic records.

However the trend in healthcare is that busy practitioners need to save time while maintaining or improving quality of care for patients. Every part of practice that can be shifted to mobile devices and integrated with patient management systems is a boon to providers.

The 10mwt software provides a simple way of administering the test on a phone, tablet, or any device with a web browser. It combines the measurement and record keeping into one time saving method.

The test results can be conveniently posted to any patient management system that exposes a simple web based API method. When an API is not available the test results can just as easily be copied to the clipboard for pasting into any available application.

I started the earliest version of 10mwt a year ago upon first hearing about the test and its use in orthotic and prosthetic practices. My main goals for the tool were that it would (1) be free to use and (2) easily work alongside any variety of other healthcare IT systems.

After more than a year of real world experience working within the field of software for orthotic and prosthetic clinics I decided to update the original tool as follows.

New Features Added

Port the tool to Express

The original tool was a single html page with an embedded JavaScript app. Moving everything into a familiar web framework allows for easier installation for the user and smoother maintenance for developers going forward. The main changes here entailed implementing routing, a view template, and static serving of JavaScript resources. All fairly straight forward using Express.

Save patients in local storage

Originally 10mwt was seen as standin mainly for the clinician's stopwatch. It did not save test records between uses. With this update each set of time trials is saved locally on the device until the clinician decides to delete them.

So it is now possible, for example, to administer tests for several patients in a day and come back to the results the next day to post the results at a convenient time for such paperwork. This was accomplished using the localForage API for local browser storage. See these lines in the repo.

this.saveViewModel = () => {
  let flattenedTests = thisViewModel.tests().map(t =>  ko.toJSON(t));
  localforage.setItem('10mwt', flattenedTests);
};

Adding the ability to POST to any API

Cut and paste can be a handy way to move text from document to document or even between different systems. But a better feature is to send information wherever it needs to be with one click. With this update the latter is now part of 10mwt. It's accomplished by setting a URL to any web hook that can receive a POST request.

image.png

It's done with a simple AJAX request. See these lines in the repo. The narrative test results are inserted into the POST body. Processing the information is up to the server.

this.postNarrative = function() {
      console.log('Posting...');
      $.post(
        tests.url(),
        ko.toJSON(
          'When assessed with the 10-meter walk test, ' +
            thisTest.id() +
            ' had a ' +
            thisTest.gaitText() +
            ' walking speed of ' +
            thisTest.averageGaitSpeed() +
            ' m/s today.'
        ),
        () => {
          console.log('Post complete.');
          tests.showMessage('Narrative posted.');
          setTimeout(() => tests.showMessage(false), 750);
        },
        'text'
      );
    }

Improved Responsive Layout

Earlier versions of 10mwt relied on the Skeleton css framework which is light weight but limited. The old version worked well in a full web browser, but very often a clinician on the go will want to use a smaller device like phone or tablet when moving from exam room to room. Going forward 10mwt implements Bootstrap 4 and takes a mobile first approach.

The New User Interface

The Former User Interface for Comparison

This was accomplished mainly through considerable changes to the view templates.

Technology Stack

What's next?

Features to add...

  • Ability to organize saved patients into tabs and 'portfolios'
  • Capture additional patient information
  • Custom fields
  • Reference implementation for server integration
  • Custom templates for narrative results
  • Night view and custom themes
  • Add additional clinical measures
  • Multiple language support
  • Custom local storage keys

Technical debt...

  • Precompile to ES6
  • Consistently adopt ES6 features and syntax (e.g. classes, lambda functions)
  • Improve overall code quality by refactoring large functions/classes

How to contribute?

Thanks for your interest. This project welcomes Pull Requests and Issues on Github.

Please submit an Issue to:

  • Report a bug
  • Request a feature
  • Ask for help A great way to ask for help is on Stack Overflow

Proposing a change is welcome and easy

Please fork and submit a Pull Request to 10mwt on GitHub. Include a bit of a summary and follow the guidelines in GitHub documentation.

If your change addresses something in an existing issue please reference your PR in the Issue discussion.

Coding conventions

Please run prettier --write --single-quote or an equivalent on all new or changed Javascript before submitting.

Contacts

I'm easy to reach on Steemit, Github and Discord if you have any questions. For more ways to contact me as well as my background as a dev have a look at this post.

Proof of Authorship

https://github.com/tdreid

As you can see in the highlighted portion of the illustration above the owning github account references my identity @tdre on the Steem blockchain. Also all 32 recent commits reference me as author as the author. For example:


#utopian-io #development #busy #introduceyoursel #new

Sort:  

You got a 25.00% Upvote and Resteem from @ebargains, as well as upvotes from our curation trail followers!

If you are looking to earn a passive no hassle return on your Steem Power, delegate your SP to @ebargains by clicking on one of the ready to delegate links:
50SP | 100SP | 250SP | 500SP | 1000SP | 5000SP | Custom Amount

You will earn 80% of the voting service's earnings based on your delegated SP's prorated share of the service's SP pool daily! That is up to 38.5% APR! You can also undelegate at anytime.

We are also a very profitable curation trail leader on https://steemauto.com/. Follow @ebargains today and earn more on curation rewards!

Thank you for your contribution. Though I really like your post, I feel it is somewhat lacking the uniqueness which it needs. However, it would be good to see the project evolving. Commenting the code is a great way for users to get up and speed if they wanted to use your application. Also the github Repo is wrong, it should be https://github.com/tdreid/10mwt and not Utopian repo.

Link to the Answers of the Questionnaire -

Click here


Need help? Write a ticket on https://support.utopian.io/.
Chat with us on Discord.
[utopian-moderator]

Thanks @codingdefined for your helpful and thoughtful comments. Wow! I am mortified that I posted the wrong repo link. After several proofreads to have missed something like that really hurts. But thank you for catching it. I've updated the post.

I completely agree that this project will be more valuable once it has had some time grow and evolve. One of my great hopes for @utopian-io is that it will connect nascent open source repos with interested developers that can help take a young project and it help it grow.

Thanks again for your feedback. It really helps!

Hey @tdre
Thanks for contributing on Utopian.
We’re already looking forward to your next contribution!

Contributing on Utopian
Learn how to contribute on our website or by watching this tutorial on Youtube.

Want to chat? Join us on Discord https://discord.gg/h52nFrV.

Vote for Utopian Witness!

I like where this one is headed. Good job! Let me know if you need any logo or graphics! xo.

Hehe. Thanks! I will likely post a task request on #utopian-io #task-graphics as soon as I recover from this work ;p

Welcome, tdre! Wish you a very joyful journey here in this awesome community :) All the best!

By the way, there are several groups you as a newcomer can join. They will stay with you for your journey, helping and mentoring along the way.

@greetersguild invite link https://discord.gg/AkzNSKx
@newbieresteemday invite link https://discord.gg/2ZcAxsU

WoW friend, I'll write it in Spanish:

Te la comiste,,

In a good way and it's a compliment

I like your post. very helpful

Congratulations! This post has been upvoted from the communal account, @minnowsupport, by tdre from the Minnow Support Project. It's a witness project run by aggroed, ausbitbank, teamsteem, theprophet0, someguy123, neoxian, followbtcnews, and netuoso. The goal is to help Steemit grow by supporting Minnows. Please find us at the Peace, Abundance, and Liberty Network (PALnet) Discord Channel. It's a completely public and open space to all members of the Steemit community who voluntarily choose to be there.

If you would like to delegate to the Minnow Support Project you can do so by clicking on the following links: 50SP, 100SP, 250SP, 500SP, 1000SP, 5000SP.
Be sure to leave at least 50SP undelegated on your account.

Loading...

Coin Marketplace

STEEM 0.29
TRX 0.11
JST 0.033
BTC 63901.15
ETH 3133.40
USDT 1.00
SBD 4.05