├── __init__.py ├── eval ├── __init__.py ├── testdata │ ├── BUILD │ └── expected_results ├── run_pipeline.py ├── results.proto └── BUILD ├── common ├── __init__.py ├── BUILD ├── gcsutil.py ├── testutil.py └── beam_testutil.py ├── dlp ├── __init__.py ├── testdata │ ├── input.csv │ ├── BUILD │ ├── batch_config.json │ ├── multi_column_config.json │ ├── multi_column_request.json │ ├── batch_request.json │ ├── request.json │ └── config.json ├── mae_testdata │ ├── sample.xml │ ├── sample.dtd │ └── BUILD ├── experimental_deid_config.json ├── radiology_deid_config.json ├── BUILD └── run_deid.py ├── .gitignore ├── deid_app ├── backend │ ├── __init__.py │ ├── config.py │ └── BUILD ├── frontend │ ├── src │ │ ├── dlp-demo │ │ │ ├── dlp-demo.component.css │ │ │ ├── dlp-text-demo │ │ │ │ ├── dlp-text-demo.component.css │ │ │ │ ├── dlp-text-demo.component.html │ │ │ │ ├── dlp-text-demo.component.ts │ │ │ │ └── dlp-text-demo.component.spec.ts │ │ │ ├── dlp-demo.component.html │ │ │ ├── dlp-demo.component.ts │ │ │ ├── dlp-demo.component.spec.ts │ │ │ └── dlp-image-demo │ │ │ │ ├── dlp-image-demo.component.html │ │ │ │ ├── dlp-image-demo.component.css │ │ │ │ ├── dlp-image-demo.component.spec.ts │ │ │ │ └── dlp-image-demo.component.ts │ │ ├── deidentify │ │ │ ├── upload-notes │ │ │ │ ├── upload-notes.component.css │ │ │ │ ├── upload-notes.component.html │ │ │ │ ├── upload-notes.component.ts │ │ │ │ └── upload-notes.component.spec.ts │ │ │ ├── current-jobs │ │ │ │ ├── current-jobs.component.css │ │ │ │ ├── current-jobs.component.spec.ts │ │ │ │ ├── current-jobs.component.ts │ │ │ │ └── current-jobs.component.html │ │ │ ├── run-deidentify │ │ │ │ ├── run-deidentify.component.css │ │ │ │ └── run-deidentify.component.spec.ts │ │ │ ├── csv-upload │ │ │ │ ├── csv-upload.component.css │ │ │ │ ├── csv-upload.component.spec.ts │ │ │ │ ├── csv-upload.component.html │ │ │ │ └── csv-upload.component.ts │ │ │ ├── deid_job.ts │ │ │ ├── compare-data │ │ │ │ ├── compare-data.component.css │ │ │ │ ├── compare-data.component.spec.ts │ │ │ │ └── compare-data.component.html │ │ │ ├── deidentify.component.html │ │ │ ├── deidentify.component.ts │ │ │ ├── deidentify.component.css │ │ │ └── deidentify.component.spec.ts │ │ ├── common │ │ │ ├── bigquery-new-table.css │ │ │ ├── bigquery-table.css │ │ │ ├── display-option.ts │ │ │ ├── submit_component.css │ │ │ ├── submit_component.ts │ │ │ ├── submit_component.html │ │ │ ├── bigquery-table.html │ │ │ ├── bigquery-new-table.html │ │ │ ├── bigquery-table.ts │ │ │ └── bigquery-new-table.ts │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── styles.css │ │ ├── evaluate │ │ │ ├── eval-stats │ │ │ │ ├── eval-stats.component.css │ │ │ │ ├── eval-stats.component.spec.ts │ │ │ │ ├── eval-stats.component.html │ │ │ │ └── eval-stats.component.ts │ │ │ ├── eval-pipeline │ │ │ │ ├── eval-pipeline.component.css │ │ │ │ └── eval-pipeline.component.spec.ts │ │ │ ├── evaluate.component.html │ │ │ ├── evaluate.component.css │ │ │ ├── evaluate.component.ts │ │ │ ├── eval_job.ts │ │ │ └── evaluate.component.spec.ts │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.ts │ │ │ ├── routing.module.spec.ts │ │ │ ├── material.module.spec.ts │ │ │ ├── routing.module.ts │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.html │ │ │ ├── material.module.ts │ │ │ └── app.module.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ ├── tslint.json │ │ ├── browserslist │ │ ├── main.ts │ │ ├── index.html │ │ ├── test.ts │ │ ├── karma.conf.js │ │ ├── services │ │ │ ├── http_interceptor.ts │ │ │ ├── error_handler.ts │ │ │ └── dlp-demo.service.spec.ts │ │ └── polyfills.ts │ ├── proxy.conf.json │ ├── e2e │ │ ├── src │ │ │ ├── app.po.ts │ │ │ └── app.e2e-spec.ts │ │ ├── tsconfig.e2e.json │ │ └── protractor.conf.js │ ├── tsconfig.json │ ├── README.md │ ├── package.json │ └── tslint.json └── BUILD ├── physionet ├── __init__.py ├── docker │ ├── Dockerfile │ └── cloudbuild.yaml ├── bigquery_to_gcs.py ├── gcs_to_bigquery.py ├── bigquery_to_gcs_lib_test.py ├── physionet_to_mae.py ├── run_deid.py ├── gcs_to_bigquery_lib.py ├── bigquery_to_gcs_lib.py ├── physionet_to_mae_lib_test.py └── physionet_to_mae_lib.py ├── offline_tools └── redactor │ ├── .gitignore │ ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── examples │ └── tag_remover │ │ ├── src │ │ ├── test │ │ │ ├── resources │ │ │ │ ├── basic.dcm │ │ │ │ └── basic-redacted.dcm │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── google │ │ │ │ └── cloud │ │ │ │ └── healthcare │ │ │ │ └── deid │ │ │ │ └── remover │ │ │ │ └── TagRemoverTest.java │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── google │ │ │ └── cloud │ │ │ └── healthcare │ │ │ └── deid │ │ │ └── remover │ │ │ └── TagRemover.java │ │ └── build.gradle │ ├── lib │ ├── gradle.properties │ └── src │ │ └── main │ │ └── proto │ │ └── DicomConfig.proto │ ├── settings.gradle │ ├── build.gradle │ ├── README.md │ └── gradlew.bat ├── mae ├── images │ └── firewall_rule.png ├── docker │ ├── xstartup │ └── Dockerfile ├── BUILD ├── remove_invalid_characters.py ├── bq_to_xml.py └── txt_to_xml.py ├── README.md ├── requirements ├── requirements.txt └── BUILD ├── six.BUILD ├── mist ├── docker │ ├── cloudbuild.yaml │ └── Dockerfile ├── bigquery_to_gcs.py ├── gcs_to_bigquery.py ├── bigquery_to_gcs_lib_test.py ├── run_mist.py ├── README.md ├── gcs_to_bigquery_lib_test.py ├── bigquery_to_gcs_lib.py ├── BUILD └── gcs_to_bigquery_lib.py ├── CONTRIBUTING.md ├── setup.py └── WORKSPACE /__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /eval/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /common/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /dlp/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | bazel-* 2 | *.pyc -------------------------------------------------------------------------------- /deid_app/backend/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /physionet/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /offline_tools/redactor/.gitignore: -------------------------------------------------------------------------------- 1 | .gradle -------------------------------------------------------------------------------- /deid_app/frontend/src/dlp-demo/dlp-demo.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /deid_app/frontend/src/deidentify/upload-notes/upload-notes.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /deid_app/frontend/src/dlp-demo/dlp-text-demo/dlp-text-demo.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /physionet/docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM google/cloud-sdk:latest 2 | 3 | ADD . / 4 | -------------------------------------------------------------------------------- /deid_app/frontend/src/common/bigquery-new-table.css: -------------------------------------------------------------------------------- 1 | mat-form-field { 2 | width: 100%; 3 | } 4 | -------------------------------------------------------------------------------- /deid_app/frontend/src/common/bigquery-table.css: -------------------------------------------------------------------------------- 1 | mat-form-field { 2 | width: 100%; 3 | } 4 | 5 | -------------------------------------------------------------------------------- /deid_app/frontend/src/deidentify/current-jobs/current-jobs.component.css: -------------------------------------------------------------------------------- 1 | table { 2 | width: 100%; 3 | } 4 | -------------------------------------------------------------------------------- /deid_app/frontend/src/deidentify/upload-notes/upload-notes.component.html: -------------------------------------------------------------------------------- 1 |
2 | upload-notes works! 3 |
4 | -------------------------------------------------------------------------------- /deid_app/frontend/src/dlp-demo/dlp-text-demo/dlp-text-demo.component.html: -------------------------------------------------------------------------------- 1 |2 | dlp-text-demo works! 3 |
4 | -------------------------------------------------------------------------------- /deid_app/frontend/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /deid_app/frontend/src/deidentify/run-deidentify/run-deidentify.component.css: -------------------------------------------------------------------------------- 1 | mat-form-field { 2 | width: 100%; 3 | } 4 | -------------------------------------------------------------------------------- /mae/images/firewall_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/healthcare-deid/HEAD/mae/images/firewall_rule.png -------------------------------------------------------------------------------- /deid_app/frontend/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/healthcare-deid/HEAD/deid_app/frontend/src/favicon.ico -------------------------------------------------------------------------------- /dlp/testdata/input.csv: -------------------------------------------------------------------------------- 1 | name,patient_id,record_number,note,comments 2 | Bruce,222,1,Mr. Banner lives in Manhattan,Follow up at 1-212-555-1234 3 | -------------------------------------------------------------------------------- /deid_app/frontend/proxy.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "/api": { 3 | "target": "http://localhost:5000", 4 | "secure": false, 5 | "changeOrigin": true 6 | } 7 | } 8 | 9 | -------------------------------------------------------------------------------- /deid_app/frontend/src/styles.css: -------------------------------------------------------------------------------- 1 | @import '~@angular/material/prebuilt-themes/indigo-pink.css'; 2 | html, 3 | body { 4 | font-family: "Open Sans", sans-serif; 5 | } 6 | -------------------------------------------------------------------------------- /offline_tools/redactor/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/healthcare-deid/HEAD/offline_tools/redactor/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /deid_app/frontend/src/evaluate/eval-stats/eval-stats.component.css: -------------------------------------------------------------------------------- 1 | table, mat-form-field { 2 | width: 100%; 3 | } 4 | 5 | mat-cell, .mat-cell { 6 | padding: 12px 16px 12px 0; 7 | } 8 | -------------------------------------------------------------------------------- /deid_app/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | .title { 2 | margin: 0 auto; 3 | } 4 | 5 | mat-sidenav { 6 | width: 300px; 7 | } 8 | 9 | mat-button-toggle-group { 10 | width: 100% 11 | } 12 | 13 | -------------------------------------------------------------------------------- /deid_app/frontend/src/common/display-option.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Represents an option available in a select element. 3 | */ 4 | export interface DisplayOption { 5 | value: string; 6 | displayString: string; 7 | } 8 | -------------------------------------------------------------------------------- /offline_tools/redactor/examples/tag_remover/src/test/resources/basic.dcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/healthcare-deid/HEAD/offline_tools/redactor/examples/tag_remover/src/test/resources/basic.dcm -------------------------------------------------------------------------------- /deid_app/frontend/src/dlp-demo/dlp-demo.component.html: -------------------------------------------------------------------------------- 1 || ID | 9 |{{job.id}} | 10 |Name | 15 |{{job.name}} | 16 |Input Data | 21 |{{job.originalQuery}} | 22 |Redacted Table | 27 |{{job.deidTable}} | 28 |Status | 33 |{{job.status || "pending"}} | 34 |Timestamp | 39 |{{job.timestamp}} | 40 |
|---|
37 |
38 |
41 |
42 |
43 |
49 |
50 |
53 |
54 |
55 | | Info Type | 32 |{{stat.infoType}} | 33 |Recall | 38 |{{(stat.recall | percent:'1.0-2') || 'undefined'}} | 39 |Precision | 44 |{{(stat.precision | percent:'1.0-2') || 'undefined'}} | 45 |FScore | 50 |{{(stat.fScore | percent:'1.0-2') || 'undefined'}} | 51 |True Positives | 56 |{{stat.truePositives}} | 57 |False Positives | 62 |{{stat.falsePositives}} | 63 |False Negatives | 68 |{{stat.falseNegatives}} | 69 |
|---|