<?php

declare(strict_types=1);

namespace Kylin\Medical;

use Illuminate\Support\ServiceProvider;
use Kylin\Medical\Services\MedicalService;

/**
 * 医疗管理系统服务提供者
 *
 * 提供医疗管理核心功能：科室管理、医生管理、预约挂号、在线问诊、处方开具等。
 *
 * 法律合规：
 *  - 《处方管理办法》：处方用量、药品数限制
 *  - 《电子病历应用管理规范》：电子签名、保存期限
 *  - 《个人信息保护法》：敏感信息加密
 *  - 《网络安全法》：操作审计日志
 */
class MedicalServiceProvider extends ServiceProvider
{
    public function register(): void
    {
        $this->mergeConfigFrom(
            __DIR__ . '/../config/kylin-medical.php',
            'kylin-medical'
        );

        $this->app->singleton(MedicalService::class);
        $this->app->singleton('kylin-medical', MedicalService::class);
    }

    public function boot(): void
    {
        if ($this->app->runningInConsole()) {
            $this->publishes([
                __DIR__ . '/../config/kylin-medical.php' => config_path('kylin-medical.php'),
            ], 'kylin-medical-config');

            $this->loadMigrationsFrom(__DIR__ . '/../database/migrations');
        }

        $this->loadRoutesFrom(__DIR__ . '/../routes/api.php');
    }
}
