webtorque / silverstripe-nhi-field
Provide a NHI db field and NHI Form field to track NZ's "National Health Index" number.
Installs: 307
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 1
Open Issues: 0
Type:silverstripe-module
pkg:composer/webtorque/silverstripe-nhi-field
Requires
- php: >= 5.4.0, <=7.2
 - silverstripe/cms: ^3.0.0
 - silverstripe/framework: ^3.0.0
 
Requires (Dev)
- phpunit/phpunit: ~3.7
 - silverstripe/travis-support: ^0.1.0
 
This package is not auto-updated.
Last update: 2025-10-26 10:26:39 UTC
README
A Silverstipe module to provide a NHI db field and NHI Form field to track NZ's "National Health Index" number.
Features
- Custom DB field type
 - Custom form field type with basic pattern validation and checksum validation.
 - Consistently save NHI in all caps.
 
Requirements
- PHP 5.4 or greater (tested with up to PHP 7.1)
 silverstripe/framework:^3.0silverstripe/cms:^3.0
Installation
composer require webtorque/silverstripe-nhi-field:^0.0
Usage
To specify a NHI db field on a DataObject:
class Patient extends DataObject { private static $db = [ 'NationalHealthIndex' => 'NHI', ]; }
The NHI field type is equivalent to Varchar(7). When scaffolding a form, any NHI db field will autmatically use the
NHIField form field instead of TextField.
Validating an NHI
Just use the NHIField in your form and validate your Form normally.
$nhiField = NHIField::create( $name = 'nhi', // required $title = 'National Health Index', // optional $value = 'CGC2720', // optional $form = null, // optional $html5pattern = false // optional, output an `html5` pattern attribute );
NHIField is a simple extension of TextField with the following alteration:
- The 
maxlengthis automatically set to 7. - When setting the value of the field, it will automatically be converted to uppercase.
 - The value is validated with a basic regex and with a checksum as specified by the NHI standard.
 - You can ouput an html5 
patternattribute with$nhiField->setHtml5Pattern(true);. 
For testing purposes, checksum validation can be disabled by setting the disable_checksum_validation flag on the NHIField config.
if (Director::isDev()) { NHIField::config()->disable_checksum_validation = true; }