#ifndef MEDICINE_SERVICE_H #define MEDICINE_SERVICE_H #include #include #include #include "core/his_context.h" namespace core { class MedicineService { public: explicit MedicineService(HisContext& ctx); size_t medicineCount() const; const Medicine* findMedicine(const std::string& id) const; Medicine* findMedicine(const std::string& id); void for_eachMedicine( const std::function& visitor) const; // 按名称(通用名/商品名/别名)模糊匹配 void searchByName( const std::string& keyword, const std::function& visitor) const; bool addMedicine(const Medicine& m); bool updateMedicine(const std::string& id, const std::string& generic, const std::string& brand, const std::vector& aliases, int stock, const std::string& dept, double price); bool removeMedicine(const std::string& id, std::string& outError); bool addOrUpdateMedicine(const Medicine& m); // 创建新药品(自动生成UUID) Medicine createMedicine(const std::string& generic, const std::string& brand, const std::vector& aliases, int stock, const std::string& dept, double price); // 入库:增加库存(不能为负) bool increaseStock(const std::string& id, int amount); // 出库/发药:减少库存,库存不足时必须失败 bool decreaseStock(const std::string& id, int amount); private: HisContext& ctx_; }; } // namespace core #endif