find_nearby_medical_facilities
Locate nearby hospitals and clinics based on user location, treatment needs, care quality, price range, and infrastructure. Designed for emergency medical planning by evaluating facility types and services.
Instructions
Finds hospitals and clinics nearby user location that match specific requirements
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| careQuality | No | Expected quality of medical care | |
| facilities | No | Types of medical facilities to search for | |
| infrastructure | No | Quality of infrastructure and cleanliness | |
| priceRange | No | Price range preference | |
| radius | No | Search radius in meters (default: 10000m = 10km) | |
| treatmentNeeds | No | Specific medical treatments or services needed | |
| userLocation | Yes | User's current location (address or coordinates) |
Implementation Reference
- index.ts:299-390 (handler)The main handler function for the 'find_nearby_medical_facilities' tool. It validates input using the schema, uses mock data for nearby facilities, applies filters based on user preferences (treatment needs, care quality, price range, facility types, infrastructure), and returns a formatted list of matching facilities.case "find_nearby_medical_facilities": { const validatedArgs = FindNearbyMedicalFacilitiesSchema.parse(args); // Mock implementation - in a real scenario this would call the Google Maps API const mockFacilities = [ { name: "General Hospital", address: "123 Main St, Cityville", distance: "2.3 km", type: "hospital", treatmentsAvailable: ["emergency", "surgery", "cardiology"], careQuality: "high", priceRange: "moderate", infrastructure: "excellent" }, { name: "Community Clinic", address: "456 Oak Ave, Cityville", distance: "3.8 km", type: "clinic", treatmentsAvailable: ["general practice", "pediatrics"], careQuality: "medium", priceRange: "low", infrastructure: "good" }, { name: "Specialized Medical Center", address: "789 Pine St, Cityville", distance: "5.1 km", type: "specialist", treatmentsAvailable: ["oncology", "neurology"], careQuality: "high", priceRange: "high", infrastructure: "excellent" } ]; // Filter facilities based on user criteria let facilities = mockFacilities; // Filter by treatment needs if specified if (validatedArgs.treatmentNeeds && validatedArgs.treatmentNeeds.length > 0) { facilities = facilities.filter(facility => validatedArgs.treatmentNeeds!.some(treatment => facility.treatmentsAvailable.includes(treatment) ) ); } // Filter by care quality if specified if (validatedArgs.careQuality && validatedArgs.careQuality !== "any") { facilities = facilities.filter(facility => facility.careQuality === validatedArgs.careQuality || (validatedArgs.careQuality === "high" && facility.careQuality === "high") || (validatedArgs.careQuality === "medium" && ["medium", "high"].includes(facility.careQuality)) ); } // Filter by price range if specified if (validatedArgs.priceRange && validatedArgs.priceRange !== "any") { facilities = facilities.filter(facility => facility.priceRange === validatedArgs.priceRange); } // Filter by facility type if specified if (validatedArgs.facilities && validatedArgs.facilities.length > 0) { facilities = facilities.filter(facility => validatedArgs.facilities!.includes(facility.type as any) ); } // Filter by infrastructure quality if specified if (validatedArgs.infrastructure && validatedArgs.infrastructure !== "any") { facilities = facilities.filter(facility => facility.infrastructure === validatedArgs.infrastructure || (validatedArgs.infrastructure === "good" && ["good", "excellent"].includes(facility.infrastructure)) ); } return { content: [ { type: "text", text: `Found ${facilities.length} medical facilities near ${validatedArgs.userLocation} within ${validatedArgs.radius/1000} km:\n\n` + facilities.map(f => `- ${f.name} (${f.type})\n Address: ${f.address}\n Distance: ${f.distance}\n` + ` Treatments: ${f.treatmentsAvailable.join(", ")}\n` + ` Quality: ${f.careQuality}, Price: ${f.priceRange}, Infrastructure: ${f.infrastructure}` ).join("\n\n") }, ], }; }
- index.ts:219-228 (schema)Zod schema defining the input parameters for the 'find_nearby_medical_facilities' tool, including user location, search radius, treatment needs, care quality, price range, facility types, and infrastructure preferences.const FindNearbyMedicalFacilitiesSchema = z.object({ userLocation: z.string().describe("User's current location (address or coordinates)"), radius: z.number().default(10000).describe("Search radius in meters (default: 10000m = 10km)"), treatmentNeeds: z.array(z.string()).optional().describe("Specific medical treatments or services needed"), careQuality: z.enum(["high", "medium", "any"]).optional().describe("Expected quality of medical care"), priceRange: z.enum(["low", "moderate", "high", "any"]).optional().describe("Price range preference"), facilities: z.array(z.enum(["hospital", "clinic", "emergency", "pharmacy", "specialist"])).optional() .describe("Types of medical facilities to search for"), infrastructure: z.enum(["excellent", "good", "any"]).optional().describe("Quality of infrastructure and cleanliness"), });
- index.ts:264-268 (registration)Registration of the 'find_nearby_medical_facilities' tool in the list of available tools returned by ListToolsRequestSchema handler, including name, description, and input schema.{ name: "find_nearby_medical_facilities", description: "Finds hospitals and clinics nearby user location that match specific requirements", inputSchema: zodToJsonSchema(FindNearbyMedicalFacilitiesSchema), },