Giter Club home page Giter Club logo

medic / cht-core Goto Github PK

View Code? Open in Web Editor NEW
434.0 56.0 203.0 161.47 MB

The CHT Core Framework makes it faster to build responsive, offline-first digital health apps that equip health workers to provide better care in their communities. It is a central resource of the Community Health Toolkit.

Home Page: https://communityhealthtoolkit.org

License: GNU Affero General Public License v3.0

JavaScript 63.18% HTML 5.73% CSS 0.04% Shell 2.00% XSLT 0.81% Less 0.93% SCSS 0.03% TypeScript 27.09% Dockerfile 0.03% Python 0.13% Lua 0.02% Makefile 0.01%
medical couchdb javascript phone mobile health mhealth ehealth pouchdb hacktoberfest

cht-core's Introduction

The Core Framework of the Community Health Toolkit (CHT)

This is the repository of the CHT Core Framework, a technical resource of the Community Health Toolkit (CHT) contributed by Medic.

Medic is a nonprofit organization on a mission to improve health in the hardest-to-reach communities through open-source software. Medic serves as the technical steward of the Community Health Toolkit.

For the latest changes and release announcements see our release notes. Our exact support matrix (including older app versions) can be found in our docs.

Overview

The CHT's Core Framework is a software architecture that makes it faster to build full-featured, scalable digital health apps that equip health workers to provide better care in their communities. To learn more about building an application with the Core Framework, visit our guide for developing community health apps.

The Core Framework addresses complexities like health system roles and reporting hierarchies, and its features are flexible enough to support a range of health programs and local care provider workflows.

Mobile and web applications built with the Core Framework support a team-based approach to healthcare delivery and management. Health workers can use SMS messages or mobile applications to submit health data that can then be viewed and exported using a web application. These web applications are fully responsive with a mobile-first design, and support localization using any written language. They can be installed locally or in the cloud by setting up the individual components or as a Docker container.

For more information about Medic's architecture and how the pieces fit together, see Architecture Overview. For more information about the format of docs in the database, see Database Schema. For more information about the SMS exchange protocol between webapp and gateway, see Message States.

Using the Core Framework

If you are a developer looking to contribute to the Core Framework itself, you should follow the development setup instructions.

If you wish to evaluate the Core Framework, or you are a developer looking to create or modify applications built with the Core Framework, you can instead follow the easy deployment instructions, which will get the latest stable release running locally via Docker.

You will need to also familiarise yourself with cht-conf, a tool to manage and configure your apps built using the Core Framework. A brief guide for modifying the config is available alongside the config. A more detailed guide is available in cht-docs.

Supported Browsers

Currently, the latest versions of Chrome, Chrome for Android and Firefox are functionally supported. We do not support Safari (unreliable implementations of necessary web APIs) and the generic android browser (unreliable implementations in general). Our webapp code, which includes any code written as configuration, is still ES5. Our exact support matrix (including older app versions) can be found in our docs.

Contributing

The Core Framework of the Community Health Toolkit is powered by people like you. We appreciate your contributions, and are dedicated to supporting the developers who improve our tools whenever possible.

To setup a development environment to contribute to the Core Framework follow the development instructions.

First time contributor? Issues labeled help wanted are a great place to start.

Looking for other ways to help? You can also:

  • Improve documentation. Check out our style guide here
  • Review or add a translation
  • Find and mark duplicate issues
  • Try to reproduce issues and help with troubleshooting
  • Or share a new idea or question with us!

The easiest ways to get in touch are by raising issues in the medic Github repo or joining our Community Forum.

For more information check out our contributor guidelines.

Build Status

Builds brought to you courtesy of GitHub Actions.

Build Status

Copyright

Copyright 2013-2022 Medic Mobile, Inc. [email protected]

License

The software is provided under AGPL-3.0. Contributions to this project are accepted under the same license.

cht-core's People

Contributors

1yuv avatar abbyad avatar alxndrsn avatar benmuiruri avatar dianabarsan avatar endor avatar estellecomment avatar garethbowen avatar henokgetachew avatar jkuester avatar jodge avatar kennsippell avatar latin-panda avatar lorerod avatar m5r avatar mandric avatar medic-translators avatar mrjones-plip avatar mrsarm avatar newtewt avatar ngaruko avatar njogz avatar ochiengpeter avatar rmhowe avatar ryanramage avatar scdf avatar tatilepizs avatar tookam avatar vimemo avatar wombleton avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cht-core's Issues

Show results on a per project basis

Show only the option to download data for specific projects.

ie)

PSI Cameroon SMS Forms Data

PSCQ
Download CSV: [en] [fr]

PSCM
Download CSV: [en] [fr]

Simpler interface to delete messages

Often after testing or training we want to delete all the messages in the database. Currently the quickest way to do that is to delete the database and replicate again. There may also be a need for a database administrator to delete messages accidentally sent twice.

Would be useful to have a quicker way to delete individual or bulk messages. Right now to delete individual message you must do 3 clicks and 2 page reloads (click document you wish to delete, loads document's page, click delete document, click to confirm delete, loads page with all documents).

create a list of example form data

would be nice to have ready for testing a list of messages to send to a gateway once it's setup. you can find this right now by grepping the tests but we should probably maintain a list of test messages in a specific module, possibly that can be require()'d and scripted to send to a gateway.

Parse cdc weekly reports

We need to set Kujua up to accept plain SMS messages via the TextForms parser. Once the parsers are pluggable, we should test the full pipeline using the CDC weekly report.

add docs

add docs feature so the app can parse markdown files and move the setup doc over

Delimiter localization for CSV export

Feels odd complaining about the delimiter in a Comma Separated Value file, but Excel on FR localized computers does not automatically separate values in comma delimited CSVs. Would be great if localization could be detected and handled automatically.

With FR localization the comma is used as the decimal value, whereas semi-colon is used as the delimiter.

add referrals processing support

Referral Scenarios:

Note: cref_rc and ref_rc refer to CHW/RC ID in all instances

  1. CHW/RC -> Health Center/CS (MSBR referral form)
    • Includes ref_rc field.
    • Referral recipient is referenced from clinic.parent.contact.phone
  2. Health Center/CS -> CHW/RC (MSBC counter referral form)
    • Includes cref_rc field
    • Referral Recipient is referenced by matching cref_rc and ref_rc of past referrals
    • cref_treated field is ignored and not included in referral data sent to recipient
  3. Health Center/CS -> Hospital/CH (MSBB referral form)
    • Includes ref_rc field
    • Referral recipient is referenced from health_center.parent.contact.phone
  4. Hospital/CH -> Health Center/CS (MSBC counter referral)
    • Includes cref_rc field
    • Referral recipient is referenced from clinic.parent.contact.phone

add reduce

We are doing some inefficient parsing on initial load to determine what data is available. We should add a map/reduce function so we can quickly determine what form types are available.

Limit read access to data

In many implementations servers with Kujua-Export need to be accessible within a LAN or Internet, opening access of a client's potentially confidential information to the general public. The current security is by obscurity in that it is very unlikely for someone to find the address/link to the server and its data. However, we should have a way to limit access to authorized users only.

Show full form name instead of form code

Whenever possible show form name in Kujua Export instead of form code.

e.g.
Form Full Name: Synthese des cas pris en charge
Form Code: MSBP
Form Muvuku Name (shortened to fit screen): Rapport cas vus

Would be nice for administrators to see "Synthese des cas pris en charge" instead of "MSBP"

Toggling of form fields

In the Records view, clicking on a record displays the form fields. I often find myself clicking on the record again to try to close the form fields, but then have to search for the X on the right to remove the form fields. Having a toggle behaviour on the record to show/hide the fields may be more natural to users.

Handle invalid forms

Send user feedback if an incomplete form is sent.

Some possible responses:

  • if form is not in the db: send them a message that an invalid form was submitted.
  • if the form is in the db but data not complete: send them a message asking them to complete the data and resend.
  • if a blank message is received: reply that an invalid/empty message was received on the server, please try again.
  • if a freeform message was sent: may be nice to have to have the option to accept or reject free form message.

I imagine this can gets tricky when you want responses to be in a different language. Can we change the locale of the server so that the responses are localized?

fix in iOS

http://cl.ly/352x0K13042Y2U3X1X3j

Forms don't get loaded, possible jquery init issue. Some style leaves a border, this could be a bug in bootstrap since we are on bleeding edge. Also media queries and zooming needs fixing.

session login/logout

basic session support, it would be nice if we could associate some settings with a user as well. namely a default locale value and allow them to change that. (issue #27)

later we also want to extend it to allow for filtering based on district (issue #48). so a user would belong to a district or if admin they could see everything.

Network Issues for Replication

We should find a more effective means to replicate across an organization, such as registering nodes on startup, otherwise we will continuously battle with network admin issues which are difficult to monitor remotely (port forwarding, dynamic IPs, etc).

add style

make Kujua Export look somewhat like Kujua (i.e. a Medic product)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.