IRIS FHIR Transcribe Summarize Export

Downloads54
Subscribe
1
Bookmark
2
This application is not supported by InterSystems Corporation. Please be notified that you use it at your own responsibility.
Details
Releases
Reviews
Awards
Issues
Videos
Articles

What's new in this version

Added ZPM package

IRIS FHIR Transcribe-Summarize-Export

Gitter
Quality Gate Status

๐Ÿ’ป Contributors - Ikram Shah and Sowmiya Nagarajan.

๐Ÿš€ Built with IRIS FHIR, OpenAI, Langchain, Vue.js, Google Docs/Sheets API.

Demo

https://github.com/ikram-shah/iris-fhir-transcribe-summarize-export/assets/20276568/9edfedab-2d3d-442c-8853-21123bc49224

Overview

This is a full-stack application that allows practitioners and other clinicians to record voice notes linked to a subject and also export them to Google Docs/Sheets.

  1. The UI enables voice recording and the audio is transcribed to text using Open AI Whisper API.
  2. Then the notes are summarized using Open AI text-davinci-003 model and stored as Document References in FHIR server.
  3. Finally, there is an option to export the stored documents to Google Docs in an account of userโ€™s choice through OAuth2. Other data like Observations can be exported to Google Sheets.

Note - This implements a Community idea๐Ÿ’ก. Docs and Sheets export is directly handled via REST api in IRIS now. Itโ€™s not an interoperability adapter yet and itโ€™s WIP.

The application also acts as a dashboard to view patient and other information like observations and encounters.

The frontend UI is built as a Vue.js app. The backend is powered by IRIS REST api and there is an underlying FHIR server running to store all data. The application uses embedded-python to connect to FHIR api via fhirpy module.

Folder Structure

iris-fhir-transcribe-summarize-export/
โ”œโ”€โ”€src
โ”‚   โ”œโ”€โ”€ fhir/
โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ”œโ”€โ”€ python/                  //backend
โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ”œโ”€โ”€ vue/                     //frontend
โ”‚   โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ .env                 //environment file to add the openai_api_key and google_client_id
โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”œโ”€โ”€ Other/
โ”‚   โ””โ”€โ”€ IRIS-FHIR-...            //postman collection
โ”œโ”€โ”€ Scripts/
โ”‚   โ”œโ”€โ”€ iris.script
โ”‚   โ”œโ”€โ”€ rebuild.sh
โ”‚   โ””โ”€โ”€ synthea-loader.sh
โ”œโ”€โ”€ Scripts/
โ”œโ”€โ”€ docker-compose.yml
โ”œโ”€โ”€ Dockerfile
โ”œโ”€โ”€ README.md
โ””โ”€โ”€ https://github.com/ikram-shah/iris-fhir-transcribe-summarize-export/blob/master/LICENSE

Build and run

  1. Refer here to create an OpenAI API key. This is used in the transcription and summarizing the voice notes features. Set the key in .env for frontend.
  2. Follow steps in following section to configure OAuth Client ID for Google docs/sheets export. Set it in .env.
  3. Run below script to start frontend and backend apps. UI hot reloads, so no need to rebuild for every change. But backend needs a rebuild every time.
    ./scripts/rebuild.sh
    

Useful Links

  1. UI - http://localhost:8080
  2. Backend - http://localhost:52773/fhir/api/patient/all
  3. FHIR server - http://localhost:52773/fhir/r4/Patient

Configure Google OAuth Client ID

โ—The below steps take only a few minutes to get a new Client ID for testing. But, feel free to raise an issue to add specific mail IDs to our existing client ID to test quickly.โ—

  1. Follow steps here to create a OAuth consent screen and client ID for a test project.
  2. Add scope required for docs and sheets export - https://www.googleapis.com/auth/documents, https://www.googleapis.com/auth/spreadsheets
  3. Configure authorized javascript origin and authorized redirect URI as http://localhost:8080 or whichever port you run the frontend vue app on.
  4. Add some test user email IDs to allow testing. Only these users can authorize via the OAuth flow. If you need to open it up for more users, then a mandatory review process is required. More details here.
  5. Set the obtained client ID in .env

Test FHIR REST API

Find the full list of APIs in Postman Collection.

Run in Postman

Basic Auth credentials, username - SuperUser, password - SYS.

Test IRIS commands

Uncomment print(rows) in irisfhirclient to view results

  1. Exec into container
    docker-compose exec iris iris session iris
    
  2. IRIS commands
    do ##class(fhir.dc.FhirClient).GetResource("Patient")
    do ##class(fhir.dc.FhirClient).GetPatientResources("Observation","1")
    

Run Unit Tests

  1. Exec into container
    docker-compose exec iris iris session iris
    
  2. IRIS commands
    zn "FHIRSERVER"
    Set ^UnitTestRoot = "/irisdev/app/src"
    Do ##class(%UnitTest.Manager).RunTest("fhir","/loadudl")
    

License

This project is licensed under the MIT License.

You can find the full text of the license in the https://github.com/ikram-shah/iris-fhir-transcribe-summarize-export/blob/master/LICENSE file.

IPM installation
zpm "install iris-fhir-transcribe-summarize-export"
Rating
0 (0)
ObjectScript quality test
Passed
Updated on 06 December 2023
ObjectScript quality report
Category
Integration
Works with
InterSystems IRISInterSystems IRIS for HealthInterSystems FHIR
Tags
Info
Version
1.0.1
Last updated
2023-07-06
Repository
Open
Documentation
Open
License
Link