Coverage for preprocess/rio_constants.py: 100%
34 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-08-27 10:34 -0500
« prev ^ index » next coverage.py v7.8.0, created at 2025-08-27 10:34 -0500
1"""
2crate_anon/preprocess/rio_constants.py
4===============================================================================
6 Copyright (C) 2015, University of Cambridge, Department of Psychiatry.
7 Created by Rudolf Cardinal (rnc1001@cam.ac.uk).
9 This file is part of CRATE.
11 CRATE is free software: you can redistribute it and/or modify
12 it under the terms of the GNU General Public License as published by
13 the Free Software Foundation, either version 3 of the License, or
14 (at your option) any later version.
16 CRATE is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License for more details.
21 You should have received a copy of the GNU General Public License
22 along with CRATE. If not, see <https://www.gnu.org/licenses/>.
24===============================================================================
26**Constants used for Servelec RiO/RCEP databases.**
28"""
30from crate_anon.preprocess.constants import CRATE_IDX_PREFIX
32# Tables in RiO v6.2 Core:
33RIO_TABLE_MASTER_PATIENT = "ClientIndex"
34RIO_TABLE_ADDRESS = "ClientAddress"
35RIO_TABLE_PROGRESS_NOTES = "PrgProgressNote"
36RIO_TABLE_CLINICAL_DOCUMENTS = "ClientDocument"
37# Columns in RiO Core:
38RIO_COL_PATIENT_ID = "ClientID" # RiO 6.2: VARCHAR(15)
39RIO_COL_NHS_NUMBER = "NNN" # RiO 6.2: CHAR(10) ("National NHS Number")
40RIO_COL_POSTCODE = "PostCode" # ClientAddress.PostCode
41RIO_COL_DEFAULT_PK = "SequenceID" # INT
42RIO_COL_USER_ASSESS_DEFAULT_PK = "type12_NoteID"
44# Tables in RiO CRIS Extract Program (RCEP) output database:
45RCEP_TABLE_MASTER_PATIENT = "Client_Demographic_Details"
46RCEP_TABLE_ADDRESS = "Client_Address_History"
47RCEP_TABLE_PROGRESS_NOTES = "Progress_Notes"
48# Columns in RCEP extract:
49RCEP_COL_PATIENT_ID = "Client_ID" # RCEP: VARCHAR(15)
50RCEP_COL_NHS_NUMBER = "NHS_Number" # RCEP: CHAR(10)
51RCEP_COL_POSTCODE = "Post_Code" # RCEP: NVARCHAR(10)
52# ... general format (empirically): "XX12 3YY" or "XX1 3YY"; "ZZ99" for unknown
53# This matches the ONPD "pdcs" format.
54RCEP_COL_MANGLED_KEY = "Document_ID"
56# CPFT hacks (RiO tables added to RCEP output):
57CPFT_RCEP_TABLE_FULL_PROGRESS_NOTES = "Progress_Notes_II"
59# Columns added:
60CRATE_COL_RIO_NUMBER = "crate_rio_number"
61# "rio_number" is OK for RCEP + RiO, but clarity is good
62CRATE_COL_NHS_NUMBER = "crate_nhs_number_int"
63# "nhs_number_int" is OK for RCEP + RiO, but again...
64# For RCEP, in SQL Server, check existing columns with:
65# USE database;
66# SELECT column_name, table_name
67# FROM information_schema.columns
68# WHERE column_name = 'something';
69# For RiO, for now, check against documented table structure.
71# For progress notes:
72CRATE_COL_MAX_SUBNUM = "crate_max_subnum_for_notenum"
73CRATE_COL_LAST_NOTE = "crate_last_note_in_edit_chain"
74# For clinical documents:
75CRATE_COL_MAX_DOCVER = "crate_max_docver_for_doc"
76CRATE_COL_LAST_DOC = "crate_last_doc_in_chain"
78# Indexes added... generic:
79CRATE_IDX_PK = f"{CRATE_IDX_PREFIX}_pk" # for any patient table
80CRATE_IDX_RIONUM = f"{CRATE_IDX_PREFIX}_rionum" # for any patient table
81# For progress notes:
82CRATE_IDX_RIONUM_NOTENUM = f"{CRATE_IDX_PREFIX}_rionum_notenum"
83CRATE_IDX_MAX_SUBNUM = f"{CRATE_IDX_PREFIX}_max_subnum"
84CRATE_IDX_LAST_NOTE = f"{CRATE_IDX_PREFIX}_last_note"
85# For clinical documents:
86CRATE_IDX_RIONUM_SERIALNUM = f"{CRATE_IDX_PREFIX}_rionum_serialnum"
87CRATE_IDX_MAX_DOCVER = f"{CRATE_IDX_PREFIX}_max_docver"
88CRATE_IDX_LAST_DOC = f"{CRATE_IDX_PREFIX}_last_doc"
90# Views added:
91VIEW_RCEP_CPFT_PROGRESS_NOTES_CURRENT = "progress_notes_current_crate"
92VIEW_ADDRESS_WITH_GEOGRAPHY = "client_address_with_geography"