Skip to content

Latest commit

 

History

History
137 lines (119 loc) · 8.85 KB

CONTRIBUTING.md

File metadata and controls

137 lines (119 loc) · 8.85 KB

Thank you for your contribution. OpenEMR (and global healthcare) continues to get better because of people like you!

The maintainers of OpenEMR want to get your pull request in as seamlessly as possible, so please ensure your code is consistent with our development policies.

Code Contributions (local development)

You will need a "local" version of OpenEMR to make changes to the source code. The easiest way to do this is with Docker:

  1. Create your own fork of OpenEMR (you will need a GitHub account) and git clone it to your local machine.

    • It's best to also add an upstream origin to keep your local fork up to date. Check out this guide for more info.
  2. cd openemr (the directory you cloned the code into)

  3. Run docker-compose up from your command line

    • When the build is done, you'll see the following message:
    openemr_1  | Love OpenEMR? You can now support the project via the open collective:
    openemr_1  |  > https://opencollective.com/openemr/donate
    openemr_1  |
    openemr_1  | Starting cron daemon!
    openemr_1  | Starting apache!
  4. Navigate to https://localhost:8300/ to login as admin. Password is pass.

  5. Make changes to any files on your local file system. Most changes will appear after a refresh of the page or iFrame you're working on.

    • An exception to this is if making changes to styling scripts in interface/themes/. In that case will need to clear web browser cache and run the following command to rebuild the theme files:
    docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c 'cd openemr; npm run build'
    • We also have a handy Alias for the above command
    docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c '/root/devtools build-themes'
  6. If you wish to connect to the sql database, this docker environment provides the following 2 options:

    • Navigate to https://localhost:8310/ where you can login into phpMyAdmin.
    • Or you can directly connect to port 8320 via your favorite sql tool (Mysql Workbench etc.).
    • Use username/user: openemr, password: openemr .
  7. Developer tools and tricks.

    • To check PHP error logs run:
    docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c 'cat /var/log/apache2/error.log'
    • We also have a handy Alias for the above command
    docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c '/root/devtools php-log'
    • To create a report of PSR2 code styling issues (this takes several minutes):
    docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c 'cd openemr; php -d memory_limit=640M /root/.composer/vendor/squizlabs/php_codesniffer/bin/phpcs -n --extensions=php,inc --standard=ci/phpcs.xml --report=full .'
    • We also have a handy Alias for the above command
    docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c '/root/devtools psr2-report'
    • To fix PSR2 code styling issues (this takes several minutes):
    docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c 'cd openemr; php -d memory_limit=640M /root/.composer/vendor/squizlabs/php_codesniffer/bin/phpcbf -n --extensions=php,inc --standard=ci/phpcs.xml .'
    • We also have a handy Alias for the above command
    docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c '/root/devtools psr2-fix'
    • To check PHP parsing errors (this takes several minutes):
    docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c 'cd openemr; find . -type f \( -name "*.php" -or -name "*.inc" \) \( -not -path "./vendor/*" -and -not -path "./node_modules/*" -and -not -path "./ccdaservice/node_modules}/*" \) -exec php -d error_reporting=32767 -l {} \; 2>&1 >&- | grep "^"'
    • We also have a handy Alias for the above command
    docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c '/root/devtools php-parserror'
    • To run unit testing:
    docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c 'cd openemr; vendor/bin/phpunit --testsuite unit --testdox'
    • We also have a handy Alias for the above command
    docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c '/root/devtools unit-test'
    • To run api testing:
    docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c 'cd openemr; vendor/bin/phpunit --testsuite api --testdox'
    • We also have a handy Alias for the above command
    docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c '/root/devtools api-test'
    • To run e2e testing:
    docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c 'export PANTHER_NO_SANDBOX=1; export PANTHER_CHROME_DRIVER_BINARY=/usr/lib/chromium/chromedriver; cd openemr; vendor/bin/phpunit --testsuite e2e --testdox'
    • We also have a handy Alias for the above command
    docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c '/root/devtools e2e-test'
  8. To run the entire dev tool suite(PHPCS fix,unit test,API test,e2e test, PHP parse error ) in one command, run

    docker exec -i $(docker ps | grep _openemr | cut -f 1 -d " ") sh -c '/root/devtools clean-sweep'
  9. When you're done, it's best to clean up after yourself with docker-compose down -v

    • If you don't want to build from scratch every time, just use docker-compose down so your next docker-compose up will use the cached volumes.
  10. Submit a PR from your fork into openemr/openemr#master!

We look forward to your contribution...

If you do not want to use Docker, you can always install OpenEMR directly on your local environment. This will require installing additional dependencies for your operating system. For more info see OpenEMR Development Versions on the wiki.

Financial contributions

We also welcome financial contributions in full transparency on our open collective. Anyone can file an expense. If the expense makes sense for the development of the community, it will be "merged" in the ledger of our open collective by the core contributors and the person who filed the expense will be reimbursed.

Credits

Contributors

Thank you to all the people who have already contributed to openemr!

Backers

Thank you to all our backers! [Become a backer]

Sponsors

Thank you to all our sponsors! (please ask your company to also support this open source project by becoming a sponsor)