CharmHealth MCP Server

CharmHealth MCP Server

An MCP server for CharmHealth EHR that allows LLMs and MCP clients to interact with patient records, encounters, and practice information.

154

14 Tools

Signed
Built by Docker
Requires Secrets
Add to Docker Desktop

Version 4.43 or later needs to be installed to add the server automatically

Tools

NameDescription
manageEncounterManage encounters. <usecase> Complete encounter workflow - create, review, and sign encounters with comprehensive clinical documentation. Essential for clinical workflow from initial documentation through final signature. </usecase> <instructions> Actions: - "create": Create new encounter and document clinical findings (default) - "review": Display complete encounter details for review before signing - "sign": Electronically sign encounter after review and confirmation - "unlock": Unlock a previously signed encounter to allow modifications For creating encounters: - Requires: patient_id, provider_id, facility_id, encounter_date - Optional: appointment_id (to create from existing appointment), visit_type_id, encounter_mode, chief_complaint For reviewing encounters: - Requires: patient_id, encounter_id - Shows comprehensive encounter details including vitals, diagnoses, medications, notes For signing encounters: - Requires: patient_id, encounter_id - Only use after reviewing and confirming all information is accurate For unlocking encounters: - Requires: patient_id, encounter_id, reason - Used to unlock signed encounters when modifications are needed - Must provide a valid reason for unlocking the encounter Recommended workflow: 1. Create encounter: manageEncounter(patient_id, provider_id, facility_id, encounter_date, action="create") 2. Add clinical data using managePatientVitals(), managePatientDrugs(), managePatientDiagnoses() 3. Review before signing: manageEncounter(patient_id, encounter_id, action="review") 4. Sign to finalize: manageEncounter(patient_id, encounter_id, action="sign") 5. If modifications needed: manageEncounter(patient_id, encounter_id, reason="reason for changes", action="unlock") When required parameters are missing, ask the user to provide the specific values rather than proceeding with defaults or auto-generated values. </instructions>
managePatientManage patients. <usecase> Complete patient management with comprehensive demographic, social, and administrative data. Handles patient creation, updates, status changes, and complex relationships. Supports all CharmHealth patient data fields for complete EHR functionality. </usecase> <instructions> Actions: - "create": Add new patient (requires first_name, last_name, gender, date_of_birth OR age, facility_ids) - "update": Modify existing patient (requires patient_id + fields to change). - "activate": Reactivate deactivated patient (requires patient_id only) - "deactivate": Deactivate patient (requires patient_id only) Update Modes: - update_specific_details=True: Only updates the fields you provide, preserves all other existing data (RECOMMENDED, Default) - update_specific_details=False: Complete record update - must provide all fields or existing data will be lost Demographics: Supports comprehensive patient information including social history, family data Addresses: If any address field provided, country is required (defaults to US) Facilities: Pass as list of facility IDs like "facility_123,facility_456". Categories: Pass as list like [{"category_id": "category_123"}] Complex Relationships: - caregivers: [{"first_name": str, "last_name": str, "relationship": str, "contact": {...}, "address": {...}}] - guarantor: [{"first_name": str, "last_name": str, "relationship": str, "contact": {...}, "address": {...}}] - id_qualifiers: [{"id_qualifier": 1-8 or 99, "id_of_patient": "ID_value"}] When required parameters are missing, ask the user to provide the specific values rather than proceeding with defaults or auto-generated values. </instructions>
managePatientAllergiesManage patient allergies. <usecase> Critical allergy management with safety alerts - document patient allergies, update allergy information, and maintain allergy safety checks. Essential for safe prescribing and clinical decision-making. </usecase> <instructions> Actions: - "add": Document new allergy (requires allergen, allergy_type, severity, reactions, allergy_date) - "list": Show all patient allergies (requires only patient_id) - "update": Modify existing allergy (requires record_id + fields to change) - "delete": Remove allergy record (requires record_id) Safety critical: Always check allergies before prescribing medications. Common allergens: "Penicillin", "Latex", "Shellfish", "Nuts", "Contrast dye" Severity levels: "Mild", "Moderate", "Severe", "Life-threatening" When required parameters are missing, ask the user to provide the specific values rather than proceeding with defaults or auto-generated values. </instructions>
managePatientDiagnosesManage patient diagnoses. <usecase> Complete diagnosis management for patient problem lists - add new diagnoses, update existing conditions, and maintain accurate medical problem lists. Essential for clinical reasoning and care planning. </usecase> <instructions> Actions: - "add": Add new diagnosis (requires diagnosis_name, diagnosis_code, code_type) - "list": Show all patient diagnoses (optionally filter by encounter_id) - "update": Modify existing diagnosis (requires record_id + fields to change) - "delete": Remove diagnosis (requires record_id). Ask the user if they are sure they want to delete the diagnosis before proceeding. Code types: "ICD10", "SNOMED" Status options: "Active", "Inactive", "Resolved" Use encounter_id to link diagnosis to specific visit for billing and documentation When required parameters are missing, ask the user to provide the specific values rather than proceeding with defaults or auto-generated values. </instructions>
managePatientDrugsManage patient drugs and supplements. <usecase> Unified drug management for medications, supplements, and vitamins - prescribe medications, document supplements, manage drug interactions. Includes automatic allergy checking and comprehensive drug safety workflow for optimal patient care. </usecase> <instructions> Actions: - "add": Prescribe new drug (requires drug_name, directions for medications; drug_name, dosage for supplements) - "update": Modify existing prescription (requires record_id + fields to change) - "discontinue": Stop drug (requires record_id) - "list": Show all patient drugs by type (optionally filter by substance_type) Substance Types: - "medication": Prescription drugs (requires directions, refills) - "supplement": OTC supplements/vitamins (requires dosage as integer) - "vitamin": Specific vitamins (requires dosage as integer) Safety: Automatically checks allergies before prescribing unless check_allergies=False For medications: Use clear directions like "Take 1 tablet by mouth twice daily with food" For supplements: Provide dosage as integer (e.g., 5) and use strength for units (e.g., "500mg") When required parameters are missing, ask the user to provide the specific values rather than proceeding with defaults or auto-generated values. </instructions>
managePatientFilesManage patient files and documents. <usecase> Patient file and document management - upload patient photos, manage identity documents, and send PHR (Personal Health Record) invitations. Handles the complete patient file workflow. </usecase> <instructions> Actions: - "upload_photo": Upload patient photo (requires photo_file path) - "delete_photo": Remove patient photo (requires only patient_id) - "upload_id": Upload identity document (requires id_file, id_qualifier) - "send_phr_invite": Send PHR portal invitation (requires email) ID Qualifiers: military_id, state_issued_id, drivers_license_id, passport_id, social_security_number, etc. File paths should be absolute paths to image/PDF files on the system. When required parameters are missing, ask the user to provide the specific values rather than proceeding with defaults or auto-generated values. </instructions>
managePatientLabsManage patient laboratory results. <usecase> Complete laboratory results management - list lab results, get detailed reports, and add new lab results. Handles the full lab workflow for clinical decision-making. </usecase> <instructions> Actions: - "list": Show lab results with filtering (optionally filter by patient_id, reviewer_id, status) - "get_details": Get detailed lab report (requires group_id OR lab_order_id) - "add_result": Add new lab results (requires patient_id + result_details) For detailed results: Use group_id for result groups or lab_order_id for specific orders For adding results: Provide structured result_details with tests, parameters, and values Status codes: 0 for pending, 2 for final results When required parameters are missing, ask the user to provide the specific values rather than proceeding with defaults or auto-generated values. </instructions>
managePatientNotesManage patient notes. <usecase> Quick clinical note management for important patient information - add care notes, provider communications, and clinical observations that need to be highlighted across all patient interactions. </usecase> <instructions> Actions: - "add": Add new clinical note (requires notes content) - "list": Show all patient notes (requires only patient_id) - "update": Modify existing note (requires record_id + notes content) - "delete": Remove note (requires record_id). Ask the user if they are sure they want to delete the note before proceeding. Use for: Important care instructions, provider alerts, patient preferences, social determinants Formal encounter notes should use manageEncounter() instead When required parameters are missing, ask the user to provide the specific values rather than proceeding with defaults or auto-generated values. </instructions>
managePatientRecallsManage patient recalls. <usecase> Patient recall and follow-up management - schedule preventive care reminders, follow-up appointments, and care plan reminders. Ensures patients receive timely care according to clinical guidelines. </usecase> <instructions> Actions: - "add": Schedule new recall (requires recall_type, notes, provider_id, facility_id) - "list": Show all patient recalls (requires only patient_id) - "update": Modify existing recall (requires record_id + fields to change) - "delete": Remove recall (requires record_id). Ask the user if they are sure they want to delete the recall before proceeding. Common recall types: "Annual Physical", "Mammogram", "Colonoscopy", "Lab Follow-up", "Medication Review" Reminder timing: email_reminder_before/text_reminder_before in days (e.g., 7 for one week) Use getPracticeInfo() to get valid provider_id and facility_id values When required parameters are missing, ask the user to provide the specific values rather than proceeding with defaults or auto-generated values. </instructions>
managePatientVitalsManage patient vitals and vital signs. <usecase> Complete patient vital signs management - record vitals during encounters, review vital trends, update incorrect readings, and track patient health metrics over time. Essential for clinical monitoring. </usecase> <instructions> Actions: - "add": Record new vitals (requires patient_id + encounter_id + vitals dict OR individual vital fields). Check available vitals with getPracticeInfo(info_type='vitals') first to ensure all vital names and units are correct. - "list": Show patient vital history (optionally filter by date range) - "update": Modify existing vital record (requires record_id + fields to change) - "delete": Remove incorrect vital record (requires record_id) Vitals Format: - As dict: {"Weight": "70 kg", "BP": "120/80 mmHg", "Pulse": "72 bpm", "Temperature": "98.6 F"} - Individual: vital_name="Weight", vital_value="70", vital_unit="kg" Common Vitals: Weight, Height, Blood Pressure (BP), Pulse Rate, Temperature, Respiratory Rate, Oxygen Saturation Use getPracticeInfo(info_type='vitals') to see available vital types and proper naming When required parameters are missing, ask the user to provide the specific values rather than proceeding with defaults or auto-generated values. </instructions>

Manual installation

You can install the MCP server using:

Installation for

Related servers