LForms, a.k.a. LHC-Forms, is a feature-rich, open-source Web Component that creates input forms, based on definition files, for Web-based applications. In addition to its native form-definition format, it partially supports the HL7 FHIR Questionnaire standard (SDC profile), and work is in progress to expand that support.
It is being developed by the Lister Hill National Center for Biomedical Communications (LHNCBC), National Library of Medicine (NLM), part of the National Institutes of Health (NIH), with the collaboration and support from the Regenstrief Institute, Inc. and the LOINC Committee.
For features and demos, please visit the project page.
See LICENSE.md.
If you wish to revise this package, the following steps will allow you to make changes and test them:
- Install Node.js (version 14 is what we are currently using, but it should work with later versions)
- Clone the lforms repository and cd to its directory
source bashrc.lforms
(make sure node dir is available at ~/)npm ci
source bashrc.lforms
# to add node_modules/.bin to your pathnpm run build
# build both FHIR libs and LHC-Forms web componentnpm run start
# starts the app we use for testingnpm run test
# runs the unit tests and e2e tests
If you are planning to contribute new functionality back to us, please coordinate with us, so that the new code is in the right places, and so that you don't accidentally add something that we are also working on.
-
Run
npm run start
for a dev server. Navigate tohttp://localhost:4200/
. The app will automatically reload if you change any of the source files. -
Run
npm run start-public
if you need to access to the dev server from a different machine. For example, to run Narrator from a Windows PC.
-
Run
npm run build
to build the project and generate a production version of the js files, which are much smaller than the development version. It generates two versions of the js files, an ES5 version and ES2015 version, under dist/lforms. For details on the files to load, see "Usng the LHC-Forms Web Component". Thedist
directory is deleted and recreated during the process.The build also concatenates all the js files (except for zone.min.js and the FHIR support files) into a single
lhc-forms.es5.js
andlhc-forms.es2015.js
file, and these work, but we don't currently recommend their use because the source maps don't work with these files. Also, there is a dist/webcomponent directory that is created with a copy of the files in dist/lforms, but that is only needed for the tests.
- Run
npm run test
to run unit tests and e2e tests, which also copies the FHIR lib files and built files in places for testing.
- Run
npm run test:unit
to execute the unit tests via Karma.
-
Run
npm run test:e2e:prepare
to copy necessary files in places for the tests and to update the web driver. -
Run
npm run test:e2e
to execute the end-to-end tests via Protractor. The e2e tests is configured to use Chrome. If Chrome has been updated, runnpm run update-webdriver
to update the Chrome web driver.
There are several script files to load. If you are building this, these files will be
under dist/lforms
. If you are using the pre-built versions from
https://clinicaltables.nlm.nih.gov/lforms-versions, then the file paths below
are relative to those versioned directories.
webcomponent/styles.css
You need to include the following files in your project:
webcomponent/styles.css
webcomponent/assets/lib/zone.min.js
(unless you already have zone.min.js on the page)webcomponent/scripts.js
webcomponent/runtime-[es5|es2015].js
webcomponent/polyfills-[es5|es2015].js
webcomponent/main-[es5|es2015].js
- One of the FHIR support library files, assuming you are planning to use
FHIR Questionnaires:
fhir/lformsFHIRAll.min.js
fhir/R4/lformsFHIR.min.js
fhir/STU3/lformsFHIR.min.js
There is an example of an app using these files at https://lhcforms.nlm.nih.gov/lforms-fhir-app/. For details about how to work with this library, and for information about an announcements list, see the documentation.