fredbradley / php-nhs-number
用于验证、格式化和生成NHS号码的实用类。
2.0.0
2021-09-30 09:51 UTC
Requires
- php: ^8.0
Requires (Dev)
- phpunit/phpunit: ~9.0
This package is auto-updated.
Last update: 2024-09-29 06:08:41 UTC
README
用于验证、格式化和生成NHS号码的实用类。
🤔 常见问题解答
什么是NHS号码?
"NHS号码"是每个在英国国家卫生服务(NHS)注册的个体患者唯一的标识符。
如何验证NHS号码?
并非每个数字都是有效的NHS号码,它们必须符合一个简单的算法才能被认为是有效的。在运行算法之前,有一些关于NHS号码需要注意的事项:
- NHS号码必须是数字
- NHS号码必须是10位数字
- NHS号码可以以0开头,因此应该将其处理为字符串,而不是整数
- NHS号码的最后一位数字用作算法的"校验位"
使用其"校验位"验证NHS号码的算法如下
- 将每个前九位数字乘以一个定义的权重,如下所示
- 计算所有9次乘法的总和
- 将这个总和除以11并得到余数
- 从余数中减去11得到总数
- 如果总数是11,则标识符是11,否则标识符是总数
- 如果标识符是10,则NHS号码是错误的
- 如果标识符与校验位相同,则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联系,而不是使用问题跟踪器。
👷 致谢
- Liam Hammett
- Peter Fisher对原始类有贡献
- 所有贡献者
♻️ 许可证
麻省理工学院许可证(MIT)。请参阅许可证文件获取更多信息。