Virtual assistant that facilitates the management of medical information, with a focus on the protection of sensitive data (PII and PHI), predictive analysis of diagnoses and interactive dashboard for the visualization of key data.
This application utilizes the following Azure resources:
- Azure App Service to host the web app
- Azure Monitor for monitoring and logging
- Azure Key Vault for securing secrets
- Storage Accounts to facilitate the secure ingestion of massive patient data
- Azure Functions to process sensitive patient data
- Azure AI Language for automatic detection of sensitive data (PII and PHI) in medical documents
- Event Grid for reliable event delivery at scale
- Azure SQL Database for the storage of securely processed data
- Power BI Embedded to embed visualizations of key data such as the total count and categories of sensitive data collected.
- Defender for Cloud for unified security management and advanced threat protection
- Azure Policy and Compliance Center for auditing and monitoring
- Microsoft Entra ID to enable single sign-on
- Azure Healthcare Agent Services for building and deploying AI-powered health virtual assistant on Copilot Studio.
- Copilot Studio for detecting hospitalization risks in patients undergoing prostate biopsies.
- Azure Machine Learning for training and consuming the risk model.
Here's a high level architecture diagram that illustrates these components. These are all contained within a single resource group
The following video shows the user interface.
The easiest way to deploy this app is using the Azure Developer CLI. If you open this repo in GitHub CodeSpaces the AZD tooling is already preinstalled.
To provision and deploy:
- Open a new terminal and do the following from root folder:
azd up
- Python 3.8+ required
- Azure Functions Core Tools
- Azurite
- Once you have your Azure subscription, run the following in a new terminal window to create all the AI Language and other resources needed:
azd provision
Take note of the value of TEXT_ANALYTICS_ENDPOINT
which can be found in ./.azure/<env name from azd provision>/.env
. It will look something like:
TEXT_ANALYTICS_ENDPOINT="https://<unique string>.cognitiveservices.azure.com/"
Alternatively you can create a Language resource in the Azure portal to get your key and endpoint. After it deploys, click Go to resource and view the Endpoint value.
- Azure Storage Explorer or storage explorer features of Azure Portal
- Add this
local.settings.json
file to the./sensitive_data_processor
folder to simplify local development. Optionally fill in the AI_URL and AI_SECRET values per step 4. This file will be gitignored to protect secrets from committing to your repo.
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "python",
"TEXT_ANALYTICS_ENDPOINT": "<insert from step 4>"
}
}
- Open the root folder in VS Code:
code .
- Ensure
local.settings.json
exists already using steps above - Run and Debug by pressing
F5
- Open Storage Explorer, Storage Accounts -> Emulator -> Blob Containers -> and create a container
unprocessed-text
if it does not already exists - Copy any .txt document file with text into the
unprocessed-text
container
You will see AI analysis happen in the Terminal standard out. The analysis will be saved in a .txt file in the processed-text
blob container.
- Ensure
local.settings.json
exists already using steps above - Open a new terminal and do the following:
cd sensitive_data_processor
func start
- Open Storage Explorer, Storage Accounts -> Emulator -> Blob Containers -> and create a container
test-samples-trigger
if it does not already exists - Copy any .txt document file with text into the
test-samples-trigger
container
You will see AI analysis happen in the Terminal standard out. The analysis will be saved in a .txt file in the test-samples-output
blob container.
Contributions are always welcome!
See CONTRIBUTING.md for ways to get started.
Please adhere to this project's code of conduct.