You've reached the official documentation for REDCap's External Module Framework! This framework can be used to create External Modules, the recommended way to programmatically extend REDCap's base functionality. These docs and the External Module Framework itself are both very much a community effort. If/when you notice room for improvement, feel free to create an issue. It is also highly encouraged to fork this repo, make any changes you desire, then go to the Pull Requests
tab from your fork and select New pull request
to submit them for review.
If you're brand new to module development, see the beginner's guide.
If you have already created a module and wish to share it with the REDCap community, you may submit it to the REDCap External Modules Submission Survey. If your module gets approved after submission, it will become available for download by any REDCap administrator from the REDCap Repo.
These docs (and the External Module Framework itself) are very much a community effort. If/when you notice room for improvement, feel free to create an issue. It is also highly encouraged to fork this repo, make any changes you desire, then go to the Pull Requests
tab from your fork and select New pull request
.
Contributions (new features, bugfixes, etc.) to the External Module Framework code repo are welcome too! To gain access to that repo, email your GitHub username to [email protected]
. Once you have access, read the that repo's constribution instructions.
This documentation was moved from the private REDCap Core & External Module Framework repos to this public repo to make it possible to share universal links to specific parts of the documentation, and to reduce barriers for community contribution. We considered hosting these docs at redcap.vanderbilt.edu/docs
, but decided that using GitHub directly would be most likely to encourage contributions. A copy of these docs is also included in the External Module Framework repo via git-subrepo, to ensure that any find/replace actions also update the docs. Over time, we may want to consider moving other developer docs here from REDCap core.
Framework Features | Descriptions |
---|---|
Module Pages | Modules can provide their own pages to perform any arbitrary actions |
Hooks | Modules can define hook methods that execute in certain places on REDCap core pages |
Methods | The framework provides many features via methods on the module object |
SQL Queries | The recommended way to query the database from module code |
Logging | The framework's built-in logging functionality |
AJAX Requests | The recommended way to perform AJAX requests from module code |
Crons | Scheduled tasks that automatically execute periodically in the background |
Unit Testing | Writing standard PHPUnit tests for your module |
Compatibility | Making sure your module correctly specifies required REDCap & PHP versions |
Internationalization Guide | The guide for support multiple languages within your module |
Security | A summary of security related features |
Framework Versioning | The mechanism through which backward compatibility is maintained as the framework changes over time |
Misc. Resources | Descriptions |
---|---|
Beginner's Guide | Start here if you're new to External Module development |
Module Directory Names | Information on module directory naming |
Module Code Requirements | Information on basic module requirements |
config.json | Details on the format of the config.json file |
JavaScript in Modules | Recommendations for using javascript in modules |
Dependencies | Recommendations for including shared libraries in your module code |
Renaming a module | Concerns when renaming a module |
Proposing New Hooks | Instructions on how to propose additional hooks that any External Module can call |
Acknowledgments | Acknowledging contributors that have made these docs possible! |
GitHub's Search | Github's search feature (in the top of right corner of this page) is a great way to find keywords throughout these docs |