Local-first healthcare AI: clinical NER and HIPAA PII de-identification on hardware you control. 2,200+ medical models, 35 model-backed PII languages, and Python, MLX, Android and browser runtimes. Apache-2.0 SDK.
This report summarizes scanner evidence for maziyarpanahi/openmed, a Python project with 5,506 GitHub stars. SynthScan examined 1,498,535 lines of code across 4238 source files, recording 35390 pattern matches distributed across 24 syntactic categories. The legacy adjusted pattern signal is 25.1 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 20035 finding(s).
Are imports declared and package/API names verified? 11741 finding(s).
Are wrappers, guards, and repeated structures necessary? 22307 finding(s).
Which changes need focused human review? 35390 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 35390 distinct pattern matches across 24 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packaging/standalone_manifest.py | 484 | def _validate_entry_collection( | CODE |
| LOW | openmed/__init__.py | 278 | def _split_prediction_at_boundaries( | CODE |
| LOW | openmed/traces/audit.py | 461 | def _merged_byte_range_length(ranges: Iterable[ByteRange]) -> int: | CODE |
| LOW | openmed/traces/fidelity.py | 867 | def _is_path_segment_sequence(items: Sequence[Any]) -> bool: | CODE |
| LOW | openmed/traces/fidelity.py | 873 | def _looks_like_path_expression(value: object) -> bool: | CODE |
| LOW | openmed/traces/streaming.py | 114 | def _validate_positive_integer(value: int, name: str) -> int: | CODE |
| LOW | openmed/traces/tool_calls.py | 141 | def redact_tool_call_with_report( | CODE |
| LOW⚡ | openmed/traces/schemas/preference.py | 557 | def redact_dataset_with_report( | CODE |
| LOW | openmed/traces/schemas/preference.py | 686 | def redact_preference_dataset( | CODE |
| LOW | openmed/traces/schemas/preference.py | 864 | def _contains_source_fragment(source: str, candidate: str) -> bool: | CODE |
| LOW | openmed/traces/schemas/columnar.py | 129 | def iter_redacted_record_batches( | CODE |
| LOW | openmed/traces/schemas/chat.py | 862 | def redact_chat_record_with_report( | CODE |
| LOW | openmed/traces/schemas/chat.py | 926 | def redact_chat_messages_with_report( | CODE |
| LOW | openmed/core/repro_hash.py | 43 | def compute_canonical_payload_hash(payload: Any) -> str: | CODE |
| LOW | openmed/core/repro_hash.py | 63 | def compute_reproducibility_hash( | CODE |
| LOW | openmed/core/repro_hash.py | 113 | def compute_environment_lock_digest(lock_path: str | Path = "uv.lock") -> str: | CODE |
| LOW | openmed/core/repro_hash.py | 119 | def compute_training_reproducibility_hash( | CODE |
| LOW | openmed/core/repro_hash.py | 149 | def build_training_provenance( | CODE |
| LOW | openmed/core/repro_hash.py | 197 | def write_training_provenance( | CODE |
| LOW | openmed/core/repro_hash.py | 289 | def canonicalize_span_records(spans: Iterable[Any]) -> list[dict[str, Any]]: | CODE |
| LOW | openmed/core/repro_hash.py | 458 | def _normalise_training_provenance(provenance: Mapping[str, Any]) -> dict[str, Any]: | CODE |
| LOW | openmed/core/repro_hash.py | 531 | def _verify_manifest_row_hash(row: Mapping[str, Any], recorded_hash: str) -> None: | CODE |
| LOW | openmed/core/document_stream.py | 332 | def _select_overlap_sentences( | CODE |
| LOW | openmed/core/document_stream.py | 606 | def deidentify_document_stream( | CODE |
| LOW | openmed/core/labels.py | 616 | def canonical_label_for_column_semantic(semantic_type: str) -> str: | CODE |
| LOW | openmed/core/labels.py | 2448 | def supports_name_boundary_refinement(label: str, lang: str = "en") -> bool: | CODE |
| LOW | openmed/core/quality_gates.py | 301 | def validate_entity_spans_strict( | CODE |
| LOW | openmed/core/quality_gates.py | 362 | def resolve_overlapping_entities( | CODE |
| LOW | openmed/core/quality_gates.py | 426 | def detect_overlapping_entities( | CODE |
| LOW | openmed/core/key_custody.py | 389 | def validate_key_custody_metadata( | CODE |
| LOW | openmed/core/key_custody.py | 450 | def require_valid_key_custody_metadata( | CODE |
| LOW | openmed/core/key_custody.py | 857 | def _validate_transition_sequence( | CODE |
| LOW | openmed/core/key_custody.py | 952 | def _validate_cross_record_invariants( | CODE |
| LOW | openmed/core/key_custody.py | 1021 | def _looks_like_encoded_material(value: str) -> bool: | CODE |
| LOW | openmed/core/clinical_identifiers.py | 90 | def detect_clinical_identifiers(text: str, *, language: str) -> list[EntityPrediction]: | CODE |
| LOW | openmed/core/config.py | 145 | def _property_validation_errors( | CODE |
| LOW | openmed/core/audit.py | 98 | def _contains_sensitive_india_identifier(value: str) -> bool: | CODE |
| LOW | openmed/core/audit.py | 208 | def _safe_attribute_disclosure(value: Any) -> list[dict[str, Any]]: | CODE |
| LOW | openmed/core/audit.py | 248 | def _sanitize_release_assessment(value: Mapping[str, Any]) -> dict[str, Any]: | CODE |
| LOW | openmed/core/audit.py | 321 | def _safe_generalization_summary(value: Any) -> dict[str, Any]: | CODE |
| LOW | openmed/core/audit.py | 396 | def _sanitize_anonymization_summary(value: Mapping[str, Any]) -> dict[str, Any]: | CODE |
| LOW | openmed/core/audit.py | 443 | def _looks_like_detailed_risk_report(value: Mapping[str, Any]) -> bool: | CODE |
| LOW | openmed/core/audit.py | 451 | def _sanitize_detailed_risk_report(value: Mapping[str, Any]) -> dict[str, Any]: | CODE |
| LOW | openmed/core/audit.py | 561 | def _looks_like_kanon_enforcement(value: Mapping[str, Any]) -> bool: | CODE |
| LOW | openmed/core/audit.py | 567 | def _sanitize_kanon_enforcement(value: Mapping[str, Any]) -> dict[str, Any]: | CODE |
| LOW | openmed/core/audit.py | 1299 | def export_review_bundle_json(self) -> str: | CODE |
| LOW | openmed/core/export_naming.py | 86 | def _looks_like_raw_identifier(value: str) -> bool: | CODE |
| LOW | openmed/core/export_naming.py | 117 | def _normalise_schema_version(value: object) -> str: | CODE |
| LOW | openmed/core/export_naming.py | 178 | def _normalise_fingerprint_length(value: object) -> int: | CODE |
| LOW | openmed/core/export_naming.py | 208 | def _normalise_explicit_timestamp(value: object) -> str | None: | CODE |
| LOW | openmed/core/export_naming.py | 364 | def _snapshot_metadata_mapping(value: Mapping[str, Any]) -> dict[str, Any]: | CODE |
| LOW | openmed/core/models.py | 51 | def _ensure_hf_auto_tokenizer() -> None: | CODE |
| LOW | openmed/core/models.py | 168 | def load_local_sequence_classifier( | CODE |
| LOW | openmed/core/models.py | 778 | def _resolve_attn_implementation( | CODE |
| LOW | openmed/core/models.py | 791 | def _apply_attention_pipeline_kwargs(self, pipeline_kwargs: Dict[str, Any]) -> None: | CODE |
| LOW | openmed/core/models.py | 929 | def _build_load_quantization_config( | CODE |
| LOW | openmed/core/models.py | 961 | def _build_pipeline_cache_key( | CODE |
| LOW | openmed/core/surrogate_key_provider.py | 231 | def require_surrogate_key_capabilities( | CODE |
| LOW | openmed/core/surrogate_key_provider.py | 258 | def validate_surrogate_key_provider( | CODE |
| LOW | openmed/core/surrogate_vault.py | 304 | def _validated_name_matching_metadata( | CODE |
| 18402 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packaging/standalone_manifest.py | 18 | CODE | |
| LOW | openmed/__init__.py | 3 | CODE | |
| LOW | openmed/__init__.py | 11 | CODE | |
| LOW | openmed/__init__.py | 14 | CODE | |
| LOW | openmed/__init__.py | 14 | CODE | |
| LOW | openmed/__init__.py | 14 | CODE | |
| LOW | openmed/__init__.py | 14 | CODE | |
| LOW | openmed/__init__.py | 15 | CODE | |
| LOW | openmed/__init__.py | 16 | CODE | |
| LOW | openmed/__init__.py | 16 | CODE | |
| LOW | openmed/__init__.py | 16 | CODE | |
| LOW | openmed/__init__.py | 21 | CODE | |
| LOW | openmed/__init__.py | 21 | CODE | |
| LOW | openmed/__init__.py | 21 | CODE | |
| LOW | openmed/__init__.py | 26 | CODE | |
| LOW | openmed/__init__.py | 26 | CODE | |
| LOW | openmed/__init__.py | 26 | CODE | |
| LOW | openmed/__init__.py | 26 | CODE | |
| LOW | openmed/__init__.py | 26 | CODE | |
| LOW | openmed/__init__.py | 34 | CODE | |
| LOW | openmed/__init__.py | 35 | CODE | |
| LOW | openmed/aio.py | 9 | CODE | |
| LOW | openmed/aio.py | 30 | CODE | |
| LOW | openmed/aio.py | 32 | CODE | |
| LOW | openmed/aio.py | 35 | CODE | |
| LOW | openmed/traces/audit.py | 10 | CODE | |
| LOW | openmed/traces/discovery.py | 8 | CODE | |
| LOW | openmed/traces/transaction.py | 10 | CODE | |
| LOW | openmed/traces/__init__.py | 3 | CODE | |
| LOW | openmed/traces/__init__.py | 3 | CODE | |
| LOW | openmed/traces/__init__.py | 3 | CODE | |
| LOW | openmed/traces/__init__.py | 3 | CODE | |
| LOW | openmed/traces/__init__.py | 3 | CODE | |
| LOW | openmed/traces/__init__.py | 3 | CODE | |
| LOW | openmed/traces/__init__.py | 3 | CODE | |
| LOW | openmed/traces/__init__.py | 12 | CODE | |
| LOW | openmed/traces/__init__.py | 12 | CODE | |
| LOW | openmed/traces/__init__.py | 12 | CODE | |
| LOW | openmed/traces/__init__.py | 12 | CODE | |
| LOW | openmed/traces/__init__.py | 12 | CODE | |
| LOW | openmed/traces/__init__.py | 12 | CODE | |
| LOW | openmed/traces/__init__.py | 12 | CODE | |
| LOW | openmed/traces/__init__.py | 12 | CODE | |
| LOW | openmed/traces/__init__.py | 12 | CODE | |
| LOW | openmed/traces/__init__.py | 12 | CODE | |
| LOW | openmed/traces/__init__.py | 12 | CODE | |
| LOW | openmed/traces/__init__.py | 12 | CODE | |
| LOW | openmed/traces/__init__.py | 12 | CODE | |
| LOW | openmed/traces/__init__.py | 12 | CODE | |
| LOW | openmed/traces/__init__.py | 12 | CODE | |
| LOW | openmed/traces/__init__.py | 29 | CODE | |
| LOW | openmed/traces/__init__.py | 29 | CODE | |
| LOW | openmed/traces/__init__.py | 29 | CODE | |
| LOW | openmed/traces/__init__.py | 29 | CODE | |
| LOW | openmed/traces/__init__.py | 29 | CODE | |
| LOW | openmed/traces/__init__.py | 29 | CODE | |
| LOW | openmed/traces/__init__.py | 29 | CODE | |
| LOW | openmed/traces/__init__.py | 29 | CODE | |
| LOW | openmed/traces/__init__.py | 29 | CODE | |
| LOW | openmed/traces/__init__.py | 29 | CODE | |
| 10958 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | openmed/core/labels.py | 25 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/labels.py | 27 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/labels.py | 641 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/labels.py | 643 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/labels.py | 1644 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/labels.py | 1646 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/config.py | 850 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/config.py | 852 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/review_workflow.py | 567 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/review_workflow.py | 569 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_entity_merger.py | 113 | # ============================================================================ | COMMENT |
| MEDIUM | openmed/core/pii_entity_merger.py | 115 | # ============================================================================ | COMMENT |
| MEDIUM | openmed/core/pii_entity_merger.py | 581 | # ============================================================================ | COMMENT |
| MEDIUM | openmed/core/pii_entity_merger.py | 583 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | openmed/core/pii_i18n.py | 498 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | openmed/core/pii_i18n.py | 500 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | openmed/core/pii_i18n.py | 4886 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | openmed/core/pii_i18n.py | 4888 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | openmed/core/pii_i18n.py | 13191 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | openmed/core/pii_i18n.py | 13193 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 68 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 70 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 215 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 217 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 418 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 420 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 858 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 860 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 3499 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 3501 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 4128 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 4130 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 4277 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 4279 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 4832 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 4834 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 4987 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 4989 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 8989 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 8991 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9193 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9195 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9273 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9275 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9337 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9339 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9399 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9401 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9463 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9465 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9527 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9529 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9600 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9602 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9664 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9666 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 10934 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 10936 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 11264 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 11266 | # --------------------------------------------------------------------------- | COMMENT |
| 791 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | openmed/traces/transaction.py | 145 | Redact one local text file with an atomic in-place commit. Args: path: Existing regular file to replace. | STRING |
| HIGH | openmed/traces/fidelity.py | 472 | Verify structural fidelity after a trace transformation. Args: original: The pre-redaction JSON-like trace. | STRING |
| HIGH | openmed/traces/parallel.py | 348 | Partition trace paths into bounded shards without reordering them. Args: files: An iterable of local paths, | STRING |
| HIGH | openmed/traces/tool_calls.py | 103 | Return a structure-preserving redaction of one tool-call payload. Args: tool_call: JSON-compatible tool-cal | STRING |
| HIGH | openmed/traces/schemas/columnar.py | 70 | Redact configured text leaves in one Arrow record batch. ``text_columns`` contains top-level column names or dotted | STRING |
| HIGH | openmed/core/config.py | 562 | Create config from a named profile. Args: profile_name: Name of a built-in or custom profile. | STRING |
| HIGH | openmed/core/config.py | 874 | Get the settings for a specific profile. Args: profile_name: Name of the profile. Returns: Dic | STRING |
| HIGH | openmed/core/config.py | 927 | Delete a custom profile. Args: profile_name: Name of the profile to delete. Returns: True if d | STRING |
| HIGH | openmed/core/models.py | 247 | Load a TokenClassification model and tokenizer. Missing architecture metadata does not prevent loading; it only | STRING |
| HIGH | openmed/core/config_provenance.py | 213 | Resolve configuration sources and produce value-free provenance. The deterministic precedence order is ``default < | STRING |
| HIGH | openmed/core/locale_formats.py | 705 | Return date order and number separators for an OpenMed language code. Args: lang: OpenMed ISO 639-1 languag | STRING |
| HIGH | openmed/core/hf_hub.py | 127 | Resolve a registry alias or bare name to a fully-qualified Hub repo id. A value that already looks like a Hub id (c | STRING |
| HIGH | openmed/core/hf_hub.py | 171 | Pre-download an OpenMed model snapshot and return its local path. The friendly *name_or_alias* is resolved to a Hub | STRING |
| HIGH | openmed/core/hf_hub.py | 706 | Return the OpenMed model repos present in the local Hugging Face cache. The scan is read-only and never touches the | STRING |
| HIGH | openmed/core/hf_hub.py | 768 | Return the current Hub snapshot size for one model in decimal MB. This is the only size helper that performs a netw | STRING |
| HIGH | openmed/core/hf_hub.py | 809 | Delete a single OpenMed repo from the local Hugging Face cache. Args: name: Registry key, repo id, or bare | STRING |
| HIGH | openmed/core/local_identifiers.py | 130 | Return username entities found in absolute local paths. Args: text: Text containing logs, traces, or other | STRING |
| HIGH | openmed/core/budget.py | 229 | Validate and return a :class:`RequestBudget` or ``None``. Accepts an existing :class:`RequestBudget`, ``None`` (unl | STRING |
| HIGH | openmed/core/review_workflow.py | 339 | Build a review queue from an extraction or de-identification result. Surfaces the spans a human should look at befo | STRING |
| HIGH | openmed/core/review_workflow.py | 455 | Capture a reviewer's decision about a review item as a feedback record. Args: item: The :class:`ReviewItem` | STRING |
| HIGH | openmed/core/review_workflow.py | 543 | Append one feedback record to a local JSONL file. The file is created if it does not exist. Each call appends a sin | STRING |
| HIGH | openmed/core/telemetry.py | 90 | Parse an explicit telemetry opt-in value. Args: raw_value: Environment or configuration value. ``None``, an | STRING |
| HIGH | openmed/core/telemetry.py | 126 | Return the no-PHI subset of candidate stage attributes. String values are never accepted generically. Stage names m | STRING |
| HIGH | openmed/core/text_normalize.py | 85 | Translate a normalized half-open span to source offsets. Args: start: Inclusive normalized code-poi | STRING |
| HIGH | openmed/core/script_detect.py | 1741 | Decode untrusted multilingual bytes using an explicit codec allow-list. Codec names are normalized through a static | STRING |
| HIGH | openmed/core/deletion_verify.py | 1003 | Verify and delete files under ``root`` with process-local rollback. Args: root: Existing directory that bou | STRING |
| HIGH | openmed/core/capabilities.py | 328 | Return an importless :class:`BackendStatus` for a single backend. Args: name: A registered capability key ( | STRING |
| HIGH | openmed/core/iso_temporal.py | 58 | Parse an extended calendar date with a stable, value-free failure. Args: value: An ASCII ``YYYY-MM-DD`` cal | STRING |
| HIGH | openmed/core/iso_temporal.py | 81 | Parse an extended calendar date and optional colon-separated time. Args: value: ``YYYY-MM-DD`` optionally f | STRING |
| HIGH | openmed/core/iso_temporal.py | 117 | Parse a colon-separated clock time using the same explicit profile. Args: value: ``HH[:MM[:SS[.ffffff]]]`` | STRING |
| HIGH | openmed/core/language_pack.py | 235 | Register and return a language pack. Args: pack: Fully validated language-pack declaration. | STRING |
| HIGH | openmed/core/language_pack.py | 287 | Return the pack registered for ``code``. Args: code: Lowercase ISO 639-1 language code. Re | STRING |
| HIGH | openmed/core/path_portability.py | 243 | Audit local resource paths without reading the filesystem. Args: paths: An iterable of path strings or path | STRING |
| HIGH | openmed/core/pii_i18n.py | 2125 | Return the ISO 7064 MOD 11-2 check character for a 17-digit body. Args: body: The first 17 digits of a Chin | STRING |
| HIGH | openmed/core/pii_i18n.py | 5530 | Return the ISO 7064 MOD 31-3 check character for a USCC body. Args: body17: Seventeen characters from :data | STRING |
| HIGH | openmed/core/pii_i18n.py | 13256 | Return combined PII patterns for the given language. English patterns (email, URL, IP, etc.) are universal and alwa | STRING |
| HIGH | openmed/core/rtl_render.py | 252 | Render de-identified ``text`` with bidi-safe masks. For a right-to-left or mixed-script document, each replacement | STRING |
| HIGH | openmed/core/rtl_render.py | 338 | Wrap a single mask/surrogate token in ``FSI ... PDI`` isolates. A convenience for callers that build redacted outpu | STRING |
| HIGH | openmed/core/rtl_render.py | 399 | Remove bidi isolate/embedding/override controls and directional marks. For source text without pre-existing bidi co | STRING |
| HIGH | openmed/core/pii.py | 1356 | Extract PII entities from text with intelligent entity merging. Uses token classification models to detect personal | STRING |
| HIGH | openmed/core/pii.py | 2601 | De-identify text by detecting and redacting PII with intelligent merging. Implements multiple de-identification str | STRING |
| HIGH | openmed/core/pii.py | 3567 | Re-identify text using stored mapping. Restores original PII from de-identified text using the mapping created | STRING |
| HIGH | openmed/core/decoding/viterbi.py | 301 | Decode token-class indices via constrained BIOES Viterbi. Args: token_logprobs: One inner list of class log | STRING |
| HIGH | openmed/core/anonymizer/format_preserve.py | 161 | Render an Aadhaar value in UIDAI's masked ``XXXX XXXX NNNN`` form. The first eight digits are never returned. Alrea | STRING |
| HIGH | openmed/core/anonymizer/engine.py | 314 | Apply a dedicated Aadhaar anonymization strategy. Args: original: A checksum-valid Aadhaar value. | STRING |
| HIGH | openmed/ner/indexing.py | 123 | Discover models located under ``models_dir`` and return a structured index. Args: models_dir: Root director | STRING |
| HIGH | openmed/onnx/maple_export.py | 182 | Download the immutable BF16 Maple snapshot and bind it to a receipt. Args: destination: New or empty local | STRING |
| HIGH | openmed/onnx/tensorrt_export.py | 331 | Build and optionally certify a TensorRT token-classification engine. INT8 builds consume the shared deterministic s | STRING |
| HIGH | openmed/onnx/tensorrt_export.py | 648 | Verify a serialized engine against a pinned SHA-256 digest. Args: engine_path: Serialized engine to hash. | STRING |
| HIGH | openmed/onnx/tensorrt_session.py | 75 | Run one batch and return the engine's logits as a NumPy array. Args: input_ids: Rank-two token ID b | STRING |
| HIGH | openmed/processing/zh_normalize.py | 585 | Parse an everyday or financial-form Chinese numeral as an integer. Digit-only forms such as ``二〇二四`` are read posit | STRING |
| HIGH | openmed/processing/zh_segmentation.py | 238 | Create a Chinese segmenter without importing unselected backends. Args: backend: One of ``"jieba"``, ``"pku | STRING |
| HIGH | openmed/processing/zh_segmentation.py | 299 | Load a jieba-format medical dictionary through bounded validation. Args: path: Plain UTF-8 dictionary or si | STRING |
| HIGH | openmed/processing/zh_segmentation.py | 464 | Run the shared exact-offset conformance suite against one backend. Every case is checked independently so a report | STRING |
| HIGH | openmed/processing/text.py | 49 | Return bounded UTF-8 text safe to pass to PII normalization. The check runs before normalization allocates offset m | STRING |
| HIGH | openmed/processing/text.py | 1240 | Drop records fully contained by boilerplate/copy-forward annotations. Suppression is opt-in and conservative. Recor | STRING |
| HIGH | openmed/processing/zh_pinyin.py | 128 | Romanize Chinese text after word segmentation. Args: text: Source text to romanize. style: ``NORMAL | STRING |
| HIGH | openmed/processing/advanced_ner.py | 287 | Extract canonical biomedical entity spans with a registry-selected model. Args: text: Clinical text to clas | STRING |
| HIGH | openmed/plugins/conformance.py | 197 | Require plugin components to pass the offline conformance kit. Args: components: A component, component ite | STRING |
| HIGH | openmed/plugins/quarantine.py | 214 | Evaluate injected plugin metadata without loading plugin code. Args: metadata: One metadata mapping or an i | STRING |
| 342 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | openmed/__init__.py | 576 | except Exception: | CODE |
| HIGH | openmed/__init__.py | 571 | except Exception: | CODE |
| HIGH | openmed/traces/transaction.py | 628 | except (FileNotFoundError, OSError): | CODE |
| HIGH | openmed/traces/transaction.py | 461 | except OSError: | CODE |
| HIGH | openmed/traces/transaction.py | 466 | except OSError: | CODE |
| HIGH | openmed/traces/transaction.py | 570 | except OSError: | CODE |
| HIGH | openmed/traces/jsonl.py | 623 | except OSError: | CODE |
| HIGH | openmed/traces/parallel.py | 513 | except Exception: | CODE |
| HIGH | openmed/core/locale_tag.py | 123 | except LocaleTagError: | CODE |
| HIGH | openmed/core/config.py | 731 | except ValueError: | CODE |
| HIGH | openmed/core/config.py | 737 | except ValueError: | CODE |
| HIGH | openmed/core/config.py | 140 | except (TypeError, ValueError, OverflowError): | CODE |
| HIGH | openmed/core/model_cache_policy.py | 1030 | except (NameError, OSError): | CODE |
| HIGH | openmed/core/results.py | 22 | except (TypeError, ValueError): | CODE |
| HIGH | openmed/core/surrogate_vault_crypto.py | 362 | except OSError: | CODE |
| HIGH | openmed/core/deletion_verify.py | 382 | except OSError: | CODE |
| HIGH | openmed/core/deletion_verify.py | 925 | except OSError: | CODE |
| HIGH | openmed/core/deletion_verify.py | 685 | except OSError: | CODE |
| HIGH | openmed/core/deletion_verify.py | 880 | except OSError: | CODE |
| HIGH | openmed/core/deletion_verify.py | 585 | except OSError: | CODE |
| HIGH | openmed/core/deletion_verify.py | 608 | except OSError: | CODE |
| HIGH | openmed/core/deletion_verify.py | 650 | except DeletionVerificationError: | CODE |
| HIGH | openmed/core/deletion_verify.py | 744 | except OSError: | CODE |
| HIGH | openmed/core/deletion_verify.py | 1061 | except OSError: | CODE |
| HIGH | openmed/core/deletion_verify.py | 1081 | except OSError: | CODE |
| HIGH | openmed/core/deletion_verify.py | 1101 | except OSError: | CODE |
| HIGH | openmed/core/redaction_strength.py | 170 | except ValueError: | CODE |
| HIGH | openmed/core/iso_temporal.py | 73 | except ValueError: | CODE |
| HIGH | openmed/core/iso_temporal.py | 109 | except ValueError: | CODE |
| HIGH | openmed/core/iso_temporal.py | 133 | except ValueError: | CODE |
| HIGH | openmed/core/no_phi_telemetry.py | 869 | except ValueError: | CODE |
| HIGH | openmed/core/pii.py | 1998 | except (KeyError, TypeError, ValueError): | CODE |
| HIGH | openmed/ner/families/indic.py | 403 | except Exception: | CODE |
| HIGH | openmed/ner/families/indic.py | 310 | except IndicNerCompatibilityError: | CODE |
| HIGH | openmed/ner/families/indic.py | 315 | except IndicNerCompatibilityError: | CODE |
| HIGH | openmed/ner/families/gliner2.py | 152 | except Exception: # pragma: no cover - defensive path | CODE |
| HIGH | openmed/ner/families/gliner.py | 125 | except Exception: # pragma: no cover - defensive path | CODE |
| HIGH | openmed/onnx/gguf_embed_runtime.py | 326 | except (json.JSONDecodeError, RecursionError): | CODE |
| HIGH | openmed/onnx/ram_budget.py | 200 | except RamProbeUnavailable: | CODE |
| HIGH | openmed/onnx/streaming_loader.py | 747 | except (OSError, ValueError): | CODE |
| HIGH | openmed/onnx/streaming_loader.py | 189 | except Exception: | CODE |
| HIGH | openmed/onnx/streaming_loader.py | 717 | except BufferError: | CODE |
| HIGH | openmed/onnx/convert.py | 1225 | except OSError: | CODE |
| HIGH | openmed/processing/checkpoint.py | 278 | except FileNotFoundError: | CODE |
| HIGH | openmed/processing/batch.py | 295 | except OSError: # pragma: no cover - platform/filesystem dependent | CODE |
| HIGH | openmed/processing/batch.py | 335 | except FileNotFoundError: | CODE |
| HIGH | openmed/processing/tokenization.py | 1231 | except (AttributeError, TypeError, ValueError): | CODE |
| HIGH | openmed/processing/outputs.py | 27 | except (TypeError, ValueError): | CODE |
| HIGH | openmed/processing/outputs.py | 51 | except (TypeError, ValueError): | CODE |
| HIGH | openmed/training/directid_distill.py | 793 | except ImportError: | CODE |
| HIGH | openmed/training/directid_distill.py | 799 | except ImportError: | CODE |
| HIGH | openmed/interop/airflow.py | 851 | except OSError: | CODE |
| HIGH | openmed/interop/airflow.py | 899 | except OSError: | CODE |
| HIGH | openmed/interop/icd11_api.py | 857 | except OSError: | CODE |
| HIGH | openmed/interop/x12_837.py | 626 | except OSError: | CODE |
| HIGH | openmed/interop/document_quarantine.py | 381 | except (OSError, RuntimeError, ValueError, zipfile.BadZipFile): | CODE |
| HIGH | openmed/interop/document_quarantine.py | 420 | except (TypeError, ValueError): | CODE |
| HIGH | openmed/interop/search_pipeline.py | 290 | except TypeError: | CODE |
| HIGH | openmed/interop/openmrs.py | 525 | except ValueError: | CODE |
| HIGH | openmed/interop/postgres.py | 557 | except Exception: | CODE |
| 251 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openmed/__init__.py | 571 | except Exception: | CODE |
| LOW | openmed/__init__.py | 576 | except Exception: | CODE |
| LOW | openmed/__init__.py | 808 | except Exception as exc: # pragma: no cover | CODE |
| LOW | openmed/aio.py | 264 | except Exception: | CODE |
| LOW | openmed/traces/audit.py | 62 | except Exception: # noqa: BLE001 - untrusted metadata must fail closed | CODE |
| LOW | openmed/traces/audit.py | 69 | except Exception: # noqa: BLE001 - untrusted metadata must fail closed | CODE |
| LOW | openmed/traces/audit.py | 119 | except Exception: # noqa: BLE001 - input may expose PHI in errors | CODE |
| LOW | openmed/traces/audit.py | 126 | except Exception: # noqa: BLE001 - input may expose PHI in errors | CODE |
| LOW | openmed/traces/audit.py | 141 | except Exception: # noqa: BLE001 - mapping errors may contain PHI | CODE |
| LOW | openmed/traces/audit.py | 171 | except Exception: # noqa: BLE001 - untrusted metadata must fail closed | CODE |
| LOW | openmed/traces/audit.py | 507 | except Exception: # noqa: BLE001 - report inputs may contain PHI | CODE |
| MEDIUM | openmed/traces/audit.py | 493 | def __post_init__(self) -> None: | CODE |
| LOW | openmed/traces/transaction.py | 330 | except Exception: # noqa: BLE001 - path-like errors may contain PHI | CODE |
| LOW | openmed/traces/transaction.py | 341 | except Exception: # noqa: BLE001 - callback text may contain PHI | CODE |
| LOW | openmed/traces/jsonl.py | 300 | except Exception: # noqa: BLE001 - path errors may contain PHI | CODE |
| LOW | openmed/traces/jsonl.py | 318 | except Exception: # noqa: BLE001 - I/O errors may contain PHI paths | CODE |
| LOW | openmed/traces/jsonl.py | 331 | except Exception: # noqa: BLE001 - stream errors may contain PHI | CODE |
| LOW | openmed/traces/jsonl.py | 480 | except Exception: | CODE |
| LOW | openmed/traces/jsonl.py | 558 | except Exception: # noqa: BLE001 - path errors may contain PHI | CODE |
| LOW | openmed/traces/jsonl.py | 575 | except Exception: # noqa: BLE001 - path errors may contain PHI | CODE |
| LOW | openmed/traces/jsonl.py | 592 | except Exception: # noqa: BLE001 - path errors may contain PHI | CODE |
| LOW | openmed/traces/jsonl.py | 607 | except Exception: # noqa: BLE001 - stream errors may contain PHI | CODE |
| LOW | openmed/traces/jsonl.py | 614 | except Exception: # noqa: BLE001 - stream errors may contain PHI | CODE |
| LOW | openmed/traces/fidelity.py | 250 | except Exception: # noqa: BLE001 - report inputs may contain PHI | CODE |
| LOW | openmed/traces/fidelity.py | 524 | except Exception: # noqa: BLE001 - trace errors may contain sensitive values | CODE |
| LOW | openmed/traces/fidelity.py | 810 | except Exception: # noqa: BLE001 - configuration may contain PHI | CODE |
| LOW | openmed/traces/fidelity.py | 833 | except Exception: # noqa: BLE001 - configuration may contain PHI | CODE |
| LOW | openmed/traces/fidelity.py | 848 | except Exception: # noqa: BLE001 - configuration may contain PHI | CODE |
| LOW | openmed/traces/fidelity.py | 855 | except Exception: # noqa: BLE001 - configuration may contain PHI | CODE |
| LOW | openmed/traces/fidelity.py | 1025 | except Exception: | CODE |
| LOW | openmed/traces/fidelity.py | 1036 | except Exception: | CODE |
| LOW | openmed/traces/fidelity.py | 1047 | except Exception: | CODE |
| LOW | openmed/traces/fidelity.py | 1103 | except Exception: # noqa: BLE001 - direct report input may contain PHI | CODE |
| LOW | openmed/traces/fidelity.py | 1121 | except Exception: # noqa: BLE001 - trace metadata may contain PHI | CODE |
| MEDIUM | openmed/traces/fidelity.py | 238 | def __post_init__(self) -> None: | CODE |
| LOW⚡ | openmed/traces/streaming.py | 477 | except Exception: | CODE |
| LOW⚡ | openmed/traces/streaming.py | 487 | except Exception: | CODE |
| LOW⚡ | openmed/traces/streaming.py | 494 | except Exception: | CODE |
| LOW⚡ | openmed/traces/streaming.py | 832 | except Exception: | CODE |
| LOW⚡ | openmed/traces/streaming.py | 838 | except Exception: | CODE |
| LOW⚡ | openmed/traces/streaming.py | 846 | except Exception: | CODE |
| LOW⚡ | openmed/traces/streaming.py | 854 | except Exception: | CODE |
| LOW | openmed/traces/streaming.py | 577 | except Exception: | CODE |
| LOW | openmed/traces/streaming.py | 600 | except Exception: | CODE |
| LOW | openmed/traces/streaming.py | 623 | except Exception: | CODE |
| LOW | openmed/traces/streaming.py | 635 | except Exception: | CODE |
| LOW | openmed/traces/streaming.py | 662 | except Exception: | CODE |
| LOW | openmed/traces/streaming.py | 774 | except Exception: | CODE |
| LOW | openmed/traces/parallel.py | 102 | except Exception: | CODE |
| LOW | openmed/traces/parallel.py | 110 | except Exception: # pragma: no cover - hostile exception metaclass | CODE |
| LOW | openmed/traces/parallel.py | 126 | except Exception: | CODE |
| LOW | openmed/traces/parallel.py | 154 | except Exception: | CODE |
| LOW | openmed/traces/parallel.py | 368 | except Exception: | CODE |
| LOW | openmed/traces/parallel.py | 376 | except Exception: | CODE |
| LOW | openmed/traces/parallel.py | 400 | except Exception: | CODE |
| LOW | openmed/traces/parallel.py | 412 | except Exception: | CODE |
| LOW | openmed/traces/parallel.py | 428 | except Exception as exc: | CODE |
| LOW | openmed/traces/parallel.py | 492 | except Exception: | CODE |
| LOW | openmed/traces/parallel.py | 506 | except Exception: | CODE |
| LOW | openmed/traces/parallel.py | 513 | except Exception: | CODE |
| 1120 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packaging/standalone_manifest.py | 899 | __all__ = [ | CODE |
| LOW | openmed/__init__.py | 266 | logger = logging.getLogger(__name__) | CODE |
| LOW | openmed/__init__.py | 859 | __all__ = [ | CODE |
| LOW | openmed/aio.py | 310 | __all__ = ["aextract_pii", "adeidentify", "aanalyze_text", "abatch"] | CODE |
| LOW | openmed/traces/audit.py | 1080 | __all__ = [ | CODE |
| LOW | openmed/traces/discovery.py | 374 | __all__ = [ | CODE |
| LOW | openmed/traces/transaction.py | 29 | __all__ = [ | CODE |
| LOW | openmed/traces/__init__.py | 72 | __all__ = [ | CODE |
| LOW | openmed/traces/jsonl.py | 51 | __all__ = [ | CODE |
| LOW | openmed/traces/jsonl.py | 463 | def _set_path(record: dict[str, Any], path: JsonPath, value: str) -> None: | CODE |
| LOW | openmed/traces/fidelity.py | 1139 | __all__ = [ | CODE |
| LOW | openmed/traces/streaming.py | 1106 | __all__ = [ | CODE |
| LOW | openmed/traces/parallel.py | 689 | __all__ = [ | CODE |
| LOW | openmed/traces/tool_calls.py | 543 | __all__ = [ | CODE |
| LOW | openmed/traces/schemas/preference.py | 1002 | __all__ = [ | CODE |
| LOW | openmed/traces/schemas/columnar.py | 23 | __all__ = [ | CODE |
| LOW | openmed/traces/schemas/registry.py | 1026 | __all__ = [ | CODE |
| LOW | openmed/traces/schemas/__init__.py | 21 | __all__ = [ | CODE |
| LOW | openmed/traces/schemas/chat.py | 965 | __all__ = [ | CODE |
| LOW | openmed/core/safety_sweep.py | 359 | __all__ = [ | CODE |
| LOW | openmed/core/repro_hash.py | 589 | __all__ = [ | CODE |
| LOW | openmed/core/document_stream.py | 38 | __all__ = [ | CODE |
| LOW | openmed/core/labels.py | 2513 | __all__ = [ | CODE |
| LOW | openmed/core/locale_tag.py | 9 | __all__ = [ | CODE |
| LOW | openmed/core/quality_gates.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | openmed/core/quality_gates.py | 189 | def _set_span_valid(entity: Any, valid: bool) -> None: | CODE |
| LOW | openmed/core/key_custody.py | 1040 | __all__ = [ | CODE |
| LOW | openmed/core/clinical_identifiers.py | 169 | __all__ = [ | CODE |
| LOW | openmed/core/config.py | 690 | def set_config(config: OpenMedConfig) -> None: | CODE |
| LOW | openmed/core/audit.py | 1355 | __all__ = [ | CODE |
| LOW | openmed/core/export_naming.py | 573 | __all__ = [ | CODE |
| LOW | openmed/core/lang_id_codemix.py | 357 | __all__ = [ | CODE |
| LOW | openmed/core/models.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | openmed/core/config_provenance.py | 535 | __all__ = [ | CODE |
| LOW | openmed/core/surrogate_key_provider.py | 25 | __all__ = [ | CODE |
| LOW | openmed/core/clinical_label_map.py | 76 | __all__ = ["CLINICAL_LABEL_MAP_VERSION", "clinical_label", "clinical_label_map"] | CODE |
| LOW | openmed/core/surrogate_vault.py | 391 | def set_epoch_manager(self, epoch_manager: _EpochManager) -> None: | CODE |
| LOW | openmed/core/surrogate_vault.py | 411 | def set_name_matching_metadata(self, metadata: Mapping[str, Any]) -> None: | CODE |
| LOW | openmed/core/surrogate_vault.py | 1881 | __all__ = [ | CODE |
| LOW | openmed/core/baseline.py | 320 | __all__ = [ | CODE |
| LOW | openmed/core/model_cache_policy.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | openmed/core/model_cache_policy.py | 1045 | __all__ = [ | CODE |
| LOW | openmed/core/manifest.py | 594 | __all__ = [ | CODE |
| LOW | openmed/core/thresholds.py | 580 | __all__ = [ | CODE |
| LOW | openmed/core/locale_formats.py | 979 | __all__ = [ | CODE |
| LOW | openmed/core/date_shift.py | 92 | __all__ = [ | CODE |
| LOW | openmed/core/hf_hub.py | 38 | __all__ = [ | CODE |
| LOW | openmed/core/hf_hub.py | 649 | def update_transfer(self, byte_count: int | float | None = 1) -> None: | CODE |
| LOW⚡ | openmed/core/hf_hub.py | 668 | def set_description(self, *args: Any, **kwargs: Any) -> None: | CODE |
| LOW⚡ | openmed/core/hf_hub.py | 671 | def set_postfix_str(self, *args: Any, **kwargs: Any) -> None: | CODE |
| LOW⚡ | openmed/core/hf_hub.py | 674 | def set_transfer_postfix_str(self, *args: Any, **kwargs: Any) -> None: | CODE |
| LOW | openmed/core/local_identifiers.py | 200 | __all__ = [ | CODE |
| LOW | openmed/core/budget.py | 51 | __all__ = [ | CODE |
| LOW | openmed/core/review_workflow.py | 69 | __all__ = [ | CODE |
| LOW | openmed/core/language_pack_catalog.py | 734 | __all__ = [ | CODE |
| LOW | openmed/core/language_pack_coherence.py | 330 | __all__ = [ | CODE |
| LOW | openmed/core/arbitration.py | 491 | __all__ = [ | CODE |
| LOW | openmed/core/policy.py | 962 | __all__ = [ | CODE |
| LOW | openmed/core/__init__.py | 206 | __all__ = [ | CODE |
| LOW⚡ | openmed/core/telemetry.py | 232 | def _set_attributes(self, attributes: Mapping[str, Any]) -> None: | CODE |
| 1077 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openmed/__init__.py | 278 | CODE | |
| LOW | openmed/__init__.py | 405 | CODE | |
| LOW | openmed/__init__.py | 717 | CODE | |
| LOW | openmed/traces/audit.py | 682 | CODE | |
| LOW | openmed/traces/audit.py | 983 | CODE | |
| LOW | openmed/traces/discovery.py | 290 | CODE | |
| LOW | openmed/traces/discovery.py | 335 | CODE | |
| LOW | openmed/traces/jsonl.py | 413 | CODE | |
| LOW | openmed/traces/jsonl.py | 550 | CODE | |
| LOW | openmed/traces/fidelity.py | 800 | CODE | |
| LOW | openmed/traces/fidelity.py | 1077 | CODE | |
| LOW | openmed/traces/streaming.py | 1059 | CODE | |
| LOW | openmed/traces/streaming.py | 462 | CODE | |
| LOW | openmed/traces/parallel.py | 478 | CODE | |
| LOW | openmed/traces/parallel.py | 559 | CODE | |
| LOW | openmed/traces/tool_calls.py | 237 | CODE | |
| LOW | openmed/traces/tool_calls.py | 480 | CODE | |
| LOW | openmed/traces/schemas/preference.py | 437 | CODE | |
| LOW | openmed/traces/schemas/preference.py | 588 | CODE | |
| LOW | openmed/traces/schemas/columnar.py | 248 | CODE | |
| LOW | openmed/traces/schemas/registry.py | 137 | CODE | |
| LOW | openmed/traces/schemas/registry.py | 157 | CODE | |
| LOW | openmed/traces/schemas/chat.py | 213 | CODE | |
| LOW | openmed/core/safety_sweep.py | 141 | CODE | |
| LOW | openmed/core/result_cache.py | 62 | CODE | |
| LOW | openmed/core/document_stream.py | 433 | CODE | |
| LOW | openmed/core/key_custody.py | 462 | CODE | |
| LOW | openmed/core/key_custody.py | 772 | CODE | |
| LOW | openmed/core/key_custody.py | 890 | CODE | |
| LOW | openmed/core/key_custody.py | 995 | CODE | |
| LOW | openmed/core/config.py | 754 | CODE | |
| LOW | openmed/core/config.py | 561 | CODE | |
| LOW | openmed/core/audit.py | 208 | CODE | |
| LOW | openmed/core/audit.py | 647 | CODE | |
| LOW | openmed/core/export_naming.py | 433 | CODE | |
| LOW | openmed/core/surrogate_vault.py | 1107 | CODE | |
| LOW | openmed/core/model_cache_policy.py | 279 | CODE | |
| LOW | openmed/core/model_cache_policy.py | 583 | CODE | |
| LOW | openmed/core/model_cache_policy.py | 717 | CODE | |
| LOW | openmed/core/policy.py | 572 | CODE | |
| LOW | openmed/core/model_integrity.py | 327 | CODE | |
| LOW | openmed/core/text_normalize.py | 155 | CODE | |
| LOW | openmed/core/catalog_coherence.py | 22 | CODE | |
| LOW | openmed/core/pii_entity_merger.py | 648 | CODE | |
| LOW | openmed/core/pii_entity_merger.py | 764 | CODE | |
| LOW | openmed/core/pii_entity_merger.py | 828 | CODE | |
| LOW | openmed/core/custom_recognizer.py | 820 | CODE | |
| LOW | openmed/core/script_detect.py | 815 | CODE | |
| LOW | openmed/core/script_detect.py | 875 | CODE | |
| LOW | openmed/core/registry_service.py | 102 | CODE | |
| LOW | openmed/core/registry_service.py | 538 | CODE | |
| LOW | openmed/core/registry_service.py | 580 | CODE | |
| LOW | openmed/core/policy_lint.py | 252 | CODE | |
| LOW | openmed/core/registry_slots.py | 114 | CODE | |
| LOW | openmed/core/registry_slots.py | 229 | CODE | |
| LOW | openmed/core/registry_slots.py | 625 | CODE | |
| LOW | openmed/core/registry_slots.py | 735 | CODE | |
| LOW | openmed/core/deletion_verify.py | 656 | CODE | |
| LOW | openmed/core/deletion_verify.py | 689 | CODE | |
| LOW | openmed/core/deletion_verify.py | 837 | CODE | |
| 810 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | README.hi.md | 470 | [('NAME', 'John Doe'), ('DATE', '01/15/1970'), ('SSN', '123-45-6789')] | CODE |
| LOW | CHANGELOG.md | 3285 | - **`method="replace"` outputs no longer come from the prior hardcoded list** (`["Jane Smith", "John Doe", "Alex Johnson | CODE |
| LOW | CHANGELOG.md | 3534 | - Expanded locale fake-data dictionaries with `FIRST_NAME`, `LAST_NAME`, and `ZIPCODE` values across supported languag | CODE |
| LOW | README.md | 476 | [('NAME', 'John Doe'), ('DATE', '01/15/1970'), ('SSN', '123-45-6789')] | CODE |
| LOW | README.zh-CN.md | 468 | [('NAME', 'John Doe'), ('DATE', '01/15/1970'), ('SSN', '123-45-6789')] | CODE |
| LOW | openmed/core/secrets.py | 283 | "placeholder", | CODE |
| LOW⚡ | openmed/core/pii_i18n.py | 12196 | "NAME": ["Jane Smith", "John Doe", "Alex Johnson", "Sam Taylor"], | CODE |
| LOW⚡ | openmed/core/pii_i18n.py | 12199 | "EMAIL": ["patient@example.com", "contact@example.org"], | CODE |
| LOW⚡ | openmed/core/pii_i18n.py | 12200 | "PHONE": ["555-0123", "555-0456", "555-0789"], | CODE |
| LOW⚡ | openmed/core/pii_i18n.py | 12202 | "STREET_ADDRESS": ["123 Main St", "456 Oak Ave"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12184 | "EMAIL": ["pasiënt@example.co.za", "kontak@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12309 | "EMAIL": ["pacjent@example.pl", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12339 | "EMAIL": ["patient@example.in", "sampark@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12376 | "EMAIL": ["patient@example.in", "sampark@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12403 | "EMAIL": ["takami@example.et", "contact@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12433 | "EMAIL": ["patient@example.eg", "contact@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12455 | "EMAIL": ["bimar@example.ir", "tamas@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12478 | "EMAIL": ["mareez@example.in", "rabta@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12511 | "EMAIL": ["patient@example.co.il", "contact@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12548 | "EMAIL": ["patient@example.jp", "renraku@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12625 | "EMAIL": ["pasyente@example.ph", "kontak@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12673 | "EMAIL": ["isiguli@example.co.za", "xhumana@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12693 | "EMAIL": ["isigulane@example.co.za", "qhagamshelana@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12708 | "EMAIL": ["patient@example.se", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12723 | "EMAIL": ["patient@example.dk", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12738 | "EMAIL": ["pasient@example.no", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12758 | "EMAIL": ["benhnhan@example.vn", "lienhe@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12781 | "EMAIL": ["patient@example.th", "contact@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12799 | "EMAIL": ["pacients@example.lv", "kontakts@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12819 | "EMAIL": ["pacient@example.sk", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12885 | "EMAIL": ["pacient@example.ru", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12900 | "EMAIL": ["potilas@example.fi", "yhteys@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12915 | "EMAIL": ["patsient@example.bg", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12930 | "EMAIL": ["pacijent@example.hr", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12945 | "EMAIL": ["pacijent@example.rs", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12960 | "EMAIL": ["beteg@example.hu", "kapcsolat@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12975 | "EMAIL": ["patsient@example.ee", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 12990 | "EMAIL": ["patsiient@example.ua", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 13005 | "EMAIL": ["pacient@example.cz", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 13025 | "EMAIL": ["asthenis@example.gr", "epikoinonia@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 13045 | "EMAIL": ["majiyyaci@example.ng", "tuntuɓa@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 13065 | "EMAIL": ["onyeoria@example.ng", "uloogwu@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 13085 | "EMAIL": ["alaisan@example.ng", "iwosan@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 13100 | "EMAIL": ["patient@example.cn", "contact@example.org"], | CODE |
| LOW | openmed/core/pii.py | 3092 | # Canonical labels that don't have a fake-data key fall through to the | COMMENT |
| LOW⚡ | openmed/core/pii.py | 3146 | fake_data = LANGUAGE_FAKE_DATA.get(lang, LANGUAGE_FAKE_DATA["en"]) | CODE |
| LOW⚡ | openmed/core/pii.py | 3149 | if key in fake_data: | CODE |
| LOW⚡ | openmed/core/pii.py | 3150 | return random.choice(fake_data[key]) | CODE |
| LOW | openmed/core/pii.py | 18 | ... {"[NAME]": "Casey Example", "[PHONE]": "555-0100"}, | STRING |
| LOW⚡ | openmed/core/anonymizer/format_preserve.py | 108 | def preserve_email_pattern(original: str, fake_email: str) -> str: | CODE |
| LOW⚡ | openmed/core/anonymizer/format_preserve.py | 109 | """Use ``fake_email``'s local part with ``original``'s domain. | STRING |
| LOW⚡ | openmed/core/anonymizer/format_preserve.py | 113 | the local part. Falls back to ``fake_email`` verbatim if either side | STRING |
| LOW⚡ | openmed/core/anonymizer/format_preserve.py | 116 | if "@" not in original or "@" not in fake_email: | CODE |
| LOW⚡ | openmed/core/anonymizer/format_preserve.py | 117 | return fake_email | CODE |
| LOW⚡ | openmed/core/anonymizer/format_preserve.py | 118 | fake_local = fake_email.split("@", 1)[0] | CODE |
| LOW | openmed/core/anonymizer/engine.py | 75 | consistency (so "John Doe" appearing twice gets one surrogate). | STRING |
| LOW | openmed/processing/display.py | 361 | >>> "PERSON" in html and "John Doe" in html | STRING |
| LOW | openmed/interop/retrieval/redacted_index.py | 55 | "placeholder": self.placeholder, | CODE |
| LOW | openmed/interop/retrieval/redacted_index.py | 67 | "placeholder", | CODE |
| LOW | openmed/interop/retrieval/redacted_index.py | 75 | placeholder=str(payload["placeholder"]), | CODE |
| 628 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | openmed/traces/transaction.py | 0 | copy a string into a base ``str`` without calling subclass hooks. | STRING |
| HIGH | openmed/traces/fidelity.py | 0 | copy a string into a base ``str`` without calling subclass hooks. | STRING |
| HIGH | openmed/traces/parallel.py | 0 | copy a string into a base ``str`` without calling subclass hooks. | STRING |
| HIGH | openmed/traces/schemas/preference.py | 0 | copy a string into a base ``str`` without calling subclass hooks. | STRING |
| HIGH | openmed/traces/schemas/columnar.py | 0 | copy a string into a base ``str`` without calling subclass hooks. | STRING |
| HIGH | openmed/traces/schemas/registry.py | 0 | copy a string into a base ``str`` without calling subclass hooks. | STRING |
| HIGH | openmed/traces/schemas/chat.py | 0 | copy a string into a base ``str`` without calling subclass hooks. | STRING |
| HIGH | scripts/skills/build_packs.py | 0 | copy a string into a base ``str`` without calling subclass hooks. | STRING |
| HIGH | openmed/processing/advanced_ner.py | 0 | return the character-offset identity for this span. | STRING |
| HIGH | openmed/clinical/decision_support.py | 0 | return the character-offset identity for this span. | STRING |
| HIGH | openmed/clinical/relations/candidate.py | 0 | return the character-offset identity for this span. | STRING |
| HIGH | openmed/training/synthetic/spdx_identifier.py | 0 | return a deterministic dictionary in fixed field order. | STRING |
| HIGH | openmed/multimodal/frame_sampling_manifest.py | 0 | return a deterministic dictionary in fixed field order. | STRING |
| HIGH | openmed/multimodal/audio_format_summary.py | 0 | return a deterministic dictionary in fixed field order. | STRING |
| HIGH | openmed/multimodal/processing_summary.py | 0 | return a deterministic dictionary in fixed field order. | STRING |
| HIGH | openmed/multimodal/audio_resample_plan.py | 0 | return a deterministic dictionary in fixed field order. | STRING |
| HIGH | openmed/multimodal/image_geometry.py | 0 | return a deterministic dictionary in fixed field order. | STRING |
| HIGH | openmed/training/synthetic/spdx_identifier.py | 0 | serialize with deterministic key order and no insignificant space. | STRING |
| HIGH | openmed/multimodal/frame_sampling_manifest.py | 0 | serialize with deterministic key order and no insignificant space. | STRING |
| HIGH | openmed/multimodal/audio_format_summary.py | 0 | serialize with deterministic key order and no insignificant space. | STRING |
| HIGH | openmed/multimodal/processing_summary.py | 0 | serialize with deterministic key order and no insignificant space. | STRING |
| HIGH | openmed/multimodal/audio_resample_plan.py | 0 | serialize with deterministic key order and no insignificant space. | STRING |
| HIGH | openmed/multimodal/abstention.py | 0 | serialize with deterministic key order and no insignificant space. | STRING |
| HIGH | openmed/multimodal/preflight.py | 0 | serialize with deterministic key order and no insignificant space. | STRING |
| HIGH | openmed/multimodal/image_geometry.py | 0 | serialize with deterministic key order and no insignificant space. | STRING |
| HIGH | openmed/interop/elasticsearch.py | 0 | internal marker for a rejected untrusted input boundary. | STRING |
| HIGH | openmed/interop/opensearch.py | 0 | internal marker for a rejected untrusted input boundary. | STRING |
| HIGH | openmed/interop/beam.py | 0 | internal marker for a rejected untrusted input boundary. | STRING |
| HIGH | openmed/interop/llamaindex.py | 0 | runtime options forwarded to openmed's de-identification engine. | STRING |
| HIGH | openmed/interop/langchain.py | 0 | runtime options forwarded to openmed's de-identification engine. | STRING |
| HIGH | openmed/interop/duckdb_udf.py | 0 | runtime options forwarded to openmed's de-identification engine. | STRING |
| HIGH | openmed/interop/llamaindex.py | 0 | return keyword arguments for ``openmed.core.pii.deidentify``. | STRING |
| HIGH | openmed/interop/langchain.py | 0 | return keyword arguments for ``openmed.core.pii.deidentify``. | STRING |
| HIGH | openmed/interop/duckdb_udf.py | 0 | return keyword arguments for ``openmed.core.pii.deidentify``. | STRING |
| HIGH | openmed/interop/bridges/pipeline_migration.py | 0 | return a deterministic json-compatible representation. | STRING |
| HIGH | openmed/structured/store/protocols.py | 0 | return a deterministic json-compatible representation. | STRING |
| HIGH | openmed/clinical/abbreviation.py | 0 | return a deterministic json-compatible representation. | STRING |
| HIGH | openmed/clinical/grounding/valueset.py | 0 | return a deterministic json-compatible representation. | STRING |
| HIGH | openmed/eval/reviewer_disagreement.py | 0 | return a deterministic json-compatible representation. | STRING |
| HIGH | openmed/eval/annotation/interchange.py | 0 | return a deterministic json-compatible representation. | STRING |
| HIGH | openmed/agent/capability_validity.py | 0 | raised when envelope metadata fails closed validation. args: code: stable machine-readable validation code. field_name: | STRING |
| HIGH | openmed/agent/event_sequence.py | 0 | raised when envelope metadata fails closed validation. args: code: stable machine-readable validation code. field_name: | STRING |
| HIGH | openmed/agent/action_graph.py | 0 | raised when envelope metadata fails closed validation. args: code: stable machine-readable validation code. field_name: | STRING |
| HIGH | openmed/agent/errors.py | 0 | raised when envelope metadata fails closed validation. args: code: stable machine-readable validation code. field_name: | STRING |
| HIGH | openmed/agent/capability_validity.py | 0 | return a deterministic dictionary in declared field order. | STRING |
| HIGH | openmed/agent/event_sequence.py | 0 | return a deterministic dictionary in declared field order. | STRING |
| HIGH | openmed/agent/action_graph.py | 0 | return a deterministic dictionary in declared field order. | STRING |
| HIGH | openmed/agent/errors.py | 0 | return a deterministic dictionary in declared field order. | STRING |
| HIGH | openmed/multimodal/asr_audio_profile.py | 0 | return a deterministic dictionary in declared field order. | STRING |
| HIGH | openmed/multimodal/audio_windows.py | 0 | return a deterministic dictionary in declared field order. | STRING |
| HIGH | openmed/multimodal/page_windows.py | 0 | return a deterministic dictionary in declared field order. | STRING |
| HIGH | openmed/agent/capability_validity.py | 0 | return compact json with sorted keys for byte-identical payloads. | STRING |
| HIGH | openmed/agent/event_sequence.py | 0 | return compact json with sorted keys for byte-identical payloads. | STRING |
| HIGH | openmed/agent/action_graph.py | 0 | return compact json with sorted keys for byte-identical payloads. | STRING |
| HIGH | openmed/agent/event_attributes.py | 0 | return compact json with sorted keys for byte-identical payloads. | STRING |
| HIGH | openmed/agent/outcomes.py | 0 | return compact json with sorted keys for byte-identical payloads. | STRING |
| HIGH | openmed/agent/errors.py | 0 | return compact json with sorted keys for byte-identical payloads. | STRING |
| HIGH | openmed/agent/schema_compatibility.py | 0 | return compact json with sorted keys for byte-identical payloads. | STRING |
| HIGH | openmed/multimodal/asr_audio_profile.py | 0 | return compact json with sorted keys for byte-identical payloads. | STRING |
| HIGH | openmed/multimodal/audio_windows.py | 0 | return compact json with sorted keys for byte-identical payloads. | STRING |
| 48 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openmed/__init__.py | 405 | CODE | |
| LOW | openmed/aio.py | 60 | CODE | |
| LOW | openmed/aio.py | 111 | CODE | |
| LOW | openmed/aio.py | 186 | CODE | |
| LOW | openmed/traces/audit.py | 983 | CODE | |
| LOW | openmed/traces/transaction.py | 131 | CODE | |
| LOW | openmed/traces/streaming.py | 672 | CODE | |
| LOW | openmed/traces/streaming.py | 722 | CODE | |
| LOW | openmed/traces/streaming.py | 778 | CODE | |
| LOW | openmed/traces/streaming.py | 376 | CODE | |
| LOW | openmed/traces/schemas/preference.py | 437 | CODE | |
| LOW | openmed/core/document_stream.py | 367 | CODE | |
| LOW | openmed/core/export_naming.py | 433 | CODE | |
| LOW | openmed/core/config_provenance.py | 201 | CODE | |
| LOW | openmed/core/manifest.py | 136 | CODE | |
| LOW | openmed/core/hf_hub.py | 159 | CODE | |
| LOW | openmed/core/arbitration.py | 222 | CODE | |
| LOW | openmed/core/pipeline.py | 257 | CODE | |
| LOW | openmed/core/pipeline.py | 389 | CODE | |
| LOW | openmed/core/model_search.py | 53 | CODE | |
| LOW | openmed/core/hf_publish.py | 226 | CODE | |
| LOW | openmed/core/registry_compatibility.py | 369 | CODE | |
| LOW | openmed/core/streaming.py | 56 | CODE | |
| LOW | openmed/core/no_phi_telemetry.py | 429 | CODE | |
| LOW | openmed/core/pii.py | 1115 | CODE | |
| LOW | openmed/core/pii.py | 1332 | CODE | |
| LOW | openmed/core/pii.py | 2082 | CODE | |
| LOW | openmed/core/pii.py | 2397 | CODE | |
| LOW | openmed/core/pii.py | 2565 | CODE | |
| LOW | openmed/core/cascade.py | 54 | CODE | |
| LOW | openmed/core/anonymizer/engine.py | 111 | CODE | |
| LOW | openmed/ner/infer.py | 124 | CODE | |
| LOW | openmed/onnx/maple_bundle.py | 75 | CODE | |
| LOW | openmed/onnx/maple_bundle.py | 135 | CODE | |
| LOW | openmed/onnx/convert.py | 338 | CODE | |
| LOW | openmed/onnx/convert.py | 827 | CODE | |
| LOW | openmed/onnx/tensorrt_export.py | 306 | CODE | |
| LOW | openmed/onnx/gguf_int4_export.py | 273 | CODE | |
| LOW | openmed/onnx/transformersjs.py | 74 | CODE | |
| LOW | openmed/processing/object_storage.py | 92 | CODE | |
| LOW | openmed/processing/resume.py | 298 | CODE | |
| LOW | openmed/processing/batch.py | 1746 | CODE | |
| LOW | openmed/processing/batch.py | 812 | CODE | |
| LOW | openmed/processing/batch.py | 981 | CODE | |
| LOW | openmed/processing/batch.py | 1025 | CODE | |
| LOW | openmed/processing/batch.py | 1093 | CODE | |
| LOW | openmed/processing/batch.py | 1307 | CODE | |
| LOW | openmed/processing/kafka_connector.py | 92 | CODE | |
| LOW | openmed/training/repro_verify.py | 62 | CODE | |
| LOW | openmed/training/distill.py | 356 | CODE | |
| LOW | openmed/training/distill.py | 609 | CODE | |
| LOW | openmed/training/synthetic/translation_augment.py | 190 | CODE | |
| LOW | openmed/interop/elasticsearch.py | 131 | CODE | |
| LOW | openmed/interop/elasticsearch.py | 359 | CODE | |
| LOW | openmed/interop/hl7v2.py | 537 | CODE | |
| LOW | openmed/interop/airflow.py | 134 | CODE | |
| LOW | openmed/interop/airflow.py | 556 | CODE | |
| LOW | openmed/interop/graph_orchestration.py | 40 | CODE | |
| LOW | openmed/interop/tools.py | 496 | CODE | |
| LOW | openmed/interop/tools.py | 553 | CODE | |
| 171 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | openmed/interop/elasticsearch.py | 432 | Missing, null, and empty selected fields are counted as skipped. A | STRING |
| HIGH | openmed/interop/llamaindex.py | 419 | "null, mappings, lists, or tuples when redact_metadata=True" | CODE |
| HIGH | openmed/integrations/dataflow_tool_processor.py | 115 | detected-entity counts. Missing, null, empty, and non-string configured | STRING |
| HIGH | openmed/structured/synth.py | 355 | "DP synthesis supports only null, boolean, finite numeric, and string cells" | CODE |
| HIGH | openmed/structured/table_io.py | 289 | "CSV/TSV release output supports scalar values only: null, boolean, " | CODE |
| HIGH | openmed/eval/leaderboard.py | 319 | " const matches = !query || normalize(row.dataset.search).includes(query);\n" | CODE |
| HIGH | openmed/eval/leaderboard.py | 335 | " if (query && matchCount > 0 && selected) {\n" | CODE |
| HIGH | openmed/eval/quant_delta.py | 412 | """Return KL(reference || candidate) over fixed-seed token frequencies.""" | STRING |
| HIGH | openmed/eval/provenance_ledger.py | 713 | f"{path} must be numeric, boolean, null, nested metadata, or a sha256 digest" | CODE |
| HIGH | openmed/service/journey_workflows.py | 595 | after?: string | null; | CODE |
| HIGH | openmed/service/journey_workflows.py | 603 | code: string | null; | CODE |
| HIGH | openmed/service/journey_workflows.py | 618 | end_cursor: string | null; | CODE |
| HIGH | openmed/service/journey_workflows.py | 633 | code: string | null; | CODE |
| HIGH | openmed/risk/release.py | 2125 | "Missing, null, and empty quasi-identifier states are treated as " | CODE |
| HIGH | tests/unit/test_publish_workflow_version.py | 252 | "group": "publish-openmed-${{ inputs.tag || github.ref_name }}", | CODE |
| HIGH | tests/unit/test_publish_workflow_version.py | 307 | assert npm_verify["steps"][0]["with"]["ref"] == ("${{ inputs.tag || github.ref }}") | CODE |
| HIGH | tests/unit/test_publish_workflow_version.py | 337 | assert npm_publish["steps"][0]["with"]["ref"] == ("${{ inputs.tag || github.ref }}") | CODE |
| HIGH | tests/unit/traces/schemas/test_columnar.py | 128 | assert first.equals(second) | CODE |
| HIGH | tests/unit/traces/schemas/test_columnar.py | 207 | assert adapted.schema.equals(batch.schema, check_metadata=True) | CODE |
| HIGH | tests/unit/release/test_provenance_workflow.py | 93 | assert provenance["with"]["release-tag"] == ("${{ inputs.tag || github.ref_name }}") | CODE |
| HIGH | tests/unit/cli/test_quality_profile_cli.py | 42 | '{"required_fields":["condition"],"condition":null}\n', | CODE |
| HIGH⚡ | tests/unit/multimodal/test_asset_limits.py | 343 | '{"field_name": "pixels", "reason_code": "insufficient_metadata", "limit": 10000000, "observed": null}, ' | CODE |
| HIGH⚡ | tests/unit/multimodal/test_asset_limits.py | 344 | '{"field_name": "total_pixels", "reason_code": "insufficient_metadata", "limit": 25000000, "observed": null}]' | CODE |
| HIGH⚡ | tests/unit/multimodal/test_preflight.py | 133 | '{"schema_version":1,"status":"accept","abstention":null,' | CODE |
| HIGH⚡ | tests/unit/multimodal/test_preflight.py | 143 | '{"schema_version":1,"status":"accept","abstention":null,' | CODE |
| HIGH⚡ | tests/unit/multimodal/test_preflight.py | 186 | '{"check":"limits","reason_code":"insufficient_metadata","field_name":"pixels","limit":40000000,"observed":null} | CODE |
| HIGH⚡ | tests/unit/multimodal/test_preflight.py | 187 | '{"check":"limits","reason_code":"insufficient_metadata","field_name":"total_pixels","limit":100000000,"observed | CODE |
| HIGH⚡ | tests/unit/multimodal/test_preflight.py | 231 | '"manifest":null,"modality":null,"metadata_profile":null,' | CODE |
| HIGH⚡ | tests/unit/multimodal/test_preflight.py | 233 | '"media_type":null,"digest":null,"findings":[' | CODE |
| HIGH⚡ | tests/unit/multimodal/test_preflight.py | 234 | '{"check":"manifest","reason_code":"malformed_manifest","field_name":null,"limit":null,"observed":null}' | CODE |
| HIGH | tests/unit/multimodal/test_preflight.py | 117 | '{"schema_version":1,"status":"accept","abstention":null,' | CODE |
| HIGH | tests/unit/service/test_jobs_api.py | 71 | ('{"jobs": {"synthetic": null}}', "invalid job record"), | CODE |
| HIGH | skills/build_catalog.py | 194 | "git clone https://github.com/maziyarpanahi/openmed && cd openmed\n" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/traces/test_audit.py | 180 | CODE | |
| MEDIUM | tests/unit/traces/test_audit.py | 239 | CODE | |
| MEDIUM | tests/unit/traces/test_fidelity.py | 283 | CODE | |
| MEDIUM | tests/unit/interop/test_spark.py | 295 | CODE | |
| MEDIUM | tests/unit/interop/fhir/test_smart_custody.py | 146 | CODE | |
| MEDIUM | tests/unit/interop/fhir/test_smart_refresh.py | 585 | CODE | |
| MEDIUM | tests/unit/multimodal/test_dicom_sr_provenance.py | 311 | CODE | |
| MEDIUM | tests/unit/multimodal/test_page_rotation.py | 215 | CODE | |
| MEDIUM | tests/unit/multimodal/test_layout_columns.py | 338 | CODE | |
| MEDIUM | tests/unit/structured/test_schema_extract.py | 385 | CODE | |
| MEDIUM | tests/unit/clinical/test_summary_empty_evidence.py | 86 | CODE | |
| MEDIUM | tests/unit/clinical/test_citation_boundaries.py | 74 | CODE | |
| MEDIUM | tests/unit/clinical/test_summary_length_budget.py | 235 | CODE | |
| MEDIUM | tests/unit/clinical/test_citation_minimality.py | 98 | CODE | |
| MEDIUM | tests/unit/clinical/test_unit_display_audit.py | 231 | CODE | |
| MEDIUM | tests/unit/clinical/test_nli_premise_window.py | 182 | CODE | |
| MEDIUM | tests/unit/clinical/test_citation_ordering.py | 270 | CODE | |
| MEDIUM | tests/unit/clinical/test_summary_output_normalizer.py | 157 | CODE | |
| MEDIUM | tests/unit/clinical/test_claim_conflicts.py | 33 | CODE | |
| MEDIUM | tests/unit/clinical/test_lab_measurements.py | 272 | CODE | |
| MEDIUM | tests/unit/clinical/test_language_health.py | 271 | CODE | |
| MEDIUM | tests/unit/clinical/test_family_history_relations.py | 186 | CODE | |
| MEDIUM | tests/unit/eval/test_relation_audit.py | 268 | CODE | |
| MEDIUM | tests/unit/eval/test_summary_unsupported_claims.py | 65 | CODE | |
| MEDIUM | tests/unit/eval/test_citation_support_metrics.py | 77 | CODE | |
| MEDIUM | tests/unit/eval/test_citation_support_metrics.py | 151 | CODE | |
| MEDIUM | tests/unit/guard/test_dataset.py | 200 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | CHANGELOG.md | 2503 | - [#1885](https://github.com/maziyarpanahi/openmed/pull/1885) feat: add procedures zero-shot domain and DEVICE canonical | CODE |
| MEDIUM | CHANGELOG.md | 2554 | - [#1866](https://github.com/maziyarpanahi/openmed/pull/1866) docs: one-command multi-agent install and quickstart for t | CODE |
| MEDIUM | CHANGELOG.md | 2559 | - `7d592dd86b3f` Merge pull request #1866 from maziyarpanahi/feature/skills-multi-agent-readme | CODE |
| MEDIUM | openmed/core/review_workflow.py | 384 | # Collect every span up front so a context window can mask *other* nearby | COMMENT |
| MEDIUM | openmed/core/pii_entity_merger.py | 622 | # Extract context window | COMMENT |
| MEDIUM | openmed/mcp/server.py | 580 | # length/size/encoding guardrails as the library and REST entry points. | COMMENT |
| MEDIUM⚡ | openmed/cli/typer_app.py | 352 | # zero-shot (GLiNER/GLiNER2) | COMMENT |
| MEDIUM | openmed/clinical/relations_lite.py | 92 | # keep the scaffold compatible with those model outputs without broadening | COMMENT |
| MEDIUM | openmed/clinical/validation/protocol.py | 27 | #: validation scaffold measures de-identification quality against user-supplied | COMMENT |
| MEDIUM | openmed/clinical/validation/protocol.py | 77 | #: Default acceptance thresholds. These are conservative scaffold defaults; a | COMMENT |
| MEDIUM | openmed/service/schemas.py | 74 | # guardrails. Errors never echo the (possibly PHI) text. | COMMENT |
| MEDIUM | tests/run-tests.sh | 13 | # Core test suite without slow markers (collect coverage for zero-shot modules) | COMMENT |
| MEDIUM | tests/unit/ner/__init__.py | 1 | # Unit tests for the zero-shot NER toolkit. | COMMENT |
| MEDIUM⚡ | tests/unit/cli/test_false_negative_explorer_cli.py | 165 | # Span text and a surrounding-context window are surfaced from the fixture. | COMMENT |
| MEDIUM | docs/cli/openmed-init.md | 1 | # Project scaffolding with `openmed init` | COMMENT |
| MEDIUM | skills/building-gold-corpus/SKILL.md | 54 | ## Quick start — scaffold the project | COMMENT |
| MEDIUM | skills/running-zeroshot-ner/SKILL.md | 56 | # 2) Run zero-shot NER with your OWN labels (comma-separated) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | gates/target_leakage.yaml | 3 | # Signed floors keyed by (family, tier, format). The ReleaseGate harness | COMMENT |
| MEDIUM | openmed/eval/determinism.py | 55 | # Public API entrypoints exercised by the harness. | COMMENT |
| MEDIUM | openmed/eval/__init__.py | 1266 | # Determinism regression harness (OM-822). | COMMENT |
| MEDIUM | openmed/eval/suites/multimodal_dicom.py | 72 | #: Device tier reported for pixel-space (image) PHI in the harness slices. | COMMENT |
| LOW⚡ | tests/unit/core/test_anonymizer.py | 202 | # If the original isn't an email, just return the fake. | COMMENT |
| MEDIUM | …ts/unit/processing/test_zh_segmentation_conformance.py | 380 | # --- Layer A: the harness accepts a conforming backend --------------------- | COMMENT |
| MEDIUM | tests/unit/processing/test_zh_segmentation_docs.py | 951 | # The superseded claim that these crash the harness must be gone. | COMMENT |
| MEDIUM⚡ | tests/unit/eval/test_multimodal_dicom_suite.py | 270 | # Report renders to the harness's Markdown/JSON surfaces. | COMMENT |
| MEDIUM | tests/unit/eval/test_determinism_harness.py | 38 | # Keep the reference corpus well under the 60s CI budget: the harness is the | COMMENT |
| MEDIUM | tests/unit/service/test_redaction_app.py | 99 | # AnyIO starts TestClient's event loop. That is test-harness plumbing, | COMMENT |
| MEDIUM | tests/unit/service/test_ground_route.py | 189 | # Intercept only the request, after the test harness is initialized. | COMMENT |
| MEDIUM | tests/fuzz/fuzz_deidentify.py | 252 | if __name__ == "__main__": # pragma: no cover - exercised as a local harness. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install-skills.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | CHANGELOG.md | 1621 | of UTF-8 BOM-prefixed CSV and TSV schemas so the first column is classified | COMMENT |
| LOW | openmed/core/name_order.py | 41 | COMMENT | |
| LOW | openmed/core/pii_i18n.py | 101 | # :func:`openmed.core.model_registry.get_default_pii_model` maps this sentinel | COMMENT |
| LOW | openmed/core/pii.py | 321 | return pd.DataFrame.from_records(records, columns=columns) | COMMENT |
| LOW | openmed/core/anonymizer/providers/clinical_ids.py | 3641 | # --------------------------------------------------------------------------- | COMMENT |
| LOW | openmed/core/anonymizer/providers/clinical_ids.py | 3841 | COMMENT | |
| LOW | openmed/core/data/clinical_protect_terms.txt | 1 | # OpenMed clinical protection terms v2 | COMMENT |
| LOW | openmed/structured/hierarchies/functions.py | 481 | # --------------------------------------------------------------------------- # | COMMENT |
| LOW | openmed/clinical/experiencer.py | 101 | "neighbour", | COMMENT |
| LOW | openmed/clinical/context.py | 121 | # Ported ConText temporal lexicon. Cues are matched case-insensitively and on | COMMENT |
| LOW | openmed/clinical/normalization/ranker.py | 41 | #: Reciprocal-rank-fusion damping constant. The documented default follows the | COMMENT |
| LOW | openmed/clinical/lexicons/context_cues.py | 461 | token_boundaries=False, | COMMENT |
| LOW | openmed/clinical/data/context_rules.yaml | 1 | # OpenMed's starter ConText rule set. | COMMENT |
| LOW | js/openmedkit-flutter/native/openmed_ffi.h | 1 | #ifndef OPENMED_FFI_H | COMMENT |
| LOW | js/openmedkit-flutter/native/openmed_ffi.c | 1 | #include "openmed_ffi.h" | COMMENT |
| LOW | docs/profiling.md | 201 | COMMENT | |
| LOW | docs/security/pip-audit-ignore.toml | 1 | # Time-boxed pip-audit ignores. | COMMENT |
| LOW | docs/clinical/temporal-normalization.md | 21 | spans, | COMMENT |
| LOW | swift/OpenMedKit/Sources/OpenMedKit/OpenMedKit.swift | 1 | #if canImport(MLX) && canImport(Tokenizers) && !os(watchOS) && !os(visionOS) | COMMENT |
| LOW | skills/exporting-bulk-fhir/SKILL.md | 41 | # 1) Kickoff (async). Ask for clinical-note-bearing resource types. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/unit/core/test_secrets.py | 139 | 'OPENMED_API_KEY="your-api-key"; ' | CODE |
| HIGH | docs/security/secret-detection.md | 45 | Explicit placeholders such as `<TOKEN>`, `your-api-key`, `replace-me`, and | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openmed/core/models.py | 748 | # Check if it's a registry key | COMMENT |
| LOW | openmed/core/models.py | 753 | # Check if it needs org prefix | COMMENT |
| LOW | openmed/processing/advanced_ner.py | 911 | # Check if same entity type and close proximity | COMMENT |
| LOW⚡ | openmed/processing/advanced_ner.py | 967 | # Check if we have token-level data (no aggregation_strategy used) | COMMENT |
| LOW | openmed/processing/outputs.py | 355 | # Check if entities are adjacent and same label | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | openmed/processing/advanced_ner.py | 965 | # Step 1: Smart grouping if requested and we have token-level output | COMMENT |
| LOW⚡ | openmed/processing/advanced_ner.py | 987 | # Step 2: Advanced filtering | COMMENT |
| LOW⚡ | openmed/processing/advanced_ner.py | 990 | # Step 3: Merge adjacent entities if enabled | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | openmed/processing/advanced_ner.py | 965 | # Step 1: Smart grouping if requested and we have token-level output | COMMENT |
| LOW⚡ | openmed/processing/advanced_ner.py | 987 | # Step 2: Advanced filtering | COMMENT |
| LOW⚡ | openmed/processing/advanced_ner.py | 990 | # Step 3: Merge adjacent entities if enabled | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/test_profiling.py | 282 | def my_function(): | CODE |
| LOW | tests/unit/skills/test_bundle_verify.py | 451 | "utils.py": "def helper():\n pass\n", | CODE |
| LOW | tests/unit/skills/test_bundle_verify.py | 469 | "utils.py": "def helper():\n pass\n", | CODE |
| LOW | tests/unit/service/test_rest_client.py | 43 | def handle_request(self, request: httpx.Request) -> httpx.Response: | CODE |
| LOW | scripts/install/smoke_check.py | 289 | def handle_request(self, request): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/unit/test_profiles.py | 148 | # Create a custom profile | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | openmed/interop/icd11_api.py | 77 | """Raised when the WHO ICD-API cannot provide a valid response.""" | STRING |
| MEDIUM | skills/build_catalog.py | 39 | r"written by (?:claude|codex|gpt)|as an ai language model)", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install-skills.sh | 10 | # Usage: | COMMENT |