| from __future__ import annotations |
|
|
| import json |
| import sys |
|
|
| from dcpg_encoder import DCPGEncoder, encode_patient |
|
|
| _encoder = DCPGEncoder() |
|
|
|
|
| def predict(graph_summary: dict, source: str = "dcpg") -> dict: |
| return encode_patient(graph_summary, encoder=_encoder, source=source) |
|
|
|
|
| def predict_batch(summaries: list, source: str = "dcpg") -> list: |
| return [predict(s, source=source) for s in summaries] |
|
|
|
|
| if __name__ == "__main__": |
| if len(sys.argv) > 1: |
| with open(sys.argv[1]) as f: |
| data = json.load(f) |
| result = predict(data) |
| else: |
| result = predict({ |
| "nodes": [ |
| {"node_id": "p1::text::NAME_DATE_MRN_FACILITY", "modality": "text", |
| "phi_type": "NAME_DATE_MRN_FACILITY", "risk_entropy": 0.8, |
| "context_confidence": 0.9, "pseudonym_version": 2}, |
| {"node_id": "p1::audio_proxy::VOICE", "modality": "audio_proxy", |
| "phi_type": "VOICE", "risk_entropy": 0.55, |
| "context_confidence": 0.6, "pseudonym_version": 1}, |
| ], |
| "edges": [ |
| {"source": "p1::text::NAME_DATE_MRN_FACILITY", |
| "target": "p1::audio_proxy::VOICE", |
| "type": "cross_modal", "weight": 0.63}, |
| ], |
| }) |
| print(json.dumps(result, indent=2)) |
|
|