fredbradley/php-nhs-number

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

2.0.0 2021-09-30 09:51 UTC

This package is auto-updated.

Last update: 2024-09-29 06:08:41 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,则标识符是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."
}

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

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

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

✅ 测试

composer test

🔖 更新日志

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

⬆️ 升级

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

🎉 贡献

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

🔒 安全性

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

👷 致谢

♻️ 许可证

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