https://github.com/aehrc/smart-forms

React-based form renderer implementing Structured Data Capture (SDC) FHIR specification

https://github.com/aehrc/smart-forms

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    4 of 11 committers (36.4%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (8.4%) to scientific vocabulary

Keywords

fhir react structured-data-capture typescript

Keywords from Contributors

standardization archival interactive projection sequences autograding hacking shellcodes modular network-simulation
Last synced: 6 months ago · JSON representation

Repository

React-based form renderer implementing Structured Data Capture (SDC) FHIR specification

Basic Info
  • Host: GitHub
  • Owner: aehrc
  • License: apache-2.0
  • Language: TypeScript
  • Default Branch: alpha
  • Homepage: https://smartforms.csiro.au
  • Size: 44.2 MB
Statistics
  • Stars: 45
  • Watchers: 12
  • Forks: 20
  • Open Issues: 25
  • Releases: 4
Topics
fhir react structured-data-capture typescript
Created almost 4 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct

README.md

Smart Forms

An open source FHIR powered forms app built in React

Powered by SMART on FHIR and Structured Data Capture, Smart Forms allow you to easily integrate forms into your existing healthcare system.

NPM License: Apache 2.0

Show me the app ➡️

Check out the documentation 📚


Smart Forms is a Typescript-based React forms web application currently ongoing development by CSIRO's Australian e-Health Research Centre as part of the Primary Care Data Quality project funded by the Australian Government Department of Health.

The web app is intended to demonstrate the use of HL7 FHIR specifications, such as the Questionnaire and QuestionnaireResponse resources, the Structured Data Capture (SDC) implementation guide, and most notably it leverages SMART on FHIR capabilities that allows the app to be launched by a primary care Clinical Management System (CMS) and capture standardised health check information for healthcare clients.

This project was bootstrapped with Vite.

If you are interested in using the form renderer in your React app, a standalone package is published on NPM as @aehrc/smart-forms-renderer.

Functionalities

Smart Forms app

| Functionality | Description | Resources | Showcase 🖼️ (Right click -> Open link in new tab) | |----------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------| | Form population | Populate FHIR clinical data into forms, removing the need to re-enter generic information every time a new form is created, allows reusability of data. | SDC Populate | Population of patient details
Population of patient medical history | | Conditional rendering | Render form items conditionally based on user decisions or pre-determined data. | Questionnaire EnableWhen | Form tabs and items presented differently for patients of different age groups | | Built-in calculations | Perform calculations based on form item answers to produce a calculated result, e.g. BMI, CVD Risk Score. | SDC Calculations | Calculated BMI based on height and weight values | | ValueSet expansion | Perform expansion of ValueSet resources via the Ontoserver $expand operation API within autocomplete, dropdown, radio button and checkbox fields. | ValueSet expand
Ontoserver ValueSet API | Ontoserver ValueSet Expansion in an Autocomplete component | | QuestionnaireResponse write-back | A form can either be saved as a draft or as final, which will compile the form answers into a QuestionnaireResponse resource and store it on the CMS's FHIR server via REST API. | FHIR RESTful API | List of responses in context of a patient | | Form preview | Generate a human-readable preview of the QuestionnaireResponse which can be viewed while filling in the form or after the form is saved. |

-
| Human-readable form preview | | | Generic form implementation | The app tries its best to render any Questionnaire as long as it conforms to the FHIR specification! | Questionnaire
SDC | Rendering of an Australian absolute CVD Risk calculator questionnaire |

NOTE: The patients featured in the screenshots are synthetic and do not represent any real people.

Forms Server API

| Functionality | Description | Resources | |------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------| | Modular questionnaires | Allows a questionnaire to be composed of sub-questionnaires which allows for reusability of questionnaire components i.e. a single tab within a form with multiple tabs. Subquestionnaires can be "assembled" to form a complete questionnaire with the $assemble operation. | SDC Modular questionnaires |

Contents

  1. The Smart Forms web app. Try it out here: smartforms.csiro.au
  2. Implemented operations from the Structured Data Capture (SDC) specification:
  3. A standalone component of the questionnaire renderer published on NPM as @aehrc/smart-forms-renderer.

Conformance

Here's the Structured Data Capture (SDC) conformance sheet for the Smart Forms app: https://github.com/aehrc/smart-forms/blob/main/Conformance.md

Usage

Running on a SMART CMS client (the preferred way)

  1. Open https://launch.smarthealthit.org/ (or your own SMART on FHIR enabled CMS) in a browser.
  2. Set the App Launch URL at the bottom of the page as https://smartforms.csiro.au/launch and launch app.

image

Running in an unlaunched state

This method of running the app does not allow you to save responses as it is not connected to a CMS client.

  1. Open https://smartforms.csiro.au in a browser.
  2. You would have access to some pre-defined local questionnaires

NOTE: The app will not be able to view or save responses as it is not connected to a CMS client.

Local Development

Refer to LOCAL_DEVELOPMENT.md for instructions on local development and running.

Feature requests and bug reports

If you find any bugs, feel free to create an issue and we will try our best to get it fixed.

If you have any feature suggestions, feel free to also create an issue. However, we will try to prioritise more general rather than use-case specific features due to resourcing constraints.

We are also accepting contributions to make the product better! Please read CONTRIBUTING or discuss on zulip.

Discussions

We encourage having discussions on chat.fhir.org.

Smart Forms-related discussions can be raised in the Smart Forms's stream: https://chat.fhir.org/#narrow/stream/425534-smart-forms.

Any questionnnaire/SDC-related discussion can be raised in the questionnaire stream: https://chat.fhir.org/#narrow/stream/179255-questionnaire.

Licensing and attribution

Smart Forms is copyright © 2022-2024, Commonwealth Scientific and Industrial Research Organisation (CSIRO) ABN 41 687 119 230. Licensed under the Apache License, version 2.0.

This means that you are free to use, modify and redistribute the software as you wish, even for commercial purposes.

Smart Forms is experimental software at the moment, use it at your own risk!

Owner

  • Name: The Australian e-Health Research Centre
  • Login: aehrc
  • Kind: organization

The Australian e-Health Research Centre (AEHRC) is CSIRO’s digital health research program.

GitHub Events

Total
  • Create event: 295
  • Release event: 2
  • Issues event: 199
  • Watch event: 8
  • Delete event: 280
  • Member event: 3
  • Issue comment event: 355
  • Push event: 494
  • Pull request review event: 71
  • Pull request review comment event: 47
  • Pull request event: 527
  • Fork event: 8
Last Year
  • Create event: 295
  • Release event: 2
  • Issues event: 199
  • Watch event: 8
  • Delete event: 280
  • Member event: 3
  • Issue comment event: 355
  • Push event: 494
  • Pull request review event: 71
  • Pull request review comment event: 47
  • Pull request event: 527
  • Fork event: 8

Committers

Last synced: 8 months ago

All Time
  • Total Commits: 2,756
  • Total Committers: 11
  • Avg Commits per committer: 250.545
  • Development Distribution Score (DDS): 0.138
Past Year
  • Commits: 692
  • Committers: 7
  • Avg Commits per committer: 98.857
  • Development Distribution Score (DDS): 0.188
Top Committers
Name Email Commits
Sean Fong s****g@c****u 2,375
dependabot[bot] 4****] 300
janadh i****a@g****m 21
Maryam Mehdizadeh m****h@c****u 17
Riza Nafis r****s@g****m 14
John Grimes J****s@c****u 10
Sean Fong 5****g 9
Jörn Guy Süß j****s@c****u 4
liambarnes 6****s 3
Daniel O 8****l 2
Kai Kewley k****y@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 225
  • Total pull requests: 1,073
  • Average time to close issues: 23 days
  • Average time to close pull requests: 6 days
  • Total issue authors: 26
  • Total pull request authors: 10
  • Average comments per issue: 0.84
  • Average comments per pull request: 0.43
  • Merged pull requests: 553
  • Bot issues: 1
  • Bot pull requests: 680
Past Year
  • Issues: 121
  • Pull requests: 605
  • Average time to close issues: 17 days
  • Average time to close pull requests: 7 days
  • Issue authors: 19
  • Pull request authors: 7
  • Average comments per issue: 0.91
  • Average comments per pull request: 0.42
  • Merged pull requests: 243
  • Bot issues: 0
  • Bot pull requests: 445
Top Authors
Issue Authors
  • fongsean (151)
  • liambarnes (10)
  • johngrimes (9)
  • samturner-ADHA (7)
  • robeastwood-agency (7)
  • nielmdrec (6)
  • brendan-cheong (6)
  • preeti-niranjane (3)
  • samturneradha (3)
  • adha-admin (3)
  • jgsuess (3)
  • davidhay25 (2)
  • doconnor-clintel (2)
  • lamurian (1)
  • janadh (1)
Pull Request Authors
  • dependabot[bot] (680)
  • fongsean (343)
  • janadh (12)
  • MaryamMehd (12)
  • jgsuess (8)
  • ryuuzake (8)
  • johngrimes (4)
  • doconnor-clintel (3)
  • Vlpros (2)
  • liambarnes (1)
Top Labels
Issue Labels
healthchecks (22) smart app (19) smart app: form render (11) forms server (7) partially implemented poc (6) smart app: fhir api (6) smart testing platform (6) implemented poc (5) definition modelling (4) awaiting ADHA (3) invalid (2) awaiting ADHA review (2) priority (2) SHC MVP 30 June 2025 (2) epic (2) smart app: consumer forms (1) smart app: auth (1) under CSIRO review (1) wontfix (1) dependencies (1) javascript (1)
Pull Request Labels
dependencies (664) javascript (646) github_actions (6)

Packages

  • Total packages: 6
  • Total downloads:
    • npm 3,852 last-month
  • Total docker downloads: 31,879
  • Total dependent packages: 7
    (may contain duplicates)
  • Total dependent repositories: 1
    (may contain duplicates)
  • Total versions: 300
  • Total maintainers: 1
npmjs.org: @aehrc/smart-forms-renderer

FHIR Structured Data Captured (SDC) rendering engine for Smart Forms

  • Versions: 225
  • Dependent Packages: 1
  • Dependent Repositories: 1
  • Downloads: 2,080 Last month
Rankings
Downloads: 4.2%
Stargazers count: 8.4%
Forks count: 10.1%
Dependent repos count: 10.8%
Average: 17.4%
Dependent packages count: 53.6%
Maintainers (1)
Last synced: 6 months ago
npmjs.org: @aehrc/sdc-assemble

Performs the $assemble operation for modular forms from the HL7 FHIR SDC (Structured Data Capture) specification: http://hl7.org/fhir/uv/sdc/modular.html

  • Versions: 12
  • Dependent Packages: 2
  • Dependent Repositories: 0
  • Downloads: 109 Last month
  • Docker Downloads: 31,879
Rankings
Stargazers count: 8.8%
Forks count: 9.1%
Average: 27.4%
Dependent repos count: 37.5%
Dependent packages count: 53.9%
Maintainers (1)
Last synced: 6 months ago
npmjs.org: @aehrc/sdc-populate

Performs the $populate operation from the HL7 FHIR SDC (Structured Data Capture) specification: http://hl7.org/fhir/uv/sdc

  • Versions: 49
  • Dependent Packages: 1
  • Dependent Repositories: 0
  • Downloads: 1,501 Last month
Rankings
Stargazers count: 8.8%
Forks count: 9.1%
Average: 27.4%
Dependent repos count: 37.5%
Dependent packages count: 53.9%
Maintainers (1)
Last synced: 6 months ago
npmjs.org: @aehrc/sdc-template-extract

Performs template-based extraction from the HL7 FHIR SDC (Structured Data Capture) specification: https://build.fhir.org/ig/HL7/sdc/extraction.html#template-based-extraction

  • Versions: 11
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 161 Last month
Rankings
Dependent repos count: 24.6%
Average: 30.0%
Dependent packages count: 35.5%
Maintainers (1)
Last synced: 6 months ago
npmjs.org: @aehrc/smart-forms-questionnaire-samples

Sample questionnaire used in Storybook of @aehrc/smart-forms-renderer and documentation.

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 29.3%
Average: 35.6%
Dependent packages count: 41.9%
Maintainers (1)
Last synced: 6 months ago
npmjs.org: @aehrc/fhir-questionnaire-helpers

A Typescript library for questionnaire helper functions used in Smart Forms, smart-forms-renderer, sdc-populate and sdc-assemble.

  • Versions: 2
  • Dependent Packages: 3
  • Dependent Repositories: 0
  • Downloads: 1 Last month
Rankings
Dependent repos count: 36.0%
Average: 43.8%
Dependent packages count: 51.6%
Maintainers (1)
Last synced: 6 months ago

Dependencies

.github/workflows/main.yml actions
  • actions/checkout v3 composite
  • actions/setup-node v3 composite
  • codecov/codecov-action v3 composite
  • cypress-io/github-action v5 composite
services/assemble-express/Dockerfile docker
  • node 19 build
apps/smart-forms-react-app/package.json npm
  • @jest/globals ^29.4.1 development
  • @types/jest ^29.4.0 development
  • @typescript-eslint/eslint-plugin ^5.34.0 development
  • @typescript-eslint/parser ^5.34.0 development
  • cypress ^12.5.1 development
  • eslint ^8.22.0 development
  • eslint-config-prettier ^8.5.0 development
  • eslint-plugin-prettier ^4.2.1 development
  • eslint-plugin-react ^7.30.1 development
  • jest ^29.4.1 development
  • prettier ^2.7.1 development
  • ts-jest ^29.0.5 development
  • @emotion/react ^11.10.4
  • @emotion/styled ^11.10.4
  • @mui/icons-material ^5.10.2
  • @mui/lab ^5.0.0-alpha.96
  • @mui/material ^5.10.11
  • @mui/x-data-grid ^5.17.8
  • @mui/x-date-pickers ^5.0.1
  • @testing-library/jest-dom ^5.16.5
  • @testing-library/react ^13.3.0
  • @testing-library/user-event ^13.5.0
  • @types/date-fns ^2.6.0
  • @types/fhir ^0.0.35
  • @types/jest ^29.4.0
  • @types/lodash ^4.14.186
  • @types/marked ^4.0.8
  • @types/node ^16.11.56
  • @types/react ^18.0.17
  • @types/react-dom ^18.0.6
  • dayjs ^1.11.7
  • dotenv ^16.0.3
  • fhirclient ^2.5.2
  • fhirpath ^3.0.0
  • html-react-parser ^3.0.4
  • lodash ^4.17.21
  • material-ui-popup-state ^4.1.0
  • moment ^2.29.4
  • mui-markdown ^0.5.6
  • nanoid ^4.0.1
  • react ^18.2.0
  • react-dom ^18.2.0
  • react-router-dom ^6.4.0
  • react-scripts 5.0.1
  • react-to-print ^2.14.9
  • sdc-assemble ^0.1.0
  • sdc-populate ^1.0.0
  • typescript ^4.7.4
  • uuidjs ^4.2.13
  • web-vitals ^2.1.4
deployment/assemble/package.json npm
  • @types/jest ^27.5.2 development
  • @types/node 10.17.27 development
  • @types/prettier 2.6.0 development
  • aws-cdk-lib 2.47.0 development
  • constructs ^10.0.0 development
  • jest ^27.5.1 development
  • prettier ^2.8.1 development
  • ts-jest ^27.1.4 development
  • typescript ~3.9.7 development
deployment/csiro/package.json npm
  • @types/jest ^27.5.2 development
  • @types/node 10.17.27 development
  • @types/prettier 2.6.0 development
  • aws-cdk 2.39.0 development
  • jest ^27.5.1 development
  • ts-jest ^27.1.4 development
  • ts-node ^10.9.1 development
  • typescript ~3.9.7 development
  • assemble ^0.1.0
  • aws-cdk-lib 2.39.0
  • constructs ^10.0.0
  • forms-server ^0.1.0
  • source-map-support ^0.5.21
deployment/forms-server/package.json npm
  • @types/jest ^27.5.2 development
  • @types/node 10.17.27 development
  • @types/prettier 2.6.0 development
  • aws-cdk-lib 2.47.0 development
  • constructs ^10.0.0 development
  • jest ^27.5.1 development
  • prettier ^2.8.1 development
  • ts-jest ^27.1.4 development
  • typescript ~3.9.7 development
package-lock.json npm
  • 2021 dependencies
packages/sdc-assemble/package.json npm
  • @types/fhir ^0.0.35
  • axios ^1.3.0
packages/sdc-populate/package.json npm
  • @jest/globals ^29.3.1 development
  • @types/jest ^29.2.5 development
  • jest ^29.3.1 development
  • ts-jest ^29.0.5 development
  • dayjs ^1.11.7
  • fhir ^4.11.1
  • fhirclient ^2.5.2
  • moment ^2.29.4
services/assemble-express/package.json npm
  • @types/express ^4.17.15 development
  • @types/node ^18.11.15 development
  • typescript ^4.9.4 development
  • express ^4.18.2
  • sdc-assemble ^0.1.0
services/populate-express/package.json npm
  • express ^4.18.2
  • sdc-populate ^1.0.1