-
Notifications
You must be signed in to change notification settings - Fork 134
Patient Identifier Configuration MRN and PHN
Open HMIS assigns each patient two distinct identifiers:
| Identifier | Stands For | Scope | Authority |
|---|---|---|---|
| MRN | Medical Record Number | Institution-local | Configured by the hospital |
| PHN | Personal Health Number | National | Sri Lanka Ministry of Health |
Both identifiers are configurable through Administration → Configuration → Application Options.
The MRN is a unique identifier assigned by the hospital at the point of registration. It is local to your institution — it is not shared with other hospitals or the national registry. The MRN appears on patient wristbands, printed bills, lab reports, prescription labels, and all clinical documents.
Go to Administration → Configuration → Application Options and search for MRN to see all related settings.
The MRN Generation Strategy option controls how each new MRN is produced:
| Strategy Value | Format Produced | Example |
|---|---|---|
SEQUENTIAL |
Pure sequential number | 000423 |
SEQUENTIAL_YEAR |
Year + sequential | 2026-000423 |
SEQUENTIAL_DEPT |
Department code + sequential | OPD-000423 |
SEQUENTIAL_SITE |
Site code + sequential | CLB-000423 |
SEQUENTIAL_INSTITUTION |
Institution code + sequential | RHM-000423 |
RANDOM_ALPHANUMERIC |
Random characters of fixed length | B7KX3M |
CUSTOM_PREFIX_SEQUENTIAL |
Your chosen text + sequential | MAIN-000423 |
Each prefix component is independently toggled on or off:
| Configuration Key | Type | Description |
|---|---|---|
MRN Include Year Prefix |
Boolean | Prepend the registration year (e.g. 2026) |
MRN Year Format |
Enum (YYYY / YY) | Four-digit or two-digit year |
MRN Include Department Code |
Boolean | Prepend the registering department's short code |
MRN Include Institution Code |
Boolean | Prepend the registering institution's short code |
MRN Include Site Code |
Boolean | Prepend the registering site's short code |
MRN Custom Prefix |
Short text | Any static text prefix (e.g. hospital abbreviation) |
MRN Delimiter |
Short text | Separator between components (e.g. -, /, or blank) |
Example: With MRN Custom Prefix = RH, MRN Include Year Prefix = true, MRN Year Format = YY, MRN Delimiter = -, and a sequential count of 1523, the MRN produced is RH-26-001523.
| Configuration Key | Type | Description |
|---|---|---|
MRN Sequential Digit Count |
Integer (4–10) | Zero-padded width of the sequential component |
MRN Sequential Scope |
Enum |
GLOBAL / PER_INSTITUTION / PER_DEPARTMENT / PER_YEAR
|
MRN Reset Sequence Annually |
Boolean | Restart from 1 each calendar year (useful with Year prefix) |
Warning: If you change
MRN Sequential Scopeafter patients are already registered, the sequential counter resets. This may cause duplicates. Change scope only during initial setup.
A check digit is a calculated trailing character that allows staff to detect typing errors at the point of data entry. When enabled, the system automatically appends it to every generated MRN and validates it when an MRN is entered manually.
| Configuration Key | Type | Description |
|---|---|---|
MRN Check Digit Enabled |
Boolean | Append a check digit to every MRN |
MRN Check Digit Algorithm |
Enum |
LUHN / VERHOEFF / DAMM
|
Algorithm comparison:
| Algorithm | Detects Single-Digit Errors | Detects Transpositions | Complexity |
|---|---|---|---|
| Luhn | Yes | Most | Simple |
| Verhoeff | Yes | All | Complex |
| Damm | Yes | All | Moderate |
Luhn is the default and is suitable for most deployments. Choose Verhoeff or Damm if your clinical environment requires the highest possible error detection (e.g. laboratory or blood bank).
| Configuration Key | Type | Description |
|---|---|---|
MRN Auto-generate on Registration |
Boolean | When true, MRN is assigned the moment a patient record is saved. When false, staff may type an externally assigned MRN during registration. |
The PHN is a lifelong, nationally unique identifier issued in accordance with the Sri Lanka National Digital Health Guidelines and Standards (NDHGS) published by the Ministry of Health. It enables patient records to be linked across different hospitals and health institutions throughout the country.
The PHN is stored in the Patient.phn field and is printed on patient registration cards and clinical documents.
Sri Lanka has two active PHN standard versions. The system supports both.
Default: The system ships with
PHN Standard Version = V2(National Digital Health Guidelines and Standards). This is the current standard mandated by the Ministry of Health. Change toV1only if the HIU specifically instructs you to use the older format.
Format: PPPP + NNNNNNNNNN + C
| Component | Length | Type | Description |
|---|---|---|---|
| POI (Point of Issue) | 4 | Numeric | Identifies the issuing institution |
| Sequential number | 10 | Numeric | Monotonically increasing, scoped to the POI |
| Check digit | 1 | Numeric | Modified Luhn (Regenstrief) check digit |
Total length: 15 characters
Example: POI 1042, sequence 0000001523, check digit 7 → PHN 104200000015237
Format: PPPP + RRRRRRRRRR + C
| Component | Length | Type | Description |
|---|---|---|---|
| POI (Point of Issue) | 4 | Alphanumeric | Identifies the issuing institution |
| Random segment | 10 | Alphanumeric | Randomly generated; supplied by the Ministry per POI |
| Check digit | 1 | Alphanumeric | Modified Luhn (Regenstrief) check digit — supports letters |
Total length: 15 characters
Key constraints for Version 2:
- Each POI is limited to 1 million unique numbers. The system enforces this limit and will warn administrators when the POI approaches capacity.
- Before assigning a new PHN, the system verifies the candidate does not already exist in the patient database (up to 10 attempts before raising an alert).
The standard Luhn algorithm only handles numeric characters. Version 2 PHNs are alphanumeric, so the system uses the Regenstrief modification which converts each character to a numeric value via its ASCII code (minus 48) before applying the standard Luhn doubling-and-summing procedure. This allows check-digit calculation and validation on identifiers that contain letters.
Institution POI: 1042
Sequential count for that POI: 1523
Zero-padded to 10 digits: 0000001523
Concatenated before check digit: 10420000001523
Modified Luhn check digit calculated: 7
Final PHN: 104200000015237
Institution POI: H04B (alphanumeric)
10-character random segment generated: 3KX7MQ2P9R
Concatenated before check digit: H04B3KX7MQ2P9R
Modified Luhn (Regenstrief) check digit calculated: 5
Final PHN: H04B3KX7MQ2P9R5
The system verifies H04B3KX7MQ2P9R5 is not already stored in any patient record before assigning it. If a collision is found, a new random segment is generated (up to 10 attempts).
Go to Administration → Configuration → Application Options and search for PHN.
| Configuration Key | Type | Default | Description |
|---|---|---|---|
PHN Standard Version |
Enum | V2 |
V1 / V2 / EXTERNAL / NONE
|
PHN Auto-generate on Registration |
Boolean | true |
Assign a PHN automatically when a new patient is saved |
PHN POI Number Scope |
Enum | GLOBAL |
GLOBAL — single POI for all registrations; PER_INSTITUTION — each institution uses its own POI (from Institution master) |
PHN POI Number |
Short text | (empty) | The 4-character POI code (used when scope is GLOBAL) — obtain from the Sri Lanka HIU |
PHN Sequential Start |
Integer | 1 |
Starting sequential number for Version 1 |
Some patients arrive with a PHN already assigned at another facility. Set PHN Standard Version = EXTERNAL and PHN Auto-generate on Registration = false. When staff enter a PHN manually during registration, the system:
- Validates the format — checks length, character set, and check digit
- Checks for duplicates — queries all existing patient records for the same PHN
-
Offers deterministic matching — if a match is found, the system displays the existing patient record and asks staff whether to:
- Link the new visit to the existing patient (recommended — avoids duplicates)
- Proceed as a new registration (creates a separate record)
This workflow prevents the most common source of duplicate patient records in multi-facility environments.
When set to NONE, the PHN field is hidden from registration screens and no PHN is generated or validated. Use this setting only for deployments that do not participate in the Sri Lanka national eHealth programme.
| Location | MRN | PHN |
|---|---|---|
| Patient registration form | Input / display | Input / display |
| Patient search results | Column | Column |
| OPD bill header | Yes | Yes |
| Inward (BHT) cover sheet | Yes | Yes |
| Lab report header | Yes | Yes |
| Prescription label | Yes | Optional |
| Patient wristband | Yes | Yes |
| Patient card / registration card | Yes | Yes |
From any patient search panel (OPD registration, inward admission, pharmacy, etc.):
- Type the MRN in the patient search field to retrieve the patient directly
- Type the PHN in the patient search field to retrieve the patient directly
- Partial MRN and partial PHN searches are supported
Can a patient have both an MRN and a PHN? Yes. These are independent fields. A patient always receives an MRN at registration. Whether a PHN is also assigned depends on your configuration.
What happens if PHN generation fails (all 10 random attempts collide)? The system logs an alert and does not assign a PHN. The patient record is saved without a PHN, and an administrator notification is raised. Staff must retry manually from the patient detail page once the issue is investigated.
Can I change an MRN after it has been assigned?
The MRN field can be edited by a user with the appropriate privilege (Edit Patient MRN). However, changing an MRN that is already printed on physical records (wristbands, lab tubes) can cause clinical risk. Change MRNs only after careful consideration and a clear relabelling workflow.
What is a POI number and where do I get it? The Point of Issue (POI) number is assigned by the Sri Lanka Health Information Unit (HIU) of the Ministry of Health. Contact the HIU to obtain your institution's POI before enabling PHN generation. Entering an unofficial or self-assigned POI produces PHNs that will not be recognised by the national registry.
We have multiple institutions under one deployment. Do they each get a separate POI?
That depends on your arrangement with the HIU. If each institution has its own POI, set PHN POI Number Scope = PER_INSTITUTION and configure the POI on each institution record in Administration → Manage Institutions. If the entire deployment shares one POI, set PHN POI Number Scope = GLOBAL and enter the POI in PHN POI Number.
Does Version 2 PHN generation require an internet connection? No. Version 2 uses local random generation within the system. The Ministry assigns a block of valid random seeds to each POI; the system uses those seeds offline.