imliam/php-nhs-number

用于验证、格式化和生成NHS号码的实用类。

v1.1.0 2019-07-23 18:54 UTC

This package is auto-updated.

Last update: 2024-09-13 01:37:09 UTC


README

Latest Version on Packagist Build Status Code Quality Code Coverage Total Downloads License

用于验证、格式化和生成NHS号码的实用类。

🤔 常见问题解答

什么是NHS号码?

NHS号码是每个在英国国民医疗服务体系(NHS)注册的个人的唯一标识符。

您可以在nhs.uk网站上了解更多关于NHS号码的信息。

如何验证NHS号码?

并非每个号码都是有效的NHS号码,它们必须符合一个简单的算法才能被认为是有效的。在运行算法之前,有一些关于NHS号码需要注意的事项

  • NHS号码必须是数字
  • NHS号码必须是10位数字
  • NHS号码可以以0开头,因此应将其处理为字符串,而不是整数
  • NHS号码的最后一位数字用作算法的“校验位”

使用“校验位”验证NHS号码的算法如下

  1. 将每个前九位数字乘以定义的权重,如下所示
  1. 计算所有9次乘法的总和
  2. 将这个总和除以11并得到余数
  3. 从余数中减去11以得到总和
  4. 如果总和是11,则标识符,否则标识符是总和
  5. 如果标识符是10,则NHS号码是错误的
  6. 如果标识符与校验位相同,则NHS号码是正确的

💾 安装

您可以使用以下命令使用Composer安装此软件包

composer require imliam/php-nhs-number:^1.1

📝 使用

通过传递NHS号码,您可以创建一个NhsNumber对象。

$nhsNumber = new \ImLiam\NhsNumber\NhsNumber('9077844449');

NHS建议在向人类展示NHS号码时,应使用3-3-4格式进行间隔,这有助于更容易阅读。为此,请调用->format()方法或将对象转换为字符串。

echo $nhsNumber->format();
// '907 784 4449'

echo (string) $nhsNumber;
// '907 784 4449'

要获取当前号码是否有效的布尔表示,请调用对象上的->isValid()方法。

$nhsNumber->isValid();
// true

如果您需要更多关于为什么某个NHS号码可能无效的信息,可以直接调用->validate()方法。这将抛出一个InvalidNhsNumberException异常,其消息将解释为什么该号码无效。

try {
    $nhsNumber = new \ImLiam\NhsNumber\NhsNumber('9077844446');
    $nhsNumber->validate();
} catch (\ImLiam\NhsNumber\InvalidNhsNumberException $e) {
    echo $e->getMessage();
    // "The NHS number's check digit does not match."
}

为了测试目的,您可以调用静态方法::getRandomNumber()::getRandomNumbers($count)分别来生成单个或多个随机有效的NHS号码。

echo \ImLiam\NhsNumber\NhsNumber::getRandomNumber();
// '9278462608'

echo \ImLiam\NhsNumber\NhsNumber::getRandomNumbers(5);
// ['7448556886', '0372104223', '8416367035']

✅ 测试

composer test

🔖 变更日志

请参阅变更日志文件以获取有关最近更改的更多信息。

⬆️ 升级

请参阅升级文件以获取有关从先前版本升级的详细信息。

🎉 贡献

请参阅贡献文件行为准则以获取有关向项目贡献的详细信息。

🔒 安全

如果您发现任何安全相关的问题,请通过电子邮件liam@liamhammett.com联系,而不是使用问题跟踪器。

👷 致谢

♻️ 许可证

麻省理工学院许可证(MIT)。更多信息请参阅许可证文件