explain_integration_pattern
Understand healthcare integration patterns like ADT feeds and radiology workflows with message flow diagrams, trigger events, expected segments, and best practices.
Instructions
[Premium] Explain common healthcare integration patterns including message flow diagrams, trigger events, expected segments, common pitfalls, and best practices. Patterns: 'ADT feed', 'order to result', 'radiology workflow', 'lab interface', 'report distribution', 'patient merge', 'charge posting'.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pattern_name | Yes | Integration pattern name (e.g., 'ADT feed', 'radiology workflow', 'order to result'). |
Implementation Reference
- The 'explain_integration_pattern' function is implemented in 'src/dicom_hl7_mcp/tools/field_mapper.py'. It takes a 'pattern_name', normalizes it, and retrieves integration pattern details from the 'INTEGRATION_PATTERNS' dictionary (imported from 'dicom_hl7_mcp.knowledge.fhir_mappings'). It then returns a formatted string containing the message flow, trigger events, expected segments, common pitfalls, and best practices.
def explain_integration_pattern(pattern_name: str) -> str: """Explain common healthcare integration patterns. Args: pattern_name: Pattern identifier. Examples: - "ADT feed" or "adt_feed" - "order to result" or "order_to_result" - "radiology workflow" - "lab interface" - "report distribution" - "patient merge" - "charge posting" Returns: Message flow diagram, trigger events, expected segments, common pitfalls. """ premium_check = require_premium("explain_integration_pattern") if premium_check: return premium_check # Normalize the pattern name normalized = pattern_name.strip().lower().replace(" ", "_").replace("-", "_") # Try exact match pattern = INTEGRATION_PATTERNS.get(normalized) # Try fuzzy match if pattern is None: for key, val in INTEGRATION_PATTERNS.items(): if normalized in key or key in normalized: pattern = val break if normalized in val["name"].lower().replace(" ", "_"): pattern = val break if pattern is None: available = "\n".join( f" - {key}: {val['name']}" for key, val in INTEGRATION_PATTERNS.items() ) return ( f"Integration pattern '{pattern_name}' not found.\n\n" f"Available patterns:\n{available}" ) parts = [ f"## {pattern['name']}", f"", pattern["description"], f"", f"### Message Flow", ] for i, step in enumerate(pattern["message_flow"], 1): parts.append(f" {i}. {step}") parts.extend([ f"", f"### Trigger Events", ]) for event in pattern["trigger_events"]: parts.append(f" - {event}") parts.extend([ f"", f"### Expected Segments", f" {', '.join(pattern['expected_segments'])}", f"", f"### Common Pitfalls", ]) for pitfall in pattern["common_pitfalls"]: parts.append(f" ! {pitfall}") parts.extend([ f"", f"### Best Practices", ]) for practice in pattern["best_practices"]: parts.append(f" * {practice}") return "\n".join(parts)