Local-first healthcare AI: clinical NER & HIPAA PII de-identification that runs 100% on-device. 2,200+ medical models, 21 languages, Apple MLX + Python, no cloud, no patient data leaving your network. Apache-2.0
This report presents the forensic synthetic code analysis of maziyarpanahi/openmed, a Python project with 5,174 GitHub stars. SynthScan v2.0 examined 971,482 lines of code across 2808 source files, recording 21324 pattern matches distributed across 23 syntactic categories. The overall adjusted score of 23.5 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 21324 distinct pattern matches across 23 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packaging/standalone_manifest.py | 483 | def _validate_entry_collection( | CODE |
| LOW | openmed/__init__.py | 272 | 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 | 524 | def canonical_label_for_column_semantic(semantic_type: str) -> str: | CODE |
| LOW | openmed/core/labels.py | 2035 | 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/config.py | 143 | 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 | 700 | def _resolve_attn_implementation( | CODE |
| LOW | openmed/core/models.py | 713 | def _apply_attention_pipeline_kwargs(self, pipeline_kwargs: Dict[str, Any]) -> None: | CODE |
| LOW | openmed/core/models.py | 809 | def _build_load_quantization_config( | CODE |
| LOW | openmed/core/models.py | 841 | def _build_pipeline_cache_key( | CODE |
| LOW | openmed/core/surrogate_vault.py | 304 | def _validated_name_matching_metadata( | 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 | 933 | def transliteration_aware_name_matching(self) -> bool: | CODE |
| LOW | openmed/core/surrogate_vault.py | 939 | def indic_name_similarity_threshold(self) -> float: | CODE |
| LOW | openmed/core/surrogate_vault.py | 1429 | def _normalized_legacy_key_for_epoch( | CODE |
| LOW | openmed/core/surrogate_vault.py | 1441 | def _exact_indian_key_for_epoch( | CODE |
| LOW | openmed/core/surrogate_vault.py | 1553 | def _indic_candidate_leaks_source( | CODE |
| LOW | openmed/core/baseline.py | 250 | def _validate_relation_golden(value: Any) -> None: | CODE |
| LOW | openmed/core/model_cache_policy.py | 246 | def _validate_nonnegative_int(value: Any, *, name: str) -> int: | CODE |
| LOW | openmed/core/model_cache_policy.py | 941 | def _is_manifest_relative_path(self, relative: str) -> bool: | CODE |
| 11403 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/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 | |
| LOW | openmed/traces/__init__.py | 29 | CODE | |
| 6012 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 | 549 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/labels.py | 551 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/labels.py | 1376 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/labels.py | 1378 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/config.py | 806 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/config.py | 808 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/review_workflow.py | 567 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/review_workflow.py | 569 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_entity_merger.py | 72 | # ============================================================================ | COMMENT |
| MEDIUM | openmed/core/pii_entity_merger.py | 74 | # ============================================================================ | COMMENT |
| MEDIUM | openmed/core/pii_entity_merger.py | 540 | # ============================================================================ | COMMENT |
| MEDIUM | openmed/core/pii_entity_merger.py | 542 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | openmed/core/pii_i18n.py | 487 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | openmed/core/pii_i18n.py | 489 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | openmed/core/pii_i18n.py | 4399 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | openmed/core/pii_i18n.py | 4401 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | openmed/core/pii_i18n.py | 11589 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | openmed/core/pii_i18n.py | 11591 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 61 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 63 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 204 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 206 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 407 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 409 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 786 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 788 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 3054 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 3056 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 3641 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 3643 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 3790 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 3792 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 4345 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 4347 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 4500 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 4502 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 7489 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 7491 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 7692 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 7694 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 7717 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 7719 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 7781 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 7783 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 7843 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 7845 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 7907 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 7909 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 7971 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 7973 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 8044 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 8046 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 8108 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 8110 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9378 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9380 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9708 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | openmed/core/pii_i18n.py | 9710 | # --------------------------------------------------------------------------- | COMMENT |
| 763 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 | 560 | Create config from a named profile. Args: profile_name: Name of a built-in or custom profile. | STRING |
| HIGH | openmed/core/config.py | 830 | Get the settings for a specific profile. Args: profile_name: Name of the profile. Returns: Dic | STRING |
| HIGH | openmed/core/config.py | 880 | Delete a custom profile. Args: profile_name: Name of the profile to delete. Returns: True if d | STRING |
| HIGH | openmed/core/models.py | 175 | Load a TokenClassification model and tokenizer. Args: model_name: Name of the model to load. Can be | 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 | 686 | 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 | 1669 | Decode untrusted multilingual bytes using an explicit codec allow-list. Codec names are normalized through a static | STRING |
| HIGH | openmed/core/capabilities.py | 321 | Return an importless :class:`BackendStatus` for a single backend. Args: name: A registered capability key ( | STRING |
| HIGH | openmed/core/language_pack.py | 223 | Register and return a language pack. Args: pack: Fully validated language-pack declaration. | STRING |
| HIGH | openmed/core/language_pack.py | 275 | 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 | 1682 | 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 | 5015 | 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 | 11622 | 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 | 369 | Remove bidi isolate/embedding/override controls and directional marks. For source text without pre-existing bidi co | STRING |
| HIGH | openmed/core/pii.py | 1396 | Extract PII entities from text with intelligent entity merging. Uses token classification models to detect personal | STRING |
| HIGH | openmed/core/pii.py | 2635 | De-identify text by detecting and redacting PII with intelligent merging. Implements multiple de-identification str | STRING |
| HIGH | openmed/core/pii.py | 3656 | 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 | 159 | 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 | 312 | Apply a dedicated Aadhaar anonymization strategy. Args: original: A checksum-valid Aadhaar value. | STRING |
| HIGH | openmed/ner/indexing.py | 99 | 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/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 |
| HIGH | openmed/training/directid_quantization.py | 144 | Export and evaluate DirectID Tiny runtime artifacts locally. Args: candidate: Path-free candidate mapping e | STRING |
| HIGH | openmed/training/recipe.py | 695 | Return the immutable label, head, runtime, recipe, and tier contract. Args: family: Canonical clinical fami | STRING |
| HIGH | openmed/training/recipe.py | 714 | Hash the base recipe together with a family's label/head contract. Args: family: Canonical clinical family | STRING |
| HIGH | openmed/training/recipe.py | 758 | Build release artifacts only from a completed, signed external run. This function never trains a model, reads corpu | STRING |
| HIGH | openmed/training/directid_distill.py | 224 | Execute a local DirectID Mode-A backend and emit hash-only evidence. Args: dataset_evidence: Aggregate evid | STRING |
| 187 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | README.hi.md | 451 | [('NAME', 'John Doe'), ('DATE', '01/15/1970'), ('SSN', '123-45-6789')] | CODE |
| LOW | CHANGELOG.md | 2275 | - **`method="replace"` outputs no longer come from the prior hardcoded list** (`["Jane Smith", "John Doe", "Alex Johnson | CODE |
| LOW | CHANGELOG.md | 2524 | - Expanded locale fake-data dictionaries with `FIRST_NAME`, `LAST_NAME`, and `ZIPCODE` values across supported languag | CODE |
| LOW | README.md | 458 | [('NAME', 'John Doe'), ('DATE', '01/15/1970'), ('SSN', '123-45-6789')] | CODE |
| LOW | README.zh-CN.md | 451 | [('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 | 10611 | "NAME": ["Jane Smith", "John Doe", "Alex Johnson", "Sam Taylor"], | CODE |
| LOW⚡ | openmed/core/pii_i18n.py | 10614 | "EMAIL": ["patient@example.com", "contact@example.org"], | CODE |
| LOW⚡ | openmed/core/pii_i18n.py | 10615 | "PHONE": ["555-0123", "555-0456", "555-0789"], | CODE |
| LOW⚡ | openmed/core/pii_i18n.py | 10617 | "STREET_ADDRESS": ["123 Main St", "456 Oak Ave"], | CODE |
| LOW | openmed/core/pii_i18n.py | 10599 | "EMAIL": ["pasiënt@example.co.za", "kontak@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 10739 | "EMAIL": ["patient@example.in", "sampark@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 10776 | "EMAIL": ["patient@example.in", "sampark@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 10803 | "EMAIL": ["takami@example.et", "contact@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 10833 | "EMAIL": ["patient@example.eg", "contact@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 10870 | "EMAIL": ["patient@example.pk", "contact@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 10909 | "EMAIL": ["patient@example.co.il", "contact@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 10946 | "EMAIL": ["patient@example.jp", "renraku@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11023 | "EMAIL": ["pasyente@example.ph", "kontak@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11071 | "EMAIL": ["isiguli@example.co.za", "xhumana@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11091 | "EMAIL": ["isigulane@example.co.za", "qhagamshelana@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11106 | "EMAIL": ["patient@example.se", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11121 | "EMAIL": ["patient@example.dk", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11136 | "EMAIL": ["pasient@example.no", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11156 | "EMAIL": ["benhnhan@example.vn", "lienhe@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11179 | "EMAIL": ["patient@example.th", "contact@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11197 | "EMAIL": ["pacients@example.lv", "kontakts@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11217 | "EMAIL": ["pacient@example.sk", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11283 | "EMAIL": ["pacient@example.ru", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11298 | "EMAIL": ["potilas@example.fi", "yhteys@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11313 | "EMAIL": ["patsient@example.bg", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11328 | "EMAIL": ["pacijent@example.hr", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11343 | "EMAIL": ["pacijent@example.rs", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11358 | "EMAIL": ["beteg@example.hu", "kapcsolat@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11373 | "EMAIL": ["patsient@example.ee", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11388 | "EMAIL": ["patsiient@example.ua", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11403 | "EMAIL": ["pacient@example.cz", "kontakt@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11423 | "EMAIL": ["asthenis@example.gr", "epikoinonia@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11443 | "EMAIL": ["majiyyaci@example.ng", "tuntuɓa@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11463 | "EMAIL": ["onyeoria@example.ng", "uloogwu@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11483 | "EMAIL": ["alaisan@example.ng", "iwosan@example.org"], | CODE |
| LOW | openmed/core/pii_i18n.py | 11498 | "EMAIL": ["patient@example.cn", "contact@example.org"], | CODE |
| LOW | openmed/core/pii.py | 3125 | # Canonical labels that don't have a fake-data key fall through to the | COMMENT |
| LOW⚡ | openmed/core/pii.py | 3179 | fake_data = LANGUAGE_FAKE_DATA.get(lang, LANGUAGE_FAKE_DATA["en"]) | CODE |
| LOW⚡ | openmed/core/pii.py | 3182 | if key in fake_data: | CODE |
| LOW⚡ | openmed/core/pii.py | 3183 | 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 | 106 | def preserve_email_pattern(original: str, fake_email: str) -> str: | CODE |
| LOW⚡ | openmed/core/anonymizer/format_preserve.py | 107 | """Use ``fake_email``'s local part with ``original``'s domain. | STRING |
| LOW⚡ | openmed/core/anonymizer/format_preserve.py | 111 | the local part. Falls back to ``fake_email`` verbatim if either side | STRING |
| LOW⚡ | openmed/core/anonymizer/format_preserve.py | 114 | if "@" not in original or "@" not in fake_email: | CODE |
| LOW⚡ | openmed/core/anonymizer/format_preserve.py | 115 | return fake_email | CODE |
| LOW⚡ | openmed/core/anonymizer/format_preserve.py | 116 | fake_local = fake_email.split("@", 1)[0] | CODE |
| LOW | openmed/core/anonymizer/engine.py | 73 | 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 |
| LOW | openmed/eval/determinism.py | 257 | "casey.example@example.org", | CODE |
| LOW | openmed/mlx/inference.py | 195 | "word": "John Doe", "start": 8, "end": 16}, ...] | STRING |
| 607 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packaging/standalone_manifest.py | 892 | __all__ = [ | CODE |
| LOW | openmed/__init__.py | 260 | logger = logging.getLogger(__name__) | CODE |
| LOW | openmed/__init__.py | 853 | __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 | 271 | __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 | 2100 | __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/config.py | 688 | 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_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 | 960 | __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 | 675 | __all__ = [ | CODE |
| LOW | openmed/core/language_pack_coherence.py | 326 | __all__ = [ | CODE |
| LOW | openmed/core/arbitration.py | 491 | __all__ = [ | CODE |
| LOW | openmed/core/policy.py | 961 | __all__ = [ | CODE |
| LOW | openmed/core/__init__.py | 161 | __all__ = [ | CODE |
| LOW⚡ | openmed/core/telemetry.py | 232 | def _set_attributes(self, attributes: Mapping[str, Any]) -> None: | CODE |
| LOW⚡ | openmed/core/telemetry.py | 238 | def set_span_count(self, count: int) -> None: | CODE |
| LOW⚡ | openmed/core/telemetry.py | 243 | def set_entity_count(self, count: int) -> None: | CODE |
| LOW⚡ | openmed/core/telemetry.py | 248 | def set_labels(self, labels: Sequence[str]) -> None: | CODE |
| LOW⚡ | openmed/core/telemetry.py | 252 | def set_input_length(self, length: int) -> None: | CODE |
| LOW⚡ | openmed/core/telemetry.py | 262 | def set_redacted_length(self, length: int) -> None: | CODE |
| 666 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openmed/__init__.py | 565 | except Exception: | CODE |
| LOW | openmed/__init__.py | 570 | except Exception: | CODE |
| LOW | openmed/__init__.py | 802 | 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 |
| 498 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openmed/__init__.py | 272 | CODE | |
| LOW | openmed/__init__.py | 399 | CODE | |
| LOW | openmed/__init__.py | 711 | 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/result_cache.py | 60 | CODE | |
| LOW | openmed/core/document_stream.py | 433 | CODE | |
| LOW | openmed/core/config.py | 559 | 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 | 571 | CODE | |
| LOW | openmed/core/model_integrity.py | 327 | CODE | |
| LOW | openmed/core/text_normalize.py | 155 | CODE | |
| LOW | openmed/core/pii_entity_merger.py | 602 | CODE | |
| LOW | openmed/core/pii_entity_merger.py | 716 | CODE | |
| LOW | openmed/core/pii_entity_merger.py | 780 | CODE | |
| LOW | openmed/core/custom_recognizer.py | 819 | CODE | |
| LOW | openmed/core/script_detect.py | 797 | CODE | |
| LOW | openmed/core/script_detect.py | 857 | CODE | |
| LOW | openmed/core/registry_service.py | 98 | CODE | |
| LOW | openmed/core/registry_service.py | 471 | CODE | |
| LOW | openmed/core/registry_service.py | 513 | CODE | |
| LOW | openmed/core/policy_lint.py | 252 | CODE | |
| LOW | openmed/core/attestation.py | 491 | CODE | |
| LOW | openmed/core/hf_publish.py | 167 | CODE | |
| LOW | openmed/core/africa_context.py | 139 | CODE | |
| LOW | openmed/core/indic_name_match.py | 331 | CODE | |
| LOW | openmed/core/indic_name_match.py | 423 | CODE | |
| LOW | openmed/core/indic_name_match.py | 563 | CODE | |
| LOW | openmed/core/pii_i18n.py | 2298 | CODE | |
| LOW | openmed/core/pii_i18n.py | 2806 | CODE | |
| LOW | openmed/core/manifest_schema.py | 228 | CODE | |
| LOW | openmed/core/manifest_schema.py | 550 | CODE | |
| LOW | openmed/core/manifest_schema.py | 925 | CODE | |
| LOW | openmed/core/pii.py | 479 | CODE | |
| LOW | openmed/core/pii.py | 2431 | CODE | |
| LOW | openmed/core/pii.py | 2890 | CODE | |
| 420 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/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/clinical/grounding/loaders/rxnorm_loader.py | 0 | alias for :meth:`resolve`, matching the shared matcher vocabulary. | STRING |
| HIGH | openmed/clinical/grounding/loaders/loinc_loader.py | 0 | alias for :meth:`resolve`, matching the shared matcher vocabulary. | STRING |
| HIGH | openmed/clinical/grounding/loaders/icd10cm_loader.py | 0 | alias for :meth:`resolve`, matching the shared matcher vocabulary. | STRING |
| HIGH | openmed/clinical/grounding/loaders/rxnorm_loader.py | 0 | return the best match for ``query`` or ``none`` when unresolved. | STRING |
| HIGH | openmed/clinical/grounding/loaders/loinc_loader.py | 0 | return the best match for ``query`` or ``none`` when unresolved. | STRING |
| HIGH | openmed/clinical/grounding/loaders/icd10cm_loader.py | 0 | return the best match for ``query`` or ``none`` when unresolved. | STRING |
| HIGH | openmed/eval/utility.py | 0 | return a json-serializable report dictionary with stable keys. | STRING |
| HIGH | openmed/eval/error_analysis.py | 0 | return a json-serializable report dictionary with stable keys. | STRING |
| HIGH | openmed/eval/report.py | 0 | return a json-serializable report dictionary with stable keys. | STRING |
| HIGH | openmed/eval/datasets/pharmaconer.py | 0 | load deft records from an explicit local path. openmed does not bundle deft corpus text. pass a local path to data you a | STRING |
| HIGH | openmed/eval/datasets/cantemist.py | 0 | load deft records from an explicit local path. openmed does not bundle deft corpus text. pass a local path to data you a | STRING |
| HIGH | openmed/eval/datasets/deft.py | 0 | load deft records from an explicit local path. openmed does not bundle deft corpus text. pass a local path to data you a | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openmed/__init__.py | 399 | 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 | 256 | CODE | |
| LOW | openmed/core/pipeline.py | 388 | CODE | |
| LOW | openmed/core/model_search.py | 53 | CODE | |
| LOW | openmed/core/hf_publish.py | 226 | CODE | |
| LOW | openmed/core/streaming.py | 56 | CODE | |
| LOW | openmed/core/pii.py | 1155 | CODE | |
| LOW | openmed/core/pii.py | 1372 | CODE | |
| LOW | openmed/core/pii.py | 2122 | CODE | |
| LOW | openmed/core/pii.py | 2431 | CODE | |
| LOW | openmed/core/pii.py | 2599 | CODE | |
| LOW | openmed/core/cascade.py | 54 | CODE | |
| LOW | openmed/core/anonymizer/engine.py | 109 | CODE | |
| LOW | openmed/ner/infer.py | 118 | 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/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/airflow.py | 134 | CODE | |
| LOW | openmed/interop/airflow.py | 556 | CODE | |
| LOW | openmed/interop/graph_orchestration.py | 40 | CODE | |
| LOW | openmed/interop/tools.py | 494 | CODE | |
| LOW | openmed/interop/tools.py | 551 | CODE | |
| LOW | openmed/interop/postgres.py | 315 | CODE | |
| LOW | openmed/interop/postgres.py | 149 | CODE | |
| LOW | openmed/interop/spark.py | 124 | CODE | |
| LOW | openmed/interop/beam.py | 947 | CODE | |
| 107 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/risk/release.py | 2125 | "Missing, null, and empty quasi-identifier states are treated as " | CODE |
| HIGH | tests/unit/test_publish_workflow_version.py | 143 | "group": "publish-openmed-${{ inputs.tag || github.ref_name }}", | CODE |
| HIGH | tests/unit/test_publish_workflow_version.py | 198 | assert npm_verify["steps"][0]["with"]["ref"] == ("${{ inputs.tag || github.ref }}") | CODE |
| HIGH | tests/unit/test_publish_workflow_version.py | 228 | 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 | skills/build_catalog.py | 194 | "git clone https://github.com/maziyarpanahi/openmed && cd openmed\n" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | CHANGELOG.md | 1493 | - [#1885](https://github.com/maziyarpanahi/openmed/pull/1885) feat: add procedures zero-shot domain and DEVICE canonical | CODE |
| MEDIUM | CHANGELOG.md | 1544 | - [#1866](https://github.com/maziyarpanahi/openmed/pull/1866) docs: one-command multi-agent install and quickstart for t | CODE |
| MEDIUM | CHANGELOG.md | 1549 | - `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 | 580 | # Extract context window | COMMENT |
| MEDIUM | openmed/mcp/server.py | 517 | # length/size/encoding guardrails as the library and REST entry points. | COMMENT |
| MEDIUM⚡ | openmed/cli/typer_app.py | 349 | # 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 | 51 | # 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 | 927 | # 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/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 | 621 | #1919, #1920, #1921, #1922, #1923, #1924, #1925, #1926, #1928, #1929, | COMMENT |
| LOW | openmed/core/name_order.py | 41 | COMMENT | |
| LOW | openmed/core/anonymizer/providers/clinical_ids.py | 3341 | digit *= 2 | COMMENT |
| LOW | openmed/core/data/clinical_protect_terms.txt | 1 | # OpenMed clinical protection terms v1 | 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 | ) | 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 | …OpenMedKit/Tests/OpenMedKitTests/OpenMedMLXTests.swift | 321 | // Nemotron-PII fine-tunes set ``classifier_bias: true`` so the | 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 | 670 | # Check if it's a registry key | COMMENT |
| LOW | openmed/core/models.py | 675 | # Check if it needs org prefix | COMMENT |
| LOW | openmed/processing/advanced_ner.py | 629 | # Check if same entity type and close proximity | COMMENT |
| LOW⚡ | openmed/processing/advanced_ner.py | 685 | # Check if we have token-level data (no aggregation_strategy used) | COMMENT |
| LOW | openmed/processing/outputs.py | 353 | # Check if entities are adjacent and same label | COMMENT |
| 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 |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | openmed/processing/advanced_ner.py | 683 | # Step 1: Smart grouping if requested and we have token-level output | COMMENT |
| LOW⚡ | openmed/processing/advanced_ner.py | 705 | # Step 2: Advanced filtering | COMMENT |
| LOW⚡ | openmed/processing/advanced_ner.py | 708 | # Step 3: Merge adjacent entities if enabled | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | openmed/processing/advanced_ner.py | 683 | # Step 1: Smart grouping if requested and we have token-level output | COMMENT |
| LOW⚡ | openmed/processing/advanced_ner.py | 705 | # Step 2: Advanced filtering | COMMENT |
| LOW⚡ | openmed/processing/advanced_ner.py | 708 | # Step 3: Merge adjacent entities if enabled | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/unit/test_profiles.py | 148 | # Create a custom profile | 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 | 41 | def handle_request(self, request: httpx.Request) -> httpx.Response: | CODE |
| 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 |