Files
HIS-GUI/include/core/medicine_service.h
2026-04-05 20:11:43 +08:00

60 lines
1.7 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef MEDICINE_SERVICE_H
#define MEDICINE_SERVICE_H
#include <functional>
#include <string>
#include <vector>
#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<void(const std::string&, const Medicine&)>& visitor) const;
// 按名称(通用名/商品名/别名)模糊匹配
void searchByName(
const std::string& keyword,
const std::function<void(const std::string&, const Medicine&)>& visitor) const;
bool addMedicine(const Medicine& m);
bool updateMedicine(const std::string& id,
const std::string& generic,
const std::string& brand,
const std::vector<std::string>& 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<std::string>& 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