From 8e780993dceb30df7f44cc60cf4e83cea17b75ba Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Wed, 24 Jan 2024 14:34:03 +0000 Subject: [PATCH 01/27] Remove hymind --- api/src/api/config.py | 1 - api/src/api/ed/router.py | 7 - api/src/api/hymind/__init__.py | 0 .../api/hymind/data/mock_icu_discharge.json | 180 ------------------ .../api/hymind/data/tap_elective_tower.json | 34 ---- .../hymind/data/tap_nonelective_tower.json | 112 ----------- api/src/api/hymind/router.py | 150 --------------- api/src/api/main.py | 4 - web/pyproject.toml | 2 +- web/src/web/celery_config.py | 14 -- web/src/web/ids.py | 1 - .../web/pages/sitrep/callbacks/cytoscape.py | 15 -- web/src/web/pages/sitrep/callbacks/hymind.py | 29 --- web/src/web/pages/sitrep/icus.py | 2 - web/src/web/pages/sitrep/ids.py | 1 - web/src/web/stores.py | 24 --- 16 files changed, 1 insertion(+), 575 deletions(-) delete mode 100644 api/src/api/hymind/__init__.py delete mode 100644 api/src/api/hymind/data/mock_icu_discharge.json delete mode 100644 api/src/api/hymind/data/tap_elective_tower.json delete mode 100644 api/src/api/hymind/data/tap_nonelective_tower.json delete mode 100644 api/src/api/hymind/router.py delete mode 100644 web/src/web/pages/sitrep/callbacks/hymind.py diff --git a/api/src/api/config.py b/api/src/api/config.py index ea1d2bb5..784746cf 100644 --- a/api/src/api/config.py +++ b/api/src/api/config.py @@ -15,7 +15,6 @@ class Settings(BaseSettings): baserow_username: str hycastle_url: AnyHttpUrl - hymind_url: AnyHttpUrl towermail_url: AnyHttpUrl electives_tap_url: AnyHttpUrl diff --git a/api/src/api/ed/router.py b/api/src/api/ed/router.py index 93df2bca..73fa07f0 100644 --- a/api/src/api/ed/router.py +++ b/api/src/api/ed/router.py @@ -83,11 +83,6 @@ class IndividualPrediction(BaseModel): prediction_as_real: float -def _get_individual_predictions(hymind_url: str) -> pd.DataFrame: - response = requests.get(f"{hymind_url}/predictions/ed/admissions/individual") - return parse_to_data_frame(response.json()["data"], IndividualPrediction) - - def _set_next_location_text(row: pd.Series) -> str | None: if pd.isnull(row["event_datetime"]): return None @@ -105,13 +100,11 @@ def get_individual_admission_rows( ) -> list[EmergencyDepartmentPatient]: census_df = _get_census(settings.hycastle_url) features_df = _get_features(settings.hycastle_url) - predictions_df = _get_individual_predictions(settings.hymind_url) csns = census_df["csn"].tolist() next_locations_df = to_data_frame(next_locations(star_session, csns), NextLocation) output_df = pd.merge(census_df, features_df, on="csn", how="left") - output_df = pd.merge(output_df, predictions_df, on="episode_slice_id", how="left") output_df = pd.merge(output_df, next_locations_df, on="csn", how="left") output_df["next_location"] = output_df.apply( _set_next_location_text, axis="columns" diff --git a/api/src/api/hymind/__init__.py b/api/src/api/hymind/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/api/src/api/hymind/data/mock_icu_discharge.json b/api/src/api/hymind/data/mock_icu_discharge.json deleted file mode 100644 index e9ef734a..00000000 --- a/api/src/api/hymind/data/mock_icu_discharge.json +++ /dev/null @@ -1,180 +0,0 @@ -{ - "data": [ - { - "prediction_id": 212462, - "episode_slice_id": 348749, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.6312361437967234, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212463, - "episode_slice_id": 24967, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.568897064750036, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212464, - "episode_slice_id": 25046, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.20943717120843597, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212465, - "episode_slice_id": 25047, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.5481652065952456, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212466, - "episode_slice_id": 25048, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.6651552685769784, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212467, - "episode_slice_id": 25049, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.4038391831032809, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212468, - "episode_slice_id": 25050, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.4644131961734315, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212469, - "episode_slice_id": 25051, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.15455520066769748, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212470, - "episode_slice_id": 25052, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.4998251491789164, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212471, - "episode_slice_id": 25053, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.21529217295603714, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212472, - "episode_slice_id": 25054, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.23173425143098228, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212473, - "episode_slice_id": 25055, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.36483505079328593, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212474, - "episode_slice_id": 25056, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.17807324280713283, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212475, - "episode_slice_id": 25057, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.4519139563867127, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212476, - "episode_slice_id": 25058, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.2051491335410794, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212477, - "episode_slice_id": 25059, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.4784947883977132, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212478, - "episode_slice_id": 25060, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.6025113466031441, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212479, - "episode_slice_id": 25061, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.6544568295254845, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212480, - "episode_slice_id": 25062, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.680538357712315, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212481, - "episode_slice_id": 25063, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.1209233873270644, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212482, - "episode_slice_id": 25064, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.44586220271209304, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - }, - { - "prediction_id": 212483, - "episode_slice_id": 25065, - "model_name": "bournville_rf", - "model_version": 3, - "prediction_as_real": 0.31431410324053705, - "predict_dt": "2022-08-06T14:02:14.214089+01:00" - } - ] -} diff --git a/api/src/api/hymind/data/tap_elective_tower.json b/api/src/api/hymind/data/tap_elective_tower.json deleted file mode 100644 index f85803b3..00000000 --- a/api/src/api/hymind/data/tap_elective_tower.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "data": [ - { - "bed_count": 0, - "probability": 0.4886959420284716, - "predict_dt": "2022-08-08T07:51:49.250269+01:00", - "model_name": "tap_elective_tower", - "model_version": 1, - "run_id": "71f4264cd52d416fbf45ebafdb599160", - "horizon_dt": "2022-08-10T07:51:38+01:00", - "inputs": "{\"model_function\":\"binom\",\"date\":1.660114298e+18,\"icu_counts\":0,\"noticu_counts\":0,\"wkday\":2,\"N\":12}" - }, - { - "bed_count": 1, - "probability": 0.4207439348511793, - "predict_dt": "2022-08-08T07:51:49.250269+01:00", - "model_name": "tap_elective_tower", - "model_version": 1, - "run_id": "71f4264cd52d416fbf45ebafdb599160", - "horizon_dt": "2022-08-10T07:51:38+01:00", - "inputs": null - }, - { - "bed_count": 2, - "probability": 0.09056012312034903, - "predict_dt": "2022-08-08T07:51:49.250269+01:00", - "model_name": "tap_elective_tower", - "model_version": 1, - "run_id": "71f4264cd52d416fbf45ebafdb599160", - "horizon_dt": "2022-08-10T07:51:38+01:00", - "inputs": null - } - ] -} diff --git a/api/src/api/hymind/data/tap_nonelective_tower.json b/api/src/api/hymind/data/tap_nonelective_tower.json deleted file mode 100644 index 690fbe61..00000000 --- a/api/src/api/hymind/data/tap_nonelective_tower.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "data": [ - { - "bed_count": 0, - "probability": 0.018392433908071763, - "predict_dt": "2022-08-08T07:48:24.757274+01:00", - "model_name": "tap_nonelective_tower", - "model_version": 1, - "run_id": "1e44565aa34e4b16970d1e5598b9a028", - "horizon_dt": "2022-08-08T00:00:00+01:00" - }, - { - "bed_count": 1, - "probability": 0.07349277984187765, - "predict_dt": "2022-08-08T07:48:24.757274+01:00", - "model_name": "tap_nonelective_tower", - "model_version": 1, - "run_id": "1e44565aa34e4b16970d1e5598b9a028", - "horizon_dt": "2022-08-08T00:00:00+01:00" - }, - { - "bed_count": 2, - "probability": 0.14683180909831386, - "predict_dt": "2022-08-08T07:48:24.757274+01:00", - "model_name": "tap_nonelective_tower", - "model_version": 1, - "run_id": "1e44565aa34e4b16970d1e5598b9a028", - "horizon_dt": "2022-08-08T00:00:00+01:00" - }, - { - "bed_count": 3, - "probability": 0.19557095911979286, - "predict_dt": "2022-08-08T07:48:24.757274+01:00", - "model_name": "tap_nonelective_tower", - "model_version": 1, - "run_id": "1e44565aa34e4b16970d1e5598b9a028", - "horizon_dt": "2022-08-08T00:00:00+01:00" - }, - { - "bed_count": 4, - "probability": 0.1953663869868249, - "predict_dt": "2022-08-08T07:48:24.757274+01:00", - "model_name": "tap_nonelective_tower", - "model_version": 1, - "run_id": "1e44565aa34e4b16970d1e5598b9a028", - "horizon_dt": "2022-08-08T00:00:00+01:00" - }, - { - "bed_count": 5, - "probability": 0.15612962307315506, - "predict_dt": "2022-08-08T07:48:24.757274+01:00", - "model_name": "tap_nonelective_tower", - "model_version": 1, - "run_id": "1e44565aa34e4b16970d1e5598b9a028", - "horizon_dt": "2022-08-08T00:00:00+01:00" - }, - { - "bed_count": 6, - "probability": 0.10397753837856674, - "predict_dt": "2022-08-08T07:48:24.757274+01:00", - "model_name": "tap_nonelective_tower", - "model_version": 1, - "run_id": "1e44565aa34e4b16970d1e5598b9a028", - "horizon_dt": "2022-08-08T00:00:00+01:00" - }, - { - "bed_count": 7, - "probability": 0.059353585864633907, - "predict_dt": "2022-08-08T07:48:24.757274+01:00", - "model_name": "tap_nonelective_tower", - "model_version": 1, - "run_id": "1e44565aa34e4b16970d1e5598b9a028", - "horizon_dt": "2022-08-08T00:00:00+01:00" - }, - { - "bed_count": 8, - "probability": 0.02964575026188604, - "predict_dt": "2022-08-08T07:48:24.757274+01:00", - "model_name": "tap_nonelective_tower", - "model_version": 1, - "run_id": "1e44565aa34e4b16970d1e5598b9a028", - "horizon_dt": "2022-08-08T00:00:00+01:00" - }, - { - "bed_count": 9, - "probability": 0.01316210669460789, - "predict_dt": "2022-08-08T07:48:24.757274+01:00", - "model_name": "tap_nonelective_tower", - "model_version": 1, - "run_id": "1e44565aa34e4b16970d1e5598b9a028", - "horizon_dt": "2022-08-08T00:00:00+01:00" - }, - { - "bed_count": 10, - "probability": 0.005259335520230413, - "predict_dt": "2022-08-08T07:48:24.757274+01:00", - "model_name": "tap_nonelective_tower", - "model_version": 1, - "run_id": "1e44565aa34e4b16970d1e5598b9a028", - "horizon_dt": "2022-08-08T00:00:00+01:00" - }, - { - "bed_count": 11, - "probability": 0.0019104851357246483, - "predict_dt": "2022-08-08T07:48:24.757274+01:00", - "model_name": "tap_nonelective_tower", - "model_version": 1, - "run_id": "1e44565aa34e4b16970d1e5598b9a028", - "horizon_dt": "2022-08-08T00:00:00+01:00" - } - ] -} diff --git a/api/src/api/hymind/router.py b/api/src/api/hymind/router.py deleted file mode 100644 index 9d764f8d..00000000 --- a/api/src/api/hymind/router.py +++ /dev/null @@ -1,150 +0,0 @@ -import logging - -import datetime -import pandas as pd -import pytz # type: ignore -import requests -from fastapi import APIRouter, Depends, Query, Response -from pathlib import Path - -from api.config import Settings, get_settings -from api.validate import pydantic_dataframe -from models.hymind import ElTap, EmElTapPostBody, EmTap, IcuDischarge - -MOCK_ICU_DISCHARGE_DATA = ( - Path(__file__).resolve().parent / "data" / "mock_icu_discharge.json" -) -MOCK_TAP_EMERGENCY_DATA = ( - Path(__file__).resolve().parent / "data" / "tap_nonelective_tower.json" -) -MOCK_TAP_ELECTIVE_DATA = ( - Path(__file__).resolve().parent / "data" / "tap_elective_tower.json" -) - -router = APIRouter(prefix="/hymind") - -mock_router = APIRouter( - prefix="/hymind", -) - - -@router.post( - "/icu/tap/emergency/", - response_model=list[EmTap], -) -def get_emergency_icu_admission_predictions( - response: Response, - data: EmElTapPostBody, - settings: Settings = Depends(get_settings), -) -> list[EmTap]: - """Retrieve emergency icu admission predictions - - Sends a POST to the hymind non-elective tap API endpoint - Returns the result - - Args: - response (Response): FastAPI Response object - data (EmElTapPostBody): Emergency tap post body Pydantic model - settings (Settings, optional): API settings from env file. - Defaults to Depends(get_settings). - - Returns: - list[EmTap]: List of ICU Emergency tap predictions - """ - response = requests.post(f"{settings.emergency_tap_url}/predict", json=data.dict()) - rows = response.json()["data"] - return [EmTap.parse_obj(row) for row in rows] - - -@mock_router.get("/icu/tap/emergency") -def get_mock_emergency_icu_admission_predictions() -> pd.DataFrame: - """Retrieve mock ICU emergency tap predictions - - Returns: - pd.DataFrame: DataFrame of mock emergency icu admission predictions - """ - mock_dataframe = pd.read_json(MOCK_TAP_EMERGENCY_DATA) - df = pd.DataFrame.from_records(mock_dataframe["data"]) - df = pydantic_dataframe(df, EmTap) - records = df.to_dict(orient="records") - response = dict(data=records) # to match API structure {"data": List[Dict]} - return response - - -@router.post("/icu/tap/electives") -def get_elective_icu_admission_predictions( - response: Response, - data: EmElTapPostBody, - settings: Settings = Depends(get_settings), -) -> list[ElTap]: - """Retrieve elective icu admission predictions - - Sends a POST to the hymind elective tap API endpoint - Returns the result - - Args: - response (Response): FastAPI Response object - data (EmElTapPostBody): Elective tap post body Pydantic model - settings (Settings, optional): API settings from env file. - Defaults to Depends(get_settings). - - Returns: - list[ElTap]: List of ICU Elective tap predictions - """ - response = requests.post(f"{settings.electives_tap_url}/predict", json=data.dict()) - rows = response.json()["data"] - return [ElTap.parse_obj(row) for row in rows] - - -@mock_router.get("/icu/tap/electives") -def get_mock_elective_icu_admission_predictions() -> pd.DataFrame: - """Retrieve mock ICU elective tap predictions - - Returns: - pd.DataFrame: DataFrame of mock elective icu admission predictions - """ - mock_electives_dataframe = pd.read_json(MOCK_TAP_ELECTIVE_DATA) - df = pd.DataFrame.from_records(mock_electives_dataframe["data"]) - df = pydantic_dataframe(df, ElTap) - - records = df.to_dict(orient="records") - response = dict(data=records) # to match API structure {"data": List[Dict]} - return response - - -@router.get( - "/discharge/individual/{ward}/", - response_model=list[IcuDischarge], -) -def get_individual_discharge_predictions( - response: Response, - ward: str = Query(default=""), - settings: Settings = Depends(get_settings), -) -> list[IcuDischarge]: - # force to upper as expected by hymind API - ward = ward.upper() - response = requests.get( - f"{settings.hymind_url}/predictions/icu/discharge", params={"ward": ward} - ) - rows = response.json()["data"] - return [IcuDischarge.parse_obj(row) for row in rows] - - -@mock_router.get( - "/discharge/individual/{ward}/", - response_model=list[IcuDischarge], -) -def get_mock_individual_discharge_predictions( - ward: str = Query(default=""), -) -> list[IcuDischarge]: - logging.info(f"Mock predictions for {ward}") - return [ - IcuDischarge( - prediction_id=421859, - episode_slice_id=539532, - model_name="bournville_rf", - model_version=3, - prediction_as_real=0.6994126228548821, - predict_dt=datetime.datetime(2023, 1, 25, 22, 16, 24, 00, tzinfo=pytz.UTC), - ) - ] diff --git a/api/src/api/main.py b/api/src/api/main.py index 028d9a63..fab9d42e 100755 --- a/api/src/api/main.py +++ b/api/src/api/main.py @@ -22,8 +22,6 @@ from api.electives.router import router as electives_router from api.hospital.router import mock_router as mock_hospital_router from api.hospital.router import router as hospital_router -from api.hymind.router import mock_router as mock_hymind_router -from api.hymind.router import router as hymind_router from api.logger import logger from api.perrt.router import mock_router as mock_perrt_router from api.perrt.router import router as perrt_router @@ -70,8 +68,6 @@ app.include_router(consults_router) app.include_router(ros_router) -app.include_router(hymind_router) -mock_router.include_router(mock_hymind_router) # Finally include the mock router. app.include_router(mock_router) diff --git a/web/pyproject.toml b/web/pyproject.toml index 191af328..56a25a4f 100644 --- a/web/pyproject.toml +++ b/web/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta" name = "hyui-web" version = "0.0.1" dependencies = [ - "Flask == 2.2.2", + "Flask == 2.3.3", "Flask-Caching == 2.0.1", "Flask-Login == 0.6.2", "celery~=5.2.7", diff --git a/web/src/web/celery_config.py b/web/src/web/celery_config.py index 5a994ce5..61a49d13 100644 --- a/web/src/web/celery_config.py +++ b/web/src/web/celery_config.py @@ -106,20 +106,6 @@ def _sitrep_store_url(icu: str) -> str: "kwargs": {"expires": (30 * 60) + 60}, # 30 mins + 1 minute } -# add task for all hymind discharge predictions -for icu in list(SITREP_DEPT2WARD_MAPPING.values()): - kkey = f"{web_ids.HYMIND_ICU_DC_STORE}-{icu}" - url = f"{get_settings().api_url}/hymind/discharge/individual/{icu}" - beat_schedule[kkey] = { - "task": "web.celery_tasks.get_response", - "schedule": crontab(minute="*/60"), # every 60 minutes - "args": ( - url, - kkey, - ), - "kwargs": {"expires": (60 * 60) + 60}, # 60 mins + 1 minute - } - # add tasks for all census work # TODO: add tasks for all census work diff --git a/web/src/web/ids.py b/web/src/web/ids.py index 64da8c7f..6bda119c 100644 --- a/web/src/web/ids.py +++ b/web/src/web/ids.py @@ -8,4 +8,3 @@ BEDS_STORE = gen_id("beds all store", __name__) ELECTIVES_STORE = gen_id("electives all store", __name__) SITREP_STORE = gen_id("sitrep all store", __name__) -HYMIND_ICU_DC_STORE = gen_id("hymind icu dc store", __name__) diff --git a/web/src/web/pages/sitrep/callbacks/cytoscape.py b/web/src/web/pages/sitrep/callbacks/cytoscape.py index 047c33d6..78f3d0dd 100644 --- a/web/src/web/pages/sitrep/callbacks/cytoscape.py +++ b/web/src/web/pages/sitrep/callbacks/cytoscape.py @@ -40,7 +40,6 @@ def _make_elements( # noqa: C901 rooms: list[dict], beds: list[dict], sitrep: list[dict], - hymind: list[dict], discharges: list[dict], selected_dept: str | None, ward_only: bool, @@ -55,7 +54,6 @@ def _make_elements( # noqa: C901 rooms: list of room objects beds: list of bed objects (from baserow) sitrep: list of sitrep statuses (from hylode) - hymind: list of patient level discharge predictions discharges: list of discharge statuses (from baserow) selected_dept: name of dept or None if show all ward_only: True if ward_only not campus; default False @@ -93,12 +91,6 @@ def _make_elements( # noqa: C901 logger.warning("Sitrep empty: no data available") sitrep_lookup = {} - if hymind is not None: - hymind_lookup = {i.get("episode_slice_id"): i for i in hymind} - else: - logger.warning("Hymind empty: no data available") - hymind_lookup = {} - preset_map_positions = ( False if selected_dept not in SITREP_DEPT2WARD_MAPPING.keys() @@ -117,8 +109,6 @@ def _make_elements( # noqa: C901 encounter = census_lookup.get(location_string, {}).get("encounter", "") discharge_status = discharge_lookup.get(encounter, {}).get("status", "") wim = sitrep_lookup.get(encounter, {}).get("wim_1", -1) - episode_slice_id = sitrep_lookup.get(encounter, {}).get("episode_slice_id", -1) - yhat_dc = hymind_lookup.get(episode_slice_id, {}).get("prediction_as_real", -1) data = dict( id=location_string, @@ -137,7 +127,6 @@ def _make_elements( # noqa: C901 dc_status=discharge_status, wim=wim, sitrep=sitrep_lookup.get(encounter, {}), - yhat_dc=yhat_dc, ) if preset_map_positions: position = dict( @@ -239,7 +228,6 @@ def _prepare_cyto_elements_campus( rooms, beds, sitrep=[{}], - hymind=[{}], discharges=[{}], selected_dept=None, ward_only=False, @@ -256,7 +244,6 @@ def _prepare_cyto_elements_campus( Input(ids.ROOMS_OPEN_STORE, "data"), Input(ids.BEDS_STORE, "data"), Input(ids.SITREP_STORE, "data"), - Input(ids.HYMIND_DC_STORE, "data"), Input(ids.DISCHARGES_STORE, "data"), Input(ids.DEPT_SELECTOR, "value"), Input(ids.ACC_BED_SUBMIT_STORE, "data"), @@ -272,7 +259,6 @@ def _prepare_cyto_elements_ward( rooms: list[dict], beds: list[dict], sitrep: list[dict], - hymind: list[dict], discharges: list[dict], dept: str, bed_submit_store: dict, @@ -291,7 +277,6 @@ def _prepare_cyto_elements_ward( rooms, beds, sitrep, - hymind, discharges, selected_dept=dept, ward_only=True, diff --git a/web/src/web/pages/sitrep/callbacks/hymind.py b/web/src/web/pages/sitrep/callbacks/hymind.py deleted file mode 100644 index ddb67c11..00000000 --- a/web/src/web/pages/sitrep/callbacks/hymind.py +++ /dev/null @@ -1,29 +0,0 @@ -from dash import Input, Output, callback - -from loguru import logger -from typing import Any -from web import ids as store_ids -from web import SITREP_DEPT2WARD_MAPPING -from web.pages.sitrep import ids - - -@callback( - Output(ids.HYMIND_DC_STORE, "data"), - Input(ids.DEPT_SELECTOR, "value"), - Input(store_ids.HYMIND_ICU_DC_STORE, "data"), -) -def _store_hymind_dc(dept: str, hymind_dcs: dict) -> Any: - """ - Args: - dept: the department - hymind_dcs: dictionary of hymind predictions per unit - - Returns: - additonal individual level dc predictions for that ward - - """ - ward = SITREP_DEPT2WARD_MAPPING.get(dept) - if not ward: - logger.warning(f"No HyMind Discharge predictions available for {ward}") - return [{}] - return hymind_dcs[ward] diff --git a/web/src/web/pages/sitrep/icus.py b/web/src/web/pages/sitrep/icus.py index c7eb8f17..c1cbf75e 100644 --- a/web/src/web/pages/sitrep/icus.py +++ b/web/src/web/pages/sitrep/icus.py @@ -16,7 +16,6 @@ import web.pages.sitrep.callbacks.sitrep # noqa import web.pages.sitrep.callbacks.census # noqa import web.pages.sitrep.callbacks.beds # noqa -import web.pages.sitrep.callbacks.hymind # noqa from web.pages.sitrep import ids from web import SITREP_DEPT2WARD_MAPPING from web.style import replace_colors_in_stylesheet @@ -38,7 +37,6 @@ dcc.Store(id=ids.BEDS_STORE), dcc.Store(id=ids.DEPTS_OPEN_STORE_NAMES), dcc.Store(id=ids.SITREP_STORE), - dcc.Store(id=ids.HYMIND_DC_STORE), dcc.Store(id=ids.DISCHARGES_STORE), dcc.Store(id=ids.ACC_BED_SUBMIT_STORE), ] diff --git a/web/src/web/pages/sitrep/ids.py b/web/src/web/pages/sitrep/ids.py index 95779f99..10ec47d8 100644 --- a/web/src/web/pages/sitrep/ids.py +++ b/web/src/web/pages/sitrep/ids.py @@ -6,7 +6,6 @@ SITREP_STORE = gen_id("sitrep store", __name__) DISCHARGES_STORE = gen_id("discharges store", __name__) DEPT_GROUPER = gen_id("dept grouper", __name__) -HYMIND_DC_STORE = gen_id("hymind dc store", __name__) # derived stores DEPTS_OPEN_STORE = gen_id("open depts store", __name__) diff --git a/web/src/web/stores.py b/web/src/web/stores.py index 7f3eeb0f..19cd9884 100644 --- a/web/src/web/stores.py +++ b/web/src/web/stores.py @@ -10,7 +10,6 @@ from models.beds import Bed, Department, Room from models.electives import MergedData from models.sitrep import SitrepRow -from models.hymind import IcuDischarge from web import ids, SITREP_DEPT2WARD_MAPPING from web.logger import logger, logger_timeit @@ -135,28 +134,6 @@ def _store_all_sitreps(_: int) -> dict: return sitreps -@callback( - Output(ids.HYMIND_ICU_DC_STORE, "data"), - Input(ids.STORE_TIMER_1H, "n_intervals"), -) -def _store_all_hymind_dc_predictions(_: int) -> dict: - """Return hymind predictions for all areas""" - yhats = {} - - for task, conf in beat_schedule.items(): - if not task.startswith(ids.HYMIND_ICU_DC_STORE): - continue - data = _get_or_refresh_cache(task) - # FIXME: hacky way to get sitrep ICU b/c we know the 2nd arg (the key) - # is the icu url and the last component is the icu - # kkey = f"{web_ids.SITREP_STORE}-{icu}" - icu = conf.get("args")[1].split("-")[-1] # type: ignore - assert icu in SITREP_DEPT2WARD_MAPPING.values() - yhats[icu] = [IcuDischarge.parse_obj(row).dict() for row in data] - - return yhats - - web_stores = html.Div( [ dcc.Store(id=ids.DEPT_STORE), @@ -164,6 +141,5 @@ def _store_all_hymind_dc_predictions(_: int) -> dict: dcc.Store(id=ids.BEDS_STORE), dcc.Store(id=ids.ELECTIVES_STORE), dcc.Store(id=ids.SITREP_STORE), - dcc.Store(id=ids.HYMIND_ICU_DC_STORE), ] ) From 690c2a6c4778e627b8d818b370708a81cb52c64a Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Thu, 25 Jan 2024 12:15:08 +0000 Subject: [PATCH 02/27] Handle NaT values when calling floor on days_since_last_dc and update closed_perm calc --- api/src/api/census/wrangle.py | 39 +++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/api/src/api/census/wrangle.py b/api/src/api/census/wrangle.py index 52404a67..345362fb 100644 --- a/api/src/api/census/wrangle.py +++ b/api/src/api/census/wrangle.py @@ -1,3 +1,4 @@ +import numpy as np import pandas as pd import warnings @@ -49,10 +50,15 @@ def _aggregate_by_department(df: pd.DataFrame) -> pd.DataFrame: # source # placeholder: need to subtract closed from empties # res["opens"] = res["empties"] + + # Calculate days since last discharge, but handle NaT values in wards by allowing + # the quantity to be a float rather than integer + res["days_since_last_dc"] = ( + (res["modified_at"] - res["days_since_last_dc"]).dt.floor("d").dt.days + ) + # Convert remaining NaT values to -999, then convert the Series dtype to int res["days_since_last_dc"] = ( - (res["modified_at"] - res["days_since_last_dc"]) - .apply(lambda x: pd.Timedelta.floor(x, "d")) - .dt.days + res["days_since_last_dc"].replace(np.nan, -999.0).astype(int) ) # use days since last dc and there being no patients to define if a ward @@ -65,12 +71,27 @@ def _aggregate_by_department(df: pd.DataFrame) -> pd.DataFrame: ] ).T.all(axis="columns") - res["closed_perm"] = pd.DataFrame( - [ - res["days_since_last_dc"] > 30, - res["patients"] == 0, - ] - ).T.all(axis="columns") + def _closed_perm_conditions(row: pd.Series) -> bool: + """Calculate permanent closure conditions. + + Handles NaT values of days_since_last_dc, which are + converted to -999. + + Args: + row (pd.Series): Pandas DataFrame row + + Returns: + bool: Is the ward permanently closed? + """ + if row["days_since_last_dc"] > 30 and row["patients"] == 0: + closed = True + elif row["days_since_last_dc"] < 0: + closed = True + else: + closed = False + return closed + + res["closed_perm"] = res.apply(_closed_perm_conditions, axis=1) # drop closed perm # mask = ~res["closed_perm"] From d886ba93b40a33727a9ec2c2231a92dafe017e3f Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Thu, 25 Jan 2024 13:16:22 +0000 Subject: [PATCH 03/27] Add test for NaT issue in census/wrangle.py --- api/src/api/tests/test_census.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/api/src/api/tests/test_census.py b/api/src/api/tests/test_census.py index bdde1dd8..55bc0720 100644 --- a/api/src/api/tests/test_census.py +++ b/api/src/api/tests/test_census.py @@ -3,7 +3,12 @@ from api import wards from api.census.router import _fetch_mock_census -from api.census.wrangle import aggregate_by_department +from api.census.wrangle import ( + aggregate_by_department, + _aggregate_by_department, + _split_location_string, + _remove_non_beds, +) from api.main import app from fastapi.testclient import TestClient @@ -26,6 +31,19 @@ def test_aggregate_by_department() -> None: assert len(aggregated_df.index) > 0 +def test__aggregate_by_department_handles_nat() -> None: + census_rows = _fetch_mock_census(list(wards.ALL), []) + + census_df = pd.DataFrame((row.dict() for row in census_rows)) + + census_df = _split_location_string(census_df) + census_df = _remove_non_beds(census_df) + + aggregated_df = _aggregate_by_department(census_df) + + assert len(aggregated_df.index) > 0 + + def test_get_mock_departments() -> None: response = client.get("/mock/census/departments") assert response.status_code == 200 From c461b559879b3a857a753a070e82d9446b79b995 Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Thu, 25 Jan 2024 13:30:34 +0000 Subject: [PATCH 04/27] Bump fastapi --- api/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/pyproject.toml b/api/pyproject.toml index 69586d82..37352752 100644 --- a/api/pyproject.toml +++ b/api/pyproject.toml @@ -10,7 +10,7 @@ dependencies = [ "notifiers == 1.3.3", "hyui-models", "arrow == 1.2.3", - "fastapi[all] == 0.85.0", + "fastapi[all] == 0.109.0", "fastapi-utils==0.2.1", "pandas == 1.5.1", "pyodbc == 4.0.35", From 4c78d6f2eb34cbd6f5af485ad7b8a717098fab86 Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Thu, 25 Jan 2024 13:33:09 +0000 Subject: [PATCH 05/27] Allow pydantic version to float --- api/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/pyproject.toml b/api/pyproject.toml index 37352752..a04d4e65 100644 --- a/api/pyproject.toml +++ b/api/pyproject.toml @@ -15,7 +15,7 @@ dependencies = [ "pandas == 1.5.1", "pyodbc == 4.0.35", "psycopg2-binary == 2.9.5", - "pydantic == 1.10.2", + "pydantic >=1.10.2"<2.0, "SQLAlchemy == 1.4.41", "sqlmodel == 0.0.8", "uvicorn[standard] == 0.18.3", From f9e92068e9b113a708f2e9f0db6068a50ea96c4a Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Thu, 25 Jan 2024 13:35:29 +0000 Subject: [PATCH 06/27] format toml properly --- api/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/pyproject.toml b/api/pyproject.toml index a04d4e65..80901d04 100644 --- a/api/pyproject.toml +++ b/api/pyproject.toml @@ -15,7 +15,7 @@ dependencies = [ "pandas == 1.5.1", "pyodbc == 4.0.35", "psycopg2-binary == 2.9.5", - "pydantic >=1.10.2"<2.0, + "pydantic >=1.10.2<2.0", "SQLAlchemy == 1.4.41", "sqlmodel == 0.0.8", "uvicorn[standard] == 0.18.3", From 586448206bab53bdd9cd7a2bb8d3a6e1cadc1511 Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Thu, 25 Jan 2024 13:40:05 +0000 Subject: [PATCH 07/27] Format toml properly, add toml formatter to pre-commit checks --- .pre-commit-config.yaml | 4 ++++ api/pyproject.toml | 46 ++++++++++++++++++++--------------------- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f9578b0d..e6938139 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -69,3 +69,7 @@ repos: name: detect-secrets - Detect secrets in staged code args: [ "--baseline", ".secrets.baseline" ] exclude: .*/tests/.*|^\.cruft\.json|.env.example$ + - repo: https://github.com/pappasam/toml-sort + rev: v0.23.1 + hooks: + - id: toml-sort-fix diff --git a/api/pyproject.toml b/api/pyproject.toml index 80901d04..67c2f2ef 100644 --- a/api/pyproject.toml +++ b/api/pyproject.toml @@ -6,36 +6,36 @@ build-backend = "setuptools.build_meta" name = "hyui-api" version = "0.0.1" dependencies = [ - "loguru == 0.6.0", - "notifiers == 1.3.3", - "hyui-models", - "arrow == 1.2.3", - "fastapi[all] == 0.109.0", - "fastapi-utils==0.2.1", - "pandas == 1.5.1", - "pyodbc == 4.0.35", - "psycopg2-binary == 2.9.5", - "pydantic >=1.10.2<2.0", - "SQLAlchemy == 1.4.41", - "sqlmodel == 0.0.8", - "uvicorn[standard] == 0.18.3", - "scikit-learn == 1.1.3", - "imbalanced-learn == 0.10.1", - "category-encoders == 2.6.0", - "xgboost == 1.5.0", + "loguru == 0.6.0", + "notifiers == 1.3.3", + "hyui-models", + "arrow == 1.2.3", + "fastapi[all] == 0.109.0", + "fastapi-utils==0.2.1", + "pandas == 1.5.1", + "pyodbc == 4.0.35", + "psycopg2-binary == 2.9.5", + "pydantic >=1.10.2,<2.0", + "SQLAlchemy == 1.4.41", + "sqlmodel == 0.0.8", + "uvicorn[standard] == 0.18.3", + "scikit-learn == 1.1.3", + "imbalanced-learn == 0.10.1", + "category-encoders == 2.6.0", + "xgboost == 1.5.0" ] [project.optional-dependencies] test = [ - "pre-commit == 2.20.0", - "pytest == 7.1.3" + "pre-commit == 2.20.0", + "pytest == 7.1.3" ] -[tool.setuptools.package-data] -"*" = ["*.sql", "*.json", "*.db"] - [tool.pytest.ini_options] minversion = "7.1.3" testpaths = [ - "src/api/tests" + "src/api/tests" ] + +[tool.setuptools.package-data] +"*" = ["*.sql", "*.json", "*.db"] From b9d4bd342fca288c443e4bbef7571280e66ce1a5 Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Thu, 25 Jan 2024 13:43:37 +0000 Subject: [PATCH 08/27] Allow pydantic to float in all packages --- initialise/pyproject.toml | 22 +++++++------- models/pyproject.toml | 6 ++-- web/pyproject.toml | 64 +++++++++++++++++++-------------------- 3 files changed, 46 insertions(+), 46 deletions(-) diff --git a/initialise/pyproject.toml b/initialise/pyproject.toml index 02b5a7c4..124c3c22 100644 --- a/initialise/pyproject.toml +++ b/initialise/pyproject.toml @@ -6,24 +6,24 @@ build-backend = "setuptools.build_meta" name = "hyui-initialise" version = "0.0.1" dependencies = [ - "hyui-models", - "email-validator == 1.3.0", - "pandas == 1.5.1", - "psycopg2-binary == 2.9.5", - "pydantic == 1.10.2", - "pyodbc == 4.0.35", - "SQLAlchemy == 1.4.41", - "requests == 2.28.1" + "hyui-models", + "email-validator == 1.3.0", + "pandas == 1.5.1", + "psycopg2-binary == 2.9.5", + "pydantic >= 1.10.2, <2.0", + "pyodbc == 4.0.35", + "SQLAlchemy == 1.4.41", + "requests == 2.28.1" ] [project.optional-dependencies] test = [ - "pre-commit == 2.20.0", - "pytest == 7.1.3" + "pre-commit == 2.20.0", + "pytest == 7.1.3" ] [tool.pytest.ini_options] minversion = "7.1.3" testpaths = [ - "src/initialise/tests" + "src/initialise/tests" ] diff --git a/models/pyproject.toml b/models/pyproject.toml index 05e8f878..b150920f 100644 --- a/models/pyproject.toml +++ b/models/pyproject.toml @@ -6,8 +6,8 @@ build-backend = "setuptools.build_meta" name = "hyui-models" version = "0.0.1" dependencies = [ - "arrow == 1.2.3", - "pydantic == 1.10.2", + "arrow == 1.2.3", + "pydantic >= 1.10.2, <2.0" ] [project.optional-dependencies] @@ -18,5 +18,5 @@ test = [ [tool.pytest.ini_options] minversion = "7.1" testpaths = [ - "tests" + "tests" ] diff --git a/web/pyproject.toml b/web/pyproject.toml index 56a25a4f..d8176d17 100644 --- a/web/pyproject.toml +++ b/web/pyproject.toml @@ -6,45 +6,45 @@ build-backend = "setuptools.build_meta" name = "hyui-web" version = "0.0.1" dependencies = [ - "Flask == 2.3.3", - "Flask-Caching == 2.0.1", - "Flask-Login == 0.6.2", - "celery~=5.2.7", - "dash-ag-grid ~= 2.0.0", - "dash-auth ~= 2.0.0", - "dash-bootstrap-components >= 1.2.1", - "dash-cytoscape >= 0.3.0", - "dash-daq >= 0.5.0", - "dash-iconify >= 0.1.2", - "dash-mantine-components >= 0.11.1", - "dash[celery] >= 2.9.0", - "debugpy == 1.6.7", - "flower~=1.2.0", - "gevent == 22.10.2", - "gunicorn == 20.1.0", - "hyui-models", - "loguru == 0.6.0", - "notifiers == 1.3.3", - "orjson == 3.8.7", - "pandas == 1.5.1", - "pydantic == 1.10.2", - "redis~=4.5.4", - "requests == 2.28.1", - "watchfiles~=0.19.0", + "Flask == 2.3.3", + "Flask-Caching == 2.0.1", + "Flask-Login == 0.6.2", + "celery~=5.2.7", + "dash-ag-grid ~= 2.0.0", + "dash-auth ~= 2.0.0", + "dash-bootstrap-components >= 1.2.1", + "dash-cytoscape >= 0.3.0", + "dash-daq >= 0.5.0", + "dash-iconify >= 0.1.2", + "dash-mantine-components >= 0.11.1", + "dash[celery] >= 2.9.0", + "debugpy == 1.6.7", + "flower~=1.2.0", + "gevent == 22.10.2", + "gunicorn == 20.1.0", + "hyui-models", + "loguru == 0.6.0", + "notifiers == 1.3.3", + "orjson == 3.8.7", + "pandas == 1.5.1", + "pydantic >= 1.10.2, <2.0", + "redis~=4.5.4", + "requests == 2.28.1", + "watchfiles~=0.19.0" ] [project.optional-dependencies] test = [ - "pre-commit == 2.20.0", - "pytest == 7.1.3", - "types-requests == 2.28.11.2" + "pre-commit == 2.20.0", + "pytest == 7.1.3", + "types-requests == 2.28.11.2" ] -[tool.setuptools.package-data] -"*" = ["*.css", "*.ico", "*.js"] - [tool.pytest.ini_options] minversion = "7.1.3" testpaths = [ - "src/web/tests" + "src/web/tests" ] + +[tool.setuptools.package-data] +"*" = ["*.css", "*.ico", "*.js"] From e637d34dc46ccf723cabab2a81907b63059b79cc Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Thu, 25 Jan 2024 13:46:47 +0000 Subject: [PATCH 09/27] Move fastapi down to v100 to support pydantic v1 for now --- api/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/pyproject.toml b/api/pyproject.toml index 67c2f2ef..610d52d9 100644 --- a/api/pyproject.toml +++ b/api/pyproject.toml @@ -10,7 +10,7 @@ dependencies = [ "notifiers == 1.3.3", "hyui-models", "arrow == 1.2.3", - "fastapi[all] == 0.109.0", + "fastapi[all] == 0.100.0", "fastapi-utils==0.2.1", "pandas == 1.5.1", "pyodbc == 4.0.35", From 95159120d8106c8af70a1c440c509c4e48a3cc0a Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Thu, 25 Jan 2024 13:52:34 +0000 Subject: [PATCH 10/27] Revert fastapi to v0.99.1 --- api/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/pyproject.toml b/api/pyproject.toml index 610d52d9..0937189a 100644 --- a/api/pyproject.toml +++ b/api/pyproject.toml @@ -10,7 +10,7 @@ dependencies = [ "notifiers == 1.3.3", "hyui-models", "arrow == 1.2.3", - "fastapi[all] == 0.100.0", + "fastapi[all] == 0.99.1", "fastapi-utils==0.2.1", "pandas == 1.5.1", "pyodbc == 4.0.35", From 2618b527de7450f33aec23abecded24e9c4a5aff Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Thu, 25 Jan 2024 14:29:28 +0000 Subject: [PATCH 11/27] bed -> bed_id in BedRow model --- models/src/models/sitrep.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/src/models/sitrep.py b/models/src/models/sitrep.py index 337b93f6..0e5a3096 100644 --- a/models/src/models/sitrep.py +++ b/models/src/models/sitrep.py @@ -8,7 +8,7 @@ class BedRow(BaseModel): unit_order: int | None closed: bool covid: bool - bed: str + bed_id: str room: str From b3d7d438d11c1ea6ec58d0abd452296cfbccf3b2 Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Fri, 26 Jan 2024 11:43:42 +0000 Subject: [PATCH 12/27] Remove PERRT and ED from web --- web/src/web/__init__.py | 3 - web/src/web/celery_config.py | 21 - web/src/web/layout/nav.py | 28 -- web/src/web/pages/ed/__init__.py | 0 web/src/web/pages/ed/callbacks.py | 121 ----- web/src/web/pages/ed/ed.py | 67 --- web/src/web/pages/ed/ids.py | 17 - web/src/web/pages/ed/readme.md | 44 -- web/src/web/pages/electives/__init__.py | 18 - web/src/web/pages/electives/callbacks.py | 139 ------ web/src/web/pages/electives/electives.py | 195 --------- web/src/web/pages/electives/ids.py | 9 - .../pages/electives/table_style_sheet.json | 57 --- web/src/web/pages/perrt/__init__.py | 77 ---- web/src/web/pages/perrt/callbacks/__init__.py | 0 .../web/pages/perrt/callbacks/cytoscape.py | 413 ------------------ .../web/pages/perrt/callbacks/discharges.py | 29 -- .../web/pages/perrt/callbacks/inspector.py | 392 ----------------- web/src/web/pages/perrt/callbacks/widgets.py | 85 ---- web/src/web/pages/perrt/campus.py | 182 -------- web/src/web/pages/perrt/cyto_style_sheet.json | 101 ----- web/src/web/pages/perrt/ids.py | 43 -- 22 files changed, 2041 deletions(-) delete mode 100644 web/src/web/pages/ed/__init__.py delete mode 100644 web/src/web/pages/ed/callbacks.py delete mode 100644 web/src/web/pages/ed/ed.py delete mode 100644 web/src/web/pages/ed/ids.py delete mode 100644 web/src/web/pages/ed/readme.md delete mode 100644 web/src/web/pages/electives/__init__.py delete mode 100644 web/src/web/pages/electives/callbacks.py delete mode 100644 web/src/web/pages/electives/electives.py delete mode 100644 web/src/web/pages/electives/ids.py delete mode 100644 web/src/web/pages/electives/table_style_sheet.json delete mode 100644 web/src/web/pages/perrt/__init__.py delete mode 100644 web/src/web/pages/perrt/callbacks/__init__.py delete mode 100644 web/src/web/pages/perrt/callbacks/cytoscape.py delete mode 100644 web/src/web/pages/perrt/callbacks/discharges.py delete mode 100644 web/src/web/pages/perrt/callbacks/inspector.py delete mode 100644 web/src/web/pages/perrt/callbacks/widgets.py delete mode 100644 web/src/web/pages/perrt/campus.py delete mode 100644 web/src/web/pages/perrt/cyto_style_sheet.json delete mode 100644 web/src/web/pages/perrt/ids.py diff --git a/web/src/web/__init__.py b/web/src/web/__init__.py index 4ed00d82..6be39a2e 100644 --- a/web/src/web/__init__.py +++ b/web/src/web/__init__.py @@ -1,7 +1,6 @@ from pathlib import Path from web.config import get_settings from web import ids as web_ids -from web.pages.ed import ids as ed_ids FONTS_GOOGLE = "https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;900&display=swap" FONTS_FA = "https://use.fontawesome.com/releases/v5.8.1/css/all.css" @@ -16,8 +15,6 @@ web_ids.ROOM_STORE: f"{get_settings().api_url}/baserow/rooms/", web_ids.BEDS_STORE: f"{get_settings().api_url}/baserow/beds/", web_ids.ELECTIVES_STORE: f"{get_settings().api_url}/electives/", - ed_ids.PATIENTS_STORE: f"{get_settings().api_url}/ed/individual/", - ed_ids.AGGREGATE_STORE: f"{get_settings().api_url}/ed/aggregate/", } diff --git a/web/src/web/celery_config.py b/web/src/web/celery_config.py index 61a49d13..c86b9d0a 100644 --- a/web/src/web/celery_config.py +++ b/web/src/web/celery_config.py @@ -3,9 +3,6 @@ from web import API_URLS, SITREP_DEPT2WARD_MAPPING from celery.schedules import crontab from web import ids as web_ids -from web.pages.ed import ids as ed_ids - -from web.celery_tasks import replace_alphanumeric campus_url = API_URLS.get("campus_url") @@ -67,24 +64,6 @@ ), "kwargs": {"expires": (24 * 3600) + 60}, # 24 hours + 1 minute }, - ed_ids.PATIENTS_STORE: { - "task": "web.celery_tasks.get_response", - "schedule": crontab(minute="*/15"), # ev 15 minutes - "args": ( - API_URLS[ed_ids.PATIENTS_STORE], - replace_alphanumeric(API_URLS[ed_ids.PATIENTS_STORE]), - ), - "kwargs": {"expires": (15 * 60) + 60}, # ev 16 minutes - }, - ed_ids.AGGREGATE_STORE: { - "task": "web.celery_tasks.get_response", - "schedule": crontab(minute="*/15"), # ev 15 minutes - "args": ( - API_URLS[ed_ids.AGGREGATE_STORE], - replace_alphanumeric(API_URLS[ed_ids.AGGREGATE_STORE]), - ), - "kwargs": {"expires": (15 * 60) + 60}, # ev 16 minutes - }, } diff --git a/web/src/web/layout/nav.py b/web/src/web/layout/nav.py index 0e7c1cd6..5e32e070 100644 --- a/web/src/web/layout/nav.py +++ b/web/src/web/layout/nav.py @@ -38,11 +38,6 @@ class _NavLink(NamedTuple): sitrep_icus = _NavLink( title="Critical Care", path="/sitrep/icus", icon="healthicons:critical-care-outline" ) -perrt = _NavLink(title="PERRT", path="/sitrep/perrt", icon="carbon:stethoscope") - -ed_predictor = _NavLink( - title="ED Predictor", path="/ed/table", icon="carbon:machine-learning-model" -) def create_side_navbar() -> dmc.Navbar: @@ -132,29 +127,6 @@ def create_side_nave_content() -> dmc.Stack: variant="text", target="_blank", ), - dmc.Divider( - labelPosition="left", - label=[ - DashIconify( - icon="healthicons:ambulance-outline", - width=20, - style={"marginRight": 10}, - color=dmc.theme.DEFAULT_COLORS["indigo"][5], - ), - "Emergencies", - ], - my=20, - ), - create_main_nav_link( - icon=perrt.icon, - label=perrt.title, - href=perrt.path, - ), - create_main_nav_link( - icon=ed_predictor.icon, - label=ed_predictor.title, - href=ed_predictor.path, - ), dmc.Divider( labelPosition="left", label=[ diff --git a/web/src/web/pages/ed/__init__.py b/web/src/web/pages/ed/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/web/src/web/pages/ed/callbacks.py b/web/src/web/pages/ed/callbacks.py deleted file mode 100644 index 077500d6..00000000 --- a/web/src/web/pages/ed/callbacks.py +++ /dev/null @@ -1,121 +0,0 @@ -# type: ignore -from typing import Any, Dict, List - -from dash import Input, Output, callback - -from models.ed import AggregateAdmissionRow, EmergencyDepartmentPatient -from web import API_URLS -from web import ids as app_ids -from web.celery_tasks import requests_try_cache -from web.convert import parse_to_data_frame -from web.logger import logger_timeit -from web.pages.ed import ids -from web.style import colors - - -# if the time is in utc: -ts_obj = "d3.timeParse('%Y-%m-%dT%H:%M:%S%Z')(params.data.arrival_datetime)" - -cellStyle_pAdmission = { - "styleConditions": [ - { - "condition": "params.value >.75", - "style": {"backgroundColor": colors.red}, - }, - { - "condition": "params.value >.50", - "style": {"backgroundColor": colors.orange}, - }, - { - "condition": "params.value >.25", - "style": {"backgroundColor": colors.yellow}, - }, - { - "condition": "params.value <=.25", - "style": {"backgroundColor": colors.white}, - }, - ] -} -columnDefs_patients = [ - { - "headerName": "Arrived", - "field": "arrival_datetime", - "valueGetter": {"function": ts_obj}, - "valueFormatter": {"function": f"d3.timeFormat('%H:%M %a %e')({ts_obj})"}, - }, - { - "headerName": "Location", - "field": "bed", - }, - { - "headerName": "MRN", - "field": "mrn", - }, - { - "headerName": "Name", - "field": "name", - }, - { - "headerName": "Sex", - "field": "sex", - }, - { - "headerName": "DoB", - "field": "date_of_birth", - }, - { - "headerName": "P(Admission)", - "field": "admission_probability", - "valueFormatter": {"function": "d3.format(',.0%')(params.value)"}, - "cellStyle": cellStyle_pAdmission, - # "cellRenderer": "DBC_Button_Simple", - # "cellRendererParams": {"color": "success"}, - }, - { - "headerName": "Destination", - "field": "next_location", - }, -] - - -@logger_timeit() -def _get_aggregate_patients() -> list[AggregateAdmissionRow]: - url = API_URLS[ids.AGGREGATE_STORE] - data = requests_try_cache(url) - return [AggregateAdmissionRow.parse_obj(row).dict() for row in data] - - -@callback( - Output(ids.AGGREGATE_STORE, "data"), - Input(app_ids.STORE_TIMER_15M, "n_intervals"), -) -def store_aggregate_patients(n_intervals: int) -> List[Dict[str, Any]]: - if n_intervals >= 0: - return _get_aggregate_patients() - - -@logger_timeit() -def _get_individual_patients() -> list[EmergencyDepartmentPatient]: - url = API_URLS[ids.PATIENTS_STORE] - data = requests_try_cache(url) - return [EmergencyDepartmentPatient.parse_obj(row).dict() for row in data] - - -@callback( - Output(ids.PATIENTS_STORE, "data"), - Input(app_ids.STORE_TIMER_15M, "n_intervals"), -) -def store_individual_patients(n_intervals: int) -> List[Dict[str, Any]]: - if n_intervals >= 0: - return _get_individual_patients() - - -@callback( - Output(ids.PATIENTS_GRID, "rowData"), - Output(ids.PATIENTS_GRID, "columnDefs"), - Input(ids.PATIENTS_STORE, "data"), -) -def build_patients_grid(data): - df = parse_to_data_frame(data, EmergencyDepartmentPatient) - columnDefs = columnDefs_patients - return df.to_dict("records"), columnDefs diff --git a/web/src/web/pages/ed/ed.py b/web/src/web/pages/ed/ed.py deleted file mode 100644 index 9bc3a702..00000000 --- a/web/src/web/pages/ed/ed.py +++ /dev/null @@ -1,67 +0,0 @@ -import dash -import dash_ag_grid as dag -import dash_mantine_components as dmc -from dash import dcc, html - - -from web.logger import logger -from web.pages.ed import ids - -from web.pages.ed import callbacks # noqa - - -dash.register_page(__name__, path="/ed/table", name="ED") - - -logger.debug("Confirm that you have imported all the callbacks") - -grid = dag.AgGrid( - id=ids.PATIENTS_GRID, - columnSize="responsiveSizeToFit", - defaultColDef={ - # "autoSize": True, - "resizable": True, - "sortable": True, - "filter": True, - # "minWidth": 100, - # "responsiveSizeToFit": True, - # "columnSize": "sizeToFit", - }, - className="ag-theme-material", -) - -stores = html.Div( - [ - dcc.Store(id=ids.PATIENTS_STORE), - dcc.Store(id=ids.AGGREGATE_STORE), - ] -) -notifications = html.Div( - [ - # html.Div(id=ids.ACC_BED_SUBMIT_WARD_NOTIFY), - ] -) - -body = dmc.Container( - [ - dmc.Grid( - children=[ - # dmc.Col(progress, span=12), - dmc.Col(grid, span=12), - ], - ), - ], - style={"width": "100vw"}, - fluid=True, -) - - -def layout() -> dash.html.Div: - return html.Div( - children=[ - stores, - notifications, - body, - # inspector, - ] - ) diff --git a/web/src/web/pages/ed/ids.py b/web/src/web/pages/ed/ids.py deleted file mode 100644 index c3fe28c3..00000000 --- a/web/src/web/pages/ed/ids.py +++ /dev/null @@ -1,17 +0,0 @@ -from web.utils import gen_id - -# raw stores - -# controls -# CAMPUS_SELECTOR = gen_id("campus selector", __name__) - -# other -ED_TIMER = gen_id("ed timer", __name__) -PATIENTS_GRID = gen_id("patients table", __name__) -PATIENTS_STORE = gen_id("patients store", __name__) -AGGREGATE_STORE = gen_id("aggregate store", __name__) - -PROGRESS_MED = gen_id("progress med", __name__) -PROGRESS_SURG = gen_id("progress SURG", __name__) -PROGRESS_PAED = gen_id("progress PAED", __name__) -PROGRESS_HONC = gen_id("progress HONC", __name__) diff --git a/web/src/web/pages/ed/readme.md b/web/src/web/pages/ed/readme.md deleted file mode 100644 index fc60ecb5..00000000 --- a/web/src/web/pages/ed/readme.md +++ /dev/null @@ -1,44 +0,0 @@ - - -Example return from the aggregate endpoint - -```json -[ - { - "speciality": "medical", - "beds_allocated": 4, - "beds_not_allocated": 4, - "without_decision_to_admit_seventy_percent": 5, - "without_decision_to_admit_ninety_percent": 4, - "yet_to_arrive_seventy_percent": 2, - "yet_to_arrive_ninety_percent": 1 - }, - { - "speciality": "surgical", - "beds_allocated": 4, - "beds_not_allocated": 0, - "without_decision_to_admit_seventy_percent": 1, - "without_decision_to_admit_ninety_percent": 0, - "yet_to_arrive_seventy_percent": 0, - "yet_to_arrive_ninety_percent": 0 - }, - { - "speciality": "haem_onc", - "beds_allocated": 1, - "beds_not_allocated": 0, - "without_decision_to_admit_seventy_percent": 1, - "without_decision_to_admit_ninety_percent": 1, - "yet_to_arrive_seventy_percent": 0, - "yet_to_arrive_ninety_percent": 0 - }, - { - "speciality": "paediatric", - "beds_allocated": 0, - "beds_not_allocated": 0, - "without_decision_to_admit_seventy_percent": 1, - "without_decision_to_admit_ninety_percent": 0, - "yet_to_arrive_seventy_percent": 0, - "yet_to_arrive_ninety_percent": 0 - } -] -``` diff --git a/web/src/web/pages/electives/__init__.py b/web/src/web/pages/electives/__init__.py deleted file mode 100644 index f77b8ec5..00000000 --- a/web/src/web/pages/electives/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -CAMPUSES = [ - { - "value": "UNIVERSITY COLLEGE HOSPITAL CAMPUS", - "label": "UCH", - "default_dept": "UCH T03 INTENSIVE CARE", - }, - { - "value": "GRAFTON WAY BUILDING", - "label": "GWB", - "default_dept": "GWB L01 CRITICAL CARE", - }, - { - "value": "WESTMORELAND STREET", - "label": "WMS", - "default_dept": "WMS W01 CRITICAL CARE", - }, - {"value": "QUEEN SQUARE CAMPUS", "label": "NHNN", "default_dept": "NHNN C1 NCCU"}, -] diff --git a/web/src/web/pages/electives/callbacks.py b/web/src/web/pages/electives/callbacks.py deleted file mode 100644 index 94d90154..00000000 --- a/web/src/web/pages/electives/callbacks.py +++ /dev/null @@ -1,139 +0,0 @@ -from dash import Input, Output, callback - -from web.pages.electives import ids, CAMPUSES -from web.stores import ids as store_ids - -import textwrap -from datetime import datetime - - -@callback( - Output(ids.ELECTIVES_TABLE, "data"), - Output(ids.ELECTIVES_TABLE, "filter_query"), - Input(ids.CAMPUS_SELECTOR, "value"), - Input(store_ids.ELECTIVES_STORE, "data"), - Input("date_selector", "value"), - Input("pacu_selector", "value"), -) -def _store_electives( - campus: str, electives: list[dict], date: str, pacu_selection: bool -) -> tuple[list[dict], str]: - icu_cut_off = 0.5 - preassess_date_cut_off = 90 - - campus_dict = {i.get("value"): i.get("label") for i in CAMPUSES} - - # filter by campus - electives = [ - row - for row in electives - if campus_dict.get(campus, "") in row["department_name"] - ] - - # filter by surgical date - if date is not None: - electives = [ - row - for row in electives - if row["surgery_date"] >= date[0] and row["surgery_date"] <= date[1] - ] - - # add row_ids after these filters - i = 0 - for row in electives: - row["id"] = i - i += 1 - - # add front-end columns - - row["full_name"] = "{first_name} {last_name}".format(**row) - row["age_sex"] = "{age_in_years}{sex[0]}".format(**row) - - if row["pacu"] and row["icu_prob"] > icu_cut_off: - row["pacu_yn"] = "✅ BOOKED" - elif row["pacu"] and row["icu_prob"] <= icu_cut_off: - row["pacu_yn"] = "✅ BOOKED" # "✅🤷BOOKED" - elif not row["pacu"] and row["icu_prob"] > icu_cut_off: - row["pacu_yn"] = "⚠️Not booked" - else: - row["pacu_yn"] = "🏥 No" - - preassess_in_advance = ( - datetime.strptime(row["surgery_date"], "%Y-%m-%d").date() - - datetime.strptime(row["preassess_date"], "%Y-%m-%d").date() - ).days - - if preassess_in_advance <= preassess_date_cut_off and ( - row["pac_dr_review"] is not None - or row["pac_nursing_outcome"] in ("OK to proceed", "Fit for surgery", None) - ): - row["preassess_status"] = f"✅{row['preassess_date']}" - else: - row["preassess_status"] = f"⚠️{row['preassess_date']}" - - filter_query = ( - f"{{pacu_yn}} scontains {pacu_selection}" if pacu_selection is not None else "" - ) - - return electives, filter_query - - -@callback( - Output("patient_info_box", "children"), - Input(ids.ELECTIVES_TABLE, "data"), - Input(ids.ELECTIVES_TABLE, "active_cell"), - Input(store_ids.ELECTIVES_STORE, "data"), -) -def _make_info_box( - current_table: list[dict], active_cell: dict, electives: list[dict] -) -> str: - """ - Outputs text for the patient_info_box. - If no cell is selected, automatically first patient. - info_box_width is number of characters. - """ - info_box_width = 65 - - if active_cell is None: - patient_mrn = current_table[0]["primary_mrn"] - else: - patient_mrn = current_table[active_cell["row_id"]]["primary_mrn"] - pt = [row for row in electives if row["primary_mrn"] == patient_mrn][0] - - string = """FURTHER INFORMATION - Name: {first_name} {last_name}, {age_in_years}{sex[0]} - MRN: {primary_mrn} - Operation ({surgery_date}): {patient_friendly_name} - -PACU: - Booked for PACU: {pacu} - Original surgical booking destination: {booked_destination} - Destination on preassessment clinic booking: {pacdest} - Protocolised Admission: {protocolised_adm} - -PREASSESSMENT: - Preassessment note started: {preassess_date} - Nursing outcome: {pac_nursing_outcome} - Anaesthetic review: {pac_dr_review} - Nursing issues: {pac_nursing_issues} - -EPIC MEDICAL HISTORY: - {display_string} - Maximum BMI: {bmi_max_value}. - -ECHOCARDIOGRAPHY: - {first_name} has had {num_echo} echos, - of which {abnormal_echo} were flagged as abnormal. - Last echo ({last_echo_date}): {last_echo_narrative} -""".format( - **pt - ) - - return "\n".join( - [ - textwrap.fill( - x, info_box_width, initial_indent="", subsequent_indent=" " - ) - for x in string.split("\n") - ] - ) diff --git a/web/src/web/pages/electives/electives.py b/web/src/web/pages/electives/electives.py deleted file mode 100644 index c56cfbb9..00000000 --- a/web/src/web/pages/electives/electives.py +++ /dev/null @@ -1,195 +0,0 @@ -import dash -import dash_mantine_components as dmc -import json -from dash import dash_table as dtable, html -from pathlib import Path -from datetime import date, timedelta - -import web.pages.electives.callbacks # noqa -from web.pages.electives import CAMPUSES, ids -from web.style import replace_colors_in_stylesheet - - -import logging - -logger = logging.getLogger(__name__) -logger.debug("Confirm that you have imported all the callbacks") - -dash.register_page(__name__, path="/surgery/electives", name="Electives") - -with open(Path(__file__).parent / "table_style_sheet.json") as f: - table_style_sheet = json.load(f) - table_style_sheet = replace_colors_in_stylesheet(table_style_sheet) - -timers = html.Div([]) -stores = html.Div( - [ - # dcc.Store(id=ids.CENSUS_STORE), - ] -) -notifications = html.Div( - [ - # html.Div(id=ids.ACC_BED_SUBMIT_WARD_NOTIFY), - ] -) - -campus_selector = html.Div( - [ - dmc.SegmentedControl( - id=ids.CAMPUS_SELECTOR, - value=[i.get("value") for i in CAMPUSES if i.get("label") == "UCH"][0], - data=CAMPUSES, - persistence=True, - persistence_type="local", - ), - ] -) -pacu_selector = html.Div( - [ - dmc.SegmentedControl( - id="pacu_selector", - value="", - data=[ - { - "value": "", - "label": "All", - }, - { - "value": "BOOKED", - "label": "PACU", - }, - { - "value": "No", - "label": "Not PACU", - }, - ], - persistence=True, - persistence_type="local", - ), - ] -) - -date_selector = html.Div( - # dmc.Tooltip( - # label="Double-click on a date to select a single day", - # multiline=True, - # position="top", - # openDelay=500, - # children=[ - dmc.DateRangePicker( - id="date_selector", - minDate=date.today(), - maxDate=date.today() + timedelta(days=10), - allowSingleDateInRange=True, - fullWidth=True, - value=[date.today(), (date.today() + timedelta(days=3))], - ), - # ], - # ) -) - - -electives_list = dmc.Paper( - dtable.DataTable( - id=ids.ELECTIVES_TABLE, - columns=[ - {"id": "surgery_date", "name": "Date"}, - {"id": "pacu_yn", "name": "PACU"}, - {"id": "preassess_status", "name": "Preassessment"}, - {"id": "full_name", "name": "Full Name"}, - {"id": "age_sex", "name": "Age / Sex"}, - {"id": "patient_friendly_name", "name": "Operation"}, - {"id": "primary_mrn", "name": "MRN"}, - {"id": "room_name", "name": "Theatre"}, - # {"id": "abnormal_echo", "name": "abnormal_echo"}, - # { - # "id": "icu_prob", - # "name": "prediction", - # "type": "numeric", - # "format": {"specifier": ".1f"}, - # }, - ], - # data=[], - style_table={"overflowX": "scroll"}, - style_as_list_view=True, # remove col lines - style_cell={ - "fontSize": 11, - "padding": "5px", - }, - style_cell_conditional=table_style_sheet, - style_data={"color": "black", "backgroundColor": "white"}, - # striped rows - markdown_options={"html": True}, - persistence=False, - persisted_props=["data"], - sort_action="native", - filter_action="native", - filter_query="", - ), - shadow="lg", - p="md", # padding - withBorder=True, -) - -patient_info_box = dmc.Paper(dmc.Code(id="patient_info_box", block=True)) - -debug_inspector = dmc.Container( - [ - dmc.Spoiler( - children=[ - dmc.Prism( - language="json", - # id=ids.DEBUG_NODE_INSPECTOR_WARD, children="" - ) - ], - showLabel="Show more", - hideLabel="Hide", - maxHeight=100, - ) - ] -) - -inspector = html.Div( - [ - # dmc.Modal( - # id=ids.INSPECTOR_WARD_MODAL, - # centered=True, - # padding="xs", - # size="60vw", - # overflow="inside", - # overlayColor=colors.gray, - # overlayOpacity=0.5, - # transition="fade", - # transitionDuration=0, - # children=[bed_inspector], - # ) - ] -) - -body = dmc.Container( - [ - dmc.Grid( - children=[ - dmc.Col(pacu_selector, span=4), - dmc.Col(campus_selector, span=3), - dmc.Col(date_selector, span=5), - dmc.Col(electives_list, span=7), - dmc.Col(patient_info_box, span=5), - ], - ), - ], - style={"width": "100vw"}, - fluid=True, -) - - -def layout() -> dash.html.Div: - return html.Div( - children=[ - timers, - stores, - notifications, - body, - inspector, - ] - ) diff --git a/web/src/web/pages/electives/ids.py b/web/src/web/pages/electives/ids.py deleted file mode 100644 index 96f7922c..00000000 --- a/web/src/web/pages/electives/ids.py +++ /dev/null @@ -1,9 +0,0 @@ -from web.utils import gen_id - -# raw stores - -# controls -CAMPUS_SELECTOR = gen_id("campus selector", __name__) - -# other -ELECTIVES_TABLE = gen_id("electives table", __name__) diff --git a/web/src/web/pages/electives/table_style_sheet.json b/web/src/web/pages/electives/table_style_sheet.json deleted file mode 100644 index 0c441b50..00000000 --- a/web/src/web/pages/electives/table_style_sheet.json +++ /dev/null @@ -1,57 +0,0 @@ -[ - { - "if": { - "column_id": "surgery_date" - }, - "textAlign": "left", - "fontWeight": "bold" - }, - { - "if": { - "column_id": "pacu_yn" - }, - "fontWeight": "bold", - "textAlign": "left", - "width": "5vw", - "minWidth": "2vw", - "maxWidth": "5vw", - "whitespace": "normal" - }, - { - "if": { - "column_id": "age_sex" - }, - "textAlign": "centre" - }, - { - "if": { - "column_id": "primary_service" - }, - "textAlign": "left", - "width": "15vw" - }, - { - "if": { - "column_id": "patient_friendly_name" - }, - "textAlign": "left", - "height": "auto", - "whitespace": "normal", - "maxWidth": "20vw" - }, - { - "if": { - "column_id": "primary_mrn" - }, - "textAlign": "left", - "font-family": "monospace" - }, - { - "if": { - "column_id": "icu_prob" - }, - "textAlign": "centre", - "fontWeight": "italics", - "width": "2vw" - } -] diff --git a/web/src/web/pages/perrt/__init__.py b/web/src/web/pages/perrt/__init__.py deleted file mode 100644 index fb4dded8..00000000 --- a/web/src/web/pages/perrt/__init__.py +++ /dev/null @@ -1,77 +0,0 @@ -CAMPUSES = [ - { - "value": "UNIVERSITY COLLEGE HOSPITAL CAMPUS", - "label": "UCH", - "default_dept": "UCH T03 INTENSIVE CARE", - }, - { - "value": "GRAFTON WAY BUILDING", - "label": "GWB", - "default_dept": "GWB L01 CRITICAL CARE", - }, - { - "value": "WESTMORELAND STREET", - "label": "WMS", - "default_dept": "WMS W01 CRITICAL CARE", - }, - {"value": "QUEEN SQUARE CAMPUS", "label": "NHNN", "default_dept": "NHNN C1 NCCU"}, -] - -SITREP_DEPT2WARD_MAPPING: dict = { - "UCH T03 INTENSIVE CARE": "T03", - "UCH T06 SOUTH PACU": "T06", - "GWB L01 CRITICAL CARE": "GWB", - "WMS W01 CRITICAL CARE": "WMS", - "NHNN C0 NCCU": "NCCU0", - "NHNN C1 NCCU": "NCCU1", -} - -NEWS_SCORE_COLORS = { - "1": "rgb(189, 230, 175)", - "2": "rgb(189, 230, 175)", - "3": "rgb(189, 230, 175)", - "4": "rgb(189, 230, 175)", - "5": "rgb(247, 215, 172)", - "6": "rgb(247, 215, 172)", - "7": "rgb(240, 158, 158)", - "8": "rgb(240, 158, 158)", - "9": "rgb(240, 158, 158)", - "10": "rgb(240, 158, 158)", - "11": "rgb(240, 158, 158)", - "12": "rgb(240, 158, 158)", - "13": "rgb(240, 158, 158)", - "14": "rgb(240, 158, 158)", - "15": "rgb(240, 158, 158)", - "16": "rgb(240, 158, 158)", - "17": "rgb(240, 158, 158)", - "18": "rgb(240, 158, 158)", - "19": "rgb(240, 158, 158)", - "20": "rgb(240, 158, 158)", - "21": "rgb(240, 158, 158)", - "22": "rgb(240, 158, 158)", - "23": "rgb(240, 158, 158)", -} - -DISCHARGE_DECISIONS = [ - dict(label="HOLD", value="blocked", description="Not for discharge"), - dict( - label="REVIEW", - value="review", - description="Review for possible " "discharge later", - ), - dict( - label="DISCHARGE", - value="discharge", - description="Ready for " "discharge " "now", - ), - dict( - label="EXCELLENCE", - value="excellence", - description="Excellence in " "the " "End of Life " "pathway", - ), - dict( - label="BLOCKED", - value="blocked", - description="Block the bed (not " "available for " "admissions)", - ), -] diff --git a/web/src/web/pages/perrt/callbacks/__init__.py b/web/src/web/pages/perrt/callbacks/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/web/src/web/pages/perrt/callbacks/cytoscape.py b/web/src/web/pages/perrt/callbacks/cytoscape.py deleted file mode 100644 index f3c04708..00000000 --- a/web/src/web/pages/perrt/callbacks/cytoscape.py +++ /dev/null @@ -1,413 +0,0 @@ -import pandas as pd -import warnings -from dash import Input, Output, callback -from datetime import datetime -from typing import Tuple - -from models.census import CensusRow -from web.config import get_settings -from web.pages.perrt import CAMPUSES, ids -from web.stores import ids as store_ids -from web.celery_tasks import requests_try_cache - -DEBUG = True - - -@callback( - Output(ids.DEPTS_OPEN_STORE, "data"), - Input(ids.CAMPUS_SELECTOR, "value"), - Input(store_ids.DEPT_STORE, "data"), -) -def _store_depts(campus: str, depts: list[dict]) -> list[dict]: - """Need a list of departments for this building""" - try: - these_depts = [dept for dept in depts if dept.get("location_name") == campus] - except TypeError as e: - print(e) - warnings.warn(f"No departments found at {campus} campus") - these_depts = [] - return these_depts - - -@callback( - Output(ids.DEPTS_OPEN_STORE_NAMES, "data"), - Input(ids.DEPTS_OPEN_STORE, "data"), -) -def _dept_open_store_names(depts_open: list[dict]) -> list[str]: - return [i.get("department", {}) for i in depts_open] - - -@callback( - Output(ids.ROOMS_OPEN_STORE, "data"), - Input(ids.DEPTS_OPEN_STORE, "data"), - Input(store_ids.ROOM_STORE, "data"), -) -def _store_rooms( - depts: list[dict], - rooms: list[dict], -) -> list[dict]: - """Need a list of rooms for this building""" - dfdepts = pd.DataFrame.from_records(depts) - dfdepts = dfdepts[["department", "hl7_department"]] - dfrooms = pd.DataFrame.from_records(rooms) - # default inner join drops rooms not in the selected departments - dfrooms = dfrooms.merge(dfdepts, on="department") - # drop closed rooms - dfrooms = dfrooms.loc[~dfrooms["closed"], :] - - return dfrooms.to_dict(orient="records") # type: ignore - - -@callback( - Output(ids.BEDS_STORE, "data"), - Input(ids.DEPTS_OPEN_STORE, "data"), - Input(ids.ROOMS_OPEN_STORE, "data"), - Input(store_ids.BEDS_STORE, "data"), -) -def _store_beds( - depts: list[dict], - rooms: list[dict], - beds: list[dict], -) -> list[dict]: - """ - Return a list of beds using the local filtered versions of depts/rooms - - generate the floor_index from the bed_number to permit appropriate sorting - """ - - bedsdf = pd.DataFrame.from_records(beds) - dfdepts = pd.DataFrame.from_records(depts) - dfrooms = pd.DataFrame.from_records(rooms) - - dfdepts = dfdepts[["department", "floor_order"]] - - # drop beds where rooms are closed - # look for bays where all beds are closed - dft = bedsdf.groupby("hl7_room")["closed"].all() - dft = pd.DataFrame(dft).reset_index() - dft.rename(columns={"closed": "closed_all_beds"}, inplace=True) - dfrooms = dfrooms.merge(dft, on="hl7_room") - - # now close a room if any of the following are true - dfrooms["closed"] = dfrooms["closed"] | dfrooms["closed_all_beds"] - dfrooms.drop(columns=["closed_all_beds"], inplace=True) - # drop closed rooms - dfrooms = dfrooms.loc[~dfrooms["closed"], :] - dfrooms = dfrooms[["hl7_room", "is_sideroom"]] - - # inner join to drop rooms without beds - bedsdf = bedsdf.merge(dfrooms, on="hl7_room", how="inner") - # inner join to drop closed_perm_01 - bedsdf = bedsdf.merge(dfdepts, on="department", how="inner") - - bedsdf = bedsdf[bedsdf["bed_number"] != -1] - bedsdf = bedsdf[~bedsdf["closed"]] - - def _gen_floor_indices(df: pd.DataFrame) -> pd.DataFrame: - # now generate floor_y_index - df.sort_values( - ["floor", "floor_order", "department", "bed_number"], inplace=True - ) - floor_depts = df[["floor", "floor_order", "department"]].drop_duplicates() - floor_depts.sort_values(["floor", "floor_order"], inplace=True) - floor_depts["floor_y_index"] = floor_depts.reset_index().index + 1 - df = df.merge(floor_depts, how="left") - - # create a floor x_index by sorting and ranking within floor_y_index - df.sort_values(["floor_y_index", "bed_number"], inplace=True) - df["floor_x_index"] = df.groupby("floor_y_index")["bed_number"].rank( - method="first", na_option="keep" - ) - df.sort_values(["location_string"], inplace=True) - return df - - bedsdf = _gen_floor_indices(bedsdf) - - res: list[dict] = bedsdf.to_dict(orient="records") - return res - - -@callback( - Output(ids.CENSUS_STORE, "data"), - Input(ids.CAMPUS_SELECTOR, "value"), - Input(ids.DEPTS_OPEN_STORE_NAMES, "data"), -) -def _store_census( - campus: str, - depts_open_names: list[str], -) -> list[dict]: - """ - Store CensusRow as list of dictionaries after filtering out closed - departments for that building - Args: - campus: one of UCH/WMS/GWB/NHNN - depts_open_names: list of departments that are open - - Returns: - Filtered list of CensusRow dictionaries - - """ - campus_short_name = next( - i.get("label") for i in CAMPUSES if i.get("value") == campus - ) - - # Drop in replacement for requests.get that uses the redis cache - # response = requests.get( - # f"{get_settings().api_url}/census/campus/", - # params={"campuses": campus_short_name}, - # ) - url = f"{get_settings().api_url}/census/campus/" - params = {"campuses": campus_short_name} - data = requests_try_cache(url, params=params) - - res = [CensusRow.parse_obj(row).dict() for row in data] - res = [row for row in res if row.get("department") in depts_open_names] - return res - - -@callback( - Output(ids.NEWS_STORE, "data"), - Input(ids.CENSUS_STORE, "data"), - prevent_initial_callback=True, -) -def _store_news(census: list[dict]) -> list[dict]: - """ - Use the census store to provide the CSNs to query additional data - Args: - census: - - Returns: - NEWS score for each patient in the CENSUS - """ - csn_list = [i.get("encounter") for i in census if i.get("occupied")] # type: ignore - - url = f"{get_settings().api_url}/perrt/vitals/wide" - params = {"encounter_ids": csn_list} - data = requests_try_cache(url, params=params) - - newsdf = pd.DataFrame.from_records(data) - # TODO: simpplify: you just want the most recent and highest NEWS score - # and its timestamp - - news: list[dict] = newsdf.to_dict(orient="records") - return news - - -@callback( - Output(ids.PREDICTIONS_STORE, "data"), - Input(ids.CENSUS_STORE, "data"), -) -def _store_predictions(census: list[dict]) -> dict: - """ - Use the census store to provide the CSNs to query admission prediction data - Args: - census: - - Returns: - Admission prediction data for each patient in the CENSUS,if it exists, - NULL otherwise - """ - hv_id_list = [i.get("ovl_hv_id") for i in census if i.get("occupied")] - url = f"{get_settings().api_url}/perrt/icu_admission_prediction" - params = {"hospital_visit_ids": hv_id_list} # type: ignore - predictions = requests_try_cache(url, params=params) - - return predictions # type: ignore - - -@callback( - [ - Output(ids.DEPT_SELECTOR, "data"), - Output(ids.DEPT_SELECTOR, "value"), - ], - Input(ids.DEPTS_OPEN_STORE_NAMES, "data"), - Input(ids.CAMPUS_SELECTOR, "value"), -) -def _dept_select_control(depts: list[str], campus: str) -> Tuple[list[str], str]: - """Populate select input with data (dept name) and default value""" - default = [i.get("default_dept", "") for i in CAMPUSES if i.get("value") == campus][ - 0 - ] - return depts, default - - -def _make_elements( # noqa: C901 - census: list[dict], - depts: list[dict], - beds: list[dict], - news: list[dict], - predictions: dict, -) -> list[dict]: - """ - Logic to create elements for cyto map - - Args: - census: list of bed status objects with occupancy (census) - depts: list of dept objects - beds: list of bed objects (from baserow) - - Returns: - list of elements for cytoscape map - """ - - # Start with an empty list of elements to populate - elements = list() - - # define the 'height' of the map - y_index_max = max([bed.get("floor_y_index", -1) for bed in beds]) - census_lookup = {i.get("location_string"): i for i in census} - news_lookup = {i.get("encounter"): i for i in news} - - # create beds - for bed in beds: - department = bed.get("department") - location_string = bed.get("location_string") - - occupied = census_lookup.get(location_string, {}).get("occupied", False) - encounter = census_lookup.get(location_string, {}).get("encounter", "") - hospital_visit_id = census_lookup.get(location_string, {}).get( - "ovl_hv_id", None - ) - news_wide: dict = news_lookup.get(encounter, {}) # type: ignore - - # Hospital_visit_ids are integers, but the dictionary uses strings for keys. - # Lookup using a string to be safe - # Don't get the prediction if the bed isn't occupied - admission_prediction = ( - predictions.get(str(hospital_visit_id), None) if occupied else None - ) - - def _max_news_wide(row: dict) -> int: - if not row: - return -1 - scale_1_max = row.get("news_scale_1_max", -1) - scale_2_max = row.get("news_scale_2_max", -1) - max_news: int = max( - i for i in [-1, scale_1_max, scale_2_max] if i is not None - ) - - return max_news - - data = dict( - id=location_string, - bed_number=bed.get("bed_number"), - bed_index=bed.get("bed_index"), - department=department, - floor=bed.get("floor"), - entity="bed", - parent=bed.get("department"), - bed=bed, - census=census_lookup.get(location_string, {}), - closed=bed.get("closed"), - blocked=bed.get("blocked"), - occupied=occupied, - encounter=encounter, - news=news_wide, - news_max=_max_news_wide(news_wide), - admission_prediction=admission_prediction, - ) - position = dict( - x=bed.get("floor_x_index", -1) * 40, - y=(y_index_max - bed.get("floor_y_index", -1)) * 60, - ) - elements.append( - dict( - data=data, - position=position, - grabbable=True, - selectable=True, - locked=False, - ) - ) - - for dept in depts: - dept_name = dept.get("department") - data = dict( - id=dept_name, - label=dept_name, - entity="department", - dept=dept, - parent=dept.get("location_name"), - ) - elements.append( - dict( - data=data, - grabbable=True, - selectable=True, - locked=False, - selected=False, - ) - ) - - # Sort elements by floor/dept/bed_number: NB: make a tuple for the sort - # https://stackoverflow.com/a/33893264/992999 - elements = sorted( - elements, - key=lambda e: ( - e.get("data").get("entity", ""), # type: ignore - e.get("data").get("department", ""), # type: ignore - e.get("data").get("bed_number", ""), # type: ignore - ), - ) # type: ignore - return elements - - -@callback( - Output(ids.CYTO_CAMPUS, "elements"), - Input(ids.CENSUS_STORE, "data"), - Input(ids.DEPTS_OPEN_STORE, "data"), - Input(ids.BEDS_STORE, "data"), - Input(ids.NEWS_STORE, "data"), - Input(ids.PREDICTIONS_STORE, "data"), - prevent_initial_call=True, -) -def _prepare_cyto_elements_campus( - census: list[dict], - depts: list[dict], - beds: list[dict], - news: list[dict], - predictions: dict, -) -> list[dict]: - """ - Build the element list from pts/beds/rooms/depts for the map - """ - elements = _make_elements(census, depts, beds, news, predictions) - return elements - - -def format_census(census: dict) -> dict: - """Given a census object return a suitably formatted dictionary""" - mrn = census.get("mrn", "") - encounter = str(census.get("encounter", "")) - lastname = census.get("lastname", "").upper() - firstname = census.get("firstname", "").title() - initials = ( - f"{census.get('firstname', '?')[0]}" - f"" - f"" - f"" - f"{census.get('lastname', '?')[0]}" - ) - date_of_birth = census.get("date_of_birth", "1900-01-01") # default dob - dob = datetime.fromisoformat(date_of_birth) - dob_fshort = datetime.strftime(dob, "%d-%m-%Y") - dob_flong = datetime.strftime(dob, "%d %b %Y") - age = int((datetime.utcnow() - dob).days / 365.25) - sex = census.get("sex") - if sex is None: - sex = "" - else: - sex = "M" if sex.lower() == "m" else "F" - - return dict( - mrn=mrn, - encounter=encounter, - lastname=lastname, - firstname=firstname, - initials=initials, - dob=dob, - dob_fshort=dob_fshort, - dob_flong=dob_flong, - age=age, - sex=sex, - demographic_slug=f"{firstname} {lastname} | {age}{sex} | MRN {mrn}", - ) diff --git a/web/src/web/pages/perrt/callbacks/discharges.py b/web/src/web/pages/perrt/callbacks/discharges.py deleted file mode 100644 index 456cc582..00000000 --- a/web/src/web/pages/perrt/callbacks/discharges.py +++ /dev/null @@ -1,29 +0,0 @@ -""" -Module to manage the CRUD of discharge status -""" -import requests -from pydantic import BaseModel -from typing import Tuple - -from models.beds import DischargeStatus -from web.config import get_settings -from web.convert import parse_to_data_frame - - -def post_discharge_status(csn: int, status: str) -> Tuple[int, DischargeStatus]: - status = status.lower() - response = requests.post( - url=f"{get_settings().api_url}/baserow/discharge_status", - params={"csn": csn, "status": status}, # type: ignore - ) - return response.status_code, DischargeStatus.parse_obj(response.json()) - - -def _most_recent_row_only( - rows: list[dict], groupby_col: str, timestamp_col: str, data_model: BaseModel -) -> list[dict]: - df = parse_to_data_frame(rows, data_model) - # remove duplicates here - df = df.sort_values(timestamp_col, ascending=False) - df = df.groupby(groupby_col).head(1) - return df.to_dict(orient="records") # type: ignore diff --git a/web/src/web/pages/perrt/callbacks/inspector.py b/web/src/web/pages/perrt/callbacks/inspector.py deleted file mode 100644 index 55de5096..00000000 --- a/web/src/web/pages/perrt/callbacks/inspector.py +++ /dev/null @@ -1,392 +0,0 @@ -import dash -import dash_mantine_components as dmc -import json -from dash import Input, Output, State, callback, callback_context -from dash_iconify import DashIconify -from typing import Any, Tuple -from datetime import datetime - -from web.pages.perrt import DISCHARGE_DECISIONS, ids -from web.pages.perrt.callbacks.cytoscape import format_census -from web.pages.perrt.callbacks.discharges import post_discharge_status -from web.style import colors - -DEBUG = True - - -def _format_tapnode(data: dict | None) -> str: - """JSON dump of data from node (for debugging inspector""" - if data: - # remove the style part of tapNode for readabilty - data.pop("style", None) - return json.dumps(data, indent=4) - - -def _create_accordion_item(control: Any, panel: Any) -> Any: - return [dmc.AccordionControl(control), dmc.AccordionPanel(panel)] - - -@callback( - [ - Output(ids.SIDEBAR_CONTENT, "hidden"), - Output(ids.INSPECTOR_CAMPUS_ACCORDION, "value"), - Output(ids.SIDEBAR_TITLE, "children"), - ], - Input(ids.CYTO_CAMPUS, "selectedNodeData"), - prevent_initial_callback=True, -) -def update_patient_sidebar(nodes: list[dict]) -> Tuple[bool, list[str], dmc.Group]: - """ - Open modal - prepare modal title - define which accordion item is open - """ - click_title = dmc.Group( - [ - DashIconify( - icon="material-symbols:left-click-rounded", - color=colors.indigo, - width=30, - ), - dmc.Text("Click on a bed for more information", weight=500), - ] - ) - - if not nodes or len(nodes) != 1: - return True, [], dmc.Group(click_title) - - data = nodes[0] - if data.get("entity") != "bed": - return True, ["bed"], dmc.Group(click_title) - - bed = data.get("bed") # type: ignore - bed_color = colors.orange if data.get("occupied") else colors.gray - bed_number = bed.get("bed_number") # type: ignore - department = bed.get("department") # type: ignore - - bed_title = dmc.Group( - [ - DashIconify( - icon="carbon:hospital-bed", - color=bed_color, - width=30, - ), - dmc.Text(f"BED {bed_number}", weight=500), - dmc.Text(f"{department}", color=colors.gray), - ], - pb=20, - ) - - return False, ["bed"], bed_title - - -@callback( - Output(ids.ACCORDION_ITEM_PERRT, "children"), - Input(ids.CYTO_CAMPUS, "selectedNodeData"), - prevent_initial_call=True, -) -def perrt_accordion_item( - nodes: list[dict], -) -> Tuple[dmc.AccordionControl, dmc.AccordionPanel]: - """Prepare content for PERRT accordion item""" - control, panel = None, None - if not nodes or len(nodes) != 1: - return dmc.AccordionControl(control), dmc.AccordionPanel(panel) - - data = nodes[0] - if data.get("entity") != "bed": - return dmc.AccordionControl(control), dmc.AccordionPanel(panel) - - news = data.get("news", {}) - admission_prediction = data.get("admission_prediction", {}) - - if admission_prediction: - pred_text = dmc.Text("ICU admission probability") - pred_content = dmc.Group( - dmc.Badge( - f"{round(100 * admission_prediction)}%", - color="orange", - variant="filled", - ) - ) - else: - pred_text = dmc.Text("ICU admission probability not available") - pred_content = dmc.Group() - - if news: - news_text = dmc.Text("Highest/lowest vitals within the last 6 hours") - news_content = dmc.Group( - [ - dmc.Stack( - [ - dmc.Badge("HR", color=colors.indigo, variant="outline"), - dmc.Badge( - news.get("pulse_max"), color=colors.indigo, variant="filled" - ), - dmc.Badge( - news.get("pulse_min"), color=colors.indigo, variant="filled" - ), - ] - ), - dmc.Stack( - [ - dmc.Badge("RR", color=colors.indigo, variant="outline"), - dmc.Badge( - news.get("resp_max"), color=colors.indigo, variant="filled" - ), - dmc.Badge( - news.get("resp_min"), color=colors.indigo, variant="filled" - ), - ] - ), - dmc.Stack( - [ - dmc.Badge("BP", color=colors.indigo, variant="outline"), - dmc.Badge( - news.get("bp_max"), color=colors.indigo, variant="filled" - ), - dmc.Badge( - news.get("bp_min"), color=colors.indigo, variant="filled" - ), - ] - ), - dmc.Stack( - [ - dmc.Badge("SpO2", color=colors.indigo, variant="outline"), - dmc.Badge( - news.get("spo2_max"), color=colors.indigo, variant="filled" - ), - dmc.Badge( - news.get("spo2_min"), color=colors.indigo, variant="filled" - ), - ] - ), - dmc.Stack( - [ - dmc.Badge("Temp", color=colors.indigo, variant="outline"), - dmc.Badge( - round(news.get("temp_max"), 1), - color=colors.indigo, - variant="filled", - ), - dmc.Badge( - round(news.get("temp_min"), 1), - color=colors.indigo, - variant="filled", - ), - ] - ), - dmc.Stack( - [ - dmc.Badge("AVPU", color=colors.indigo, variant="outline"), - dmc.Badge( - news.get("avpu_max"), color=colors.indigo, variant="filled" - ), - dmc.Badge( - news.get("avpu_min"), color=colors.indigo, variant="filled" - ), - ] - ), - ] - ) - - else: - news_content = dmc.Group() - news_text = dmc.Text("Vitals not available") - - control = dmc.Group( - [ - DashIconify( - icon="carbon:activity", - width=20, - ), - dmc.Text("NEWS and vitals"), - ] - ) - panel = dmc.Grid( - [ - dmc.Col( - [ - pred_text, - pred_content, - news_text, - news_content, - ], - span=12, - ), - ] - ) - - return dmc.AccordionControl(control), dmc.AccordionPanel(panel) - - -@callback( - Output(ids.ACC_BED_DECISION_TEXT, "children"), - Input(ids.ACC_BED_STATUS_CAMPUS, "value"), -) -def update_decision_description(value: str) -> str: - description = [ - i.get("description", "") for i in DISCHARGE_DECISIONS if i.get("label") == value - ] - if description: - return description[0] - else: - return "Choose one" - - -@callback( - [ - Output(ids.ACC_BED_SUBMIT_CAMPUS_NOTIFY, "children"), - Output(ids.ACC_BED_SUBMIT_CAMPUS, "disabled"), - Output(ids.ACC_BED_SUBMIT_STORE, "data"), - ], - Input(ids.ACC_BED_SUBMIT_CAMPUS, "n_clicks"), - Input(ids.ACC_BED_STATUS_CAMPUS, "value"), - State(ids.ACC_BED_SUBMIT_CAMPUS, "disabled"), - State(ids.CYTO_CAMPUS, "tapNode"), - prevent_initial_call=True, -) -def submit_discharge_status( - _: int, - value: str, - disabled: bool, - node: dict, -) -> Tuple[dmc.Notification, bool, dict]: - """Handle the submission of new info""" - - msg = "" - data = node.get("data", {}) - status = value.lower() - response_status = -1 - response_dict = {} - - if callback_context.triggered_id == ids.ACC_BED_STATUS_CAMPUS: - bed_status_control_value = data.get("dc_status", "").upper() - disabled = True if bed_status_control_value == status else False - show = False - elif callback_context.triggered_id == ids.ACC_BED_SUBMIT_CAMPUS: - if status != "blocked": - encounter = int(data.get("encounter", -1)) - response_status, response_json = post_discharge_status( - csn=encounter, status=value - ) - response_dict = response_json.dict() - if response_status == 200: - msg = "Updated discharge status: OK" - disabled = True - else: - msg = "Uh-oh: Unable to save discharge status - try again?" - disabled = False - - show = True - else: - disabled = False - show = False - - if show: - show_arg = "show" if show else "hide" - - bed_submit_dict = dict( - msg=msg, - status=status.lower(), - id=data.get("id"), - response_json=response_dict, - response_status=response_status, - ) - - notificaton = dmc.Notification( - title="Saving discharge status", - id="_submit_discharge_status_notification_NOT_IN_USE", - action=show_arg, - message=msg, - icon=DashIconify(icon="ic:round-celebration"), - ) - - return notificaton, disabled, bed_submit_dict - - else: - return dash.no_update, disabled, dash.no_update - - -@callback( - Output(ids.ACCORDION_ITEM_PATIENT, "children"), - Input(ids.CYTO_CAMPUS, "tapNode"), -) -def patient_accordion_item( - node: dict, -) -> Tuple[dmc.AccordionControl, dmc.AccordionPanel]: - """Prepare content for bed accordion item""" - if not node: - control, panel = None, None - return dmc.AccordionControl(control), dmc.AccordionPanel(panel) - - data = node.get("data", {}) - census = data.get("census", {}) - occupied = census.get("occupied", False) - sex_icon = "carbon:person" - control_text = "Unoccupied" - if census and occupied: - censusf = format_census(census) - sex = censusf.get("sex", "") - if sex: - sex_icon = ( - "carbon:gender-male" if sex.lower() == "m" else "carbon:gender-female" - ) - control_text = censusf.get("demographic_slug", "Uh-oh! No patient data?") - - control = dmc.Group( - [ - DashIconify( - icon=sex_icon, - width=20, - ), - dmc.Text(control_text), - ] - ) - - try: - hospital_admit = census.get("hv_admission_dt") - hospital_los = int((datetime.utcnow() - hospital_admit).days) - text_los = ( - f"Day {hospital_los}" - f"(Hospital admission: {datetime.strftime(hospital_admit, '%d %b %Y')})" - ) - - except TypeError: - text_los = "Hospital length of stay unknown" - - panel = dmc.Group([dmc.Text(text_los)]) - - return dmc.AccordionControl(control), dmc.AccordionPanel(panel) - - -@callback( - Output(ids.ACCORDION_ITEM_DEBUG, "children"), - Input(ids.CYTO_CAMPUS, "tapNode"), -) -def debug_accordion_item(node: dict) -> Tuple[dmc.AccordionControl, dmc.AccordionPanel]: - """Prepare content for debug accordion item""" - title = dmc.Group( - [ - DashIconify( - icon="carbon:debug", - width=20, - ), - dmc.Text("Developer and debug inspector"), - ] - ) - control = dmc.AccordionControl(title) - panel = dmc.AccordionPanel( - dmc.Spoiler( - children=[ - dmc.Prism( - language="json", - children=_format_tapnode(node), - ) - ], - showLabel="Show more", - hideLabel="Hide", - maxHeight=200, - ) - ) - return control, panel diff --git a/web/src/web/pages/perrt/callbacks/widgets.py b/web/src/web/pages/perrt/callbacks/widgets.py deleted file mode 100644 index 1081db31..00000000 --- a/web/src/web/pages/perrt/callbacks/widgets.py +++ /dev/null @@ -1,85 +0,0 @@ -from dash import Input, Output, callback - -from web.pages.perrt import ids -from web.style import colors - -DEBUG = True - - -def _progress_bar_bed_count(elements: list[dict]) -> list[dict]: - """Given elements from a cytoscape bed map then prepare sections for - progress bar""" - beds = [ - ele.get("data", {}) - for ele in elements - if ele.get("data", {}).get("entity") == "bed" - ] - - # TODO: replace with total capacity from department sum - N = len(beds) - occupied = len([i for i in beds if i.get("occupied")]) - blocked = len([i for i in beds if i.get("blocked")]) - news = [i.get("news_max", -1) for i in beds if i.get("occupied")] - news_miss = len([i for i in news if i == -1]) - news_low = len([i for i in news if 0 <= i <= 4]) - news_medium = len([i for i in news if 5 <= i <= 6]) - news_high = len([i for i in news if i >= 7]) - empty = N - occupied - blocked - - # Adjust colors and labels based on size - def _make_progress_label(val: int, N: int, label: str) -> str: - if val == 0: - return "" - elif val / N < 0.2: - return f"{val}" - else: - return f"{val} {label}" - - empty_label = _make_progress_label(empty, N, "empty") - news_miss_label = _make_progress_label(news_miss, N, "unrecorded") - news_low_label = _make_progress_label(news_low, N, "Low risk") - news_medium_label = _make_progress_label(news_medium, N, "Medium risk") - news_high_label = _make_progress_label(news_high, N, "High risk") - empty_colour = colors.silver - - return [ - dict( - value=news_low / N * 100, - color=colors.olive, - label=news_low_label, - tooltip=f"{news_low} low risk patients", - ), - dict( - value=news_miss / N * 100, - color=colors.indigo, - label=news_miss_label, - tooltip=f"{news_miss} patients without recent NEWS", - ), - dict( - value=news_medium / N * 100, - color="#F5C487", - label=news_medium_label, - tooltip=f"{news_medium} medium risk patients", - ), - dict( - value=news_high / N * 100, - color="#EC9078", - label=news_high_label, - tooltip=f"{news_high} high risk patients", - ), - dict( - value=empty / N * 100, - color=empty_colour, - label=empty_label, - tooltip=f"{empty} empty beds", - ), - ] - - -@callback( - Output(ids.PROGRESS_CAMPUS, "sections"), - Input(ids.CYTO_CAMPUS, "elements"), - prevent_initial_call=True, -) -def progress_bar_campus(elements: list[dict]) -> list[dict]: - return _progress_bar_bed_count(elements) diff --git a/web/src/web/pages/perrt/campus.py b/web/src/web/pages/perrt/campus.py deleted file mode 100644 index 95e5186f..00000000 --- a/web/src/web/pages/perrt/campus.py +++ /dev/null @@ -1,182 +0,0 @@ -import dash -import dash_cytoscape as cyto -import dash_mantine_components as dmc -import json -from dash import dcc, html -from pathlib import Path - -# noqa suppresses black errors when linting since you need this import for -# access to callbacks -import web.pages.perrt.callbacks.cytoscape # noqa -import web.pages.perrt.callbacks.inspector # noqa -import web.pages.perrt.callbacks.widgets # noqa -from web.pages.perrt import CAMPUSES, ids -from web.style import replace_colors_in_stylesheet - -dash.register_page(__name__, path="/sitrep/perrt", name="PERRT") - -with open(Path(__file__).parent / "cyto_style_sheet.json") as f: - cyto_style_sheet = json.load(f) - cyto_style_sheet = replace_colors_in_stylesheet(cyto_style_sheet) - -timers = html.Div([]) -stores = html.Div( - [ - dcc.Store(id=ids.CENSUS_STORE), - dcc.Store(id=ids.DEPTS_OPEN_STORE), - dcc.Store(id=ids.ROOMS_OPEN_STORE), - dcc.Store(id=ids.BEDS_STORE), - dcc.Store(id=ids.NEWS_STORE), - dcc.Store(id=ids.DEPTS_OPEN_STORE_NAMES), - dcc.Store(id=ids.ACC_BED_SUBMIT_STORE), - dcc.Store(id=ids.PREDICTIONS_STORE), - ] -) - -notifications = html.Div( - [ - html.Div(id=ids.ACC_BED_SUBMIT_CAMPUS_NOTIFY), - ] -) - -campus_selector = dmc.Container( - [ - dmc.SegmentedControl( - id=ids.CAMPUS_SELECTOR, - value=[i.get("value") for i in CAMPUSES if i.get("label") == "UCH"][0], - data=CAMPUSES, - persistence=True, - persistence_type="local", - ), - ] -) - -dept_selector = dmc.Container( - [ - dmc.Select( - label="Select a ward", - placeholder="ward", - id=ids.DEPT_SELECTOR, - ), - ] -) - -campus_status = dmc.Paper( - [ - dmc.Progress( - id=ids.PROGRESS_CAMPUS, - size=20, - radius="md", - # style={"font-size": "10px", "font-weight": 300}, - ) - ], -) - -campus_cyto = dmc.Paper( - [ - cyto.Cytoscape( - id=ids.CYTO_CAMPUS, - style={ - # "width": "70vw", - "height": "75vh", - "z-index": 999, - }, - layout={ - "name": "preset", - "animate": True, - "fit": True, - "padding": 10, - }, - stylesheet=cyto_style_sheet, - responsive=True, - userPanningEnabled=True, - userZoomingEnabled=True, - ) - ], - shadow="lg", - radius="lg", - p="md", # padding - withBorder=True, - # style={"width": "90vw"}, -) - -debug_inspector = dmc.Container( - [ - dmc.Spoiler( - children=[ - dmc.Prism( - language="json", id=ids.DEBUG_NODE_INSPECTOR_CAMPUS, children="" - ) - ], - showLabel="Show more", - hideLabel="Hide", - maxHeight=100, - ) - ] -) - -bed_inspector = html.Div( - [ - dmc.AccordionMultiple( - id=ids.INSPECTOR_CAMPUS_ACCORDION, - children=[ - dmc.AccordionItem(id=ids.ACCORDION_ITEM_PATIENT, value="patient"), - dmc.AccordionItem(id=ids.ACCORDION_ITEM_PERRT, value="bed"), - dmc.AccordionItem(id=ids.ACCORDION_ITEM_DEBUG, value="debug"), - ], - chevronPosition="left", - variant="separated", - transitionDuration=0, - ) - ] -) - - -sidebar_title = html.Div(id=ids.SIDEBAR_TITLE) -sidebar_content = html.Div(id=ids.SIDEBAR_CONTENT, children=bed_inspector) - -sidebar = html.Div( - children=[ - sidebar_title, - sidebar_content, - ] -) - -patient_sidebar = dmc.Container( - dmc.Paper(shadow="lg", radius="lg", p="xs", withBorder=True, children=[sidebar]) -) - -body = dmc.Container( - [ - dmc.Grid( - [ - # dmc.Col(dept_selector, span=6), - dmc.Col(campus_selector, offset=9, span=3), - dmc.Col(campus_status, span=12), - # nested grid - dmc.Col( - dmc.Grid( - [ - dmc.Col(campus_cyto, span=12), - ] - ), - span=9, - ), - dmc.Col(dmc.Grid([dmc.Col(patient_sidebar)]), span=3), - ] - ) - ], - style={"width": "90vw"}, - fluid=True, -) - - -def layout() -> dash.html.Div: - return html.Div( - children=[ - timers, - stores, - notifications, - body, - ] - ) diff --git a/web/src/web/pages/perrt/cyto_style_sheet.json b/web/src/web/pages/perrt/cyto_style_sheet.json deleted file mode 100644 index 784ac73c..00000000 --- a/web/src/web/pages/perrt/cyto_style_sheet.json +++ /dev/null @@ -1,101 +0,0 @@ -[ - { - "selector": "node", - "style": { - "text-halign": "center", - "text-valign": "center", - "width": 36, - "height": 36 - } - }, - { - "selector": "[entity='department']", - "style": { - "label": "data(label)", - "color": "black", - "background-opacity": 0.1, - "background-color": "gray", - "border-color": "black", - "border-width": 0, - "text-halign": "left", - "text-margin-x": -5 - } - }, - { - "selector": "[entity='bed']", - "style": { - "shape": "ellipse", - "label": "data(bed_number)", - "color": "gray", - "border-color": "olive", - "border-width": 2, - "background-color": "olive", - "background-opacity": 0 - } - }, - { - "selector": "[?closed]", - "style": { - "background-color": "white", - "color": "gray" - } - }, - { - "selector": "[?blocked]", - "style": { - "background-color": "gray" - } - }, - { - "selector": "[?occupied]", - "style": { - "border-width": 0, - "background-color": "indigo", - "background-opacity": 1 - } - }, - { - "selector": "[?occupied][news_max>=0]", - "style": { - "background-color": "olive", - "background-opacity": 0.5, - "color": "white" - } - }, - { - "selector": "[?occupied][news_max>4]", - "style": { - "background-color": "#F5C487", - "background-opacity": 1, - "color": "white" - } - }, - { - "selector": "[?occupied][news_max>6]", - "style": { - "background-color": "#EC9078", - "background-opacity": 1, - "color": "white" - } - }, - { - "selector": "[?occupied][news_max=-1]", - "style": { - "background-color": "indigo", - "background-opacity": 1, - "color": "white" - } - }, - - { - "selector": ":selected:", - "style": { - "width": 36, - "height": 36, - "text-margin-y": 2, - "border-width": 3, - "border-color": "black", - "color": "black" - } - } -] diff --git a/web/src/web/pages/perrt/ids.py b/web/src/web/pages/perrt/ids.py deleted file mode 100644 index dd3a0a79..00000000 --- a/web/src/web/pages/perrt/ids.py +++ /dev/null @@ -1,43 +0,0 @@ -from web.utils import gen_id - -# raw stores -CENSUS_STORE = gen_id("census store", __name__) -BEDS_STORE = gen_id("beds store", __name__) -NEWS_STORE = gen_id("news store", __name__) -PREDICTIONS_STORE = gen_id("predictions store", __name__) - -# derived stores -DEPTS_OPEN_STORE = gen_id("open depts store", __name__) -ROOMS_OPEN_STORE = gen_id("open rooms store", __name__) -DEPTS_OPEN_STORE_NAMES = gen_id("open depts store names", __name__) - -# controls -CAMPUS_SELECTOR = gen_id("campus selector", __name__) -DEPT_SELECTOR = gen_id("dept selector", __name__) -LAYOUT_SELECTOR = gen_id("layout selector", __name__) -BED_SELECTOR_CAMPUS = gen_id("bed selector campus", __name__) - -# content -CYTO_CAMPUS = gen_id("cyto campus", __name__) -PROGRESS_CAMPUS = gen_id("progress campus", __name__) - -# inspector -SIDEBAR_TITLE = gen_id("sidebar title", __name__) -SIDEBAR_CONTENT = gen_id("sidebar content", __name__) - -INSPECTOR_CAMPUS_MODAL = gen_id("inspector campus modal", __name__) -INSPECTOR_CAMPUS_ACCORDION = gen_id("campus accordion", __name__) - -ACCORDION_ITEM_PERRT = gen_id("accordion bed", __name__) -ACC_BED_DECISION_TEXT = gen_id("bed decision text", __name__) -ACC_BED_STATUS_CAMPUS = gen_id("bed status campus", __name__) -ACC_BED_SUBMIT_CAMPUS = gen_id("bed submit campus", __name__) -ACC_BED_SUBMIT_CAMPUS_NOTIFY = gen_id("bed submit campus notify", __name__) -ACC_BED_SUBMIT_STORE = gen_id("bed submit campus store", __name__) - -ACCORDION_ITEM_PATIENT = gen_id("accordion patient", __name__) -ACCORDION_ITEM_DEBUG = gen_id("accordion debug", __name__) - - -# other -DEBUG_NODE_INSPECTOR_CAMPUS = gen_id("debug inspect node campus", __name__) From 88838f54b2cc2f40691c13e9a6ca599c4e1e1814 Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Fri, 26 Jan 2024 11:46:07 +0000 Subject: [PATCH 13/27] Remove electives and PQIP report from web --- web/src/web/__init__.py | 1 - web/src/web/celery_config.py | 9 -------- web/src/web/ids.py | 1 - web/src/web/layout/nav.py | 40 +----------------------------------- web/src/web/stores.py | 13 ------------ 5 files changed, 1 insertion(+), 63 deletions(-) diff --git a/web/src/web/__init__.py b/web/src/web/__init__.py index 6be39a2e..7d93b4e0 100644 --- a/web/src/web/__init__.py +++ b/web/src/web/__init__.py @@ -14,7 +14,6 @@ web_ids.DEPT_STORE: f"{get_settings().api_url}/baserow/departments/", web_ids.ROOM_STORE: f"{get_settings().api_url}/baserow/rooms/", web_ids.BEDS_STORE: f"{get_settings().api_url}/baserow/beds/", - web_ids.ELECTIVES_STORE: f"{get_settings().api_url}/electives/", } diff --git a/web/src/web/celery_config.py b/web/src/web/celery_config.py index c86b9d0a..fa7008d3 100644 --- a/web/src/web/celery_config.py +++ b/web/src/web/celery_config.py @@ -55,15 +55,6 @@ ), "kwargs": {"expires": (24 * 3600) + 60}, # 24 hours + 1 minute }, - web_ids.ELECTIVES_STORE: { - "task": "web.celery_tasks.get_response", - "schedule": crontab(minute=0, hour=0), # daily at midnight - "args": ( - API_URLS[web_ids.ELECTIVES_STORE], - web_ids.ELECTIVES_STORE, - ), - "kwargs": {"expires": (24 * 3600) + 60}, # 24 hours + 1 minute - }, } diff --git a/web/src/web/ids.py b/web/src/web/ids.py index 6bda119c..873a5fd8 100644 --- a/web/src/web/ids.py +++ b/web/src/web/ids.py @@ -6,5 +6,4 @@ DEPT_STORE = gen_id("dept all store", __name__) ROOM_STORE = gen_id("rooms all store", __name__) BEDS_STORE = gen_id("beds all store", __name__) -ELECTIVES_STORE = gen_id("electives all store", __name__) SITREP_STORE = gen_id("sitrep all store", __name__) diff --git a/web/src/web/layout/nav.py b/web/src/web/layout/nav.py index 5e32e070..eb18db0a 100644 --- a/web/src/web/layout/nav.py +++ b/web/src/web/layout/nav.py @@ -26,12 +26,7 @@ class _NavLink(NamedTuple): sitrep_campus = _NavLink(title="Campus", path="/sitrep/campus", icon="carbon:hospital") # sitrep_ward = _NavLink(title="Ward", path="/sitrep/ward", icon="carbon:hospital-bed") -electives = _NavLink( - title="Electives", path="/surgery/electives", icon="carbon:calendar" -) -pqip = _NavLink( - title="PQIP Report", path="/assets/pqip_dashboard.html", icon="mdi:graph-areaspline" -) + a_and_e = _NavLink( title="Admissions", path="/a_and_e", icon="fluent:people-queue-24-regular" ) @@ -94,39 +89,6 @@ def create_side_nave_content() -> dmc.Stack: # label=sitrep_ward.title, # href=sitrep_ward.path, # ), - dmc.Divider( - labelPosition="left", - label=[ - DashIconify( - icon="carbon:scalpel", - width=20, - style={"marginRight": 10}, - color=dmc.theme.DEFAULT_COLORS["indigo"][5], - ), - "Surgery", - ], - my=20, - ), - create_main_nav_link( - icon=electives.icon, - label=electives.title, - href=electives.path, - ), - dmc.Anchor( - dmc.Group( - [ - DashIconify( - icon=pqip.icon, - width=20, - color=dmc.theme.DEFAULT_COLORS["indigo"][5], - ), - dmc.Text(pqip.title, size="sm"), - ] - ), - href=pqip.path, - variant="text", - target="_blank", - ), dmc.Divider( labelPosition="left", label=[ diff --git a/web/src/web/stores.py b/web/src/web/stores.py index 19cd9884..5ab7bd2f 100644 --- a/web/src/web/stores.py +++ b/web/src/web/stores.py @@ -8,7 +8,6 @@ from typing import Optional from models.beds import Bed, Department, Room -from models.electives import MergedData from models.sitrep import SitrepRow from web import ids, SITREP_DEPT2WARD_MAPPING from web.logger import logger, logger_timeit @@ -98,17 +97,6 @@ def _store_beds(_: int) -> list[dict]: return [Bed.parse_obj(row).dict() for row in data] -@callback( - Output(ids.ELECTIVES_STORE, "data"), - Input(ids.STORE_TIMER_6H, "n_intervals"), -) -@logger_timeit() -def _store_electives(_: int) -> list[dict]: - task = ids.ELECTIVES_STORE - data = _get_or_refresh_cache(task) - return [MergedData.parse_obj(row).dict() for row in data] - - @callback( Output(ids.SITREP_STORE, "data"), Input(ids.STORE_TIMER_1H, "n_intervals"), @@ -139,7 +127,6 @@ def _store_all_sitreps(_: int) -> dict: dcc.Store(id=ids.DEPT_STORE), dcc.Store(id=ids.ROOM_STORE), dcc.Store(id=ids.BEDS_STORE), - dcc.Store(id=ids.ELECTIVES_STORE), dcc.Store(id=ids.SITREP_STORE), ] ) From 5a6e522d54af3b8307adf7a4990587594d05a3de Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Fri, 26 Jan 2024 11:51:49 +0000 Subject: [PATCH 14/27] Remove PERRT from API --- .gitignore | 3 - api/src/api/main.py | 16 - api/src/api/perrt/__init__.py | 0 api/src/api/perrt/_archive/live.sql | 160 --- api/src/api/perrt/_archive/mock.json | 63 - .../perrt/admission_probability/__init__.py | 0 .../admission_probability/final_model.pkl | Bin 886220 -> 0 bytes .../perrt/admission_probability/functions.py | 1210 ----------------- .../predictions_script.py | 91 -- .../admission_probability/sql/Consults_V3.sql | 24 - .../sql/Extra_data_for_model.sql | 112 -- .../admission_probability/sql/Labs_V3.sql | 35 - .../sql/Observations_V3.sql | 384 ------ .../admission_probability/sql/Others_V3.sql | 296 ---- api/src/api/perrt/live_consults.sql | 34 - api/src/api/perrt/live_cpr.sql | 17 - api/src/api/perrt/live_vitals.sql | 32 - api/src/api/perrt/mock_consults.json | 36 - api/src/api/perrt/mock_cpr.json | 28 - api/src/api/perrt/mock_vitals.json | 176 --- api/src/api/perrt/router.py | 152 --- api/src/api/perrt/sql/current_inpatients.sql | 90 -- .../perrt/sql/current_inpatients_status.sql | 1 - .../api/perrt/sql/recent_inpatient_vitals.sql | 133 -- api/src/api/perrt/sql/uch_inpatients.sql | 58 - api/src/api/perrt/wrangle.py | 176 --- api/src/api/tests/test_perrt.py | 68 - models/src/models/perrt.py | 92 -- 28 files changed, 3487 deletions(-) delete mode 100644 api/src/api/perrt/__init__.py delete mode 100644 api/src/api/perrt/_archive/live.sql delete mode 100644 api/src/api/perrt/_archive/mock.json delete mode 100644 api/src/api/perrt/admission_probability/__init__.py delete mode 100644 api/src/api/perrt/admission_probability/final_model.pkl delete mode 100644 api/src/api/perrt/admission_probability/functions.py delete mode 100644 api/src/api/perrt/admission_probability/predictions_script.py delete mode 100644 api/src/api/perrt/admission_probability/sql/Consults_V3.sql delete mode 100644 api/src/api/perrt/admission_probability/sql/Extra_data_for_model.sql delete mode 100644 api/src/api/perrt/admission_probability/sql/Labs_V3.sql delete mode 100644 api/src/api/perrt/admission_probability/sql/Observations_V3.sql delete mode 100644 api/src/api/perrt/admission_probability/sql/Others_V3.sql delete mode 100644 api/src/api/perrt/live_consults.sql delete mode 100644 api/src/api/perrt/live_cpr.sql delete mode 100644 api/src/api/perrt/live_vitals.sql delete mode 100644 api/src/api/perrt/mock_consults.json delete mode 100644 api/src/api/perrt/mock_cpr.json delete mode 100644 api/src/api/perrt/mock_vitals.json delete mode 100644 api/src/api/perrt/router.py delete mode 100644 api/src/api/perrt/sql/current_inpatients.sql delete mode 100644 api/src/api/perrt/sql/current_inpatients_status.sql delete mode 100644 api/src/api/perrt/sql/recent_inpatient_vitals.sql delete mode 100644 api/src/api/perrt/sql/uch_inpatients.sql delete mode 100644 api/src/api/perrt/wrangle.py delete mode 100644 api/src/api/tests/test_perrt.py delete mode 100644 models/src/models/perrt.py diff --git a/.gitignore b/.gitignore index 6bb5db68..19dae5f7 100755 --- a/.gitignore +++ b/.gitignore @@ -926,9 +926,6 @@ docs/_linkcheck/ # Docker cruft .bash_history -# ignore generated data -src/api/perrt/admission_probability/generated_data - # local jupyter lab for exploratory work jupyter/ diff --git a/api/src/api/main.py b/api/src/api/main.py index fab9d42e..e280cb2f 100755 --- a/api/src/api/main.py +++ b/api/src/api/main.py @@ -7,7 +7,6 @@ import arrow from fastapi import APIRouter, FastAPI from fastapi.responses import ORJSONResponse -from fastapi_utils.tasks import repeat_every from api.beds.router import mock_router as mock_beds_router from api.beds.router import router as beds_router @@ -23,13 +22,10 @@ from api.hospital.router import mock_router as mock_hospital_router from api.hospital.router import router as hospital_router from api.logger import logger -from api.perrt.router import mock_router as mock_perrt_router -from api.perrt.router import router as perrt_router from api.ros.router import router as ros_router from api.sitrep.router import mock_router as mock_sitrep_router from api.sitrep.router import router as sitrep_router -from api.perrt.admission_probability.predictions_script import run_prediction_pipeline logger.info("API app starting") @@ -56,9 +52,6 @@ app.include_router(electives_router) mock_router.include_router(mock_electives_router) -app.include_router(perrt_router) -mock_router.include_router(mock_perrt_router) - app.include_router(ed_router) mock_router.include_router(mock_ed_router) @@ -73,15 +66,6 @@ app.include_router(mock_router) -# DH's work as per a4e125c926ac8110525a741c4c5709652de8bd49 -@app.on_event("startup") -@repeat_every(seconds=1800, raise_exceptions=False) -def refresh_perrt_icu_admission_predictions() -> None: - app.state.perrt_icu_adm_predictions = {} - predictions = run_prediction_pipeline() - app.state.perrt_icu_adm_predictions = predictions - - @app.get("/ping") def ping() -> dict[str, str]: return {"ping": "pong"} diff --git a/api/src/api/perrt/__init__.py b/api/src/api/perrt/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/api/src/api/perrt/_archive/live.sql b/api/src/api/perrt/_archive/live.sql deleted file mode 100644 index 5e3b17dd..00000000 --- a/api/src/api/perrt/_archive/live.sql +++ /dev/null @@ -1,160 +0,0 @@ --- noinspection SqlNoDataSourceInspectionForFile - --- 2022-06-24 --- return recent vitals and current location and most recent PERRT visit -WITH --- start from the visit observation table since this is where all the vital signs live --- roughly 1000 rows/hour for UCH only --- 20k rows for 8 hours for the whole trust -obs AS - (SELECT - ob.visit_observation_id - ,ob.hospital_visit_id - ,ob.observation_datetime - ,ot.id_in_application - ,ob.value_as_real - ,ob.value_as_text - ,ob.unit - FROM star.visit_observation ob - LEFT JOIN star.visit_observation_type ot ON ob.visit_observation_type_id = ot.visit_observation_type_id - WHERE - ob.observation_datetime > NOW() - '8 HOURS'::INTERVAL - AND - ot.id_in_application in - ( - '10' --'SpO2' -- 602063230 - ,'5' --'BP' -- 602063234 - ,'3040109304' --'Room Air or Oxygen' -- 602063268 - ,'6' --'Temp' -- 602063248 - ,'8' --'Pulse' -- 602063237 - ,'9' --'Resp' -- 602063257 - ,'6466' -- Level of consciousness - ,'28315' -- NEWS score Scale 1 -- 47175382 - ,'28316' -- NEWS score Scale 2 -- 47175920 - ) - ), --- NOW PREPARE THE DEMOGRAPHIC AND BED INFO -loc AS - (SELECT * FROM (SELECT - vd.hospital_visit_id - ,live_mrn.mrn - ,cd.lastname - ,cd.firstname - ,cd.sex - ,cd.date_of_birth - -- ,vd.location_id - -- ugly HL7 location string - ,lo.location_string - ,dept.name dept_name - ,room.name room_name - ,bed.hl7string bed_hl7 - -- time admitted to that bed/theatre/scan etc. - ,vo.admission_datetime hosp_admit_dt - ,vd.admission_datetime bed_admit_dt - ,row_number() over (partition BY vd.hospital_visit_id ORDER BY vd.admission_datetime DESC) bed_tail_i - - FROM star.location_visit vd - INNER JOIN star.location lo ON vd.location_id = lo.location_id - INNER JOIN star.department dept ON lo.department_id = dept.department_id - INNER JOIN star.room ON lo.room_id = room.room_id - INNER JOIN star.bed ON lo.bed_id = bed.bed_id - INNER JOIN star.hospital_visit vo ON vd.hospital_visit_id = vo.hospital_visit_id - INNER JOIN star.core_demographic cd ON vo.mrn_id = cd.mrn_id - -- get current hospital number - INNER JOIN star.mrn original_mrn ON vo.mrn_id = original_mrn.mrn_id - -- get mrn to live mapping - INNER JOIN star.mrn_to_live mtl ON vo.mrn_id = mtl.mrn_id - -- get live mrn - INNER JOIN star.mrn live_mrn ON mtl.live_mrn_id = live_mrn.mrn_id - WHERE - vo.admission_datetime IS NOT NULL - AND - vo.discharge_datetime IS NULL - AND - cd.date_of_death IS NULL - AND - vo.patient_class = ANY('{INPATIENT,DAY_CASE,EMERGENCY}') - - -- AND - -- dept.name LIKE 'UCH%' - -- AND - -- dept.name NOT IN ( - -- 'UCH EMERGENCY DEPT' - -- ,'UCH P02 ENDOSCOPY' - -- ,'UCH P03 THEATRE SUITE' - -- ,'UCH T02 DAY SURG THR' - -- ,'UCH T02 VASCULAR ANGIO' - -- ,'UCH T03 INTENSIVE CARE' - -- ,'UCH T06 SOUTH PACU' - --) -) bed_tail WHERE bed_tail_i = 1), --- PERRT consults -consults AS ( - SELECT - - cr.consultation_request_id - ,cr.valid_from - ,cr.scheduled_datetime - ,cr.hospital_visit_id - ,ct.code - ,ct.name - ,con_tail.con_i - - FROM star.consultation_request cr - LEFT JOIN star.consultation_type ct ON cr.consultation_type_id = ct.consultation_type_id - LEFT JOIN ( - -- so '1' represents most recent consult - SELECT - * - ,row_number() over (partition BY consults.hospital_visit_id ORDER BY consults.valid_from DESC) con_i - FROM star.consultation_request consults - LEFT JOIN star.consultation_type ct ON consults.consultation_type_id = ct.consultation_type_id - WHERE - consults.scheduled_datetime > NOW() - INTERVAL '30 DAYS' - AND - ct.code IN ('CON134', 'CON6') - ) con_tail - ON cr.consultation_request_id = con_tail.consultation_request_id - - WHERE - cr.closed_due_to_discharge = false - AND - cr.cancelled = false - AND - cr.scheduled_datetime > NOW() - INTERVAL '30 DAYS' - AND - -- ct.name IN ( - -- 'Inpatient consult to PERRT', -- CON134 - -- 'Inpatient Consult to Symptom Control and Palliative Care', -- CON27 - -- 'Inpatient Consult to Transforming end of life care team', -- - -- 'Inpatient consult to Intensivist', -- CON6 - -- 'Inpatient consult to Social Work' -- CON65 - -- ) - ct.code IN ('CON134', 'CON6') - AND - con_tail.con_i = 1 -) - --- FINALLY MERGE bed/demographic/consults info with obs -SELECT - obs.visit_observation_id - ,obs.hospital_visit_id - ,obs.observation_datetime - ,obs.id_in_application - ,obs.value_as_real - ,obs.value_as_text - ,obs.unit - ,loc.mrn - ,loc.lastname - ,loc.firstname - ,loc.sex - ,loc.date_of_birth - ,loc.bed_admit_dt - ,loc.dept_name - ,loc.room_name - ,loc.bed_hl7 - ,con.scheduled_datetime perrt_consult_datetime -FROM obs -INNER JOIN loc ON obs.hospital_visit_id = loc.hospital_visit_id -LEFT JOIN consults con ON obs.hospital_visit_id = con.hospital_visit_id -ORDER BY obs.observation_datetime DESC diff --git a/api/src/api/perrt/_archive/mock.json b/api/src/api/perrt/_archive/mock.json deleted file mode 100644 index 54b5fd72..00000000 --- a/api/src/api/perrt/_archive/mock.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "table": "perrt", - "rows": - [ - { - "visit_observation_id": 688888886, - "hospital_visit_id": 677777773, - "observation_datetime": "2022-12-05 21:51:00+00", - "id_in_application": "5", - "value_as_real": null, - "value_as_text": "162/79", - "unit": null, - "mrn": "47777778", - "lastname": "HERCULES", - "firstname": "MISSUS", - "sex": "F", - "date_of_birth": "1979-03-11", - "bed_admit_dt": "2022-11-19 13:30:00+00", - "dept_name": "UCH T09 SOUTH (T09S)", - "room_name": "BY13", - "bed_hl7": "BY13-63", - "perrt_consult_datetime": null - }, - { - "visit_observation_id": 680288308, - "hospital_visit_id": 677777773, - "observation_datetime": "2022-12-05 21:51:00+00", - "id_in_application": "6", - "value_as_real": 98.1, - "value_as_text": null, - "unit": null, - "mrn": "47777778", - "lastname": "HERCULES", - "firstname": "MISSUS", - "sex": "F", - "date_of_birth": "1979-03-11", - "bed_admit_dt": "2022-11-19 13:30:00+00", - "dept_name": "UCH T09 SOUTH (T09S)", - "room_name": "BY13", - "bed_hl7": "BY13-63", - "perrt_consult_datetime": null - }, - { - "visit_observation_id": 680288310, - "hospital_visit_id": 677777773, - "observation_datetime": "2022-12-05 21:51:00+00", - "id_in_application": "8", - "value_as_real": 89, - "value_as_text": null, - "unit": null, - "mrn": "47777778", - "lastname": "HERCULES", - "firstname": "MISSUS", - "sex": "F", - "date_of_birth": "1979-03-11", - "bed_admit_dt": "2022-11-19 13:30:00+00", - "dept_name": "UCH T09 SOUTH (T09S)", - "room_name": "BY13", - "bed_hl7": "BY13-63", - "perrt_consult_datetime": null - } - ] -} diff --git a/api/src/api/perrt/admission_probability/__init__.py b/api/src/api/perrt/admission_probability/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/api/src/api/perrt/admission_probability/final_model.pkl b/api/src/api/perrt/admission_probability/final_model.pkl deleted file mode 100644 index a8369760583e1aa880d7683d2f956ba2774cb092..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 886220 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�dZG&L^no*^j4smR}7kEDq;dtH%$tOaUjSfO(*4t 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 int: - """Function that takes an series and returns the slope of a linear fit or r value - Takes a numpy array as its input, requires to specify whether it should return r value or slope - """ - - # Name the various inputs for R value - R = ("r", "R", "r value", "r-value", "r_value", "R value", "R-value", "R_value") - - # Coerce np dtype to float - x_array = x_input.astype("float") - - # Find the values that aren't na - not_na = np.isnan(x_array) == False - - # Make them into np arrays - x = np.array(x_input[not_na], dtype="float") - y = np.array(range(x.shape[0])) - - # Some rules about returning nas - if x.shape[0] < 2: - return 0 - - # Make sure we return no value for fit quality if only 2 points - elif (x.shape[0] < 3) and (returns in R): - return 0 - - else: - if returns == "slope": - return stats.linregress(y, x)[0] - - elif returns in R: - return stats.linregress(y, x)[2] - - else: - raise Exception("This needs to be either slope or R value") - - -# Custom function to compare across times where some are none -def argmax_time(time_array: np.array) -> int: - """Function that takes an array and returns the maximum value - Just uses np.argmax but ignores non-time values""" - - # This falls down if the referrals are run when the times are changed (e.g. GMT -> BST) - try: - new_array = time_array.astype(np.datetime64) - - # only argmax over ones that aren't NaN (note that np.argmax can handle NaN but not NaT) - not_na = np.where(np.isnan(new_array) == False) - max_time = np.argmax(new_array[not_na[0]]) - - return not_na[0][max_time] - - # So here we manually run it through np.datetime and if it falls down allocate NaT - # This isn't the most efficient way of doing things but will only have to be used on days - # when the times change - except: - new_array = np.array([], dtype=np.datetime64) - - # Work through the array and try to convert to dt - for position, date in enumerate(time_array): - try: - new_date = np.datetime64(date) - except: - new_date = np.datetime64("NaT") - - # Add to the array - new_array = np.append(new_array, new_date) - - # only argmax over ones that aren't NaN (note that np.argmax can handle NaN but not NaT) - not_na = np.where(np.isnan(new_array) == False) - max_time = np.argmax(new_array[not_na]) - - return not_na[0][max_time] - - -# Now run the whole pipeline -def run_pipeline(date_list: list, engine, now: bool = False) -> pd.DataFrame: - """Function to run the whole data preparation pipeline - We need to pass a list of dates and the number of hours to take obs from - """ - - # We have to set up the column names that we are going to use: - # Choose the columns we're going to iterate over - cols_for_agg = list( - [ - "ALB", - "ALP", - "ALT", - "BCST", - "BILI", - "CA", - "CCA", - "COHb", - "CREA", - "CRP", - "FiO2", - "GCS_Total", - "GFR", - "Glu", - "Hb", - "HCTU", - "HTRT", - "INR", - "K", - "LDH", - "LY", - "Lac", - "MCVU", - "MG", - "NA", - "NE", - "NEWS_Score", - "Oxygen_therapy_flow_rate", - "PHOS", - "PLT", - "PT", - "Pain_score,_verbal_at_rest", - "Pain_score,_verbal_on_movement", - "Pulse", - "RCC", - "Resp", - "SpO2", - "Temp", - "UREA", - "WCC", - "pCO2", - "pH", - "Sys_BP", - "Dia_BP", - "MAP", - "Oxygen_delivery_device_enc", - "AVPU_enc", - "Oxygen_enc", - "pressure_areas_observed", - ] - ) - - # Now columns just to take count from - cols_for_count = list( - [ - "Inpatient_consult_to_Intensivist", - "Inpatient_consult_to_PERRT", - "Inpatient_consult_to_Social_Work", - "Recent_palliative_ref", - ] - ) - - # This are the columns that we only want the most recent value from - cols_for_last = list( - [ - "sex_enc", - "building_enc", - "bed_type_enc", - "age_at_obs", - "NEWS2_scale", - "asian_ethnicity", - "black_ethnicity", - "chinese_ethnicity", - "other_ethnicity", - "white_ethnicity", - "missing_ethnicity", - "10201000174_ward", - "1020100163_ward", - "1020100172_ward", - "1020100175_ward", - "1021800004_ward", - "1021800025_ward", - "1021800026_ward", - "1021800027_ward", - "1021800028_ward", - "1021800030_ward", - "1021800031_ward", - "ACU_ward", - "BBNU_ward", - "BCN_ward", - "COB_ward", - "F3NU_ward", - "HS15_ward", - "HSDC_ward", - "LW_ward", - "MFAW_ward", - "T01_ward", - "T01ECU_ward", - "T06H_ward", - "T07_ward", - "T08N_ward", - "T08S_ward", - "T09C_ward", - "T09N_ward", - "T09S_ward", - "T10O_ward", - "T10S_ward", - "T12N_ward", - "T12S_ward", - "T13N_ward", - "T13S_ward", - "T14N_ward", - "T14S_ward", - "T16N_ward", - "T16S_ward", - "dnacpr", - "recent_surgery", - "ever_surgery", - "recent_icu", - "med_ref", - "og_ref", - "ortho_ref", - "surg_ref", - "No_initial_ref", - "onc_ref", - "elective_surgery", - "emergency_surgery", - "emergency_admission", - "icu_admission", - ] - ) - - # Make the colnames - final_inputs_colnames = list() - for i in cols_for_agg: - final_inputs_colnames.extend( - [f"Mean_{i}", f"Slope_{i}", f"R_{i}", f"Count_{i}", f"Last_{i}"] - ) - - # Add in the columns that we are just taking the last value from - final_inputs_colnames.extend(cols_for_last) - for i in cols_for_count: - final_inputs_colnames.extend([f"Count_{i}"]) - - # Copy this list so we can include the ward strain variables and missing markers - practice_dataset_colnames = final_inputs_colnames.copy() - practice_dataset_colnames.extend(["average_ward_NEWS", "ward_NEWS_over_5"]) - practice_dataset_colnames.extend([f"Missing_{i}" for i in cols_for_agg]) - - final_inputs_colnames.extend(["ward_raw"]) - - # Set up some storage for outcomes - practice_dataset = pd.DataFrame(columns=practice_dataset_colnames) - - # Store the median values - medians = { - "Mean_ALB": 35.0, - "Last_ALB": 35.0, - "Mean_ALP": 96.75, - "Last_ALP": 96.0, - "Mean_ALT": 24.0, - "Last_ALT": 24.0, - "Mean_BILI": 7.0, - "Last_BILI": 7.0, - "Mean_CA": 2.21, - "Last_CA": 2.21, - "Mean_CCA": 2.42, - "Last_CCA": 2.42, - "Mean_COHb": 1.2, - "Last_COHb": 1.2, - "Mean_CREA": 67.0, - "Last_CREA": 67.0, - "Mean_CRP": 31.0, - "Last_CRP": 29.1, - "Mean_FiO2": 21, # Note I've manually changed this to be normal as it isn't usually recorded when abnormal - "Last_FiO2": 21.0, - "Mean_GCS_Total": 15.0, - "Last_GCS_Total": 15.0, - "Mean_GFR": 90.0, - "Last_GFR": 90.0, - "Mean_Glu": 6.0, - "Last_Glu": 6.0, - "Mean_HCTU": 0.328, - "Last_HCTU": 0.328, - "Mean_HTRT": 21.0, - "Last_HTRT": 20, - "Mean_INR": 1.03, - "Last_INR": 1.03, - "Mean_K": 4.1, - "Last_K": 4.1, - "Mean_LDH": 280.0, - "Last_LDH": 278.0, - "Mean_LY": 1.2, - "Last_LY": 1.2, - "Mean_Lac": 1.3, - "Last_Lac": 1.2, - "Mean_MCVU": 90.1, - "Last_MCVU": 90.1, - "Mean_MG": 0.8, - "Last_MG": 0.8, - "Mean_NA": 137.5, - "Last_NA": 137.0, - "Mean_NE": 5.68, - "Last_NE": 5.5, - "Mean_NEWS_Score": 0.8333333333333334, - "Last_NEWS_Score": 1.0, - "Mean_Oxygen_therapy_flow_rate": 0.0, - "Last_Oxygen_therapy_flow_rate": 0.0, - "Mean_PHOS": 1.06, - "Last_PHOS": 1.06, - "Mean_PLT": 237.0, - "Last_PLT": 237.0, - "Mean_PT": 11.3, - "Last_PT": 11.3, - "Mean_Pain_score,_verbal_at_rest": 1.0, - "Last_Pain_score,_verbal_at_rest": 1.0, - "Mean_Pain_score,_verbal_on_movement": 0.3333333333333333, - "Last_Pain_score,_verbal_on_movement": 0.0, - "Mean_Pulse": 81.0, - "Last_Pulse": 81.0, - "Mean_RCC": 3.65, - "Last_RCC": 3.65, - "Mean_Resp": 17.6, - "Last_Resp": 18.0, - "Mean_SpO2": 97.16666666666667, - "Last_SpO2": 97.0, - "Mean_Temp": 98.1, - "Last_Temp": 98.2, - "Mean_UREA": 5.2, - "Last_UREA": 5.2, - "Mean_WCC": 8.06, - "Last_WCC": 7.88, - "Mean_pCO2": 5.67, - "Last_pCO2": 5.62, - "Mean_pH": 7.412, - "Last_pH": 7.413, - "Mean_Hb": 122.0, - "Last_Hb": 121.0, - "Mean_Sys_BP": 123.0, - "Last_Sys_BP": 123.0, - "Mean_Dia_BP": 69.14285714285714, - "Last_Dia_BP": 69.0, - "Mean_MAP": 87.33333333333333, - "Last_MAP": 87.66666666666666, - "Mean_Oxygen_delivery_device_enc": 0.0, - "Last_Oxygen_delivery_device_enc": 0.0, - "Mean_AVPU_enc": 0.0, - "Last_AVPU_enc": 0.0, - "Mean_Oxygen_enc": 0.0, - "Last_Oxygen_enc": 0.0, - "Mean_pressure_areas_observed": 0.6666666666666666, - "Last_pressure_areas_observed": 1.0, - } - - # Work through all of the dates to get ICU admission after 24h from ward patients - for number, date in enumerate(date_list): - if not now: - # Using 09:30 as this is when sitrep is - change the start time on both of the sql queries, formatted for postgres, alternating day and night - end_time = "DATE '" + str(date) + " 09:30:00'" - - # Allow the query to be generated for now - else: - end_time = "NOW()" - - ### Do the data pulls - print(f"do data pulls for {date}, starting at " + str(datetime.now())) - - # Do the observations pull - obs_query = FlexibleSqlQuery("24 HOURS") - obs_query.observations(end_time) - obs_df = pd.read_sql(obs_query(), engine) - - # The labs pull - labs_query = FlexibleSqlQuery("72 HOURS") - labs_query.others("labs", end_time, obs_df["hospital_visit_id"]) - labs_df = pd.read_sql(labs_query(), engine) - - # Consults pull - consults_query = FlexibleSqlQuery("48 HOURS") - consults_query.others("consults", end_time, obs_df["hospital_visit_id"]) - consults_df = pd.read_sql(consults_query(), engine) - - # Other data pull - other_query = FlexibleSqlQuery("7 DAYS") - other_query.others("others", end_time, obs_df["hospital_visit_id"]) - others_df = pd.read_sql(other_query(), engine) - - print("data pulls done") - - ### Some data processing for obs - - # Combine columns where can be text or numeric - combined_column = obs_df["value_as_text"].combine_first(obs_df["value_as_real"]) - obs_df["value"] = combined_column - - # Make a table of only the things we want to keep - obs_only_df = obs_df.loc[ - :, ["hospital_visit_id", "observation_datetime", "value", "vital"] - ] - - ### Data processing for labs - - # Combine values to make a single result column - labs_df["value"] = labs_df["value_as_real"].combine_first( - labs_df["value_as_text"] - ) - - # Rename test_lab_code to vital - labs_df["vital"] = labs_df["test_lab_code"] - - # Make a datetime column: for cultures we care about request time, for others valid_from - labs_df["observation_datetime"] = labs_df["valid_from"] - - # Make a table of only the columns we want to keep - labs_only_df = labs_df.loc[ - :, ["hospital_visit_id", "observation_datetime", "vital", "value"] - ] - - # Now bin any rows outside of the time window (because blood cultures might have been ordered some time ago) - - ### This is the first possible point of failure - - print("trying timedelta thing") - begin_date = (date - timedelta(days=3)).isoformat() - - ### - - try: - labs_only_df = labs_only_df.loc[ - labs_only_df["observation_datetime"] > begin_date, : - ] - except: - locations_before_end = np.array( - labs_only_df["observation_datetime"], dtype=np.datetime64 - ) - labs_only_df = labs_only_df.loc[ - locations_before_end > np.datetime64(begin_date), : - ] - - ### Now consults - # Make an extra column as there is no 'value' associated with an order - consults_df["value"] = 1 - - # Rename and keep only the columns we want - consults_df["observation_datetime"] = consults_df["valid_from"] - consults_df["vital"] = consults_df["name"] - consults_only_df = consults_df.loc[ - :, ["hospital_visit_id", "observation_datetime", "vital", "value"] - ] - - # Combine all the palliative ones - consults_only_df.loc[ - consults_df.vital - == "Inpatient Consult to Symptom Control and Palliative Care", - ["vital"], - ] = "Recent_palliative_ref" - consults_only_df.loc[ - consults_df.vital - == "Inpatient Consult to Transforming end of life care team", - ["vital"], - ] = "Recent_palliative_ref" - - ### Now stick them all together - - results_df = pd.concat([obs_only_df, labs_only_df, consults_only_df]) - - # Now reset the index - results_df = results_df.reset_index() - results_df = results_df.loc[ - :, ["hospital_visit_id", "observation_datetime", "value", "vital"] - ] - - # Now drop any annoying duplicates - Unique_results_index = ( - results_df.loc[:, ["hospital_visit_id", "observation_datetime", "vital"]] - .drop_duplicates(keep="last") - .index - ) - results_df = results_df.loc[Unique_results_index, :] - - ### Now processing them into a pivot table - - # Now make a pivot table - Pivot_results = results_df.pivot( - index=["hospital_visit_id", "observation_datetime"], - columns="vital", - values=["value"], - ) - - # Annoying way to allow us to subsequently merge because pivotting on 2 columns gives multi index - Pivot_results.columns = [i[1] for i in Pivot_results.columns.to_flat_index()] - Pivot_results = Pivot_results.reset_index() - - ##Now split BP in the Pivotted results - # Find all non-na BPs and split them - BP_isnt_na = Pivot_results["BP"].isna() == False - Split_BP = Pivot_results.loc[BP_isnt_na, "BP"].str.split(pat="/") - - # Make new columns and get BPs including MAP - Pivot_results["Sys_BP"] = Pivot_results["Dia_BP"] = Pivot_results[ - "MAP" - ] = np.nan - Sys_BP = np.array([i[0] for i in Split_BP], dtype="int") - Dia_BP = np.array([i[1] for i in Split_BP], dtype="int") - - # Calculate MAP and then assign the values into the column - MAP = Dia_BP + (Sys_BP - Dia_BP) * (1 / 3) - Pivot_results.loc[BP_isnt_na, "Sys_BP"] = Sys_BP - Pivot_results.loc[BP_isnt_na, "Dia_BP"] = Dia_BP - Pivot_results.loc[BP_isnt_na, "MAP"] = MAP - - # Now merge back on the missing values - non_pivotted_columns = [ - "location_string", - "age_at_obs", - "mrn", - "hospital_visit_id", - "ethnicity", - "sex", - "bed", - "ward_raw", - "building", - "bed_type", - "icu_admission", - "hospital_discharge_dt", - ] - Pivot_all = pd.merge( - Pivot_results, obs_df.loc[:, non_pivotted_columns], on=["hospital_visit_id"] - ) - - # First drop duplicate rows - Pivot_all.drop_duplicates(inplace=True) - - ### Now the processing so we can infer what type of initial referral (specialty) the patients had - - # Duplicate others_df so we can rerun a few times - other_df = others_df.copy() - - # These are the two columns we are interested in - other_df["ref_type"] = None - other_df["onc_ref"] = False - - # Record whether each patient has a given type of referral - med_refs = np.array(other_df["med_ref"].isna(), dtype=int) - surg_refs = np.array(other_df["surg_ref"].isna(), dtype=int) - og_refs = np.array(other_df["og_ref"].isna(), dtype=int) - ortho_refs = np.array(other_df["ortho_ref"].isna(), dtype=int) - haem_onc_refs = np.array(other_df["haem_onc_ref"].isna(), dtype=int) - refs_array = np.array([surg_refs, med_refs, og_refs, haem_onc_refs, ortho_refs]) - - # Now determine the total number of referrals each patient has - number_refs = 5 - np.sum( - [med_refs, surg_refs, og_refs, ortho_refs, haem_onc_refs], axis=0 - ) - num_not_onc = 4 - np.sum([med_refs, surg_refs, og_refs, ortho_refs], axis=0) - - # Where only one referral make this the referral type - colnames = np.array(other_df.columns[2:7]) - single_refs = colnames[np.argmin(refs_array[:, num_not_onc == 1], axis=0)] - other_df.loc[num_not_onc == 1, ["ref_type"]] = single_refs - - print("trying to to_datetime") - # Convert all referral times to datetime where not already true - # This is annoying but necessary - try: - other_df.surg_ref = pd.to_datetime(other_df.surg_ref) - except: - print("surg ref doesnt need to be converted to datetime") - - try: - other_df.og_ref = pd.to_datetime(other_df.og_ref) - except: - print("og ref doesnt need to be converted to datetime") - - try: - other_df.ortho_ref = pd.to_datetime(other_df.ortho_ref) - except: - print("ortho ref doesnt need to be converted to datetime") - - try: - other_df.haem_onc_ref = pd.to_datetime(other_df.haem_onc_ref) - except: - print("haemonc ref doesnt need to be converted to datetime") - - try: - other_df.med_ref = pd.to_datetime(other_df.med_ref) - except: - print("med ref doesnt need to be converted to datetime") - - print("finished to datetime") - - # Now where multiple take last one (excluding haemonc) - non_onc_refs = np.array(["surg_ref", "med_ref", "og_ref", "ortho_ref"]) - - print("trying argmax_time") - - last_ref = other_df.loc[num_not_onc > 1, non_onc_refs].apply( - argmax_time, axis=1 - ) - - if np.where(num_not_onc > 1)[0].shape[0] > 0: - other_df.loc[num_not_onc > 1, ["ref_type"]] = non_onc_refs[last_ref] - print("finished argmax_time") - - # Now if there are any places where there is a haem ref but no other ref (unlikely due to sql query) - # set reftype to medref - haemonc_only = np.intersect1d( - np.where(other_df["ref_type"].isna() == True), - np.where(other_df.haem_onc_ref.isna() == False), - ) - if haemonc_only.shape[0] > 0: - other_df.loc[haemonc_only, ["ref_type"]] = "med_ref" - - # Now where there is a haemonc ref set haemonc to true - other_df.loc[other_df.haem_onc_ref.isna() == False, ["onc_ref"]] = True - - ### Now process theatre locations so we can see if someone has been to theatre before - - other_df["elective_surgery"] = 0 - other_df["emergency_surgery"] = 0 - - # Set where a patient has been to either elective or emergency theatres - other_df.loc[other_df["ever_surgery"] == "T02THR", "emergency_surgery"] = 1 - other_df.loc[other_df["ever_surgery"] == "THP3", "elective_surgery"] = 1 - other_df.loc[ - other_df["ever_surgery"] == "1021800001", "elective_surgery" - ] = 1 # GWB theatres - - # Now mark if patient has had recent or ever surgery - other_df["recent_surgery"] = other_df["recent_surgery"].isna() == False - other_df["ever_surgery"] = other_df["ever_surgery"].isna() == False - - # Now do the same for ICU - other_df["recent_icu"] = other_df["recent_icu"].isna() == False - - # And for DNACPR - other_df["dnacpr"] = other_df["dnacpr"] == "DNACPR" - - # And for emergency admission - other_df["emergency_admission"] = other_df["first_ward"].isna() == False - - # One hot encode ref_type - ref_cat = np.array(other_df["ref_type"]).reshape( - -1, 1 - ) # Annoying reshape for sk.OHE - OH_enc = OneHotEncoder() - OH_ref = OH_enc.fit_transform(ref_cat).toarray() - - # Make DF of them - OH_categories = OH_enc.categories_[0] - OH_categories[OH_categories == None] = "No_initial_ref" - ref_df = pd.DataFrame(OH_ref, columns=OH_categories) - - # Now make other_df only the colums we want - other_df = other_df.loc[ - :, - [ - "hospital_visit_id", - "admission_datetime", - "dnacpr", - "recent_surgery", - "ever_surgery", - "recent_icu", - "onc_ref", - "elective_surgery", - "emergency_surgery", - "emergency_admission", - ], - ] - - # Now merge back on - other_df = pd.concat([other_df, ref_df], axis=1) - - # Now add back this extra data - Pivot_all = pd.merge(Pivot_all, other_df, on=["hospital_visit_id"]) - - ### Some very simple data validation here - # Make some rules for imputation - No_flow_rate = np.where(Pivot_all["Oxygen therapy flow rate"].isna()) - - # Where there is no flow rate and on room air or no supplemental oxygen - Room_air = np.where(Pivot_all["Oxygen"] == "Room air") - No_resp_support = np.where( - Pivot_all["Oxygen delivery device"] == "No respiratory support provided" - ) - - # Where FiO2 is 21 or 22 or empty - FiO2_sealevel = np.where([23 < Pivot_all["FiO2"]] == False) - Room_air_no_support = np.union1d( - FiO2_sealevel, np.union1d(Room_air, No_resp_support) - ) - - # Now set to zero - Pivot_all.loc[ - Pivot_all.index[np.intersect1d(Room_air_no_support, No_flow_rate)], - "Oxygen therapy flow rate", - ] = 0 - - # Where GCS is 15 we can assume AVPU is A - GCS_15 = np.array(Pivot_all["GCS Total"] == 15, dtype="int") - AVPU_na = np.array(Pivot_all["AVPU"].isna(), dtype="int") - - # Should probably use GCS_V but not currently pulling through as no one has it - Pivot_all.loc[(GCS_15 + AVPU_na) > 1, "AVPU"] = "A" - - ### Now finally for the proper data transformation steps - - # First encode the oxygen delivery devices - O2_delivery_mapping = { - "No respiratory support provided": 0, - "Nasal cannula": 1, - "Simple mask": 1, - "Humidified oxygen mask": 1, - "Non-rebreather mask": 1, - "Capno mask": 1, - "CPAP/Bi-PAP mask": 2, - } - - Pivot_all["Oxygen_delivery_device_enc"] = pd.to_numeric( - Pivot_all["Oxygen delivery device"].map(O2_delivery_mapping), - errors="coerce", - ) - - # Now encode AVPU - AVPU_mapping = {"A": 0, "C": 1, "V": 2, "P": 3, "U": 4} - Pivot_all["AVPU_enc"] = pd.to_numeric( - Pivot_all["AVPU"].map(AVPU_mapping), errors="coerce" - ) - - # Now encode oxygen - Oxygen_mapping = {"Room air": 0, "Supplemental Oxygen": 1} - Pivot_all["Oxygen_enc"] = pd.to_numeric( - Pivot_all["Oxygen"].map(Oxygen_mapping), errors="coerce" - ) - - # Combine where more than one source is available - if "Na+" in Pivot_all.columns: - Pivot_all["NA"] = Pivot_all["NA"].combine_first(Pivot_all["Na+"]) - if "K+" in Pivot_all.columns: - Pivot_all["K"] = Pivot_all["K"].combine_first(Pivot_all["K+"]) - if "Crea" in Pivot_all.columns: - Pivot_all["CREA"] = Pivot_all["CREA"].combine_first(Pivot_all["Crea"]) - if "NEWS2 Score" in Pivot_all.columns: - Pivot_all["NEWS Score"] = Pivot_all["NEWS Score"].combine_first( - Pivot_all["NEWS2 Score"] - ) - if "tHb" in Pivot_all.columns: - Pivot_all["Hb"] = Pivot_all["HBGL"].combine_first(Pivot_all["tHb"]) - if "UREA" in Pivot_all.columns: - if "Urea" in Pivot_all.columns: - Pivot_all["UREA"] = Pivot_all["UREA"].combine_first(Pivot_all["Urea"]) - - ### Some one-hot encoding of ethnicity and then other variables - # Here I effectively decided that refused to give/unavailable should be NA - ethnicity_mapping = { - "White British": "white", - "White Irish": "white", - "Other White Background": "white", - "Black Caribbean": "black", - "Black African": "black", - "Other Black Background": "black", - "BLACK BRITIS": "black", - "Asian Bangladeshi": "asian", - "Asian Indian": "asian", - "Asian Pakistani": "asian", - "Other Asian Background": "asian", - "Chinese": "chinese", - #'Not Yet Asked': 'other', - "Other Ethnic Group": "other", - # None: 'other', - #'Not Stated/ Unknown': 'other', - "Other Mixed Background": "other", - "Mixed White and Asian": "other", - "Mixed White and Black Caribbean": "other", - #'Refused to Give': 'other', - "Mixed White and Black African": "other", - } - - # Make an intermediate variable with larger categories - Pivot_all["ethnic_cat"] = Pivot_all["ethnicity"].map(ethnicity_mapping) - - # Now do the one hot encoding - ethnic_cat = np.array(Pivot_all["ethnic_cat"]).reshape( - -1, 1 - ) # Annoying reshape for sk.OHE - OH_enc = OneHotEncoder() - OH_ethnicity = OH_enc.fit_transform(ethnic_cat).toarray() - - # Now make something we can merge back onto the main table - ethnic_categories = [str(i) + "_ethnicity" for i in OH_enc.categories_[0]] - - # Don't want one named 'nan_ethnicity' - nan_ethnicity = [ - i for i, j in enumerate(ethnic_categories) if j == "nan_ethnicity" - ] - ethnic_categories[nan_ethnicity[0]] = "missing_ethnicity" - ethnicity_df = pd.DataFrame(OH_ethnicity, columns=ethnic_categories) - - # Now merge back on - Pivot_all = pd.concat([Pivot_all, ethnicity_df], axis=1) - - ### Now for the wards - these are just the wards that were available that day but I plan to strip it down so only certain wards are available - - ward_list = np.array( - [ - "10201000174", - "1020100163", - "1020100172", - "1020100175", - "1021800004", - "1021800025", - "1021800026", - "1021800027", - "1021800028", - "1021800030", - "1021800031", - "ACU", - "BBNU", - "BCN", - "COB", - "F3NU", - "HS15", - "HSDC", - "LW", - "MFAW", - "T01", - "T01ECU", - "T06H", - "T07", - "T08N", - "T08S", - "T09C", - "T09N", - "T09S", - "T10O", - "T10S", - "T12N", - "T12S", - "T13N", - "T13S", - "T14N", - "T14S", - "T16N", - "T16S", - ] - ) - - # Now do the one hot encoding - ward_array = ward_list.reshape(-1, 1) # Annoying reshape for sk.OHE - OH_enc = OneHotEncoder(handle_unknown="ignore") - OH_enc.fit(ward_array) # Fit the encoder - OH_ward = OH_enc.transform( - np.array(Pivot_all["ward_raw"]).reshape(-1, 1) - ).toarray() - - # Rename them so it says ward - ward_list = [i + "_ward" for i in ward_list] - ward_df = pd.DataFrame(OH_ward, columns=ward_list) - - # Now merge back on - Pivot_all = pd.concat([Pivot_all, ward_df], axis=1) - - # Do something with the all pressure areas thing: - Pressure_mapping = {"No (Comment)": 0, "Yes": 1} - # Sorry this is a slightly nasty looking line - Pivot_all["pressure_areas_observed"] = pd.to_numeric( - Pivot_all["All pressure areas observed?"].map(Pressure_mapping), - errors="coerce", - ) - - # Sex - Sex_mapping = {"F": 0, "M": 1} - Pivot_all["sex_enc"] = pd.to_numeric( - Pivot_all["sex"].map(Sex_mapping), errors="coerce" - ) - - # Building - Building_mapping = {"tower": 0, "EGA": 1, "GWB": 2} - Pivot_all["building_enc"] = pd.to_numeric( - Pivot_all["building"].map(Building_mapping), errors="coerce" - ) - - # Bed type - Bed_mapping = {"bay": 0, "sideroom": 1} - Pivot_all["bed_type_enc"] = pd.to_numeric( - Pivot_all["bed_type"].map(Bed_mapping), errors="coerce" - ) - - # Mark if a patient is on the NEWS2 Scale - if "NEWS2_Score" in Pivot_all.columns: - Pivot_all["NEWS2_scale"] = Pivot_all.NEWS2_Score.isna() == False - else: - Pivot_all["NEWS2_scale"] = False - - # Remove spaces from colnames - Pivot_all.columns = [re.sub(" ", "_", i) for i in Pivot_all.columns] - - ### Now finally for the data aggregation steps - - # If columns not avalaible make them but empty: - columns_for_transformed = cols_for_agg + cols_for_last + cols_for_count - available_columns = np.intersect1d(columns_for_transformed, Pivot_all.columns) - unavailable_columns = [ - i for i in columns_for_transformed if not i in available_columns - ] - Pivot_all.reset_index(inplace=True) - try: - Pivot_all.loc[:, unavailable_columns] = np.nan - except: - for i in unavailable_columns: - Pivot_all.loc[:, [i]] = np.nan - - # Force all interesting columns to numeric - Transformed_dataframe = Pivot_all.loc[ - :, cols_for_agg + cols_for_last + cols_for_count - ] - non_numeric_columns = Transformed_dataframe.dtypes.index[ - Transformed_dataframe.dtypes == "object" - ] - Transformed_dataframe[non_numeric_columns] = Transformed_dataframe[ - non_numeric_columns - ].apply(pd.to_numeric, errors="coerce") - - # Add back CSN and datetime - Transformed_dataframe[ - ["hospital_visit_id", "observation_datetime", "ward_raw"] - ] = Pivot_all[["hospital_visit_id", "observation_datetime", "ward_raw"]] - - # Set up our new storage - final_inputs_index = Transformed_dataframe["hospital_visit_id"].unique() - final_inputs = pd.DataFrame( - np.nan, columns=final_inputs_colnames, index=final_inputs_index - ) - - for colname in cols_for_agg: - all_colnames = [ - f"Mean_{colname}", - f"Slope_{colname}", - f"R_{colname}", - f"Count_{colname}", - f"Last_{colname}", - ] - - # We're looping through all of the columns calling these aggregate functions - final_inputs.loc[:, all_colnames] = Transformed_dataframe.groupby( - "hospital_visit_id" - ).agg( - **{ - f"Mean_{colname}": pd.NamedAgg(colname, aggfunc=np.mean), - # These two return the slope and r value for a least squares fit line - f"Slope_{colname}": pd.NamedAgg( - colname, aggfunc=lambda x: linear_slope(x, returns="slope") - ), - f"R_{colname}": pd.NamedAgg( - colname, aggfunc=lambda x: linear_slope(x, returns="r value") - ), - # These named functions exclude nans helpfully - f"Count_{colname}": pd.NamedAgg(colname, aggfunc="count"), - f"Last_{colname}": pd.NamedAgg(colname, aggfunc="last"), - } - ) - - for colname in cols_for_last: - # We're looping through all of the columns calling these aggregate functions - final_inputs.loc[:, colname] = Transformed_dataframe.groupby( - "hospital_visit_id" - ).agg(**{colname: pd.NamedAgg(colname, aggfunc="last")}) - - for colname in cols_for_count: - # We're looping through all of the columns calling these aggregate functions - final_inputs.loc[:, colname] = Transformed_dataframe.groupby( - "hospital_visit_id" - ).agg(**{colname: pd.NamedAgg(colname, aggfunc="count")}) - - final_inputs.loc[:, "ward_raw"] = Transformed_dataframe.groupby( - "hospital_visit_id" - ).agg(**{"ward_raw": pd.NamedAgg("ward_raw", aggfunc="last")}) - - ### Now for the ward acuity steps - final_inputs["ward_NEWS_over_5"] = np.nan - final_inputs["average_ward_NEWS"] = np.nan - - # Work through all the wards, getting the number of patients with a NEWS > 5 - for i in final_inputs["ward_raw"].unique(): - ward_locs = final_inputs["ward_raw"] == i - - # Patients with a NEWS >5 - ward_NEWS_over_5 = len( - np.intersect1d( - np.where(pd.to_numeric(final_inputs["Last_NEWS_Score"]) >= 5), - np.where(ward_locs), - ) - ) - - # Mean news - mean_NEWS = np.nanmean(final_inputs.Last_NEWS_Score[ward_locs]) - - # Now re_allocate - final_inputs.loc[ward_locs, ["average_ward_NEWS"]] = mean_NEWS - final_inputs.loc[ward_locs, ["ward_NEWS_over_5"]] = ward_NEWS_over_5 - - ### Now we are going to impute the missing values - # Keep track of missingness - for i in cols_for_agg: - final_inputs[f"Missing_{i}"] = final_inputs[f"Last_{i}"].isna() - - # Now work through and do the median imputation - for i in medians: - final_inputs.loc[final_inputs[i].isna(), i] = medians[i] - - # Make all others 0 where they are nan - for i in cols_for_count: - final_inputs.loc[final_inputs[i].isna(), i] = 0 - - # Finally paste onto our practice dataset - practice_dataset = practice_dataset.append( - final_inputs.loc[:, practice_dataset_colnames] - ) - - # Now return the practice dataset - return practice_dataset, obs_df, others_df, results_df, labs_only_df - - -def pull_extra_data(csns, engine): - # Now pull some additional data to join to this - data_pull = sql_query_from_file("Extra_data_for_model.sql", verbose=False) - - # Process IDs into useable string - formatted_csns = "'" + str(csns[0]) + "'" - for i in csns[1:]: - formatted_csns = formatted_csns + ", " + "'" + str(i) + "'" - - formatted_data_pull = data_pull.format(csns=formatted_csns) - return pd.read_sql(formatted_data_pull, engine) diff --git a/api/src/api/perrt/admission_probability/predictions_script.py b/api/src/api/perrt/admission_probability/predictions_script.py deleted file mode 100644 index e78c0135..00000000 --- a/api/src/api/perrt/admission_probability/predictions_script.py +++ /dev/null @@ -1,91 +0,0 @@ -# Ignore xgboost import, it's required for pickled file -import xgboost # noqa: F401 - -# from api.db import get_star_session -# from sqlmodel import Session -from sqlalchemy import create_engine - -import pickle -import pandas as pd -from pathlib import Path - -# import os -import re - -# import sched -# import time -# from sqlalchemy import create_engine -from .functions import run_pipeline # type: ignore - -from api.config import get_settings - -_this_file = Path(__file__) - -# def get_emapdb_engine(): -# get_settings().star_dsn -# return create_engine(get_settings().star_dsn) - - -def get_predictions(dataset: pd.DataFrame) -> dict: - # Load the model and shap model - with open(f"{_this_file.parent.resolve()}/final_model.pkl", "rb") as f: - model = pickle.load(f) - - # Remove columns with 'ward' in them (these may cause model drift) - ward_columns = [i for i in dataset.columns if re.match(".*_ward$", i)] - ward_columns.extend(["icu_admission"]) - cols_for_use = [i for i in dataset.columns if i not in ward_columns] - - # Make our predictions - predictions = model.predict_proba(dataset.loc[:, cols_for_use])[:, 1] - - return dict(zip(dataset.index.map(str), predictions.tolist())) - - -# def write_predictions(predictions_map: dict) -> None: -# generated_data_folder_path = Path(f"{Path(__file__).parent}/generated_data") - -# if not generated_data_folder_path.is_dir(): -# os.makedirs(generated_data_folder_path) - -# with open( -# f"{generated_data_folder_path}/id_to_admission_prediction.pkl", "wb" -# ) as f: -# print("Pickling predictions map") -# pickle.dump(predictions_map, f) - - -def run_prediction_pipeline() -> dict: - # most return variables unused for our use case - - settings = get_settings() - - if settings.icu_admission_predictions: - return {} - - dataset, _, _, _, _ = run_pipeline( - list([pd.to_datetime("now").date()]), - create_engine(settings.star_dsn, echo=settings.echo_sql), - now=True, - ) - - return get_predictions(dataset) - # write_predictions(predictions_map) - - # scheduler.enter( - # interval, 1, run_prediction_pipeline, (db_engine, scheduler, interval) - # ) - - -# if __name__ == "__main__": -# # functions.py relies on specific, relative paths -# dir_path = os.path.dirname(os.path.realpath(__file__)) -# os.chdir(dir_path) - -# scheduler = sched.scheduler(time.time, time.sleep) - -# emapdb_engine = get_emapdb_engine() - -# run_prediction_pipeline(emapdb_engine, scheduler, interval=1800) - -# scheduler.run() diff --git a/api/src/api/perrt/admission_probability/sql/Consults_V3.sql b/api/src/api/perrt/admission_probability/sql/Consults_V3.sql deleted file mode 100644 index 6e26b798..00000000 --- a/api/src/api/perrt/admission_probability/sql/Consults_V3.sql +++ /dev/null @@ -1,24 +0,0 @@ ---Pull most common consults - D Stein 2022 - -SELECT ct.name, -cr.hospital_visit_id, -cr.scheduled_datetime valid_from - -FROM star.consultation_type ct -RIGHT JOIN star.consultation_request cr ON ct.consultation_type_id = cr.consultation_type_id - ---WHERE cr.valid_from BETWEEN NOW() - '10 DAYS'::INTERVAL AND NOW() -WHERE ct.name IN ( - 'Inpatient consult to PERRT', - 'Inpatient Consult to Symptom Control and Palliative Care', - 'Inpatient Consult to Transforming end of life care team', - 'Inpatient consult to Intensivist', - 'Inpatient consult to Social Work') - -AND cr.cancelled = 'false' -AND cr.closed_due_to_discharge = 'false' - -AND cr.scheduled_datetime BETWEEN {end_time} - '{horizon}'::INTERVAL AND {end_time} - -AND cr.hospital_visit_id IN ({hv_ids}) -ORDER BY cr.hospital_visit_id DESC diff --git a/api/src/api/perrt/admission_probability/sql/Extra_data_for_model.sql b/api/src/api/perrt/admission_probability/sql/Extra_data_for_model.sql deleted file mode 100644 index 32934e80..00000000 --- a/api/src/api/perrt/admission_probability/sql/Extra_data_for_model.sql +++ /dev/null @@ -1,112 +0,0 @@ --- Query to join with deterioration data to get some up to date data - - --- Get last location -WITH last_location AS ( - SELECT DISTINCT ON (lv.hospital_visit_id) lv.hospital_visit_id, - loc.location_string, - -- define building / physical site - CASE - -- THP3 includes podium theatres - WHEN SPLIT_PART(location_string,'^',1) ~ '^(T0|T1|THP3|ED(?!H))' THEN 'tower' - WHEN SPLIT_PART(location_string,'^',2) ~ '^(UCH T|T0|T1)' THEN 'tower' - WHEN SPLIT_PART(location_string,'^',2) ~ '^E0' THEN 'EGA' -- this is a guess - WHEN SPLIT_PART(location_string,'^',2) ~ '^GWB' THEN 'GWB' -- Grafton way building - END AS building, - - -- define bed type - CASE - WHEN SUBSTR(SPLIT_PART(location_string,'^',3),1,2) IN ('BY', 'CB') then 'bay' - WHEN SUBSTR(SPLIT_PART(location_string,'^',3),1,2) IN ('SR') then 'sideroom' - WHEN SUBSTR(SPLIT_PART(location_string,'^',3),1,2) IN ('CH') then 'chair' - WHEN SUBSTR(SPLIT_PART(location_string,'^',3),1,2) IN ('TR') then 'treatment room' - WHEN SUBSTR(SPLIT_PART(location_string,'^',3),1,2) IN ('PR') then 'procedure room' - WHEN location_string ~ '.*(SURGERY|THR|PROC|ENDO|TREAT|ANGI).*|.+(?= {end_time} - '{horizon}'::INTERVAL -AND res.result_last_modified_datetime <= {end_time} - --- Now choose which labs we want -AND def.test_lab_code IN ('HBGL', 'RCC', 'HCT', 'HCTU', 'MCVU', 'PLT', 'NE', 'WCC', 'LY', -- FBC - 'NA', 'K', 'CREA', 'GFR', 'UREA' -- U+Es - 'BILI', 'ALP', 'ALT', 'ALB', --LFTs - 'CRP', 'MG', 'CA', 'CCA', 'PHOS', 'LDH', 'HTRT', --Other - 'INR', 'PT', 'APTT' --clotting - 'GLU', 'Glu', 'pH', 'pCO2', 'K+', 'Na+', 'Lac', 'Urea', 'Crea', 'tHb', 'COHb', 'Ferr', 'pO2', 'Urea') - ---Only patients in the previous data pull -AND lo.hospital_visit_id IN ({hv_ids}) - -ORDER BY res.lab_order_id, lo.request_datetime ASC; diff --git a/api/src/api/perrt/admission_probability/sql/Observations_V3.sql b/api/src/api/perrt/admission_probability/sql/Observations_V3.sql deleted file mode 100644 index b6416f25..00000000 --- a/api/src/api/perrt/admission_probability/sql/Observations_V3.sql +++ /dev/null @@ -1,384 +0,0 @@ --- Updated observations view --- D Stein Mar 2022 - -WITH ward_location AS ( - - SELECT DISTINCT location_string loc - - ,location_id - ,location_string - - ,SPLIT_PART(location_string,'^',3) bed - ,SPLIT_PART(location_string,'^',1) ward_raw - - -- define building / physical site - ,CASE - -- THP3 includes podium theatres - WHEN SPLIT_PART(location_string,'^',1) ~ '^(T0|T1|THP3|ED(?!H))' THEN 'tower' - WHEN SPLIT_PART(location_string,'^',2) ~ '^(UCH T|T0|T1)' THEN 'tower' - WHEN SPLIT_PART(location_string,'^',2) ~ '^E0' THEN 'EGA' -- this is a guess - WHEN SPLIT_PART(location_string,'^',2) ~ '^GWB' THEN 'GWB' -- Grafton way building - WHEN SPLIT_PART(location_string,'^',1) ~ '^MFAW' THEN 'EGA' -- MFAW is maternal and fetal admission unit? - END AS building - - -- define bed type - ,CASE - WHEN SUBSTR(SPLIT_PART(location_string,'^',3),1,2) IN ('BY', 'CB') then 'bay' - WHEN SUBSTR(SPLIT_PART(location_string,'^',3),1,2) IN ('SR') then 'sideroom' - WHEN SUBSTR(SPLIT_PART(location_string,'^',3),1,2) IN ('CH') then 'chair' - WHEN location_string ~ '.*(SURGERY|THR|PROC|ENDO|TREAT|ANGI).*|.+(?= {end_time} - '6 MONTHS'::INTERVAL -- Bin patients who have been in a given bed an unfeasibly long time - AND (hv.discharge_datetime IS NULL OR hv.discharge_datetime > {end_time}) -- check patient is still in hospital at horizon - AND (lv.discharge_datetime IS NULL OR lv.discharge_datetime > {end_time}) -- check patient is still at location at horizon - AND (pt.date_of_death IS NULL OR pt.date_of_death > {end_time}) -- check patient is alive at horizon - - ), - census AS - ( - SELECT csn, - hv_id, - admission_dt, - discharge_dt, - hl7_location, - mrn - FROM ( - SELECT csn, - hv_id, - admission_dt, - discharge_dt, - hl7_location, - ROW_NUMBER() OVER (PARTITION BY hl7_location ORDER BY admission_dt DESC) AS POSITION, - mrn - FROM rough_census - ) occupant_ordered - WHERE occupant_ordered.position = 1 -- filters ghosts who may be lingering in a bed - ) - --- Now repeat the census query but this time for ICU --- First do the census query -, rough_ICU_census AS - ( - SELECT hv.encounter AS csn, - hv.hospital_visit_id AS hv_id, - lv.admission_datetime AS admission_dt, - lv.discharge_datetime AS discharge_dt, - loc.location_string AS hl7_location, - m.mrn AS mrn - - FROM star.hospital_visit hv - LEFT JOIN star.mrn m - ON hv.mrn_id = m.mrn_id - LEFT JOIN star.core_demographic pt - ON m.mrn_id = pt.mrn_id - LEFT JOIN star.location_visit lv - ON hv.hospital_visit_id = lv.hospital_visit_id - LEFT JOIN star.location loc - ON lv.location_id = loc.location_id - - - WHERE ({icu_location}) - AND hv.patient_class IN ('INPATIENT', 'EMERGENCY') - AND hv.admission_datetime IS NOT NULL -- check a valid hospital visit - AND lv.admission_datetime >= {end_time} -- check admission happened in the future - AND lv.admission_datetime <= {end_time} + '24 HOURS'::INTERVAL -- check admission happened in about 24h time - AND (hv.discharge_datetime IS NULL OR hv.discharge_datetime > {end_time} + '24 HOURS'::INTERVAL) -- check patient is still in hospital at horizon - AND (lv.discharge_datetime IS NULL OR lv.discharge_datetime > {end_time} + '24 HOURS'::INTERVAL) -- check patient is still at location at horizon - AND (pt.date_of_death IS NULL OR pt.date_of_death > {end_time}) -- check patient is alive at time of prediction, so long as they are admitted to ICU - - ), - - ICU_census AS - ( - SELECT csn, - hv_id, - admission_dt, - hl7_location, - mrn - FROM ( - SELECT csn, - hv_id, - admission_dt, - hl7_location, - ROW_NUMBER() OVER (PARTITION BY hl7_location ORDER BY admission_dt DESC) AS POSITION, - mrn - FROM rough_ICU_census - ) occupant_ordered - WHERE occupant_ordered.position = 1 -- filters ghosts who may be lingering in a bed - ) - --- Now do the actual observations pull based on -SELECT - -- observation details - ob.visit_observation_id, - ob.hospital_visit_id, - ob.observation_datetime, - - --,ob.visit_observation_type_id - ot.id_in_application, - - -- label nicely - CASE - WHEN ot.id_in_application = '10' THEN 'SpO2' - WHEN ot.id_in_application = '5' THEN 'BP' - WHEN ot.id_in_application = '3040109304' THEN 'Oxygen' - WHEN ot.id_in_application = '6' THEN 'Temp' - WHEN ot.id_in_application = '8' THEN 'Pulse' - WHEN ot.id_in_application = '9' THEN 'Resp' - WHEN ot.id_in_application = '6466' THEN 'AVPU' - WHEN ot.id_in_application = '28315' THEN 'NEWS Score' - WHEN ot.id_in_application = '401001' THEN 'GCS Total' - WHEN ot.id_in_application = '3040109305' THEN 'Oxygen delivery device' - WHEN ot.id_in_application = '250026' THEN 'Oxygen therapy flow rate' - WHEN ot.id_in_application = '301550' THEN 'FiO2' - WHEN ot.id_in_application = '28316' THEN 'NEWS2 Score' - WHEN ot.id_in_application = '3040104280' THEN 'Pain score, verbal at rest' - WHEN ot.id_in_application = '3040104281' THEN 'Pain score, verbal on movement' - WHEN ot.id_in_application = '6600' THEN 'All pressure areas observed?' - - END AS vital, - - ob.value_as_real, - ob.value_as_text, - ob.unit, - - -- Admisssion time, discharge time, location, age can probably be removed when happy with this string - --loc.admission_datetime, - --loc.discharge_datetime, - lo.location_string, - demog.date_of_birth, - - -- Can think about making this a decimal? - EXTRACT(YEAR FROM AGE(ob.observation_datetime, demog.date_of_birth)) AS age_at_obs, - - -- Include MRN and CSN - mrn.mrn - ,visit.encounter AS csn -- NOTE changed for convenience - unclear whether encounter or hospital_visit_id are the correct csn - --,visit.hospital_visit_id - - --Include some other demographics as well - ,demog.ethnicity - ,demog.home_postcode -- for index of multiple deprivation - ,demog.sex - - -- Now include sideroom, unique ward name etc - ,ward_location.bed - ,ward_location.ward_raw - ,ward_location.building - ,ward_location.bed_type - - -- Generate our ICU admission outcome - ,CASE - WHEN visit.encounter IN (SELECT csn FROM ICU_census) THEN CAST(1 AS BIT) - ELSE CAST(0 AS BIT) - END AS icu_admission - - -- Hospital discharge date - ,visit.discharge_datetime hospital_discharge_dt - -FROM - star.visit_observation ob - --- observation look-up - LEFT JOIN - star.visit_observation_type ot - ON ob.visit_observation_type_id = ot.visit_observation_type_id - - -- Now add in the hospital locations - FULL JOIN star.location_visit loc - ON ob.hospital_visit_id = loc.hospital_visit_id - - -- Get the actual location names - INNER JOIN star.location lo ON loc.location_id = lo.location_id - - -- Get the patient ages so we can bin children - need to match the MRN first - INNER JOIN star.hospital_visit visit ON visit.hospital_visit_id = loc.hospital_visit_id - - -- Now we can pull birthday - INNER JOIN star.core_demographic demog ON visit.mrn_id = demog.mrn_id - - -- Now add MRN for EPIC observation crosscheck - INNER JOIN star.mrn mrn ON demog.mrn_id = mrn.mrn_id - - -- Now add the bed location (bed, sideroom, ward etc) - INNER JOIN ward_location ON lo.location_string = ward_location.loc - --- Only recent obs at this stage -WHERE (ob.observation_datetime >= {end_time} - '{horizon}'::INTERVAL AND - ob.observation_datetime <= {end_time}) - --- Only use patients over 16 -AND ob.observation_datetime - demog.date_of_birth > '{min_age}'::INTERVAL - --- Only include named obs -AND ot.id_in_application in - - ( - '10' --'SpO2' -- 602063230 - ,'5' --'BP' -- 602063234 - ,'3040109304' --'Room Air or Oxygen' -- 602063268 - ,'6' --'Temp' -- 602063248 - ,'8' --'Pulse' -- 602063237 - ,'9' --'Resp' -- 602063257 - ,'6466' -- Level of consciousness - ,'28315' -- NEWS Score - ,'401001' -- GCS total - ,'3040109305' -- Oxygen delivery device - ,'250026' -- Oxygen therapy flow rate - ,'301550' -- FiO2 - ,'28316' -- NEWS2 score - ,'3040104280' -- Pain score, verbal at rest - ,'3040104281' -- Pain score, verbal on movement - ,'6600' -- All pressure areas observed? -) - - --- Now ensure that we are only looking at obs from ward patients using previously built view -- should consider whether we actually need this? -AND lo.location_string IN ({location}) - - --- Now bin all rows where the observation isn't in the location admission window - could be using between here? -AND -ob.observation_datetime >= loc.admission_datetime - -AND -(ob.observation_datetime <= loc.discharge_datetime OR loc.discharge_datetime IS NULL) - --- Only include specified CSNs -AND visit.encounter IN (SELECT csn from census) - -ORDER BY visit.hospital_visit_id, ob.observation_datetime DESC -; diff --git a/api/src/api/perrt/admission_probability/sql/Others_V3.sql b/api/src/api/perrt/admission_probability/sql/Others_V3.sql deleted file mode 100644 index 0cba61fa..00000000 --- a/api/src/api/perrt/admission_probability/sql/Others_V3.sql +++ /dev/null @@ -1,296 +0,0 @@ --- Pulling additional data for patients on wards --- D Stein 2022 - --- First list all possible ED locations: -WITH ed_locations AS ( -SELECT DISTINCT * FROM star.location - --- Possible ED strings - either 'ED^...' or null^ED ... or ED^UCHED or SDEC present -WHERE (SPLIT_PART(location_string , '^', 1) = 'ED' -OR SPLIT_PART(location_string , '^', 2) LIKE 'ED %%' -OR location_string LIKE '%%SDEC%%' -OR SPLIT_PART(location_string, '^', 2) LIKE 'UCHED%%') - --- Don't want to inclued eastman dental or national ENT hospital -AND location_string NOT LIKE '%%ENTED%%' -AND location_string NOT LIKE '%%EDH%%' -ORDER BY location_string), - - --- Now pull the surgical referrals -surgical AS ( -SELECT DISTINCT ON (cr.hospital_visit_id) cr.hospital_visit_id, -cr.scheduled_datetime, -ct.name - -FROM star.consultation_type ct -RIGHT JOIN star.consultation_request cr ON ct.consultation_type_id = cr.consultation_type_id -INNER JOIN star.location_visit lv ON cr.hospital_visit_id = lv.hospital_visit_id -INNER JOIN star.location loc ON lv.location_id = loc.location_id - -WHERE ct.name IN ('Inpatient consult to General Surgery', - 'Inpatient consult to Urology', - 'Inpatient consult to Vascular Surgery', - 'Inpatient consult to ENT', - 'Inpatient consult to Oral & Maxillofacial Surgery', - 'Inpatient consult to Stoma Care Nursing') -AND cr.cancelled = 'false' -AND cr.closed_due_to_discharge = 'false' -AND cr.scheduled_datetime >= lv.admission_datetime -AND (cr.scheduled_datetime <= lv.discharge_datetime OR lv.discharge_datetime IS NULL) -AND loc.location_string IN (SELECT location_string FROM ed_locations) -ORDER BY cr.hospital_visit_id, cr.scheduled_datetime, ct.name DESC), - - --- Now pull the medical referrals (note including haem and onc here) -medical AS ( -SELECT DISTINCT ON (cr.hospital_visit_id) cr.hospital_visit_id, -cr.scheduled_datetime, -ct.name - -FROM star.consultation_type ct -RIGHT JOIN star.consultation_request cr ON ct.consultation_type_id = cr.consultation_type_id -INNER JOIN star.location_visit lv ON cr.hospital_visit_id = lv.hospital_visit_id -INNER JOIN star.location loc ON lv.location_id = loc.location_id - -WHERE ct.name IN ('Inpatient consult to Acute Medicine', - 'ED consult to Ambulatory Medicine', - 'Inpatient consult to Internal Medicine', - 'Inpatient consult to Haematology', - 'Inpatient consult to Cardiology', - 'Inpatient consult to Renal Medicine', - 'Inpatient consult to Care of the Elderly', - 'Inpatient consult to Tropical Medicine', - 'Inpatient consult to Endocrinology', - 'Inpatient consult to Rheumatology', - 'Inpatient consult to Nuclear Medicine', - 'Inpatient consult to Oncology', - 'Inpatient consult to Adult Endocrine & Diabetes', - 'Inpatient consult to Respiratory Medicine', - 'Inpatient consult to Gastroenterology' - ) -AND cr.cancelled = 'false' -AND cr.closed_due_to_discharge = 'false' -AND cr.scheduled_datetime >= lv.admission_datetime -AND (cr.scheduled_datetime <= lv.discharge_datetime OR lv.discharge_datetime IS NULL) -AND loc.location_string IN (SELECT location_string FROM ed_locations) -ORDER BY cr.hospital_visit_id, cr.scheduled_datetime, ct.name DESC), - - --- Now pull O+G -gynae AS ( -SELECT DISTINCT ON (cr.hospital_visit_id) cr.hospital_visit_id, -ct.name, -cr.scheduled_datetime - -FROM star.consultation_type ct -RIGHT JOIN star.consultation_request cr ON ct.consultation_type_id = cr.consultation_type_id -INNER JOIN star.location_visit lv ON cr.hospital_visit_id = lv.hospital_visit_id -INNER JOIN star.location loc ON lv.location_id = loc.location_id - - -WHERE ct.name IN ('Inpatient consult to Gynaecology', 'Inpatient consult to Obstetrics') -AND cr.cancelled = 'false' -AND cr.closed_due_to_discharge = 'false' -AND cr.scheduled_datetime >= lv.admission_datetime -AND (cr.scheduled_datetime <= lv.discharge_datetime OR lv.discharge_datetime IS NULL) -AND loc.location_string IN (SELECT location_string FROM ed_locations) -ORDER BY cr.hospital_visit_id, cr.scheduled_datetime, ct.name DESC), - - - --- Now pull ortho referrals -ortho AS ( -SELECT DISTINCT ON (cr.hospital_visit_id) cr.hospital_visit_id, - ct.name, -cr.scheduled_datetime - -FROM star.consultation_type ct -RIGHT JOIN star.consultation_request cr ON ct.consultation_type_id = cr.consultation_type_id -INNER JOIN star.location_visit lv ON cr.hospital_visit_id = lv.hospital_visit_id -INNER JOIN star.location loc ON lv.location_id = loc.location_id - -WHERE ct.name = 'Inpatient consult to Orthopedic Surgery' -AND cr.cancelled = 'false' -AND cr.closed_due_to_discharge = 'false' -AND cr.scheduled_datetime >= lv.admission_datetime -AND (cr.scheduled_datetime <= lv.discharge_datetime OR lv.discharge_datetime IS NULL) -AND loc.location_string IN (SELECT location_string FROM ed_locations) -ORDER BY cr.hospital_visit_id, cr.scheduled_datetime, ct.name DESC), - - - --- Here we are pulling haemonc referrals -oncology AS ( -SELECT DISTINCT ON (cr.hospital_visit_id) cr.hospital_visit_id, -ct.name, -cr.scheduled_datetime - -FROM star.consultation_type ct -RIGHT JOIN star.consultation_request cr ON ct.consultation_type_id = cr.consultation_type_id -INNER JOIN star.location_visit lv ON cr.hospital_visit_id = lv.hospital_visit_id -INNER JOIN star.location loc ON lv.location_id = loc.location_id - -WHERE ct.name IN ('Inpatient consult to Oncology', 'Inpatient consult to Haematology') -AND cr.cancelled = 'false' -AND cr.closed_due_to_discharge = 'false' -AND cr.scheduled_datetime >= lv.admission_datetime -AND (cr.scheduled_datetime <= lv.discharge_datetime OR lv.discharge_datetime IS NULL) -AND loc.location_string IN (SELECT location_string FROM ed_locations) -ORDER BY cr.hospital_visit_id, cr.scheduled_datetime, ct.name DESC), - --- Now pull some other things that we are interested in - dnacpr AS ( - SELECT DISTINCT ON (ad.hospital_visit_id) ad.hospital_visit_id, - ad.valid_from, - adt.name - - FROM star.advance_decision ad - - JOIN star.advance_decision_type adt - ON adt.advance_decision_type_id = ad.advance_decision_type_id - - WHERE ad.hospital_visit_id IN ({hv_ids}) - ORDER BY ad.hospital_visit_id, ad.valid_from DESC - ), - --- Now pull first location - emergency_admission AS (SELECT DISTINCT ON (lv.hospital_visit_id) lv.hospital_visit_id, - loc.location_string, - - SPLIT_PART(loc.location_string, '^', 1) ward_raw - - FROM star.location_visit lv - LEFT JOIN star.location loc ON lv.location_id = loc.location_id - WHERE lv.hospital_visit_id IN ({hv_ids}) - AND loc.location_string IN (SELECT location_string FROM ed_locations) - ORDER BY lv.hospital_visit_id, lv.admission_datetime ASC), - - --- Now pull whether they have recently been in theatres - recent_surgery AS (SELECT DISTINCT ON (lv.hospital_visit_id) lv.hospital_visit_id, - loc.location_string, - - SPLIT_PART(loc.location_string, '^', 1) ward_raw - - FROM star.location_visit lv - LEFT JOIN star.location loc ON lv.location_id = loc.location_id - WHERE lv.hospital_visit_id IN ({hv_ids}) - - --Choose theatres - AND SPLIT_PART(loc.location_string, '^', 1) IN ('THP3', 'T02THR', '1021800001') -- 1021800001 is GWB theatres - - --Make sure they were only in theatres in the past - AND lv.discharge_datetime <= {end_time} - AND lv.discharge_datetime >= {end_time} - '{horizon}'::INTERVAL - - ORDER BY lv.hospital_visit_id, lv.admission_datetime ASC), - --- Now pull whether they have ever been in theatres - ever_surgery AS (SELECT DISTINCT ON (lv.hospital_visit_id) lv.hospital_visit_id, - loc.location_string, - AGE(lv.discharge_datetime, {end_time}) time_since_surgery, - - SPLIT_PART(loc.location_string, '^', 1) ward_raw - - FROM star.location_visit lv - LEFT JOIN star.location loc ON lv.location_id = loc.location_id - WHERE lv.hospital_visit_id IN ({hv_ids}) - - --Choose theatres - AND SPLIT_PART(loc.location_string, '^', 1) IN ('THP3', 'T02THR', '1021800001') -- 1021800001 is GWB theatres - - --Make sure they were only in theatres in the past - AND lv.admission_datetime <= {end_time} - ORDER BY lv.hospital_visit_id, lv.admission_datetime ASC), - --- Recent ICU discharge - recent_ICU AS (SELECT DISTINCT ON (lv.hospital_visit_id) lv.hospital_visit_id, - loc.location_string, - - SPLIT_PART(loc.location_string, '^', 1) ward_raw - - FROM star.location_visit lv - LEFT JOIN star.location loc ON lv.location_id = loc.location_id - WHERE lv.hospital_visit_id IN ({hv_ids}) - - --Choose theatres - AND ( loc.location_string LIKE 'T03%%' OR - loc.location_string LIKE '%%T06PACU%%' OR - loc.location_string LIKE '%%GWB L01W%%') - - --Make sure they were only in theatres in the past - AND lv.discharge_datetime <= {end_time} - AND lv.discharge_datetime >= {end_time} - '{horizon}'::INTERVAL - - ORDER BY lv.hospital_visit_id, lv.admission_datetime ASC), - - recent_PERRT AS ( - SELECT DISTINCT ON (cr.hospital_visit_id) cr.hospital_visit_id, - AGE(cr.scheduled_datetime, {end_time}) time_since_ref - - FROM star.consultation_type ct - RIGHT JOIN star.consultation_request cr ON ct.consultation_type_id = cr.consultation_type_id - - --WHERE cr.scheduled_datetime BETWEEN NOW() - '10 DAYS'::INTERVAL AND NOW() - WHERE ct.name = 'Inpatient consult to PERRT' - - AND cr.scheduled_datetime BETWEEN {end_time} - '7 DAYS'::INTERVAL AND {end_time} - - AND cr.hospital_visit_id IN ({hv_ids}) - ORDER BY cr.hospital_visit_id, cr.scheduled_datetime ASC) - - - -SELECT hv.hospital_visit_id, -hv.admission_datetime, -surgical.scheduled_datetime surg_ref, -medical.scheduled_datetime med_ref, -gynae.scheduled_datetime OG_ref, -oncology.scheduled_datetime haem_onc_ref, -ortho.scheduled_datetime ortho_ref, - - -- Resus status - dnacpr.name AS dnacpr - - --Were they elective? - ,emergency_admission.ward_raw first_ward - - --Have they had surgery - ,recent_surgery.ward_raw recent_surgery - ,ever_surgery.ward_raw ever_surgery - ,ever_surgery.time_since_surgery since_surgery - - -- Recent ICU admission - ,recent_ICU.location_string recent_icu - - -- Recent PERRT referral - ,recent_PERRT.time_since_ref time_since_PERRT_ref - -FROM star.hospital_visit hv - --- Now add resus status -FULL JOIN dnacpr ON hv.hospital_visit_id = dnacpr.hospital_visit_id - --- First location (did they come through ED?) -FULL JOIN emergency_admission ON hv.hospital_visit_id = emergency_admission.hospital_visit_id - --- Have they had surgery -FULL JOIN recent_surgery ON hv.hospital_visit_id = recent_surgery.hospital_visit_id -FULL JOIN ever_surgery ON hv.hospital_visit_id = ever_surgery.hospital_visit_id - --- Recent ICU admission -FULL JOIN recent_icu ON hv.hospital_visit_id = recent_icu.hospital_visit_id - -FULL JOIN recent_PERRT ON hv.hospital_visit_id = recent_PERRT.hospital_visit_id - --- What different referrals have they had (ever)? -FULL JOIN medical ON hv.hospital_visit_id = medical.hospital_visit_id -FULL JOIN surgical ON hv.hospital_visit_id = surgical.hospital_visit_id -FULL JOIN gynae ON hv.hospital_visit_id = gynae.hospital_visit_id -FULL JOIN oncology ON hv.hospital_visit_id = oncology.hospital_visit_id -FULL JOIN ortho ON hv.hospital_visit_id = ortho.hospital_visit_id - -WHERE hv.hospital_visit_id IN ({hv_ids}) - -ORDER BY hv.hospital_visit_id; diff --git a/api/src/api/perrt/live_consults.sql b/api/src/api/perrt/live_consults.sql deleted file mode 100644 index da604daf..00000000 --- a/api/src/api/perrt/live_consults.sql +++ /dev/null @@ -1,34 +0,0 @@ - SELECT - - cr.consultation_request_id - --,cr.valid_from - ,cr.scheduled_datetime - ,cr.status_change_datetime - ,cr.hospital_visit_id - ,hv.encounter - ,ct.code - ,ct.name - - - FROM star.consultation_request cr - LEFT JOIN star.consultation_type ct ON cr.consultation_type_id = ct.consultation_type_id - LEFT JOIN star.hospital_visit hv ON cr.hospital_visit_id = hv.hospital_visit_id - - WHERE - cr.closed_due_to_discharge = false - AND - cr.cancelled = false - AND - cr.scheduled_datetime > :horizon_dt - AND - -- ct.name IN ( - -- 'Inpatient consult to PERRT', -- CON134 - -- 'Inpatient Consult to Symptom Control and Palliative Care', -- CON27 - -- 'Inpatient Consult to Transforming end of life care team', -- - -- 'Inpatient consult to Intensivist', -- CON6 - -- 'Inpatient consult to Social Work' -- CON65 - -- ) - ct.code IN ('CON134', 'CON6') - - AND - hv.encounter = ANY( :encounter_ids ) diff --git a/api/src/api/perrt/live_cpr.sql b/api/src/api/perrt/live_cpr.sql deleted file mode 100644 index 400a6046..00000000 --- a/api/src/api/perrt/live_cpr.sql +++ /dev/null @@ -1,17 +0,0 @@ --- noinspection SqlNoDataSourceInspectionForFile - -SELECT - ad.advance_decision_id - ,ad.requested_datetime - ,ad.status_change_datetime - ,adt.care_code - ,adt.name - ,ad.cancelled - ,ad.closed_due_to_discharge - ,ad.hospital_visit_id - ,hv.encounter -FROM star.advance_decision ad -LEFT JOIN star.advance_decision_type adt ON ad.advance_decision_type_id = adt.advance_decision_type_id -LEFT JOIN star.hospital_visit hv ON ad.hospital_visit_id = hv.hospital_visit_id -WHERE hv.encounter = ANY( :encounter_ids ) -; diff --git a/api/src/api/perrt/live_vitals.sql b/api/src/api/perrt/live_vitals.sql deleted file mode 100644 index 7c090cb5..00000000 --- a/api/src/api/perrt/live_vitals.sql +++ /dev/null @@ -1,32 +0,0 @@ --- noinspection SqlNoDataSourceInspectionForFile --- read just vitals --- two parameters: - -SELECT ob.visit_observation_id - , ob.hospital_visit_id - , ob.observation_datetime - , ot.id_in_application - , ob.value_as_real - , ob.value_as_text - , ob.unit - -- include encounter so you can test the query from the front end - , hv.encounter -FROM star.visit_observation ob - LEFT JOIN star.visit_observation_type ot ON ob.visit_observation_type_id = ot.visit_observation_type_id - LEFT JOIN star.hospital_visit hv ON ob.hospital_visit_id = hv.hospital_visit_id --- see param in next line -WHERE ob.observation_datetime > :horizon_dt - AND ot.id_in_application in - ( - '10' --'SpO2' -- 602063230 - , '5' --'BP' -- 602063234 - , '3040109304' --'Room Air or Oxygen' -- 602063268 - , '6' --'Temp' -- 602063248 - , '8' --'Pulse' -- 602063237 - , '9' --'Resp' -- 602063257 - , '6466' -- Level of consciousness - , '28315' -- NEWS score Scale 1 -- 47175382 - , '28316' -- NEWS score Scale 2 -- 47175920 - ) - -- see param in next line - AND hv.encounter = ANY( :encounter_ids ) diff --git a/api/src/api/perrt/mock_consults.json b/api/src/api/perrt/mock_consults.json deleted file mode 100644 index 4df7afa4..00000000 --- a/api/src/api/perrt/mock_consults.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "table": "PerrtConsults", - "rows": - [ - { - "consultation_request_id": 659770584, - "scheduled_datetime": "2022-11-08 23:21:00+00", - "status_change_datetime": "2022-11-08 23:22:19+00", - "hospital_visit_id": 699999996, - "encounter": "1333333999", - "code": "CON134", - "name": "Inpatient consult to PERRT", - "con_i": 1 - }, - { - "consultation_request_id": 659878840, - "scheduled_datetime": "2022-11-09 02:41:00+00", - "status_change_datetime": "2022-11-09 02:40:52+00", - "hospital_visit_id": 1039855261, - "encounter": "1024505696", - "code": "CON134", - "name": "Inpatient consult to PERRT", - "con_i": 1 - }, - { - "consultation_request_id": 660019048, - "scheduled_datetime": "2022-11-09 09:34:00+00", - "status_change_datetime": "2022-11-09 09:34:37+00", - "hospital_visit_id": 611111113, - "encounter": "1222222229", - "code": "CON134", - "name": "Inpatient consult to PERRT", - "con_i": 1 - } - ] -} diff --git a/api/src/api/perrt/mock_cpr.json b/api/src/api/perrt/mock_cpr.json deleted file mode 100644 index dc4c54a0..00000000 --- a/api/src/api/perrt/mock_cpr.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "table": "AdvancedDecision", - "rows": - [ - { - "advance_decision_id": 178744730, - "requested_datetime": "2021-04-01 06:49:00+01", - "status_change_datetime": "2021-04-01 17:08:18+01", - "care_code": "COD2", - "name": "DNACPR", - "cancelled": "false", - "closed_due_to_discharge": "true", - "hospital_visit_id": 699999996, - "encounter": "1333333999" - }, - { - "advance_decision_id": 178769726, - "requested_datetime": "2021-04-01 10:54:00+01", - "status_change_datetime": "2021-04-01 21:44:22+01", - "care_code": "COD4", - "name": "FULL ACTIVE TREATMENT", - "cancelled": "false", - "closed_due_to_discharge": "true", - "hospital_visit_id": 188888884, - "encounter": "1078170769" - } - ] -} diff --git a/api/src/api/perrt/mock_vitals.json b/api/src/api/perrt/mock_vitals.json deleted file mode 100644 index 302bbad6..00000000 --- a/api/src/api/perrt/mock_vitals.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "table": "vitals", - "rows": - [ - { - "visit_observation_id": 679777370, - "hospital_visit_id": 699999996, - "observation_datetime": "2022-12-05 10:52:00+00", - "id_in_application": "5", - "value_as_real": null, - "value_as_text": "119/71", - "unit": null, - "encounter": 1040463999 - }, - { - "visit_observation_id": 679777372, - "hospital_visit_id": 699999996, - "observation_datetime": "2022-12-05 10:52:00+00", - "id_in_application": "6", - "value_as_real": 97.2, - "value_as_text": null, - "unit": null, - "encounter": 1040463999 - }, - { - "visit_observation_id": 679777374, - "hospital_visit_id": 699999996, - "observation_datetime": "2022-12-05 10:52:00+00", - "id_in_application": "8", - "value_as_real": 107, - "value_as_text": null, - "unit": null, - "encounter": 1040463999 - }, - { - "visit_observation_id": 679777376, - "hospital_visit_id": 699999996, - "observation_datetime": "2022-12-05 10:52:00+00", - "id_in_application": "9", - "value_as_real": 21, - "value_as_text": null, - "unit": null, - "encounter": 1040463999 - }, - { - "visit_observation_id": 679777378, - "hospital_visit_id": 699999996, - "observation_datetime": "2022-12-05 10:52:00+00", - "id_in_application": "10", - "value_as_real": 93, - "value_as_text": null, - "unit": "%", - "encounter": 1040463999 - }, - { - "visit_observation_id": 679777380, - "hospital_visit_id": 699999996, - "observation_datetime": "2022-12-05 10:52:00+00", - "id_in_application": "6466", - "value_as_real": null, - "value_as_text": "A", - "unit": null, - "encounter": 1040463999 - }, - { - "visit_observation_id": 679777382, - "hospital_visit_id": 699999996, - "observation_datetime": "2022-12-05 10:52:00+00", - "id_in_application": "28315", - "value_as_real": null, - "value_as_text": "5", - "unit": null, - "encounter": 1040463999 - }, - { - "visit_observation_id": 679777386, - "hospital_visit_id": 699999996, - "observation_datetime": "2022-12-05 10:52:00+00", - "id_in_application": "3040109304", - "value_as_real": null, - "value_as_text": "Room air", - "unit": null, - "encounter": 1040463999 - }, - { - "visit_observation_id": 679779226, - "hospital_visit_id": 674628501, - "observation_datetime": "2022-12-05 10:54:00+00", - "id_in_application": "5", - "value_as_real": null, - "value_as_text": "129/90", - "unit": null, - "encounter": 1039738111 - }, - { - "visit_observation_id": 679779228, - "hospital_visit_id": 674628501, - "observation_datetime": "2022-12-05 10:54:00+00", - "id_in_application": "6", - "value_as_real": 99, - "value_as_text": null, - "unit": null, - "encounter": 1039738111 - }, - { - "visit_observation_id": 679779230, - "hospital_visit_id": 674628501, - "observation_datetime": "2022-12-05 10:54:00+00", - "id_in_application": "8", - "value_as_real": 97, - "value_as_text": null, - "unit": null, - "encounter": 1039738111 - }, - { - "visit_observation_id": 679779232, - "hospital_visit_id": 674628501, - "observation_datetime": "2022-12-05 10:54:00+00", - "id_in_application": "9", - "value_as_real": 17, - "value_as_text": null, - "unit": null, - "encounter": 1039738111 - }, - { - "visit_observation_id": 679779234, - "hospital_visit_id": 674628501, - "observation_datetime": "2022-12-05 10:54:00+00", - "id_in_application": "10", - "value_as_real": 96, - "value_as_text": null, - "unit": "%", - "encounter": 1039738111 - }, - { - "visit_observation_id": 679779236, - "hospital_visit_id": 674628501, - "observation_datetime": "2022-12-05 10:54:00+00", - "id_in_application": "6466", - "value_as_real": null, - "value_as_text": "A", - "unit": null, - "encounter": 1039738111 - }, - { - "visit_observation_id": 679779238, - "hospital_visit_id": 674628501, - "observation_datetime": "2022-12-05 10:54:00+00", - "id_in_application": "28315", - "value_as_real": null, - "value_as_text": "1", - "unit": null, - "encounter": 1021440882 - }, - { - "visit_observation_id": 679779240, - "hospital_visit_id": 674628501, - "observation_datetime": "2022-12-05 10:54:00+00", - "id_in_application": "3040109304", - "value_as_real": null, - "value_as_text": "Room air", - "unit": null, - "encounter": 1039738111 - }, - { - "visit_observation_id": 679779241, - "hospital_visit_id": 674628501, - "observation_datetime": "2022-12-05 10:54:00+00", - "id_in_application": "28316", - "value_as_real": null, - "value_as_text": "4", - "unit": null, - "encounter": 1039738111 - } - ] -} diff --git a/api/src/api/perrt/router.py b/api/src/api/perrt/router.py deleted file mode 100644 index f0acdb42..00000000 --- a/api/src/api/perrt/router.py +++ /dev/null @@ -1,152 +0,0 @@ -""" -Serve the PERRT endpoints -- raw data in long form from EMAP visit observation table -- wrangled data at the route -""" - -import datetime as dt -from pathlib import Path - -from fastapi import APIRouter, Depends, Query, Request -from sqlmodel import Session - -from api.convert import parse_to_data_frame, to_data_frame -from api.db import get_star_session -from api.mock import _get_json_rows, _parse_query -from api.perrt.wrangle import wrangle -from models.perrt import EmapConsults, EmapCpr, EmapVitalsLong, EmapVitalsWide - -router = APIRouter(prefix="/perrt") -mock_router = APIRouter(prefix="/perrt") -_this_file = Path(__file__) - - -@router.get("/icu_admission_prediction", response_model=dict) -def get_icu_admission_preciction( - request: Request, hospital_visit_ids: list[int] = Query(default=[]) -) -> dict: - return { - str(id): request.app.state.perrt_icu_adm_predictions.get(str(id), None) - for id in hospital_visit_ids - } - - -@mock_router.get("/icu_admission_prediction", response_model=dict) -def get_mock_icu_admission_preciction( - hospital_visit_ids: list[int] = Query(default=[]), -) -> dict: - mock_predictions = {"555719": 0.85, "887169": 0.3, "12345": 0.4} - return {str(id): mock_predictions.get(str(id), None) for id in hospital_visit_ids} - - -@router.get("/cpr", response_model=list[EmapCpr]) -def get_emap_cpr( - session: Session = Depends(get_star_session), - encounter_ids: list[str] = Query(default=[]), -) -> list[EmapCpr]: - """ - Return advance decisions about CPR - :type session: Session object from sqlmodel - """ - params = {"encounter_ids": encounter_ids} - res = _parse_query( - _this_file, "live_cpr.sql", session, EmapCpr, params - ) # type: list[EmapCpr] - return res - - -@mock_router.get("/cpr", response_model=list[EmapCpr]) -def get_mock_emap_cpr() -> list[EmapCpr]: - """ - Return mock consults to PERRT or ICU - :return: - """ - rows = _get_json_rows(_this_file, "mock_cpr.json") # type: list[EmapCpr] - return rows - - -@router.get("/consults", response_model=list[EmapConsults]) -def get_emap_perrt_consults( - session: Session = Depends(get_star_session), - encounter_ids: list[str] = Query(default=[]), - horizon_dt: dt.datetime = dt.datetime.now() - dt.timedelta(days=7), -) -> list[EmapConsults]: - """ - Return consults to PERRT or ICU - :type session: Session object from sqlmodel - :type horizon_dt: datetime remember to diff this from 'now' - """ - params = {"encounter_ids": encounter_ids, "horizon_dt": horizon_dt} - res = _parse_query(_this_file, "live_consults.sql", session, EmapConsults, params) - return res - - -@mock_router.get("/consults", response_model=list[EmapConsults]) -def get_mock_emap_perrt_consults() -> list[EmapConsults]: - """ - Return mock consults to PERRT or ICU - :return: - """ - rows = _get_json_rows(_this_file, "mock_consults.json") # type: list[EmapConsults] - return rows - - -@router.get("/vitals/long", response_model=list[EmapVitalsLong]) -def get_emap_vitals_long( - session: Session = Depends(get_star_session), - encounter_ids: list[str] = Query(default=[]), - horizon_dt: dt.datetime = dt.datetime.now() - dt.timedelta(hours=6), -) -> list[EmapVitalsLong]: - """ - Return vital signs - :type session: Session object from sqlmodel - :type horizon_dt: datetime remember to diff this from 'now' - """ - params = {"encounter_ids": encounter_ids, "horizon_dt": horizon_dt} - res = _parse_query(_this_file, "live_vitals.sql", session, EmapVitalsLong, params) - return res - - -@mock_router.get("/vitals/long", response_model=list[EmapVitalsLong]) -def get_mock_emap_vitals_long() -> list[EmapVitalsLong]: - """ - returns mock of emap query for vital signs - :return: - """ - rows = _get_json_rows(_this_file, "mock_vitals.json") # type: list[EmapVitalsLong] - return rows - - -# TODO: 2022-12-06 rather than prepare the vitals and the patients together; -# leave that to the front end which can use census itself and instead you -# will need a query for perrt consults and a wrangle to return one row per -# encounter for the vitals -@router.get("/vitals/wide", response_model=list[EmapVitalsWide]) -def get_emap_vitals_wide( - session: Session = Depends(get_star_session), - encounter_ids: list[str] = Query(default=[]), - horizon_dt: dt.datetime = dt.datetime.now() - dt.timedelta(hours=6), -) -> list[EmapVitalsWide]: - """ - Return vital signs as a wide table after wrangling - :type horizon_dt: datetime remember to diff this from 'now' - """ - params = {"encounter_ids": encounter_ids, "horizon_dt": horizon_dt} - rows = _parse_query(_this_file, "live_vitals.sql", session, EmapVitalsLong, params) - df = to_data_frame(rows, EmapVitalsLong) - df_wide = wrangle(df) - - return [EmapVitalsWide.parse_obj(row) for row in df_wide.to_dict(orient="records")] - - -@mock_router.get("/vitals/wide") -def get_mock_emap_vitals_wide() -> list[EmapVitalsWide]: - """ - returns mock of emap query after wrangling - :return: - """ - rows = _get_json_rows(_this_file, "mock_vitals.json") - df = parse_to_data_frame(rows, EmapVitalsLong) - df_wide = wrangle(df) - - return [EmapVitalsWide.parse_obj(row) for row in df_wide.to_dict(orient="records")] diff --git a/api/src/api/perrt/sql/current_inpatients.sql b/api/src/api/perrt/sql/current_inpatients.sql deleted file mode 100644 index c1ffe7f9..00000000 --- a/api/src/api/perrt/sql/current_inpatients.sql +++ /dev/null @@ -1,90 +0,0 @@ -WITH pts AS ( -SELECT DISTINCT - - -- p.core_demographic_id - - -- ,mrn.mrn_id - -- ,mrn_to_live.mrn_id AS mrn_id_alt - mrn.mrn - ,mrn.nhs_number - - ,vo.hospital_visit_id - ,vo.encounter CSN - - ,vo.admission_time hospital_admission_datetime - -- ,vo.arrival_method - -- ,vo.patient_class - -- ,vo.presentation_time - -- ,vo.source_system - - -- ,p.alive - ,p.date_of_birth - -- ,p.date_of_death - -- ,p.ethnicity - ,p.firstname - -- ,p.home_postcode - ,p.lastname - -- ,p.middlename - ,p.sex - -FROM star.hospital_visit vo --- get core_demographic id -LEFT JOIN star.core_demographic p ON vo.mrn_id = p.mrn_id --- get current MRN -LEFT JOIN star.mrn_to_live ON p.mrn_id = mrn_to_live.mrn_id -LEFT JOIN star.mrn ON mrn_to_live.live_mrn_id = mrn.mrn_id - --- where inpatient -WHERE - vo.patient_class = 'INPATIENT' - and - vo.discharge_time IS NULL - AND - vo.admission_time IS NOT NULL - AND p.alive = true - -), res AS ( -SELECT - pts.* - -- vd.location_visit_id - ,vd.admission_time bed_admission_datetime - -- ,vd.location_id - ,loc.location_string - - ,dept.name - ,dept.speciality - ,room.name - -- ,bed."type" - - -FROM - star.location_visit vd -INNER JOIN - pts - ON vd.hospital_visit_id = pts.hospital_visit_id -INNER JOIN - star.location loc - ON vd.location_id = loc.location_id - -LEFT JOIN department dept ON loc.department_id = dept.department_id -LEFT JOIN room room ON loc.room_id = room.room_id -LEFT JOIN bed_state bed_state ON loc.bed_id = bed_state.bed_id --- NOT JOINING bed_state since this is a long list of attributes (>1 per bed) ---INNER JOIN bed_facility bed ON bed_state.bed_state_id = bed.bed_state_id - -WHERE - vd.discharge_time IS NULL - AND - bed_state.is_in_census = true - AND - bed_state."status" = 'Active' - AND - bed_state.valid_until IS NULL --- AND --- vd.location_visit_id IS NOT NULL -) - -SELECT * FROM res -ORDER BY res.hospital_visit_id DESC - -; diff --git a/api/src/api/perrt/sql/current_inpatients_status.sql b/api/src/api/perrt/sql/current_inpatients_status.sql deleted file mode 100644 index 475dadb2..00000000 --- a/api/src/api/perrt/sql/current_inpatients_status.sql +++ /dev/null @@ -1 +0,0 @@ --- not built b/c I suspect will be better to run this separately to obtain vitals etc per cohort of patients diff --git a/api/src/api/perrt/sql/recent_inpatient_vitals.sql b/api/src/api/perrt/sql/recent_inpatient_vitals.sql deleted file mode 100644 index 3c457d56..00000000 --- a/api/src/api/perrt/sql/recent_inpatient_vitals.sql +++ /dev/null @@ -1,133 +0,0 @@ --- 2022-06-24 --- return recent vitals --- V simple view that finds recent observations --- for current inpatients in the last few minutes --- runs within a few seconds - --- return recent vitals --- - --- Example script showing how to work with observations - --- V simple view that finds recent observations --- for current inpatients in the last few minutes - - -SELECT - -- observation details - ob.visit_observation_id - -- location details - ,ward.name - ,ward.location_string - -- patient details - ,ward.mrn - ,ward.lastname - ,ward.firstname - ,ward.sex - ,ward.date_of_birth - -- ,vd.location_id - -- ugly HL7 location string - ,ward.location_string - ,ward.name - -- time admitted to that bed/theatre/scan etc. - ,ob.hospital_visit_id - ,ob.observation_datetime - - ,ob.visit_observation_type_id - ,ot.id_in_application - - ,ob.value_as_real - ,ob.value_as_text - ,ob.unit - - -FROM - star.visit_observation ob --- observation look-up -LEFT JOIN - star.visit_observation_type ot - ON ob.visit_observation_type_id = ot.visit_observation_type_id -LEFT JOIN - star.hospital_visit vo - ON ob.hospital_visit_id = vo.hospital_visit_id --- subquery to identify only those patients in a certain ward/department -INNER JOIN - ( --- query returns ghosts b/c bed and hospital discharge datetime sometimes missing -SELECT - --vd.location_visit_id - vd.hospital_visit_id - ,live_mrn.mrn - ,cd.lastname - ,cd.firstname - ,cd.sex - ,cd.date_of_birth - -- ,vd.location_id - -- ugly HL7 location string - ,lo.location_string - ,dept.name - -- time admitted to that bed/theatre/scan etc. - ,vo.admission_time hosp_admit_dt - ,vd.admission_time bed_admit_dt - -- time discharged from that bed - ,vd.discharge_time bed_discharge_dt - -FROM star.location_visit vd --- location label -INNER JOIN star.location lo ON vd.location_id = lo.location_id -INNER JOIN star.department dept ON lo.department_id = dept.department_id -INNER JOIN star.hospital_visit vo ON vd.hospital_visit_id = vo.hospital_visit_id -INNER JOIN star.core_demographic cd ON vo.mrn_id = cd.mrn_id --- get current hospital number -INNER JOIN star.mrn original_mrn ON vo.mrn_id = original_mrn.mrn_id --- get mrn to live mapping -INNER JOIN star.mrn_to_live mtl ON vo.mrn_id = mtl.mrn_id --- get live mrn -INNER JOIN star.mrn live_mrn ON mtl.live_mrn_id = live_mrn.mrn_id -WHERE -vo.admission_time IS NOT NULL -AND -vo.discharge_time IS NULL -AND -vo.patient_class = ANY('{INPATIENT,DAY_CASE,EMERGENCY}') -AND -cd.date_of_death IS NULL - --- last few hours -AND -vd.admission_time IS NOT NULL --- just CURRENT patients -AND -vd.discharge_time IS NULL --- filter out just ED and Resus or Majors -AND --- unpacking the HL7 string formatted as --- Department^Ward^Bed string ---SPLIT_PART(lo.location_string,'^',1) = 'T03' -dept.name LIKE 'UCH%' --- sort -ORDER BY dept.name, lo.location_string - - ) ward - ON vo.hospital_visit_id = ward.hospital_visit_id -WHERE - ob.observation_datetime > NOW() - '30 HOURS'::INTERVAL -AND vo.admission_time IS NOT NULL -AND vo.discharge_time IS NULL -AND vo.patient_class = 'INPATIENT' -AND ot.id_in_application in - - ( - '10' --'SpO2' -- 602063230 - ,'5' --'BP' -- 602063234 - ,'3040109304' --'Room Air or Oxygen' -- 602063268 - ,'6' --'Temp' -- 602063248 - ,'8' --'Pulse' -- 602063237 - ,'9' --'Resp' -- 602063257 - ,'6466' -- Level of consciousness - ,'28315' -- NEWS score Scale 1 -- 47175382 - ,'28316' -- NEWS score Scale 2 -- 47175920 -) - -ORDER BY ob.observation_datetime DESC -; diff --git a/api/src/api/perrt/sql/uch_inpatients.sql b/api/src/api/perrt/sql/uch_inpatients.sql deleted file mode 100644 index 3911e349..00000000 --- a/api/src/api/perrt/sql/uch_inpatients.sql +++ /dev/null @@ -1,58 +0,0 @@ --- 2022-06-24t14:26:45 --- query manually checked - seems a good rough approx --- prob need something like a recent vital sign join to get rid of patients not in hosp --- query returns ghosts b/c bed and hospital discharge datetime sometimes missing -SELECT - --vd.location_visit_id - vd.hospital_visit_id - ,live_mrn.mrn - ,cd.lastname - ,cd.firstname - ,cd.sex - ,cd.date_of_birth - -- ,vd.location_id - -- ugly HL7 location string - ,lo.location_string - ,dept.name - -- time admitted to that bed/theatre/scan etc. - ,vo.admission_time hosp_admit_dt - ,vd.admission_time bed_admit_dt - -- time discharged from that bed - ,vd.discharge_time bed_discharge_dt - -FROM star.location_visit vd --- location label -INNER JOIN star.location lo ON vd.location_id = lo.location_id -INNER JOIN star.department dept ON lo.department_id = dept.department_id -INNER JOIN star.hospital_visit vo ON vd.hospital_visit_id = vo.hospital_visit_id -INNER JOIN star.core_demographic cd ON vo.mrn_id = cd.mrn_id --- get current hospital number -INNER JOIN star.mrn original_mrn ON vo.mrn_id = original_mrn.mrn_id --- get mrn to live mapping -INNER JOIN star.mrn_to_live mtl ON vo.mrn_id = mtl.mrn_id --- get live mrn -INNER JOIN star.mrn live_mrn ON mtl.live_mrn_id = live_mrn.mrn_id -WHERE -vo.admission_time IS NOT NULL -AND -vo.discharge_time IS NULL -AND -vo.patient_class = ANY('{INPATIENT,DAY_CASE,EMERGENCY}') -AND -cd.date_of_death IS NULL - --- last few hours -AND -vd.admission_time IS NOT NULL --- just CURRENT patients -AND -vd.discharge_time IS NULL --- filter out just ED and Resus or Majors -AND --- unpacking the HL7 string formatted as --- Department^Ward^Bed string ---SPLIT_PART(lo.location_string,'^',1) = 'T03' -dept.name LIKE 'UCH%' --- sort -ORDER BY dept.name, lo.location_string -; diff --git a/api/src/api/perrt/wrangle.py b/api/src/api/perrt/wrangle.py deleted file mode 100644 index 1747d8b2..00000000 --- a/api/src/api/perrt/wrangle.py +++ /dev/null @@ -1,176 +0,0 @@ -""" -Data WraNGling functions -Use `_` prefix to indicate private methods -""" - -# TODO: update to pandas where -# https://github.com/pandas-dev/pandas/blob/v1.4.3/pandas/core/frame.py#L10948-L10961 - -import numpy as np -import pandas as pd -import warnings - -# use tuples (immutable) to store these data to avoid unintentional copies -_model_cols = ( - "visit_observation_id", - "hospital_visit_id", - "encounter", - "observation_datetime", - "id_in_application", - "value_as_real", - "value_as_text", - "unit", -) - -# columns that change per patient not per observation -# used to define an index when wrangling -_cols_per_csn = ( - "hospital_visit_id", - "encounter", -) - -_obs_types = { - 10: "SpO2", - 5: "BP", - 3040109304: "air_or_o2", - 6: "Temp", - 8: "Pulse", - 9: "Resp", - 6466: "AVPU", - 28315: "NEWS_scale_1", - 28316: "NEWS_scale_2", -} - - -def _fahrenheit_to_celsius( - df: pd.DataFrame, temperature_label: str = "Temp" -) -> pd.DataFrame: - df["value"] = df["value"].mask( - df["id_in_application"] == temperature_label, (df["value_as_real"] - 32) * 5 / 9 - ) - return df - - -def _air_or_o2_as_int(df: pd.DataFrame) -> pd.DataFrame: - """Convert NEWS air/o2 label to integer""" - conditions = [ - (df["id_in_application"] == "air_or_o2") & (df["value_as_text"] == "Room air"), - (df["id_in_application"] == "air_or_o2") - & (df["value_as_text"] == "Supplemental Oxygen"), - ] - choices = [ - 0, - 1, - ] - df["value"] = np.select(conditions, choices, default=df["value"]) - return df - - -def _avpu_as_int(df: pd.DataFrame) -> pd.DataFrame: - conditions = [ - (df["id_in_application"] == "AVPU") & (df["value_as_text"] == "A"), - (df["id_in_application"] == "AVPU") & (df["value_as_text"] == "C"), - (df["id_in_application"] == "AVPU") & (df["value_as_text"] == "V"), - (df["id_in_application"] == "AVPU") & (df["value_as_text"] == "P"), - (df["id_in_application"] == "AVPU") & (df["value_as_text"] == "U"), - ] - choices = [ - 0, - 1, - 2, - 3, - 4, - ] - df["value"] = np.select(conditions, choices, default=df["value"]) - return df - - -def _bp_as_int(df: pd.DataFrame, bp_label: str = "BP") -> pd.DataFrame: - mask = df["id_in_application"] == bp_label - df["tmp"] = pd.to_numeric( - df[mask]["value_as_text"].str.split("/").str[0], errors="coerce" - ) - df["value"] = np.where(mask, df["tmp"], df["value"]) - df.drop(columns=["tmp"], inplace=True) - return df - - -def _news_as_int( - df: pd.DataFrame, news_labels: list[str] = ["NEWS_scale_1", "NEWS_scale_2"] -) -> pd.DataFrame: - for label in news_labels: - mask = df["id_in_application"] == label - df["tmp"] = pd.to_numeric(df[mask]["value_as_text"], errors="coerce") - df["value"] = np.where(mask, df["tmp"], df["value"]) - df.drop(columns=["tmp"], inplace=True) - return df - - -def _long_to_wide( - df: pd.DataFrame, cols_per_csn: tuple = _cols_per_csn -) -> pd.DataFrame: - """ - converts SQL query data (post-wrangling) into wide data for Dash - :param df: { parameter_description } - :type df: { type_description } - :param cols_per_csn: The cols per mrn - :type cols_per_csn: list - """ - - # import pdb; pdb.set_trace() - dft = ( - df.groupby(["id_in_application", *cols_per_csn], dropna=False) - .agg( - max=("value", "max"), - min=("value", "min"), - ) - .reset_index() - ) - dft = dft.pivot( - index=cols_per_csn, - columns=["id_in_application"], - ) - # rename the cols (b/c multi-index) - dft.columns = [f"{col[1]}_{col[0]}".lower() for col in dft.columns.tolist()] - dft.reset_index(inplace=True) - - # sort by news score if poss - try: - dft.sort_values( - ["news_scale_1_max", "news_scale_2_max"], - ascending=False, - inplace=True, - ) - except KeyError as e: - warnings.warn( - "Unable to sort NEWS values: possibly missing " - "news_scale_1_max or news_scale_2_max" - ) - print(repr(e)) - # IMPORTANT data model has now changed - return dft - - -def wrangle(df: pd.DataFrame) -> pd.DataFrame: - """ - Single function that wraps all above - Assumes input is result of the query - Returns wrangled output - Note that you will often need to define a new SQLModel for validating at this stage - """ - # check cols exist - for col in df.columns: - assert col in _model_cols - - # force id_in_application to integer - df["id_in_application"] = df["id_in_application"].astype(int) - - df.replace({"id_in_application": _obs_types}, inplace=True) - df["value"] = df["value_as_real"] - df = _fahrenheit_to_celsius(df) - df = _news_as_int(df) - df = _bp_as_int(df) - df = _air_or_o2_as_int(df) - df = _avpu_as_int(df) - dft = _long_to_wide(df) - return dft diff --git a/api/src/api/tests/test_perrt.py b/api/src/api/tests/test_perrt.py deleted file mode 100644 index 844aa41b..00000000 --- a/api/src/api/tests/test_perrt.py +++ /dev/null @@ -1,68 +0,0 @@ -# type: ignore -import pandas as pd -from fastapi.testclient import TestClient - -import api.perrt.wrangle as wng -from api.main import app -from models.perrt import ( - EmapVitalsLong, - EmapVitalsWide, -) - -client = TestClient(app) - - -def test_get_mock_vitals_long() -> None: - response = client.get("/mock/perrt/vitals/long") - assert response.status_code == 200 - - rows = [EmapVitalsLong.parse_obj(row) for row in response.json()] - assert len(rows) > 0 - - -def test_get_mock_vitals_wide() -> None: - response = client.get("/mock/perrt/vitals/wide") - assert response.status_code == 200 - - rows = [EmapVitalsWide.parse_obj(row) for row in response.json()] - assert len(rows) > 0 - - -def test_news_as_int() -> None: - df = pd.DataFrame( - { - "id_in_application": ["NEWS_scale_1", "NEWS_scale_2"], - "value_as_text": ["1", "2"], - "value": [11.0, 22.0], - } - ) - - df_r = wng._news_as_int(df) - pd.testing.assert_series_equal( - df_r["value"], pd.Series([1.0, 2.0]), check_names=False - ) - - -def test_news_as_int_missing_news_scale_2() -> None: - df = pd.DataFrame( - {"id_in_application": ["NEWS_scale_2"], "value_as_text": ["2"], "value": [22.0]} - ) - df_r = wng._news_as_int(df) - pd.testing.assert_series_equal(df_r["value"], pd.Series([2.0]), check_names=False) - - -def test_wrangle() -> None: - df = pd.DataFrame( - { - "hospital_visit_id": [91, 92], - "encounter": ["910", "920"], - # two news_scale_1_max, # no news_scale_2_max - "id_in_application": [28315, 28315], - "value_as_text": ["1", "2"], - "value_as_real": [11.0, 22.0], - } - ) - df_r = wng.wrangle(df) - pd.testing.assert_series_equal( - df_r["news_scale_1_max"], pd.Series([1.0, 2.0]), check_names=False - ) diff --git a/models/src/models/perrt.py b/models/src/models/perrt.py deleted file mode 100644 index bff5d682..00000000 --- a/models/src/models/perrt.py +++ /dev/null @@ -1,92 +0,0 @@ -""" -data model for live PERRT query -""" -from datetime import datetime -from typing import Optional - -from pydantic import BaseModel - - -def _to_camel(member: str) -> str: - return "".join(word.capitalize() for word in member.split("_")) - - -class EmapCpr(BaseModel): - """ - Advance Decisions and CPR - """ - - advance_decision_id: int - requested_datetime: datetime - status_change_datetime: datetime - care_code: str - name: str - cancelled: bool - closed_due_to_discharge: bool - hospital_visit_id: int - encounter: str - - -class EmapConsults(BaseModel): - """ - Consults and Consult type - """ - - consultation_request_id: int - scheduled_datetime: datetime - status_change_datetime: datetime - hospital_visit_id: int - encounter: str - code: str - name: Optional[str] - - -class EmapVitalsLong(BaseModel): - """ - vital signs extracted from the visit observation table - use hospital_visit_id as the key to link against beds - """ - - visit_observation_id: int - hospital_visit_id: int - encounter: str - observation_datetime: datetime - id_in_application: str - value_as_real: Optional[float] - value_as_text: Optional[str] - unit: Optional[str] - - -class EmapVitalsWide(BaseModel): - """ - vital signs wrangled to one row per encounter by summarising over the - window period - """ - - # patient level fields - hospital_visit_id: str - encounter: str - # observation level fields collapsed to per patient - air_or_o2_max: Optional[float] - air_or_o2_min: Optional[float] - avpu_max: Optional[float] - avpu_min: Optional[float] - bp_max: Optional[float] - bp_min: Optional[float] - news_scale_1_max: Optional[float] - news_scale_1_min: Optional[float] - news_scale_2_max: Optional[float] - news_scale_2_min: Optional[float] - pulse_max: Optional[float] - pulse_min: Optional[float] - resp_max: Optional[float] - resp_min: Optional[float] - spo2_max: Optional[float] - spo2_min: Optional[float] - temp_max: Optional[float] - temp_min: Optional[float] - - -# class AdmissionPrediction(BaseModel): -# hospital_visit_id: str -# admission_probability: Optional[float] From 96b9b9c9bd4969458f085f816301b77fd0251bca Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Fri, 26 Jan 2024 11:58:01 +0000 Subject: [PATCH 15/27] Remove ED from API --- api/src/api/ed/__init__.py | 0 api/src/api/ed/router.py | 183 ----------------------------------- api/src/api/main.py | 5 - api/src/api/tests/test_ed.py | 15 --- 4 files changed, 203 deletions(-) delete mode 100644 api/src/api/ed/__init__.py delete mode 100644 api/src/api/ed/router.py delete mode 100644 api/src/api/tests/test_ed.py diff --git a/api/src/api/ed/__init__.py b/api/src/api/ed/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/api/src/api/ed/router.py b/api/src/api/ed/router.py deleted file mode 100644 index 73fa07f0..00000000 --- a/api/src/api/ed/router.py +++ /dev/null @@ -1,183 +0,0 @@ -from datetime import datetime, date, timedelta -from typing import cast - -import pandas as pd -import requests -from fastapi import APIRouter, Depends, Response -from pydantic import BaseModel, Field -from sqlalchemy.orm import Session - -from api.config import get_settings, Settings -from api.convert import parse_to_data_frame, to_data_frame -from api.db import get_star_session -from api.movement import next_locations, NextLocation -from models.ed import EmergencyDepartmentPatient, AggregateAdmissionRow - -router = APIRouter(prefix="/ed") - -mock_router = APIRouter(prefix="/ed") - - -@mock_router.get("/individual/", response_model=list[EmergencyDepartmentPatient]) -def get_mock_individual_admission_rows() -> list[EmergencyDepartmentPatient]: - return [ - EmergencyDepartmentPatient( - arrival_datetime=datetime(2022, 10, 12, 13, 14), - bed="BED2", - mrn="MRNABC1", - name="Donald Trump", - sex="F", - date_of_birth=date(1990, 10, 6), - admission_probability=0.06, - ), - EmergencyDepartmentPatient( - arrival_datetime=datetime(2022, 10, 13, 13, 14), - bed="BED1", - mrn="MRNABC2", - name="Boris Johnson", - sex="F", - date_of_birth=date(1990, 10, 6), - admission_probability=0.26, - ), - EmergencyDepartmentPatient( - arrival_datetime=datetime(2022, 10, 12, 9, 14), - bed="BED3", - mrn="MRN12345", - name="Vladimir Putin", - sex="F", - date_of_birth=date(1990, 10, 6), - admission_probability=0.16, - ), - ] - - -class Census(BaseModel): - csn: str - mrn: str - name: str - date_of_birth: date = Field(..., alias="dob") - sex: str - arrival_datetime: datetime = Field(..., alias="admission_dt") - bed: str = Field(..., alias="bed_code") - bay: str = Field(..., alias="bay_code") - ward: str = Field(..., alias="ward_code") - - -def _get_census(hycastle_url: str) -> pd.DataFrame: - response = requests.get(f"{hycastle_url}/emap/ed/census/ED/") - return parse_to_data_frame(response.json()["data"], Census) - - -class Feature(BaseModel): - episode_slice_id: int | None - csn: str - - -def _get_features(hycastle_url: str) -> pd.DataFrame: - response = requests.get(f"{hycastle_url}/live/ed/ED/ui") - return parse_to_data_frame(response.json()["data"], Feature) - - -class IndividualPrediction(BaseModel): - episode_slice_id: int - prediction_as_real: float - - -def _set_next_location_text(row: pd.Series) -> str | None: - if pd.isnull(row["event_datetime"]): - return None - - if pd.isnull(row["next_location"]): - return "Possibly Ward" - - return cast(str, row["next_location"]) - - -@router.get("/individual/", response_model=list[EmergencyDepartmentPatient]) -def get_individual_admission_rows( - settings: Settings = Depends(get_settings), - star_session: Session = Depends(get_star_session), -) -> list[EmergencyDepartmentPatient]: - census_df = _get_census(settings.hycastle_url) - features_df = _get_features(settings.hycastle_url) - - csns = census_df["csn"].tolist() - next_locations_df = to_data_frame(next_locations(star_session, csns), NextLocation) - - output_df = pd.merge(census_df, features_df, on="csn", how="left") - output_df = pd.merge(output_df, next_locations_df, on="csn", how="left") - output_df["next_location"] = output_df.apply( - _set_next_location_text, axis="columns" - ) - output_df = output_df.rename( - columns={"prediction_as_real": "admission_probability"} - ) - - return [ - EmergencyDepartmentPatient.parse_obj(row) - for row in output_df.to_dict(orient="records") - ] - - -@mock_router.get("/aggregate/", response_model=list[AggregateAdmissionRow]) -def get_mock_aggregate_admission_rows() -> list[AggregateAdmissionRow]: - return [ - AggregateAdmissionRow( - speciality="medical", - beds_allocated=5, - beds_not_allocated=2, - without_decision_to_admit_seventy_percent=6, - without_decision_to_admit_ninety_percent=4, - yet_to_arrive_seventy_percent=10, - yet_to_arrive_ninety_percent=6, - ) - ] - - -def adjust_for_model_specific_times(t: datetime) -> datetime: - """ - The current aggregation model only accepts specific times of the day as an - input parameter. This function rounds down t to the closest acceptable time - of day. - """ - t = t.replace(second=0, microsecond=0) - - if t > t.replace(hour=22, minute=30): - return t.replace(hour=22, minute=30) - - if t > t.replace(hour=15, minute=30): - return t.replace(hour=15, minute=30) - - if t > t.replace(hour=12, minute=0): - return t.replace(hour=12, minute=0) - - if t > t.replace(hour=9, minute=30): - return t.replace(hour=9, minute=30) - - if t > t.replace(hour=6, minute=30): - return t.replace(hour=6, minute=30) - - return (t - timedelta(days=1)).replace(hour=22, minute=30) - - -@router.get("/aggregate/", response_model=list[AggregateAdmissionRow]) -def get_aggregate_admission_rows( - response: Response, - settings: Settings = Depends(get_settings), -) -> list[AggregateAdmissionRow]: - horizon_dt = datetime.now() - - response = requests.get( - f"{settings.towermail_url}/aggregations/", - params={ - "horizon_dt": adjust_for_model_specific_times(horizon_dt), - }, # type: ignore - ) - - # Use dict({"speciality":row[0]}, **row[1]) to turn - # {"medical": {"beds_allocated: 2, ...}} into - # {"specialty": "medical", beds_allocated": 2 ...}. - return [ - AggregateAdmissionRow.parse_obj(dict({"speciality": row[0]}, **row[1])) - for row in response.json().items() - ] diff --git a/api/src/api/main.py b/api/src/api/main.py index e280cb2f..5cb3c110 100755 --- a/api/src/api/main.py +++ b/api/src/api/main.py @@ -15,8 +15,6 @@ from api.consults.router import router as consults_router from api.demo.router import mock_router as mock_demo_router from api.demo.router import router as demo_router -from api.ed.router import mock_router as mock_ed_router -from api.ed.router import router as ed_router from api.electives.router import mock_router as mock_electives_router from api.electives.router import router as electives_router from api.hospital.router import mock_router as mock_hospital_router @@ -52,9 +50,6 @@ app.include_router(electives_router) mock_router.include_router(mock_electives_router) -app.include_router(ed_router) -mock_router.include_router(mock_ed_router) - app.include_router(beds_router) mock_router.include_router(mock_beds_router) diff --git a/api/src/api/tests/test_ed.py b/api/src/api/tests/test_ed.py deleted file mode 100644 index fa9a1e4d..00000000 --- a/api/src/api/tests/test_ed.py +++ /dev/null @@ -1,15 +0,0 @@ -from datetime import datetime - -from api.ed.router import adjust_for_model_specific_times - - -def test_adjust_for_model_specific_times() -> None: - t = datetime(2022, 10, 12, 23, 10, 16, 10) - adjusted_t = adjust_for_model_specific_times(t) - assert adjusted_t == datetime(2022, 10, 12, 22, 30) - - -def test_adjust_for_model_specific_times_previous_day() -> None: - t = datetime(2022, 10, 12, 6, 10, 16, 10) - adjusted_t = adjust_for_model_specific_times(t) - assert adjusted_t == datetime(2022, 10, 11, 22, 30) From 12a375c1134985cbd16cff0d4b1c9800d8920865 Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Fri, 26 Jan 2024 11:59:32 +0000 Subject: [PATCH 16/27] Remove electives from API --- api/src/api/config.py | 3 - api/src/api/electives/__init__.py | 0 api/src/api/electives/hypo_help.py | 1772 ---------- api/src/api/electives/live_sql/data_adm.sql | 9 - .../api/electives/live_sql/data_census.sql | 11 - .../api/electives/live_sql/get_all_pacu.sql | 78 - api/src/api/electives/live_sql/get_echo.sql | 69 - api/src/api/electives/live_sql/get_echo_2.sql | 22 - .../electives/live_sql/get_elective_surg.sql | 25 - .../api/electives/live_sql/get_emap_surg.sql | 24 - api/src/api/electives/live_sql/get_hx.sql | 66 - api/src/api/electives/live_sql/get_icu.sql | 22 - api/src/api/electives/live_sql/get_labs.sql | 66 - .../api/electives/live_sql/get_labs_old.sql | 65 - api/src/api/electives/live_sql/get_obs.sql | 81 - .../api/electives/live_sql/get_pa_summary.sql | 28 - .../electives/live_sql/get_pa_summary2.sql | 56 - api/src/api/electives/live_sql/get_pod.sql | 11 - .../api/electives/live_sql/get_preassess.sql | 137 - .../api/electives/live_sql/get_prev_enc.sql | 64 - api/src/api/electives/live_sql/get_surg.sql | 103 - api/src/api/electives/live_sql/new_hx.sql | 26 - api/src/api/electives/mock.db | Bin 2600960 -> 0 bytes api/src/api/electives/mock_case.json | 50 - api/src/api/electives/mock_pod.json | 26 - api/src/api/electives/mock_preassess.json | 22 - api/src/api/electives/router.py | 297 -- api/src/api/electives/supp_data/axa_codes.csv | 3117 ----------------- api/src/api/electives/wrangle.py | 136 - api/src/api/main.py | 5 - api/src/api/tests/test_electives.py | 62 - 31 files changed, 6453 deletions(-) delete mode 100644 api/src/api/electives/__init__.py delete mode 100644 api/src/api/electives/hypo_help.py delete mode 100644 api/src/api/electives/live_sql/data_adm.sql delete mode 100644 api/src/api/electives/live_sql/data_census.sql delete mode 100644 api/src/api/electives/live_sql/get_all_pacu.sql delete mode 100644 api/src/api/electives/live_sql/get_echo.sql delete mode 100644 api/src/api/electives/live_sql/get_echo_2.sql delete mode 100644 api/src/api/electives/live_sql/get_elective_surg.sql delete mode 100644 api/src/api/electives/live_sql/get_emap_surg.sql delete mode 100644 api/src/api/electives/live_sql/get_hx.sql delete mode 100644 api/src/api/electives/live_sql/get_icu.sql delete mode 100644 api/src/api/electives/live_sql/get_labs.sql delete mode 100644 api/src/api/electives/live_sql/get_labs_old.sql delete mode 100644 api/src/api/electives/live_sql/get_obs.sql delete mode 100644 api/src/api/electives/live_sql/get_pa_summary.sql delete mode 100644 api/src/api/electives/live_sql/get_pa_summary2.sql delete mode 100644 api/src/api/electives/live_sql/get_pod.sql delete mode 100644 api/src/api/electives/live_sql/get_preassess.sql delete mode 100644 api/src/api/electives/live_sql/get_prev_enc.sql delete mode 100644 api/src/api/electives/live_sql/get_surg.sql delete mode 100644 api/src/api/electives/live_sql/new_hx.sql delete mode 100644 api/src/api/electives/mock.db delete mode 100644 api/src/api/electives/mock_case.json delete mode 100644 api/src/api/electives/mock_pod.json delete mode 100644 api/src/api/electives/mock_preassess.json delete mode 100644 api/src/api/electives/router.py delete mode 100644 api/src/api/electives/supp_data/axa_codes.csv delete mode 100644 api/src/api/electives/wrangle.py delete mode 100644 api/src/api/tests/test_electives.py diff --git a/api/src/api/config.py b/api/src/api/config.py index 784746cf..f0ee53b4 100644 --- a/api/src/api/config.py +++ b/api/src/api/config.py @@ -17,9 +17,6 @@ class Settings(BaseSettings): hycastle_url: AnyHttpUrl towermail_url: AnyHttpUrl - electives_tap_url: AnyHttpUrl - emergency_tap_url: AnyHttpUrl - echo_sql: bool = False icu_admission_predictions: bool = False diff --git a/api/src/api/electives/__init__.py b/api/src/api/electives/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/api/src/api/electives/hypo_help.py b/api/src/api/electives/hypo_help.py deleted file mode 100644 index 26287ed7..00000000 --- a/api/src/api/electives/hypo_help.py +++ /dev/null @@ -1,1772 +0,0 @@ -""" -2022-12-20 hypo_help.py - -The majority of the code to wrangle dataframes is shared between HyPO and HyUI. -This set of helper functions is designed to be transferrable -without issues with dependencies. - -This aims to solve the issue that otherwise changes in individual functions -would need to be transferred manually between two github repos. - -""" -from typing import Any -import numpy as np -import pandas as pd - -from datetime import datetime, timezone - - -import re - - -def camel_to_snake(df: pd.DataFrame) -> pd.DataFrame: - """Convert column names of a DataFrame from camelCase to snake_case.""" - df.columns = [re.sub(r"(? pd.DataFrame: - """cast dataframe cols to utc where the col name is suffixed by one of suffixes""" - for suffix in suffixes: - for column in df.loc[:, df.columns.str.endswith(suffix)]: - df[column + "_utc"] = pd.to_datetime(df[column], utc=True) - return df - - -def wrangle_surgical(df: pd.DataFrame) -> pd.DataFrame: - terms_dict = { - "priority": { - "Two Week Wait": "Cancer Pathway", - "*Unspecified": "Unknown", - }, - "primary_anaesthesia_type": { - "Sedation by Anaesthetist": "Sedation", - "Sedation by Physician Assistant (Anaesthesia)": "Sedation", - "Sedation by Physician Assistant (Anaesthesia) ": "Sedation", - "Sedation by Endoscopist": "Sedation", - "*Unspecified": "Unknown", - }, - "primary_service": { - "Special Needs Dental": "Other", - "Paediatric Surgery": "Other", - "Thoracic Medicine": "Other", - "Paediatric Oncology": "Other", - "Interventional Radiology": "Other", - "Emergency Surgery": "Other", - }, - "post_operative_destination": { - "Paediatric Ward": "Other", - "Overnight Recovery": "Other", - "*Unspecified": "Other", - "Endoscopy Ward": "Other", - "*Not Applicable": "Other", - "NICU": "Other", - }, - } - - df.pipe(make_utc).replace(terms_dict) - - df = df[ - (df["touch_time_start_instant"].isna() & df["touch_time_end_instant"].isna()) - | ( - ~df["touch_time_start_instant"].isna() - & ~df["touch_time_end_instant"].isna() - ) - ] - - df["op_duration_minutes"] = ( - df["planned_operation_end_instant"] - df["planned_operation_start_instant"] - ).astype("timedelta64[m]") - - # df.drop(["Firstname", "Lastname", "BirthDate"], axis=1, inplace=True) - - return df - - -def model_preassess(df: pd.DataFrame) -> pd.DataFrame: - categories = { - "cardio": "PROBLEMS - CARDIOVASCULAR|EXERCISE L|CARDIAC|HEART|CHEST PAIN", - "resp": "RESPIRATORY|COPD|BRONCHIECT", - "airway": "AIRWAY|RIDOR|HENT|PHARYN|NECK|NASAL", - "infectious": "INFECTIOUS|COVID", - "endo": "ENDOCRIN", - "neuro": "NEUROLOGICAL|MUSCULAR DYSTROPHY|SPINE|MYASTH", - "haem": "HAEMATOLOGY|SICKLE|LEUKAEMIA|BLOOD", - "renal": "GENITOURINARY", - "gastro": "GASTROINTESTINAL|LIVER", - "CPET": "CPET DONE?", - "mets": "SYMPTOMS - CARDIOVASCULAR - EXERCISE TOLERANCE", - "anaesthetic_alert": "PAC NURSING OUTCOME|ALERT ANAESTHETIST ON DAY OF SURGERY", - "pacdest": "POST-OP DESTINATION", - "asa": "WORKFLOW - ANAESTHESIA - ASA STATUS", - "urgency": "PROCEDURAL - GENERAL - PROCEDURE URGENCY", - "prioritisation": "PACU/ITU BED PRIORITISATION", - "c_line": "CENTRAL LINE RISKS", - "a_line": "ARTERIAL LINE RISKS", - "expected_stay": "EXPECTED LENGTH OF STAY IN ICU", - } - categories_dicts = { - "mets": { - "fair (4-7 METS)": 5, - "excellent (>7 METS)": 8, - ">4 METS": 5, - "poor (<4 METS)": 2, - "<4 METS": 2, - "unable to ascertain": np.nan, - "unable to assess": np.nan, - }, - "pacdest": { - "Inpatient Ward": "Inpatient Ward", - "ITU/PACU Bed": "ICU/PACU", - "Day Surgery Ward": "Day Surgery Ward", - }, - "urgency": { - "Expedited": "expedited", - "Urgent": "urgent", - "Immediate": "immediate", - "Elective": "elective", - }, - "airway": {"inspiratory": 1, "expiratory": 1, "at rest": 1}, - "renal": { - "No": 0, - "AKI": 1, - "Stage 1": 1, - "Stage 2": 2, - "Yes": 2, - "CKD": 2, - "Stage 3 CKD": 3, - "Stage 3": 3, - "Stage 4 CKD": 4, - "Stage 4": 4, - "kidney transplant": 5, - "haemodialysis": 5, - "dialysis dependent": 5, - "Stage 5 CKD": 5, - "Stage 5/ESRF": 5, - "peritoneal dialysis": 5, - }, - "anaesthetic_alert": { - "OK to proceed": 0, - "Fit for surgery": 0, - "Referred to anaesthetist": 1, - "Yes": 1, # for "alert anaesthetist on day of surgery" field - "Further tests / optimisation required": 2, - "Not fit for surgery": 2, - }, - "cardio": { - "Breathing": 2, - "Fatigue": 1, - "Leg pain": 1, - "Chest pain": 2, - "hypertrophic (HCM)": 2, - "dilated (DCM)": 2, - "Joint pain": 0, # exercise limited by - "Other": 0, - "Balance": 0, - "mild": 1, - "moderate": 2, - "severe": 3, - "I": 1, - "II": 2, - "III": 3, - "IV": 4, - }, - "resp": { - "mild": 1, - "Yes": 1, - "physiotherapy": 1, - "antibiotics": 1, - "inspiratory": 1, - "expiratory": 1, - "corticosteroids": 2, - "moderate": 2, - "at rest": 2, - "hospitalisation": 2, - "severe": 3, - "home nebs": 3, - "home oxygen": 3, - }, - "gastro": { - "non-alcoholic fatty liver disease": 1, - "alcoholic fatty liver disease": 1, - "cirrhosis": 2, - "jaundice": 2, - "portal hypertension": 2, - "coagulopathy": 2, - }, - } - for c in categories: - df[c] = df[df["name"].str.contains(categories[c])]["string_value"] - - df.replace(categories_dicts, inplace=True) - - df.loc[:, list(categories.keys())] = df[list(categories.keys())].replace("No", 0) - df.loc[:, list(categories.keys())] = df[list(categories.keys())].replace("Yes", 1) - df.loc[~df["a_line"].isna(), "a_line"] = 1 - df.loc[~df["c_line"].isna(), "c_line"] = 1 - - df.loc[:, ["a_line", "c_line", "expected_stay", "asa"]] = df[ - ["a_line", "c_line", "expected_stay", "asa"] - ].astype("float", errors="ignore") - - # df["creation_instant"] = pd.to_datetime(df["creation_instant"]) - - note_nums = ( - df.groupby(["patient_durable_key", "creation_instant", "author_type"]) - .agg("sum", numeric_only=True) - .reset_index() - .drop("numeric_value", axis=1) - ) - - note_nums["a_line"] = note_nums["a_line"].astype(bool).astype(int) - note_nums["c_line"] = note_nums["a_line"].astype(bool).astype(int) - - note_nums = note_nums[ - [ - "patient_durable_key", - "creation_instant", - "author_type", - "cardio", - "resp", - "airway", - "infectious", - "endo", - "neuro", - "haem", - "renal", - "gastro", - "CPET", - "mets", - "anaesthetic_alert", - "asa", - "a_line", - "c_line", - "expected_stay", - ] - ] - - note_strings = ( - df.groupby(["patient_durable_key", "creation_instant", "author_type"]) - .first()[["urgency", "pacdest", "prioritisation"]] - .reset_index() - ) - all_notes = note_nums.merge( - note_strings.drop("author_type", axis=1), - on=["patient_durable_key", "creation_instant"], - ) - all_notes["preassess_date"] = all_notes["creation_instant"].dt.date - - return all_notes - - -def merge_surg_preassess( - surg_data: pd.DataFrame, preassess_data: pd.DataFrame -) -> pd.DataFrame: - data_surg = wrangle_surgical(surg_data) - - data_preassess = model_preassess(preassess_data) - - linked_notes = data_surg.merge( - data_preassess, on="patient_durable_key", how="left" - ).query("surgery_date >= preassess_date") - - merged_df = linked_notes[ - linked_notes["creation_instant"] - == linked_notes.groupby(["patient_durable_key", "surgery_date"])[ - "creation_instant" - ].transform(max) - ] - return merged_df - - -def wrangle_labs(labs: pd.DataFrame) -> pd.DataFrame: - # this takes some particular lab results from 4 months prior to the operation. - - labs_limits = { - "crea": (49, 112), - "hb": (115, 170), - "wcc": (3, 10), - "plt": (150, 400), - "na": (135, 145), - "alb": (34, 50), - "crp": (0, 5), - "bili": (0, 20), - "inr": (0.8, 1.3), - } - lab_names = { - "na": "Sodium", - "crea": "Creatinine", - "wcc": "White cell count", - "hb": "Haemoglobin (g/L)", - "plt": "Platelet count", - "alb": "Albumin", - "bili": "Bilirubin (total)", - "inr": "INR", - "crp": "C-reactive protein", - } - - op_dict = { - "mean": "_mean_value", - "min": "_min_value", - "max": "_max_value", - "count": "_measured_count", - } - - df = labs.copy() - - df.loc[:, "value"] = pd.to_numeric( - df["value"].str.replace("<|(result checked)", "", regex=True), - errors="coerce", - ).dropna() - df["name"] = df["name"].replace({v: k for k, v in lab_names.items()}) - df = df.join(df.pivot(columns="name", values="value")) - - for key in lab_names: - df[key + "_abnormal_count"] = df[key].groupby( - df["patient_durable_key"] - ).transform(lambda x: x > labs_limits[key][1]) | df[key].groupby( - df["patient_durable_key"] - ).transform( - lambda x: x < labs_limits[key][0] - ) - - for op in op_dict: - df[key + op_dict[op]] = ( - df[key].groupby(df["patient_durable_key"]).transform(op) - ) - gdf = df.groupby("patient_durable_key").sum(numeric_only=True) - gdf = gdf.loc[:, gdf.columns.str.contains("_abnormal")] - - hdf = df.groupby("patient_durable_key").mean(numeric_only=True) - hdf = hdf.loc[:, hdf.columns.str.contains("_m")] - - idf = df.sort_values("result_instant").groupby("patient_durable_key").last() - idf = idf.loc[:, list(lab_names.keys())] - - final_df = gdf.join(hdf).join(idf.add_suffix("_last_value")).reset_index() - - return final_df - - -def simple_sum(df: pd.DataFrame) -> pd.DataFrame: - surg_columns: list[str] = [] - preassess_columns = [ - # "cardio", - "resp", - "airway", - "infectious", - "endo", - "neuro", - "haem", - "renal", - "gastro", - "CPET", - # "mets", - "anaesthetic_alert", - "asa", - "c_line", - "a_line", - ] - lab_names = ["na", "crea", "wcc", "hb", "plt", "alb", "bili", "inr", "crp"] - lab_columns = [ln + "_abnormal_count" for ln in lab_names] - echo_columns = ["echo_abnormal"] - obs_columns = [ - "bmi_max_value", - ] # TODO actually write this - - columns_to_sum = ( - surg_columns + preassess_columns + lab_columns + echo_columns + obs_columns - ) - df["simple_score"] = ( - df[columns_to_sum].replace(np.nan, 0).astype("bool").sum(axis=1) - ) - return df - - -def j_wrangle_echo(df: pd.DataFrame) -> pd.DataFrame: - df["finding"] = df["finding_type"] + " " + df["finding_name"] - - findings_categorical = [ - "Aortic Valve regurgitation severity", - "Aortic Valve stenosis", - "Left Ventricle left ventricular cavity size", - "Left Ventricle diastolic filling", - "Left Ventricle ejection fraction", - "Left Ventricle impaired", - "Mitral Valve regurgitation severity", - "Mitral Valve stenosis severity", - "Pulmonary Hypertension moderate", - "Pulmonary Hypertension severe", - "Pulmonic Valve regurgitation severity", - "Pulmonic Valve stenosis severity", - "Right Ventricle cavity size", - "Right Ventricle global systolic function", - "Tricuspid Valve regurgitation severity", - "Tricuspid Valve stenosis severity", - "Pulmonary Hypertension Probability of pulmonary hypertension", - ] - - findings_string = [ - "Left Ventricle Comment", - "Left Ventricle ejection fraction comments", - "Pulmonary Hypertension pulmonary hypertension", - ] - - findings_numerical = [ - "*Not Applicable RV TAPSE (TV annulus)", - "*Not Applicable Echo EF Estimated", - "*Not Applicable EF (Mod BP)", - "*Not Applicable PASP", - "Pulmonary Hypertension estimated PA systolic pressure", - ] - - # split findings into those of interest by data type - df_numeric = df[df["finding"].isin(findings_numerical)] - df_string = df[df["finding"].isin(findings_string)] - df_cat = df[df["finding"].isin(findings_categorical)] - - # extract EF values from LV comments strings - df_string.loc[:, "lv_string_value"] = df_string.loc[ - df_string["finding"] == "Left Ventricle Comment", "string_value" - ].apply(lambda x: re.findall(r"\d*[%]", x)) - df_string.loc[:, "lv_string_value"] = df_string.loc[:, "lv_string_value"].apply( - lambda d: d if isinstance(d, list) else [] - ) - df_string.loc[:, "lv_string_value"] = df_string.loc[:, "lv_string_value"].str[0] - df_string.loc[ - ~df_string["lv_string_value"].isna(), "lv_string_value" - ] = df_string.loc[~df_string["lv_string_value"].isna(), "lv_string_value"].apply( - lambda x: x.replace("%", "") - ) - df_string.loc[:, "lv_string_value"] = ( - df_string.loc[:, "lv_string_value"] - .replace(r"^\s*$", np.nan, regex=True) - .apply(float) - ) - df_string.loc[ - ~df_string["lv_string_value"].isna(), "lv_string_value" - ] = df_string.loc[~df_string["lv_string_value"].isna(), "lv_string_value"].apply( - lambda x: float(x) - ) - - # extract EF values from LVEF comments strings - df_string.loc[:, "lv_string_value_2"] = df_string.loc[ - df_string["finding"] == "Left Ventricle ejection fraction comments", - "string_value", - ].apply(lambda x: re.findall(r"\d*[%]", x)) - df_string.loc[:, "lv_string_value_2"] = df_string.loc[:, "lv_string_value_2"].apply( - lambda d: d if isinstance(d, list) else [] - ) - df_string.loc[:, "lv_string_value_2"] = df_string.loc[:, "lv_string_value_2"].str[0] - df_string.loc[ - ~df_string["lv_string_value_2"].isna(), "lv_string_value_2" - ] = df_string.loc[ - ~df_string["lv_string_value_2"].isna(), "lv_string_value_2" - ].apply( - lambda x: x.replace("%", "") - ) - df_string.loc[:, "lv_string_value_2"] = ( - df_string.loc[:, "lv_string_value_2"] - .replace(r"^\s*$", np.nan, regex=True) - .apply(float) - ) - df_string.loc[ - ~df_string["lv_string_value_2"].isna(), "lv_string_value_2" - ] = df_string.loc[ - ~df_string["lv_string_value_2"].isna(), "lv_string_value_2" - ].apply( - lambda x: float(x) - ) - - # Extract PASP strings from PH comments - df_string.loc[:, "contains PASP value"] = df_string.loc[ - df_string["finding"] == "Pulmonary Hypertension pulmonary hypertension", - "string_value", - ].apply(lambda x: np.where(("PASP" in x) | ("systolic pressure" in x), 1, 0)) - df_string.loc[:, "PH_string_value"] = df_string.loc[ - ( - (df_string["finding"] == "Pulmonary Hypertension pulmonary hypertension") - & (df_string["contains PASP value"] == 1) - ), - "string_value", - ].apply(lambda x: re.findall(r"\d*\.?\d+", x)) - df_string.loc[:, "PH_string_value"] = df_string.loc[ - ( - (df_string["finding"] == "Pulmonary Hypertension pulmonary hypertension") - & (df_string["contains PASP value"] == 1) - ), - "PH_string_value", - ].apply(lambda x: [float(i) for i in x]) - - def get_first_above_8(list_of_nos: list[float]) -> float: - item = next((x for x in list_of_nos if ((x > 8) & (x < 80))), np.nan) - return item - - df_string.loc[:, "PH_string_value"] = df_string.loc[ - ( - (df_string["finding"] == "Pulmonary Hypertension pulmonary hypertension") - & (df_string["contains PASP value"] == 1) - ), - "PH_string_value", - ].apply(lambda x: get_first_above_8(x)) - df_string = df_string.drop(columns=["contains PASP value"]) - - # convert selected PH comment strings to binary vars - df_string["pulm_HTN_string_bin"] = np.where( - ( - (df_string["finding"] == "Pulmonary Hypertension pulmonary hypertension") - & (df_string["string_value"] == "1") - ), - 1, - np.nan, - ) - df_string["pulm_HTN_string_moderate"] = np.where( - ( - (df_string["finding"] == "Pulmonary Hypertension pulmonary hypertension") - & (df_string["string_value"] == "moderate") - ), - 1, - np.nan, - ) - df_string["pulm_HTN_string_severe"] = np.where( - ( - (df_string["finding"] == "Pulmonary Hypertension pulmonary hypertension") - & (df_string["string_value"] == "severe") - ), - 1, - np.nan, - ) - - # keep only features generated from string columns - df_string = df_string.drop( - columns=[ - "finding_type", - "finding_name", - "string_value", - "numeric_value", - "unit", - "finding", - ] - ) - - # rename numeric values and pivot table - df_numeric = df_numeric.replace( - { - "finding": { - "*Not Applicable RV TAPSE (TV annulus)": "TAPSE_num", - "*Not Applicable Echo EF Estimated": "EF_est_num", - "*Not Applicable EF (Mod BP)": "EF_mbp_num", - "*Not Applicable PASP": "PASP_num", - "Pulmonary Hypertension estimated PA systolic pressure": "est_PASP_num", - } - } - ) - - df_numeric = df_numeric.drop( - columns=["finding_type", "finding_name", "string_value", "unit"] - ) - - df_numeric_pivot = df_numeric.pivot_table( - index=[ - "patient_durable_key", - "surgical_case_key", - "imaging_key", - "echo_start_date", - "echo_finalised_date", - "planned_operation_start_instant", - ], - values="numeric_value", - columns="finding", - ) - - df_numeric_pivot.reset_index(inplace=True) - df_numeric_pivot.columns.name = None - - num_col_names = [ - "TAPSE_num", - "EF_est_num", - "EF_mbp_num", - "PASP_num", - "est_PASP_num", - ] - - for col in num_col_names: - if col not in list(df_numeric_pivot.columns): - df_numeric_pivot[col] = np.nan - - # rename categorical values and pivot table - df_cat = df_cat.replace( - { - "finding": { - "Aortic Valve regurgitation severity": "AVR", - "Aortic Valve stenosis": "AVS", - "Left Ventricle left ventricular cavity size": "LV_size_cat", - "Left Ventricle diastolic filling": "LV_diast_fill_cat", - "Left Ventricle ejection fraction": "LVEF_cat", - "Left Ventricle impaired": "LV_imp_cat", - "Mitral Valve regurgitation severity": "MVR", - "Mitral Valve stenosis severity": "MVS", - "Pulmonary Hypertension moderate": "PH_mod_cat", - "Pulmonary Hypertension severe": "PH_sev_cat", - "Pulmonic Valve regurgitation severity": "PVR", - "Pulmonic Valve stenosis severity": "PVS", - "Right Ventricle cavity size": "RV_size_cat", - "Right Ventricle global systolic function": "RV_func_cat", - "Tricuspid Valve regurgitation severity": "TVR", - "Tricuspid Valve stenosis severity": "TVS", - "Pulmonary Hypertension Probability\ - of pulmonary hypertension": "PH_prob_cat", - } - } - ) - - df_cat = df_cat.drop( - columns=["finding_type", "finding_name", "numeric_value", "unit"] - ) - - df_cat_pivot = df_cat.pivot_table( - index=[ - "patient_durable_key", - "surgical_case_key", - "imaging_key", - "echo_start_date", - "echo_finalised_date", - "planned_operation_start_instant", - ], - values="string_value", - columns="finding", - aggfunc=lambda x: " ".join(x), - ) - - df_cat_pivot.reset_index(inplace=True) - df_cat_pivot.columns.name = None - - cat_col_names = [ - "AVR", - "AVS", - "LV_size_cat", - "LV_diast_fill_cat", - "LVEF_cat", - "LV_imp_cat", - "MVR", - "MVS", - "PH_mod_cat", - "PH_sev_cat", - "PVR", - "PVS", - "RV_size_cat", - "RV_func_cat", - "TVR", - "TVS", - "PH_prob_cat", - ] - - for col in cat_col_names: - if col not in list(df_cat_pivot.columns): - df_cat_pivot[col] = np.nan - - # merge sets of features together, one row for each echo performed - - df_cases = df[ - [ - "patient_durable_key", - "surgical_case_key", - "imaging_key", - "echo_start_date", - "echo_finalised_date", - "planned_operation_start_instant", - ] - ].drop_duplicates() - - df_results = df_cases.merge( - df_cat_pivot, - on=[ - "patient_durable_key", - "surgical_case_key", - "imaging_key", - "echo_start_date", - "echo_finalised_date", - "planned_operation_start_instant", - ], - how="left", - ) - - df_results = df_results.merge( - df_numeric_pivot, - on=[ - "patient_durable_key", - "surgical_case_key", - "imaging_key", - "echo_start_date", - "echo_finalised_date", - "planned_operation_start_instant", - ], - how="left", - ) - - string_cols_to_join = [ - "lv_string_value", - "lv_string_value_2", - "PH_string_value", - "pulm_HTN_string_bin", - "pulm_HTN_string_moderate", - "pulm_HTN_string_severe", - ] - - for col in string_cols_to_join: - cols = [ - "patient_durable_key", - "surgical_case_key", - "imaging_key", - "echo_start_date", - "echo_finalised_date", - "planned_operation_start_instant", - ] + [col] - - to_join = df_string[cols] - - to_join = to_join.drop_duplicates() - to_join = to_join[~to_join[col].isna()] - - df_results = df_results.merge( - to_join, - on=[ - "patient_durable_key", - "surgical_case_key", - "imaging_key", - "echo_start_date", - "echo_finalised_date", - "planned_operation_start_instant", - ], - how="left", - ) - - # create categories based on abnormal values - # Note here cutoffs for moderately abnormal are used to flag an abnormal value - # - mildly abnormal is not flagged - - df_results["valve_abnormal"] = np.where( - (df_results["AVR"] == "severe") - | (df_results["AVR"] == "critical") - | (df_results["AVR"] == "moderate-to-severe") - | (df_results["AVS"] == "severe") - | (df_results["AVS"] == "critical") - | (df_results["AVS"] == "moderate-to-severe") - | (df_results["MVR"] == "severe") - | (df_results["MVR"] == "critical") - | (df_results["MVR"] == "moderate-to-severe") - | (df_results["MVS"] == "severe") - | (df_results["MVS"] == "critical") - | (df_results["MVS"] == "moderate-to-severe") - | (df_results["PVR"] == "severe") - | (df_results["PVR"] == "critical") - | (df_results["PVR"] == "moderate-to-severe") - | (df_results["PVS"] == "severe") - | (df_results["PVS"] == "critical") - | (df_results["PVS"] == "moderate-to-severe") - | (df_results["TVR"] == "severe") - | (df_results["TVR"] == "critical") - | (df_results["TVR"] == "moderate-to-severe") - | (df_results["TVS"] == "severe") - | (df_results["TVS"] == "critical") - | (df_results["TVS"] == "moderate-to-severe"), - 1, - 0, - ) - df_results["lv_function_abnormal"] = np.where( - (df_results["EF_est_num"] <= 30) - | (df_results["EF_mbp_num"] <= 30) - | (df_results["lv_string_value"] <= 30) - | (df_results["lv_string_value_2"] <= 30) - | (df_results["LVEF_cat"] == "decreased") - | (df_results["LV_diast_fill_cat"] == "abnormal") - | (df_results["LV_imp_cat"] == "1") - | (df_results["LV_size_cat"] == "severe"), - 1, - 0, - ) - - df_results["rv_function_abnormal"] = np.where( - (df_results["RV_func_cat"] == "severely reduced") - | (df_results["RV_size_cat"] == "severely enlarged") - | (df_results["TAPSE_num"] <= 1.7), - 1, - 0, - ) - - df_results["pulm_htn"] = np.where( - (df_results["PH_prob_cat"] == "intermediate") - | (df_results["PH_sev_cat"] == "1") - | (df_results["PH_string_value"] > 60) - | (df_results["PASP_num"] > 60) - | (df_results["est_PASP_num"] > 60) - | (df_results["pulm_HTN_string_bin"] == 1) - | (df_results["pulm_HTN_string_severe"] == 1), - 1, - 0, - ) - - # create variables for echo performed and echo abnormal - df_results["echo_performed"] = 1 - df_results["echo_abnormal"] = np.where( - (df_results["valve_abnormal"] == 1) - | (df_results["lv_function_abnormal"] == 1) - | (df_results["rv_function_abnormal"] == 1) - | (df_results["pulm_htn"] == 1), - 1, - 0, - ) - - # select only engineered features - df_results = df_results[ - [ - "patient_durable_key", - "surgical_case_key", - "imaging_key", - "echo_start_date", - "echo_finalised_date", - "planned_operation_start_instant", - "valve_abnormal", - "lv_function_abnormal", - "rv_function_abnormal", - "pulm_htn", - "echo_performed", - "echo_abnormal", - ] - ] - - # select only most recent echo per surgical case and return this - - df_last_echo = ( - df_results.sort_values("echo_finalised_date") - .groupby( - [ - "patient_durable_key", - "surgical_case_key", - "planned_operation_start_instant", - ] - ) - .tail(1) - ) - - df_last_echo = df_last_echo[ - [ - "surgical_case_key", - "planned_operation_start_instant", - "valve_abnormal", - "lv_function_abnormal", - "rv_function_abnormal", - "pulm_htn", - "echo_performed", - "echo_abnormal", - ] - ] - - return df_last_echo - - -def j_wrangle_obs(caboodle_obs: pd.DataFrame) -> pd.DataFrame: - caboodle_obs.loc[:, "month_pre_theatre"] = caboodle_obs.loc[ - :, "planned_operation_start_instant" - ] - pd.to_timedelta(16, unit="W") - - caboodle_obs = caboodle_obs[ - ( - caboodle_obs.loc[:, "taken_instant"] - < caboodle_obs.loc[:, "planned_operation_start_instant"] - ) - & ( - caboodle_obs.loc[:, "first_documented_instant"] - < caboodle_obs.loc[:, "planned_operation_start_instant"] - ) - & ( - caboodle_obs.loc[:, "taken_instant"] - > caboodle_obs.loc[:, "month_pre_theatre"] - ) - & ( - caboodle_obs.loc[:, "first_documented_instant"] - > caboodle_obs.loc[:, "month_pre_theatre"] - ) - ] - - numerical_obs_list = ["Resp", "Temp", "SpO2", "Pulse", "BMI (Calculated)"] - - text_obs_list = ["BP", "Room Air or Oxygen"] - - # Split to numerical and text obs for processing - numerical_obs = caboodle_obs[ - caboodle_obs.loc[:, "display_name"].isin(numerical_obs_list) - ] - numerical_obs = numerical_obs[~numerical_obs["numeric_value"].isna()] - - text_obs = caboodle_obs[caboodle_obs.loc[:, "display_name"].isin(text_obs_list)] - text_obs = text_obs[text_obs["value"] != ""] - - # Process text obs - text_obs[["SYS_BP", "DIAS_BP"]] = text_obs[text_obs.loc[:, "display_name"] == "BP"][ - "value" - ].str.split("/", 1, expand=True) - - text_obs.loc[:, "SYS_BP"].fillna(value=np.nan, inplace=True) - text_obs.loc[:, "DIAS_BP"].fillna(value=np.nan, inplace=True) - - text_obs.loc[:, "SYS_BP"] = text_obs.loc[:, "SYS_BP"].apply(lambda x: float(x)) - text_obs.loc[:, "DIAS_BP"] = text_obs.loc[:, "DIAS_BP"].apply(lambda x: float(x)) - - oxygen_conditions = [ - (text_obs.loc[:, "display_name"] == "Room Air or Oxygen") - & (text_obs.loc[:, "value"] == "Supplemental Oxygen"), - (text_obs.loc[:, "display_name"] == "Room Air or Oxygen") - & (text_obs.loc[:, "value"] == "Room air"), - (text_obs.loc[:, "display_name"] != "Room Air or Oxygen"), - ] - - oxygen_codes = (1, 0, np.nan) - - text_obs.loc[:, "ON_OXYGEN_BIN"] = np.select(oxygen_conditions, oxygen_codes) - - text_obs = text_obs.drop( - columns=["value", "numeric_value", "display_name", "month_pre_theatre"] - ) - - bp_obs = text_obs[ - [ - "surgical_case_key", - "first_documented_instant", - "taken_instant", - "planned_operation_start_instant", - "SYS_BP", - "DIAS_BP", - ] - ] - - bp_obs = bp_obs[~bp_obs["SYS_BP"].isna()] - bp_obs = bp_obs.drop_duplicates() - - o2_obs = text_obs[ - [ - "surgical_case_key", - "first_documented_instant", - "taken_instant", - "planned_operation_start_instant", - "ON_OXYGEN_BIN", - ] - ] - - o2_obs = o2_obs[~o2_obs["ON_OXYGEN_BIN"].isna()] - o2_obs = o2_obs.drop_duplicates() - - text_obs = bp_obs.merge( - o2_obs, - on=[ - "surgical_case_key", - "first_documented_instant", - "taken_instant", - "planned_operation_start_instant", - ], - how="outer", - ) - - text_obs.loc[text_obs["SYS_BP"] == 0, "SYS_BP"] = 120 - text_obs.loc[text_obs["SYS_BP"] < 60, "SYS_BP"] = 60 - text_obs.loc[text_obs["SYS_BP"] > 240, "SYS_BP"] = 240 - text_obs.loc[text_obs["DIAS_BP"] == 0, "DIAS_BP"] = 70 - text_obs.loc[text_obs["DIAS_BP"] < 40, "DIAS_BP"] = 40 - text_obs.loc[text_obs["DIAS_BP"] > 160, "DIAS_BP"] = 160 - - # Process numerical obs - - obs_long_names_conditions = [ - (numerical_obs["display_name"] == "SpO2"), - (numerical_obs["display_name"] == "Pulse"), - (numerical_obs["display_name"] == "Resp"), - (numerical_obs["display_name"] == "Temp"), - (numerical_obs["display_name"] == "BMI (Calculated)"), - ] - - values_obs_codes = ("SPO2", "PULSE", "RR", "TEMP", "BMI") - - numerical_obs.loc[:, "obs_code"] = np.select( - obs_long_names_conditions, values_obs_codes - ) - - numerical_obs = numerical_obs.drop( - columns=["value", "display_name", "month_pre_theatre"] - ) - - numerical_obs = numerical_obs.pivot_table( - index=[ - "surgical_case_key", - "planned_operation_start_instant", - "first_documented_instant", - "taken_instant", - ], - values="numeric_value", - columns="obs_code", - ) - - numerical_obs.reset_index(inplace=True) - numerical_obs.columns.name = None - - # convert temp to deg C - - numerical_obs.loc[:, "TEMP"] = (numerical_obs.loc[:, "TEMP"] - 32) * (5 / 9) - - numerical_obs.loc[numerical_obs["BMI"] == 0, "BMI"] = 25 - numerical_obs.loc[numerical_obs["BMI"] < 16, "BMI"] = 16 - numerical_obs.loc[numerical_obs["BMI"] > 60, "BMI"] = 60 - numerical_obs.loc[numerical_obs["PULSE"] == 0, "PULSE"] = 60 - numerical_obs.loc[numerical_obs["PULSE"] < 40, "PULSE"] = 40 - numerical_obs.loc[numerical_obs["PULSE"] > 200, "PULSE"] = 200 - numerical_obs.loc[numerical_obs["RR"] == 0, "RR"] = 12 - numerical_obs.loc[numerical_obs["RR"] < 6, "RR"] = 6 - numerical_obs.loc[numerical_obs["RR"] > 60, "RR"] = 6 - numerical_obs.loc[numerical_obs["SPO2"] == 0, "SPO2"] = 98 - numerical_obs.loc[numerical_obs["SPO2"] < 80, "SPO2"] = 80 - numerical_obs.loc[numerical_obs["TEMP"] == 0, "TEMP"] = 36 - numerical_obs.loc[numerical_obs["TEMP"] < 34, "TEMP"] = 34 - numerical_obs.loc[numerical_obs["TEMP"] > 42, "TEMP"] = 42 - - # remerge obs - - all_obs = text_obs.merge( - numerical_obs, - on=[ - "surgical_case_key", - "first_documented_instant", - "taken_instant", - "planned_operation_start_instant", - ], - how="outer", - ) - - # create abnormal flag - - preadm_obs_list = [ - "SYS_BP", - "DIAS_BP", - "ON_OXYGEN_BIN", - "PULSE", - "RR", - "SPO2", - "TEMP", - ] - obs_low_limit = (100, 50, 0, 50, 8, 94, 35.5) - obs_high_limit = (160, 100, 0, 90, 20, 100, 37.5) - - for ob, low, high in zip(preadm_obs_list, obs_low_limit, obs_high_limit): - all_obs[ob + "_abnormal_flag"] = np.where( - np.logical_or(all_obs[ob] > high, all_obs[ob] < low), 1, 0 - ) - - # print("Abnormal", ob, "results: ", str(all_obs[ob+"_abnormal_flag"].sum())) - - # process aggregate stats - - for ob in preadm_obs_list: - all_obs[ob + "_abnormal_count"] = all_obs.groupby(["surgical_case_key"])[ - ob + "_abnormal_flag" - ].transform(sum) - - for ob in preadm_obs_list: - all_obs[ob + "_measured_count"] = all_obs.groupby(["surgical_case_key"])[ - ob - ].transform("count") - - for ob in preadm_obs_list: - all_obs[ob + "_last_value"] = ( - all_obs.sort_values("taken_instant") - .groupby(["surgical_case_key"])[ob] - .transform("last") - ) - - for ob in preadm_obs_list: - all_obs[ob + "_mean_value"] = all_obs.groupby(["surgical_case_key"])[ - ob - ].transform("mean") - - for ob in preadm_obs_list: - all_obs[ob + "_min_value"] = all_obs.groupby(["surgical_case_key"])[ - ob - ].transform(min) - - for ob in preadm_obs_list: - all_obs[ob + "_max_value"] = all_obs.groupby(["surgical_case_key"])[ - ob - ].transform(max) - - all_obs["bmi_max_value"] = all_obs.groupby(["surgical_case_key"])["BMI"].transform( - max - ) - - # Drop cols not using as predictors - cols_to_drop_obs = ( - preadm_obs_list - + [ob + "_abnormal_flag" for ob in preadm_obs_list] - + ["first_documented_instant", "taken_instant", "BMI"] - ) - - obs = all_obs.drop(columns=cols_to_drop_obs).drop_duplicates() - - return obs - - -def generate_icu_binary_from_emap( - data: pd.DataFrame, # consider adding more locations here if appropriate. - old: bool = False, -) -> pd.DataFrame: - # generate_all_theatres_flag - print("generate_all_theatres_flag") - - covdate = datetime(2020, 6, 1, tzinfo=timezone.utc) - - conds = [ - (data["name"] == "UCH P03 THEATRE SUITE"), - (data["name"] == "WMS W01 THEATRE SUITE"), - (data["name"] == "GWB B-1 THEATRE SUITE"), - ( - (data["name"] == "UCH T02 DAY SURG THR") - & (data["admission_time"] >= covdate) - ), - ] - data["main_theatre"] = np.select(conds, ["Yes"] * 4, default="No") - - condis = [ - (data["name"] == "UCH P03 THEATRE SUITE") & (data["admission_time"] <= covdate), - (data["name"] == "UCH P03 THEATRE SUITE") & (data["admission_time"] >= covdate), - (data["name"] == "UCH T02 DAY SURG THR") & (data["admission_time"] >= covdate), - (data["name"] == "WMS W01 THEATRE SUITE"), - (data["name"] == "GWB B-1 THEATRE SUITE"), - ] - choices = [ - "T03 Pre COVID Theatre", - "T02 Green Theatre", - "T03 Blue Theatre", - "Westmoreland Street", - "Grafton Way", - ] - data["main_theatre_cat"] = np.select(condis, choices, default="Not Theatre") - - # generate_time_features - data.loc[:, "duration_hours"] = data.loc[:, "duration"] / pd.to_timedelta( - 1, unit="H" - ) - - data.loc[:, "duration_hours"] = np.where( - np.logical_and( - data.loc[:, "duration_hours"] > 24, - data.loc[:, "main_theatre"] == "Yes", - ), - 24, - data.loc[:, "duration_hours"], - ) - data.loc[:, "duration_hours"] = np.where( - np.logical_and( - data.loc[:, "duration_hours"] < 0.3, - data.loc[:, "main_theatre"] == "Yes", - ), - 0.3, - data.loc[:, "duration_hours"], - ) - - data.loc[:, "adm_datetime_dt64"] = pd.to_datetime( - data.loc[:, "admission_time"], utc=True - ) + pd.to_timedelta(1, unit="H") - data.loc[:, "disch_datetime_dt64"] = pd.to_datetime( - data.loc[:, "discharge_time"], utc=True - ) + pd.to_timedelta(1, unit="H") - data.loc[:, "adm_date"] = data.loc[:, "adm_datetime_dt64"].apply(datetime.date) - - data.loc[:, "adm_day"] = data.loc[:, "adm_datetime_dt64"].apply(datetime.weekday) - data.loc[:, "adm_month"] = pd.DatetimeIndex(data.loc[:, "adm_datetime_dt64"]).month - - lockdown_1_start = datetime(2020, 3, 23, tzinfo=timezone.utc) - lockdown_1_end = datetime(2020, 6, 23, tzinfo=timezone.utc) - - lockdown_2_start = datetime(2021, 1, 6, tzinfo=timezone.utc) - lockdown_2_end = datetime(2021, 4, 12, tzinfo=timezone.utc) - - conditions_lockdown = [ - (data["admission_time"] < lockdown_1_start), - (data["admission_time"] > lockdown_1_start) - & (data["admission_time"] < lockdown_1_end), - (data["admission_time"] > lockdown_1_end) - & (data["admission_time"] < lockdown_2_start), - (data["admission_time"] > lockdown_2_start) - & (data["admission_time"] < lockdown_2_end), - (data["admission_time"] > lockdown_2_end), - ] - - values_lockdown = ("precovid", "surge1", "nosurge", "surge2", "nosurge") - data.loc[:, "covid_period"] = np.select(conditions_lockdown, values_lockdown) - - # prev_and_next_wards - print("prev_and_next_wards") - - if old: - data = ( - data.sort_values("admission_time") - .groupby("hospital_visit_id") - .apply(lambda x: x.assign(prev_ward=lambda x: x["name"].shift(1))) - ) - data = ( - data.sort_values("admission_time") - .groupby("hospital_visit_id") - .apply(lambda x: x.assign(next_ward=lambda x: x["name"].shift(-1))) - ) - data = ( - data.sort_values("admission_time") - .groupby("hospital_visit_id") - .apply(lambda x: x.assign(prev_ward2=lambda x: x["name"].shift(2))) - ) - data = ( - data.sort_values("admission_time") - .groupby("hospital_visit_id") - .apply( - lambda x: x.assign( - ward_after_theatre_duration_hours=lambda x: np.where( - x["main_theatre"] == "Yes", - x["duration_hours"].shift(-1), - pd.NaT, - ) - ) - ) - ) - else: - data = data.sort_values(["admission_time", "discharge_time"]) - data["prev_ward"] = data.groupby(["hospital_visit_id"])["name"].shift(1) - data["next_ward"] = data.groupby(["hospital_visit_id"])["name"].shift(-1) - data["prev_ward2"] = data.groupby(["hospital_visit_id"])["name"].shift(2) - data["ward_after_theatre_duration_hours"] = data.groupby("hospital_visit_id")[ - "duration_hours" - ].shift(-1) - data.loc[ - data["main_theatre"] == "No", "ward_after_theatre_duration_hours" - ] = pd.NaT - - # filter out patients for whom there is no discharge time - - data = data[ - (data.loc[:, "main_theatre"] == "Yes") & (~data.loc[:, "discharge_time"].isna()) - ] - - # generate_icu_pacu_label - print("generate_icu_pacu_label") - - ward_cols = ["prev_ward", "next_ward"] - for ward in ward_cols: - conditions_pacu = [ - data[ward] == "UCH T03 INTENSIVE CARE", - data[ward] == "WMS W01 CRITICAL CARE", - data[ward] == "GWB L01 CRITICAL CARE", - ( - data["admission_time"] - >= datetime(2020, 11, 30, 0, 0, 1, tzinfo=timezone.utc) - ) - & ( - data["admission_time"] - <= datetime(2020, 12, 20, 23, 59, 59, tzinfo=timezone.utc) - ) - & (data[ward] == "UCH T07 SOUTH (T07S)"), - ( - data["admission_time"] - >= datetime(2021, 4, 19, 0, 0, 1, tzinfo=timezone.utc) - ) - & ( - data["admission_time"] - <= datetime(2021, 5, 30, 23, 59, 59, tzinfo=timezone.utc) - ) - & (data[ward] == "UCH T07 SOUTH (T07S)"), - ( - data["admission_time"] - >= datetime(2020, 11, 30, 0, 0, 1, tzinfo=timezone.utc) - ) - & ( - data["admission_time"] - <= datetime(2020, 12, 20, 23, 59, 59, tzinfo=timezone.utc) - ) - & (data[ward] == "UCH T07 SOUTH"), - ( - data["admission_time"] - >= datetime(2021, 4, 19, 0, 0, 1, tzinfo=timezone.utc) - ) - & ( - data["admission_time"] - <= datetime(2021, 5, 30, 23, 59, 59, tzinfo=timezone.utc) - ) - & (data[ward] == "UCH T07 SOUTH"), - ( - data["admission_time"] - >= datetime(2021, 5, 31, 0, 0, 1, tzinfo=timezone.utc) - ) - & ( - data["admission_time"] - <= datetime(2021, 7, 19, 23, 59, 59, tzinfo=timezone.utc) - ) - & (data[ward] == "UCH T06 SOUTH PACU"), - ] - - values_pacu = ["ICU/PACU"] * 8 - - data.loc[:, "ICU_PACU_" + ward] = np.select(conditions_pacu, values_pacu) - data.loc[:, "ICU_PACU_" + ward] = data.loc[:, "ICU_PACU_" + ward].replace( - {"0": "Not ICU/PACU"} - ) - - if old: - lambda x: x.assign( - icu_pacu_duration_hours=lambda x: np.where( - np.logical_and( - x["main_theatre"] == "Yes", - x["ICU_PACU_next_ward"] == "ICU/PACU", - ), - x["ward_after_theatre_duration_hours"], - pd.NaT, - ) - ) - - else: - data["icu_pacu_duration_hours"] = data["ward_after_theatre_duration_hours"] - data.loc[data["main_theatre"] == "No", "icu_pacu_duration_hours"] = pd.NaT - data.loc[ - data["ICU_PACU_next_ward"] == "Not ICU/PACU", - "icu_pacu_duration_hours", - ] = pd.NaT - - # merge_split_theatre_visits - print("merge_split_theatre_visits") - - counts_visit_date = ( - data.groupby(["hospital_visit_id", "adm_date", "location_id"]) - .size() - .reset_index() - .rename(columns={0: "count"}) - ) - - duplicates = counts_visit_date[counts_visit_date["count"] > 1] - - theatre_data_single = data[ - ~data["hospital_visit_id"].isin(duplicates["hospital_visit_id"]) - ] - - dupes = data[data["hospital_visit_id"].isin(duplicates["hospital_visit_id"])] - - dupes = ( - dupes.sort_values("admission_time") - .groupby(["hospital_visit_id", "adm_date", "location_id"]) - .apply( - lambda x: x.assign(prev_adm_time=lambda x: x["adm_datetime_dt64"].shift(1)) - ) - ) - - dupes = ( - dupes.sort_values("admission_time") - .groupby(["hospital_visit_id", "adm_date", "location_id"]) - .apply( - lambda x: x.assign( - prev_disch_time=lambda x: x["disch_datetime_dt64"].shift(1) - ) - ) - ) - - dupes = ( - dupes.sort_values("admission_time") - .groupby(["hospital_visit_id", "adm_date", "location_id"]) - .apply( - lambda x: x.assign(next_adm_time=lambda x: x["adm_datetime_dt64"].shift(-1)) - ) - ) - - dupes = ( - dupes.sort_values("admission_time") - .groupby(["hospital_visit_id", "adm_date", "location_id"]) - .apply( - lambda x: x.assign( - next_disch_time=lambda x: x["disch_datetime_dt64"].shift(-1) - ) - ) - ) - - dupes["since_prev_discharge"] = ( - dupes["adm_datetime_dt64"] - dupes["prev_disch_time"] - ) / pd.to_timedelta(1, unit="m") - - dupes["to_next_admission"] = ( - dupes["next_adm_time"] - dupes["disch_datetime_dt64"] - ) / pd.to_timedelta(1, unit="m") - - dupes["to_merge"] = np.where( - ((dupes["since_prev_discharge"] < 15) | (dupes["to_next_admission"] < 15)), - 1, - 0, - ) - - dupes_not_merged = dupes[dupes["to_merge"] == 0] - dupes_to_merge = dupes[dupes["to_merge"] == 1] - - dupes_to_merge = ( - dupes_to_merge.sort_values("admission_time") - .groupby(["hospital_visit_id", "adm_date", "location_id"]) - .apply(lambda x: x.assign(min_adm_dt64=lambda x: x["adm_datetime_dt64"].min())) - ) - - dupes_to_merge["min_adm_time"] = dupes_to_merge["min_adm_dt64"].astype(str) - - # get latest admission time for group - dupes_to_merge = ( - dupes_to_merge.sort_values("admission_time") - .groupby(["hospital_visit_id", "adm_date", "location_id"]) - .apply( - lambda x: x.assign(max_disch_dt64=lambda x: x["disch_datetime_dt64"].max()) - ) - ) - - dupes_to_merge["max_disch_time"] = dupes_to_merge["max_disch_dt64"].astype(str) - - # get lv_id corresponding to longest admission - dupes_to_merge["longest_adm"] = dupes_to_merge.index.isin( - dupes_to_merge.groupby(["hospital_visit_id", "adm_date", "location_id"])[ - "duration_hours" - ].idxmax() - ).astype(int) - - dupes_to_merge = ( - dupes_to_merge.sort_values("admission_time") - .groupby(["hospital_visit_id", "adm_date", "location_id"]) - .apply( - lambda x: x.assign( - lv_id_longest_adm=lambda x: x.loc[ - x["longest_adm"] == 1, ["location_visit_id"] - ] - ) - ) - ) - - dupes_to_merge["lv_id_longest_adm"] = dupes_to_merge["lv_id_longest_adm"].fillna( - dupes_to_merge.groupby(["hospital_visit_id", "adm_date", "location_id"])[ - "lv_id_longest_adm" - ].transform("max") - ) - - # get prev and next admissions for groups - # recreate same columns from original df - - dupes_to_merge["prev_ward_group"] = ( - dupes_to_merge.sort_values("admission_time") - .groupby(["hospital_visit_id", "adm_date", "location_id"])["prev_ward"] - .transform("first") - ) - - dupes_to_merge["next_ward_group"] = ( - dupes_to_merge.sort_values("admission_time") - .groupby(["hospital_visit_id", "adm_date", "location_id"])["next_ward"] - .transform("last") - ) - - dupes_to_merge["next_ward_duration_group"] = ( - dupes_to_merge.sort_values("admission_time") - .groupby(["hospital_visit_id", "adm_date", "location_id"])[ - "ward_after_theatre_duration_hours" - ] - .transform("last") - ) - - dupes_to_merge["prev_ward_2_group"] = ( - dupes_to_merge.sort_values("admission_time") - .groupby(["hospital_visit_id", "adm_date", "location_id"])["prev_ward2"] - .transform("first") - ) - - dupes_to_merge["ICU_PACU_prev_ward_group"] = ( - dupes_to_merge.sort_values("admission_time") - .groupby(["hospital_visit_id", "adm_date", "location_id"])["ICU_PACU_prev_ward"] - .transform("first") - ) - - dupes_to_merge["ICU_PACU_next_ward_group"] = ( - dupes_to_merge.sort_values("admission_time") - .groupby(["hospital_visit_id", "adm_date", "location_id"])["ICU_PACU_next_ward"] - .transform("last") - ) - - dupes_to_merge["icu_pacu_duration_hours_group"] = ( - dupes_to_merge.sort_values("admission_time") - .groupby(["hospital_visit_id", "adm_date", "location_id"])[ - "icu_pacu_duration_hours" - ] - .transform("last") - ) - - # ICU_PACU_next_ward - # icu_pacu_duration_hours - - dupes_to_merge = dupes_to_merge.drop( - columns=[ - "admission_time", - "discharge_time", - "adm_datetime_dt64", - "disch_datetime_dt64", - "duration", - "duration_hours", - "prev_ward", - "prev_ward2", - "next_ward", - "ICU_PACU_prev_ward", - "ICU_PACU_next_ward", - "icu_pacu_duration_hours", - "location_visit_id", - "prev_adm_time", - "prev_disch_time", - "next_adm_time", - "next_disch_time", - "ward_after_theatre_duration_hours", - "since_prev_discharge", - "to_next_admission", - "to_merge", - "longest_adm", - ] - ) - - dupes_merged = dupes_to_merge.drop_duplicates() - - dupes_merged.loc[:, "max_disch_time"] = pd.to_datetime( - dupes_merged.loc[:, "max_disch_time"], utc=True - ) - dupes_merged.loc[:, "min_adm_time"] = pd.to_datetime( - dupes_merged.loc[:, "min_adm_time"], utc=True - ) - - dupes_merged.loc[:, "duration"] = ( - dupes_merged.loc[:, "max_disch_time"] - dupes_merged.loc[:, "min_adm_time"] - ) - dupes_merged.loc[:, "duration_hours"] = dupes_merged.loc[ - :, "duration" - ] / pd.to_timedelta(1, unit="H") - - name_dict = { - "min_adm_dt64": "adm_datetime_dt64", - "max_disch_dt64": "disch_datetime_dt64", - "min_adm_time": "admission_time", - "max_disch_time": "discharge_time", - "prev_ward_group": "prev_ward", - "next_ward_group": "next_ward", - "prev_ward_2_group": "prev_ward2", - "lv_id_longest_adm": "location_visit_id", - "next_ward_duration_group": "ward_after_theatre_duration_hours", - "ICU_PACU_next_ward_group": "ICU_PACU_next_ward", - "ICU_PACU_prev_ward_group": "ICU_PACU_prev_ward", - "icu_pacu_duration_hours_group": "icu_pacu_duration_hours", - } - - dupes_merged.rename(columns=name_dict, inplace=True) - - dupes_not_merged = dupes_not_merged.drop( - columns=[ - "prev_adm_time", - "prev_disch_time", - "next_adm_time", - "next_disch_time", - "since_prev_discharge", - "to_next_admission", - "to_merge", - ] - ) - - data = pd.concat( - [theatre_data_single, dupes_not_merged, dupes_merged], - ignore_index=True, - ) - - # clean_wards_for_theatre_data - print("clean_wards_for_theatre_data") - - data.loc[:, "prev_ward_clean"] = data.loc[:, "prev_ward"] - - data.loc[ - (data["prev_ward"].isna()) & (data["prev_ward2"].notna()), - "prev_ward_clean", - ] = data.loc[:, "prev_ward2"] - - data.loc[ - (data["prev_ward"] == "UCH P03 THEATRE SUITE") - & (data["name"] == "UCH P03 THEATRE SUITE") - & (data["prev_ward2"].notna()), - "prev_ward_clean", - ] = data.loc[:, "prev_ward2"] - - data.loc[ - (data["prev_ward"] == "UCH T02 DAY SURG THR") - & (data["name"] == "UCH T02 DAY SURG THR") - & (data["prev_ward2"].notna()), - "prev_ward_clean", - ] = data.loc[:, "prev_ward2"] - - data.loc[ - (data["prev_ward"] == "GWB B-1 THEATRE SUITE") - & (data["name"] == "GWB B-1 THEATRE SUITE") - & (data["prev_ward2"].notna()), - "prev_ward_clean", - ] = data.loc[:, "prev_ward2"] - - data.loc[ - (data["prev_ward"] == "WMS W01 THEATRE SUITE") - & (data["name"] == "WMS W01 THEATRE SUITE") - & (data["prev_ward2"].notna()), - "prev_ward_clean", - ] = data.loc[:, "prev_ward2"] - - data.loc[:, "prev_ward_clean"] = data.loc[:, "prev_ward_clean"].fillna("HOME") - data.loc[:, "prev_location"] = np.where( - data.loc[:, "prev_ward_clean"] == "HOME", "HOME", "HOSPITAL" - ) - - # generate ICU binary - print("generating ICU binary") - data.loc[:, "ICU_binary"] = np.where( - data.loc[:, "ICU_PACU_next_ward"] == "ICU/PACU", 1, 0 - ) - - return data - - -def wrangle_echo(df: pd.DataFrame) -> pd.DataFrame: - """ - - this is clearly much simpler than jen's wrangle_echo above. - I have written a different .sql script - that also pulls the 'IsAbnormal' flag from EPIC. - For now, this then only tells us how many echos patients have had, - and how many of those were flagged as abnormal by the person doing the scan. - - This is not ideal as IsAbnormal does not necessarily seem to be accurate. - It also removes lots of potentially useful information. - """ - wrangled = ( - df.groupby("patient_durable_key") - .agg({"patient_durable_key": "size", "is_abnormal": "sum"}) - .rename( - columns={"patient_durable_key": "num_echo", "is_abnormal": "abnormal_echo"} - ) - .reset_index() - .merge( - df[["patient_durable_key", "narrative", "date_value"]], - how="left", - on="patient_durable_key", - ) - .sort_values("date_value") - .drop_duplicates("patient_durable_key", keep="last") - .rename( - columns={"narrative": "last_echo_narrative", "date_value": "last_echo_date"} - ) - ) - return wrangled - - -def fill_na(df: pd.DataFrame) -> pd.DataFrame: - df.loc[:, df.columns.str.contains("_count")] = df.loc[ - :, df.columns.str.contains("_count") - ].fillna(0) - - replace_dict = {"num_echo": 0, "abnormal_echo": 0, "bmi_max_value": 22.5} - lab_obs_dict = { - "SPO2": 98, - "PULSE": 70, - "RR": 12, - "TEMP": 36.5, - "SYS_BP": 120, - "DIAS_BP": 80, - "ON_OXYGEN_BIN": 0, - "crea": 70, - "hb": 130, - "wcc": 6.5, - "plt": 275, - "na": 140, - "alb": 42, - "crp": 0.6, - "bili": 10, - "inr": 1, - } - - for k, v in lab_obs_dict.items(): - replace_dict.update( - { - k + "_last_value": v, - k + "_mean_value": v, - k + "_min_value": v, - k + "_max_value": v, - } - ) - - df.fillna(value=replace_dict, inplace=True) - return df - - -def wrangle_pas(df: pd.DataFrame) -> pd.DataFrame: - return ( - df.sort_values(["patient_durable_key", "creation_instant"]) - .drop_duplicates("patient_durable_key", keep="last") - .loc[:, ["patient_durable_key", "creation_instant"]] - .merge(df, on=["patient_durable_key", "creation_instant"], how="left") - .replace( - { - "name": { - "PAC NURSING ISSUES FOR FOLLOW UP": "pac_nursing_issues", - "PAC NURSING OUTCOME": "pac_nursing_outcome", - "PRE-ASSESSMENT ANAESTHETIC REVIEW": "pac_dr_review", - } - } - ) - .sort_values(["patient_durable_key", "name", "line_num"]) - .groupby(["patient_durable_key", "name", "creation_instant"]) - .agg({"string_value": "".join}) - .pivot_table( - index=["patient_durable_key", "creation_instant"], - columns=["name"], - values="string_value", - aggfunc="".join, - ) - .reset_index() - .rename(columns={"creation_instant": "pac_date"}) - ) - - -def wrangle_hx(hx: pd.DataFrame) -> pd.DataFrame: - icd_codes = ( - ("A00", "B99", "I"), - ("C00", "D48", "II"), - ("D50", "D89", "III"), - ("E00", "E90", "IV"), - ("F00", "F99", "V"), - ("G00", "G99", "VI"), - ("H00", "H59", "VII"), - ("H60", "H95", "VIII"), - ("I00", "I99", "IX"), - ("J00", "J99", "X"), - ("K00", "K93", "XI"), - ("L00", "L99", "XII"), - ("M00", "M99", "XIII"), - ("N00", "N99", "XIV"), - ("O00", "O99", "XV"), - ("P00", "P96", "XVI"), - ("Q00", "Q99", "XVII"), - ("R00", "R99", "XVIII"), - ("S00", "T98", "XIX"), - ("U00", "U99", "XX"), - ("V01", "Y98", "XXI"), - ("Z00", "Z99", "XXII"), - ) - - def _get_class(code: str, icd_codes: dict) -> Any: - for icd in icd_codes: - if code >= icd[0] and code <= icd[1]: - return icd[2] - return None - - hx = hx.drop(hx[hx["value"] == "#NC"].index) - hx["class"] = hx["value"].str.slice(0, 3).apply(_get_class, icd_codes=icd_codes) - - one_hot = pd.get_dummies(hx["class"]) - one_hot["patient_durable_key"] = hx["patient_durable_key"] - counts = one_hot.groupby("patient_durable_key").sum() - - return counts diff --git a/api/src/api/electives/live_sql/data_adm.sql b/api/src/api/electives/live_sql/data_adm.sql deleted file mode 100644 index 81ccc0dd..00000000 --- a/api/src/api/electives/live_sql/data_adm.sql +++ /dev/null @@ -1,9 +0,0 @@ -SELECT COUNT (DISTINCT hv.mrn_id) -FROM star.location_visit lv - LEFT JOIN star.hospital_visit hv ON lv.hospital_visit_id = hv.hospital_visit_id - LEFT JOIN star.location loc ON lv.location_id = loc.location_id - LEFT JOIN star.department dp ON loc.department_id = dp.department_id -WHERE dp.speciality = %s - AND ( - DATE(lv.admission_datetime) = (%s - INTERVAL '1' DAY) - ) diff --git a/api/src/api/electives/live_sql/data_census.sql b/api/src/api/electives/live_sql/data_census.sql deleted file mode 100644 index 52dc8620..00000000 --- a/api/src/api/electives/live_sql/data_census.sql +++ /dev/null @@ -1,11 +0,0 @@ -SELECT COUNT (DISTINCT hv.mrn_id) -FROM star.location_visit lv - LEFT JOIN star.hospital_visit hv ON lv.hospital_visit_id = hv.hospital_visit_id - LEFT JOIN star.location loc ON lv.location_id = loc.location_id - LEFT JOIN star.department dp ON loc.department_id = dp.department_id -WHERE dp.speciality = %s - AND ( - DATE(lv.discharge_datetime) > %s - OR lv.discharge_datetime IS NULL - ) - AND DATE(lv.admission_datetime) <= %s diff --git a/api/src/api/electives/live_sql/get_all_pacu.sql b/api/src/api/electives/live_sql/get_all_pacu.sql deleted file mode 100644 index 16f32fcb..00000000 --- a/api/src/api/electives/live_sql/get_all_pacu.sql +++ /dev/null @@ -1,78 +0,0 @@ -with cbd as ( - SELECT PatientDurableKey, - booked_destination, - booking_date - FROM ( - SELECT scf.PatientDurableKey, - pof.StringResponse booked_destination, - poax.OrderedDateKey booking_date, - ROW_NUMBER() OVER ( - PARTITION BY scf.PatientDurableKey - ORDER BY OrderedDateKey DESC - ) ranked_order - FROM [CABOODLE_REPORT].[dbo].[SurgicalCaseFact] scf - LEFT JOIN [CABOODLE_REPORT].[dbo].[ProcedureOrderAllUclhFactX] poax ON scf.[PatientDurableKey] = poax.[PatientDurableKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].ProcedureOrderQuestionAnswerUclhFactX pof ON poax.ProcedureOrderAllUclhKey = pof.ProcedureOrderAllUclhKey - WHERE scf.[PatientDurableKey] > 0 - AND poax.OrderTypeCode = 78 - AND pof.SurveyQuestionKey = 1443 - ) ac - WHERE ac.ranked_order = 1 -), -pre as ( - SELECT cnavd.[StringValue] preassess_destination, - cnf.PatientDurableKey - FROM [CABOODLE_REPORT].[dbo].[ClinicalNoteFact] cnf - LEFT JOIN [CABOODLE_REPORT].[dbo].[ClinicalNoteAttributeValueDim] cnavd ON cnavd.[ClinicalNoteKey] = cnf.[ClinicalNoteKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[AttributeDim] ad ON cnavd.[AttributeKey] = ad.[AttributeKey] - WHERE cnf.[Type] = 'Anaesthesia Preprocedure Evaluation' - AND ad.[SmartDataElementEpicId] = 'UCLH#1325' -- preassessment case booking -) -SELECT DISTINCT patd.[PrimaryMrn], - patd.FirstName, - patd.LastName, - patd.Sex, - patd.BirthDate, - scufx.[PlannedOperationStartInstant], - scf.[HospitalEncounterKey], - scf.[Classification], - scufx.[PostOperativeDestination], - wlef.[AdmissionService], - wlef.[ElectiveAdmissionType], - poax.OrderedDateKey booking_date, - wlef.[IntendedManagement], - PostOperativeDestination, - pof.StringResponse booked_destination, - pre.preassess_destination, - pd.Name, - wlef.[Priority], - scufx.CaseScheduleStatus -FROM [CABOODLE_REPORT].[dbo].[SurgicalCaseFact] scf - LEFT JOIN [CABOODLE_REPORT].[dbo].[WaitingListEntryFact] wlef ON scf.[SurgicalCaseKey] = wlef.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[SurgicalCaseUclhFactX] scufx ON scf.[SurgicalCaseKey] = scufx.[SurgicalCaseKey] - LEfT JOIN [CABOODLE_REPORT].[dbo].[PatientDim] patd ON scf.[PatientDurableKey] = patd.[DurableKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DepartmentDim] dd ON scf.[OperatingRoomKey] = dd.[DepartmentKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[ProcedureDim] pd ON scf.[PrimaryProcedureKey] = pd.[ProcedureKey] - left join pre on pre.PatientDurableKey = scf.PatientDurableKey - LEFT JOIN [CABOODLE_REPORT].[dbo].[ProcedureOrderAllUclhFactX] poax ON scf.CaseRequestDateKey = poax.OrderedDateKey - AND poax.PatientDurableKey = scf.PatientDurableKey - LEFT JOIN [CABOODLE_REPORT].[dbo].ProcedureOrderQuestionAnswerUclhFactX pof ON poax.ProcedureOrderAllUclhKey = pof.ProcedureOrderAllUclhKey -WHERE scf.[PatientDurableKey] > 1 - AND scf.[PatientDurableKey] IS NOT NULL - AND patd.[AgeInYears] >= 18 - AND scufx.[PlannedOperationStartInstant] >= '2023-01-10' - AND scufx.[PlannedOperationStartInstant] < '2023-01-11' - AND scufx.[CaseCancelReasonCode] != '581' -- 'Hospital Cancel - Admin Error' - AND scufx.CaseScheduleStatus = 'Scheduled' -- AND scf.[Classification] IN ( - -- 'Elective', - -- 'Expedited (within 2 weeks on elective list)' - --) -- AND scf.[Classification] NOT IN ('*Unknown', 'Immediate (Emergency list)','Immediate','Non-elective','*Unspecified','*Deleted','Urgent (Emergency list)','*Not Applicable') - AND ( - PostOperativeDestination = 'ITU/PACU Bed' - OR pof.StringResponse = 'ITU/PACU Bed' - or preassess_destination = 'ITU/PACU Bed' - ) - AND dd.[DepartmentName] != 'NHNN THEATRE SUITE' - AND poax.OrderTypeCode = 78 - AND pof.SurveyQuestionKey = 1443 -ORDER BY LastName diff --git a/api/src/api/electives/live_sql/get_echo.sql b/api/src/api/electives/live_sql/get_echo.sql deleted file mode 100644 index a84067f4..00000000 --- a/api/src/api/electives/live_sql/get_echo.sql +++ /dev/null @@ -1,69 +0,0 @@ -WITH surgical_pts AS ( - SELECT DISTINCT scf.[PatientDurableKey], - scf.[SurgicalCaseKey], - scufx.[PlannedOperationStartInstant], - scufx.[TouchTimeStartInstant], - scf.[Classification] - FROM [CABOODLE_REPORT].[dbo].[SurgicalCaseFact] scf - LEFT JOIN [CABOODLE_REPORT].[dbo].[WaitingListEntryFact] wlef ON scf.[SurgicalCaseKey] = wlef.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[SurgicalCaseUclhFactX] scufx ON wlef.[SurgicalCaseKey] = scufx.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DepartmentDim] dd ON scf.[OperatingRoomKey] = dd.[DepartmentKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[PatientDim] patd ON scf.[PatientDurableKey] = patd.[DurableKey] - WHERE scf.[PatientDurableKey] > 0 - AND scf.[PatientDurableKey] IS NOT NULL - AND scf.[PrimaryService] != 'Obstetrics' - AND scf.[PrimaryService] != 'Neurosurgery' - AND scf.[PrimaryService] != 'Paediatric Dental' - AND dd.[DepartmentName] != 'NHNN THEATRE SUITE' - AND dd.[DepartmentName] != 'RNTNE THEATRE SUITE' - AND patd.[AgeInYears] >= 18 -- AND ( scufx.[PlannedOperationStartInstant] < CONVERT(DATE,DATEADD(DAY,1,CURRENT_TIMESTAMP)) - AND ( - wlef.[IntendedManagement] IN ( - '*Unspecified', - 'Inpatient', - 'Inpatient Series', - 'Night Admit Series' - ) - OR wlef.[IntendedManagement] IS NULL - ) -- ) - AND scufx.[PlannedOperationStartInstant] >= ? - AND scufx.[PlannedOperationStartInstant] < ? -) -SELECT DISTINCT ifact.[PatientDurableKey], - surgical_pts.[SurgicalCaseKey], - eff.[ImagingKey], - eff.[FindingType], - eff.[FindingName], - eff.[StringValue], - eff.[NumericValue], - eff.[Unit], - ddim.[DateValue] AS EchoStartDate, - ddim2.[DateValue] AS EchoFinalisedDate, - surgical_pts.[PlannedOperationStartInstant] -- ,eff.[EchoFindingKey] - -- ,eff.[FindingAttributeKey] - -- ,eff.[FinalizingDateKey] - -- ,eff.[DateValue] - -- ,ifact.[PatientDurableKey] - -- ,ifact.[ExamStartDateKey] -FROM [CABOODLE_REPORT].[dbo].[EchoFindingFact] eff - LEFT JOIN [CABOODLE_REPORT].[dbo].[ImagingFact] ifact ON ifact.[ImagingKey] = eff.[ImagingKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[AttributeDim] ad ON eff.[FindingAttributeKey] = ad.[AttributeKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DateDim] ddim ON ddim.[DateKey] = ifact.[ExamStartDateKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DateDim] ddim2 ON ddim2.[DateKey] = eff.[FinalizingDateKey] - LEFT JOIN surgical_pts ON surgical_pts.[PatientDurableKey] = ifact.[PatientDurableKey] -WHERE eff.[ImagingKey] > 1 - AND ifact.[PatientDurableKey] > 1 - AND ( - ddim2.[DateValue] < CONVERT( - date, - surgical_pts.[PlannedOperationStartInstant] - ) - OR ddim2.[DateValue] < CONVERT(date, surgical_pts.[TouchTimeStartInstant]) - ) - AND surgical_pts.[PlannedOperationStartInstant] IS NOT NULL - AND ( - (surgical_pts.[Classification] = 'Elective') - OR ( - surgical_pts.[Classification] = 'Expedited (within 2 weeks on elective list)' - ) - ) diff --git a/api/src/api/electives/live_sql/get_echo_2.sql b/api/src/api/electives/live_sql/get_echo_2.sql deleted file mode 100644 index 13cf9dc3..00000000 --- a/api/src/api/electives/live_sql/get_echo_2.sql +++ /dev/null @@ -1,22 +0,0 @@ -SELECT DISTINCT ifact.PatientDurableKey, - scufx.SurgicalCaseKey, - scufx.PlannedOperationStartInstant, - scufx.TouchTimeStartInstant, - ifact.ImagingKey, - itf.Narrative, - eff.FinalizingDateKey, - dd.DateValue, - ifact.IsAbnormal -FROM CABOODLE_REPORT.dbo.SurgicalCaseFact scf - LEFT JOIN CABOODLE_REPORT.dbo.SurgicalCaseUclhFactX scufx ON scf.[SurgicalCaseKey] = scufx.[SurgicalCaseKey] - LEFT JOIN CABOODLE_REPORT.dbo.ImagingFact ifact ON ifact.PatientDurableKey = scf.PatientDurableKey - LEFT JOIN CABOODLE_REPORT.dbo.ImagingTextFact itf ON itf.ImagingKey = ifact.ImagingKey - LEFT JOIN CABOODLE_REPORT.dbo.EchoFindingFact eff ON ifact.ImagingKey = eff.ImagingKey - LEFT JOIN CABOODLE_REPORT.dbo.DateDim dd ON eff.FinalizingDateKey = dd.DateKey -WHERE scufx.PlannedOperationStartInstant >= :start_date - AND scufx.PlannedOperationStartInstant < :end_date - and ( - dd.[DateValue] < CONVERT(date, scufx.PlannedOperationStartInstant) - OR dd.[DateValue] < CONVERT(date, scufx.TouchTimeStartInstant) - ) -order by SurgicalCaseKey diff --git a/api/src/api/electives/live_sql/get_elective_surg.sql b/api/src/api/electives/live_sql/get_elective_surg.sql deleted file mode 100644 index ebf928e2..00000000 --- a/api/src/api/electives/live_sql/get_elective_surg.sql +++ /dev/null @@ -1,25 +0,0 @@ -SELECT DISTINCT patd.[PrimaryMrn], - scufx.[PlannedOperationStartInstant], - scf.[HospitalEncounterKey], - scf.[Classification], - scufx.[PostOperativeDestination], - wlef.[AdmissionService], - wlef.[ElectiveAdmissionType], - wlef.[IntendedManagement], - wlef.[Priority] -- ,cbd.booked_destination -FROM [CABOODLE_REPORT].[dbo].[SurgicalCaseFact] scf - LEFT JOIN [CABOODLE_REPORT].[dbo].[WaitingListEntryFact] wlef ON scf.[SurgicalCaseKey] = wlef.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[SurgicalCaseUclhFactX] scufx ON scf.[SurgicalCaseKey] = scufx.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[PatientDim] patd ON scf.[PatientDurableKey] = patd.[DurableKey] -WHERE scf.[PatientDurableKey] > 0 - AND scf.[PatientDurableKey] > 1 - AND scf.[PatientDurableKey] IS NOT NULL - AND patd.[AgeInYears] >= 18 - AND scufx.[PlannedOperationStartInstant] >= :start_date - AND scufx.[PlannedOperationStartInstant] < :end_date - AND scufx.[CaseCancelReasonCode] != '581' -- 'Hospital Cancel - Admin Error' - AND scf.[Classification] IN ( - 'Elective', - 'Expedited (within 2 weeks on elective list)' - ) -- AND scf.[Classification] NOT IN ('*Unknown', 'Immediate (Emergency list)','Immediate','Non-elective','*Unspecified','*Deleted','Urgent (Emergency list)','*Not Applicable') - AND PostOperativeDestination = 'ITU/PACU Bed' diff --git a/api/src/api/electives/live_sql/get_emap_surg.sql b/api/src/api/electives/live_sql/get_emap_surg.sql deleted file mode 100644 index 4188f3c4..00000000 --- a/api/src/api/electives/live_sql/get_emap_surg.sql +++ /dev/null @@ -1,24 +0,0 @@ -SELECT lv.location_visit_id, - lv.admission_datetime AS admission_time, - lv.discharge_datetime AS discharge_time, - lv.discharge_datetime - lv.admission_datetime AS duration, - lv.hospital_visit_id, - lv.location_id, - hv.mrn_id, - mrn.mrn, - loc.location_string, - loc.bed_id, - dp.name, - dp.speciality -FROM star.location_visit lv - LEFT JOIN star.hospital_visit hv ON lv.hospital_visit_id = hv.hospital_visit_id - LEFT JOIN star.location loc ON lv.location_id = loc.location_id - LEFT JOIN star.department dp ON loc.department_id = dp.department_id - LEFT JOIN star.mrn ON hv.mrn_id = mrn.mrn_id - INNER JOIN ( - SELECT DISTINCT hospital_visit_id - FROM star.location_visit lv - WHERE lv.location_id IN { } - ) surgpts ON surgpts.hospital_visit_id = lv.hospital_visit_id -WHERE lv.admission_datetime::date >= %s::date - AND lv.admission_datetime::date < %s::date diff --git a/api/src/api/electives/live_sql/get_hx.sql b/api/src/api/electives/live_sql/get_hx.sql deleted file mode 100644 index 57bff09c..00000000 --- a/api/src/api/electives/live_sql/get_hx.sql +++ /dev/null @@ -1,66 +0,0 @@ -WITH surgical_pts AS ( - SELECT DISTINCT scf.[PatientDurableKey], - scufx.[PlannedOperationStartInstant], - scufx.[TouchTimeStartInstant], - scufx.[SurgicalCaseKey] - FROM [CABOODLE_REPORT].[dbo].[SurgicalCaseFact] scf - LEFT JOIN [CABOODLE_REPORT].[dbo].[WaitingListEntryFact] wlef ON scf.[SurgicalCaseKey] = wlef.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[SurgicalCaseUclhFactX] scufx ON wlef.[SurgicalCaseKey] = scufx.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DepartmentDim] dd ON scf.[OperatingRoomKey] = dd.[DepartmentKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[PatientDim] patd ON scf.[PatientDurableKey] = patd.[DurableKey] - WHERE scf.[PatientDurableKey] > 0 - AND scf.[PatientDurableKey] IS NOT NULL -- AND scf.[PrimaryService] != 'Obstetrics' - -- AND scf.[PrimaryService] != 'Neurosurgery' - -- AND scf.[PrimaryService] != 'Paediatric Dental' - -- AND dd.[DepartmentName] != 'NHNN THEATRE SUITE' - -- AND dd.[DepartmentName] != 'RNTNE THEATRE SUITE' - AND patd.[AgeInYears] >= 18 - AND ( - wlef.[IntendedManagement] IN ( - '*Unspecified', - 'Inpatient', - 'Inpatient Series', - 'Night Admit Series' - ) - OR wlef.[IntendedManagement] IS NULL - ) - AND scufx.[PlannedOperationStartInstant] >= :start_date - AND scufx.[PlannedOperationStartInstant] < :end_date -) -SELECT DISTINCT def.[PatientDurableKey], - surgical_pts.[SurgicalCaseKey], - def.[DiagnosisKey], - dd.[Name] as DiagnosisDimName, - ddim.[DateValue] AS DateEntered, - ddim2.[DateValue] AS DateRemoved, - surgical_pts.[PlannedOperationStartInstant] -- ,def.[ExternalDiagnosisConceptKey] this is not entered for any, -2 for all - -- ,dtd.[Type] AS dtdCode - -- ,dtd.[DisplayString] AS DiagnosisTerminologyDimName - -- ,dtd.[TerminologyConceptKey] - -- ,dtd.[Value] AS Code - -- ,tcd.[StandardName] - -- ,tcd.[Concept] AS StandardCode - -- ,tcd.[Name] AS StandardName -FROM [CABOODLE_REPORT].[dbo].[DiagnosisEventFact] def - LEFT JOIN [CABOODLE_REPORT].[dbo].[DiagnosisDim] dd ON dd.[DiagnosisKey] = def.[DiagnosisKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DiagnosisTerminologyDim] dtd ON dtd.[DiagnosisKey] = dd.[DiagnosisKey] - LEFT JOIN surgical_pts ON surgical_pts.[PatientDurableKey] = def.[PatientDurableKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DateDim] ddim ON UserEnteredDateKey = ddim.DateKey - LEFT JOIN [CABOODLE_REPORT].[dbo].[DateDim] ddim2 ON UserRemovedDateKey = ddim2.DateKey - LEFT JOIN [CABOODLE_REPORT].[dbo].[TerminologyConceptDim] tcd ON dtd.[TerminologyConceptKey] = tcd.[TerminologyConceptKey] -WHERE def.[DiagnosisKey] > 0 - AND ( - ddim.[DateValue] < CONVERT( - date, - surgical_pts.[PlannedOperationStartInstant] - ) - OR ddim.[DateValue] < CONVERT(date, surgical_pts.[TouchTimeStartInstant]) - ) - AND ( - ddim2.[DateValue] > CONVERT( - date, - surgical_pts.[PlannedOperationStartInstant] - ) - OR ddim2.[DateValue] > CONVERT(date, surgical_pts.[TouchTimeStartInstant]) - OR ddim2.[DateValue] IS NULL - ) diff --git a/api/src/api/electives/live_sql/get_icu.sql b/api/src/api/electives/live_sql/get_icu.sql deleted file mode 100644 index 2eeff987..00000000 --- a/api/src/api/electives/live_sql/get_icu.sql +++ /dev/null @@ -1,22 +0,0 @@ -SELECT --scufx.TouchTimeEndInstant, - -- icu.CrossIcuStayStartInstant, - icu.IcuLengthOfStay, - icu.PatientDurableKey, - scf.SurgicalCaseKey -FROM CABOODLE_REPORT.dbo.SurgicalCaseFact scf - INNER JOIN CABOODLE_REPORT.dbo.IcuStayRegistryDataMart icu on icu.EncounterKey = scf.HospitalEncounterKey - LEFT JOIN CABOODLE_REPORT.dbo.SurgicalCaseUclhFactX scufx on scufx.SurgicalCaseKey = scf.SurgicalCaseKey -WHERE icu.EncounterKey > 1 -- AND icu.IcuLengthOfStay > 0.3 - AND scufx.TouchTimeEndInstant IS NOT NULL - AND DATEDIFF( - MINUTE, - scufx.TouchTimeEndInstant, - icu.CrossIcuStayStartInstant - ) < 1440 - AND DATEDIFF( - MINUTE, - scufx.TouchTimeEndInstant, - icu.CrossICUStayStartInstant - ) > -1440 - AND scufx.[PlannedOperationStartInstant] >= ? - AND scufx.[PlannedOperationStartInstant] < ? diff --git a/api/src/api/electives/live_sql/get_labs.sql b/api/src/api/electives/live_sql/get_labs.sql deleted file mode 100644 index 6b5c1ce8..00000000 --- a/api/src/api/electives/live_sql/get_labs.sql +++ /dev/null @@ -1,66 +0,0 @@ -WITH surgical_pts AS ( - SELECT DISTINCT scf.[PatientDurableKey], - scufx.[SurgicalCaseKey], - scufx.[PlannedOperationStartInstant], - scufx.[TouchTimeStartInstant] - FROM [CABOODLE_REPORT].[dbo].[SurgicalCaseFact] scf - LEFT JOIN [CABOODLE_REPORT].[dbo].[WaitingListEntryFact] wlef ON scf.[SurgicalCaseKey] = wlef.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[SurgicalCaseUclhFactX] scufx ON wlef.[SurgicalCaseKey] = scufx.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DepartmentDim] dd ON scf.[OperatingRoomKey] = dd.[DepartmentKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[PatientDim] patd ON scf.[PatientDurableKey] = patd.[DurableKey] - WHERE scf.[PatientDurableKey] > 0 - AND scf.[PatientDurableKey] IS NOT NULL -- AND scf.[PrimaryService] != 'Obstetrics' - -- AND scf.[PrimaryService] != 'Neurosurgery' - -- AND scf.[PrimaryService] != 'Paediatric Dental' - -- AND dd.[DepartmentName] != 'NHNN THEATRE SUITE' - -- AND dd.[DepartmentName] != 'RNTNE THEATRE SUITE' - AND patd.[AgeInYears] >= 18 - AND ( - wlef.[IntendedManagement] IN ( - '*Unspecified', - 'Inpatient', - 'Inpatient Series', - 'Night Admit Series' - ) - OR wlef.[IntendedManagement] IS NULL - ) - AND scufx.[PlannedOperationStartInstant] >= :start_date - AND scufx.[PlannedOperationStartInstant] < :end_date -) -SELECT surgical_pts.[SurgicalCaseKey], - surgical_pts.[PlannedOperationStartInstant] --,lcrf.[ResultStatus] -, - lcd.[Name], - lcrf.[Value] --,lcrf.[NumericValue] -, - lcrf.[ResultInstant], - surgical_pts.[PatientDurableKey] -FROM [CABOODLE_REPORT].[dbo].[LabComponentResultFact] lcrf - LEFT JOIN [CABOODLE_REPORT].[dbo].[LabComponentDim] lcd ON lcrf.[LabComponentKey] = lcd.[LabComponentKey] - LEFT JOIN surgical_pts ON surgical_pts.[PatientDurableKey] = lcrf.[PatientDurableKey] -WHERE lcrf.[PatientDurableKey] > 1 - AND surgical_pts.[SurgicalCaseKey] IS NOT NULL - AND surgical_pts.[PlannedOperationStartInstant] IS NOT NULL - AND lcrf.[ResultInstant] < CONVERT( - date, - surgical_pts.[PlannedOperationStartInstant] - ) - AND lcrf.[ResultInstant] > DATEADD( - month, - -4, - CONVERT( - date, - surgical_pts.[PlannedOperationStartInstant] - ) - ) - AND lcd.[Name] IN ( - 'Creatinine', - 'Haemoglobin (g/L)', - 'White cell count', - 'Platelet count', - 'Sodium', - 'Albumin', - 'Bilirubin (total)', - 'INR', - 'C-reactive protein' - ) diff --git a/api/src/api/electives/live_sql/get_labs_old.sql b/api/src/api/electives/live_sql/get_labs_old.sql deleted file mode 100644 index 25a6b6c3..00000000 --- a/api/src/api/electives/live_sql/get_labs_old.sql +++ /dev/null @@ -1,65 +0,0 @@ -WITH surgical_pts AS ( - SELECT DISTINCT scf.[PatientDurableKey], - scufx.[SurgicalCaseKey], - scufx.[PlannedOperationStartInstant], - scufx.[TouchTimeStartInstant] - FROM [CABOODLE_REPORT].[dbo].[SurgicalCaseFact] scf - LEFT JOIN [CABOODLE_REPORT].[dbo].[WaitingListEntryFact] wlef ON scf.[SurgicalCaseKey] = wlef.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[SurgicalCaseUclhFactX] scufx ON wlef.[SurgicalCaseKey] = scufx.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DepartmentDim] dd ON scf.[OperatingRoomKey] = dd.[DepartmentKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[PatientDim] patd ON scf.[PatientDurableKey] = patd.[DurableKey] - WHERE scf.[PatientDurableKey] > 0 - AND scf.[PatientDurableKey] IS NOT NULL -- AND scf.[PrimaryService] != 'Obstetrics' - -- AND scf.[PrimaryService] != 'Neurosurgery' - -- AND scf.[PrimaryService] != 'Paediatric Dental' - -- AND dd.[DepartmentName] != 'NHNN THEATRE SUITE' - -- AND dd.[DepartmentName] != 'RNTNE THEATRE SUITE' - AND patd.[AgeInYears] >= 18 - AND ( - wlef.[IntendedManagement] IN ( - '*Unspecified', - 'Inpatient', - 'Inpatient Series', - 'Night Admit Series' - ) - OR wlef.[IntendedManagement] IS NULL - ) - AND scufx.[PlannedOperationStartInstant] >= ? - AND scufx.[PlannedOperationStartInstant] < ? -) -SELECT surgical_pts.[SurgicalCaseKey], - surgical_pts.[PlannedOperationStartInstant], - lcrf.[ResultStatus], - lcd.[Name], - lcrf.[Value], - lcrf.[NumericValue], - lcrf.[ResultInstant] -FROM [CABOODLE_REPORT].[dbo].[LabComponentResultFact] lcrf - LEFT JOIN [CABOODLE_REPORT].[dbo].[LabComponentDim] lcd ON lcrf.[LabComponentKey] = lcd.[LabComponentKey] - LEFT JOIN surgical_pts ON surgical_pts.[PatientDurableKey] = lcrf.[PatientDurableKey] -WHERE lcrf.[PatientDurableKey] > 1 - AND surgical_pts.[SurgicalCaseKey] IS NOT NULL - AND surgical_pts.[PlannedOperationStartInstant] IS NOT NULL - AND lcrf.[ResultInstant] < CONVERT( - date, - surgical_pts.[PlannedOperationStartInstant] - ) - AND lcrf.[ResultInstant] > DATEADD( - month, - -4, - CONVERT( - date, - surgical_pts.[PlannedOperationStartInstant] - ) - ) - AND lcd.[Name] IN ( - 'Creatinine', - 'Haemoglobin (g/L)', - 'White cell count', - 'Platelet count', - 'Sodium', - 'Albumin', - 'Bilirubin (total)', - 'INR', - 'C-reactive protein' - ) diff --git a/api/src/api/electives/live_sql/get_obs.sql b/api/src/api/electives/live_sql/get_obs.sql deleted file mode 100644 index 6aa9dac5..00000000 --- a/api/src/api/electives/live_sql/get_obs.sql +++ /dev/null @@ -1,81 +0,0 @@ -WITH surgical_pts AS ( - SELECT DISTINCT scf.[PatientDurableKey], - scufx.[SurgicalCaseKey], - scufx.[PlannedOperationStartInstant], - scufx.[TouchTimeStartInstant] - FROM [CABOODLE_REPORT].[dbo].[SurgicalCaseFact] scf - LEFT JOIN [CABOODLE_REPORT].[dbo].[WaitingListEntryFact] wlef ON scf.[SurgicalCaseKey] = wlef.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[SurgicalCaseUclhFactX] scufx ON wlef.[SurgicalCaseKey] = scufx.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DepartmentDim] dd ON scf.[OperatingRoomKey] = dd.[DepartmentKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[PatientDim] patd ON scf.[PatientDurableKey] = patd.[DurableKey] - WHERE scf.[PatientDurableKey] > 0 - AND scf.[PatientDurableKey] IS NOT NULL -- AND scf.[PrimaryService] != 'Obstetrics' - -- AND scf.[PrimaryService] != 'Neurosurgery' - -- AND scf.[PrimaryService] != 'Paediatric Dental' - -- AND dd.[DepartmentName] != 'NHNN THEATRE SUITE' - -- AND dd.[DepartmentName] != 'RNTNE THEATRE SUITE' - AND patd.[AgeInYears] >= 18 - AND scf.[Classification] IN ( - 'Elective', - 'Expedited (within 2 weeks on elective list)' - ) - AND ( - wlef.[IntendedManagement] IN ( - '*Unspecified', - 'Inpatient', - 'Inpatient Series', - 'Night Admit Series' - ) - OR wlef.[IntendedManagement] IS NULL - ) - AND scufx.[PlannedOperationStartInstant] >= :start_date - AND scufx.[PlannedOperationStartInstant] < :end_date -) -SELECT surgical_pts.[SurgicalCaseKey], - surgical_pts.[PlannedOperationStartInstant], - surgical_pts.[PatientDurableKey], - fvf.[Value], - fvf.[NumericValue], - fvf.[FirstDocumentedInstant], - fvf.[TakenInstant], - frd.[DisplayName] -FROM [CABOODLE_REPORT].[dbo].[FlowsheetValueFact] fvf - LEFT JOIN surgical_pts ON surgical_pts.[PatientDurableKey] = fvf.[PatientDurableKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[FlowsheetRowDim] frd ON fvf.[FlowsheetRowKey] = frd.[FlowsheetRowKey] -WHERE fvf.[PatientDurableKey] > 1 - AND surgical_pts.[SurgicalCaseKey] IS NOT NULL - AND surgical_pts.[PlannedOperationStartInstant] IS NOT NULL - AND fvf.[FirstDocumentedInstant] < CONVERT( - date, - surgical_pts.[PlannedOperationStartInstant] - ) - AND fvf.[FirstDocumentedInstant] > DATEADD( - month, - -4, - CONVERT( - date, - surgical_pts.[PlannedOperationStartInstant] - ) - ) - AND fvf.[TakenInstant] < CONVERT( - date, - surgical_pts.[PlannedOperationStartInstant] - ) - AND fvf.[TakenInstant] > DATEADD( - month, - -4, - CONVERT( - date, - surgical_pts.[PlannedOperationStartInstant] - ) - ) - AND frd.[Name] IN ( - 'PULSE', - 'PULSE OXIMETRY', - 'BLOOD PRESSURE', - 'RESPIRATIONS', - 'TEMPERATURE', - 'R BAR BMI (CALCULATED)', - 'R BMI', - 'R AIR OR OXYGEN' - ) diff --git a/api/src/api/electives/live_sql/get_pa_summary.sql b/api/src/api/electives/live_sql/get_pa_summary.sql deleted file mode 100644 index e8acfaf8..00000000 --- a/api/src/api/electives/live_sql/get_pa_summary.sql +++ /dev/null @@ -1,28 +0,0 @@ -SELECT DISTINCT cnf.[PatientDurableKey], - cnf.[CreationInstant], - cnavd.[StringValue], - ad.[Name], - cnavd.AttributeValueLineNumber_X line_num -FROM [CABOODLE_REPORT].[dbo].[ClinicalNoteFact] cnf - LEFT JOIN [CABOODLE_REPORT].[dbo].[ClinicalNoteAttributeValueDim] cnavd ON cnavd.[ClinicalNoteKey] = cnf.[ClinicalNoteKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[AttributeDim] ad ON cnavd.[AttributeKey] = ad.[AttributeKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[SurgicalCaseFact] scf on cnf.PatientDurableKey = scf.PatientDurableKey - LEFT JOIN [CABOODLE_REPORT].[dbo].[WaitingListEntryFact] wlef ON scf.[SurgicalCaseKey] = wlef.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[SurgicalCaseUclhFactX] scufx ON scf.[SurgicalCaseKey] = scufx.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[PatientDim] patd ON scf.[PatientDurableKey] = patd.[DurableKey] -WHERE cnf.[Type] = 'Anaesthesia Preprocedure Evaluation' - AND ad.[SmartDataElementEpicId] IN ('UK#071', 'UCLH#3616', 'UCLH#548') - AND scf.[PatientDurableKey] > 1 - AND scf.[PatientDurableKey] IS NOT NULL - AND patd.[AgeInYears] >= 18 - AND scufx.PlannedOperationStartInstant >= :start_date - AND scufx.PlannedOperationStartInstant < :end_date - AND ( - wlef.[IntendedManagement] IN ( - '*Unspecified', - 'Inpatient', - 'Inpatient Series', - 'Night Admit Series' - ) - OR wlef.[IntendedManagement] IS NULL - ) diff --git a/api/src/api/electives/live_sql/get_pa_summary2.sql b/api/src/api/electives/live_sql/get_pa_summary2.sql deleted file mode 100644 index ca927ede..00000000 --- a/api/src/api/electives/live_sql/get_pa_summary2.sql +++ /dev/null @@ -1,56 +0,0 @@ -WITH pa AS ( - SELECT distinct cnf.[PatientDurableKey], - cnf.[CreationInstant], - cnavd.[StringValue], - ad.[Name], - ad.[SmartDataElementEpicId], - cnavd.AttributeValueLineNumber_X line_num, - ROW_NUMBER() OVER ( - PARTITION BY cnf.[PatientDurableKey] - ORDER BY cnf.[CreationInstant] DESC - ) AS RowNumber - FROM [CABOODLE_REPORT].[dbo].[ClinicalNoteFact] cnf - LEFT JOIN [CABOODLE_REPORT].[dbo].[ClinicalNoteAttributeValueDim] cnavd ON cnavd.[ClinicalNoteKey] = cnf.[ClinicalNoteKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[AttributeDim] ad ON cnavd.[AttributeKey] = ad.[AttributeKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[SurgicalCaseFact] scf on cnf.PatientDurableKey = scf.PatientDurableKey - LEFT JOIN [CABOODLE_REPORT].[dbo].[WaitingListEntryFact] wlef ON scf.[SurgicalCaseKey] = wlef.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[SurgicalCaseUclhFactX] scufx ON scf.[SurgicalCaseKey] = scufx.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[PatientDim] patd ON scf.[PatientDurableKey] = patd.[DurableKey] - WHERE cnf.[Type] = 'Anaesthesia Preprocedure Evaluation' - AND ad.[SmartDataElementEpicId] IN ('UK#071', 'UCLH#3616', 'UCLH#548') - AND scf.[PatientDurableKey] > 1 - AND scf.[PatientDurableKey] IS NOT NULL - AND patd.[AgeInYears] >= 18 - AND scufx.PlannedOperationStartInstant >= :start_date - AND scufx.PlannedOperationStartInstant < :end_date - AND ( - wlef.[IntendedManagement] IN ( - '*Unspecified', - 'Inpatient', - 'Inpatient Series', - 'Night Admit Series' - ) - OR wlef.[IntendedManagement] IS NULL - ) -) -SELECT pa.[PatientDurableKey], - pa.CreationInstant as pac_date, - MAX( - CASE - WHEN pa.[SmartDataElementEpicId] = 'UK#071' THEN pa.[StringValue] - END - ) AS pac_anaesthetic_review, - MAX( - CASE - WHEN pa.[SmartDataElementEpicId] = 'UCLH#3616' THEN pa.[StringValue] - END - ) AS pac_nursing_outcome, - MAX( - CASE - WHEN pa.[SmartDataElementEpicId] = 'UCLH#548' THEN pa.[StringValue] - END - ) AS pac_nursing_issues -FROM pa -WHERE pa.RowNumber = 1 -GROUP BY pa.[PatientDurableKey], - pa.CreationInstant diff --git a/api/src/api/electives/live_sql/get_pod.sql b/api/src/api/electives/live_sql/get_pod.sql deleted file mode 100644 index eb79396e..00000000 --- a/api/src/api/electives/live_sql/get_pod.sql +++ /dev/null @@ -1,11 +0,0 @@ --- noinspection SqlNoDataSourceInspectionForFile --- 2022-07-21 --- Query by J Hunter --- see https://github.com/HYLODE/HyUi/issues/47#issuecomment-1160706270 -SELECT pod.NAME AS PodOrc, - c.OR_CASE_ID AS OrCaseId, - c.SURGERY_DATE AS SurgeryDateClarity -FROM OR_CASE c - INNER JOIN ZC_OR_POSTOP_DEST pod ON pod.POSTOP_DEST = c.POSTOP_DEST_C -WHERE c.SURGERY_DATE >= :start_date - AND c.SURGERY_DATE < :end_date diff --git a/api/src/api/electives/live_sql/get_preassess.sql b/api/src/api/electives/live_sql/get_preassess.sql deleted file mode 100644 index 70ecdd85..00000000 --- a/api/src/api/electives/live_sql/get_preassess.sql +++ /dev/null @@ -1,137 +0,0 @@ -SELECT cnf.[PatientDurableKey], - cnf.[CreationInstant], - cnf.[Type], - cnf.[AuthorType], - cnavd.[StringValue], - cnavd.[NumericValue], - cnavd.[DateValue], - ad.[SmartDataElementEpicId], - ad.[Name], - ad.[Abbreviation], - ad.[DataType], - ad.[ConceptType], - ad.[ConceptValue] -FROM [CABOODLE_REPORT].[dbo].[ClinicalNoteFact] cnf - LEFT JOIN [CABOODLE_REPORT].[dbo].[ClinicalNoteAttributeValueDim] cnavd ON cnavd.[ClinicalNoteKey] = cnf.[ClinicalNoteKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[AttributeDim] ad ON cnavd.[AttributeKey] = ad.[AttributeKey] -WHERE cnf.[Type] = 'Anaesthesia Preprocedure Evaluation' - AND ad.[SmartDataElementEpicId] IN ( - 'EPIC#10040', - 'EPIC#34590', - --'UCLH#1047', UCLH#1700', - 'EPIC#10008', - 'UCLH#3616', - 'UCLH#1325', - 'UCLH#3069', - 'EPIC#20239', - 'UCLH#015', - 'EPIC#10077', - 'EPIC#10060', - 'EPIC#10081', - 'UCLH#1254', - 'UCLH#016', - 'EPIC#38214', - 'EPIC#31000061200', - 'UCLH#020', - 'UCLH#1728', - 'UCLH#1253', - 'UCLH#5454', - 'EPIC#4479', - 'EPIC#4474', - 'EPIC#4476', - 'EPIC#4478', - 'UCLH#451', - 'UCLH#5254', - 'EPIC#10004', - 'EPIC#HPI0095', - 'EPIC#HPI0264', - 'UCLH#549', - 'EPIC#HPI0090', - 'EPIC#HPI0212', - 'EPIC#18618', - 'UCLH#005', - 'EPIC#14273', - 'UCLH#3952', - 'EPIC#20199', - 'EPIC#HPI0142', - 'EPIC#4312', - 'EPIC#10013', - 'EPIC#HPI0143', - 'UCLH#049', - 'EPIC#RSHE0024', - 'EPIC#RSCV0009', - 'EPIC#3306', - 'UCLH#884', - 'EPIC#22644', - 'EPIC#4372', - 'UCLH#2148', - 'EPIC#14571', - 'EPIC#2082', - 'EPIC#4275', - 'UCLH#1185', - 'EPIC#RSHE0012', - 'EPIC#35729', - 'EPIC#38132', - 'EPIC#14368', - 'EPIC#29363', - 'EPIC#4395', - 'EPIC#4398', - 'EPIC#62917', - 'EPIC#PENK0201', - 'EPIC#HPI0324', - 'EPIC#62913', - 'UCLH#011', - 'EPIC#4333', - 'EPIC#18123', - 'EPIC#37056', - 'EPIC#4339', - 'EPIC#21776', - 'EPIC#35789', - 'UCLH#040', - 'UCLH#1239', - 'EPIC#4397', - 'EPIC#2948', - 'EPIC#19354', - 'EPIC#4650', - 'UCLH#1240', - 'EPIC#31000017368', - 'EPIC#36145', - 'UCLH#007' - ) - AND cnf.[PatientDurableKey] IN ( - SELECT DISTINCT scf.[PatientDurableKey] - FROM [CABOODLE_REPORT].[dbo].[SurgicalCaseFact] scf - LEFT JOIN [CABOODLE_REPORT].[dbo].[WaitingListEntryFact] wlef ON scf.[SurgicalCaseKey] = wlef.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[SurgicalCaseUclhFactX] scufx ON scf.[SurgicalCaseKey] = scufx.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[ProcedureDim] pd ON scf.[PrimaryProcedureKey] = pd.[ProcedureKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DepartmentDim] dd ON scf.[OperatingRoomKey] = dd.[DepartmentKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[PatientDim] patd ON scf.[PatientDurableKey] = patd.[DurableKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DateDim] datewl ON wlef.[PlacedOnWaitingListDateKey] = datewl.[DateKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DateDim] datedta ON wlef.[DecidedToAdmitDateKey] = datedta.[DateKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DateDim] datesurg ON scf.[SurgeryDateKey] = datesurg.[DateKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DateDim] datecasereq ON scf.[CaseRequestDateKey] = datecasereq.[DateKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[TimeOfDayDim] todcase ON scf.[CaseRequestTimeOfDayKey] = todcase.[TimeOfDayKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DateDim] datecancel ON scufx.[CancelDateKey] = datecancel.[DateKey] - WHERE scf.[PatientDurableKey] > 1 - AND scf.[PatientDurableKey] IS NOT NULL -- AND scf.[PrimaryService] != 'Obstetrics' - -- AND scf.[PrimaryService] != 'Neurosurgery' - -- AND scf.[PrimaryService] != 'Paediatric Dental' - -- AND dd.[DepartmentName] != 'NHNN THEATRE SUITE' - -- AND dd.[DepartmentName] != 'RNTNE THEATRE SUITE' - -- AND dd.[DepartmentName] != 'EGA E02 LABOUR WARD' - -- AND dd.[DepartmentName] != 'MCC H-1 THEATRE SUITE' - -- AND dd.[DepartmentName] != 'UCH P02 ENDOSCOPY' - -- AND dd.[DepartmentName] != 'UCH ANAESTHESIA DEPT' - AND patd.[AgeInYears] >= 18 - AND scufx.[PlannedOperationStartInstant] >= :start_date - AND scufx.[PlannedOperationStartInstant] < :end_date - AND ( - wlef.[IntendedManagement] IN ( - '*Unspecified', - 'Inpatient', - 'Inpatient Series', - 'Night Admit Series' - ) - OR wlef.[IntendedManagement] IS NULL - ) - ) diff --git a/api/src/api/electives/live_sql/get_prev_enc.sql b/api/src/api/electives/live_sql/get_prev_enc.sql deleted file mode 100644 index 83c11cfa..00000000 --- a/api/src/api/electives/live_sql/get_prev_enc.sql +++ /dev/null @@ -1,64 +0,0 @@ -WITH surgical_pts AS ( - SELECT DISTINCT scf.[PatientDurableKey], - scufx.[SurgicalCaseKey], - scufx.[PlannedOperationStartInstant], - scufx.[TouchTimeStartInstant] - FROM [CABOODLE_REPORT].[dbo].[SurgicalCaseFact] scf - LEFT JOIN [CABOODLE_REPORT].[dbo].[WaitingListEntryFact] wlef ON scf.[SurgicalCaseKey] = wlef.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[SurgicalCaseUclhFactX] scufx ON wlef.[SurgicalCaseKey] = scufx.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DepartmentDim] dd ON scf.[OperatingRoomKey] = dd.[DepartmentKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[PatientDim] patd ON scf.[PatientDurableKey] = patd.[DurableKey] - WHERE scf.[PatientDurableKey] > 0 - AND scf.[PatientDurableKey] IS NOT NULL - AND scf.[PrimaryService] != 'Obstetrics' - AND scf.[PrimaryService] != 'Neurosurgery' - AND scf.[PrimaryService] != 'Paediatric Dental' - AND dd.[DepartmentName] != 'NHNN THEATRE SUITE' - AND dd.[DepartmentName] != 'RNTNE THEATRE SUITE' - AND patd.[AgeInYears] >= 18 - AND ( - wlef.[IntendedManagement] IN ( - '*Unspecified', - 'Inpatient', - 'Inpatient Series', - 'Night Admit Series' - ) - OR wlef.[IntendedManagement] IS NULL - ) - AND scufx.[PlannedOperationStartInstant] >= ? - AND scufx.[PlannedOperationStartInstant] < ? -) -SELECT DISTINCT ef.[EncounterKey], - ef.[PatientKey], - ef.[PatientDurableKey] -- ,ef.[DateKey] -, - ddim.[DateValue] AS StartDate -- ,ef.[EndDateKey] -, - ddim2.[DateValue] AS EndDate, - ef.[DepartmentKey], - depdim.[DepartmentSpecialty], - ef.[Type], - ef.[EncounterEpicCsn] -- ,ef.[Date] -, - ef.[EndInstant] -- ,ef.[DerivedEncounterStatus] -, - ef.[PatientClass], - ef.[IsHospitalAdmission], - ef.[IsEdVisit], - ef.[IsOutpatientFaceToFaceVisit], - surgical_pts.[SurgicalCaseKey], - surgical_pts.[PlannedOperationStartInstant] -FROM [CABOODLE_REPORT].[dbo].[EncounterFact] ef - LEFT JOIN [CABOODLE_REPORT].[dbo].[DateDim] ddim ON ddim.[DateKey] = ef.[DateKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DateDim] ddim2 ON ddim2.[DateKey] = ef.[EndDateKey] - LEFT JOIN surgical_pts ON surgical_pts.[PatientDurableKey] = ef.[PatientDurableKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DepartmentDim] depdim ON ef.[DepartmentKey] = depdim.[DepartmentKey] -WHERE surgical_pts.[PlannedOperationStartInstant] IS NOT NULL - AND ( - ef.[EndInstant] < surgical_pts.[PlannedOperationStartInstant] - ) - AND ( - (ef.[IsEdVisit] = '1') - OR (ef.[IsOutpatientFaceToFaceVisit] = '1') - OR (ef.[IsHospitalAdmission] = '1') - ) diff --git a/api/src/api/electives/live_sql/get_surg.sql b/api/src/api/electives/live_sql/get_surg.sql deleted file mode 100644 index 0421bc77..00000000 --- a/api/src/api/electives/live_sql/get_surg.sql +++ /dev/null @@ -1,103 +0,0 @@ -SELECT DISTINCT patd.[PrimaryMrn], - patd.[AgeInYears], - patd.[Sex], - patd.[FirstName], - patd.[LastName], - patd.[BirthDate], - datewl.[DateValue] PlacedOnWaitingListDate, - datedta.[DateValue] DecidedToAdmitDate, - datesurg.[DateValue] SurgeryDate, - datesurg.[DateValue] CaseRequestDate, - todcase.[TimeValue] CaseRequestTimeOfDay, - datecancel.[DateValue] CancelDate, - scf.[PatientKey], - scf.[PatientDurableKey], - scf.[PrimaryService], - scf.[ProcedureLevel], - scf.[Classification], - scf.[SurgeryPatientClass], - scf.[AdmissionPatientClass], - scf.[PrimaryAnesthesiaType], - scf.[ReasonNotPerformed], - scf.[Canceled], - scf.[SurgicalCaseEpicId], - scufx.[PlannedOperationStartInstant], - scufx.[PlannedOperationEndInstant], - scufx.[TouchTimeStartInstant], - scufx.[TouchTimeEndInstant], - scufx.[TouchTimeMinutes], - scufx.[PostOperativeDestination], - wlef.[AdmissionService], - wlef.[ElectiveAdmissionType], - wlef.[IntendedManagement], - wlef.[Priority], - wlef.[RemovalReason], - wlef.[Status], - wlef.[SurgicalService], - wlef.[Type], - wlef.[Count], - scufx.[SurgicalCaseUclhKey], - scufx.[SurgicalCaseKey], - scufx.[CaseScheduleStatus], - scufx.[CaseCancelReason], - scufx.[CaseCancelReasonCode], - scufx.[AsaRatingCode], - pd.[Name], - pd.[PatientFriendlyName], - dd.[RoomName], - dd.[DepartmentName], - cbd.booked_destination -FROM [CABOODLE_REPORT].[dbo].[SurgicalCaseFact] scf - LEFT JOIN [CABOODLE_REPORT].[dbo].[WaitingListEntryFact] wlef ON scf.[SurgicalCaseKey] = wlef.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[SurgicalCaseUclhFactX] scufx ON scf.[SurgicalCaseKey] = scufx.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[ProcedureDim] pd ON scf.[PrimaryProcedureKey] = pd.[ProcedureKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DepartmentDim] dd ON scf.[OperatingRoomKey] = dd.[DepartmentKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[PatientDim] patd ON scf.[PatientDurableKey] = patd.[DurableKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DateDim] datewl ON wlef.[PlacedOnWaitingListDateKey] = datewl.[DateKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DateDim] datedta ON wlef.[DecidedToAdmitDateKey] = datedta.[DateKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DateDim] datesurg ON scf.[SurgeryDateKey] = datesurg.[DateKey] -- LEFT JOIN [CABOODLE_REPORT].[dbo].[DateDim] datecasereq ON scf.[CaseRequestDateKey] = datecasereq.[DateKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[TimeOfDayDim] todcase ON scf.[CaseRequestTimeOfDayKey] = todcase.[TimeOfDayKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[DateDim] datecancel ON scufx.[CancelDateKey] = datecancel.[DateKey] - LEFT JOIN ( - SELECT PatientDurableKey, - booked_destination, - booking_date - FROM ( - SELECT scf.PatientDurableKey, - pof.StringResponse booked_destination, - poax.OrderedDateKey booking_date, - ROW_NUMBER() OVER ( - PARTITION BY scf.PatientDurableKey - ORDER BY OrderedDateKey DESC - ) ranked_order - FROM [CABOODLE_REPORT].[dbo].[SurgicalCaseFact] scf - LEFT JOIN [CABOODLE_REPORT].[dbo].[ProcedureOrderAllUclhFactX] poax ON scf.[PatientDurableKey] = poax.[PatientDurableKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].ProcedureOrderQuestionAnswerUclhFactX pof ON poax.ProcedureOrderAllUclhKey = pof.ProcedureOrderAllUclhKey - WHERE scf.[PatientDurableKey] > 0 - AND poax.OrderTypeCode = 78 - AND pof.SurveyQuestionKey = 1443 - ) ac - WHERE ac.ranked_order = 1 - ) cbd on cbd.[PatientDurableKey] = scf.PatientDurableKey -WHERE scf.[PatientDurableKey] > 1 - AND scf.[PatientDurableKey] IS NOT NULL -- AND scf.[PrimaryService] != 'Obstetrics' - -- AND scf.[PrimaryService] != 'Neurosurgery' - -- AND scf.[PrimaryService] != 'Paediatric Dental' - -- AND dd.[DepartmentName] != 'NHNN THEATRE SUITE' - -- AND dd.[DepartmentName] != 'RNTNE THEATRE SUITE' - -- AND dd.[DepartmentName] != 'EGA E02 LABOUR WARD' - -- AND dd.[DepartmentName] != 'MCC H-1 THEATRE SUITE' -- AND dd.[DepartmentName] != 'UCH P02 ENDOSCOPY' - -- AND dd.[DepartmentName] != 'UCH ANAESTHESIA DEPT' - -- AND ( - -- wlef.[IntendedManagement] IN ( - -- '*Unspecified', - -- 'Inpatient', - -- 'Inpatient Series', - -- 'Night Admit Series' - -- ) - -- OR wlef.[IntendedManagement] IS NULL - -- ) - AND patd.[AgeInYears] >= 18 - AND scufx.CaseScheduleStatusCode = 1 -- 'Scheduled' - AND scufx.[PlannedOperationStartInstant] >= :start_date - AND scufx.[PlannedOperationStartInstant] < :end_date diff --git a/api/src/api/electives/live_sql/new_hx.sql b/api/src/api/electives/live_sql/new_hx.sql deleted file mode 100644 index 7b94804d..00000000 --- a/api/src/api/electives/live_sql/new_hx.sql +++ /dev/null @@ -1,26 +0,0 @@ -WITH surg AS ( - SELECT DISTINCT patd.[PrimaryMrn], - scf.[PatientDurableKey], - scf.[SurgicalCaseEpicId], - scufx.[PlannedOperationStartInstant], - scufx.[SurgicalCaseUclhKey], - scufx.[SurgicalCaseKey] - FROM [CABOODLE_REPORT].[dbo].[SurgicalCaseFact] scf - LEFT JOIN [CABOODLE_REPORT].[dbo].[SurgicalCaseUclhFactX] scufx ON scf.[SurgicalCaseKey] = scufx.[SurgicalCaseKey] - LEFT JOIN [CABOODLE_REPORT].[dbo].[PatientDim] patd ON scf.[PatientDurableKey] = patd.[DurableKey] - WHERE scf.[PatientDurableKey] > 1 - AND scf.[PatientDurableKey] IS NOT NULL - AND patd.[AgeInYears] >= 18 - AND scufx.[PlannedOperationStartInstant] >= :start_date - AND scufx.[PlannedOperationStartInstant] < :end_date - AND scufx.[CaseCancelReasonCode] != '581' -) -SELECT DISTINCT surg.PatientDurableKey, - surg.SurgicalCaseKey, - -- dtd.Type, - dtd.Value, - dtd.DisplayString -FROM surg - LEFT JOIN CABOODLE_REPORT.dbo.DiagnosisEventFact def ON def.PatientDurableKey = surg.PatientDurableKey -- LEFT JOIN CABOODLE_REPORT.dbo.DiagnosisDim dd on dd.DiagnosisKey = def.DiagnosisKey - LEFT JOIN CABOODLE_REPORT.dbo.DiagnosisTerminologyDim dtd on def.DiagnosisKey = dtd.DiagnosisKey -WHERE dtd.Type = 'ICD-10-UK' diff --git a/api/src/api/electives/mock.db b/api/src/api/electives/mock.db deleted file mode 100644 index b005437dab91e61be60984e1f1c95e77e27a8b31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2600960 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

tQ<)^@9Hfp|KP?HNLkqk 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

CQ$|LpE?|HIu0;L=fN+aL9E>WjdE*}us-QY5x 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

8vdmP@|Cyz*Cvvvdm@3qOaF+nR|;DP<3<8^SC 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

3jy9 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%0At{%-m0v+ML4$jI0eXT>jP1A)++S3+5#ze(*m4FN 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 diff --git a/api/src/api/electives/mock_case.json b/api/src/api/electives/mock_case.json deleted file mode 100644 index 86aefb74..00000000 --- a/api/src/api/electives/mock_case.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "table": "SurgicalCaseFact", - "rows": - [ - { - "PrimaryMrn": "12345", - "SurgicalCaseEpicId": "456", - "AgeInYears": 34, - "FirstName": "Stevie", - "LastName": "Wonder", - "Sex": "Female", - "BirthDate": "1978-09-04", - "PlacedOnWaitingListDate": "2022-10-17", - "DecidedToAdmitDate": "2022-10-17", - "AdmissionService": "Gynaecology - RMU", - "ElectiveAdmissionType": "Elective Wait", - "IntendedManagement": "Inpatient", - "Priority": "Routine", - "RemovalReason": "*Unspecified", - "Status": "Scheduled", - "Subgroup": "*Unspecified", - "SurgicalService": "Gynaecology", - "Type": "Surgical Admit", - "LastUpdatedInstant": "2022-11-09 01:01:49.267", - "PatientKey": 6999998, - "PatientDurableKey": 199995, - "SurgeryDate": "2022-12-02", - "PrimaryService": "Gynaecology", - "Classification": "Elective", - "SurgeryPatientClass": "Surgical Admission", - "AdmissionPatientClass": "Inpatient", - "PrimaryAnesthesiaType": "General", - "ReasonNotPerformed": "", - "Canceled": 0, - "SurgicalCaseUclhKey": 199993, - "SurgicalCaseKey": 199992, - "CaseScheduleStatus": "Scheduled", - "CaseCancelReason": "*Unspecified", - "CaseCancelReasonCode": "*Unspecified", - "CancelDate": null, - "PlannedOperationStartInstant": "2022-12-02 17:28:00.000", - "PlannedOperationEndInstant": "2022-12-02 18:58:00.000", - "PostOperativeDestination": "*Not Applicable", - "Name": "LAPAROSCOPIC SALPINGECTOMY", - "PatientFriendlyName": "LAPAROSCOPIC SALPINGECTOMY", - "RoomName": "UCH P3 TH12", - "DepartmentName": "UCH P03 THEATRE SUITE" - } - ] -} diff --git a/api/src/api/electives/mock_pod.json b/api/src/api/electives/mock_pod.json deleted file mode 100644 index 561de692..00000000 --- a/api/src/api/electives/mock_pod.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "table": "OR_CASE", - "rows": - [ - { - "PodOrc": "Day Surgery Ward", - "OrCaseId": "473112", - "SurgeryDateClarity": "2022-11-25 00:00:00.000" - }, - { - "PodOrc": "Day Surgery Ward", - "OrCaseId": "597244", - "SurgeryDateClarity": "2022-11-25 00:00:00.000" - }, - { - "PodOrc": "ITU/PACU Bed", - "OrCaseId": "617016", - "SurgeryDateClarity": "2022-11-25 00:00:00.000" - }, - { - "PodOrc": "Inpatient Ward", - "OrCaseId": "719054", - "SurgeryDateClarity": "2022-11-25 00:00:00.000" - } - ] -} diff --git a/api/src/api/electives/mock_preassess.json b/api/src/api/electives/mock_preassess.json deleted file mode 100644 index c0e75688..00000000 --- a/api/src/api/electives/mock_preassess.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "table": "ClinicalNoteFact", - "rows": - [ - { - "PatientDurableKey": 6999991, - "CreationInstant": "2022-11-28 12:33:40.000", - "StringValue": "ITU/PACU Bed", - "NumericValue": null, - "Name": "POST-OP DESTINATION", - "DataType": "Category" - }, - { - "PatientDurableKey": 199995, - "CreationInstant": "2022-10-12 08:56:02.000", - "StringValue": "Inpatient Ward", - "NumericValue": null, - "Name": "POST-OP DESTINATION", - "DataType": "Category" - } - ] -} diff --git a/api/src/api/electives/router.py b/api/src/api/electives/router.py deleted file mode 100644 index 302d4e0f..00000000 --- a/api/src/api/electives/router.py +++ /dev/null @@ -1,297 +0,0 @@ -import json -from pathlib import Path -from typing import cast - -import numpy as np -import pandas as pd -from fastapi import APIRouter, Depends -from pydantic import BaseModel -from sqlalchemy import text, create_engine -from sqlmodel import Session - -from api.db import get_caboodle_session, get_clarity_session -from api.electives.wrangle import prepare_draft # , prepare_electives -from models.electives import ( - CaboodlePreassessment, - ClarityPostopDestination, - SurgData, - PreassessData, - MergedData, - LabData, - EchoWithAbnormalData, - AxaCodes, - ObsData, - PreassessSummaryData, - MedicalHx, -) - -from datetime import timedelta, date - - -router = APIRouter( - prefix="/electives", -) - -mock_router = APIRouter(prefix="/electives") - - -def _get_json_rows(filename: str) -> list[dict]: - """ - Return mock data from adjacent mock.json file - Assumes that data in nested object 'rows' - """ - with open(Path(__file__).parent / filename, "r") as f: - mock_json = json.load(f) - return cast(list[dict], mock_json["rows"]) - - -def _get_mock_sql_rows(table: str, model: type[BaseModel]) -> list[type[BaseModel]]: - engine = create_engine(f"sqlite:///{Path(__file__).parent}/mock.db", future=True) - - with Session(engine) as session: - query = text(f"SELECT * FROM {table}") - result = session.execute(query) - return [model.parse_obj(row) for row in result] - - -def _parse_query( - query_file: str, session: Session, model: BaseModel, params: dict -) -> list[BaseModel]: - """ - generic function that reads a text query from a file, handles parameters - within the query and then returns after parsing through a pydantic model - - :param query_file: - :param params: - :param model: - :return: - """ - query = text((Path(__file__).parent / query_file).read_text()) - - start_date = date.today().strftime("%Y-%m-%d") - end_date = (date.today() + timedelta(days=params["days_ahead"])).strftime( - "%Y-%m-%d" - ) - - df = pd.read_sql( - query, - session.connection(), - params={"start_date": start_date, "end_date": end_date}, - ) - - return [model.parse_obj(row) for row in df.to_dict(orient="records")] - - -@router.get("/case_booking/", response_model=list[SurgData]) -def get_caboodle_cases( - session: Session = Depends(get_caboodle_session), days_ahead: int = 1 -) -> list[SurgData]: - """ - Return caboodle case booking data - """ - - return _parse_query( - "live_sql/get_surg.sql", - session, - SurgData, - params={"days_ahead": days_ahead}, - ) - - -@mock_router.get("/case_booking/", response_model=list[SurgData]) -def get_mock_caboodle_cases() -> list[type[SurgData]]: - """ - returns mock of caboodle query for elective cases - :return: - """ - return _get_mock_sql_rows("surg", SurgData) - - -@router.get("/preassessment", response_model=list[CaboodlePreassessment]) -@mock_router.get("/postop_destination/", response_model=list[ClarityPostopDestination]) -def get_mock_clarity_pod() -> list[dict]: - """ - returns mock of caboodle query for preassessment - """ - return _get_json_rows("mock_pod.json") - - -@router.get("/postop_destination/", response_model=list[ClarityPostopDestination]) -def get_clarity_pod( - session: Session = Depends(get_clarity_session), days_ahead: int = 1 -) -> list[ClarityPostopDestination]: - params = {"days_ahead": days_ahead} - return _parse_query( - "live_sql/get_pod.sql", session, ClarityPostopDestination, params - ) - - -@mock_router.get("/preassessment/", response_model=list[PreassessData]) -def get_mock_caboodle_preassess() -> list[type[PreassessData]]: - return _get_mock_sql_rows("preassess", PreassessData) - - -@router.get("/preassessment/", response_model=list[PreassessData]) -def get_caboodle_preassess( - session: Session = Depends(get_caboodle_session), days_ahead: int = 1 -) -> list[CaboodlePreassessment]: - """ - Return caboodle preassessment data - """ - params = {"days_ahead": days_ahead} - return _parse_query("live_sql/get_preassess.sql", session, PreassessData, params) - - -@mock_router.get("/labs/", response_model=list[LabData]) -def get_mock_labs() -> list[type[LabData]]: - return _get_mock_sql_rows("labs", LabData) - - -@router.get("/labs/", response_model=list[LabData]) -def get_caboodle_labs( - session: Session = Depends(get_caboodle_session), days_ahead: int = 1 -) -> list[CaboodlePreassessment]: - """ - Return caboodle preassessment data - """ - params = {"days_ahead": days_ahead} - return _parse_query("live_sql/get_labs.sql", session, LabData, params) - - -@mock_router.get("/echo/", response_model=list[EchoWithAbnormalData]) -def get_mock_echo() -> list[type[EchoWithAbnormalData]]: - return _get_mock_sql_rows("echo_2", EchoWithAbnormalData) - - -@router.get("/echo/", response_model=list[EchoWithAbnormalData]) -def get_caboodle_echo( - session: Session = Depends(get_caboodle_session), days_ahead: int = 1 -) -> list[EchoWithAbnormalData]: - params = {"days_ahead": days_ahead} - return _parse_query( - "live_sql/get_echo_2.sql", session, EchoWithAbnormalData, params - ) - - -@mock_router.get("/obs/", response_model=list[ObsData]) -def get_mock_obs() -> list[type[ObsData]]: - return _get_mock_sql_rows("obs", ObsData) - - -@router.get("/obs/", response_model=list[ObsData]) -def get_caboodle_obs( - session: Session = Depends(get_caboodle_session), days_ahead: int = 1 -) -> list[ObsData]: - """ - Return caboodle preassessment data - """ - params = {"days_ahead": days_ahead} - return _parse_query("live_sql/get_obs.sql", session, ObsData, params) - - -@mock_router.get("/pa_summary/", response_model=list[PreassessSummaryData]) -def get_mock_pas() -> list[type[PreassessSummaryData]]: - return _get_mock_sql_rows("pa_summary", PreassessSummaryData) - - -@router.get("/pa_summary/", response_model=list[PreassessSummaryData]) -def get_caboodle_pas( - session: Session = Depends(get_caboodle_session), days_ahead: int = 1 -) -> list[PreassessSummaryData]: - """ - Return caboodle preassessment data - """ - params = {"days_ahead": days_ahead} - return _parse_query( - "live_sql/get_pa_summary.sql", session, PreassessSummaryData, params - ) - - -@router.get("/hx/", response_model=list[MedicalHx]) -def get_medical_hx( - session: Session = Depends(get_caboodle_session), days_ahead: int = 1 -) -> list[MedicalHx]: - return _parse_query( - "live_sql/new_hx.sql", - session, - MedicalHx, - params={"days_ahead": days_ahead}, - ) - - -@mock_router.get("/hx/", response_model=list[MedicalHx]) -def get_mock_medical_hx() -> list[type[MedicalHx]]: - return _get_mock_sql_rows("new_hx", MedicalHx) - - -@router.get("/axa/", response_model=list[AxaCodes]) -def get_axa_codes() -> list[AxaCodes]: - model = AxaCodes - df = pd.read_csv( - (Path(__file__).parent / "supp_data/axa_codes.csv") - ) # , encoding="cp1252") - return [model.parse_obj(row) for row in df.to_dict(orient="records")] - - -@router.get("/", response_model=list[MergedData]) -def get_electives( - s_caboodle: Session = Depends(get_caboodle_session), - s_clarity: Session = Depends(get_clarity_session), - days_ahead: int = 10, -) -> list[MergedData]: - case = get_caboodle_cases(session=s_caboodle, days_ahead=days_ahead) - preassess = get_caboodle_preassess(session=s_caboodle, days_ahead=days_ahead) - labs = get_caboodle_labs(session=s_caboodle, days_ahead=days_ahead) - echo = get_caboodle_echo(session=s_caboodle, days_ahead=days_ahead) - obs = get_caboodle_obs(session=s_caboodle, days_ahead=days_ahead) - pa_summary = get_caboodle_pas(session=s_caboodle, days_ahead=days_ahead) - hx = get_medical_hx(session=s_caboodle, days_ahead=days_ahead) - pod = get_clarity_pod(session=s_clarity, days_ahead=days_ahead) - axa = get_axa_codes() - - # pod = _parse_query("live_pod.sql", s_clarity, ClarityPostopDestination, params) - - df = prepare_draft( - electives=case, - preassess=preassess, - labs=labs, - echo=echo, - obs=obs, - axa=axa, - pod=pod, - to_predict=False, - medical_hx=hx, - pa_summary=pa_summary, - ) - df = df.replace({np.nan: None}) - return [MergedData.parse_obj(row) for row in df.to_dict(orient="records")] - - -@mock_router.get("/", response_model=list[MergedData]) -def get_mock_electives( - # days_ahead: int = 100, -) -> list[MergedData]: - case = _get_mock_sql_rows("surg", SurgData) - preassess = _get_mock_sql_rows("preassess", PreassessData) - labs = _get_mock_sql_rows("labs", LabData) - echo = _get_mock_sql_rows("echo_2", EchoWithAbnormalData) - obs = _get_mock_sql_rows("obs", ObsData) - hx = _get_mock_sql_rows("new_hx", MedicalHx) - axa = get_axa_codes() - pod = _get_mock_sql_rows("pod", ClarityPostopDestination) - pa_summary = _get_mock_sql_rows("pa_summary", PreassessSummaryData) - - df = prepare_draft( - electives=case, - preassess=preassess, - labs=labs, - echo=echo, - obs=obs, - axa=axa, - pod=pod, - medical_hx=hx, - to_predict=False, - pa_summary=pa_summary, - ) - df = df.replace({np.nan: None}) - return [MergedData.parse_obj(row) for row in df.to_dict(orient="records")] diff --git a/api/src/api/electives/supp_data/axa_codes.csv b/api/src/api/electives/supp_data/axa_codes.csv deleted file mode 100644 index f88a0ba7..00000000 --- a/api/src/api/electives/supp_data/axa_codes.csv +++ /dev/null @@ -1,3117 +0,0 @@ -SurgicalService,Name,axa_name,axa_severity,protocolised_adm -Urology,*Unspecified,-,Unknown,No -General Surgery,*Unspecified,-,Unknown,No -Orthopaedics,30-50% DISTAL PANCREATECTOMY,Distal pancreatectomy,Xmajor,No -Urology,ABDOMEN EXCISION,-,Unknown,No -Gynaecology,ABDOMINAL HYSTERECTOMY,Subtotal abdominal hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Gynaecology,ABDOMINAL HYSTERECTOMY WITH CONSERVATION OF OVARIES,Total abdominal hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Gynaecology,ABDOMINAL SACROCOLPOPEXY USING MESH,Sacrocolpopexy (including laparoscopic) +/- ureterolysis,Major,No -Urology,ABDOMINOLIPECTOMY,"Fat transfer, including extraction and volume adjustment, of scar defect following trauma (excluding breast)",Intermediate,No -Colorectal Surgery,ABDOMINOPERINEAL RESECTION,Abdominoperineal resection of rectum and anus,Complex,No -General Surgery,ABDOMINOPERINEAL RESECTION,Abdominoperineal resection of rectum and anus,Complex,No -General Surgery,ABDOMINOPERINEAL RESECTION OF ANUS,Abdominoperineal resection of rectum and anus,Complex,No -Colorectal Surgery,ABDOMINOPERINEAL RESECTION OF ANUS,Abdominoperineal resection of rectum and anus,Complex,No -Urology,ABDOMINOPLASTY,"Fat transfer, including extraction and volume adjustment, of scar defect following trauma (excluding breast)",Intermediate,No -Orthopaedics,ABOVE ELBOW AMPUTATION,Amputation of arm,Major,No -,ADJUST FIXATION OF MANDIBLE,Extra-oral fixation of mandible,Intermediate,No -Oral Surgery,ADJUST FIXATION OF MANDIBLE,Extra-oral fixation of mandible,Intermediate,No -Urology,ADRENALECTOMY,Adrenalectomy - unilateral (open),Major,No -General Surgery,ADRENALECTOMY,Adrenalectomy - unilateral (open),Major,No -Head and Neck,ADVANCEMENT AND REMODELLING OF CRANIUM AND FACIAL BONES,-,Xmajor,No -Orthopaedics,ALLOTRANSPLANTATION OF MENISCUS,Arthroscopic meniscectomy (including debridement),Major,No -Colorectal Surgery,"ALTEMEIER OPERATION, PERINEAL RECTAL PULL-THROUGH",Partial excision of rectum and sigmoid colon for prolapse,Xmajor,No -Orthopaedics,AMPUTATION ABOVE-KNEE,Amputation of leg/foot (including Symes Lisfranc and Chopart),Major,No -Orthopaedics,AMPUTATION LESSER TOE,Amputation of toe,Intermediate,No -Gynaecology,AMPUTATION OF CERVIX,Amputation of cervix uteri,Intermediate,No -Urology,AMPUTATION OF GLANS PENIS,Partial amputation of penis,Major,No -,AMPUTATION OF GLANS PENIS,Partial amputation of penis,Major,No -Urology,AMPUTATION OF PENIS,Total amputation of penis,Major,No -,AMPUTATION OF PENIS,Total amputation of penis,Major,No -General Surgery,ANAL FISSURECTOMY,Excision of anal fissure,Minor,No -General Surgery,ANAL FISTULA OPERATION,Laying open of low anal fistula (fistulotomy) (including sigmoidoscopy),Intermediate,No -General Surgery,ANAL FISTULECTOMY,Laying open of high anal fistula (fistulotomy) (including sigmoidoscopy),Major,No -General Surgery,ANASTOMOSIS OF ILEUM TO CAECUM,Laparoscopically assisted resection of small intestine,Major,No -Colorectal Surgery,ANASTOMOSIS OF JEJUNUM,Open resectionof small intestine tumour,Major,No -General Surgery,ANASTOMOSIS OF TRANSVERSE COLON TO RECTUM,Excision of sigmoid colon,Xmajor,No -Urology,ANASTOMOSIS OF URETER,Unilateral replantation of ureter into bladder (including cystoscopy),Major,No -Urology,ANASTOMOTIC URETHROPLASTY,"Complex Urethroplasty, Eg Revision Surgery of the Anterior Urethra, Segment, Posterior Urethra, +/- Grafting (Including Cystoscopy)",Major,No -Orthopaedics,ANCHORING OF TENDON OF BICEPS,"Secondary repair of tendon (including graft, transfer and/or prosthesis) (not otherwise specified)",Major,No -Urology,ANDERSON-HYNES PYELOPLASTY,Open pyeloplasty,Major,No -Vascular Surgery,ANGIOPLASTY OF ANTERIOR TIBIAL ARTERY,"Angioplasty of other arteries (e.g. sub-clavian, tibial, femoro-popliteal) including peripheral angiogram +/- insertion of stent",Major,No -Vascular Surgery,ANGIOPLASTY OF ARTERY OF LOWER EXTREMITY,"Angioplasty of other arteries (e.g. sub-clavian, tibial, femoro-popliteal) including peripheral angiogram +/- insertion of stent",Major,No -,ANGIOPLASTY OF BLOOD VESSEL,"Angioplasty of other arteries (e.g. sub-clavian, tibial, femoro-popliteal) including peripheral angiogram +/- insertion of stent",Major,No -Vascular Surgery,ANGIOPLASTY OF COMMON ILIAC ARTERY,"Angioplasty of other arteries (e.g. sub-clavian, tibial, femoro-popliteal) including peripheral angiogram +/- insertion of stent",Major,No -Vascular Surgery,ANGIOPLASTY OF CRURAL ARTERY,"Angioplasty of other arteries (e.g. sub-clavian, tibial, femoro-popliteal) including peripheral angiogram +/- insertion of stent",Major,No -Vascular Surgery,ANGIOPLASTY OF SUPERFICIAL FEMORAL ARTERY,"Angioplasty of other arteries (e.g. sub-clavian, tibial, femoro-popliteal) including peripheral angiogram +/- insertion of stent",Major,No -,ANGIOPLASTY OF SUPERFICIAL FEMORAL ARTERY,"Angioplasty of other arteries (e.g. sub-clavian, tibial, femoro-popliteal) including peripheral angiogram +/- insertion of stent",Major,No -Urology,ANTEGRADE URETEROSCOPY,Diagnostic ureterorenoscopy (+/- cystoscopy),Minor,No -Gynaecology,ANTERIOR COLPORRHAPHY,Anterior +/- posterior colporrhaphy (including primary repair of enterocele) (including cystoscopy),Major,No -Gynaecology,ANTERIOR COLPORRHAPHY FOR REPAIR OF CYSTOCELE WITHOUT REPAIR OF URETHROCELE,Anterior +/- posterior colporrhaphy (including primary repair of enterocele) (including cystoscopy),Major,No -Head and Neck,ANTERIOR COMPARTMENT LYMPH NODES NECK DISSECTION,Radical dissection of cervical lymph nodes,Complex,Yes -Orthopaedics,ANTERIOR DECOMPRESSION OF SHOULDER JOINT,Arthroscopic subacromial decompression,Major,No -Gynaecology,ANTERIOR EXENTERATION OF PELVIS,Anterior exenteration of pelvis,Complex,Yes -Thoracic Surgery,ANTERIOR MEDIASTINOTOMY,Open resection of invasive mediastinal tumour,Complex,Yes -Gynaecology,ANTERIOR MESH VAGINAL REPAIR,Anterior +/- posterior colporrhaphy (including primary repair of enterocele) (including cystoscopy),Major,No -General Surgery,ANTERIOR RESECTION OF RECTUM,Anterior resection - high (i.e. colorectal anastomosis above the peritoneal reflection),Complex,No -Colorectal Surgery,ANTERIOR RESECTION OF RECTUM,Anterior resection - high (i.e. colorectal anastomosis above the peritoneal reflection),Complex,No -Urology,ANTERIOR RESECTION OF RECTUM,Anterior resection - high (i.e. colorectal anastomosis above the peritoneal reflection),Complex,No -Colorectal Surgery,ANTERIOR RESECTION OF RECTUM AND ANASTOMOSIS OF COLON TO RECTUM USING STAPLES,Anterior resection - high (i.e. colorectal anastomosis above the peritoneal reflection),Complex,No -Gynaecology,ANTERIOR RESECTION OF RECTUM AND ANASTOMOSIS OF COLON TO RECTUM USING STAPLES,Anterior resection - high (i.e. colorectal anastomosis above the peritoneal reflection),Complex,No -General Surgery,ANTERIOR RESECTION OF RECTUM AND ANASTOMOSIS OF COLON TO RECTUM USING STAPLES,Anterior resection - high (i.e. colorectal anastomosis above the peritoneal reflection),Complex,No -Urology,ANTERIOR RESECTION OF RECTUM AND ANASTOMOSIS OF COLON TO RECTUM USING STAPLES,Anterior resection - high (i.e. colorectal anastomosis above the peritoneal reflection),Complex,No -General Surgery,ANTERIOR RESECTION OF RECTUM AND TOTAL EXCISION OF MESORECTUM,Anterior resection - high (i.e. colorectal anastomosis above the peritoneal reflection),Complex,No -General Surgery,ANTERIOR RESECTION OF RECTUM AND TOTAL MESORECTAL EXCISION WITH COLOSTOMY,Anterior resection - high (i.e. colorectal anastomosis above the peritoneal reflection),Complex,No -General Surgery,ANTERIOR RESECTION OF RECTUM WITH ANASTOMOSIS,Anterior resection - low (ie colorectal anastomosis at or below the peritoneal reflection,Complex,No -Orthopaedics,ANTERIOR TIBIALIS TENDON TRANSFER FOR REPAIR OF FLAT FOOT,Transfer of tendon (not otherwise specified),Intermediate,No -Head and Neck,ANTERIOR TRACHEOSTOMY,Tracheostomy,Intermediate,Yes -Orthopaedics,ANTERIOR TRANSPOSITION OF ULNAR NERVE,Release of entrapment of peripheral nerve,Intermediate,No -Thoracic Surgery,ANTEROLATERAL THORACOTOMY,Exploratory thoracotomy,Major,Yes -Thoracic Surgery,APICECTOMY LUNG,Pulmonary lobectomy including segmental resection,Complex,Yes -,APICECTOMY LUNG,Pulmonary lobectomy including segmental resection,Complex,Yes -,APPENDICECTOMY,Appendicectomy,Intermediate,No -General Surgery,APPENDICECTOMY,Appendicectomy,Major,No -General Surgery,APPENDICOVESICOSTOMY,Construction of ileal conduit including ureteric implantation,Xmajor,No -Orthopaedics,ARTHRECTOMY OF SHOULDER,Excision reconstruction of large joint,Major,No -Orthopaedics,ARTHRODESIS,Excision reconstruction of large joint,Major,No -Orthopaedics,ARTHRODESIS OF ANKLE,Triple fusion of joints of hindfoot without autogenous graft,Major,No -Orthopaedics,ARTHRODESIS OF FINGER,Fusion of digit joint(s) of hand with or without graft and with or without internal fixation,Intermediate,No -Orthopaedics,ARTHRODESIS OF FIRST METATARSOPHALANGEAL JOINT,Fusion of first metatarso-phalangeal joint,Intermediate,No -Orthopaedics,ARTHRODESIS OF FIRST TARSOMETATARSAL JOINT,Isolated sub talar fusion or mid foot fusion without autogenous graft (adult),Major,No -Orthopaedics,ARTHRODESIS OF FOOT,Isolated sub talar fusion or mid foot fusion without autogenous graft (adult),Major,No -Orthopaedics,ARTHRODESIS OF HINDFOOT JOINT,Triple fusion of joints of hindfoot without autogenous graft,Major,No -Orthopaedics,ARTHRODESIS OF INTERPHALANGEAL JOINT OF GREAT TOE,Fusion of interphalangeal joint(s) of toe (including internal fixation),Intermediate,No -Orthopaedics,ARTHRODESIS OF INTERPHALANGEAL JOINT OF LESSER TOE,Fusion of interphalangeal joint(s) of toe (including internal fixation),Intermediate,No -,ARTHRODESIS OF INTERPHALANGEAL JOINT OF LESSER TOE,Fusion of interphalangeal joint(s) of toe (including internal fixation),Intermediate,No -Orthopaedics,ARTHRODESIS OF SHOULDER,Primary arthrodesis of joint with or without graft and with or without internal fixation – shoulder,Major,No -Orthopaedics,ARTHROLYSIS,"Arthrotomy of large joint, including removal of loose body from joint",Intermediate,No -Orthopaedics,ARTHROLYSIS AFTER TOTAL PROSTHETIC REPLACEMENT OF KNEE JOINT,"Arthroscopy of knee (including examination under anaesthetic, washout and biopsy) (as sole procedure)",Intermediate,No -Orthopaedics,ARTHROPLASTY OF HIP JOINT USING CEMENT,Primary total hip replacement with or without cement,Xmajor,No -Orthopaedics,ARTHROPLASTY OF HIP WITHOUT CEMENT,Primary total hip replacement with or without cement,Xmajor,No -Orthopaedics,ARTHROPLASTY OF KNEE,"Total prosthetic replacement of knee joint, with or without cement, +/– patella",Xmajor,No -Orthopaedics,"ARTHROPLASTY OF KNEE, CONDYLE AND PLATEAU, MEDIAL COMPARTMENT","Total prosthetic replacement of knee joint, with or without cement, +/– patella",Xmajor,No -Orthopaedics,ARTHROPLASTY OF LEFT SHOULDER,Primary total shoulder replacement,Xmajor,No -Orthopaedics,ARTHROPLASTY OF PATELLA,Prosthetic replacement of Patellofemoral joint - bilateral (as sole procedure),Xmajor,No -Orthopaedics,ARTHROPLASTY OF PATELLA WITH PROSTHESIS,Prosthetic replacement of Patellofemoral joint - bilateral (as sole procedure),Xmajor,No -Orthopaedics,ARTHROPLASTY OF RADIAL HEAD,Excision of radial head (as sole procedure),Major,No -Orthopaedics,ARTHROPLASTY OF RIGHT SHOULDER,Primary total shoulder replacement,Xmajor,No -Orthopaedics,ARTHROPLASTY OF SHOULDER,Primary total shoulder replacement,Xmajor,No -Orthopaedics,ARTHROSCOPIC CAPSULAR RELEASE OF SHOULDER JOINT,Therapeutic arthroscopy of shoulder (as sole procedure),Major,No -Orthopaedics,ARTHROSCOPIC DEBRIDEMENT OF KNEE JOINT,"Arthroscopy of knee (including examination under anaesthetic, washout and biopsy) (as sole procedure)",Intermediate,No -Orthopaedics,ARTHROSCOPIC DECOMPRESSION OF SUBACROMIAL JOINT,Arthroscopic sub acromial decompression and rotator cuff repair (including arthroscopic procedures in glenohumeral joint),Major,No -,ARTHROSCOPIC IRRIGATION OF JOINT,Therapeutic arthroscopy operation on cavity of joint (not otherwise specified) (as sole procedure),Major,No -Orthopaedics,ARTHROSCOPIC KNEE OPERATION,"Arthroscopy of knee (including examination under anaesthetic, washout and biopsy) (as sole procedure)",Intermediate,No -Orthopaedics,ARTHROSCOPIC PARTIAL MEDIAL MENISCECTOMY,Arthroscopic meniscectomy (including debridement),Major,No -,ARTHROSCOPIC PRIMARY REDUCTION AND FIXATION OF FRACTURE OF NECK OF FEMUR USING DYNAMIC HIP SCREW,Primary reduction of fracture of neck of femur and internal fixation,Xmajor,No -Orthopaedics,ARTHROSCOPIC PROCEDURE,Therapeutic arthroscopic operation on cavity of joint (not otherwise specified) (as sole procedure),Major,No -Orthopaedics,ARTHROSCOPIC REPAIR OF ROTATOR CUFF,Arthroscopic sub acromial decompression and rotator cuff repair (including arthroscopic procedures in glenohumeral joint),Major,No -Orthopaedics,ARTHROSCOPIC TRIMMING OF LATERAL MENISCUS,Arthroscopic meniscectomy (including debridement),Major,No -Orthopaedics,ARTHROSCOPIC TRIMMING OF MEDIAL MENISCUS,Arthroscopic meniscectomy (including debridement),Major,No -Orthopaedics,ARTHROSCOPIC TRIMMING OF MENISCUS,Arthroscopic meniscectomy (including debridement),Major,No -,ARTHROSCOPIC WASHOUT OF KNEE JOINT,"Arthroscopy of knee (including examination under anaesthetic, washout and biopsy) (as sole procedure)",Intermediate,No -Orthopaedics,ARTHROSCOPICALLY AIDED ANTERIOR CRUCIATE LIGAMENT AUGMENTATION,Allograft anterior cruciate ligament reconstruction,Xmajor,No -Orthopaedics,ARTHROSCOPICALLY AIDED ANTERIOR CRUCIATE LIGAMENT RECONSTRUCTION,Allograft anterior cruciate ligament reconstruction,Xmajor,No -Orthopaedics,ARTHROSCOPY,Therapeutic arthroscopy operation on cavity of joint (not otherwise specified) (as sole procedure),Major,No -Orthopaedics,ARTHROSCOPY AND BIOPSY OF KNEE,"Arthroscopy of knee (including examination under anaesthetic, washout and biopsy) (as sole procedure)",Intermediate,No -,ARTHROSCOPY AND BIOPSY OF KNEE,"Arthroscopy of knee (including examination under anaesthetic, washout and biopsy) (as sole procedure)",Intermediate,No -Orthopaedics,ARTHROSCOPY OF ANKLE,"Multiple arthroscopic operations on ankle (including soft tissue, bony and/or joint surface procedures with ligament reconstruction).",Major,No -Orthopaedics,ARTHROSCOPY OF HIP,"Therapeutic arthroscopy examination of hip joint, +/- biopsy",Xmajor,No -,ARTHROSCOPY OF HIP,"Therapeutic arthroscopy examination of hip joint, +/- biopsy",Xmajor,No -Orthopaedics,ARTHROSCOPY OF HIP WITH SYNOVECTOMY,"Therapeutic arthroscopy examination of hip joint, +/- biopsy",Xmajor,No -Orthopaedics,ARTHROSCOPY OF KNEE,"Arthroscopy of knee (including examination under anaesthetic, washout and biopsy) (as sole procedure)",Intermediate,No -Orthopaedics,ARTHROSCOPY OF KNEE WITH MEDIAL MENISCUS REPAIR,Arthroscopic meniscectomy (including debridement),Major,No -Orthopaedics,ARTHROSCOPY OF KNEE WITH MENISCUS REPAIR,Arthroscopic meniscectomy (including debridement),Major,No -Orthopaedics,ARTHROSCOPY OF SHOULDER,Therapeutic arthroscopy of shoulder (as sole procedure),Major,No -Orthopaedics,ARTHROSCOPY OF SHOULDER WITH EXCISION OF DISTAL CLAVICLE,Arthroscopic sub-acromial decompression and excision of distal clavicle (including arthroscopic procedures in glenohumeral joint),Major,No -Orthopaedics,ARTHROSCOPY OF SHOULDER WITH EXTENSIVE DEBRIDEMENT,Therapeutic arthroscopy of shoulder (as sole procedure),Major,No -Orthopaedics,ARTHROSCOPY OF SHOULDER WITH PARTIAL SYNOVECTOMY,Therapeutic arthroscopy of shoulder (as sole procedure),Major,No -Maxillo-Facial Surgery,ARTHROSCOPY OF TEMPOROMANDIBULAR JOINT,Therapeutic arthroscopic operation of temporomandibular joint +/- lysis and/or lavage -unilateral,Intermediate,No -Orthopaedics,ARTHROTOMY OF JOINT OF SHOULDER GIRDLE,Open arthrolysis of shoulder contracture +/- manipulation/injection,Major,No -Orthopaedics,ARTHROTOMY OF KNEE WITH JOINT EXPLORATION AND BIOPSY,"Arthroscopy of knee (including examination under anaesthetic, washout and biopsy) (as sole procedure)",Intermediate,No -Gynaecology,ASPIRATION CURETTAGE OF UTERUS FOR TERMINATION OF PREGNANCY,Manual vacuum aspiration of retained products of conception,Minor,No -Obstetrics,ASPIRATION CURETTAGE OF UTERUS FOR TERMINATION OF PREGNANCY,Hysteroscopic Removal Of Retained Products Of Conception,Major,No -Bone Marrow Harvest,ASPIRATION OF BONE MARROW FROM DONOR FOR TRANSPLANT,-,Minor,No -,ASPIRATION OF JOINT,"Injection(s) +/- aspiration, into joint, cyst, bursa with image guidance",Minor,No -Orthopaedics,ASPIRATION OF JOINT,-,Minor,No -Bariatrics,ATTENTION TO CONNECTION OF STOMACH TO TRANSPOSED JEJUNUM,Gastro–jejunostomy,Major,No -Paediatric ENT,ATTICOANTROSTOMY OF EAR,Intranasal antrostomy including endoscopic and antral washout (including bilateral),Intermediate,No -ENT,ATTICOANTROSTOMY OF EAR,Middle ear tumour excision,Major,No -ENT,ATTICOTOMY OF EAR,Simple mastoidectomy,Major,No -Urology,AUGMENTATION CYSTOPLASTY,Enlargement of bladder (including cystoscopy),Complex,No -Breast Surgery,AUGMENTATION MAMMOPLASTY,Augmentation Mammoplasty - Unilateral,Major,No -Maxillo-Facial Surgery,AUGMENTATION OF ALVEOLAR RIDGE USING AUTO BONE GRAFT,Alveolar bone graft - unilateral,Intermediate,No -Orthopaedics,AUGMENTATION OF TIBIA,Tibial osteotomy,Major,No -Maxillo-Facial Surgery,AUGMENTATION OSTEOPLASTY OF FACIAL BONES,Reconstruction of jaw (non-vascularised reconstruction),Xmajor,No -Bronchoscopy/Thoracoscopy,AUTOFLUORESCENCE BRONCHOSCOPY AND BIOPSY OF LOWER RESPIRATORY TRACT,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Vascular Surgery,AVULSION OF VARICOSE VEIN OF LEG,Ligation/stripping of long or short saphenous vein (including local excision/multiple phlebectomy),Intermediate,No -Head and Neck,BALLOON DILATATION OF OESOPHAGEAL STRICTURE,Therapeutic oesophago-gastro-duodenoscopy (OGD) with dilatation,Minor,No -Head and Neck,BALLOON DILATATION OF OESOPHAGUS,Therapeutic oesophago-gastro-duodenoscopy (OGD) with dilatation,Minor,No -Orthopaedics,BANKART ANTERIOR STABILISATION OF SHOULDER JOINT,Primary stabilisation of multi-directional instability of shoulder joint +/- tendon repair,Major,No -Head and Neck,BILATERAL ANTRAL WASHOUT,Antral puncture and wash-out (and bilateral),Minor,No -ENT,BILATERAL DISSECTION TONSILLECTOMY,"Tonsillectomy - adult, age 13 + (and bilateral)",Intermediate,No -Urology,BILATERAL EPIDIDYMOVASOSTOMY WITH ANASTOMOSIS OF EPIDIDYMIS TO VAS DEFERENS,Bilateral epididymectomy,Intermediate,No -Upper Gastro-intestinal Surgery,BILATERAL INGUINAL HERNIA REPAIR,Primary repair of inguinal hernia ? bilateral,Major,No -Colorectal Surgery,BILATERAL INGUINAL HERNIA REPAIR,Primary repair of inguinal hernia ? bilateral,Major,No -General Surgery,BILATERAL INGUINAL HERNIA REPAIR,Primary repair of inguinal hernia ? bilateral,Major,No -Breast Surgery,BILATERAL MASTECTOMY,Simple mastectomy (including axillary node biopsy) ? unilateral,Major,No -Head and Neck,BILATERAL MODIFIED RADICAL NECK DISSECTION,Radical dissection of cervical lymph nodes,Complex,Yes -Urology,BILATERAL ORCHIDOPEXY,Orchidopexy bilateral,Major,No -Head and Neck,BILATERAL RADICAL NECK DISSECTION,Radical dissection of cervical lymph nodes,Complex,Yes -Bariatrics,"BILATERAL REPAIR OF INGUINAL HERNIA, DIRECT",Primary repair of inguinal hernia ? bilateral,Major,No -Upper Gastro-intestinal Surgery,"BILATERAL REPAIR OF INGUINAL HERNIA, DIRECT AND INDIRECT",Primary repair of inguinal hernia ? bilateral,Major,No -Colorectal Surgery,"BILATERAL REPAIR OF INGUINAL HERNIA, INDIRECT",Primary repair of inguinal hernia ? bilateral,Major,No -Gynaecology,BILATERAL SALPINGECTOMY WITH OOPHORECTOMY,"Laparoscopic oophorectomy and salpingectomy, +/- biopsy eg. omentum, peritoneum, lymph node (as sole procedure) ? unilateral",Major,No -,BILATERAL SALPINGECTOMY WITH OOPHORECTOMY,"Laparoscopic oophorectomy and salpingectomy, +/- biopsy eg. omentum, peritoneum, lymph node (as sole procedure) ? unilateral",Major,No -Gynaecology Oncology,BILATERAL SALPINGECTOMY WITH OOPHORECTOMY,"Laparoscopic oophorectomy and salpingectomy, +/- biopsy eg. omentum, peritoneum, lymph node (as sole procedure) ? unilateral",Major,No -Breast Surgery,BILATERAL SIMPLE MASTECTOMY,Simple mastectomy (including axillary node biopsy) ? unilateral,Major,No -Urology,BILATERAL TOTAL INGUINAL ORCHIDECTOMY,Bilateral excision of testes,Major,No -Urology,BILATERAL VASECTOMY,-,Intermediate,No -Bariatrics,BILIOPANCREATIC BYPASS TO ILEUM WITH PARTIAL GASTRECTOMY,Laparoscopic biliary gastric bypass,Complex,No -Head and Neck,BIOPSY,Shave biopsy of lesion of skin,Minor,No -Thoracic Surgery,BIOPSY,Shave biopsy of lesion of skin,Minor,No -,BIOPSY,Shave biopsy of lesion of skin,Minor,No -Urology,BIOPSY,Shave biopsy of lesion of skin,Minor,No -Maxillo-Facial Surgery,BIOPSY,Shave biopsy of lesion of skin,Minor,No -Head and Neck,BIOPSY OF AXILLARY LYMPH NODE,Biopsy/sampling of cervical lymph nodes,Minor,No -Breast Surgery,BIOPSY OF AXILLARY LYMPH NODE,Sentinel node mapping and sampling with blue dye or radioactive probe for breast cancer,Intermediate,No -Urology,BIOPSY OF BLADDER,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -Orthopaedics,BIOPSY OF BONE,Open bone biopsy,Intermediate,No -Orthopaedics,BIOPSY OF BONE OF KNEE,Open bone biopsy,Intermediate,No -Head and Neck,BIOPSY OF BONY PALATE,Panendoscopy +/- incisional biopsy,Intermediate,No -General Surgery,BIOPSY OF CERVICAL LYMPH NODE,Biopsy/sampling of cervical lymph nodes,Minor,No -,BIOPSY OF EAR,Biopsy of lesion of pinna (as sole procedure),Minor,No -ENT,BIOPSY OF ETHMOID SINUS,"Diagnostic nasolaryngopharyngoscopy +/- biopsy, +/- cautery as sole procedure",Minor,No -Head and Neck,BIOPSY OF FACIAL BONE,Biopsy of lesion of facial bone,Minor,No -Head and Neck,BIOPSY OF FLOOR OF MOUTH,Biopsy of lesion of mouth,Minor,No -Head and Neck,BIOPSY OF HEAD AND NECK STRUCTURE,Panendoscopy +/- incisional biopsy,Intermediate,No -Urology,BIOPSY OF INGUINAL LYMPH NODE,Sentinel lymph node biopsy for melanoma,Intermediate,No -Orthopaedics,BIOPSY OF JOINT OF HIP,"Diagnostic arthroscopic examination of hip joint including wash-out, with or without biopsy (as sole procedure)",Intermediate,No -Head and Neck,BIOPSY OF LESION OF CHEEK,Shave biopsy of lesion of skin,Minor,No -Thoracic Surgery,BIOPSY OF LESION OF CHEST WALL,Thoracotomy and lung biopsy as sole procedure,Intermediate,Yes -Head and Neck,BIOPSY OF LESION OF FLOOR OF MOUTH,"Therapeutic Panendoscopy +/- excision biopsy, excision or destruction of lesions",Intermediate,No -Head and Neck,BIOPSY OF LESION OF LIP,Biopsy of lesion of mouth,Minor,No -Thoracic Surgery,BIOPSY OF LESION OF LUNG,Thoracotomy and lung biopsy as sole procedure,Intermediate,Yes -Head and Neck,BIOPSY OF LESION OF MAJOR SALIVARY GLAND,Open biopsy of lesion of salivary gland,Minor,No -Head and Neck,BIOPSY OF LESION OF MANDIBLE,Biopsy of lesion of facial bone,Minor,No -,BIOPSY OF LESION OF MANDIBLE,Biopsy of lesion of facial bone,Minor,No -Head and Neck,BIOPSY OF LESION OF MAXILLARY ANTRUM,Biopsy of lesion of facial bone,Minor,No -Head and Neck,BIOPSY OF LESION OF NASAL MUCOSA,Panendoscopy +/- incisional biopsy,Intermediate,No -ENT,BIOPSY OF LESION OF NASAL SEPTUM,Biopsy of of septum of nose,Minor,No -Head and Neck,BIOPSY OF LESION OF NOSE,"Therapeutic Panendoscopy +/- excision biopsy, excision or destruction of lesions",Intermediate,No -ENT,BIOPSY OF LESION OF NOSE,Panendoscopy +/- incisional biopsy,Intermediate,No -Head and Neck,BIOPSY OF LESION OF ORAL CAVITY,FIBRE OPTIC EXAMINATION OF THE PHARYNX +/- BIOPSY/REMOVAL OF FOREIGN BODY,Minor,No -Head and Neck,BIOPSY OF LESION OF PALATE,Biopsy of lesion of mouth,Minor,No -Urology,BIOPSY OF LESION OF PENIS,Biopsy of lesion of penis,Minor,No -Head and Neck,BIOPSY OF LESION OF SKIN OF HEAD,Shave biopsy of lesion of skin,Minor,No -Head and Neck,BIOPSY OF LESION OF TONGUE,Excision/destruction of lesion of tongue,Intermediate,No -Gynaecology,BIOPSY OF LESION OF VAGINA,Biopsy of lesion of vagina,Minor,No -Thoracic Surgery,BIOPSY OF LUNG,VATS lung biopsy,Intermediate,Yes -Head and Neck,BIOPSY OF LYMPH NODE,Biopsy/sampling of cervical lymph nodes,Minor,No -Thoracic Surgery,BIOPSY OF LYMPH NODE,Sentinel lymph node biopsy for melanoma,Intermediate,No -Thoracic Surgery,BIOPSY OF MEDIASTINAL LYMPH NODE,Diagnostic mediastinoscopy,Intermediate,Yes -Thoracic Surgery,BIOPSY OF MEDIASTINUM,Diagnostic mediastinoscopy,Intermediate,Yes -Head and Neck,BIOPSY OF MOUTH,Panendoscopy +/- incisional biopsy,Intermediate,No -Head and Neck,BIOPSY OF NASOPHARYNX,Panendoscopy +/- incisional biopsy,Intermediate,No -Head and Neck,BIOPSY OF NOSE,Panendoscopy +/- incisional biopsy,Intermediate,No -Head and Neck,BIOPSY OF OROPHARYNX,Panendoscopy +/- incisional biopsy,Intermediate,No -Colorectal Surgery,BIOPSY OF PELVIC MASS,Diagnostic laparoscopy (including any biopsy),Intermediate,No -Urology,BIOPSY OF PENIS,Biopsy of lesion of penis,Minor,No -Urology,BIOPSY OF PERIANAL LESION,Biopsy of lesion of penis,Minor,No -Thoracic Surgery,BIOPSY OF PLEURA,Open pleural biopsy as sole procedure,Xmajor,Yes -Urology,BIOPSY OF PROSTATE,Endoscopic biopsy of prostate (including cystoscopy),Intermediate,No -,BIOPSY OF PROSTATE,Endoscopic biopsy of prostate (including cystoscopy),Intermediate,No -Urology,BIOPSY OF SCROTAL LESION,Biopsy of testis,Minor,No -Urology,BIOPSY OF SEMINAL VESICLE,Operation(s) on seminal vesicle,Major,No -Breast Surgery,BIOPSY OF SENTINEL LYMPH NODE OF BREAST,Sentinel node mapping and sampling with blue dye or radioactive probe for breast cancer,Intermediate,No -,BIOPSY OF SKELETAL MUSCLE,-,Minor,No -Urology,BIOPSY OF SKIN AND/OR SUBCUTANEOUS TISSUE,Shave biopsy of lesion of skin,Minor,No -Head and Neck,BIOPSY OF SOFT PALATE,Biopsy of lesion of mouth,Minor,No -Orthopaedics,"BIOPSY OF SOFT TISSUE OF ELBOW AREA, DEEP",Open biopsy of muscle or soft tissue lesion,Minor,No -Urology,BIOPSY OF SPERMATIC CORD,Biopsy of testis,Minor,No -General Surgery,BIOPSY OF TEMPORAL ARTERY,Biopsy of artery (including temporal) (as sole procedure),Minor,No -Urology,BIOPSY OF TESTIS,Biopsy of testis,Minor,No -,BIOPSY OF TESTIS,Biopsy of testis,Intermediate,No -Head and Neck,BIOPSY OF TONGUE,Biopsy of lesion of mouth,Minor,No -Gynaecology,BIOPSY OF VULVA,Excision of lesion of vulva,Minor,No -Urology,BLADDER CLOSURE,Partial cystectomy (including cystoscopy),Major,No -Urology,BLADDER NECK OPERATION FOR FEMALE STRESS INCONTINENCE,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -Urology,BLADDER SURVEILLANCE - CHECK CYSTOSCOPY,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -Paediatric ENT,BLIND SAC CLOSURE OF EXTERNAL AUDITORY CANAL,Soft tissue meatoplasty of EAC,Intermediate,No -General Surgery,BLOCK DISSECTION OF CERVICAL LYMPH NODES,Radical dissection of cervical lymph nodes,Complex,No -Head and Neck,BLOCK DISSECTION OF CERVICAL LYMPH NODES,Radical dissection of cervical lymph nodes,Complex,Yes -Gynaecology,BLOCK DISSECTION OF INGUINAL LYMPH NODES,Block dissection of pelvic lymph nodes (as sole procedure),Major,No -Urology,BLOCK DISSECTION OF INGUINAL LYMPH NODES,Block dissection of pelvic lymph nodes (as sole procedure),Major,No -Gynaecology,BLOCK DISSECTION OF PELVIC LYMPH NODES,Block dissection of pelvic lymph nodes (as sole procedure),Major,No -,BONE FUSION,Excision reconstruction of large joint,Major,No -Orthopaedics,BONE FUSION,Excision reconstruction of large joint,Major,No -Orthopaedics,BONE GRAFT OF FEMUR,Secondary open reduction of fractured long bone and intra-medullary fixation or internal fixation for non-union/ mal-union – including intra-articular (including bone graft),Xmajor,No -Oral Surgery,BONE GRAFT TO MANDIBLE,Reconstruction of jaw (non-vascularised reconstruction),Xmajor,No -Maxillo-Facial Surgery,BONE GRAFT TO MAXILLA,Reconstruction of jaw (non-vascularised reconstruction),Xmajor,No -Bone Marrow Harvest,"BONE MARROW BIOPSY, NEEDLE OR TROCAR",-,Minor,No -Bone Marrow Harvest,BONE MARROW INCISION,-,Minor,No -,BONE MARROW TREPHINE,-,Minor,No -General Surgery,BOWEL STOMA CLOSURE,Closure of colostomy,Major,No -Colorectal Surgery,BOWEL STOMA CLOSURE,Closure of colostomy,Major,No -Breast Surgery,BREAST CLOSURE,Excision of breast lump/fibroadenoma,Intermediate,No -Breast Surgery,BREAST INCISION,Excision of breast lump/fibroadenoma,Intermediate,No -Breast Surgery,BREAST PROSTHESIS OPERATION,Reconstruction of breast using fixed prosthesis (including delayed reconstruction),Major,No -Breast Surgery,BREAST RECONSTRUCTION WITH SUBMUSCULAR IMPLANT,Reconstruction of breast using fixed prosthesis (including delayed reconstruction),Major,No -Orthopaedics,BRISTOW-LATARJET PROCEDURE,Primary stabilisation of multi-directional instability of shoulder joint +/- tendon repair,Major,No -Thoracic Surgery,BRONCHIAL SUCTION VIA FIBREOPTIC BRONCHOSCOPE,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Thoracic Surgery,BRONCHOSCOPIC INSERTION OF ENDOBRONCHIAL VALVE,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Bronchoscopy/Thoracoscopy,BRONCHOSCOPIC PLACEMENT OF AIRWAY STENT,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Thoracic Surgery,BRONCHOSCOPY,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -,BRONCHOSCOPY,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Thoracic Medicine,BRONCHOSCOPY AND BRONCHOALVEOLAR LAVAGE,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Bronchoscopy/Thoracoscopy,BRONCHOSCOPY AND BRONCHOALVEOLAR LAVAGE,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -,BRONCHOSCOPY AND BRONCHOALVEOLAR LAVAGE,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Thoracic Surgery,BRONCHOSCOPY AND BRONCHOALVEOLAR LAVAGE,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,Yes -ENT,BROWLIFT,-,Unknown,No -Urology,BULBAR URETHROPLASTY,"Simple urethroplasty, eg primary repair, segment, anterior urethra (including cystoscopy)",Major,No -Urology,BULBAR URETHROPLASTY WITH BUCCAL MUCOSAL GRAFT DORSAL PATCH AUGMENTATION,"Complex Urethroplasty, Eg Revision Surgery of the Anterior Urethra, Segment, Posterior Urethra, +/- Grafting (Including Cystoscopy)",Major,No -Urology,BULBAR URETHROPLASTY WITH NON-TRANSECTING ANASTOMOSIS - AUGMENTED,"Simple urethroplasty, eg primary repair, segment, anterior urethra (including cystoscopy)",Major,No -Urology,BULBAR URETHROPLASTY WITH TRANSECTING ANASTOMOSIS,"Simple urethroplasty, eg primary repair, segment, anterior urethra (including cystoscopy)",Major,No -Urology,BULBO-PROSTATIC ANASTOMOTIC URETHROPLASTY,"Simple urethroplasty, eg primary repair, segment, anterior urethra (including cystoscopy)",Major,No -Urology,BULBO-PROSTATIC ANASTOMOTIC URETHROPLASTY USING ABDOMINOPERINEAL APPROACH,"Complex Urethroplasty, Eg Revision Surgery of the Anterior Urethra, Segment, Posterior Urethra, +/- Grafting (Including Cystoscopy)",Major,No -Urology,BULBO-PROSTATIC ANASTOMOTIC URETHROPLASTY USING PERINEAL APPROACH WITH CRURAL SEPARATION,"Complex Urethroplasty, Eg Revision Surgery of the Anterior Urethra, Segment, Posterior Urethra, +/- Grafting (Including Cystoscopy)",Major,No -Orthopaedics,BUNIONECTOMY WITH OSTEOTOMY OF FIRST METATARSAL,Excision of medial eminence 1st or 5th MT head with soft tissue repair (bunionectomy),Intermediate,No -Orthopaedics,BURSECTOMY,Excision of bursa,Intermediate,No -Upper Gastro-intestinal Surgery,BYPASS GASTROENTEROSTOMY,Gastro–jejunostomy,Major,No -Upper Gastro-intestinal Surgery,BYPASS GASTROJEJUNOSTOMY,Gastro–jejunostomy,Major,No -Head and Neck,BYPASS OF OBSTRUCTION OF LYMPHATIC DUCT,Repair of peri-lymph fistula,Major,No -ENT,CANALOPLASTY OF EXTERNAL AUDITORY MEATUS,Reconstruction of external auditory canal,Xmajor,No -Upper Gastro-intestinal Surgery,CARDIOPLASTY OF STOMACH AND OESOPHAGUS,Open operations on stomach not elsewhere classified,Major,No -Thoracic Surgery,CARDIOVERSION,External cardioversion,Minor,No -ENT,CARTILAGE GRAFT TO NASAL SEPTUM,Septoplasty of nose (including attention to turbinates),Intermediate,No -Orthopaedics,CEMENTED UNICOMPARTMENTAL KNEE REPLACEMENT,Unicompartmental knee replacement,Xmajor,No -,CEMENTED UNICOMPARTMENTAL KNEE REPLACEMENT,Unicompartmental knee replacement,Xmajor,No -,CENTRAL LINE INSERTION,Insertion of central venous catheter - non-tunnelled (X-ray guided),Intermediate,No -Thoracic Surgery,CERVICAL MEDIASTINOSCOPY,Diagnostic mediastinoscopy,Intermediate,Yes -,CERVICAL POLYPECTOMY,"Hysteroscopy (including biopsy, dilatation, curettage and resection of polyp(s) +/- Mirena coil insertion)",Intermediate,No -Orthopaedics,CHANGE IN BONE LENGTH OF CLAVICLE,"Excision distal clavicle, as sole procedure",Major,No -Urology,CHANGE OF CYSTOSTOMY TUBE,-,Minor,No -,CHANGE OF CYSTOSTOMY TUBE,-,Minor,No -Urology,CHECK CYSTOSCOPY AND BLADDER BIOPSY,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -Urology,CHECK CYSTOSCOPY AND CAUTERISATION OF BLADDER,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -Orthopaedics,CHEILECTOMY OF METATARSAL,"Excision arthroplasty of first metatarso-phalangeal joint, (e.g. Keller, Bonney-Kessel procedures) including cheilectomy",Intermediate,No -Thoracic Surgery,CHEST WALL RECONSTRUCTION,Excision of chest wall tumour - with chest wall reconstruction,Xmajor,Yes -General Surgery,CHOLECYSTECTOMY,Cholecystectomy (including mini-cholecystectomy),Major,No -Upper Gastro-intestinal Surgery,CHOLECYSTECTOMY,Cholecystectomy (including mini-cholecystectomy),Major,No -Orthopaedics,CHOPART TYPE PROCEDURE,Amputation of leg/foot (including Symes Lisfranc and Chopart),Major,No -Urology,CIRCUMCISION,Circumcision,Intermediate,No -,CIRCUMCISION,Circumcision,Intermediate,No -Andrology,CIRCUMCISION,Circumcision,Intermediate,No -,CLAGETT CLOSURE OF FENESTRATION OF CHEST,Resection of rib and open drainage of pleural cavity,Major,No -Urology,CLAM CYSTOPLASTY,Enlargement of bladder (including cystoscopy),Complex,No -Paediatric Urology,CLAM CYSTOPLASTY,Enterocystoplasty (including cystoscopy),Complex,No -Urology,CLAM ILEOCYSTOPLASTY,Enterocystoplasty (including cystoscopy),Complex,No -Gynaecology,CLITOROPLASTY,Operations on female perineum,Minor,No -,CLOSED REDUCTION OF DISLOCATED TOTAL PROSTHETIC REPLACEMENT OF HIP JOINT,Closed reduction of dislocated hip prosthesis,Intermediate,No -ENT,CLOSED RHINOPLASTY,Rhinoplasty following trauma or excision of tumour (including attention to turbinates),Major,No -Colorectal Surgery,CLOSURE OF ANAL FISTULA USING PLUG,Seton placement for treatment of anal fistula,Minor,No -,CLOSURE OF ANAL FISTULA USING PLUG,Seton placement for treatment of anal fistula,Minor,No -Colorectal Surgery,CLOSURE OF COLOSTOMY,Closure of colostomy,Major,No -General Surgery,CLOSURE OF COLOSTOMY,Closure of colostomy,Major,No -Urology,CLOSURE OF CUTANEOUS VESICOSTOMY,Closure of cystostomy,Intermediate,No -General Surgery,CLOSURE OF DEFUNCTIONING COLOSTOMY,Closure of colostomy,Major,No -,CLOSURE OF GASTROSTOMY,Closure of Gastrostomy,Major,No -Upper Gastro-intestinal Surgery,CLOSURE OF GASTROSTOMY,Closure of Gastrostomy,Major,No -Urology,CLOSURE OF ILEAL FISTULA,Repair of cutaneous vesical fistula,Intermediate,No -General Surgery,CLOSURE OF ILEOSTOMY,Closure of ileostomy (as sole procedure),Intermediate,No -Colorectal Surgery,CLOSURE OF ILEOSTOMY,Closure of ileostomy (as sole procedure),Intermediate,No -Gynaecology,CLOSURE OF ILEOSTOMY,Closure of ileostomy (as sole procedure),Intermediate,No -Upper Gastro-intestinal Surgery,CLOSURE OF ILEOSTOMY,Closure of ileostomy (as sole procedure),Intermediate,No -Gynaecology Oncology,CLOSURE OF ILEOSTOMY,Closure of ileostomy (as sole procedure),Intermediate,No -,CLOSURE OF ILEOSTOMY,Closure of ileostomy (as sole procedure),Intermediate,No -General Surgery,CLOSURE OF INTESTINAL CUTANEOUS FISTULA,Occlusion of fistula under imaging control,Major,No -Colorectal Surgery,CLOSURE OF INTESTINAL CUTANEOUS FISTULA,Occlusion of fistula under imaging control,Major,No -Upper Gastro-intestinal Surgery,CLOSURE OF JEJUNOSTOMY,Closure of Gastrostomy,Major,No -Head and Neck,CLOSURE OF PALATAL FISTULA,Closure of oro-antral fistula with local flap,Intermediate,No -Gynaecology,CLOSURE OF RECTOVAGINAL FISTULA BY VAGINAL APPROACH,Repair of rectovaginal fistula,Xmajor,No -Thoracic Surgery,CLOSURE OF SKIN WOUND,Debridement and primary suture of wound without involvement of deeper tissue (skin and subcutaneous fat only) - Trunk and Limbs,Intermediate,No -,CLOSURE OF SKIN WOUND,Debridement and primary suture of wound without involvement of deeper tissue (skin and subcutaneous fat only) - Trunk and Limbs,Intermediate,No -General Surgery,CLOSURE OF STOMA OF SMALL INTESTINE,Closure of ileostomy (as sole procedure),Intermediate,No -,CLOSURE OF SUPERFICIAL WOUND DEHISCENCE,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Head and Neck,CLOSURE OF TRACHEOCUTANEOUS FISTULA,Partial excision of trachea with reconstruction,Complex,No -Urology,CLOSURE OF URETERAL FISTULA,Closure of fistula of urethra (including cystoscopy),Intermediate,No -Urology,CLOSURE OF URETEROVESICAL FISTULA,Repair of cutaneous vesical fistula,Intermediate,No -Urology,CLOSURE OF URETHRAL FISTULA IN MALE,Closure of fistula of urethra (including cystoscopy),Intermediate,No -Urology,CLOSURE OF URETHROVAGINAL FISTULA,Repair of urethrovaginal fistula (including cystoscopy),Major,No -Paediatric ENT,COCHLEAR DEVICE IMPLANTATION WITH MASTOIDECTOMY,Insertion of cochlear implant - unilateral,Complex,No -ENT,COCHLEAR DEVICE IMPLANTATION WITH MASTOIDECTOMY,Insertion of cochlear implant - unilateral,Complex,No -,COCHLEAR DEVICE IMPLANTATION WITH MASTOIDECTOMY,Insertion of cochlear implant - unilateral,Complex,No -Gynaecology,COLD KNIFE CONE BIOPSY OF CERVIX,"Cone biopsy of cervix uteri and/or (+/- laser, colposcopy or polypectomy)",Intermediate,No -Gynaecology,COLECTOMY,Excision of lesion of colon (transabdominal),Major,No -Urology,COLOCYSTOPLASTY,Enlargement of bladder (including cystoscopy),Complex,No -Gynaecology,COLPORRHAPHY FOR REPAIR OF CYSTOCELE,Anterior +/- posterior colporrhaphy (including primary repair of enterocele) (including cystoscopy),Major,No -Gynaecology,COLPOSUSPENSION,Revision retropubic suspension of neck of bladder (including colposuspension and cystoscopy),Major,No -ENT,COMBINED APPROACH TYMPANOPLASTY,Combined approach tympanoplasty - intact canal wall tympanoplasty,Major,No -Paediatric ENT,COMBINED APPROACH TYMPANOPLASTY,Combined approach tympanoplasty - intact canal wall tympanoplasty,Major,No -,COMBINED APPROACH TYMPANOPLASTY,Combined approach tympanoplasty - intact canal wall tympanoplasty,Major,No -Orthopaedics,COMPARTMENT SYNDROME DECOMPRESSION OF LOWER LIMB,Fasciotomy of limb,Major,No -Urology,COMPLETE AMPUTATION OF PENIS,Total amputation of penis,Major,No -Breast Surgery,COMPLETE AXILLARY LYMPHADENECTOMY,Sentinel node mapping and sampling with blue dye and radioactive probe for breast cancer,Intermediate,No -Head and Neck,"COMPLETE LARYNGECTOMY WITH RADICAL NECK DISSECTION, SYNCHRONOUS THYROIDECTOMY AND SYNCHRONOUS TRACHEOSTOMY",Total thyroidectomy including block dissection of lymph nodes,Major,Yes -General Surgery,COMPLETE PARATHYROIDECTOMY,Parathyroidectomy,Xmajor,No -Orthopaedics,COMPLETE REPAIR OF ROTATOR CUFF,Arthroscopic rotator cuff repair greater than 2cm,Xmajor,No -ENT,COMPLETE SUBMUCOUS RESECTION OF TURBINATE,"Reduction turbinates of nose (trim, radical excision)",Intermediate,No -General Surgery,COMPLETE SUBSTERNAL THYROIDECTOMY,Total thyroidectomy including block dissection of lymph nodes,Major,No -Urology,"COMPLETE TRANSURETHRAL RESECTION OF PROSTATE, INCLUDING CONTROL OF POSTOPERATIVE BLEEDING",Endoscopic resection of prostate (TUR) (including cystoscopy),Major,No -,"COMPLETE TRANSURETHRAL RESECTION OF PROSTATE, INCLUDING CONTROL OF POSTOPERATIVE BLEEDING",Endoscopic resection of prostate (TUR) (including cystoscopy),Major,No -Thoracic Surgery,COMPLETION LOBECTOMY,Pulmonary lobectomy including segmental resection,Complex,Yes -Thoracic Surgery,COMPLETION PNEUMONECTOMY,Pneumonectomy,Complex,Yes -General Surgery,COMPLETION THYROIDECTOMY,Total thyroidectomy including block dissection of lymph nodes,Major,No -Head and Neck,COMPLETION THYROIDECTOMY,Total thyroidectomy including block dissection of lymph nodes,Major,No -Orthopaedics,COMPLEX RECONSTRUCTION OF FOREFOOT,"Multiple procedures on forefoot, distal to and including the tarsometatarsal joints, which involves at least two distinct procedures not intrinsic to each other",Xmajor,No -Urology,CONSTRUCTION OF CONTINENT ILEAL CONDUIT,Construction of ileal conduit including ureteric implantation,Xmajor,No -General Surgery,CONSTRUCTION OF DIVERTING COLOSTOMY,Open formation of colostomy,Major,No -General Surgery,CONSTRUCTION OF END COLOSTOMY,Open formation of colostomy,Major,No -Colorectal Surgery,CONSTRUCTION OF END COLOSTOMY,Open formation of colostomy,Major,No -Urology,CONSTRUCTION OF ILEAL CONDUIT DIVERSION,Construction of ileal conduit including ureteric implantation,Xmajor,No -Urology,CONSTRUCTION OF PENIS,Reconstruction of penis,Major,No -,CONSTRUCTION OF PENIS,Reconstruction of penis,Major,No -General Surgery,CONSTRUCTION OF SIGMOID LOOP COLOSTOMY,Laparoscopic colostomy and stoma formation (including revision),Major,No -Orthopaedics,CONVERSION FROM CEMENTED HEMIARTHROPLASTY OF HIP,Primary total hip replacement with or without cement,Xmajor,No -Orthopaedics,CONVERSION FROM CEMENTED UNICOMPARTMENTAL KNEE REPLACEMENT,Unicompartmental knee replacement,Xmajor,No -Orthopaedics,CONVERSION FROM UNCEMENTED TOTAL HIP REPLACEMENT,Primary total hip replacement with or without cement,Xmajor,No -Orthopaedics,CONVERSION TO CEMENTED TOTAL KNEE REPLACEMENT,"Total prosthetic replacement of knee joint, with or without cement, +/– patella",Xmajor,No -Orthopaedics,CONVERSION TO TOTAL PROSTHETIC REPLACEMENT OF ELBOW JOINT,Total prosthetic replacement of elbow,Xmajor,No -Orthopaedics,CONVERSION TO UNCEMENTED TOTAL HIP REPLACEMENT,Primary total hip replacement with or without cement,Xmajor,No -Thoracic Surgery,CORRECTION OF PECTUS DEFORMITY,Open surgical correction of pectus deformity of chest wall (or other congenital defect thereof),Complex,Yes -Head and Neck,CORRECTION OF TELECANTHUS BY TRANSNASAL SUTURE,Closure of perforation of septum of nose,Intermediate,No -ENT,CORTICAL MASTOIDECTOMY,Simple mastoidectomy,Major,No -Colorectal Surgery,CREATION OF DEFUNCTIONING COLOSTOMY,Open formation of colostomy,Major,No -General Surgery,CREATION OF DEFUNCTIONING COLOSTOMY,Open formation of colostomy,Major,No -General Surgery,CREATION OF DEFUNCTIONING ILEOSTOMY,Open formation of ileostomy,Major,No -Colorectal Surgery,CREATION OF DEFUNCTIONING ILEOSTOMY,Open formation of ileostomy,Major,No -General Surgery,CREATION OF ILEAL POUCH,Ileoanal anastomosis and creation of pouch,Complex,No -General Surgery,CREATION OF ILEO-ANAL POUCH,Ileoanal anastomosis and creation of pouch,Complex,No -Colorectal Surgery,CREATION OF ILEO-ANAL POUCH,Ileoanal anastomosis and creation of pouch,Complex,No -Colorectal Surgery,CREATION OF ILEOSTOMY,Open formation of ileostomy,Major,No -General Surgery,CREATION OF ILEOSTOMY,Open formation of ileostomy,Major,No -Upper Gastro-intestinal Surgery,CREATION OF JEJUNOSTOMY,Open formation of jejunostomy,Major,No -General Surgery,CREATION OF LOOP ILEOSTOMY,Open formation of ileostomy,Major,No -Colorectal Surgery,CREATION OF LOOP ILEOSTOMY,Open formation of ileostomy,Major,No -Urology,CRUSHING OF CALCULUS OF URINARY BLADDER,Endoscopic extraction of calculus of bladder (including cystoscopy),Intermediate,No -Thoracic Surgery,CRYOSURGERY,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Gynaecology,CRYOTHERAPY OF SUBCUTANEOUS TISSUE,Curettage/cryotherapy of lesions of skin including cauterisation - four or more,Intermediate,No -Urology,CRYOTHERAPY TO PROSTATE VIA PERINEAL PROBE,Prostatic cryotherapy,Complex,No -Urology,CT GUIDED PERCUTANEOUS IRREVERSIBLE ELECTROPORATION OF NEOPLASM OF PROSTATE,Transperineal template-guided biopsies of the prostate under image guidance,Intermediate,No -Gynaecology,CURETTAGE OF UTERUS,Dilatation of cervix uteri and curettage of uterus including polypectomy and diathermy of cervix,Minor,No -Urology,CYSTECTOMY - DOME OF BLADDER,Partial cystectomy (including cystoscopy),Major,No -Urology,CYSTOLITHALOPAXY,Litholapaxy (including cystoscopy),Major,No -,CYSTOLITHALOPAXY,Endoscopic extraction of calculus of bladder (including cystoscopy),Intermediate,No -Uro-Gynaecology,CYSTOLITHOLAPAXY,Endoscopic extraction of calculus of bladder (including cystoscopy),Intermediate,No -Urology,CYSTOLITHOLAPAXY,Endoscopic extraction of calculus of bladder (including cystoscopy),Intermediate,No -Urology,CYSTOPLASTY WITH ILEOCYSTOPLASTY,Enterocystoplasty (including cystoscopy),Complex,No -Paediatric Urology,CYSTOPLASTY WITH ILEOCYSTOPLASTY,Enterocystoplasty (including cystoscopy),Complex,No -Urology,CYSTOPROSTATECTOMY,"Radical prostatectomy, reconstruction of bladder neck including bilateral pelvic lymphadenectomy (including cystoscopy)",Complex,No -Urology,CYSTOSCOPIC ADJUSTMENT OF URETERIC STENT,Endoscopic examination of ureter (+/- cystoscopy and insertion/removal of stent),Intermediate,No -,CYSTOSCOPIC ADJUSTMENT OF URETERIC STENT,Endoscopic examination of ureter (+/- cystoscopy and insertion/removal of stent),Intermediate,No -Gynaecology,CYSTOSCOPIC CATHETERISATION OF URETER,Endoscopic examination of ureter (+/- cystoscopy and insertion/removal of stent),Intermediate,No -Urology,CYSTOSCOPIC CATHETERISATION OF URETER,Diagnostic ureterorenoscopy (+/- cystoscopy),Minor,No -Urology,CYSTOSCOPIC DILATATION OF URETERIC ORIFICE,Therapeutic nephroscopic operations on ureter (including cystoscopy),Major,No -Urology,CYSTOSCOPIC HYDROSTATIC DISTENSION OF BLADDER,Endoscopic hydrostatic distention of bladder (including cystoscopy),Minor,No -Urology,CYSTOSCOPIC INSERTION OF URETERIC STENT,Endoscopic examination of ureter (+/- cystoscopy and insertion/removal of stent),Intermediate,No -Gynaecology,CYSTOSCOPIC INSERTION OF URETERIC STENT,Endoscopic examination of ureter (+/- cystoscopy and insertion/removal of stent),Intermediate,No -,CYSTOSCOPIC INSERTION OF URETERIC STENT,Endoscopic examination of ureter (+/- cystoscopy and insertion/removal of stent),Intermediate,No -Paediatric Urology,CYSTOSCOPIC INSERTION OF URETERIC STENT,Endoscopic examination of ureter (+/- cystoscopy and insertion/removal of stent),Intermediate,No -Urology,CYSTOSCOPIC REMOVAL OF FOREIGN BODY FROM BLADDER,Endoscopic removal of foreign body from bladder (including cystoscopy),Intermediate,No -Urology,CYSTOSCOPIC REMOVAL OF URETERIC STENT,Endoscopic examination of ureter (+/- cystoscopy and insertion/removal of stent),Intermediate,No -,CYSTOSCOPIC REMOVAL OF URETERIC STENT,Endoscopic examination of ureter (+/- cystoscopy and insertion/removal of stent),Intermediate,No -Urology,CYSTOSCOPIC REPLACEMENT OF URETERIC STENT,Endoscopic examination of ureter (+/- cystoscopy and insertion/removal of stent),Intermediate,No -Paediatric Urology,CYSTOSCOPIC REPLACEMENT OF URETERIC STENT,Endoscopic examination of ureter (+/- cystoscopy and insertion/removal of stent),Intermediate,No -,CYSTOSCOPIC REPLACEMENT OF URETERIC STENT,Endoscopic examination of ureter (+/- cystoscopy and insertion/removal of stent),Intermediate,No -Gynaecology,CYSTOSCOPIC SUBURETHRAL INJECTION IN FEMALE,"Therapeutic injection into bladder neck for treatment of stress incontinence (periurethral bulking agents), including cystoscopy",Intermediate,No -Urology,CYSTOSCOPIC URETERIC STENT PROCEDURE,Therapeutic ureterorenoscopy (+/- cystoscopy and insertion/removal of stent),Minor,No -Urology,CYSTOSCOPY,Diagnostic ureterorenoscopy (+/- cystoscopy),Minor,No -Paediatric Urology,CYSTOSCOPY,Diagnostic ureterorenoscopy (+/- cystoscopy),Minor,No -Gynaecology,CYSTOSCOPY,Diagnostic ureterorenoscopy (+/- cystoscopy),Minor,No -,CYSTOSCOPY,Diagnostic ureterorenoscopy (+/- cystoscopy),Minor,No -Urology,CYSTOSCOPY AND BIOPSY OF BLADDER USING PANENDOSCOPE,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -Urology,CYSTOSCOPY AND BLADDER WASHOUT,Bladder instillation as sole procedure,Minor,No -,CYSTOSCOPY AND BLADDER WASHOUT,Bladder instillation as sole procedure,Minor,No -Urology,CYSTOSCOPY AND BOUGIENAGE OF BLADDER NECK USING PANENDOSCOPE,Resection of bladder neck (including cystoscopy),Intermediate,No -Urology,CYSTOSCOPY AND LASER DESTRUCTION OF BLADDER LESION,Endoscopic destruction of lesion of bladder (including cystoscopy),Intermediate,No -Urology,CYSTOSCOPY AND LITHOTRIPSY OF CALCULUS OF BLADDER USING LASER,Endoscopic extraction of calculus of bladder (including cystoscopy),Intermediate,No -Uro-Gynaecology,CYSTOSCOPY AND LITHOTRIPSY OF CALCULUS OF BLADDER USING LASER,Endoscopic extraction of calculus of bladder (including cystoscopy),Intermediate,No -Urology,CYSTOSCOPY AND REMOVAL OF CALCULUS OF BLADDER,Endoscopic extraction of calculus of bladder (including cystoscopy),Intermediate,No -Urology,CYSTOSCOPY AND RETROGRADE PYELOGRAPHY,Endoscopic retrograde pyelography (including bilateral and cystoscopy),Intermediate,No -Urology,CYSTOSCOPY AND TRANSURETHRAL BIOPSY OF BLADDER,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -Urology,CYSTOSCOPY AND TRANSURETHRAL BIOPSY OF PROSTATE,Endoscopic biopsy of prostate (including cystoscopy),Intermediate,No -Urology,CYSTOSCOPY AND TRANSURETHRAL RESECTION OF BLADDER LESION,Endoscopic resection of lesion of bladder (including cystoscopy),Major,No -,CYSTOSCOPY AND TRANSURETHRAL RESECTION OF BLADDER LESION,Endoscopic resection of lesion of bladder (including cystoscopy),Major,No -Urology,CYSTOSCOPY AND TRANSURETHRAL RESECTION OF BLADDER TUMOUR,Endoscopic resection of lesion of bladder (including cystoscopy),Major,No -Urology,CYSTOSCOPY AND URETHRAL DILATATION,Dilatation of urethra (including cystoscopy),Minor,No -,CYSTOSCOPY AND URETHRAL DILATATION,Dilatation of urethra (including cystoscopy),Minor,No -Gynaecology,CYSTOSTOMY AND INSERTION OF SUPRAPUBIC CATHETER,Cystostomy and insertion of suprapubic tube into bladder (including cystoscopy),Intermediate,No -Urology,CYSTOSTOMY AND INSERTION OF SUPRAPUBIC CATHETER,Cystostomy and insertion of suprapubic tube into bladder (including cystoscopy),Intermediate,No -,CYSTOSTOMY AND INSERTION OF SUPRAPUBIC CATHETER,Cystostomy and insertion of suprapubic tube into bladder (including cystoscopy),Intermediate,No -Gynaecology,CYSTOSTOMY WITH INSERTION OF URETERAL CATHETER,Cystostomy and insertion of suprapubic tube into bladder (including cystoscopy),Intermediate,No -Urology,CYSTOURETHRECTOMY,Urethrectomy,Major,No -Urology,CYSTOURETHROSCOPY WITH BIOPSY OF BLADDER,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -Urology,CYSTOURETHROSCOPY WITH DILATION OF URETHRAL STRICTURE,Dilatation of urethra (including cystoscopy),Minor,No -Urology,CYSTOURETHROSCOPY WITH RESECTION OF BLADDER NECK,Resection of bladder neck (including cystoscopy),Intermediate,No -Thoracic Surgery,D1 LYMPH NODE DISSECTION,Laparoscopic retroperitoneal lymph node dissection,Major,Yes -Head and Neck,D3 LYMPH NODE DISSECTION,Radical dissection of cervical lymph nodes,Complex,Yes -,DEBRIDEMENT AND SUTURE,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Thoracic Surgery,DEBRIDEMENT AND WASHOUT OF PLEURAL CAVITY,VATS debridement of empyema,Major,Yes -,DEBRIDEMENT OF ABDOMINAL WALL,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -General Surgery,DEBRIDEMENT OF ABDOMINAL WALL,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Head and Neck,DEBRIDEMENT OF INFECTION OF SKIN,Debridement and primary suture of wound with involvement of deeper tissue - Head and Neck,Intermediate,No -,DEBRIDEMENT OF SKIN AND SUBCUTANEOUS TISSUE,Debridement and primary suture of wound without involvement of deeper tissue (skin and subcutaneous fat only) - Trunk and Limbs,Intermediate,No -Head and Neck,DEBRIDEMENT OF SKIN OF NECK,Debridement and primary suture of wound with involvement of deeper tissue - Head and Neck,Intermediate,No -Head and Neck,"DEBRIDEMENT OF SKIN, SUBCUTANEOUS TISSUE, MUSCLE AND BONE",Debridement and primary suture of wound with involvement of deeper tissue - Head and Neck,Intermediate,No -,"DEBRIDEMENT OF SKIN, SUBCUTANEOUS TISSUE, MUSCLE AND BONE",Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Urology,DEBRIDEMENT OF SOFT TISSUE,Debridement and primary suture of wound without involvement of deeper tissue (skin and subcutaneous fat only) - Head and Neck,Intermediate,No -Orthopaedics,DEBRIDEMENT OF WOUND OF SKIN,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Head and Neck,DEBRIDEMENT OF WOUND OF SKIN,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -,DEBRIDEMENT OF WOUND OF SKIN,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Urology,DEBRIDEMENT OF WOUND OF SKIN,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Gynaecology,DEBULKING OF NEOPLASM OF ABDOMINAL CAVITY,Anterior exenteration of pelvis,Complex,Yes -Gynaecology Oncology,DEBULKING OF NEOPLASM OF OVARY,"Open oophorectomy and salpingectomy, +/- biopsy eg. omentum, peritoneum, lymph node (as sole procedure) - unilateral",Major,Yes -Gynaecology,DEBULKING OF NEOPLASM OF OVARY,"Open oophorectomy and salipingectomy, +/- biopsy e.g. omentum, peritoneum, lymph node (as sole procedure) - bilateral",Major,Yes -Gynaecology,DEBULKING OF PELVIC TUMOUR,Total exenteration of pelvis,Complex,Yes -Orthopaedics,DECOMPRESSION OF BONE FOURAGE,Core decompression of hip,Major,No -,DECOMPRESSION OF MEDIAN NERVE,Release of entrapment of peripheral nerve,Intermediate,No -Orthopaedics,DECOMPRESSION OF NERVE VIA SUBCLAVIAN APPROACH,Release of entrapment of peripheral nerve,Intermediate,No -Orthopaedics,DECOMPRESSION OF ULNAR NERVE,Release of entrapment of peripheral nerve,Intermediate,No -Orthopaedics,DECOMPRESSION OF ULNAR NERVE AT ELBOW,Release of entrapment of peripheral nerve,Intermediate,No -Orthopaedics,DECOMPRESSION OPERATION,-,Major,No -Thoracic Surgery,DECORTICATION,Decortication of pleura of lung,Complex,Yes -Thoracic Surgery,DECORTICATION OF LUNG,Decortication of pleura of lung,Complex,Yes -Gynaecology,DEFIBULATION OF VULVA,Simple vulvectomy,Major,No -Breast Surgery,DELAYED SUTURING OF BREAST,Excision of breast lump/fibroadenoma,Intermediate,No -Colorectal Surgery,"DELORME OPERATION, PROCTOPEXY",Fixation of rectum for prolapse,Major,No -General Surgery,"DELORME OPERATION, PROCTOPEXY",Fixation of rectum for prolapse,Major,No -Head and Neck,DENTAL ALVEOPLASTY,Alveolar bone graft - unilateral,Intermediate,No -Head and Neck,DENTAL SURGICAL PROCEDURE,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Maxillo-Facial Surgery,DENTAL SURGICAL PROCEDURE,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Head and Neck,"DENTOALVEOLAR BONE REPLACEMENT GRAFT, SINGLE SITE, INCLUDING FLAP ENTRY AND CLOSURE",Alveolar bone graft - unilateral,Intermediate,Yes -Maxillo-Facial Surgery,DERMAL-FAT SKIN GRAFT,"Full thickness graft, head, neck, hands and genitalia ? up to 9cm2 in area",Major,No -Head and Neck,DERMAL-FAT SKIN GRAFT,"Full thickness graft, head, neck, hands and genitalia ? up to 9cm2 in area",Major,No -,DESTRUCTION OF HAEMORRHOIDS BY SCLEROTHERAPY,Haemorrhoidectomy (including sigmoidoscopy),Intermediate,No -Head and Neck,DESTRUCTION OF LESION OF FLOOR OF MOUTH,"Therapeutic Panendoscopy +/- excision biopsy, excision or destruction of lesions",Intermediate,No -ENT,DESTRUCTION OF LESION OF NOSE,Excision of lesion of internal nose,Minor,No -Head and Neck,DESTRUCTION OF LESION OF PALATE,Excision/destruction of lesion of palate,Intermediate,No -Head and Neck,DESTRUCTION OF LESION OF TONGUE,"Therapeutic Panendoscopy +/- excision biopsy, excision or destruction of lesions",Intermediate,No -Head and Neck,DESTRUCTION OF PHARYNGEAL LESION,Removal of lesion of para-pharyngeal space,Major,No -,DETORSION OF OVARY,"Laparoscopy and therapeutic procedures (including laser, diathermy and destruction e.g. endometriosis, adhesiolysis, tubal and ovarian surgery, +/-ureterolysis)",Major,No -Orthopaedics,DIAGNOSTIC ARTHROSCOPY OF SHOULDER JOINT,"Diagnostic arthroscopic examination of shoulder joint, with or without biopsy (as sole procedure)",Intermediate,No -Orthopaedics,DIAGNOSTIC ARTHROSCOPY OF SHOULDER WITH SYNOVIAL BIOPSY,"Diagnostic arthroscopic examination of shoulder joint, with or without biopsy (as sole procedure)",Intermediate,No -Maxillo-Facial Surgery,DIAGNOSTIC ARTHROSCOPY OF TEMPOROMANDIBULAR JOINT,Therapeutic arthroscopic operation of temporomandibular joint +/- lysis and/or lavage -unilateral,Intermediate,No -Gynaecology,DIAGNOSTIC CYSTOSCOPY,Diagnostic ureterorenoscopy (+/- cystoscopy),Minor,No -Urology,DIAGNOSTIC CYSTOSCOPY,Diagnostic ureterorenoscopy (+/- cystoscopy),Minor,No -Urology,DIAGNOSTIC CYSTOSCOPY AND BLADDER BIOPSY,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -Urology,DIAGNOSTIC ENDOSCOPIC EXAMINATION OF BLADDER AND BIOPSY OF LESION OF PROSTATE,Endoscopic resection of lesion of bladder (including cystoscopy),Major,No -Head and Neck,DIAGNOSTIC ENDOSCOPIC EXAMINATION OF NASAL CAVITY,"Diagnostic nasolaryngopharyngoscopy +/- biopsy, +/- cautery as sole procedure",Minor,No -Head and Neck,DIAGNOSTIC ENDOSCOPIC EXAMINATION OF NASAL CAVITY AND BIOPSY OF LESION OF NASAL CAVITY,"Therapeutic Panendoscopy +/- excision biopsy, excision or destruction of lesions",Intermediate,No -ENT,DIAGNOSTIC ENDOSCOPIC EXAMINATION OF NASAL CAVITY AND BIOPSY OF LESION OF NASAL CAVITY,"Therapeutic Panendoscopy +/- excision biopsy, excision or destruction of lesions",Intermediate,No -Head and Neck,DIAGNOSTIC ENDOSCOPY OF NOSE AND SINUSES,Diagnostic endoscopy of sinus and bilateral (as sole procedure),Minor,No -General Surgery,DIAGNOSTIC LAPAROSCOPY,Diagnostic laparoscopy (including any biopsy),Intermediate,No -Upper Gastro-intestinal Surgery,DIAGNOSTIC LAPAROSCOPY,Diagnostic laparoscopy (including any biopsy),Intermediate,No -Colorectal Surgery,DIAGNOSTIC LAPAROSCOPY,Diagnostic laparoscopy (including any biopsy),Intermediate,No -Bariatrics,DIAGNOSTIC LAPAROSCOPY,Diagnostic laparoscopy (including any biopsy),Intermediate,No -,DIAGNOSTIC LAPAROSCOPY,Diagnostic laparoscopy (including any biopsy),Intermediate,No -Gynaecology,DIAGNOSTIC LAPAROSCOPY,Diagnostic laparoscopy (including any biopsy),Intermediate,No -Gynaecology,DIAGNOSTIC LAPAROSCOPY OF FEMALE PELVIS,"Laparoscopy and therapeutic procedures (including laser, diathermy and destruction e.g. endometriosis, adhesiolysis, tubal and ovarian surgery, +/-ureterolysis)",Major,No -Head and Neck,DIAGNOSTIC MICROLARYNGOSCOPY AND BIOPSY,"Microlaryngoscopy/laryngoscopy +/- biopsy, excision of lesion, polyp or cyst",Intermediate,No -,DIAGNOSTIC MICROLARYNGOSCOPY AND BIOPSY,"Microlaryngoscopy/laryngoscopy +/- biopsy, excision of lesion, polyp or cyst",Intermediate,No -Head and Neck,DIAGNOSTIC PHARYNGOSCOPY,Panendoscopy +/- incisional biopsy,Intermediate,No -Thoracic Surgery,DIAGNOSTIC RIGID BRONCHOSCOPY,Therapeutic bronchoscopy for removal of foreign body,Minor,No -Urology,DIAGNOSTIC URETERORENOSCOPY,Diagnostic ureterorenoscopy (+/- cystoscopy),Minor,No -Urology,DIAGNOSTIC URETHROSCOPY,Diagnostic ureterorenoscopy (+/- cystoscopy),Minor,No -Orthopaedics,DIGITAL FASCIECTOMY,Dupuytren’s fasciectomy single digit with proximal interphalangeal joint,Intermediate,No -General Surgery,DILATATION OF RECTAL STRICTURE,Dilation of stricture of rectum,Minor,No -Urology,DILATATION OF URETHRA,Dilatation of urethra (including cystoscopy),Minor,No -Urology,DILATATION OF URETHRAL MEATUS,Dilatation of urethra (including cystoscopy),Minor,No -Urology,DILATION OF BLADDER NECK,Dilatation of outlet of female bladder (with cystoscopy),Minor,No -Head and Neck,DILATION OF PHARYNX,Therapeutic endoscopic operation on pharynx,Minor,No -Urology,DILATION OF VAGINA,Incision of introitus of vagina,Minor,No -Gynaecology Oncology,DISSECTION PROCEDURE,-,Unknown,No -ENT,DISSECTION TONSILLECTOMY,"Tonsillectomy - adult, age 13 + (and bilateral)",Intermediate,No -Upper Gastro-intestinal Surgery,DISTAL SUBTOTAL GASTRECTOMY,Partial gastrectomy,Xmajor,Yes -General Surgery,DIVISION OF ADHESIONS,Freeing of adhesions of peritoneum,Major,No -,DIVISION OF FASCIA OF FINGER FOR DUPUYTREN CONTRACTURE,Dupuytren’s fasciectomy single digit with proximal interphalangeal joint,Intermediate,No -Head and Neck,DIVISION OF FLAP,Distant flap ? delay/division/inset,Major,Yes -Maxillo-Facial Surgery,DIVISION OF JAW,Extensive segmental excision of mandible,Xmajor,No -Orthopaedics,DIVISION OF JOINT CAPSULE OF SHOULDER,Therapeutic arthroscopy of shoulder (as sole procedure),Major,No -Urology,DIVISION OF LIGAMENT,-,Intermediate,No -Orthopaedics,DIVISION OF SCAPULA,-,Major,No -Gynaecology,DIVISION OF VAGINAL SEPTUM,Excision of septum of vagina,Intermediate,No -Urology,DORSAL SLITTING OF PREPUCE,Revision of Circumcision,Intermediate,No -Thoracic Surgery,DRAINAGE OF PLEURAL CAVITY,Drainage of pleural cavity,Minor,No -,DRESSING AND FIXATION PROCEDURE,-,Minor,No -Bariatrics,DUODENAL SWITCH,Partial gastrectomy and excision of surrounding tissue,Complex,Yes -ENT,ELECTROCOAGULATION OF NOSE FOR EPISTAXIS,"Diagnostic nasolaryngopharyngoscopy +/- biopsy, +/- cautery as sole procedure",Minor,No -Urology,ELECTROEJACULATION PROCEDURE,-,Minor,No -Vascular Surgery,ENDARTERECTOMY AND ANGIOPLASTY OF COMMON FEMORAL ARTERY WITH PROSTHESIS,"Angioplasty of other arteries (e.g. sub-clavian, tibial, femoro-popliteal) including peripheral angiogram +/- insertion of stent",Major,No -Bronchoscopy/Thoracoscopy,ENDOBRONCHIAL ULTRASOUND GUIDED BIOPSY OF MEDIASTINAL LYMPH NODE (EBUS),Endobronchial ultrasound-guided transbronchial needle aspiration (EBUS-TBNA) for mediastinal masses,Major,No -,ENDOBRONCHIAL ULTRASOUND GUIDED BIOPSY OF MEDIASTINAL LYMPH NODE (EBUS),Endobronchial ultrasound-guided transbronchial needle aspiration (EBUS-TBNA) for mediastinal masses,Major,No -Gynaecology,ENDOMETRIAL BIOPSY,"Hysteroscopy (including biopsy, dilatation, curettage and resection of polyp(s) +/- Mirena coil insertion)",Intermediate,No -Gynaecology,ENDOMETRIAL RESECTION,Therapeutic hysteroscopic operations on uterus (including endometrial ablation excluding microwave or radiofrequency ablation) +/- Mirena coil insertion,Major,No -Head and Neck,ENDOSCOPIC BIOPSY,Panendoscopy +/- incisional biopsy,Intermediate,No -Bronchoscopy/Thoracoscopy,ENDOSCOPIC BRONCHOPLASTY,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -ENT,ENDOSCOPIC ETHMOIDECTOMY,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -Head and Neck,ENDOSCOPIC EXCISION OF LESION OF INTERNAL NOSE,Excision of lesion of internal nose,Minor,No -ENT,ENDOSCOPIC EXCISION OF LESION OF INTERNAL NOSE,Excision of lesion of internal nose,Minor,No -Head and Neck,ENDOSCOPIC EXCISION OF RIGHT LOBE OF THYROID GLAND,Total thyroid lobectomy and isthmectomy,Major,No -General Surgery,ENDOSCOPIC EXCISION OF RIGHT LOBE OF THYROID GLAND,Partial thyroidectomy (not elsewhere classified),Major,No -Head and Neck,ENDOSCOPIC EXTIRPATION OF LESION OF OROPHARYNX,"Therapeutic Panendoscopy +/- excision biopsy, excision or destruction of lesions",Intermediate,No -Head and Neck,ENDOSCOPIC FIBREOPTIC LASER DESTRUCTION OF LESION BELOW TRACHEA,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Urology,ENDOSCOPIC INSERTION OF URETHRAL STENT,Therapeutic ureterorenoscopy (+/- cystoscopy and insertion/removal of stent),Minor,No -Urology,ENDOSCOPIC LASER FRAGMENTATION OF RENAL CALCULUS,Holmium Laser Lithotripsy for calculi of ureter (including cystoscopy and insertion/removal of stent),Major,No -Upper Gastro-intestinal Surgery,ENDOSCOPIC OPERATION,Therapeutic oesophago-gastro-duodenoscopy (OGD) with insertion of prosthesis,Intermediate,No -Head and Neck,ENDOSCOPIC PARTIAL LARYNGECTOMY,Partial laryngectomy,Complex,Yes -Urology,ENDOSCOPIC REMOVAL OF URETHRAL STENT,Diagnostic endoscopic examination of urethra (as sole procedure) (including cystoscopy),Minor,No -Urology,ENDOSCOPIC RENEWAL OF TUBAL PROSTHESIS INTO URETER,Endoscopic removal and insertion of prosthesis into ureter (including cystoscopy),Major,No -Urology,ENDOSCOPIC RESECTION OF PROSTATE USING AN ELECTROTOME,Endoscopic resection of prostate (TUR) (including cystoscopy),Major,No -,ENDOSCOPIC RESECTION OF PROSTATE USING AN ELECTROTOME,Endoscopic resection of prostate (TUR) (including cystoscopy),Major,No -Bariatrics,ENDOSCOPIC RETROGRADE CHOLANGIOPANCREATOGRAPHY WITH REPLACEMENT OF BILE DUCT STENT,"Therapeutic ERCP with insertion of biliary or pancreatic stent(s), sphincterotomy or stone extraction",Major,No -Urology,ENDOSCOPIC RETROGRADE PYELOGRAM,Endoscopic retrograde pyelography (including bilateral and cystoscopy),Intermediate,No -,ENDOSCOPIC RETROGRADE PYELOGRAM,Endoscopic retrograde pyelography (including bilateral and cystoscopy),Intermediate,No -Head and Neck,ENDOSCOPIC STAPLING OF PHARYNGEAL POUCH,Open operation(s) on pharyngeal pouch,Major,No -Gynaecology,ENDOSCOPIC SUSPENSION OF UTERUS,Ventrosuspension of uterus (including laparoscopic),Intermediate,No -ENT,ENDOSCOPIC VOCAL CORD MEDIALISATION,Laser surgery to vocal cord (including microlaryngoscopy),Intermediate,No -Head and Neck,ENDOSCOPY,Therapeutic oesophago-gastro-duodenoscopy (OGD) with dilatation,Minor,No -,ENDOSCOPY,Therapeutic oesophago-gastro-duodenoscopy (OGD) with dilatation,Minor,No -Urology,ENDOSCOPY,Therapeutic oesophago-gastro-duodenoscopy (OGD) with dilatation,Minor,No -Head and Neck,ENDOSCOPY AND WASHING,Panendoscopy +/- incisional biopsy,Intermediate,No -Urology,ENDOSCOPY OF ILEAL CONDUIT,Diagnostic ureterorenoscopy (+/- cystoscopy),Minor,No -Urology,ENDOSCOPY OF ILEAL CONDUIT - CONDUITOSCOPY,Diagnostic ureterorenoscopy (+/- cystoscopy),Minor,No -,ENDOSCOPY OF ILEAL CONDUIT - CONDUITOSCOPY,Diagnostic ureterorenoscopy (+/- cystoscopy),Minor,No -Head and Neck,ENDOSCOPY OF PHARYNX,Panendoscopy +/- incisional biopsy,Intermediate,No -ENT,"ENDOSCOPY OF PHARYNX, TRACHEA AND OESOPHAGUS","Therapeutic Panendoscopy +/- excision biopsy, excision or destruction of lesions",Intermediate,No -Vascular Surgery,ENDOVASCULAR LASER ABLATION OF VARICOSE VEIN OF LEG,Endovenous mechanochemical ablation for varicose veins - unilateral,Intermediate,No -Vascular Surgery,ENDOVENOUS RADIOFREQUENCY OBLITERATION OF VARICOSE VEIN OF LOWER LIMB,Radiofrequency ablation of more than one venous trunk +/- phlebectomies - unilateral,Intermediate,No -Head and Neck,ENUCLEATION OF CYST OF SKIN,"Excision of lesion of skin or subcutaneous tissue - up to three, Head & Neck (excluding lipoma)",Minor,No -Head and Neck,ENUCLEATION OF DENTAL CYST OF JAW,Enucleation of cyst of jaw,Intermediate,No -Maxillo-Facial Surgery,ENUCLEATION OF DENTAL CYST OF JAW,Enucleation of cyst of jaw,Intermediate,No -Head and Neck,ENUCLEATION OF DENTAL CYST OF UPPER JAW,Enucleation of cyst of jaw,Intermediate,No -Oral Surgery,ENUCLEATION OF LESION OF MANDIBLE,Excision of lesion of jaw,Intermediate,No -Head and Neck,ENUCLEATION OF LESION OF MANDIBLE,Excision of lesion of jaw,Intermediate,No -Head and Neck,ENUCLEATION OF LESION OF MAXILLA,Excision of lesion of jaw,Intermediate,No -Urology,EPIDIDYMECTOMY,Unilateral epididymectomy,Minor,No -Urology,EPIDIDYMIS RECONSTRUCTION,Excision of epididymal cyst,Intermediate,No -Bariatrics,EPIGASTRIC HERNIOPLASTY,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Colorectal Surgery,EPIPLOECTOMY,Wedge excision or removal of omentum (as sole procedure),Major,No -Head and Neck,ETHMOIDECTOMY AND TURBINECTOMY,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -ENT,EUSTACHIAN TUBOPLASTY,Balloon dilatation of the eustachian tube,Intermediate,No -Thoracic Surgery,EVACUATION OF HAEMATOMA,Drainage of large subcutaneous abscess/haematoma,Minor,No -Urology,EVACUATION OF HAEMATOMA,Drainage of large subcutaneous abscess/haematoma,Minor,No -,EVACUATION OF HAEMATOMA,Drainage of large subcutaneous abscess/haematoma,Minor,No -Gynaecology,EVACUATION OF RETAINED PRODUCT OF CONCEPTION,Hysteroscopic Removal Of Retained Products Of Conception,Major,No -,EVACUATION OF RETAINED PRODUCT OF CONCEPTION,Hysteroscopic Removal Of Retained Products Of Conception,Major,No -ENT,EXAMINATION OF PHARYNX UNDER ANAESTHETIC,-,Minor,No -Head and Neck,EXAMINATION OF PHARYNX UNDER ANAESTHETIC,-,Minor,No -Urology,EXAMINATION UNDER ANAESTHESIA,-,Minor,No -ENT,EXAMINATION UNDER ANAESTHETIC OF POSTNASAL SPACE,-,Minor,No -,EXAMINATION UNDER GENERAL ANAESTHESIA (EUA),-,Minor,No -Colorectal Surgery,EXAMINATION UNDER GENERAL ANAESTHESIA (EUA),-,Minor,No -Urology,EXAMINATION UNDER GENERAL ANAESTHESIA (EUA),-,Minor,No -Head and Neck,EXAMINATION UNDER GENERAL ANAESTHESIA (EUA),-,Minor,No -Gynaecology,EXAMINATION UNDER GENERAL ANAESTHESIA (EUA),-,Minor,No -General Surgery,EXAMINATION UNDER GENERAL ANAESTHESIA (EUA),-,Minor,No -Paediatric Urology,EXAMINATION UNDER GENERAL ANAESTHESIA (EUA),-,Minor,No -ENT,EXAMINATION UNDER GENERAL ANAESTHESIA (EUA),-,Minor,No -Paediatric Surgery,EXAMINATION UNDER GENERAL ANAESTHESIA (EUA),-,Minor,No -Orthopaedics,EXAMINATION UNDER GENERAL ANAESTHESIA (EUA),-,Minor,No -Gynaecology Oncology,EXAMINATION UNDER GENERAL ANAESTHESIA (EUA),-,Minor,No -Maxillo-Facial Surgery,EXAMINATION UNDER GENERAL ANAESTHESIA (EUA),-,Minor,No -Emergency Surgery,EXAMINATION UNDER GENERAL ANAESTHESIA (EUA),-,Minor,No -Orthopaedics,EXCHANGE OF BEARING COMPONENT OF ARTHROPLASTY,Revision of total replacement of knee joint,Complex,No -Gynaecology,EXCISION,-,Unknown,No -Urology,EXCISION,-,Unknown,No -Head and Neck,EXCISION,-,Unknown,No -Orthopaedics,EXCISION ARTHROPLASTY,Excision reconstruction of large joint,Major,No -Orthopaedics,EXCISION ARTHROPLASTY OF THE RADIAL HEAD,Excision of radial head (as sole procedure),Major,No -Head and Neck,EXCISION BIOPSY OF LESION OF PALATE,FIBRE OPTIC EXAMINATION OF THE PHARYNX +/- BIOPSY/REMOVAL OF FOREIGN BODY,Minor,No -Gynaecology,EXCISION BIOPSY OF SKIN LESION,"Excision of lesion of skin or subcutaneous tissue - up to three, Trunk & Limbs (excluding lipoma)",Minor,No -Urology,EXCISION BIOPSY OF SKIN LESION,"Excision of lesion of skin or subcutaneous tissue - up to three, Trunk & Limbs (excluding lipoma)",Minor,No -Bariatrics,EXCISION BIOPSY OF SKIN LESION,"Excision of lesion of skin or subcutaneous tissue - up to three, Trunk & Limbs (excluding lipoma)",Minor,No -Gynaecology,EXCISION BIOPSY OF VULVAL LESION,Biopsy of lesion of vulva,Minor,No -Colorectal Surgery,EXCISION FROM RETROPERITONEUM,"Excision of retroperitoneal tumour, +/-ureterolysis",Xmajor,Yes -Colorectal Surgery,EXCISION OF ANAL POLYP,Excision of lesion of anus,Minor,No -General Surgery,EXCISION OF ANAL SKIN TAG,Perianal excision of lesion of rectum (including sigmoidoscopy),Intermediate,No -Colorectal Surgery,EXCISION OF ANAL SKIN TAG,Perianal excision of lesion of rectum (including sigmoidoscopy),Intermediate,No -Head and Neck,"EXCISION OF AURAL GLOMUS TUMOUR, EXTENDED, EXTRATEMPORAL",Middle ear tumour excision,Major,No -Paediatric ENT,"EXCISION OF AURAL GLOMUS TUMOUR, TRANSCANAL",Middle ear tumour excision,Major,No -ENT,"EXCISION OF AURAL GLOMUS TUMOUR, TRANSCANAL",Middle ear tumour excision,Major,No -ENT,"EXCISION OF AURAL GLOMUS TUMOUR, TRANSMASTOID",Simple mastoidectomy,Major,No -ENT,EXCISION OF AURAL POLYP,Excision of lesion of external auditory canal,Minor,No -Breast Surgery,EXCISION OF AXILLARY LYMPH NODES,Sentinel node mapping +/- sampling with magnetic lymphatic tracer for breast cancer.,Intermediate,No -Urology,EXCISION OF BARTHOLIN'S GLAND,Excision of Bartholin gland,Intermediate,No -Head and Neck,EXCISION OF BASAL CELL CARCINOMA,Primary excision of malignant lesion - head and neck,Intermediate,No -Head and Neck,EXCISION OF BENIGN NEOPLASM,-,Major,No -Head and Neck,EXCISION OF BENIGN SALIVARY NEOPLASM,Excision of sublingual gland,Intermediate,No -Breast Surgery,EXCISION OF BENIGN TUMOUR OF BREAST,Excision of breast lump/fibroadenoma,Intermediate,No -Orthopaedics,EXCISION OF BONE FRAGMENTS OF JOINT,Therapeutic arthroscopic operation on cavity of joint (not otherwise specified) (as sole procedure),Major,No -Head and Neck,EXCISION OF BRANCHIAL CYST,Operations on branchial cyst,Intermediate,No -,EXCISION OF BUCCAL MUCOSA,Removal of excess mucosa from mouth,Intermediate,No -Maxillo-Facial Surgery,EXCISION OF BUCCAL MUCOSA,Removal of excess mucosa from mouth,Intermediate,No -Thoracic Surgery,EXCISION OF BULLA OF LUNG,Thoracotomy bullectomy - unilateral +/- pleurodesis in presence of emphysema,Xmajor,Yes -Orthopaedics,EXCISION OF BUNIONETTE,Excision of medial eminence 1st or 5th MT head with soft tissue repair (bunionectomy),Intermediate,No -Head and Neck,EXCISION OF CERVICAL LYMPH NODE,Radical dissection of cervical lymph nodes,Minor,Yes -,EXCISION OF CERVICAL LYMPH NODE,Biopsy/sampling of cervical lymph nodes,Minor,No -Head and Neck,EXCISION OF CYST,Enucleation of cyst of jaw,Intermediate,No -Thoracic Surgery,EXCISION OF CYST,-,Minor,No -Gynaecology,EXCISION OF CYST,Ovarian cystectomy +/- omental biopsy (as sole procedure and including bilateral),Minor,No -Gynaecology Oncology,EXCISION OF CYST,Ovarian cystectomy +/- omental biopsy (as sole procedure and including bilateral),Major,No -Oral Surgery,EXCISION OF CYST,Enucleation of cyst of jaw,Intermediate,No -Urology,EXCISION OF CYST,Marsupialisation of Bartholin cyst,Intermediate,No -General Surgery,EXCISION OF CYST,"Excision of lesion of skin or subcutaneous tissue - up to three, Trunk & Limbs (excluding lipoma)",Minor,No -Urology,EXCISION OF CYST OF EPIDIDYMIS,Excision of epididymal cyst,Intermediate,No -ENT,EXCISION OF CYST OF EPIGLOTTIS,"Microlaryngoscopy/laryngoscopy +/- biopsy, excision of lesion, polyp or cyst",Intermediate,No -Gynaecology,EXCISION OF CYST OF OVARY,Ovarian cystectomy +/- omental biopsy (as sole procedure and including bilateral),Major,No -Gynaecology Oncology,EXCISION OF CYST OF OVARY,Ovarian cystectomy +/- omental biopsy (as sole procedure and including bilateral),Major,No -Thoracic Surgery,EXCISION OF CYST OF PERICARDIUM,Open excision of mediastinal tumour including congenital cysts/posterior chest wall lesions,Xmajor,Yes -General Surgery,EXCISION OF CYST OF THYROID,Partial thyroidectomy (not elsewhere classified),Major,No -Head and Neck,EXCISION OF DENTIGEROUS CYST OF MAXILLA,Excision of lesion of jaw,Intermediate,No -Orthopaedics,EXCISION OF DISTAL CLAVICLE,"Excision distal clavicle, as sole procedure",Major,No -Urology,EXCISION OF ENTIRE RIGHT TESTIS BY INGUINAL APPROACH,Laparoscopic orchidectomy,Intermediate,No -Orthopaedics,EXCISION OF EXOSTOSIS OF BONE,Partial excision of bone (including exostoses) Intermediate,Intermediate,No -General Surgery,EXCISION OF EXTRAADRENAL PARAGANGLIOMA,-,Unknown,No -Urology,EXCISION OF FEMALE URETHRAL DIVERTICULUM,"Simple urethroplasty, eg primary repair, segment, anterior urethra (including cystoscopy)",Major,No -Head and Neck,EXCISION OF GLOMUS TUMOUR IN THE NECK,Radical dissection of cervical lymph nodes,Complex,Yes -Gynaecology,EXCISION OF GONAD FROM INGUINAL CANAL,Orchidectomy and excision of spermatic cord (+/- insertion of prosthesis),Intermediate,No -Gynaecology,EXCISION OF GROUP OF LYMPH NODES,Block dissection of pelvic lymph nodes (as sole procedure),Major,No -Gynaecology Oncology,EXCISION OF GROUP OF LYMPH NODES,Block dissection of pelvic lymph nodes (as sole procedure),Major,No -Orthopaedics,EXCISION OF HETEROTOPIC BONE FROM MUSCLE,Excision of ectopic bone,Minor,No -Orthopaedics,EXCISION OF HETEROTOPIC BONE FROM MUSCLE OF HAND,Excision of ectopic bone,Minor,No -Gynaecology,EXCISION OF INGUINAL LYMPH NODES,Block dissection of pelvic lymph nodes (as sole procedure),Major,No -Urology,EXCISION OF INGUINAL LYMPH NODES,Block dissection of pelvic lymph nodes (as sole procedure),Major,No -Urology,EXCISION OF INGUINAL LYMPH NODES GROUP,Block dissection of pelvic lymph nodes (as sole procedure),Major,No -Head and Neck,EXCISION OF INTRAMUSCULAR LIPOMA,"Excision of lesion of skin or subcutaneous tissue - up to three, Head & Neck (excluding lipoma)",Minor,No -Thoracic Surgery,EXCISION OF KELOID,"Excision of lesion of skin or subcutaneous tissue - up to three, Trunk & Limbs (excluding lipoma)",Minor,No -General Surgery,EXCISION OF LEFT ADRENAL GLAND,Adrenalectomy - unilateral (open),Major,No -Head and Neck,EXCISION OF LEFT LOBE OF THYROID GLAND,Total thyroid lobectomy and isthmectomy,Major,No -General Surgery,EXCISION OF LEFT LOBE OF THYROID GLAND,Total thyroid lobectomy and isthmectomy,Major,No -,EXCISION OF LEFT LOBE OF THYROID GLAND,Total thyroid lobectomy and isthmectomy,Major,No -Gynaecology,EXCISION OF LEFT SIDE OF VULVA,Simple vulvectomy,Major,No -Head and Neck,EXCISION OF LEFT SUBMANDIBULAR GLAND,Excision of submandibular gland,Intermediate,No -Head and Neck,EXCISION OF LESION FROM FLOOR OF MOUTH,"Therapeutic Panendoscopy +/- excision biopsy, excision or destruction of lesions",Intermediate,No -Head and Neck,EXCISION OF LESION FROM SOFT TISSUE OF FACE,Primary excision of malignant lesion - head and neck,Intermediate,No -Colorectal Surgery,EXCISION OF LESION OF ABDOMINAL WALL,"Excision of lesion of skin or subcutaneous tissue - up to three, Trunk & Limbs (excluding lipoma)",Minor,No -Gynaecology,EXCISION OF LESION OF ABDOMINAL WALL,"Excision of lesion of skin or subcutaneous tissue - up to three, Trunk & Limbs (excluding lipoma)",Minor,No -Orthopaedics,EXCISION OF LESION OF ANKLE JOINT,Therapeutic arthroscopic operation on cavity of joint (not otherwise specified) (as sole procedure),Major,No -Urology,EXCISION OF LESION OF ANTERIOR ABDOMINAL WALL,Removal of benign lesion in muscle or deeper tissue (excluding lipoma),Intermediate,No -Gynaecology,EXCISION OF LESION OF ANTERIOR ABDOMINAL WALL,Removal of benign lesion in muscle or deeper tissue (excluding lipoma),Intermediate,No -General Surgery,EXCISION OF LESION OF ANTERIOR ABDOMINAL WALL,Removal of benign lesion in muscle or deeper tissue (excluding lipoma),Intermediate,No -General Surgery,EXCISION OF LESION OF ANTERIOR ABDOMINAL WALL AND INSERT OF PROSTHETIC MATERIAL INTO ANTERIOR ABDOMINAL WALL,Open repair of incisional hernia requiring mesh,Intermediate,No -Colorectal Surgery,EXCISION OF LESION OF ANUS,Excision of lesion of anus,Minor,No -ENT,EXCISION OF LESION OF AURICLE OF EAR,Excision accessory auricle/preauricular appendage,Minor,No -Breast Surgery,EXCISION OF LESION OF BREAST,Excision of breast lump/fibroadenoma,Intermediate,No -ENT,EXCISION OF LESION OF BUCCAL MUCOSA,"Therapeutic Panendoscopy +/- excision biopsy, excision or destruction of lesions",Intermediate,No -Orthopaedics,EXCISION OF LESION OF BURSA,Excision of bursa,Intermediate,No -Head and Neck,EXCISION OF LESION OF CHEEK,"Excision of lesion of skin or subcutaneous tissue - up to three, Head & Neck (excluding lipoma)",Minor,No -Thoracic Surgery,EXCISION OF LESION OF CHEST WALL,Excision of chest wall tumour - without chest wall reconstruction,Xmajor,Yes -Urology,EXCISION OF LESION OF EPIDIDYMIS,Excision of epididymal cyst,Intermediate,No -,EXCISION OF LESION OF EXTERNAL EAR,Excision of lesion of pinna,Intermediate,No -Maxillo-Facial Surgery,EXCISION OF LESION OF GINGIVA,Removal of excess mucosa from mouth,Intermediate,No -Urology,EXCISION OF LESION OF INGUINAL REGION,Sentinel lymph node biopsy for melanoma,Intermediate,No -Head and Neck,EXCISION OF LESION OF LARYNX USING LASER,Laser surgery to vocal cord (including microlaryngoscopy),Intermediate,No -Thoracic Surgery,EXCISION OF LESION OF LUNG,Open excision of lesion of lung,Complex,Yes -Head and Neck,EXCISION OF LESION OF MANDIBLE,Excision of lesion of jaw,Intermediate,No -Head and Neck,EXCISION OF LESION OF MAXILLA,Partial maxillectomy for malignancy,Xmajor,No -Thoracic Surgery,EXCISION OF LESION OF MEDIASTINUM,Open resection of invasive mediastinal tumour,Complex,Yes -ENT,EXCISION OF LESION OF MIDDLE EAR,Middle ear polypectomy,Minor,No -Head and Neck,EXCISION OF LESION OF MOUTH,Excision/destruction of lesion of mouth,Minor,No -Head and Neck,EXCISION OF LESION OF NASAL SINUS,"Therapeutic Panendoscopy +/- excision biopsy, excision or destruction of lesions",Intermediate,No -ENT,EXCISION OF LESION OF NASAL SINUS,"Therapeutic Panendoscopy +/- excision biopsy, excision or destruction of lesions",Intermediate,No -Head and Neck,EXCISION OF LESION OF NOSE,Excision of lesion of internal nose,Minor,No -Gynaecology,EXCISION OF LESION OF OMENTUM,Wedge excision or removal of omentum (as sole procedure),Major,No -Head and Neck,EXCISION OF LESION OF ORAL CAVITY,Excision/destruction of lesion of mouth,Minor,No -Head and Neck,EXCISION OF LESION OF OROPHARYNX,Excision/destruction of lesion of mouth,Minor,No -Head and Neck,EXCISION OF LESION OF PALATE,"Therapeutic Panendoscopy +/- excision biopsy, excision or destruction of lesions",Intermediate,No -Head and Neck,EXCISION OF LESION OF PAROTID GLAND,Excision of parotid gland (other than F4410/F4430),Major,No -Gynaecology,EXCISION OF LESION OF PELVIC WALL,Removal of benign lesion in muscle or deeper tissue (excluding lipoma),Intermediate,No -Urology,EXCISION OF LESION OF PERIPROSTATIC TISSUE,Open excision of prostatatic adenoma,Major,No -Urology,EXCISION OF LESION OF SCROTUM,Exploration of testis (including biopsy),Intermediate,No -Head and Neck,EXCISION OF LESION OF SKIN,"Excision of lesion of skin or subcutaneous tissue - up to three, Head & Neck (excluding lipoma)",Minor,No -Breast Surgery,EXCISION OF LESION OF SKIN OF BREAST,Excision of breast lump/fibroadenoma,Intermediate,No -Gynaecology,EXCISION OF LESION OF SKIN OF GROIN REGION,"Excision of lesion of skin or subcutaneous tissue - up to three, Trunk & Limbs (excluding lipoma)",Minor,No -General Surgery,EXCISION OF LESION OF SKIN OF GROIN REGION,"Excision of lesion of skin or subcutaneous tissue - up to three, Trunk & Limbs (excluding lipoma)",Minor,No -Head and Neck,EXCISION OF LESION OF SKIN OF HEAD,"Excision of lesion of skin or subcutaneous tissue - up to three, Head & Neck (excluding lipoma)",Minor,No -Head and Neck,EXCISION OF LESION OF SKIN OF NECK,"Excision of lesion of skin or subcutaneous tissue - up to three, Head & Neck (excluding lipoma)",Minor,No -Head and Neck,EXCISION OF LESION OF SOFT PALATE,Excision/destruction of lesion of palate,Intermediate,No -Urology,EXCISION OF LESION OF SOFT TISSUE,"Excision of lesion of skin or subcutaneous tissue - up to three, Trunk & Limbs (excluding lipoma)",Minor,No -Orthopaedics,EXCISION OF LESION OF SOFT TISSUE,"Excision of lesion of skin or subcutaneous tissue - up to three, Trunk & Limbs (excluding lipoma)",Minor,No -ENT,EXCISION OF LESION OF SOFT TISSUE,"Excision of lesion of skin or subcutaneous tissue - up to three, Head & Neck (excluding lipoma)",Minor,No -Urology,EXCISION OF LESION OF TESTIS,Excision of lesion of testis,Intermediate,No -Thoracic Surgery,EXCISION OF LESION OF THYMUS,Thymectomy for myasthenia gravis/thymoma,Major,Yes -General Surgery,EXCISION OF LESION OF THYROID,Partial thyroidectomy (not elsewhere classified),Major,No -Head and Neck,EXCISION OF LESION OF TONGUE,Excision/destruction of lesion of tongue,Intermediate,No -,EXCISION OF LESION OF TONGUE,Excision/destruction of lesion of tongue,Intermediate,No -Urology,EXCISION OF LESION OF URETHRA,"Simple urethroplasty, eg primary repair, segment, anterior urethra (including cystoscopy)",Major,No -Gynaecology,EXCISION OF LESION OF VAGINA,Excision of lesion of vagina (e.g. warts and cysts),Intermediate,No -Urology,EXCISION OF LESION OF VAGINA,Excision of lesion of vagina (e.g. warts and cysts),Intermediate,No -Head and Neck,EXCISION OF LESION OF VAGUS NERVE (X),Excision of lesion of major nerve,Intermediate,No -Urology,EXCISION OF LESION ON PENIS,Excision of lesion of penis,Intermediate,No -Head and Neck,EXCISION OF LIPOMA,"Excision of lesion of skin or subcutaneous tissue - up to three, Head & Neck (excluding lipoma)",Minor,No -Colorectal Surgery,EXCISION OF LIPOMA,"Excision of lesion of skin or subcutaneous tissue - up to three, Trunk & Limbs (excluding lipoma)",Minor,No -General Surgery,EXCISION OF LIPOMA,"Excision of lesion of skin or subcutaneous tissue - up to three, Trunk & Limbs (excluding lipoma)",Minor,No -General Surgery,EXCISION OF LIPOMA OF BACK,"Excision of lesion of skin or subcutaneous tissue - up to three, Trunk & Limbs (excluding lipoma)",Minor,No -Colorectal Surgery,EXCISION OF LIPOMA OF BACK,"Excision of lesion of skin or subcutaneous tissue - up to three, Trunk & Limbs (excluding lipoma)",Minor,No -,EXCISION OF LIPOMA OF SHOULDER,"Excision of lesion of skin or subcutaneous tissue - up to three, Trunk & Limbs (excluding lipoma)",Minor,No -Head and Neck,EXCISION OF LIPOMA OF SUBCUTANEOUS TISSUE,"Excision of lesion of skin or subcutaneous tissue - up to three, Head & Neck (excluding lipoma)",Minor,No -Head and Neck,EXCISION OF LIPOMA OF SUBCUTANEOUS TISSUE OF NECK,"Excision of lesion of skin or subcutaneous tissue - up to three, Head & Neck (excluding lipoma)",Minor,No -Thoracic Surgery,EXCISION OF LUNG OR BRONCHUS,Pneumonectomy,Complex,Yes -Gynaecology,EXCISION OF LYMPH NODE,Block dissection of pelvic lymph nodes (as sole procedure),Major,No -Head and Neck,EXCISION OF LYMPH NODE,Biopsy/sampling of cervical lymph nodes,Minor,No -Urology,EXCISION OF LYMPH NODE,Block dissection of pelvic lymph nodes (as sole procedure),Major,No -Urology,EXCISION OF LYMPHOEDEMATOUS TISSUE OF SCROTUM,Excision of lesion of testis,Intermediate,No -Urology,EXCISION OF LYMPHOEDEMATOUS TISSUE PLUS FULL THICKNESS SKIN GRAFT,"Split autograft of skin, trunk and limbs – up to 25cm2 in area",Intermediate,No -Head and Neck,EXCISION OF MAJOR SALIVARY GLAND,Excision of sublingual gland,Intermediate,No -Head and Neck,EXCISION OF MALIGNANT LESION OF SCALP AND NECK,Primary excision of malignant lesion - head and neck,Intermediate,No -Head and Neck,EXCISION OF MALIGNANT NEOPLASM OF MANDIBLE,Extensive segmental excision of mandible,Xmajor,No -Head and Neck,EXCISION OF MALIGNANT SKIN TUMOUR,Primary excision of malignant lesion - head and neck,Intermediate,No -Breast Surgery,EXCISION OF MALIGNANT TUMOUR OF BREAST,Wide local excision of breast +/- local mobilisation of glandular breast tissue to fill surgical cavity,Intermediate,No -Head and Neck,EXCISION OF MANDIBLE,Excision of mandible,Major,No -Head and Neck,EXCISION OF MASS OF NECK,Radical dissection of cervical lymph nodes,Complex,Yes -General Surgery,EXCISION OF MECKEL'S DIVERTICULUM,Open resectionof small intestine tumour,Major,No -Head and Neck,EXCISION OF MEDIAL PART OF MAXILLA AND NASAL TURBINATE,Partial maxillectomy for malignancy,Xmajor,No -,EXCISION OF MEDIAL PART OF MAXILLA AND NASAL TURBINATE,Partial maxillectomy for malignancy,Xmajor,No -Thoracic Surgery,EXCISION OF MEDIASTINAL TUMOUR,Open resection of invasive mediastinal tumour,Complex,Yes -Head and Neck,EXCISION OF MELANOMA,Primary excision of malignant lesion - head and neck,Intermediate,No -Orthopaedics,EXCISION OF MENISCUS OF ACROMIOCLAVICULAR JOINT,Therapeutic arthroscopy operation on cavity of joint (not otherwise specified) (as sole procedure),Major,No -Orthopaedics,EXCISION OF MENISCUS OF STERNOCLAVICULAR JOINT,Arthroscopic meniscectomy (including debridement),Major,No -Orthopaedics,EXCISION OF MORTON'S NEUROMA OF PERIPHERAL NERVE,Excision of lesion of peripheral nerve (eg neurilemoma),Intermediate,No -ENT,EXCISION OF NASAL DERMOID,Excision of lesion of internal nose,Minor,No -Head and Neck,EXCISION OF NECK LUMP,Radical dissection of cervical lymph nodes,Complex,Yes -Head and Neck,EXCISION OF NEOPLASM OF SOFT TISSUE OF FACE,Primary excision of malignant lesion - head and neck,Intermediate,No -Orthopaedics,EXCISION OF OLECRANON BURSA,Excision of bursa,Intermediate,No -Orthopaedics,EXCISION OF OSTEOPHYTE,Partial excision of bone (including exostoses),Intermediate,No -Orthopaedics,EXCISION OF OVERGROWTH OF BONE,Partial excision of bone (including exostoses) ,Intermediate,No -Head and Neck,EXCISION OF PAPILLOMA,"Excision of lesion of skin or subcutaneous tissue - up to three, Head & Neck (excluding lipoma)",Minor,No -Head and Neck,EXCISION OF PARAPHARYNGEAL MASS,Removal of lesion of para-pharyngeal space,Major,No -Breast Surgery,EXCISION OF PART OF LEFT BREAST,Wide local excision of breast +/- local mobilisation of glandular breast tissue to fill surgical cavity,Intermediate,No -Breast Surgery,EXCISION OF PART OF RIGHT BREAST,Wide local excision of breast +/- local mobilisation of glandular breast tissue to fill surgical cavity,Intermediate,No -Urology,EXCISION OF PELVIC LYMPH NODE,"Excision biopsy of lymph node for diagnosis (cervical, inguinal, axillary)",Intermediate,No -Gynaecology,EXCISION OF PELVIC LYMPH NODE,"Excision biopsy of lymph node for diagnosis (cervical, inguinal, axillary)",Intermediate,No -General Surgery,EXCISION OF PERIANAL LESION,Perianal excision of lesion of rectum (including sigmoidoscopy),Intermediate,No -Orthopaedics,EXCISION OF PERIPHERAL NEUROMA,Excision of lesion of peripheral nerve (eg neurilemoma),Intermediate,No -Urology,EXCISION OF PEYRONIE'S DISEASE PENILE PLAQUE,Operation for Peyronie's disease (eg Nesbitt's),Intermediate,No -ENT,EXCISION OF PHARYNGEAL POUCH,Open operation(s) on pharyngeal pouch,Major,No -Colorectal Surgery,EXCISION OF PILONIDAL SINUS,Excision of pilonidal sinus and suture/skin graft,Intermediate,No -Colorectal Surgery,EXCISION OF PILONIDAL SINUS AND CLOSURE WITH SKIN FLAP,Excision of pilonidal sinus and suture/skin graft,Intermediate,No -,EXCISION OF PILONIDAL SINUS AND CLOSURE WITH SKIN FLAP,Excision of pilonidal sinus and suture/skin graft,Intermediate,No -General Surgery,EXCISION OF PRESACRAL LESION,Excision of presacral tumour,Intermediate,No -Gynaecology,EXCISION OF PRESACRAL TUMOUR,Posterior exenteration of pelvis,Complex,Yes -Head and Neck,EXCISION OF RANULA OF SUBLINGUAL GLAND,Excision of sublingual gland,Intermediate,No -Colorectal Surgery,EXCISION OF RECTAL MUCOSA,Perianal excision of lesion of rectum (including sigmoidoscopy),Intermediate,No -Head and Neck,EXCISION OF RECURRENT THYROGLOSSAL DUCT CYST,Excision of thyroglossal cyst/tract,Intermediate,No -Thoracic Surgery,EXCISION OF REGIONAL LYMPH NODES,Block dissection of axillary lymph nodes (axillary clearance levels 1-3),Major,Yes -Thoracic Surgery,EXCISION OF RIB,Resection of rib and open drainage of pleural cavity,Major,Yes -General Surgery,EXCISION OF RIGHT ADRENAL GLAND,Adrenalectomy - unilateral (open),Major,No -Head and Neck,EXCISION OF RIGHT HALF OF TONGUE,Partial glossectomy for malignancy,Major,No -Head and Neck,EXCISION OF RIGHT LOBE OF THYROID GLAND,Total thyroid lobectomy and isthmectomy,Major,No -General Surgery,EXCISION OF RIGHT LOBE OF THYROID GLAND,Total thyroid lobectomy and isthmectomy,Major,No -Gynaecology,EXCISION OF RIGHT SIDE OF VULVA,Simple vulvectomy,Major,No -Head and Neck,EXCISION OF RIGHT SUBMANDIBULAR GLAND,Excision of submandibular gland,Intermediate,No -Urology,EXCISION OF RIGHT TESTIS,Laparoscopic orchidectomy,Intermediate,No -Gynaecology,EXCISION OF RUDIMENTARY UTERINE HORN,Therapeutic hysteroscopic operations on uterus (including endometrial ablation excluding microwave or radiofrequency ablation) +/- Mirena coil insertion,Major,No -Gynaecology,EXCISION OF SACRAL PRESSURE ULCER WITH PRIMARY SUTURE,Excision of pressure sore excluding repair,Intermediate,No -Urology,EXCISION OF SCAR,Scar revision up to 5cm - trunk & limbs,Minor,No -Thoracic Surgery,EXCISION OF SCAR,Scar revision up to 5cm - trunk & limbs,Minor,No -Colorectal Surgery,EXCISION OF SEBACEOUS CYST,"Excision of lesion of skin or subcutaneous tissue - up to three, Trunk & Limbs (excluding lipoma)",Minor,No -Orthopaedics,EXCISION OF SEBACEOUS CYST,"Excision of lesion of skin or subcutaneous tissue - up to three, Trunk & Limbs (excluding lipoma)",Minor,No -Head and Neck,EXCISION OF SEBACEOUS CYST,"Excision of lesion of skin or subcutaneous tissue - up to three, Head & Neck (excluding lipoma)",Minor,No -Thoracic Surgery,EXCISION OF SEGMENT OF LEFT LOWER LOBE,Pulmonary lobectomy including segmental resection,Complex,Yes -Thoracic Surgery,EXCISION OF SEGMENT OF LEFT UPPER LOBE,Pulmonary lobectomy including segmental resection,Complex,Yes -Thoracic Surgery,EXCISION OF SEGMENT OF LUNG,Pulmonary lobectomy including segmental resection,Complex,Yes -Thoracic Surgery,EXCISION OF SEGMENT OF RIGHT LOWER LOBE,Pulmonary lobectomy including segmental resection,Complex,Yes -Thoracic Surgery,EXCISION OF SEGMENT OF RIGHT UPPER LOBE,Pulmonary lobectomy including segmental resection,Complex,Yes -,EXCISION OF SEGMENT OF RIGHT UPPER LOBE,Pulmonary lobectomy including segmental resection,Complex,No -Urology,EXCISION OF SEGMENT OF URETER FOR URETERAL STRICTURE,Excision of segment of ureter,Major,No -Urology,EXCISION OF SENTINEL LYMPH NODE,"Excision biopsy of lymph node for diagnosis (cervical, inguinal, axillary)",Intermediate,No -Gynaecology,EXCISION OF SENTINEL LYMPH NODE,"Excision biopsy of lymph node for diagnosis (cervical, inguinal, axillary)",Intermediate,No -Urology,EXCISION OF SKENE'S GLAND,External meatotomy of urethral orifice,Minor,No -Urology,EXCISION OF SKIN,Primary excision of malignant lesion - trunk and limbs,Intermediate,No -Head and Neck,EXCISION OF SOFT TISSUE,Removal of excess mucosa from mouth,Intermediate,No -Urology,EXCISION OF SPERMATOCELE,Excision of epididymal cyst,Intermediate,No -Head and Neck,EXCISION OF SUBMANDIBULAR GLAND,Excision of submandibular gland,Intermediate,No -Thoracic Surgery,EXCISION OF THYMUS,Thymectomy for myasthenia gravis/thymoma,Major,Yes -General Surgery,EXCISION OF THYROGLOSSAL CYST,Excision of thyroglossal cyst/tract,Intermediate,No -Head and Neck,EXCISION OF TISSUE OF TONGUE,Excision/destruction of lesion of tongue,Intermediate,No -Head and Neck,"EXCISION OF TUMOUR OF SOFT TISSUE OF NECK, DEEP, SUBFASCIAL, INTRAMUSCULAR",Radical dissection of cervical lymph nodes,Complex,Yes -Urology,EXCISION OF URETHRAL CARUNCLE,Excision of urethral caruncle,Minor,No -Gynaecology,EXCISION OF UTERINE POLYP,Therapeutic hysteroscopic operations on uterus (including endometrial ablation excluding microwave or radiofrequency ablation) +/- Mirena coil insertion,Major,No -Head and Neck,EXCISION OF UVULA,Operations on uvula,Intermediate,No -Gynaecology,EXCISION OF VAGINAL CYST,Excision of lesion of vagina (e.g. warts and cysts),Intermediate,No -Gynaecology,EXCISION OF VAGINAL SEPTUM,Excision of septum of vagina,Intermediate,No -Orthopaedics,EXCISION OF VASCULAR HAEMATOMA,Drainage of lesion of skin (including abscess),Minor,No -Gynaecology,EXCISION OF VULVAL LESION,Excision of lesion of vulva,Minor,No -Head and Neck,EXCISIONAL BIOPSY,Panendoscopy +/- incisional biopsy,Intermediate,No -General Surgery,EXCISIONAL BIOPSY,Shave biopsy of lesion of skin,Minor,No -Breast Surgery,EXCISIONAL BIOPSY,Excision biopsy of breast lesion after localisation,Intermediate,No -Breast Surgery,EXCISIONAL BIOPSY OF BREAST,Core biopsy of lesion of breast,Minor,No -Breast Surgery,EXCISIONAL BIOPSY OF LESION OF BREAST WITH AXILLARY CONTENTS,Excision biopsy of breast lesion after localisation,Intermediate,No -Head and Neck,EXCISIONAL BIOPSY OF LESION OF TONGUE,Biopsy of lesion of mouth,Minor,No -Head and Neck,EXCISIONAL BIOPSY OF LYMPH NODE,Biopsy/sampling of cervical lymph nodes,Minor,No -Urology,EXCISIONAL BIOPSY OF SCROTUM,Biopsy of testis,Minor,No -Head and Neck,EXCISIONAL BIOPSY OF TONGUE,Excision/destruction of lesion of tongue,Intermediate,No -General Surgery,EXCISIONAL DEBRIDEMENT OF WOUND FOR INFECTION,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Head and Neck,"EXENTERATION OF ORBIT WITHOUT SKIN GRAFT, WITH TEMPORALIS MUSCLE TRANSPLANT",Exenteration of orbit,Major,No -Urology,EXPLANTATION OF ARTIFICIAL URINARY SPHINCTER,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -Orthopaedics,EXPLORATION OF JOINT STRUCTURES BY INCISION,"Arthrotomy of large joint, including removal of loose body from joint",Intermediate,No -General Surgery,EXPLORATION OF PARATHYROID WITH MEDIASTINAL EXPLORATION BY STERNAL SPLIT APPROACH,Mediastinal parathyroidectomy with sternotomy,Complex,No -Colorectal Surgery,EXPLORATION OF PELVIS BY LAPAROTOMY,Laparotomy for postoperative haemorrhage,Major,Yes -General Surgery,EXPLORATION OF PELVIS BY LAPAROTOMY,Laparotomy for postoperative haemorrhage,Major,Yes -Gynaecology,EXPLORATION USING LAPAROSCOPE,"Laparoscopy and therapeutic procedures (including laser, diathermy and destruction e.g. endometriosis, adhesiolysis, tubal and ovarian surgery, +/-ureterolysis)",Major,No -,EXPLORATORY LAPAROTOMY,Laparotomy for postoperative haemorrhage,Major,Yes -Colorectal Surgery,EXPLORATORY LAPAROTOMY,Laparotomy for postoperative haemorrhage,Major,Yes -Urology,EXPLORATORY LAPAROTOMY,Laparotomy for postoperative haemorrhage,Major,No -Colorectal Surgery,EXPLORATORY LAPAROTOMY WITH BIOPSY,Laparotomy for postoperative haemorrhage,Major,Yes -Thoracic Surgery,EXPLORATORY MEDIAN STERNOTOMY,-,Complex,Yes -Thoracic Surgery,EXPLORATORY THORACOTOMY,Exploratory thoracotomy,Major,Yes -,EXPLORATORY THORACOTOMY,Exploratory thoracotomy,Major,No -General Surgery,EXTENDED LEFT HEMICOLECTOMY,Excision of left hemicolon,Xmajor,No -Head and Neck,EXTENDED MAXILLECTOMY,Hemi-maxillectomy for malignancy,Xmajor,No -Colorectal Surgery,EXTENDED RIGHT HEMICOLECTOMY,Extended excision of right hemicolon,Xmajor,No -General Surgery,EXTENDED RIGHT HEMICOLECTOMY,Extended excision of right hemicolon,Xmajor,No -Colorectal Surgery,EXTENDED RIGHT HEMICOLECTOMY AND ANASTOMOSIS OF ILEUM TO COLON,Extended excision of right hemicolon,Xmajor,No -Gynaecology,EXTENSIVE DEBULKING OF NEOPLASM OF ABDOMINAL CAVITY,Total exenteration of pelvis,Complex,Yes -Thoracic Surgery,EXTERNAL FIXATION OF RIB,Resection of rib and open drainage of pleural cavity,Major,Yes -Head and Neck,EXTERNAL MAXILLARY ANTROSTOMY,"Image guided endoscopic frontal, sphenoid and/or ethmoid sinus surgery (FESS) and bilateral",Major,No -ENT,EXTERNAL RHINOPLASTY,Rhinoplasty following trauma or excision of tumour (including attention to turbinates),Major,No -,EXTRACTION OF PERMANENT TOOTH,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Oral Surgery,EXTRACTION OF PERMANENT TOOTH,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Head and Neck,FACELIFT AND TIGHTENING OF PLATYSMA,-,Unknown,No -,FACET JOINT INJECTIONS,Facet joint injection +/- image guidance (including bilateral) cervical,Intermediate,No -Gynaecology,FALLOPIAN TUBE EXCISION,Salpingectomy (including bilateral) (as sole procedure),Major,No -,FASCIOTOMY OF LOWER LEG,Fasciotomy of limb,Major,No -Orthopaedics,FASCIOTOMY OF LOWER LEG,Fasciotomy of limb,Major,No -Orthopaedics,FASCIOTOMY PERONEAL COMPARTMENT LEG,Fasciotomy of limb,Major,No -Upper Gastro-intestinal Surgery,FEEDING ENTEROSTOMY OF JEJUNUM,Open formation of jejunostomy,Major,No -Urology,FEMALE ARTIFICIAL URINARY SPHINCTER PROCEDURE,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -,FEMALE ARTIFICIAL URINARY SPHINCTER PROCEDURE,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -Vascular Surgery,FEMORAL ENDARTERECTOMY,Endarterectomy of femoral artery,Complex,No -Orthopaedics,FEMORAL OSTEOTOMY FOR CORRECTION OF CONGENITAL DEFORMITY OF HIP,Complex open reduction for congenital dislocation of hip (i.e. pelvic and femoral or Pemberton osteotomy or revision of open reduction),Complex,No -ENT,FESS - FUNCTIONAL ENDOSCOPIC SINUS SURGERY - POSTERIOR ETHMOIDECTOMY,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -,FESS - FUNCTIONAL ENDOSCOPIC SINUS SURGERY - POSTERIOR ETHMOIDECTOMY,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -ENT,FESS - FUNCTIONAL ENDOSCOPIC SINUS SURGERY - SPHENOETHMOIDECTOMY,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -Thoracic Surgery,FIBREOPTIC BRONCHOSCOPY,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Thoracic Surgery,FIBREOPTIC BRONCHOSCOPY WITH BIOPSY OF LUNG,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Urology,FINAL STAGE OF STAGED URETHROPLASTY,"Complex Urethroplasty, Eg Revision Surgery of the Anterior Urethra, Segment, Posterior Urethra, +/- Grafting (Including Cystoscopy)",Major,No -Orthopaedics,FINGER OPERATION,Fusion of digit joint(s) of hand with or without graft and with or without internal fixation,Intermediate,No -Head and Neck,FIT DENTAL CROWN TO IMPLANT,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Maxillo-Facial Surgery,FIT DENTAL CROWN TO IMPLANT,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Orthopaedics,FIXATION OF BONE FRAGMENT USING KIRSCHNER WIRE,"Closed reduction of fracture of small bone, including cast or percutaneous K-wires",Intermediate,No -Orthopaedics,FIXATION OF FRACTURE USING SCREWS,Primary open reduction of long bone with fixation,Major,No -,FIXATION OF HIP,Complex primary total hip replacement including bone grafting or femoral osteotomy,Xmajor,No -Urology,FIXATION OF LEFT TESTIS,Orchidopexy,Intermediate,No -Head and Neck,FIXATION OF MANDIBLE,Open reduction and fixation of fractured jaw,Intermediate,No -Orthopaedics,FIXATION OF TENDON,"Secondary repair of tendon (including graft, transfer and/or prosthesis) (not otherwise specified)",Major,No -Head and Neck,FLAP GRAFT,Local flap ? less than 9cm2,Yes,Yes -Bronchoscopy/Thoracoscopy,FLEXIBLE BRONCHOSCOPIC CRYO- LUNG BIOPSY,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Bronchoscopy/Thoracoscopy,FLEXIBLE BRONCHOSCOPIC CRYOEXTRACTION OF TUMOUR IN THE LOWER RESPIRATORY TRACT,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Bronchoscopy/Thoracoscopy,FLEXIBLE BRONCHOSCOPIC DESTRUCTION OF AIRWAY LESION WITH ELECTROCAUTERY,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Bronchoscopy/Thoracoscopy,FLEXIBLE BRONCHOSCOPIC DESTRUCTION OF AIRWAY LESION WITH LASER,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Urology,FLEXIBLE CHECK CYSTOSCOPY,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -,FLEXIBLE CHECK CYSTOSCOPY,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -Urology,FLEXIBLE CHECK CYSTOSCOPY AND BIOPSY OF BLADDER LESION,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -Urology,FLEXIBLE CYSTOSCOPY,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -,FLEXIBLE CYSTOSCOPY,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -Anaesthetics,FLEXIBLE CYSTOSCOPY,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -Urology,FLEXIBLE CYSTOSCOPY AND INTRAVESICAL BOTULINUM TOXIN INJECTION INTO DETRUSOR MUSCLE,Therapeutic injection into bladder wall (including cystoscopy),Minor,No -,FLEXIBLE CYSTOSCOPY AND INTRAVESICAL BOTULINUM TOXIN INJECTION INTO DETRUSOR MUSCLE,Therapeutic injection into bladder wall (including cystoscopy),Minor,No -Urology,FLEXIBLE DIAGNOSTIC CYSTOSCOPY,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -,FLEXIBLE DIAGNOSTIC CYSTOSCOPY,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -Bronchoscopy/Thoracoscopy,FLEXIBLE DIAGNOSTIC VIDEO BRONCHOSCOPY,Fibreoptic examination of trachea including biopsy/removal of foreign body,Minor,No -Colorectal Surgery,FLEXIBLE FIBREOPTIC SIGMOIDOSCOPY,"Diagnostic flexible sigmoidoscopy, including forceps biopsy and proctoscopy",Minor,No -Urology,FLEXIBLE URETEROSCOPY,Diagnostic ureterorenoscopy (+/- cystoscopy),Minor,No -Urology,FLEXIBLE URETEROSCOPY WITH BIOPSY OF URETER,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -Urology,FLUOROSCOPY GUIDED DILATATION OF URETER,Therapeutic ureterorenoscopy (+/- cystoscopy and insertion/removal of stent),Minor,No -Head and Neck,FLUOROSCOPY GUIDED REMOVAL OF STONE FROM SALIVARY GLAND,Manipulative removal of calculus from parotid duct,Intermediate,No -Urology,FLUOROSCOPY GUIDED RIGHT NEPHROSTOMY,Percutaneous insertion of nephrostomy tube,Intermediate,No -Urology,FREE GRAFT URETHROPLASTY,"Complex Urethroplasty, Eg Revision Surgery of the Anterior Urethra, Segment, Posterior Urethra, +/- Grafting (Including Cystoscopy)",Major,No -Urology,FRENULOPLASTY OF PENIS,Frenuloplasty of penis,Minor,No -ENT,FRONTAL SINUSOTOMY BY INTRANASAL APPROACH,Median drainage of frontal sinus (modified Lothrop procedure) and bilateral,Complex,No -Head and Neck,FROZEN SECTION MICROSCOPICALLY CONTROLLED EXCISION OF LESION OF SKIN OF HEAD OR NECK,Microscopically controlled excision of lesion of skin or subcutaneous tissue (Mohs micrographic surgery) with immediate reconstruction,Xmajor,No -Gynaecology,FROZEN SECTION MICROSCOPICALLY CONTROLLED EXCISION OF SKIN LESION,Microscopically controlled excision of lesion of skin or subcutaneous tissue (Mohs micrographic surgery) with immediate reconstruction,Xmajor,No -Urology,FULL THICKNESS SKIN GRAFT,"Full thickness graft, trunk and limbs – up to 9cm2 in area",Intermediate,No -,FUNCTIONAL ENDOSCOPIC NASAL SURGERY,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -ENT,FUNCTIONAL ENDOSCOPIC NASAL SURGERY,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -ENT,FUNCTIONAL ENDOSCOPIC SINUS SURGERY,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -Head and Neck,FUNCTIONAL ENDOSCOPIC SINUS SURGERY,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -ENT,FUNCTIONAL ENDOSCOPIC SINUS SURGERY - ANTERIOR ETHMOIDECTOMY AND FRONTAL RECESS DISSECTION,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -ENT,FUNCTIONAL ENDOSCOPIC SINUS SURGERY - ANTROSTOMY VIA INFERIOR MEATUS,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -ENT,FUNCTIONAL ENDOSCOPIC SINUS SURGERY - ANTROSTOMY VIA MIDDLE MEATUS,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -ENT,FUNCTIONAL ENDOSCOPIC SINUS SURGERY - DIAGNOSTIC ENDOSCOPY OF NOSE AND SINUS,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -,FUNCTIONAL ENDOSCOPIC SINUS SURGERY - DIAGNOSTIC ENDOSCOPY OF NOSE AND SINUS,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -Head and Neck,FUNCTIONAL ENDOSCOPIC SINUS SURGERY - DIAGNOSTIC ENDOSCOPY OF NOSE AND SINUS,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -ENT,FUNCTIONAL ENDOSCOPIC SINUS SURGERY - EXCISIONAL SURGERY TO MIDDLE TURBINATE,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -ENT,FUNCTIONAL ENDOSCOPIC SINUS SURGERY - POLYPECTOMY OF NASAL SINUS,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -Head and Neck,FUNCTIONAL ENDOSCOPIC SINUS SURGERY - POLYPECTOMY OF NASAL SINUS,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -ENT,"FUNCTIONAL ENDOSCOPIC SINUS SURGERY, LIMITED","FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -Head and Neck,"FUNCTIONAL ENDOSCOPIC SINUS SURGERY, LIMITED","FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -ENT,"FUNCTIONAL ENDOSCOPIC SINUS SURGERY, TOTAL","FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -Bariatrics,FUNDOPLICATION,Laparoscopic repair of hiatus hernia with anti-reflux procedure (eg fundoplication),Major,No -Orthopaedics,FUSION,Excision reconstruction of large joint,Major,No -Orthopaedics,FUSION OF FIRST METATARSOPHALANGEAL JOINT FOR HALLUX VALGUS REPAIR,"Metatarsal osteotomy (e.g. scarf) for Hallux valgus, +/- internal fixation and soft tissue correction",Major,No -Orthopaedics,FUSION OF HALLUX VALGUS,Fusion of interphalangeal joint(s) of toe (including internal fixation),Intermediate,No -Orthopaedics,FUSION OF JOINT WITH BONE GRAFT,Excision reconstruction of large joint,Major,No -Upper Gastro-intestinal Surgery,GASTRECTOMY,Total gastrectomy and excision of surrounding tissue,Complex,Yes -General Surgery,GASTRECTOMY,Total gastrectomy and excision of surrounding tissue,Complex,Yes -Upper Gastro-intestinal Surgery,GASTRECTOMY WITH JEJUNAL TRANSPOSITION,Total gastrectomy and excision of surrounding tissue,Complex,Yes -Bariatrics,GASTROPEXY,Gastropexy for reflux,Major,No -Bariatrics,GASTROSCOPY - DIRECT,Gastropexy for reflux,Major,No -Maxillo-Facial Surgery,GENIOPLASTY,Reconstruction of jaw (non-vascularised reconstruction),Xmajor,No -Orthopaedics,GLENOPLASTY OF SHOULDER,Primary stabilisation of multi-directional instability of shoulder joint +/- tendon repair,Major,No -Head and Neck,GLOSSECTOMY,Total glossectomy,Xmajor,No -Urology,GRAFT TO PENIS,Reconstruction of penis,Major,No -Orthopaedics,GRAFTING OF FAT,Microvascular free tissue transfer (as sole procedure including closure of secondary defect),Complex,No -Head and Neck,GRAFTING OF MEDIASTINAL FAT TO MYOCARDIUM,-,Complex,No -Orthopaedics,GRAFTING OF PELVIC BONE,Simple pelvic osteotomy and fixation eg Salter or Chiari osteotomies,Major,No -Urology,GRAFTING OF PENIS,Reconstruction of penis,Major,No -ENT,GRAFTING OF TEMPORALIS MUSCLE TO ORBIT,Free functioning muscle transfer (as sole procedure) including closure of secondary defect,Complex,No -Maxillo-Facial Surgery,GUMS/ALVEOLUS OPERATIONS,Alveolar bone graft - unilateral,Intermediate,No -Gynaecology,GYNAECOLOGICAL ENDOSCOPIC EXAMINATION,"Hysteroscopy (including biopsy, dilatation, curettage and resection of polyp(s) +/- Mirena coil insertion)",Intermediate,No -General Surgery,HAEMORRHOID OPERATION,Haemorrhoidectomy (including sigmoidoscopy),Intermediate,No -General Surgery,HAEMORRHOIDECTOMY,Haemorrhoidectomy (including sigmoidoscopy),Intermediate,No -Colorectal Surgery,HAEMORRHOIDECTOMY,Haemorrhoidectomy (including sigmoidoscopy),Intermediate,No -Colorectal Surgery,HAEMORRHOIDECTOMY BY SIMPLE LIGATURE,Haemorrhoidectomy (including sigmoidoscopy),Intermediate,No -,HAEMORRHOIDS - LIGATE/EXCISE,Haemorrhoidectomy (including sigmoidoscopy),Intermediate,No -Head and Neck,HAIR BEARING SKIN FLAP,Local flap ? less than 9cm2,Major,Yes -Orthopaedics,HALLUX VALGUS CORRECTION BY PHALANX OSTEOTOMY,Partial excision of bone (including exostoses),Intermediate,No -Orthopaedics,HAMMER TOE OPERATION,Fusion of interphalangeal joint(s) of toe (including internal fixation),Intermediate,No -Colorectal Surgery,"HARTMANN OPERATION, RECTAL RESECTION",Hartmann's procedure,Xmajor,No -General Surgery,"HARTMANN OPERATION, RECTAL RESECTION",Hartmann's procedure,Xmajor,No -Urology,"HARTMANN OPERATION, RECTAL RESECTION",Hartmann's procedure,Xmajor,No -Head and Neck,HARVEST OF COMPOSITE OF SKIN AND FAT,"Full thickness graft, head, neck, hands and genitalia ? up to 9cm2 in area",Major,No -Urology,HARVEST OF SPLIT SKIN FOR GRAFT,"Split autograft of skin, trunk and limbs – up to 25cm2 in area",Intermediate,No -General Surgery,HARVESTING OF DONOR MATERIAL,-,Intermediate,No -Paediatric Surgery,HARVESTING OF DONOR MATERIAL,-,Intermediate,No -Head and Neck,HARVESTING OF RIB FOR BONE GRAFTING,Partial excision of bone (including exostoses),Intermediate,No -Head and Neck,HEMIGLOSSECTOMY,Partial glossectomy for malignancy,Major,No -Head and Neck,HEMIMANDIBULECTOMY,Extensive segmental excision of mandible,Xmajor,No -Head and Neck,HEMIMAXILLECTOMY,Hemi-maxillectomy for malignancy,Xmajor,No -Bariatrics,HERNIA REPAIR,Primary repair of inguinal hernia,Intermediate,No -,HERNIA REPAIR,Primary repair of inguinal hernia,Intermediate,No -General Surgery,HERNIA REPAIR,Primary repair of inguinal hernia,Intermediate,No -Gastroenterology,HERNIA REPAIR,Primary repair of inguinal hernia,Intermediate,No -Colorectal Surgery,HIGH ANTERIOR RESECTION OF RECTUM,Anterior resection - high (i.e. colorectal anastomosis above the peritoneal reflection),Complex,No -General Surgery,HIGH ANTERIOR RESECTION OF RECTUM,Anterior resection - high (i.e. colorectal anastomosis above the peritoneal reflection),Complex,No -Vascular Surgery,HIGH LIGATION AND STRIPPING OF LONG SAPHENOUS VEIN,Ligation/stripping of long or short saphenous vein (including local excision/multiple phlebectomy),Intermediate,No -Orthopaedics,HIP JOINT RECONSTRUCTION,Primary total hip replacement with or without cement,Xmajor,No -,HIP JOINT RECONSTRUCTION,Primary total hip replacement with or without cement,Xmajor,No -ENT,HISTOLOGY TONSILLECTOMY,"Tonsillectomy - adult, age 13 + (and bilateral)",Intermediate,No -Urology,HYDROCELE OPERATION,Correction of hydrocele(s) – unilateral,Intermediate,No -,HYDROCELECTOMY,Correction of hydrocele(s) – unilateral,Intermediate,No -Urology,HYDROCELECTOMY,Correction of hydrocele(s) – unilateral,Intermediate,No -,HYDRODISTENSION OF BLADDER,Endoscopic hydrostatic distention of bladder (including cystoscopy),Minor,No -Urology,HYDRODISTENSION OF BLADDER,Endoscopic hydrostatic distention of bladder (including cystoscopy),Minor,No -Urology,HYPOSPADIAS REPAIR,Repair of penile/perineal hypospadias,Major,No -Urology,HYPOSPADIAS REPAIR -1ST STAGE OF 2 STAGES,Repair of penile/perineal hypospadias,Major,No -Gynaecology,HYSTERECTOMY,Total abdominal hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Gynaecology,HYSTEROSCOPIC EXCISION OF LEIOMYOMA OF UTERUS,Myomectomy (including laparoscopically) +/- ureterolysis,Major,No -Gynaecology,HYSTEROSCOPIC EXCISION OF POLYP OF UTERUS,"Hysteroscopy (including biopsy, dilatation, curettage and resection of polyp(s) +/- Mirena coil insertion)",Intermediate,No -Gynaecology,HYSTEROSCOPY,"Hysteroscopy (including biopsy, dilatation, curettage and resection of polyp(s) +/- Mirena coil insertion)",Intermediate,No -,HYSTEROSCOPY,"Hysteroscopy (including biopsy, dilatation, curettage and resection of polyp(s) +/- Mirena coil insertion)",Intermediate,No -Gynaecology,HYSTEROSCOPY AND BIOPSY OF LESION OF UTERUS,"Hysteroscopy (including biopsy, dilatation, curettage and resection of polyp(s) +/- Mirena coil insertion)",Intermediate,No -Gynaecology,HYSTEROSCOPY AND ENDOMETRIAL BIOPSY,"Hysteroscopy (including biopsy, dilatation, curettage and resection of polyp(s) +/- Mirena coil insertion)",Intermediate,No -Gynaecology,HYSTEROSCOPY AND REMOVAL OF IMPACTED FOREIGN BODY,Therapeutic hysteroscopic operations on uterus (including endometrial ablation excluding microwave or radiofrequency ablation) +/- Mirena coil insertion,Major,No -Gynaecology,HYSTEROSCOPY WITH BIOPSY,"Hysteroscopy (including biopsy, dilatation, curettage and resection of polyp(s) +/- Mirena coil insertion)",Intermediate,No -Gynaecology,HYSTEROSCOPY WITH DIVISION OF INTRAUTERINE SEPTUM,"Hysteroscopy (including biopsy, dilatation, curettage and resection of polyp(s) +/- Mirena coil insertion)",Intermediate,No -Gynaecology,HYSTEROSCOPY WITH LYSIS OF INTRAUTERINE ADHESIONS,"Hysteroscopy (including biopsy, dilatation, curettage and resection of polyp(s) +/- Mirena coil insertion)",Intermediate,No -Gynaecology,HYSTEROSCOPY WITH REMOVAL OF SUBMUCOUS LEIOMYOMATA,Myomectomy (including laparoscopically) +/- ureterolysis,Major,No -Gynaecology,HYSTEROSCOPY WITH RESECTION OF INTRAUTERINE SEPTUM,"Hysteroscopy (including biopsy, dilatation, curettage and resection of polyp(s) +/- Mirena coil insertion)",Intermediate,No -General Surgery,ILEECTOMY,Open resectionof small intestine tumour,Major,No -General Surgery,ILEECTOMY AND ILEOSTOMY,Open formation of ileostomy,Major,No -General Surgery,ILEOCOLIC ANASTOMOSIS,Laparoscopically assisted resection of small intestine,Major,No -Colorectal Surgery,ILEOCOLIC ANASTOMOSIS,Laparoscopically assisted resection of small intestine,Major,No -General Surgery,ILEOCOLIC RESECTION,Excision of lesion of colon (transabdominal),Major,No -Colorectal Surgery,ILEOCOLIC RESECTION,Excision of lesion of colon (transabdominal),Major,No -,ILEOCOLIC RESECTION,Excision of lesion of colon (transabdominal),Major,No -Urology,ILEOCYSTOPLASTY,Enlargement of bladder (including cystoscopy),Complex,No -General Surgery,ILEOSTOMY OPERATION,Open formation of ileostomy,Major,No -Colorectal Surgery,ILEOSTOMY OPERATION,Open formation of ileostomy,Major,No -Gynaecology,ILIAC FOSSA MUSCLE CUTTING INCISION,Removal of benign lesion in muscle or deeper tissue (excluding lipoma),Intermediate,No -Urology,IMPLANTATION OF ARTIFICIAL URINARY SPHINCTER,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -,IMPLANTATION OF ARTIFICIAL URINARY SPHINCTER,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -Urology,IMPLANTATION OF ARTIFICIAL URINARY SPHINCTER AROUND BLADDER NECK,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -Urology,IMPLANTATION OF ARTIFICIAL URINARY SPHINCTER AROUND BLADDER NECK - 1ST STAGE OF 2 STAGE IMPLANTATION,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -Urology,IMPLANTATION OF ARTIFICIAL URINARY SPHINCTER AROUND BLADDER NECK - 2ND STAGE OF 2 STAGE IMPLANTATION,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -Urology,IMPLANTATION OF ARTIFICIAL URINARY SPHINCTER AROUND BULBAR URETHRA,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -Urology,IMPLANTATION OF ARTIFICIAL URINARY SPHINCTER AROUND BULBAR URETHRAL - 2ND STAGE OF 2 STAGE IMPLANTATION,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -Urology,IMPLANTATION OF BULBAR URETHRAL PROSTHESIS FOR INCONTINENCE,"Simple urethroplasty, eg primary repair, segment, anterior urethra (including cystoscopy)",Major,No -ENT,IMPLANTATION OF COCHLEAR PROSTHETIC DEVICE,Insertion of cochlear implant - unilateral,Complex,No -Paediatric ENT,IMPLANTATION OF COCHLEAR PROSTHETIC DEVICE,Insertion of cochlear implant - unilateral,Complex,No -Urology,IMPLANTATION OF SACRAL NERVE STIMULATOR,Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Gynaecology,IMPLANTATION OF SACRAL NERVE STIMULATOR,Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -,IMPLANTATION OF SACRAL NERVE STIMULATOR,Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -General Surgery,IMPLANTATION OF SACRAL NERVE STIMULATOR,Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Urology,IMPLANTATION OF SEMI-RIGID PENILE PROSTHESIS,Reconstruction of penis,Major,No -,IMPLANTATION OF SEMI-RIGID PENILE PROSTHESIS,Reconstruction of penis,Major,No -Andrology,IMPLANTATION OF SEMI-RIGID PENILE PROSTHESIS,Reconstruction of penis,Major,No -Thoracic Surgery,INCISION AND DRAINAGE,Drainage of lesion of skin (including abscess),Minor,No -General Surgery,INCISION AND DRAINAGE,Drainage of lesion of skin (including abscess),Minor,No -,INCISION AND DRAINAGE,Drainage of lesion of skin (including abscess),Minor,No -Upper Gastro-intestinal Surgery,INCISION AND DRAINAGE,Drainage of lesion of skin (including abscess),Minor,No -Orthopaedics,INCISION AND DRAINAGE,Drainage of lesion of skin (including abscess),Minor,No -Urology,INCISION AND DRAINAGE,Drainage of lesion of skin (including abscess),Minor,No -Breast Surgery,INCISION AND DRAINAGE,Drainage of breast abscess including haematoma and seroma,Minor,No -,INCISION AND DRAINAGE OF ABSCESS,Drainage of lesion of skin (including abscess),Minor,No -General Surgery,INCISION AND DRAINAGE OF ABSCESS,Drainage of lesion of skin (including abscess),Minor,No -,INCISION AND DRAINAGE OF ABSCESS OF GENITAL LABIUM,Drainage of lesion of skin (including abscess),Minor,No -,INCISION AND DRAINAGE OF BARTHOLIN'S GLAND,Excision of Bartholin gland,Intermediate,No -Urology,INCISION AND DRAINAGE OF HAEMATOMA,Drainage of large subcutaneous abscess/haematoma,Minor,No -,INCISION AND DRAINAGE OF HAEMATOMA,Drainage of large subcutaneous abscess/haematoma,Minor,No -,INCISION AND DRAINAGE OF INFECTED BURSA OF WRIST,Excision of bursa,Intermediate,No -,INCISION AND DRAINAGE OF INFECTION OF HAND,Drainage of lesion of skin (including abscess),Minor,No -Urology,INCISION AND DRAINAGE OF LESION OF ABDOMINAL WALL,Drainage of lesion of skin (including abscess),Minor,No -General Surgery,INCISION AND DRAINAGE OF PERIANAL ABSCESS,Drainage of lesion of skin (including abscess),Minor,No -,INCISION AND DRAINAGE OF SCROTAL ABSCESS/COLLECTION,Drainage of lesion of skin (including abscess),Minor,No -Urology,INCISION AND DRAINAGE OF SCROTAL ABSCESS/COLLECTION,Drainage of lesion of skin (including abscess),Minor,No -Orthopaedics,INCISION AND DRAINAGE OF SHOULDER AREA FOR DEEP ABSCESS,Drainage of lesion of skin (including abscess),Minor,No -Orthopaedics,INCISION AND DRAINAGE OF SKIN AND SUBCUTANEOUS TISSUE,Drainage of lesion of skin (including abscess),Minor,No -,INCISION AND DRAINAGE OF SKIN AND SUBCUTANEOUS TISSUE,Drainage of lesion of skin (including abscess),Minor,No -Thoracic Surgery,INCISION AND DRAINAGE OF WOUND,Drainage of lesion of skin (including abscess),Minor,No -Orthopaedics,INCISION AND DRAINAGE OF WOUND,Drainage of lesion of skin (including abscess),Minor,No -,INCISION AND EVACUATION OF HAEMATOMA IN INGUINAL REGION,Drainage of large subcutaneous abscess/haematoma,Minor,No -Head and Neck,INCISION AND EXPLORATION OF NECK,Radical dissection of cervical lymph nodes,Complex,Yes -Urology,INCISION AND EXPLORATION OF PENIS,Repair of injury to penis,Intermediate,No -Orthopaedics,INCISION AND EXPLORATION OF SINUS TRACT,Drainage of lesion of skin (including abscess),Minor,No -Head and Neck,INCISION AND PACKING OF WOUND,Debridement of wound (and surgical toilet) - up to 25cm² in area,Minor,No -Gynaecology,INCISION AND PACKING OF WOUND,Debridement of wound (and surgical toilet) - up to 25cm² in area,Minor,No -Orthopaedics,INCISION OF BONE OF ULNA,Partial excision of bone (including exostoses),Intermediate,No -ENT,INCISION OF ENDOLYMPHATIC SAC,-,Minor,No -Head and Neck,INCISION OF NOSE,Excision of lesion of internal nose,Minor,No -Urology,INCISION OF PENIS,Repair of injury to penis,Intermediate,No -,INCISION OF PERIANAL ABSCESS,Drainage of lesion of skin (including abscess),Minor,No -Vascular Surgery,INCISION OF PEYRONIE PLAQUE AND INSERTION OF GRAFT,Operation for Peyronie's disease (eg Nesbitt's),Intermediate,No -Urology,INCISION OF PEYRONIE PLAQUE AND INSERTION OF GRAFT,Operation for Peyronie's disease (eg Nesbitt's),Intermediate,No -Urology,INCISION OF SPERMATIC CORD,Orchidectomy and excision of spermatic cord (+/- insertion of prosthesis),Intermediate,No -Head and Neck,INCISIONAL BIOPSY,Panendoscopy +/- incisional biopsy,Intermediate,No -Head and Neck,INCISIONAL BIOPSY OF LESION OF CHEEK,Shave biopsy of lesion of skin,Minor,No -Head and Neck,INCISIONAL BIOPSY OF LESION OF PALATE,"Therapeutic Panendoscopy +/- excision biopsy, excision or destruction of lesions",Intermediate,No -Upper Gastro-intestinal Surgery,INCISIONAL HERNIORRHAPHY USING SYNTHETIC PATCH,Open repair of incisional hernia requiring mesh,Intermediate,No -ENT,INDIRECT LARYNGOSCOPY WITH VOCAL CORD INJECTION,"Microlaryngoscopy/laryngoscopy +/- biopsy, excision of lesion, polyp or cyst",Intermediate,No -Urology,INGUINAL HERNIOPLASTY,Primary repair of inguinal hernia,Intermediate,No -Colorectal Surgery,INGUINAL HERNIOPLASTY,Primary repair of inguinal hernia,Intermediate,No -Colorectal Surgery,INGUINAL HERNIORRHAPHY USING SYNTHETIC PATCH,Primary repair of inguinal hernia,Intermediate,No -Urology,INGUINAL LIGATION OF VARICOCELE,Operation(s) on varicocele,Intermediate,No -Orthopaedics,INJECTION INTO JOINT,-,Minor,No -Orthopaedics,INJECTION INTO SHOULDER JOINT,-,Minor,No -Anaesthetics,INJECTION OF BOTULINUM TOXIN INTO ABDOMEN,Botulinum toxin injections to muscle,Minor,No -,INJECTION OF BOTULINUM TOXIN INTO ABDOMEN,Botulinum toxin injections to muscle,Minor,No -General Surgery,INJECTION OF BOTULINUM TOXIN INTO ANAL SPHINCTER,Botulinum toxin injections to muscle,Minor,No -Urology,INJECTION OF BULKING AGENT TO FEMALE BLADDER NECK,"Therapeutic injection into bladder neck for treatment of stress incontinence (periurethral bulking agents), including cystoscopy",Intermediate,No -,INJECTION OF BULKING AGENT TO FEMALE BLADDER NECK,"Therapeutic injection into bladder neck for treatment of stress incontinence (periurethral bulking agents), including cystoscopy",Intermediate,No -,INJECTION OF HIP JOINT,"Injection(s) +/- aspiration, into joint, cyst, bursa with image guidance",Minor,No -Orthopaedics,INJECTION OF HIP JOINT,"Injection(s) +/- aspiration, into joint, cyst, bursa with image guidance",Minor,No -Orthopaedics,INJECTION OF KNEE JOINT,"Injection(s) +/- aspiration, into joint, cyst, bursa with image guidance",Minor,No -,INJECTION OF KNEE JOINT,"Injection(s) +/- aspiration, into joint, cyst, bursa with image guidance",Minor,No -General Surgery,INSERTION OF ANAL SETON,Seton placement for treatment of anal fistula,Minor,No -Thoracic Surgery,INSERTION OF CHEST DRAIN,Insertion of tube drain into pleural cavity,Minor,No -Anaesthetics,INSERTION OF IMPLANTABLE INTRATHECAL ACCESS SYSTEM,Implantation/removal of intrathecal drug delivery system,Major,No -Thoracic Surgery,INSERTION OF INDWELLING PLEURAL CATHETER,Insertion of indwelling pleural catheter,Intermediate,Yes -Bronchoscopy/Thoracoscopy,INSERTION OF INDWELLING PLEURAL CATHETER,Insertion of indwelling pleural catheter,Intermediate,No -,INSERTION OF INDWELLING PLEURAL CATHETER,Insertion of indwelling pleural catheter,Intermediate,No -Urology,INSERTION OF INFLATABLE PENILE PROSTHESIS,Reconstruction of penis,Major,No -,INSERTION OF INFLATABLE PENILE PROSTHESIS,Reconstruction of penis,Major,No -Andrology,INSERTION OF INFLATABLE PENILE PROSTHESIS,Reconstruction of penis,Major,No -Gynaecology,INSERTION OF INTRAUTERINE CONTRACEPTIVE DEVICE,"Hysteroscopy (including biopsy, dilatation, curettage and resection of polyp(s) +/- Mirena coil insertion)",Intermediate,No -,INSERTION OF JJ STENT INTO URETER,Therapeutic ureterorenoscopy (+/- cystoscopy and insertion/removal of stent),Minor,No -Urology,INSERTION OF JJ STENT INTO URETER,Therapeutic ureterorenoscopy (+/- cystoscopy and insertion/removal of stent),Minor,No -Urology,"INSERTION OF SACRAL NERVE NEUROMODULATION, FIRST STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Gynaecology,"INSERTION OF SACRAL NERVE NEUROMODULATION, FIRST STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -,"INSERTION OF SACRAL NERVE NEUROMODULATION, FIRST STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Urology,"INSERTION OF SACRAL NERVE SACRAL NERVE NEUROMODULATION, SECOND STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Gynaecology,"INSERTION OF SACRAL NERVE SACRAL NERVE NEUROMODULATION, SECOND STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -,"INSERTION OF SACRAL NERVE SACRAL NERVE NEUROMODULATION, SECOND STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -General Surgery,INSERTION OF SETON INTO HIGH ANAL FISTULA AND PARTIAL LAYING OPEN OF TRACK,Laying open of high anal fistula (fistulotomy) (including sigmoidoscopy),Major,No -Urology,INSERTION OF SPC,Cystostomy and insertion of suprapubic tube into bladder (including cystoscopy),Intermediate,No -Anaesthetics,INSERTION OF SPINAL NEUROSTIMULATOR ELECTRODE,Implantation of spinal cord stimulator,Major,No -Thoracic Surgery,INTERCOSTAL NERVE BLOCK,Nerve Root Block +/- Image Guidance (Including Bilateral) Thoracic,Intermediate,No -Thoracic Surgery,INTERCOSTAL NEURECTOMY,Excision of lesion of peripheral nerve (eg neurilemoma),Intermediate,Yes -Orthopaedics,INTERNAL FIXATION OF BONE OF CLAVICLE,Repair of non-union of clavicle,Major,No -Orthopaedics,INTERNAL FIXATION OF BONE OF HUMERUS,Primary open reduction of long bone with fixation,Major,No -,INTERNAL FIXATION OF BONE OF HUMERUS,Primary open reduction of long bone with fixation,Major,No -Orthopaedics,INTERNAL FIXATION OF BONE OF RADIUS,Primary open reduction of long bone with fixation,Major,No -,INTERNAL FIXATION OF PATELLA,"Open surgical stabilisation of patella, including soft tissue/tendon transfer or release, +/- application of cast (adult)",Xmajor,No -Orthopaedics,INTERNAL FIXATION OF PHALANGEAL BONE OF TOE WITHOUT FRACTURE REDUCTION,Primary open reduction of small bone with fixation including intra-articular,Intermediate,No -Thoracic Surgery,INTERNAL FIXATION OF RIB,Resection of rib and open drainage of pleural cavity,Major,Yes -Thoracic Surgery,"INTERNAL FIXATION OF THORAX, RIBS OR STERNUM WITHOUT FRACTURE REDUCTION",Resection of rib and open drainage of pleural cavity,Major,Yes -,INTERNAL FIXATION USING INTRAMEDULLARY NAIL,Locked intramedullary nailing of fractured long bone,Xmajor,No -Head and Neck,INTERNAL FIXATION USING PLATE,Open reduction and fixation of fractured jaw,Intermediate,No -Orthopaedics,INTERPOSITION ARTHROPLASTY,Therapeutic arthroscopic operation on cavity of joint (not otherwise specified) (as sole procedure),Major,No -Orthopaedics,INTERPOSITION ARTHROPLASTY OF ELBOW JOINT,Total prosthetic replacement of elbow,Xmajor,No -Orthopaedics,INTERPOSITION ARTHROPLASTY OF THE METATARSOPHALANGEAL JOINT OF HALLUX,Excision arthroplasty of first metatarso-phalangeal joint with prosthetic implantation or interposition arthroplasty,Major,No -Gynaecology,INTERVENTIONAL DEBULKING SURGERY,Total exenteration of pelvis,Complex,Yes -,INTERVENTIONAL DEBULKING SURGERY,Total exenteration of pelvis,Complex,Yes -Gynaecology Oncology,INTERVENTIONAL DEBULKING SURGERY,Total exenteration of pelvis,Complex,Yes -Orthopaedics,INTRAMEDULLARY NAILING OF FEMUR,Locked intramedullary nailing of fractured long bone,Xmajor,No -Orthopaedics,INTRAMEDULLARY NAILING OF HUMERUS,Locked intramedullary nailing of fractured long bone,Xmajor,No -ENT,INTRANASAL ANTROSTOMY,Intranasal antrostomy including endoscopic and antral washout (including bilateral),Intermediate,No -ENT,INTRANASAL OPTIC NERVE DECOMPRESSION,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major,No -Head and Neck,INTRAORAL INCISION,Suture of mouth as sole procedure,Minor,No -Urology,INTRAURETHRAL INJECTION OF BULKING AGENT TO FEMALE BLADDER,"Therapeutic injection into bladder neck for treatment of stress incontinence (periurethral bulking agents), including cystoscopy",Intermediate,No -,INTRAURETHRAL INJECTION OF BULKING AGENT TO FEMALE BLADDER,"Therapeutic injection into bladder neck for treatment of stress incontinence (periurethral bulking agents), including cystoscopy",Intermediate,No -Urology,INTRAURETHRAL INJECTION OF BULKING AGENT TO MALE BLADDER,Therapeutic injection into bladder wall (including cystoscopy),Minor,No -Urology,INTRAVESICAL REIMPLANTATION OF URETER,Excision of ureterocele (with or without ureteric reimplantation) - unilateral,Major,No -Gynaecology,"INVESTIGATION OF SACRAL NERVE SACRAL NERVE NEUROMODULATION, FIRST STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Anaesthetics,"INVESTIGATION OF SACRAL NERVE SACRAL NERVE NEUROMODULATION, FIRST STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Gynaecology,"INVESTIGATION OF SACRAL NERVE SACRAL NERVE NEUROMODULATION, SECOND STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Urology,"INVESTIGATION OF SACRAL NERVE SACRAL NERVE NEUROMODULATION, SECOND STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Head and Neck,IPSILATERAL NECK DISSECTION,Radical dissection of cervical lymph nodes,Complex,Yes -General Surgery,IRRIGATION OF COLON,"Therapeutic oesophago-gastro-duodenoscopy (OGD) and immediate colonoscopy includes forceps biopsies, biopsy test and dye spray (as sole procedure)",Intermediate,No -,IRRIGATION OF WOUND,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Orthopaedics,IRRIGATION OF WOUND,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Upper Gastro-intestinal Surgery,IVOR LEWIS PARTIAL OESOPHAGOGASTRECTOMY,Oesophagectomy/oesophagogastrectomy with anastomosis in chest,Complex,Yes -Upper Gastro-intestinal Surgery,IVOR LEWIS SUBTOTAL OESOPHAGECTOMY,Oesophagectomy/oesophagogastrectomy with anastomosis in chest,Complex,Yes -Upper Gastro-intestinal Surgery,JEJUNOJEJUNAL BYPASS,Bypass of duodenum,Major,No -Orthopaedics,JOINT CAPSULOPLASTY,Primary stabilisation of multi-directional instability of shoulder joint +/- tendon repair,Major,No -ENT,"LABYRINTHOTOMY, OSSEOUS",Osseous labyrinthectomy,Xmajor,No -Colorectal Surgery,LAPAROSCOPIC ABDOMINOPERINEAL RESECTION,Abdominoperineal resection of rectum and anus,Complex,No -Gynaecology,LAPAROSCOPIC ABDOMINOPERINEAL RESECTION,Abdominoperineal resection of rectum and anus,Complex,No -Gynaecology,LAPAROSCOPIC ABLATION OF PELVIC ENDOMETRIOSIS,"Laparoscopic excision of endometriosis, +/-ureterolysis",Major,No -Gynaecology,LAPAROSCOPIC ADENOMYOMECTOMY,Myomectomy (including laparoscopically) +/- ureterolysis,Major,No -Urology,LAPAROSCOPIC ADRENALECTOMY,Adrenalectomy - unilateral (laparoscopic),Major,No -General Surgery,LAPAROSCOPIC ADRENALECTOMY,Adrenalectomy - unilateral (laparoscopic),Major,No -,LAPAROSCOPIC APPENDICECTOMY,Laparoscopic appendicectomy,Major,No -General Surgery,LAPAROSCOPIC APPENDICECTOMY,Laparoscopic appendicectomy,Major,No -Colorectal Surgery,LAPAROSCOPIC APPENDICECTOMY,Laparoscopic appendicectomy,Major,No -Urology,LAPAROSCOPIC AUGMENTATION CYSTOPLASTY,Enlargement of bladder (including cystoscopy),Complex,No -Gynaecology,LAPAROSCOPIC BILATERAL OOPHORECTOMY,"Laparoscopic oophorectomy and salpingectomy, +/- biopsy eg. omentum, peritoneum, lymph node (as sole procedure) ? unilateral",Major,No -Bariatrics,LAPAROSCOPIC BILATERAL REPAIR OF DIRECT INGUINAL HERNIA,Laparoscopic repair of inguinal hernia - bilateral,Intermediate,No -Colorectal Surgery,LAPAROSCOPIC BILATERAL REPAIR OF DIRECT INGUINAL HERNIA,Laparoscopic repair of inguinal hernia - bilateral,Intermediate,No -General Surgery,LAPAROSCOPIC BILATERAL REPAIR OF DIRECT INGUINAL HERNIA,Laparoscopic repair of inguinal hernia - bilateral,Intermediate,No -Upper Gastro-intestinal Surgery,LAPAROSCOPIC BILATERAL REPAIR OF DIRECT INGUINAL HERNIA,Laparoscopic repair of inguinal hernia - bilateral,Intermediate,No -General Surgery,LAPAROSCOPIC BILATERAL REPAIR OF INDIRECT INGUINAL HERNIA,Laparoscopic repair of inguinal hernia - bilateral,Intermediate,No -Bariatrics,LAPAROSCOPIC BILATERAL REPAIR OF INDIRECT INGUINAL HERNIA,Laparoscopic repair of inguinal hernia - bilateral,Intermediate,No -Gynaecology,LAPAROSCOPIC BILATERAL SALPINGO-OOPHORECTOMY,"Laparoscopic oophorectomy and salpingectomy, +/- biopsy eg. omentum, peritoneum, lymph node (as sole procedure) ? unilateral",Major,No -Gynaecology Oncology,LAPAROSCOPIC BILATERAL SALPINGO-OOPHORECTOMY,"Laparoscopic oophorectomy and salpingectomy, +/- biopsy eg. omentum, peritoneum, lymph node (as sole procedure) ? unilateral",Major,No -Gynaecology,LAPAROSCOPIC BILATERAL SALPINGO-OOPHORECTOMY WITH CONVERSION TO LAPAROTOMY,"Laparoscopic oophorectomy and salpingectomy, +/- biopsy eg. omentum, peritoneum, lymph node (as sole procedure) ? unilateral",Major,No -Gynaecology,LAPAROSCOPIC BLOCK DISSECTION OF PELVIC LYMPH NODES,Block dissection of pelvic lymph nodes (as sole procedure),Major,No -General Surgery,LAPAROSCOPIC BYPASS GASTROJEJUNOSTOMY,Laparoscopic biliary gastric bypass,Complex,No -Bariatrics,LAPAROSCOPIC CARDIOMYOTOMY,Oesophagocardiomyotomy (Heller's operation),Major,No -Upper Gastro-intestinal Surgery,LAPAROSCOPIC CARDIOMYOTOMY,Oesophagocardiomyotomy (Heller's operation),Major,No -General Surgery,LAPAROSCOPIC CHOLECYSTECTOMY,Laparoscopic cholecystectomy,Xmajor,No -Upper Gastro-intestinal Surgery,LAPAROSCOPIC CHOLECYSTECTOMY,Laparoscopic cholecystectomy,Xmajor,No -Bariatrics,LAPAROSCOPIC CHOLECYSTECTOMY,Laparoscopic cholecystectomy,Xmajor,No -Gastroenterology,LAPAROSCOPIC CHOLECYSTECTOMY,Laparoscopic cholecystectomy,Xmajor,No -,LAPAROSCOPIC CHOLECYSTECTOMY,Laparoscopic cholecystectomy,Xmajor,No -Upper Gastro-intestinal Surgery,LAPAROSCOPIC CHOLECYSTECTOMY WITH CHOLANGIOGRAPHY,Laparoscopic cholecystectomy,Xmajor,No -Bariatrics,LAPAROSCOPIC CHOLECYSTECTOMY WITH CHOLANGIOGRAPHY,Laparoscopic cholecystectomy with perioperative cholangiogram,Xmajor,No -Upper Gastro-intestinal Surgery,LAPAROSCOPIC CHOLECYSTECTOMY WITH EXPLORATION OF COMMON DUCT,Cholecystectomy with exploration of common bile duct,Major,No -Upper Gastro-intestinal Surgery,LAPAROSCOPIC CHOLECYSTOSTOMY,Laparoscopic cholecystectomy,Xmajor,No -General Surgery,LAPAROSCOPIC CHOLECYSTOSTOMY,Laparoscopic cholecystectomy,Xmajor,No -Gynaecology,LAPAROSCOPIC COLPOSUSPENSION,Laparoscopic colposuspension,Major,No -Urology,LAPAROSCOPIC COLPOSUSPENSION,Laparoscopic colposuspension,Major,No -Gynaecology,LAPAROSCOPIC DEBULKING OF PARA-AORTIC LYMPH NODES,Block dissection of pelvic lymph nodes (as sole procedure),Major,Yes -Gynaecology,LAPAROSCOPIC DEBULKING OF PELVIC  LYMPH NODES,Block dissection of pelvic lymph nodes (as sole procedure),Major,Yes -Urology,LAPAROSCOPIC DECORTICATION OF CYST OF KIDNEY,Laparoscopic partial nephrectomy,Major,No -Gynaecology,LAPAROSCOPIC DRAINAGE OF OVARIAN CYST,"Laparoscopy (including e.g. puncture of ovarian cysts, +/- biopsy, minor endometriosis, +/- ureterolysis)",Intermediate,No -Gynaecology,LAPAROSCOPIC DRAINAGE OF PELVIC ABSCESS,Drainage of abscess of appendix or drainage of intra-abdominal abscess,Major,No -Gynaecology,LAPAROSCOPIC DYE TEST OF FALLOPIAN TUBE,"Laparoscopy and therapeutic procedures (including laser, diathermy and destruction e.g. endometriosis, adhesiolysis, tubal and ovarian surgery, +/-ureterolysis)",Major,No -Gynaecology,LAPAROSCOPIC EXCISION OF BILATERAL OVARIAN CYSTS,Ovarian cystectomy +/- omental biopsy (as sole procedure and including bilateral),Major,No -Gynaecology,LAPAROSCOPIC EXCISION OF CYST OF LEFT OVARY,Ovarian cystectomy +/- omental biopsy (as sole procedure and including bilateral),Major,No -Gynaecology,LAPAROSCOPIC EXCISION OF CYST OF RIGHT OVARY,Ovarian cystectomy +/- omental biopsy (as sole procedure and including bilateral),Major,No -Gynaecology,LAPAROSCOPIC EXCISION OF HYDROSALPINX,Salpingectomy (including bilateral) (as sole procedure),Major,No -Gynaecology,LAPAROSCOPIC EXCISION OF PELVIC ENDOMETRIOSIS,"Laparoscopic excision of endometriosis, +/-ureterolysis",Major,No -,LAPAROSCOPIC EXCISION OF RUPTURED ECTOPIC TUBAL PREGNANCY,Removal of products of conception from fallopian tube (ectopic pregnancy) including laparoscopically,Major,No -Colorectal Surgery,LAPAROSCOPIC EXTENDED RIGHT HEMICOLECTOMY,Extended excision of right hemicolon,Xmajor,No -General Surgery,LAPAROSCOPIC EXTENDED RIGHT HEMICOLECTOMY,Extended excision of right hemicolon,Xmajor,No -Bariatrics,LAPAROSCOPIC FUNDOPLICATION,Laparoscopic repair of hiatus hernia with anti-reflux procedure (eg fundoplication),Major,No -Upper Gastro-intestinal Surgery,LAPAROSCOPIC FUNDOPLICATION,Laparoscopic repair of hiatus hernia with anti-reflux procedure (eg fundoplication),Major,No -General Surgery,LAPAROSCOPIC FUNDOPLICATION,Laparoscopic repair of hiatus hernia with anti-reflux procedure (eg fundoplication),Major,No -Colorectal Surgery,LAPAROSCOPIC HIGH ANTERIOR RESECTION OF RECTUM,Laparoscopic anterior resection - high (i.e. colorectal anastomosis above the peritoneal reflection),Complex,No -General Surgery,LAPAROSCOPIC HIGH ANTERIOR RESECTION OF RECTUM,Laparoscopic anterior resection - high (i.e. colorectal anastomosis above the peritoneal reflection),Complex,No -General Surgery,LAPAROSCOPIC HIGH ANTERIOR RESECTION OF RECTUM CONVERTED TO OPEN,Laparoscopic anterior resection - high (i.e. colorectal anastomosis above the peritoneal reflection),Complex,No -Gynaecology,LAPAROSCOPIC HYSTERECTOMY,Laparoscopic total hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Urology,LAPAROSCOPIC HYSTERECTOMY,Laparoscopic total hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Bariatrics,LAPAROSCOPIC INCISION AND EXPLORATION OF COMMON BILE DUCT,Excision of lesion of bile duct,Major,No -Gynaecology,LAPAROSCOPIC LASER DESTRUCTION OF ENDOMETRIOSIS,"Laparoscopic excision of endometriosis, +/-ureterolysis",Major,No -Colorectal Surgery,LAPAROSCOPIC LEFT HEMICOLECTOMY,Excision of left hemicolon,Xmajor,No -General Surgery,LAPAROSCOPIC LEFT HEMICOLECTOMY,Excision of left hemicolon,Xmajor,No -Gynaecology,LAPAROSCOPIC LEFT SALPINGO-OOPHORECTOMY,"Laparoscopic oophorectomy and salpingectomy, +/- biopsy eg. omentum, peritoneum, lymph node (as sole procedure) ? unilateral",Major,No -General Surgery,LAPAROSCOPIC LOW ANTERIOR RESECTION OF RECTUM,Laparascopic anterior resection - low (ie colorectal anastomosis at or below the peritoneal reflection),Complex,No -Colorectal Surgery,LAPAROSCOPIC LOW ANTERIOR RESECTION OF RECTUM,Laparascopic anterior resection - low (ie colorectal anastomosis at or below the peritoneal reflection),Complex,No -Colorectal Surgery,LAPAROSCOPIC LOW ANTERIOR RESECTION OF RECTUM CONVERTED TO OPEN,Anterior resection - low (ie colorectal anastomosis at or below the peritoneal reflection,Complex,No -Gynaecology,LAPAROSCOPIC MYOMECTOMY,Myomectomy (including laparoscopically) +/- ureterolysis,Major,No -Urology,LAPAROSCOPIC NEPHROURETERECTOMY,Nephroureterectomy - unilateral,Xmajor,No -Urology,LAPAROSCOPIC NEPHROURETERECTOMY WITH CYSTOSCOPICALLY ASSISTED URETERECTOMY,Nephroureterectomy - unilateral,Xmajor,No -General Surgery,LAPAROSCOPIC NISSEN FUNDOPLICATION USING ABDOMINAL APPROACH,Laparoscopic repair of hiatus hernia with anti-reflux procedure (eg fundoplication),Major,No -Upper Gastro-intestinal Surgery,LAPAROSCOPIC NISSEN FUNDOPLICATION USING ABDOMINAL APPROACH,Laparoscopic repair of hiatus hernia with anti-reflux procedure (eg fundoplication),Major,No -Gynaecology,LAPAROSCOPIC OMENTECTOMY,Wedge excision or removal of omentum (as sole procedure),Major,No -Gynaecology Oncology,LAPAROSCOPIC OMENTECTOMY,Wedge excision or removal of omentum (as sole procedure),Major,No -General Surgery,LAPAROSCOPIC ONE-ANASTOMOSIS GASTRIC BYPASS,Laparoscopic biliary gastric bypass,Complex,No -Bariatrics,LAPAROSCOPIC ONE-ANASTOMOSIS GASTRIC BYPASS,Laparoscopic biliary gastric bypass,Complex,No -Gynaecology,LAPAROSCOPIC OOPHORECTOMY,"Laparoscopic oophorectomy and salpingectomy, +/- biopsy eg. omentum, peritoneum, lymph node (as sole procedure) ? unilateral",Major,No -General Surgery,LAPAROSCOPIC PANPROCTOCOLECTOMY,Panproctocolectomy and ileostomy,Complex,No -Colorectal Surgery,LAPAROSCOPIC PANPROCTOCOLECTOMY,Panproctocolectomy and ileostomy,Complex,No -Gynaecology,LAPAROSCOPIC PARA-AORTIC LYMPH NODE DISSECTION,Block dissection of pelvic lymph nodes (as sole procedure),Major,No -Gynaecology Oncology,LAPAROSCOPIC PARA-AORTIC LYMPH NODE DISSECTION,Block dissection of pelvic lymph nodes (as sole procedure),Major,No -Urology,LAPAROSCOPIC PARTIAL CYSTECTOMY,Partial cystectomy (including cystoscopy),Major,No -Gynaecology,LAPAROSCOPIC PARTIAL CYSTECTOMY,Partial cystectomy (including cystoscopy),Major,No -Urology,LAPAROSCOPIC PYELOPLASTY,Laparoscopic pyeloplasty,Complex,No -Gynaecology,LAPAROSCOPIC RADICAL HYSTERECTOMY,Radical hysterectomy and lymphadenectomy (Wertheim's) +/- ureterolysis,Complex,No -Gynaecology,LAPAROSCOPIC RADICAL HYSTERECTOMY WITH BILATERAL SALPINGO-OOPHORECTOMY,Radical hysterectomy and lymphadenectomy (Wertheim's) +/- ureterolysis,Complex,No -Gynaecology,LAPAROSCOPIC RADICAL HYSTERECTOMY WITH BILATERAL SALPINGO-OOPHORECTOMY WITH BLOCK DISSECTION OF PELVIC LYMPH NODES,Radical hysterectomy and lymphadenectomy (Wertheim's) +/- ureterolysis,Complex,No -Urology,LAPAROSCOPIC RADICAL NEPHRECTOMY,Laparoscopic nephrectomy,Major,No -Urology,LAPAROSCOPIC RADICAL NEPHRECTOMY USING ROBOTIC ASSISTANCE,Robotic assisted laparoscopic partial nephrectomy,Major,No -Paediatric Urology,LAPAROSCOPIC REIMPLANTATION OF URETER,Unilateral replantation of ureter into bladder (including cystoscopy),Major,No -General Surgery,LAPAROSCOPIC REMOVAL OF GASTRIC BAND,Open operations on stomach not elsewhere classified,Major,No -Bariatrics,LAPAROSCOPIC REMOVAL OF GASTRIC BAND,Open operations on stomach not elsewhere classified,Major,No -Gynaecology,LAPAROSCOPIC REMOVAL OF OVARIAN CYST,Ovarian cystectomy +/- omental biopsy (as sole procedure and including bilateral),Major,No -Bariatrics,LAPAROSCOPIC REPAIR OF EPIGASTRIC HERNIA,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -General Surgery,LAPAROSCOPIC REPAIR OF FEMORAL HERNIA,Primary repair of femoral hernia,Intermediate,No -Urology,LAPAROSCOPIC REPAIR OF HERNIA,Laparoscopic repair of recurrent inguinal hernia - unilateral,Intermediate,No -General Surgery,LAPAROSCOPIC REPAIR OF HERNIA OF ANTERIOR ABDOMINAL WALL,Laparoscopic repair of incisional hernia not requiring mesh,Intermediate,No -Bariatrics,LAPAROSCOPIC REPAIR OF HIATUS HERNIA,Laparoscopic repair of hiatus hernia with anti-reflux procedure (eg fundoplication),Major,No -General Surgery,LAPAROSCOPIC REPAIR OF HIATUS HERNIA,Laparoscopic repair of hiatus hernia with anti-reflux procedure (eg fundoplication),Major,No -Upper Gastro-intestinal Surgery,LAPAROSCOPIC REPAIR OF HIATUS HERNIA,Laparoscopic repair of hiatus hernia with anti-reflux procedure (eg fundoplication),Major,No -General Surgery,LAPAROSCOPIC REPAIR OF INCISIONAL HERNIA,Laparoscopic repair of incisional hernia not requiring mesh,Intermediate,No -Urology,LAPAROSCOPIC REPAIR OF INCISIONAL HERNIA,Laparoscopic repair of incisional hernia not requiring mesh,Intermediate,No -Gynaecology,LAPAROSCOPIC REPAIR OF INCISIONAL HERNIA,Laparoscopic repair of incisional hernia not requiring mesh,Intermediate,No -Bariatrics,LAPAROSCOPIC REPAIR OF INCISIONAL HERNIA,Laparoscopic repair of incisional hernia requiring mesh,Intermediate,No -General Surgery,LAPAROSCOPIC REPAIR OF INCISIONAL HERNIA USING SYNTHETIC MESH,Laparoscopic repair of incisional hernia requiring mesh,Intermediate,No -General Surgery,LAPAROSCOPIC REPAIR OF INCISIONAL HERNIA WITH PROSTHESIS,Laparoscopic repair of incisional hernia requiring mesh,Intermediate,No -Bariatrics,LAPAROSCOPIC REPAIR OF INCISIONAL HERNIA WITH PROSTHESIS,Open repair of incisional hernia requiring mesh,Intermediate,No -Bariatrics,LAPAROSCOPIC REPAIR OF INGUINAL HERNIA,Laparoscopic repair of inguinal hernia - unilateral,Intermediate,No -Upper Gastro-intestinal Surgery,LAPAROSCOPIC REPAIR OF INGUINAL HERNIA,Laparoscopic repair of inguinal hernia - unilateral,Intermediate,No -General Surgery,LAPAROSCOPIC REPAIR OF INGUINAL HERNIA,Laparoscopic repair of inguinal hernia - unilateral,Intermediate,No -General Surgery,LAPAROSCOPIC REPAIR OF LEFT INGUINAL HERNIA USING SURGICAL MESH,Laparoscopic repair of inguinal hernia - unilateral,Intermediate,No -Colorectal Surgery,LAPAROSCOPIC REPAIR OF LUMBAR HERNIA USING BIOLOGICAL MESH,Open repair of incisional hernia requiring mesh,Intermediate,No -,LAPAROSCOPIC REPAIR OF LUMBAR HERNIA USING BIOLOGICAL MESH,Open repair of incisional hernia requiring mesh,Intermediate,No -General Surgery,LAPAROSCOPIC REPAIR OF PARAUMBILICAL HERNIA WITH SUTURE,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -General Surgery,LAPAROSCOPIC REPAIR OF RECURRENT INCISIONAL HERNIA USING SYNTHETIC MESH,Laparoscopic repair of incisional hernia requiring mesh,Intermediate,No -Upper Gastro-intestinal Surgery,LAPAROSCOPIC REPAIR OF RECURRENT INGUINAL HERNIA WITH PROSTHESIS,Laparoscopic repair of recurrent inguinal hernia - unilateral,Intermediate,No -General Surgery,LAPAROSCOPIC REPAIR OF RECURRENT INGUINAL HERNIA WITH PROSTHESIS,Laparoscopic repair of recurrent inguinal hernia - unilateral,Intermediate,No -Bariatrics,LAPAROSCOPIC REPAIR OF RECURRENT INGUINAL HERNIA WITH PROSTHESIS,Laparoscopic repair of recurrent inguinal hernia - unilateral,Intermediate,No -Bariatrics,LAPAROSCOPIC REPAIR OF RECURRENT LUMBAR HERNIA USING SYNTHETIC MESH,Open repair of incisional hernia requiring mesh,Intermediate,No -Gynaecology,LAPAROSCOPIC REPAIR OF RECURRENT UMBILICAL HERNIA USING SUTURES,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -General Surgery,LAPAROSCOPIC REPAIR OF RECURRENT UMBILICAL HERNIA USING SYNTHETIC MESH,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -General Surgery,LAPAROSCOPIC REPAIR OF RECURRENT UMBILICAL HERNIA USING SYNTHETIC MESH WITH FASCIAL CLOSURE,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Colorectal Surgery,LAPAROSCOPIC REPAIR OF RECURRENT VENTRAL HERNIA USING PROSTHESIS,Laparoscopic repair of incisional hernia requiring mesh,Intermediate,No -Bariatrics,LAPAROSCOPIC REPAIR OF RIGHT INGUINAL HERNIA USING SURGICAL MESH,Laparoscopic repair of inguinal hernia - unilateral,Intermediate,No -General Surgery,LAPAROSCOPIC REPAIR OF SPIGELIAN HERNIA,Laparoscopic Repair of Spigelian Hernia with Mesh,Intermediate,No -Colorectal Surgery,LAPAROSCOPIC REPAIR OF SPIGELIAN HERNIA,Laparoscopic Repair of Spigelian Hernia with Mesh,Intermediate,No -Upper Gastro-intestinal Surgery,LAPAROSCOPIC REPAIR OF SPIGELIAN HERNIA,Laparoscopic Repair of Spigelian Hernia with Mesh,Intermediate,No -Bariatrics,LAPAROSCOPIC REPAIR OF SPIGELIAN HERNIA,Laparoscopic Repair of Spigelian Hernia with Mesh,Intermediate,No -General Surgery,LAPAROSCOPIC REPAIR OF UMBILICAL HERNIA USING SYNTHETIC MESH,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -General Surgery,LAPAROSCOPIC REPAIR OF UMBILICAL HERNIA USING SYNTHETIC MESH WITH FASCIAL CLOSURE,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Colorectal Surgery,LAPAROSCOPIC RIGHT HEMICOLECTOMY,Laparoscopically assisted right hemicolectomy,Xmajor,No -General Surgery,LAPAROSCOPIC RIGHT HEMICOLECTOMY,Laparoscopically assisted right hemicolectomy,Xmajor,No -,LAPAROSCOPIC RIGHT HEMICOLECTOMY,Laparoscopically assisted right hemicolectomy,Xmajor,No -General Surgery,LAPAROSCOPIC RIGHT HEMICOLECTOMY CONVERTED TO OPEN,Right hemicolectomy,Xmajor,No -Gynaecology,LAPAROSCOPIC RIGHT OOPHORECTOMY,"Laparoscopic oophorectomy and salpingectomy, +/- biopsy eg. omentum, peritoneum, lymph node (as sole procedure) ? unilateral",Major,No -Gynaecology,LAPAROSCOPIC RIGHT SALPINGO-OOPHORECTOMY,"Laparoscopic oophorectomy and salpingectomy, +/- biopsy eg. omentum, peritoneum, lymph node (as sole procedure) ? unilateral",Major,No -Gynaecology,LAPAROSCOPIC RIGHT SALPINGO-OOPHORECTOMY AFTER PRIOR LEFT SALPINGO-OOPHORECTOMY,"Laparoscopic oophorectomy and salpingectomy, +/- biopsy eg. omentum, peritoneum, lymph node (as sole procedure) ? unilateral",Major,No -Bariatrics,LAPAROSCOPIC ROUX ENY GASTRIC BYPASS,Laparoscopic biliary gastric bypass,Complex,No -General Surgery,LAPAROSCOPIC ROUX ENY GASTRIC BYPASS,Laparoscopic biliary gastric bypass,Complex,No -,LAPAROSCOPIC ROUX ENY GASTRIC BYPASS,Laparoscopic biliary gastric bypass,Complex,No -Gynaecology,LAPAROSCOPIC SACROCOLPOPEXY,Sacrocolpopexy (including laparoscopic) +/- ureterolysis,Major,No -Gynaecology,LAPAROSCOPIC SACROHYSTEROPEXY,Laparoscopic hysteropexy (including sacrohysteropexy) using mesh +/- ureterolysis,Major,No -Urology,LAPAROSCOPIC SACROHYSTEROPEXY,Laparoscopic hysteropexy (including sacrohysteropexy) using mesh +/- ureterolysis,Major,No -Gynaecology,LAPAROSCOPIC SALPINGECTOMY,Salpingectomy (including bilateral) (as sole procedure),Major,No -General Surgery,LAPAROSCOPIC SIGMOID COLECTOMY,Excision of sigmoid colon,Xmajor,No -Colorectal Surgery,LAPAROSCOPIC SIGMOID COLECTOMY,Excision of sigmoid colon,Xmajor,No -Colorectal Surgery,LAPAROSCOPIC SIGMOID COLECTOMY CONVERTED TO OPEN,Excision of sigmoid colon,Xmajor,No -Bariatrics,LAPAROSCOPIC SINGLE ANASTAMOSIS DUODENO-ILEOSTOMY (SADI),Partial gastrectomy and excision of surrounding tissue,Complex,Yes -General Surgery,LAPAROSCOPIC SINGLE ANASTAMOSIS DUODENO-ILEOSTOMY (SADI),Partial gastrectomy and excision of surrounding tissue,Complex,Yes -Upper Gastro-intestinal Surgery,LAPAROSCOPIC SLEEVE GASTRECTOMY,Partial gastrectomy,Xmajor,Yes -General Surgery,LAPAROSCOPIC SLEEVE GASTRECTOMY,Partial gastrectomy,Xmajor,Yes -Bariatrics,LAPAROSCOPIC SLEEVE GASTRECTOMY,Partial gastrectomy,Xmajor,Yes -Gastroenterology,LAPAROSCOPIC SLEEVE GASTRECTOMY,Partial gastrectomy,Xmajor,Yes -,LAPAROSCOPIC SLEEVE GASTRECTOMY,Partial gastrectomy,Xmajor,Yes -Gynaecology,LAPAROSCOPIC STERILISATION,Salpingectomy (including bilateral) (as sole procedure),Major,No -General Surgery,LAPAROSCOPIC SUBTOTAL COLECTOMY,Laparoscopically assisted left colon resection,Xmajor,No -Colorectal Surgery,LAPAROSCOPIC SUBTOTAL COLECTOMY,Laparoscopically assisted left colon resection,Xmajor,No -Gynaecology,LAPAROSCOPIC SUBTOTAL HYSTERECTOMY,Laparoscopic subtotal hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Bariatrics,LAPAROSCOPIC TAPP (TRANSABDOMINAL PREPERITONEAL) REPAIR OF INGUINAL HERNIA USING SYNTHETIC MESH,Laparoscopic repair of inguinal hernia - unilateral,Intermediate,No -General Surgery,LAPAROSCOPIC TAPP (TRANSABDOMINAL PREPERITONEAL) REPAIR OF INGUINAL HERNIA USING SYNTHETIC MESH,Laparoscopic repair of inguinal hernia - unilateral,Intermediate,No -General Surgery,LAPAROSCOPIC TAPP (TRANSABDOMINAL PREPERITONEAL) REPAIR OF RECURRENT INGUINAL HERNIA USING SYNTHETIC MESH,Laparoscopic repair of inguinal hernia - unilateral,Intermediate,No -Bariatrics,LAPAROSCOPIC TAPP (TRANSABDOMINAL PREPERITONEAL) REPAIR OF RECURRENT INGUINAL HERNIA USING SYNTHETIC MESH,Laparoscopic repair of inguinal hernia - unilateral,Intermediate,No -General Surgery,LAPAROSCOPIC TEP (TOTALLY EXTRAPERITONEAL) REPAIR OF INGUINAL HERNIA USING SYNTHETIC MESH,Laparoscopic repair of inguinal hernia - unilateral,Intermediate,No -Bariatrics,LAPAROSCOPIC TEP (TOTALLY EXTRAPERITONEAL) REPAIR OF INGUINAL HERNIA USING SYNTHETIC MESH,Laparoscopic repair of inguinal hernia - unilateral,Intermediate,No -Gynaecology,LAPAROSCOPIC TOTAL ABDOMINAL HYSTERECTOMY AND BILATERAL SALPINGO-OOPHORECTOMY,Laparoscopic total hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Colorectal Surgery,LAPAROSCOPIC TOTAL COLECTOMY,Total excision of colon and ileorectal anastomosis,Complex,No -Gynaecology,LAPAROSCOPIC TOTAL COLECTOMY WITH ILEO-RECTAL ANASTOMOSIS,Total excision of colon and ileorectal anastomosis,Complex,No -Gynaecology,LAPAROSCOPIC TOTAL CYSTECTOMY,Laparoscopic cystectomy (with construction of intestinal conduit or bladder) (including cystoscopy),Complex,No -Gynaecology,LAPAROSCOPIC TOTAL HYSTERECTOMY,Laparoscopic total hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Gynaecology Oncology,LAPAROSCOPIC TOTAL HYSTERECTOMY,Laparoscopic total hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -,LAPAROSCOPIC TOTAL HYSTERECTOMY,Laparoscopic total hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Urology,LAPAROSCOPIC TOTAL NEPHRECTOMY,Laparoscopic nephrectomy,Major,No -Gynaecology,LAPAROSCOPIC TOTAL SPLENECTOMY,Laparoscopic splenectomy,Major,No -Gynaecology,LAPAROSCOPIC TREATMENT OF ECTOPIC PREGNANCY WITH SALPINGECTOMY,Removal of products of conception from fallopian tube (ectopic pregnancy) including laparoscopically,Major,No -Urology,LAPAROSCOPIC URETEROLITHOTOMY,Open ureterolithotomy (including cystoscopy),Major,No -Colorectal Surgery,LAPAROSCOPIC-ASSISTED ANTERIOR RESECTION OF RECTUM,Laparascopic anterior resection - low (ie colorectal anastomosis at or below the peritoneal reflection),Complex,No -General Surgery,LAPAROSCOPIC-ASSISTED ANTERIOR RESECTION OF RECTUM,Laparascopic anterior resection - low (ie colorectal anastomosis at or below the peritoneal reflection),Complex,No -Colorectal Surgery,LAPAROSCOPIC-ASSISTED LEFT COLECTOMY,Laparoscopically assisted left colon resection,Xmajor,No -Colorectal Surgery,LAPAROSCOPIC-ASSISTED LOW ANTERIOR RESECTION OF RECTUM,Laparascopic anterior resection - low (ie colorectal anastomosis at or below the peritoneal reflection),Complex,No -General Surgery,LAPAROSCOPIC-ASSISTED LOW ANTERIOR RESECTION OF RECTUM,Laparascopic anterior resection - low (ie colorectal anastomosis at or below the peritoneal reflection),Complex,No -Colorectal Surgery,LAPAROSCOPICALLY ASSISTED EXTENDED RIGHT HEMICOLECTOMY,Laparoscopically assisted right hemicolectomy,Xmajor,No -Colorectal Surgery,LAPAROSCOPICALLY ASSISTED RIGHT HEMICOLECTOMY,Laparoscopically assisted right hemicolectomy,Xmajor,No -General Surgery,LAPAROSCOPICALLY ASSISTED RIGHT HEMICOLECTOMY,Laparoscopically assisted right hemicolectomy,Xmajor,No -Gynaecology,LAPAROSCOPY,Diagnostic laparoscopy (including any biopsy),Intermediate,No -,LAPAROSCOPY,Diagnostic laparoscopy (including any biopsy),Intermediate,No -Colorectal Surgery,LAPAROSCOPY,Diagnostic laparoscopy (including any biopsy),Intermediate,No -General Surgery,LAPAROSCOPY,Diagnostic laparoscopy (including any biopsy),Intermediate,No -Urology,LAPAROSCOPY,Diagnostic laparoscopy (including any biopsy),Intermediate,No -Colorectal Surgery,LAPAROSCOPY WITH EXCISION OF LESION,Diagnostic laparoscopy (including any biopsy),Intermediate,No -Gynaecology,LAPAROSCOPY WITH EXCISION OF LESION,Diagnostic laparoscopy (including any biopsy),Intermediate,No -Gynaecology,LAPAROSCOPY WITH LYSIS OF ADHESIONS,Freeing of adhesions of peritoneum,Major,No -Gynaecology,LAPAROSCOPY WITH REMOVAL OF ADNEXAL STRUCTURES,"Laparoscopy (including e.g. puncture of ovarian cysts, +/- biopsy, minor endometriosis, +/- ureterolysis)",Intermediate,No -Gynaecology,LAPAROTOMY,Laparotomy for postoperative haemorrhage,Major,Yes -Gynaecology Oncology,LAPAROTOMY,Laparotomy for postoperative haemorrhage,Major,Yes -Colorectal Surgery,LAPAROTOMY,Laparotomy for postoperative haemorrhage,Major,Yes -,LAPAROTOMY,Laparotomy for postoperative haemorrhage,Major,Yes -Urology,LAPAROTOMY,Laparotomy for postoperative haemorrhage,Major,Yes -General Surgery,LAPAROTOMY,Laparotomy for postoperative haemorrhage,Major,Yes -Upper Gastro-intestinal Surgery,LAPAROTOMY,Laparotomy for postoperative haemorrhage,Major,Yes -Colorectal Surgery,LAPAROTOMY AND DIVISION OF PERITONEAL ADHESIONS,Laparotomy for postoperative haemorrhage,Major,Yes -General Surgery,LAPAROTOMY AND DIVISION OF PERITONEAL ADHESIONS,Laparotomy for postoperative haemorrhage,Major,Yes -,LAPAROTOMY AND DIVISION OF PERITONEAL ADHESIONS,Laparotomy for postoperative haemorrhage,Major,Yes -Upper Gastro-intestinal Surgery,LAPAROTOMY AND INCISION OF SMALL INTESTINE,Laparotomy for postoperative haemorrhage,Major,Yes -Colorectal Surgery,LAPAROTOMY AND REMOVAL OF FOREIGN BODY FROM ABDOMINAL CAVITY,Laparotomy and repair of multiple visceral trauma,Complex,Yes -Gynaecology,LAPAROTOMY AND REMOVAL OF FOREIGN BODY FROM ABDOMINAL CAVITY,Laparotomy and repair of multiple visceral trauma,Complex,Yes -Urology,LAPAROTOMY AND REMOVAL OF FOREIGN BODY FROM ABDOMINAL CAVITY,Laparotomy and repair of multiple visceral trauma,Complex,Yes -Gynaecology,LAPAROTOMY WITH BIOPSY OF OMENTUM,Wedge excision or removal of omentum (as sole procedure),Major,No -Gynaecology,LARGE LOOP EXCISION OF TRANSFORMATION ZONE,"Cone biopsy of cervix uteri and/or (+/- laser, colposcopy or polypectomy)",Intermediate,No -ENT,LARYNGEAL REINNERVATION BY NEUROMUSCULAR PEDICLE,Reconstruction of larynx with graft,Complex,No -Head and Neck,LARYNGECTOMY,Total laryngectomy,Complex,Yes -,LARYNGECTOMY,Total laryngectomy,Complex,Yes -ENT,LARYNGECTOMY,Total laryngectomy,Complex,Yes -Head and Neck,LARYNGOPHARYNGECTOMY,Total laryngectomy,Complex,Yes -Head and Neck,"LARYNGOSCOPY, PHARYNGOSCOPY AND OESOPHAGOSCOPY",Panendoscopy +/- incisional biopsy,Intermediate,No -,"LARYNGOSCOPY, PHARYNGOSCOPY AND OESOPHAGOSCOPY",Panendoscopy +/- incisional biopsy,Intermediate,No -Head and Neck,LASER BEAM PHOTOCOAGULATION,-,Unknown,No -ENT,LASER DESTRUCTION OF LESION OF EXTERNAL NOSE,Excision of lesion of external nose,Minor,No -,LASER DESTRUCTION OF LESION OF EXTERNAL NOSE,Excision of lesion of external nose,Minor,No -Paediatric ENT,LASER DESTRUCTION OF LESION OF EXTERNAL NOSE,Excision of lesion of external nose,Minor,No -ENT,LASER DESTRUCTION OF SKIN LESION,"Excision of lesion of skin or subcutaneous tissue - up to three, Head & Neck (excluding lipoma)",Minor,No -Urology,LASER ENDOPYELOTOMY,Therapeutic endoscopic operations on kidney (including cystoscopy and retrograde catheterisation),Major,No -Head and Neck,LASER MICROLARYNGOSCOPY,Laser surgery to vocal cord (including microlaryngoscopy),Intermediate,No -ENT,LASER MICROLARYNGOSCOPY,Laser surgery to vocal cord (including microlaryngoscopy),Intermediate,No -Head and Neck,LASER RESURFACING OF SKIN,Laser destruction of lesion(s) of skin - up to 25cm² in area,Minor,No -Head and Neck,LASER SURGERY,"Transoral laser microsurgery, including pharyngotomy, partial laryngectomy, partial glossectomy and/ or tracheostomy",Complex,Yes -ENT,LASER SURGERY,"Transoral laser microsurgery, including pharyngotomy, partial laryngectomy, partial glossectomy and/ or tracheostomy",Complex,Yes -Head and Neck,LASER SURGERY OF MOUTH,"Transoral laser microsurgery, including pharyngotomy, partial laryngectomy, partial glossectomy and/ or tracheostomy",Complex,Yes -Colorectal Surgery,LATERAL SPHINCTEROTOMY,Lateral sphincterotomy of anus,Minor,No -Colorectal Surgery,LAYING OPEN OF ANAL FISTULA,Laying open of low anal fistula (fistulotomy) (including sigmoidoscopy),Intermediate,No -General Surgery,LAYING OPEN OF HIGH ANAL FISTULA,Laying open of high anal fistula (fistulotomy) (including sigmoidoscopy),Major,No -General Surgery,LAYING OPEN OF LOW ANAL FISTULA,Laying open of low anal fistula (fistulotomy) (including sigmoidoscopy),Intermediate,No -Maxillo-Facial Surgery,LE FORT I OSTEOTOMY,Hemi-maxillectomy for malignancy,Xmajor,No -Maxillo-Facial Surgery,LE FORT I OSTEOTOMY OF MAXILLA INTO ONE SEGMENT WITH GRAFTING OF BONE,Hemi-maxillectomy for malignancy,Xmajor,No -Oral Surgery,LE FORT I OSTEOTOMY OF MAXILLA INTO ONE SEGMENT WITH GRAFTING OF BONE,Hemi-maxillectomy for malignancy,Xmajor,No -General Surgery,LEFT COLECTOMY,Excision of left hemicolon,Xmajor,No -Colorectal Surgery,LEFT HEMICOLECTOMY WITH ANASTOMOSIS,Excision of left hemicolon,Xmajor,No -General Surgery,LEFT LATERAL ANAL SPHINCTEROTOMY,Repair of anal sphincter (including sigmoidoscopy),Major,No -Urology,LEFT RADICAL ORCHIDECTOMY,Laparoscopic orchidectomy,Intermediate,No -Gynaecology,LEFT SALPINGECTOMY,Salpingectomy (including bilateral) (as sole procedure),Major,No -Gynaecology,LEFT SALPINGO-OOPHORECTOMY,"Laparoscopic oophorectomy and salpingectomy, +/- biopsy eg. omentum, peritoneum, lymph node (as sole procedure) ? unilateral",Major,No -Urology,LEFT TOTAL ORCHIDECTOMY,Laparoscopic orchidectomy,Intermediate,No -General Surgery,LICHTENSTEIN REPAIR OF INGUINAL HERNIA,Primary repair of inguinal hernia,Intermediate,No -Colorectal Surgery,LICHTENSTEIN REPAIR OF INGUINAL HERNIA,Primary repair of inguinal hernia,Intermediate,No -Urology,LIGAMENT RECONSTRUCTION,-,Unknown,No -Orthopaedics,LIGAMENT RECONSTRUCTION,Reconstruction of ligament,Major,No -Orthopaedics,"LIGAMENTOUS RECONSTRUCTION OF KNEE, INTRA-ARTICULAR AND EXTRA-ARTICULAR",Repair of knee ligaments (open or arthroscopic),Major,No -Head and Neck,LIGATION OF EXTERNAL CAROTID ARTERY FOR NASAL HAEMORRHAGE,"Ligation of artery of internal nose (including endoscopic, as sole procedure)",Intermediate,No -ENT,LIGATION OF MAXILLARY ARTERY,"Ligation of artery of internal nose (including endoscopic, as sole procedure)",Intermediate,No -Orthopaedics,LIMITED PALMAR FASCIECTOMY,Dupuytren’s fasciectomy palm only,Intermediate,No -Thoracic Surgery,LIMITED THORACOTOMY,Exploratory thoracotomy,Major,Yes -Thoracic Surgery,LIMITED THORACOTOMY AND BIOPSY OF LUNG,Thoracotomy and lung biopsy as sole procedure,Intermediate,Yes -Head and Neck,LINGUAL THYROIDECTOMY BY TRANSORAL ROUTE,Total thyroid lobectomy and isthmectomy,Major,No -Thoracic Surgery,LINGULECTOMY OF LUNG,Pulmonary lobectomy including segmental resection,Complex,Yes -Head and Neck,LIP EXCISION,Excision of lesion of lip,Intermediate,No -Head and Neck,LIP RECONSTRUCTION,Reconstruction of lip using skin flap,Major,No -Head and Neck,LIPOFILLING OF SUBCUTANEOUS TISSUE OF RECONSTRUCTED BREAST,LOCAL MOBILISATION OF GLANDULAR BREAST TISSUE TO FILL SURGICAL CAVITY,Intermediate,No -Thoracic Surgery,LOBECTOMY,Pulmonary lobectomy including segmental resection,Complex,Yes -,LOBECTOMY OF LOWER LOBE OF LEFT LUNG,Pulmonary lobectomy including segmental resection,Complex,No -Thoracic Surgery,LOBECTOMY OF LOWER LOBE OF LEFT LUNG,Pulmonary lobectomy including segmental resection,Complex,Yes -Thoracic Surgery,LOBECTOMY OF LOWER LOBE OF RIGHT LUNG,Pulmonary lobectomy including segmental resection,Complex,Yes -Thoracic Surgery,LOBECTOMY OF LUNG,Pulmonary lobectomy including segmental resection,Complex,Yes -Thoracic Surgery,LOBECTOMY OF MIDDLE LOBE OF RIGHT LUNG,Pulmonary lobectomy including segmental resection,Complex,Yes -General Surgery,LOBECTOMY OF THYROID GLAND,Total thyroid lobectomy and isthmectomy,Major,No -Head and Neck,LOBECTOMY OF THYROID GLAND,Total thyroid lobectomy and isthmectomy,Major,No -Thoracic Surgery,LOBECTOMY OF THYROID GLAND,Total thyroid lobectomy and isthmectomy,Major,Yes -,LOBECTOMY OF THYROID GLAND,Total thyroid lobectomy and isthmectomy,Major,No -Thoracic Surgery,LOBECTOMY OF UPPER BILOBECTOMY OF RIGHT LUNG,Pulmonary lobectomy including segmental resection,Complex,Yes -Thoracic Surgery,LOBECTOMY OF UPPER LOBE OF LEFT LUNG,Pulmonary lobectomy including segmental resection,Complex,Yes -Thoracic Surgery,LOBECTOMY OF UPPER LOBE OF RIGHT LUNG,Pulmonary lobectomy including segmental resection,Complex,Yes -Colorectal Surgery,LOCAL ADVANCEMENT FLAP,Local flap ? less than 9cm2,Major,No -Head and Neck,LOCAL EXCISION,"Excision of lesion of skin or subcutaneous tissue - up to three, Head & Neck (excluding lipoma)",Minor,No -Urology,LOCAL EXCISION OF LESION OF URETHRA,Excision of urethral caruncle,Minor,No -Gynaecology,LOCAL EXCISION OF LESION OF VULVA,Excision of lesion of vulva,Minor,No -Thoracic Surgery,"LOCAL EXCISION OF LESION OR TISSUE OF THORAX, RIBS OR STERNUM",Excision of chest wall tumour - with chest wall reconstruction,Xmajor,Yes -Head and Neck,LOCAL EXCISION OF SKIN,"Excision of lesion of skin or subcutaneous tissue - up to three, Head & Neck (excluding lipoma)",Minor,No -Head and Neck,LOCAL EXCISION OF SKIN AND SUBCUTANEOUS TISSUE,Primary excision of malignant lesion - head and neck,Intermediate,No -Head and Neck,LOCAL ROTATION FLAP,Local flap ? less than 9cm2,Major,Yes -Urology,LOCAL ROTATION FLAP,Local flap ? less than 9cm2,Major,No -Head and Neck,"LOCAL ROTATION FLAP, MYOCUTANEOUS",Local flap ? less than 9cm2,Major,Yes -Orthopaedics,LOCALISED FUSION OF JOINTS OF MIDFOOT AND FOREFOOT,Isolated sub talar fusion or mid foot fusion without autogenous graft (adult),Major,No -General Surgery,LONG OESOPHAGEAL MYOTOMY,Oesophagocardiomyotomy (Heller's operation),Major,No -Upper Gastro-intestinal Surgery,LONG OESOPHAGEAL MYOTOMY,Oesophagocardiomyotomy (Heller's operation),Major,No -Colorectal Surgery,LOOP COLOSTOMY,Open formation of colostomy,Major,No -General Surgery,LOW ANTERIOR RESECTION OF RECTUM,Anterior resection - low (ie colorectal anastomosis at or below the peritoneal reflection,Complex,No -Colorectal Surgery,LOW ANTERIOR RESECTION OF RECTUM,Anterior resection - low (ie colorectal anastomosis at or below the peritoneal reflection,Complex,No -Colorectal Surgery,LOW ANTERIOR RESECTION OF RECTUM AND TOTAL EXCISION OF MESORECTUM,Anterior resection - low (ie colorectal anastomosis at or below the peritoneal reflection,Complex,No -,LUMBAR PUNCTURE,Lumbar puncture (including spinal manometry),Minor,No -Breast Surgery,LUMPECTOMY OF RIGHT BREAST,Excision of breast lump/fibroadenoma,Intermediate,No -Thoracic Surgery,LUNG EXCISION,Pneumonectomy,Complex,Yes -Thoracic Surgery,LUNG RESECTION WITH CHEST WALL EXCISION,Lung resection with resection of chest wall,Complex,Yes -Thoracic Surgery,LUNG TUMOUR EXCISION,Open excision of lesion of lung,Complex,Yes -Thoracic Surgery,LUNG VOLUME REDUCTION SURGERY,VATS lung volume reduction - unilateral,Complex,Yes -Gynaecology,LYSIS OF ADHESIONS,Freeing of adhesions of peritoneum,Major,No -Orthopaedics,LYSIS OF ADHESIONS OF JOINT,Therapeutic arthroscopy operation on cavity of joint (not otherwise specified) (as sole procedure),Major,No -Gynaecology,LYSIS OF ADHESIONS OF VAGINA,Excision of lesion of vagina (e.g. warts and cysts),Intermediate,No -Urology,LYSIS OF PENILE ADHESIONS,Repair of injury to penis,Intermediate,No -Maxillo-Facial Surgery,MALAR AUGMENTATION WITH ALLOPLASTIC MATERIAL,Open reduction of fracture of zygomatic complex of bones,Major,No -Urology,MALE ARTIFICIAL URINARY SPHINCTER PROCEDURE,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -General Surgery,MALONE'S OPERATION,Appendicectomy,Major,No -Breast Surgery,MAMMOPLASTY,Reduction mammoplasty - unilateral,Major,No -Head and Neck,MANDIBLE EXCISION/RECONSTRUCTION,Excision of mandible,Major,No -Head and Neck,MANDIBULAR CORONOIDECTOMY,Excision of mandible,Major,No -,MANIPULATION OF KNEE JOINT UNDER GENERAL ANAESTHESIA,Examination/ manipulation of joint under general anaesthetic +/- injection +/- arthrogram (as sole procedure),Minor,No -Orthopaedics,MANIPULATION OF KNEE JOINT UNDER GENERAL ANAESTHESIA,Examination/ manipulation of joint under general anaesthetic +/- injection +/- arthrogram (as sole procedure),Minor,No -Urology,MANIPULATION OF SEMINAL VESICLE,Operation(s) on seminal vesicle,Major,No -Orthopaedics,MANIPULATION UNDER GENERAL ANAESTHESIA (MUA),Examination/ manipulation of joint under general anaesthetic +/- injection +/- arthrogram (as sole procedure),Minor,No -,MANIPULATION UNDER GENERAL ANAESTHESIA (MUA),-,Minor,No -Head and Neck,MARSUPIALISATION,-,Unknown,No -Urology,MARSUPIALISATION OF DIVERTICULUM OF URETHRA,Excision of urethral caruncle,Minor,No -Urology,MARSUPIALISATION OF PROSTATE,Drainage of prostatic abscess,Intermediate,No -Breast Surgery,MASTECTOMY AND AXILLARY CLEARANCE,Radical mastectomy including block dissection,Major,No -Breast Surgery,MASTECTOMY OF LEFT BREAST,Simple mastectomy (including axillary node biopsy) ? unilateral,Major,No -Breast Surgery,MASTECTOMY OF RIGHT BREAST,Simple mastectomy (including axillary node biopsy) ? unilateral,Major,No -Breast Surgery,MASTECTOMY WITH PRESERVATION OF SKIN AND NIPPLE WITH SYNCHRONOUS IMPLANT,Mastectomy and immediate reconstruction of breast using expandable prosthesis and acellular dermal matrix (ADM) - unilateral,Xmajor,No -ENT,MASTOID OPERATION,Simple mastoidectomy,Major,No -Paediatric ENT,MASTOID OPERATION,Simple mastoidectomy,Major,No -ENT,MASTOIDECTOMY,Simple mastoidectomy,Major,No -Paediatric ENT,MASTOIDECTOMY,Simple mastoidectomy,Major,No -ENT,MASTOIDOTOMY,Simple mastoidectomy,Major,No -Breast Surgery,MASTOPEXY LATERALISING TECHNIQUE,Unilateral Mastopexy,Xmajor,No -Head and Neck,MAXILLECTOMY,Partial maxillectomy for malignancy,Xmajor,No -ENT,MAXILLECTOMY,Partial maxillectomy for malignancy,Xmajor,No -Head and Neck,MAXILLECTOMY WITH ORBITAL EXENTERATION,Partial maxillectomy for malignancy,Xmajor,No -ENT,MEATOPLASTY OF EXTERNAL EAR,Soft tissue meatoplasty of EAC,Intermediate,No -Urology,MEATOPLASTY OF URETHRA,Meatoplasty,Intermediate,No -Urology,MEATOTOMY OF URETHRA,Meatoplasty,Intermediate,No -Orthopaedics,MEDIAL CLOSING WEDGE OSTEOTOMY OF PROXIMAL PHALANX OF FIRST TOE,Partial excision of bone (including exostoses),Intermediate,No -ENT,MEDIAN DRAINAGE OF FRONTAL SINUS,Median drainage of frontal sinus (modified Lothrop procedure) and bilateral,Complex,No -Thoracic Surgery,MEDIAN STERNOTOMY,-,Complex,Yes -Thoracic Surgery,MEDIAN STERNOTOMY AND RETROSTERNAL PARATHYROIDECTOMY,Mediastinal parathyroidectomy with sternotomy,Complex,Yes -Thoracic Surgery,MEDIAN STERNOTOMY AND RETROSTERNAL THYROIDECTOMY,Operations on aberrant thyroid tissue (including excision/removal of retrosternal goitre),Xmajor,Yes -Thoracic Surgery,MEDIASTINOSCOPY,Diagnostic mediastinoscopy,Intermediate,Yes -Thoracic Surgery,MEDIASTINOSCOPY AND LYMPH NODE SAMPLING,Diagnostic mediastinoscopy,Intermediate,Yes -Thoracic Surgery,MEDIASTINUM EXCISION,Open resection of invasive mediastinal tumour,Complex,Yes -Head and Neck,MICRODISSECTION OF NERVE,Excision of lesion of peripheral nerve (eg neurilemoma),Intermediate,No -Breast Surgery,MICRODOCHECTOMY,Microdochotomy,Intermediate,No -Head and Neck,MICROLARYNGOSCOPIC VOCAL CORD POLYPECTOMY,"Microlaryngoscopy/laryngoscopy +/- biopsy, excision of lesion, polyp or cyst",Intermediate,No -ENT,MICROLARYNGOSCOPIC VOCAL CORD POLYPECTOMY,"Microlaryngoscopy/laryngoscopy +/- biopsy, excision of lesion, polyp or cyst",Intermediate,No -Head and Neck,MICROLARYNGOSCOPY,"Microlaryngoscopy/laryngoscopy +/- biopsy, excision of lesion, polyp or cyst",Intermediate,No -ENT,MICROLARYNGOSCOPY,"Microlaryngoscopy/laryngoscopy +/- biopsy, excision of lesion, polyp or cyst",Intermediate,No -,MICROLARYNGOSCOPY,"Microlaryngoscopy/laryngoscopy +/- biopsy, excision of lesion, polyp or cyst",Intermediate,No -Urology,MICROSURGICAL EPIDIDYMOVASOSTOMY,Unilateral epididymectomy,Minor,No -Head and Neck,MID FACE LIFT,-,Xmajor,No -ENT,MIDDLE EAR EXPLORATION THROUGH EAR CANAL INCISION,Middle ear tumour excision,Major,No -Orthopaedics,"MIDTARSAL ARTHRODESIS, NAVICULAR-CUNEIFORM, WITH TENDON LENGTHENING AND ADVANCEMENT",Complex procedure to mid foot or hind foot without autogenous bone graft (osteotomy/fusion +/? tendon transfers),Xmajor,No -Orthopaedics,"MIDTARSAL ARTHRODESIS, TRANSVERSE",Isolated sub talar fusion or mid foot fusion without autogenous graft (adult),Major,No -Orthopaedics,MIDTARSAL FUSION,Isolated sub talar fusion or mid foot fusion without autogenous graft (adult),Major,No -Urology,MINI-ABDOMINOPLASTY,"Fat transfer, including extraction and volume adjustment, of scar defect following trauma (excluding breast)",Intermediate,No -Urology,MITROFANOFF CONSTRUCTION OF CONTINENT URINARY RESERVOIR,Cystostomy and insertion of suprapubic tube into bladder (including cystoscopy),Intermediate,No -Urology,MITROFANOSCOPY,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -Paediatric Urology,MITROFANOSCOPY,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -,MITROFANOSCOPY,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -Breast Surgery,MODIFIED RADICAL MASTECTOMY,Radical mastectomy including block dissection,Major,No -Breast Surgery,MODIFIED RADICAL MASTECTOMY OF RIGHT BREAST,Radical mastectomy including block dissection,Major,No -Head and Neck,MODIFIED RADICAL NECK DISSECTION,Radical dissection of cervical lymph nodes,Complex,Yes -Head and Neck,"MODIFIED RADICAL NECK DISSECTION OF CERVICAL LYMPH NODES, WITH PRESERVATION OF ACCESSORY NERVE",Radical dissection of cervical lymph nodes,Complex,Yes -Head and Neck,MUA - MANIPULATION UNDER ANAESTHETIC OF FRACTURED NASAL BONES,Manipulation under anaesthesia of fractured nose (as sole procedure),Minor,No -Vascular Surgery,MULTIPLE AVULSIONS OF VARICOSE VEINS,Local excision (multiple phlebectomy) of varicose vein(s) of leg - unilateral,Intermediate,No -Thoracic Surgery,MULTIPLE WEDGE EXCISIONS OF LUNG,Open excision of lesion of lung,Complex,Yes -Orthopaedics,MUSCLE TRANSFER,Microvascular free tissue transfer (when added to other codes) including closure of secondary defect,Complex,No -ENT,MYRINGOPLASTY,Myringoplasty,Major,No -Paediatric ENT,MYRINGOPLASTY,Myringoplasty,Major,No -ENT,MYRINGOTOMY AND INSERTION OF SHORT-TERM TYMPANIC VENTILATION TUBE,Myringotomy and insertion of tube through tympanic membrane (and bilateral),Intermediate,No -ENT,NASAL POLYPECTOMY,"Polypectomy of internal nose (and bilateral, including endoscopic)",Minor,No -Head and Neck,NASAL SEPTAL POLYPECTOMY,"Polypectomy of internal nose (and bilateral, including endoscopic)",Minor,No -ENT,NASAL SEPTOPLASTY,Septoplasty of nose (including attention to turbinates),Intermediate,No -,NASAL SEPTOPLASTY,Septoplasty of nose (including attention to turbinates),Intermediate,No -ENT,NASAL SEPTOPLASTY WITH SUBMUCOUS RESECTION OF NASAL SEPTUM,Septoplasty of nose (including attention to turbinates),Intermediate,No -Thoracic Surgery,NAVIGATIONAL BRONCHOSCOPIC INTRA-PULMONARY LESION BIOPSY,Endobronchial ultrasound-guided transbronchial needle aspiration (EBUS-TBNA) for mediastinal masses,Major,Yes -Head and Neck,NECK DESTRUCTIVE PROCEDURE,Radical dissection of cervical lymph nodes,Complex,Yes -Urology,NEPHRECTOMY WITH EXCISION OF PERIRENAL TISSUE,Nephrectomy and excision of perirenal tissue,Xmajor,No -Urology,NEPHROSTOGRAM,Percutaneous insertion of nephrostomy tube,Intermediate,No -Urology,NEPHROSTOMY,Percutaneous insertion of nephrostomy tube,Intermediate,No -Urology,NEPHROURETERECTOMY,Nephroureterectomy - unilateral,Xmajor,No -Urology,NEPHROURETERECTOMY WITH OPEN LOWER URETERECTOMY,Nephroureterectomy - unilateral,Xmajor,No -Thoracic Surgery,NERVE EXCISION,Excision of lesion of peripheral nerve (eg neurilemoma),Intermediate,No -Urology,NESBIT'S OPERATION ON PENIS,Operation for Peyronie's disease (eg Nesbitt's),Intermediate,No -,NESBIT'S OPERATION ON PENIS,Operation for Peyronie's disease (eg Nesbitt's),Intermediate,No -ENT,NEURECTOMY OF VIDIAN NERVE,Vidian neurectomy (including endoscopic),Major,No -Anaesthetics,NEUROSTIMULATION OF SPINAL CORD TISSUE,Implantation of spinal cord stimulator,Major,No -Bariatrics,NISSEN FUNDOPLICATION,Laparoscopic repair of hiatus hernia with anti-reflux procedure (eg fundoplication),Major,No -ENT,NOSE CLOSURE,-,Minor,No -ENT,OBLITERATION OF MASTOID CAVITY,Simple mastoidectomy,Major,No -Upper Gastro-intestinal Surgery,OESOPHAGEAL HIATUS HERNIA REPAIR,Transabdominal repair of hiatus hernia,Major,No -General Surgery,OESOPHAGEAL HIATUS HERNIA REPAIR,Transabdominal repair of hiatus hernia,Major,No -,OESOPHAGEAL HIATUS HERNIA REPAIR,Transabdominal repair of hiatus hernia,Major,No -Upper Gastro-intestinal Surgery,OESOPHAGECTOMY,Oesophagectomy/oesophagogastrectomy with anastomosis in chest,Complex,Yes -General Surgery,OESOPHAGECTOMY,Oesophagectomy/oesophagogastrectomy with anastomosis in chest,Complex,Yes -Bariatrics,OESOPHAGOGASTRODUODENOSCOPY,"Diagnostic eosophago-gastro-duodenoscopy (OGD) includes forceps biopsy, biopsy urease test and dye spray",Minor,No -General Surgery,OESOPHAGOGASTRODUODENOSCOPY,"Diagnostic eosophago-gastro-duodenoscopy (OGD) includes forceps biopsy, biopsy urease test and dye spray",Minor,No -Endoscopy,OESOPHAGOGASTRODUODENOSCOPY,"Diagnostic eosophago-gastro-duodenoscopy (OGD) includes forceps biopsy, biopsy urease test and dye spray",Minor,No -,OESOPHAGOGASTRODUODENOSCOPY,"Diagnostic eosophago-gastro-duodenoscopy (OGD) includes forceps biopsy, biopsy urease test and dye spray",Minor,No -Upper Gastro-intestinal Surgery,OESOPHAGOMYOTOMY,Oesophagectomy/oesophagogastrectomy with anastomosis in chest,Complex,Yes -Gynaecology,OMENTECTOMY,Wedge excision or removal of omentum (as sole procedure),Major,No -ENT,ONE STAGE INSERTION OF FIXTURES FOR BONE ANCHORED HEARING PROSTHESIS,Insertion of cochlear implant - unilateral,Complex,No -Paediatric ENT,ONE STAGE INSERTION OF FIXTURES FOR BONE ANCHORED HEARING PROSTHESIS,Insertion of cochlear implant - unilateral,Complex,No -,ONE STAGE INSERTION OF FIXTURES FOR BONE ANCHORED HEARING PROSTHESIS,Insertion of cochlear implant - unilateral,Complex,No -General Surgery,ONE-ANASTOMOSIS GASTRIC BYPASS,Laparoscopic biliary gastric bypass,Complex,No -Gynaecology,OOPHORECTOMY,"Open oophorectomy and salpingectomy, +/- biopsy eg. omentum, peritoneum, lymph node (as sole procedure) - unilateral",Major,No -Gynaecology,OPEN ABDOMINOPERINEAL RESECTION,Abdominoperineal resection of rectum and anus,Complex,No -Head and Neck,OPEN BIOPSY,Biopsy of lesion of mouth,Minor,No -Gynaecology,OPEN BIOPSY OF LESION OF PERITONEAL CAVITY,Omental biopsy +/- an ascitic drain under image guidance,Intermediate,No -Urology,OPEN BIOPSY OF URETHRAL LESION,Excision of urethral caruncle,Minor,No -Urology,OPEN BLADDER DIVERTICULECTOMY,Diverticulectomy of bladder,Major,No -Gynaecology,OPEN COLPOSUSPENSION,Retropubic suspension of neck of bladder (including colposuspension)(including cystoscopy),Major,No -Gynaecology,OPEN DEBULKING OF PARA-AORTIC LYMPH NODES,Block dissection of pelvic lymph nodes (as sole procedure),Major,Yes -Thoracic Surgery,OPEN EXCISION OF LESION OF LUNG,Open excision of lesion of lung,Complex,Yes -Colorectal Surgery,OPEN EXTENDED RIGHT HEMICOLECTOMY,Extended excision of right hemicolon,Xmajor,No -General Surgery,OPEN EXTENDED RIGHT HEMICOLECTOMY,Extended excision of right hemicolon,Xmajor,No -General Surgery,OPEN HIGH ANTERIOR RESECTION OF RECTUM,Anterior resection - high (i.e. colorectal anastomosis above the peritoneal reflection),Complex,No -,OPEN IRRIGATION OF HIP JOINT,"Diagnostic arthroscopic examination of hip joint including wash-out, with or without biopsy (as sole procedure)",Intermediate,No -General Surgery,OPEN LOW ANTERIOR RESECTION OF RECTUM,Anterior resection - low (ie colorectal anastomosis at or below the peritoneal reflection,Complex,No -Gynaecology,OPEN MYOMECTOMY,Myomectomy (including laparoscopically) +/- ureterolysis,Major,No -,OPEN MYOMECTOMY,Myomectomy (including laparoscopically) +/- ureterolysis,Major,No -Urology,OPEN OPERATION ON MALE URETHRA,"Simple urethroplasty, eg primary repair, segment, anterior urethra (including cystoscopy)",Major,No -Head and Neck,OPEN OSTEOTOMY OF MANDIBULAR ANGLE,Excision of mandible,Major,No -Urology,OPEN PROSTATECTOMY,"Radical prostatectomy, reconstruction of bladder neck including bilateral pelvic lymphadenectomy (including cystoscopy)",Complex,No -Gynaecology,OPEN RADICAL HYSTERECTOMY,Radical hysterectomy and lymphadenectomy (Wertheim's) +/- ureterolysis,Complex,No -Gynaecology,OPEN RADICAL HYSTERECTOMY WITH BILATERAL SALPINGO-OOPHORECTOMY,Radical hysterectomy and lymphadenectomy (Wertheim's) +/- ureterolysis,Complex,No -Orthopaedics,OPEN REDUCTION AND FIXATION,Primary open reduction of long bone with fixation,Major,No -,OPEN REDUCTION AND INTERNAL FIXATION OF FRACTURED MANDIBLE,Open reduction and fixation of fractured jaw,Intermediate,No -Head and Neck,OPEN REDUCTION AND INTERNAL FIXATION OF FRACTURED MANDIBLE,Open reduction and fixation of fractured jaw,Intermediate,No -Oral Surgery,OPEN REDUCTION AND INTERNAL FIXATION OF FRACTURED MANDIBLE,Open reduction and fixation of fractured jaw,Intermediate,No -Orthopaedics,OPEN REDUCTION AND INTERNAL FIXATION OF NON-UNION FRACTURE OF SCAPHOID WITH ILIAC CREST GRAFT,Open reduction and internal fixation of cancellous bone graft scaphoid non-union,Major,No -Maxillo-Facial Surgery,OPEN REDUCTION MAXILLARY FRACTURE,Open reduction and fixation of fractured jaw,Intermediate,No -,OPEN REDUCTION OF BIMALLEOLAR FRACTURE OF LATERAL AND MEDIAL MALLEOLI WITH INTERNAL FIXATION,"Primary open reduction of intra-articular fracture of long bone with internal fixation, eg proximal humerus or proximal tibia (with or without arthroscopic assistance)",Major,No -Orthopaedics,"OPEN REDUCTION OF CLOSED ACROMIOCLAVICULAR DISLOCATION, ACUTE",Primary open reduction of dislocation of small joint,Intermediate,No -Orthopaedics,"OPEN REDUCTION OF CLOSED ACROMIOCLAVICULAR DISLOCATION, ACUTE, WITH FASCIAL GRAFT",Primary open reduction of dislocation of large joint,Intermediate,No -Orthopaedics,OPEN REDUCTION OF DISLOCATION OF ACROMIOCLAVICULAR JOINT,Primary open reduction of dislocation of small joint,Intermediate,No -,OPEN REDUCTION OF DISLOCATION OF ACROMIOCLAVICULAR JOINT,Primary open reduction of dislocation of small joint,Intermediate,No -,OPEN REDUCTION OF DISLOCATION OF ELBOW,"Primary closed reduction of fracture or dislocation of joint, with or without fixation including cast application",Intermediate,No -Orthopaedics,OPEN REDUCTION OF DISLOCATION OF INTERPHALANGEAL JOINT OF TOE,Primary open reduction of dislocation of small joint,Intermediate,No -Orthopaedics,OPEN REDUCTION OF FRACTURE OF CALCANEUS WITH INTERNAL FIXATION,Primary open reduction of small bone with fixation including intra-articular,Intermediate,No -Orthopaedics,OPEN REDUCTION OF FRACTURE OF CLAVICLE WITH INTERNAL FIXATION,Primary open reduction of long bone with fixation ,Major,No -,OPEN REDUCTION OF FRACTURE OF CLAVICLE WITH INTERNAL FIXATION,Primary open reduction of long bone with fixation ,Major,No -Head and Neck,OPEN REDUCTION OF FRACTURE OF FACIAL BONE,Open reduction and fixation of fractured jaw,Intermediate,No -,OPEN REDUCTION OF FRACTURE OF FIBULA WITH INTERNAL FIXATION,Primary open reduction of long bone with fixation ,Major,No -Orthopaedics,OPEN REDUCTION OF FRACTURE OF HUMERUS,Primary open reduction of long bone with fixation,Major,No -Orthopaedics,OPEN REDUCTION OF FRACTURE OF HUMERUS WITH INTERNAL FIXATION,Primary open reduction of long bone with fixation,Major,No -Head and Neck,OPEN REDUCTION OF FRACTURE OF MANDIBLE WITH INTERNAL FIXATION,Open reduction and fixation of fractured jaw,Intermediate,No -Orthopaedics,OPEN REDUCTION OF FRACTURE OF MEDIAL MALLEOLUS WITH INTERNAL FIXATION,"Primary open reduction of intra-articular fracture of long bone with internal fixation, eg proximal humerus or proximal tibia (with or without arthroscopic assistance)",Major,No -,OPEN REDUCTION OF FRACTURE OF METACARPAL BONE WITH INTERNAL FIXATION,Primary open reduction of small bone with fixation including intra-articular,Intermediate,No -Orthopaedics,OPEN REDUCTION OF FRACTURE OF PATELLA WITH INTERNAL FIXATION,Primary open reduction of small bone with fixation including intra-articular,Intermediate,No -,OPEN REDUCTION OF FRACTURE OF PATELLA WITH INTERNAL FIXATION,Primary open reduction of small bone with fixation including intra-articular,Intermediate,No -,OPEN REDUCTION OF FRACTURE OF RADIUS AND ULNA,Primary open reduction of long bone with fixation ,Major,No -Orthopaedics,OPEN REDUCTION OF FRACTURE OF RADIUS AND ULNA,Primary open reduction of long bone with fixation,Major,No -,OPEN REDUCTION OF FRACTURE OF RADIUS AND ULNA WITH INTERNAL FIXATION,Primary open reduction of long bone with fixation ,Major,No -,OPEN REDUCTION OF FRACTURE OF RADIUS WITH INTERNAL FIXATION,Primary open reduction of long bone with fixation ,Major,No -Orthopaedics,OPEN REDUCTION OF FRACTURE OF RADIUS WITH INTERNAL FIXATION,Primary open reduction of long bone with fixation,Major,No -Orthopaedics,OPEN REDUCTION OF FRACTURE OF SCAPHOID BONE WITH INTERNAL FIXATION,Early open reduction and internal fixation of scaphoid fracture ie within 6 weeks of fracture,Major,No -Orthopaedics,OPEN REDUCTION OF FRACTURE OF SCAPULA WITH INTERNAL FIXATION,Primary open reduction of long bone with fixation ,Major,No -Orthopaedics,OPEN REDUCTION OF FRACTURE OF TIBIA WITH INTERNAL FIXATION,Primary open reduction of long bone with fixation,Major,No -,OPEN REDUCTION OF FRACTURE OF TIBIA WITH INTERNAL FIXATION,Primary open reduction of long bone with fixation ,Major,No -Orthopaedics,OPEN REDUCTION OF FRACTURE OF ULNA WITH INTERNAL FIXATION,Primary open reduction of long bone with fixation,Major,No -Maxillo-Facial Surgery,OPEN REDUCTION OF FRACTURE OF ZYGOMA OR ZYGOMATIC ARCH,Open reduction of fracture of zygomatic complex of bones,Major,No -,OPEN REDUCTION OF FRACTURE WITH INTERNAL FIXATION,Primary open reduction of long bone with fixation ,Major,No -Orthopaedics,OPEN REDUCTION OF FRACTURE WITH INTERNAL FIXATION,Primary open reduction of long bone with fixation,Major,No -ENT,OPEN REDUCTION OF MALAR AND ZYGOMATIC FRACTURE,Open reduction of fracture of zygomatic complex of bones,Major,No -Maxillo-Facial Surgery,OPEN REDUCTION OF MALAR AND ZYGOMATIC FRACTURE,Open reduction of fracture of zygomatic complex of bones,Major,No -Head and Neck,OPEN REDUCTION OF MALAR AND ZYGOMATIC FRACTURE,Open reduction of fracture of zygomatic complex of bones,Major,No -Orthopaedics,OPEN REDUCTION OF OPEN FRACTURE OF RADIUS WITH INTERNAL FIXATION,Primary open reduction of long bone with fixation,Major,No -Orthopaedics,"OPEN REDUCTION OF OPEN STERNOCLAVICULAR DISLOCATION, CHRONIC, WITH FASCIAL GRAFT",Primary open reduction of dislocation of large joint,Intermediate,No -Orthopaedics,OPEN REDUCTION OF ORBITAL FLOOR BLOWOUT FRACTURE BY PERIORBITAL APPROACH,-,Major,No -Colorectal Surgery,OPEN REPAIR OF FEMORAL HERNIA,Primary repair of femoral hernia,Intermediate,No -General Surgery,OPEN REPAIR OF FEMORAL HERNIA USING SYNTHETIC MESH,Primary repair of femoral hernia,Intermediate,No -Orthopaedics,OPEN REPAIR OF GLENOID LABRUM,Open sub acromial decompression and rotator cuff repair +/- excision of distal clavicle,Major,No -General Surgery,OPEN REPAIR OF INCISIONAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -Colorectal Surgery,OPEN REPAIR OF INCISIONAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -Upper Gastro-intestinal Surgery,OPEN REPAIR OF INCISIONAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -Bariatrics,OPEN REPAIR OF INCISIONAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -,OPEN REPAIR OF INCISIONAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -General Surgery,OPEN REPAIR OF INCISIONAL HERNIA USING BIOLOGICAL MESH,Open repair of incisional hernia requiring mesh,Intermediate,No -,OPEN REPAIR OF INCISIONAL HERNIA USING BIOLOGICAL MESH,Open repair of incisional hernia requiring mesh,Intermediate,No -Gastroenterology,OPEN REPAIR OF INCISIONAL HERNIA USING BIOLOGICAL MESH WITH ANTERIOR COMPONENT SEPARATION,Open repair of incisional hernia requiring mesh,Intermediate,No -Bariatrics,OPEN REPAIR OF INCISIONAL HERNIA USING SYNTHETIC MESH,Open repair of incisional hernia requiring mesh,Intermediate,No -Gastroenterology,OPEN REPAIR OF INCISIONAL HERNIA USING SYNTHETIC MESH,Open repair of incisional hernia requiring mesh,Intermediate,No -Upper Gastro-intestinal Surgery,OPEN REPAIR OF INCISIONAL HERNIA USING SYNTHETIC MESH WITH POSTERIOR COMPONENT SEPARATION,Open repair of incisional hernia requiring mesh,Intermediate,No -General Surgery,OPEN REPAIR OF INCISIONAL HERNIA USING SYNTHETIC MESH WITH POSTERIOR COMPONENT SEPARATION,Open repair of incisional hernia requiring mesh,Intermediate,No -General Surgery,OPEN REPAIR OF INGUINAL HERNIA,Primary repair of inguinal hernia,Intermediate,No -Upper Gastro-intestinal Surgery,OPEN REPAIR OF INGUINAL HERNIA,Primary repair of inguinal hernia,Intermediate,No -Colorectal Surgery,OPEN REPAIR OF INGUINAL HERNIA,Primary repair of inguinal hernia,Intermediate,No -,OPEN REPAIR OF INGUINAL HERNIA,Primary repair of inguinal hernia,Intermediate,No -General Surgery,OPEN REPAIR OF INGUINAL HERNIA USING BIOLOGICAL MESH,Primary repair of inguinal hernia,Intermediate,No -Bariatrics,OPEN REPAIR OF INGUINAL HERNIA USING SYNTHETIC MESH,Primary repair of inguinal hernia,Intermediate,No -,OPEN REPAIR OF INGUINAL HERNIA USING SYNTHETIC MESH,Primary repair of inguinal hernia,Intermediate,No -General Surgery,OPEN REPAIR OF INGUINAL HERNIA USING SYNTHETIC MESH,Primary repair of inguinal hernia,Intermediate,No -Colorectal Surgery,OPEN REPAIR OF RECURRENT INCISIONAL HERNIA USING SYNTHETIC MESH,Repair of recurrent incisional hernia not requiring mesh,Major,No -Upper Gastro-intestinal Surgery,OPEN REPAIR OF RECURRENT INGUINAL HERNIA USING SYNTHETIC MESH,Primary repair of inguinal hernia,Intermediate,No -General Surgery,OPEN REPAIR OF RECURRENT UMBILICAL HERNIA USING SYNTHETIC MESH,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -General Surgery,OPEN REPAIR OF SPIGELIAN HERNIA USING SYNTHETIC MESH,Open repair of Spigelian hernia with mesh,Intermediate,No -Upper Gastro-intestinal Surgery,OPEN REPAIR OF UMBILICAL HERNIA USING BIOLOGICAL MESH,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Colorectal Surgery,OPEN REPAIR OF UMBILICAL HERNIA USING BIOLOGICAL MESH,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Bariatrics,OPEN REPAIR OF UMBILICAL HERNIA USING SUTURES,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -General Surgery,OPEN REPAIR OF UMBILICAL HERNIA USING SUTURES,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Bariatrics,OPEN REPAIR OF UMBILICAL HERNIA USING SYNTHETIC MESH,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -,OPEN REPAIR OF UMBILICAL HERNIA USING SYNTHETIC MESH,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -General Surgery,OPEN REPAIR OF VENTRAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -Colorectal Surgery,OPEN REPAIR OF VENTRAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -Upper Gastro-intestinal Surgery,OPEN REPAIR OF VENTRAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -Maxillo-Facial Surgery,OPEN REPAIR OF ZYGOMATIC FRACTURE,Open reduction of fracture of zygomatic complex of bones,Major,No -Urology,OPEN RESECTION OF MALE BLADDER NECK,Resection of bladder neck (including cystoscopy),Intermediate,No -ENT,OPEN RHINOSEPTOPLASTY,Septorhinoplasty including graft/implant following trauma or excision of tumour (including attention to turbinates),Major,No -General Surgery,OPEN RIGHT HEMICOLECTOMY,Right hemicolectomy,Xmajor,No -Colorectal Surgery,OPEN RIGHT HEMICOLECTOMY,Right hemicolectomy,Xmajor,No -General Surgery,OPEN SUBTOTAL COLECTOMY,Excision of transverse colon,Xmajor,No -Thoracic Surgery,OPENING OF CHEST,Exploratory thoracotomy,Major,Yes -Urology,OPERATION FOR ANTI-INCONTINENCE,"Therapeutic injection into bladder neck for treatment of stress incontinence (periurethral bulking agents), including cystoscopy",Intermediate,No -Head and Neck,OPERATION FOR LESION OF MANDIBLE,Excision of lesion of jaw,Intermediate,No -Urology,OPERATION ON EPIDIDYMIS OR MALE GENITALIA FOR INFERTILITY,Excision of epididymal cyst,Intermediate,No -Orthopaedics,OPERATION WITH GRAFT FOR SLIPPING PATELLA,"Open surgical stabilisation of patella, including soft tissue/tendon transfer or release, +/- application of cast (adult)",Xmajor,No -Thoracic Surgery,OPERATIVE PROCEDURE ON CARTILAGE,Resection of rib and open drainage of pleural cavity,Major,Yes -Orthopaedics,OPERATIVE PROCEDURE ON ELBOW,Arthroscopy of elbow (as sole procedure),Major,No -,OPERATIVE PROCEDURE ON ELBOW,Arthroscopy of elbow (as sole procedure),Major,No -,OPERATIVE PROCEDURE ON HIP,-,Major,No -Orthopaedics,OPERATIVE PROCEDURE ON SHOULDER,Therapeutic arthroscopy of shoulder (as sole procedure),Major,No -Orthopaedics,OPERATIVE PROCEDURE ON WRIST,Therapeutic arthroscopy of wrist joint (sole procedure),Major,No -Special Needs Dental,ORAL EXAMINATION UNDER GENERAL ANAESTHESIA AND ANY DENTAL TREATEMENT REQUIRED,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Maxillo-Facial Surgery,ORAL EXAMINATION UNDER GENERAL ANAESTHESIA AND ANY DENTAL TREATEMENT REQUIRED,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Head and Neck,ORBITAL FLOOR IMPLANT OPERATION,Reconstruction of socket with either implant or graft,Complex,No -Head and Neck,ORBITAL IMPLANT INSERTION,Reconstruction of socket with either implant or graft,Complex,No -Urology,ORCHIDOPEXY,Orchidopexy,Intermediate,No -ENT,OSSICULECTOMY OF MIDDLE EAR,Ossiculoplasty,Xmajor,No -ENT,OSSICULECTOMY WITH TYMPANOPLASTY REVISION,Combined approach tympanoplasty - intact canal wall tympanoplasty,Major,No -ENT,OSSICULOPLASTY USING ARTIFICIAL PROSTHESIS,Ossiculoplasty,Xmajor,No -Paediatric ENT,OSSICULOPLASTY USING ARTIFICIAL PROSTHESIS,Ossiculoplasty,Xmajor,No -Head and Neck,OSSICULOPLASTY USING ARTIFICIAL PROSTHESIS,Ossiculoplasty,Xmajor,No -Orthopaedics,OSTEOPLASTY OF CLAVICLE,Repair of non-union of clavicle,Major,No -Orthopaedics,OSTEOTOMY,Partial excision of bone (including exostoses),Intermediate,No -Orthopaedics,OSTEOTOMY AND INTERNAL FIXATION,Partial excision of bone (including exostoses),Intermediate,No -Orthopaedics,OSTEOTOMY FOR ALTERATION OF BONE LENGTH,"Osteotomy of long bone, with/without fixation, including graft",Major,No -Orthopaedics,OSTEOTOMY FOR ANGULAR CORRECTION OF PROXIMAL PHALANX OF FIRST TOE,Partial excision of bone (including exostoses),Intermediate,No -Maxillo-Facial Surgery,OSTEOTOMY FOR CORRECTION OF BONY DEFORMITY,Partial excision of bone (including exostoses),Intermediate,No -Orthopaedics,OSTEOTOMY FOR HALLUX VALGUS,Partial excision of bone (including exostoses),Intermediate,No -Orthopaedics,OSTEOTOMY OF ACETABULAR BONE WITH FEMORAL OSTEOTOMY,Complex open reduction for congenital dislocation of hip (i.e. pelvic and femoral or Pemberton osteotomy or revision of open reduction),Complex,No -Orthopaedics,OSTEOTOMY OF BODY OF OS CALCIS,Partial excision of bone (including exostoses),Intermediate,No -Orthopaedics,OSTEOTOMY OF BODY OF OS CALCIS FOR CORRECTION CONGENITAL DEFORMITY OF FOOT,Partial excision of bone (including exostoses),Intermediate,No -Orthopaedics,OSTEOTOMY OF CALCANEUS,Partial excision of bone (including exostoses),Intermediate,No -Orthopaedics,OSTEOTOMY OF CLAVICLE,"Osteotomy of long bone, with/without fixation, including graft",Major,No -Orthopaedics,OSTEOTOMY OF CLAVICLE WITH INTERNAL FIXATION,"Osteotomy of long bone, with/without fixation, including graft",Major,No -Orthopaedics,OSTEOTOMY OF DISTAL FEMUR,"Osteotomy of long bone, with/without fixation, including graft",Major,No -Orthopaedics,OSTEOTOMY OF DISTAL TIBIA,Tibial osteotomy,Major,No -Orthopaedics,OSTEOTOMY OF FEMORAL NECK,Complex open reduction for congenital dislocation of hip (i.e. pelvic and femoral or Pemberton osteotomy or revision of open reduction),Complex,No -Orthopaedics,OSTEOTOMY OF GLENOID,"Osteotomy of long bone, with/without fixation, including graft",Major,No -Maxillo-Facial Surgery,OSTEOTOMY OF JAW,Reconstruction of jaw (non-vascularised reconstruction),Xmajor,No -Orthopaedics,OSTEOTOMY OF LESSER METATARSAL,Partial excision of bone (including exostoses),Intermediate,No -Orthopaedics,OSTEOTOMY OF LESSER METATARSAL NECK,Partial excision of bone (including exostoses),Intermediate,No -Head and Neck,OSTEOTOMY OF MANDIBLE,Extensive segmental excision of mandible,Xmajor,No -Maxillo-Facial Surgery,OSTEOTOMY OF MAXILLA,Partial maxillectomy for malignancy,Xmajor,No -Orthopaedics,OSTEOTOMY OF PROXIMAL FEMUR,"Osteotomy of long bone, with/without fixation, including graft",Major,No -Orthopaedics,OSTEOTOMY OF PROXIMAL TIBIA,Tibial osteotomy,Major,No -Orthopaedics,OSTEOTOMY OF RADIUS AND ULNA,"Osteotomy of long bone, with/without fixation, including graft",Major,No -Orthopaedics,OSTEOTOMY OF TIBIA,Tibial osteotomy,Major,No -Head and Neck,PALATE EXCISION,Excision/destruction of lesion of palate,Intermediate,No -ENT,PALATOPHARYNGOPLASTY,Removal of excess mucosa from mouth,Intermediate,No -Head and Neck,PALLIATIVE DEBULKING OF NEOPLASM FOR SYMPTOM RELIEF,-,Xmajor,Yes -ENT,PALLIATIVE DEBULKING OF NEOPLASM FOR SYMPTOM RELIEF,-,Xmajor,Yes -Urology,PANNICULECTOMY,-,Intermediate,No -Colorectal Surgery,PANPROCTOCOLECTOMY,Panproctocolectomy and ileostomy,Complex,No -Urology,PARASTOMAL HERNIORRHAPHY,Open repair of incisional hernia not requiring mesh,Intermediate,No -General Surgery,PARATHYROID ADENOMA EXCISION,Parathyroidectomy,Xmajor,No -General Surgery,PARATHYROIDECTOMY,Parathyroidectomy,Xmajor,No -Head and Neck,PARATHYROIDECTOMY,Parathyroidectomy,Xmajor,No -Gynaecology,PARAVAGINAL REPAIR,Reconstruction of vagina,Xmajor,No -General Surgery,"PARKS PANPROCTOCOLECTOMY, ANASTOMOSIS OF ILEUM TO ANUS AND CREATION OF POUCH",Panproctocolectomy and ileostomy,Complex,No -Head and Neck,PAROTID GLAND LOBECTOMY,Partial excision of parotid gland and preservation of facial nerve,Xmajor,No -Head and Neck,PAROTIDECTOMY,Total excision of parotid gland and preservation of facial nerve,Xmajor,No -,PAROTIDECTOMY,Total excision of parotid gland and preservation of facial nerve,Xmajor,No -ENT,PAROTIDECTOMY,Total excision of parotid gland and preservation of facial nerve,Xmajor,No -Urology,PARTIAL AMPUTATION OF PENIS,Partial amputation of penis,Major,No -Head and Neck,PARTIAL ANTEROVERTICAL LARYNGECTOMY,Vertical hemi-laryngectomy,Complex,Yes -Urology,PARTIAL CYSTECTOMY,Partial cystectomy (including cystoscopy),Major,No -Urology,PARTIAL CYSTECTOMY WITH EXCISION OF URACHAL REMNANT,Partial cystectomy (including cystoscopy),Major,No -Urology,PARTIAL CYSTECTOMY WITH REIMPLANTATION OF URETER INTO BLADDER,Partial cystectomy (including cystoscopy),Major,No -Breast Surgery,PARTIAL EXCISION OF BREAST USING GUIDE WIRE,Wide local excision of breast +/- local mobilisation of glandular breast tissue to fill surgical cavity,Intermediate,No -ENT,PARTIAL EXCISION OF INFERIOR TURBINATE,"Reduction turbinates of nose (trim, radical excision)",Intermediate,No -Maxillo-Facial Surgery,PARTIAL EXCISION OF INFERIOR TURBINATE,"Reduction turbinates of nose (trim, radical excision)",Intermediate,No -Head and Neck,PARTIAL GLOSSECTOMY,Partial glossectomy for malignancy,Major,No -Gynaecology,PARTIAL HYSTERECTOMY,Subtotal abdominal hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Head and Neck,PARTIAL MANDIBULECTOMY,Extensive segmental excision of mandible,Xmajor,No -Head and Neck,PARTIAL MAXILLECTOMY,Partial maxillectomy for malignancy,Xmajor,No -Urology,PARTIAL NEPHRECTOMY,Open partial nephrectomy,Major,No -Urology,PARTIAL ORCHIDECTOMY,Laparoscopic orchidectomy,Intermediate,No -General Surgery,PARTIAL PARATHYROIDECTOMY AND PARATHYROID TISSUE TRANSPOSITION,Parathyroidectomy,Xmajor,No -Head and Neck,PARTIAL PAROTIDECTOMY,Partial excision of parotid gland and preservation of facial nerve,Xmajor,No -ENT,PARTIAL PETROSECTOMY,Lateral petrosectomy (for tumour),Complex,No -Head and Neck,PARTIAL PETROSECTOMY,Lateral petrosectomy (for tumour),Complex,No -Paediatric ENT,PARTIAL PETROSECTOMY,Lateral petrosectomy (for tumour),Complex,No -Head and Neck,PARTIAL PHARYNGECTOMY,Partial pharyngectomy,Xmajor,Yes -ENT,PARTIAL PHARYNGECTOMY,Partial pharyngectomy,Xmajor,Yes -Urology,PARTIAL REMOVAL OF TRANSOBTURATOR TAPE,Insertion of suburethral tape sling (e.g. TOT or TVT) +/- administration of local anaesthetic by operating surgeon (including cystoscopy),Major,No -Head and Neck,PARTIAL RHINECTOMY,Total excision of nose,Major,No -Urology,PARTIAL SCROTECTOMY,Orchidectomy and excision of spermatic cord (+/- insertion of prosthesis),Intermediate,No -Orthopaedics,PARTIAL SHOULDER REPLACEMENT,"Shoulder hemiarthroplasty, as sole procedure",Xmajor,No -ENT,PARTIAL SUBMUCOUS RESECTION OF TURBINATE,"Reduction turbinates of nose (trim, radical excision)",Intermediate,No -Thoracic Surgery,PARTIAL THYMECTOMY,Complex primary total hip replacement including bone grafting or femoral osteotomy,Xmajor,Yes -Urology,PARTIAL URETHRECTOMY,Urethrectomy,Major,No -Gynaecology,PARTIAL VULVECTOMY,Simple vulvectomy,Major,No -Orthopaedics,PATELLA EXCISION,Patella resurfacing (as sole procedure),Major,No -Orthopaedics,PATELLAR STABILISATION BY TENDON TRANSFER,Transfer of tendon (not otherwise specified),Intermediate,No -Urology,PELVIC EXENTERATION,Total exenteration of pelvis,Complex,No -Gynaecology,"PELVIC EXENTERATION, FEMALE",Total exenteration of pelvis,Complex,Yes -Urology,PELVIC LYMPHADENECTOMY,Block dissection of pelvic lymph nodes (as sole procedure),Major,No -Urology,PENILE URETHROPLASTY,"Simple urethroplasty, eg primary repair, segment, anterior urethra (including cystoscopy)",Major,No -Urology,PENILE URETHROPLASTY - 1ST STAGE OF 2 STAGES,"Simple urethroplasty, eg primary repair, segment, anterior urethra (including cystoscopy)",Major,No -Urology,PENILE URETHROPLASTY - 2ND STAGE OF 2 STAGES,"Complex Urethroplasty, Eg Revision Surgery of the Anterior Urethra, Segment, Posterior Urethra, +/- Grafting (Including Cystoscopy)",Major,No -Urology,PENILE URETHROPLASTY - SINGLE STAGE,"Simple urethroplasty, eg primary repair, segment, anterior urethra (including cystoscopy)",Major,No -Urology,PENIS CLOSURE,Repair of injury to penis,Intermediate,No -Urology,PENIS EXCISION,Excision of lesion of penis,Intermediate,No -Thoracic Surgery,PERCUTANEOUS CRYOABLATION OF LUNG,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Uro-Gynaecology,PERCUTANEOUS NEPHROLITHOTOMY WITHOUT DISINTEGRATION,Percutaneous nephrolithotomy (including cystoscopy and retrograde catheterisation),Complex,No -Urology,PERCUTANEOUS REMOVAL OF CALCULUS FROM RENAL PELVIS BY INCISION USING FLUOROSCOPIC GUIDANCE,Percutaneous nephrolithotomy (including cystoscopy and retrograde catheterisation),Complex,No -Urology,PERCUTANEOUS REMOVAL OF CALCULUS FROM RENAL PELVIS USING FLUOROSCOPIC GUIDANCE,Percutaneous nephrolithotomy (including cystoscopy and retrograde catheterisation),Complex,No -Urology,PERCUTANEOUS REMOVAL OF URETERIC STENT,"Endoscopic insertion/removal of prosthesis into ureter (including bilateral and cystoscopy, +/- pyelography)",Major,No -Urology,PEREYRA OPERATION FOR PARAURETHRAL SUSPENSION,"Simple urethroplasty, eg primary repair, segment, anterior urethra (including cystoscopy)",Major,No -Orthopaedics,PERIACETABULAR OSTEOTOMY OF PELVIC BONE,Simple pelvic osteotomy and fixation eg Salter or Chiari osteotomies,Major,No -,PERIACETABULAR OSTEOTOMY OF PELVIC BONE,Simple pelvic osteotomy and fixation eg Salter or Chiari osteotomies,Major,No -Orthopaedics,PERIARTICULAR OSTEOTOMY FOR STABILISATION OF JOINT,"Osteotomy of long bone, with/without fixation, including graft",Major,No -Thoracic Surgery,PERICARDIAL-PLEURAL WINDOW,Pericardiocentesis,Intermediate,Yes -Colorectal Surgery,PERINEAL INCISION AND DRAINAGE,Drainage through perineal region (including ischiorectal abscess) (including sigmoidoscopy),Minor,No -Urology,PERINEAL INCISION AND DRAINAGE,Drainage through perineal region (including ischiorectal abscess) (including sigmoidoscopy),Minor,No -Urology,PERINEAL PROSTATECTOMY,"Radical prostatectomy, reconstruction of bladder neck including bilateral pelvic lymphadenectomy (including cystoscopy)",Complex,No -Urology,PERINEAL URETHROSTOMY,"Simple urethroplasty, eg primary repair, segment, anterior urethra (including cystoscopy)",Major,No -Urology,PERINEAL URETHROSTOMY USING BUCCAL MUCOSAL GRAFT,"Complex Urethroplasty, Eg Revision Surgery of the Anterior Urethra, Segment, Posterior Urethra, +/- Grafting (Including Cystoscopy)",Major,No -Gynaecology,PERINEAL-PULL-THROUGH VAGINOPLASTY,Reconstruction of vagina,Xmajor,No -Colorectal Surgery,PERINEUM EXCISION,Excision of lesion of anus,Minor,No -Gynaecology,PERINEUM RECONSTRUCTION,Operations on female perineum,Minor,No -Orthopaedics,PERIOSTEOTOMY,Partial excision of bone (including exostoses),Intermediate,No -Head and Neck,PERMANENT TRACHEOSTOMY,Tracheostomy,Intermediate,Yes -ENT,PHARYNGEAL OPERATION FOR OBSTRUCTIVE SLEEP APNOEA AND SNORING,Removal of excess mucosa from mouth,Intermediate,No -Head and Neck,PHARYNGECTOMY,Total pharyngectomy,Complex,Yes -Colorectal Surgery,PILONIDAL SINUS OPERATION,Excision of pilonidal sinus and suture/skin graft,Intermediate,No -Orthopaedics,PLASTIC OPERATION ON MUSCLE,Major release of muscle for pain or contracture (eg Quadriceps) (involving large joint),Intermediate,No -Urology,PLASTIC OPERATION ON PENIS,Reconstruction of penis,Major,No -Breast Surgery,PLASTIC OPERATION ON THE BREAST,Reconstruction of breast using expandable prosthesis (including delayed reconstruction),Major,No -Urology,PLASTIC REPAIR BY Z PLASTY,Scar revision up to 5cm - trunk & limbs,Minor,No -Orthopaedics,PLASTIC REPAIR OF MULTIPLE TEARS OF ROTATOR CUFF OF SHOULDER,Arthroscopic rotator cuff repair greater than 2cm,Xmajor,No -Orthopaedics,PLASTIC REPAIR OF ROTATOR CUFF OF SHOULDER,Open sub acromial decompression and rotator cuff repair +/- excision of distal clavicle,Major,No -Thoracic Surgery,PLEURAL BIOPSY AND CHEMICAL PLEURODESIS AND INDWELLING PLEURAL CATHETER (IPC) INSERTION,Thoracoscopy and drainage and chemical pleurodesis,Intermediate,Yes -Thoracic Surgery,PLICATION OF DIAPHRAGM,Plication of paralysed diaphragm,Xmajor,Yes -General Surgery,PLICATION OF RECTI,Open repair of incisional hernia not requiring mesh,Intermediate,No -Gynaecology,POSTERIOR COLPORRHAPHY WITH MESH,Posterior colporrhaphy,Intermediate,No -General Surgery,POSTERIOR FIXATION OF RECTUM,Fixation of rectum for prolapse,Major,No -Gynaecology,POSTERIOR REPAIR OF VAGINA,Reconstruction of vagina,Xmajor,No -Head and Neck,PREPROSTHETIC ORAL SURGERY,-,Unknown,No -,PRIMARY CEMENTED HEMIARTHROPLASTY OF HIP,Primary total hip replacement with or without cement,Xmajor,No -Orthopaedics,PRIMARY CEMENTED HEMIARTHROPLASTY OF SHOULDER,"Shoulder hemiarthroplasty, as sole procedure",Xmajor,No -Orthopaedics,PRIMARY CEMENTED TOTAL ELBOW REPLACEMENT,Total prosthetic replacement of elbow,Xmajor,No -Orthopaedics,PRIMARY CEMENTED TOTAL HIP REPLACEMENT,Primary total hip replacement with or without cement,Xmajor,No -Orthopaedics,PRIMARY CEMENTED TOTAL KNEE REPLACEMENT,"Total prosthetic replacement of knee joint, with or without cement, +/– patella",Xmajor,No -,PRIMARY CEMENTED TOTAL KNEE REPLACEMENT,"Total prosthetic replacement of knee joint, with or without cement, +/– patella",Xmajor,No -Orthopaedics,PRIMARY CEMENTED TOTAL SHOULDER REPLACEMENT,Primary total shoulder replacement,Xmajor,No -Orthopaedics,PRIMARY CEMENTED UNICOMPARTMENTAL KNEE REPLACEMENT,Unicompartmental knee replacement,Xmajor,No -Orthopaedics,PRIMARY FIXATION OF FRAGMENT OF CHONDRAL CARTILAGE OF INTRA-ARTICULAR FRACTURE OF BONE,"Primary open reduction of intra-articular fracture of long bone with internal fixation, eg proximal humerus or proximal tibia (with or without arthroscopic assistance)",Major,No -Orthopaedics,PRIMARY FUSION OF JOINT AND INTERNAL FIXATION,-,Major,No -Orthopaedics,PRIMARY HYBRID TOTAL REPLACEMENT OF HIP JOINT,Primary total hip replacement with or without cement,Xmajor,No -Orthopaedics,PRIMARY HYBRID TOTAL SHOULDER REPLACEMENT,Primary total shoulder replacement,Xmajor,No -Orthopaedics,PRIMARY INTERNAL FIXATION(WITHOUT REDUCTION) OF PROXIMAL FEMORAL FRACTURE WITH SCREW/NAIL AND INTRAMEDULLARY DEVICE,Locked intramedullary nailing of fractured long bone,Xmajor,No -Urology,PRIMARY LAPAROSCOPIC REPAIR OF INGUINAL HERNIA,Laparoscopic repair of inguinal hernia - unilateral,Intermediate,No -Maxillo-Facial Surgery,PRIMARY LOWER SUBCILIARY BLEPHAROPLASTY WITH SKIN AND MUSCLE EXCISION AND LATERAL TARSAL STRIP,"Correction of ptosis of eyelid - simple, including tarsomullerectomy",Major,No -,PRIMARY OPEN REDUCTION AND INTERNAL FIXATION OF PROXIMAL FEMORAL FRACTURE WITH SCREW/NAIL AND INTRAMEDULLARY DEVICE,Primary open reduction of long bone with fixation ,Major,No -Orthopaedics,PRIMARY OPEN REDUCTION OF FRACTURE AND INTERNAL FIXATION WITH MULTIPLE IMPLANT TYPES,Primary open reduction of long bone with fixation,Major,No -Orthopaedics,PRIMARY OPEN REDUCTION OF FRACTURE OF ANKLE AND EXTRAMEDULLARY FIXATION,"Primary open reduction of intra-articular fracture of long bone with internal fixation, eg proximal humerus or proximal tibia (with or without arthroscopic assistance)",Major,No -Orthopaedics,PRIMARY OPEN REDUCTION OF FRACTURE OF ELBOW AND FIXATION WITH HOOK FIXATION PLATE,"Primary open reduction of intra-articular fracture of long bone with internal fixation, eg proximal humerus or proximal tibia (with or without arthroscopic assistance)",Major,No -,PRIMARY OPEN REDUCTION OF FRACTURE OF NECK OF FEMUR AND OPEN FIXATION USING DYNAMIC HIP SCREW,Primary reduction of fracture of neck of femur and internal fixation ,Xmajor,No -Bariatrics,PRIMARY REPAIR OF EPIGASTRIC HERNIA WITH SUTURES,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -General Surgery,PRIMARY REPAIR OF INCISIONAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -Colorectal Surgery,PRIMARY REPAIR OF INCISIONAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -Colorectal Surgery,PRIMARY REPAIR OF INCISIONAL HERNIA USING NATURAL MATERIAL,Open repair of incisional hernia not requiring mesh,Intermediate,No -General Surgery,PRIMARY REPAIR OF INCISIONAL HERNIA USING SYNTHETIC PATCH,Open repair of incisional hernia requiring mesh,Intermediate,No -Colorectal Surgery,PRIMARY REPAIR OF INCISIONAL HERNIA USING SYNTHETIC PATCH,Open repair of incisional hernia requiring mesh,Intermediate,No -General Surgery,PRIMARY REPAIR OF INGUINAL HERNIA,Primary repair of inguinal hernia,Intermediate,No -Upper Gastro-intestinal Surgery,PRIMARY REPAIR OF INGUINAL HERNIA USING SYNTHETIC PATCH,Primary repair of inguinal hernia,Intermediate,No -General Surgery,PRIMARY REPAIR OF INGUINAL HERNIA USING SYNTHETIC PATCH,Primary repair of inguinal hernia,Intermediate,No -General Surgery,PRIMARY REPAIR OF PARAUMBILICAL HERNIA WITH PROSTHESIS,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -,"PRIMARY REPAIR OF TORN LIGAMENT OF KNEE, COLLATERAL",Repair of knee ligaments (open or arthroscopic),Major,No -General Surgery,PRIMARY REPAIR OF UMBILICAL HERNIA,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Orthopaedics,PRIMARY RESURFACING ARTHROPLASTY OF JOINT,Therapeutic arthroscopic operation on cavity of joint (not otherwise specified) (as sole procedure),Major,No -Orthopaedics,PRIMARY REVERSE POLARITY TOTAL PROSTHETIC REPLACEMENT OF SHOULDER JOINT,Revision total shoulder replacement,Complex,No -Orthopaedics,PRIMARY REVERSE POLARITY TOTAL PROSTHETIC REPLACEMENT OF SHOULDER JOINT NOT USING CEMENT,Revision total shoulder replacement,Complex,No -Orthopaedics,PRIMARY REVERSE POLARITY TOTAL PROSTHETIC REPLACEMENT OF SHOULDER JOINT USING CEMENT,Primary total shoulder replacement,Xmajor,No -Orthopaedics,PRIMARY TOTAL PROSTHETIC REPLACEMENT OF HIP,Primary total hip replacement with or without cement,Xmajor,No -Orthopaedics,PRIMARY UNCEMENTED HEMIARTHROPLASTY OF SHOULDER,Primary total shoulder replacement,Xmajor,No -Orthopaedics,PRIMARY UNCEMENTED TOTAL ELBOW REPLACEMENT,Total prosthetic replacement of elbow,Xmajor,No -Orthopaedics,PRIMARY UNCEMENTED TOTAL HIP REPLACEMENT,Primary total hip replacement with or without cement,Xmajor,No -,PRIMARY UNCEMENTED TOTAL HIP REPLACEMENT,Primary total hip replacement with or without cement,Xmajor,No -Orthopaedics,PRIMARY UNCEMENTED TOTAL SHOULDER REPLACEMENT,Primary total shoulder replacement,Xmajor,No -Orthopaedics,PRIMARY UNCEMENTED UNICOMPARTMENTAL KNEE REPLACEMENT,Unicompartmental knee replacement,Xmajor,No -,PRIMARY UNCEMENTED UNICOMPARTMENTAL KNEE REPLACEMENT,Unicompartmental knee replacement,Xmajor,No -Colorectal Surgery,"PROCTECTOMY BY ABDOMINOPERINEAL RESECTION WITH COLOSTOMY, ONE STAGE",Proctectomy,Major,No -General Surgery,"PROCTECTOMY BY ABDOMINOPERINEAL RESECTION WITH COLOSTOMY, ONE STAGE",Proctectomy,Major,No -General Surgery,PROCTOCOLECTOMY,Panproctocolectomy and ileostomy,Complex,No -Gynaecology,PROCTOSCOPY,Proctoscopy (+/- Biopsy),Minor,No -Urology,"PROGRAMMABLE GENERATOR, SECOND STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Urology,PROSTATECTOMY,"Radical prostatectomy, reconstruction of bladder neck including bilateral pelvic lymphadenectomy (including cystoscopy)",Complex,No -Urology,PROSTHESIS OPERATION ON PENIS,Reconstruction of penis,Major,No -Orthopaedics,PROSTHETIC ARTHROPLASTY OF BILATERAL HIPS,"Total prosthetic replacement of the hip, with or without cement, bilateral",Complex,No -Orthopaedics,PROSTHETIC ARTHROPLASTY OF LEFT HIP,Primary total hip replacement with or without cement,Xmajor,No -Orthopaedics,PROSTHETIC ARTHROPLASTY OF RIGHT HIP,Primary total hip replacement with or without cement,Xmajor,No -Orthopaedics,PROSTHETIC ARTHROPLASTY OF THE HIP,Primary total hip replacement with or without cement,Xmajor,No -Orthopaedics,PROSTHETIC ARTHROPLASTY OF THE PATELLOFEMORAL JOINT,Prosthetic replacement of Patellofemoral joint - bilateral (as sole procedure),Xmajor,No -Orthopaedics,PROSTHETIC CEMENTED TOTAL ELBOW REPLACEMENT,Total prosthetic replacement of elbow,Xmajor,No -Orthopaedics,PROSTHETIC HEMIARTHROPLASTY OF THE SHOULDER,"Shoulder hemiarthroplasty, as sole procedure",Xmajor,No -Orthopaedics,PROSTHETIC TOTAL ARTHROPLASTY OF LEFT SHOULDER,Primary total shoulder replacement,Xmajor,No -Orthopaedics,PROSTHETIC TOTAL ARTHROPLASTY OF RIGHT SHOULDER,Primary total shoulder replacement,Xmajor,No -Orthopaedics,PROSTHETIC UNCEMENTED TOTAL ELBOW REPLACEMENT,Total prosthetic replacement of elbow,Xmajor,No -Orthopaedics,PROSTHETIC UNICOMPARTMENTAL ARTHROPLASTY OF KNEE,Unicompartmental knee replacement,Xmajor,No -,PROSTHETIC UNICOMPARTMENTAL ARTHROPLASTY OF KNEE,Unicompartmental knee replacement,Xmajor,No -Orthopaedics,PROSTHETIC UNICOMPARTMENTAL ARTHROPLASTY OF LEFT KNEE,Unicompartmental knee replacement,Xmajor,No -Orthopaedics,PROSTHETIC UNICOMPARTMENTAL ARTHROPLASTY OF RIGHT KNEE,Unicompartmental knee replacement,Xmajor,No -Orthopaedics,PROXIMAL FEMORAL OSTEOTOMY FOR CORRECTION OF CONGENITAL DISLOCATION OF THE HIP,Complex open reduction for congenital dislocation of hip (i.e. pelvic and femoral or Pemberton osteotomy or revision of open reduction),Complex,No -Orthopaedics,PROXIMAL INTERPHALANGAEAL JOINT (PIPJ) FUSION,Fusion of digit joint(s) of hand with or without graft and with or without internal fixation,Intermediate,No -Upper Gastro-intestinal Surgery,PROXIMAL SUBTOTAL GASTRECTOMY,Partial gastrectomy,Xmajor,Yes -General Surgery,PROXIMAL SUBTOTAL GASTRECTOMY,Partial gastrectomy,Xmajor,Yes -Urology,PYELOPLASTY,Open pyeloplasty,Major,No -Orthopaedics,RADIAL TUNNEL RELEASE,Carpal tunnel release (open),Intermediate,No -Gynaecology,RADICAL ABDOMINAL HYSTERECTOMY,Radical hysterectomy and lymphadenectomy (Wertheim's) +/- ureterolysis,Complex,No -Urology,RADICAL CYSTECTOMY,Open total cystectomy (with construction of intestinal conduit or bladder),Complex,No -Urology,RADICAL CYSTOPROSTATECTOMY,"Radical prostatectomy, reconstruction of bladder neck including bilateral pelvic lymphadenectomy (including cystoscopy)",Complex,No -Urology,RADICAL CYSTOPROSTATOURETHRECTOMY,"Radical prostatectomy, reconstruction of bladder neck including bilateral pelvic lymphadenectomy (including cystoscopy)",Complex,No -Urology,RADICAL DISSECTION OF GROIN,Block dissection of inguinal lymph nodes,Major,No -Gynaecology,RADICAL DISSECTION OF GROIN,Block dissection of inguinal lymph nodes,Major,No -,RADICAL DISSECTION OF GROIN,Block dissection of inguinal lymph nodes,Major,No -Head and Neck,RADICAL EXCISION OF FLOOR OF MOUTH,Partial glossectomy for malignancy,Major,No -Head and Neck,RADICAL EXCISION OF PAROTID GLAND,Total excision of parotid gland and preservation of facial nerve,Xmajor,No -Gynaecology,RADICAL EXCISION OF PERIAORTIC LYMPH NODES,Block dissection of pelvic lymph nodes (as sole procedure),Major,No -Gynaecology,RADICAL HYSTERECTOMY WITH BILATERAL SALPINGO-OOPHORECTOMY,Radical hysterectomy and lymphadenectomy (Wertheim's) +/- ureterolysis,Complex,No -Gynaecology,RADICAL HYSTERECTOMY WITH CONSERVATION OF OVARIES,Radical hysterectomy and lymphadenectomy (Wertheim's) +/- ureterolysis,Complex,No -Urology,RADICAL INGUINAL ORCHIDECTOMY,Laparoscopic orchidectomy,Intermediate,No -ENT,RADICAL MASTOIDECTOMY,Radical mastoidectomy (including meatoplasty),Major,No -ENT,"RADICAL MASTOIDECTOMY, MODIFIED",Modified radical mastoidectomy (including meatoplasty),Xmajor,No -Head and Neck,RADICAL NECK DISSECTION,Radical dissection of cervical lymph nodes,Complex,Yes -Urology,RADICAL NEPHRECTOMY,Nephroureterectomy - unilateral,Xmajor,No -Urology,RADICAL ORCHIECTOMY,Orchidectomy and excision of spermatic cord (+/- insertion of prosthesis),Intermediate,No -Urology,RADICAL PROSTATECTOMY,"Radical prostatectomy, reconstruction of bladder neck including bilateral pelvic lymphadenectomy (including cystoscopy)",Complex,No -Urology,RADICAL PROSTATECTOMY USING OPEN ABDOMINAL APPROACH,"Radical prostatectomy, reconstruction of bladder neck including bilateral pelvic lymphadenectomy (including cystoscopy)",Complex,No -Urology,RADICAL PROSTATECTOMY WITH PELVIC NODE SAMPLING,"Radical prostatectomy, reconstruction of bladder neck including bilateral pelvic lymphadenectomy (including cystoscopy)",Complex,No -Gynaecology,RADICAL RESECTION OF TUMOUR OF SOFT TISSUE OF FLANK,"Radical clearance of sarcoma of trunk or limbs, +/- amputation or insertion of prosthesis",Complex,No -Head and Neck,RADICAL RESECTION OF TUMOUR OF SOFT TISSUE OF NECK,Radical dissection of cervical lymph nodes,Complex,Yes -Gynaecology,RADICAL TRACHELECTOMY,Radical trachelectomy including laparoscopic and removal of lymph nodes +/- ureterolysis,Complex,No -Gynaecology,RADICAL VULVECTOMY,Radical vulvectomy (including block dissection of inguinal gland),Complex,No -Gynaecology,RADICAL WIDE LOCAL EXCISION OF VULVA,Radical vulvectomy (including block dissection of inguinal gland),Complex,No -Gynaecology,RADICAL WIDE LOCAL EXCISION OF VULVA WITH EXCISION OF SENTINEL LYMPH NODES,Radical vulvectomy (including block dissection of inguinal gland),Complex,No -ENT,RADIOFREQUENCY ABLATION OF NASAL TURBINATE,"Reduction turbinates of nose (laser, diathermy, out fracture etc)",Minor,No -General Surgery,RADIOFREQUENCY ABLATION OF RECTAL HAEMORRHOIDS,Laser haemorrhoidectomy (including sigmoidoscopy),Intermediate,No -ENT,RADIOFREQUENCY ABLATION OF ROOT OF TONGUE,Excision/destruction of lesion of tongue,Intermediate,No -ENT,RADIOFREQUENCY ABLATION OF SOFT PALATE,Excision/destruction of lesion of palate,Intermediate,No -Orthopaedics,RAY AMPUTATION OF FOOT,Amputation of whole ray,Major,No -Breast Surgery,RE-EXCISION OF BREAST FOR CLEARANCE OF TUMOUR MARGINS,Re-excision of lesion of breast if resection margins are not clear (as sole procedure),Intermediate,No -Head and Neck,RE-EXCISION OF SKIN MARGINS,Secondary excision of malignant lesion - head and neck,Intermediate,No -Orthopaedics,REATTACHMENT OF TENDON,"Secondary repair of tendon (including graft, transfer and/or prosthesis) (not otherwise specified)",Major,No -Orthopaedics,RECONSTRUCTION FOR RECURRENT DISLOCATING PATELLA WITH EXTENSOR REALIGNMENT,"Open surgical stabilisation of patella, including soft tissue/tendon transfer or release, +/- application of cast (adult)",Xmajor,No -General Surgery,RECONSTRUCTION OF ABDOMINAL WALL USING DISTANT SKIN FLAP,Large muscle flap (9cm2 or more) including skin graft and closure of secondary defect,Xmajor,No -General Surgery,RECONSTRUCTION OF ABDOMINAL WALL USING FLAP,Large muscle flap (9cm2 or more) including skin graft and closure of secondary defect,Xmajor,No -Colorectal Surgery,RECONSTRUCTION OF ABDOMINAL WALL USING FLAP,Large muscle flap (9cm2 or more) including skin graft and closure of secondary defect,Xmajor,No -Colorectal Surgery,RECONSTRUCTION OF ANTERIOR ABDOMINAL WALL,Large muscle flap (9cm2 or more) including skin graft and closure of secondary defect,Xmajor,No -General Surgery,RECONSTRUCTION OF ANTERIOR ABDOMINAL WALL,Large muscle flap (9cm2 or more) including skin graft and closure of secondary defect,Xmajor,No -Orthopaedics,RECONSTRUCTION OF ANTERIOR CRUCIATE LIGAMENT OF KNEE JOINT,Allograft anterior cruciate ligament reconstruction,Xmajor,No -,RECONSTRUCTION OF ANTERIOR CRUCIATE LIGAMENT OF KNEE JOINT,Allograft anterior cruciate ligament reconstruction,Xmajor,No -Orthopaedics,RECONSTRUCTION OF ANTERIOR CRUCIATE LIGAMENT USING HAMSTRING GRAFT,Allograft anterior cruciate ligament reconstruction,Xmajor,No -Head and Neck,RECONSTRUCTION OF DEFECT OF MAXILLA WITH SKIN GRAFT,Reconstruction of jaw (non-vascularised reconstruction),Xmajor,No -ENT,RECONSTRUCTION OF DEFECT OF NASAL SINUS WITH DISTANT FLAP,Bone flap to frontal sinus (and bilateral),Major,No -Urology,RECONSTRUCTION OF FEMALE BLADDER NECK,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -Orthopaedics,RECONSTRUCTION OF LATERAL COLLATERAL LIGAMENT OF ELBOW USING TENDON GRAFT,"Secondary repair of tendon (including graft, transfer and/or prosthesis) (not otherwise specified)",Major,No -Head and Neck,RECONSTRUCTION OF MAXILLA WITH FLAP,Free functioning muscle transfer (as sole procedure) including closure of secondary defect,Complex,Yes -Orthopaedics,RECONSTRUCTION OF MEDIAL COLLATERAL LIGAMENT OF ELBOW USING TENDON GRAFT,"Tendon graft, assole procedure (not otherwise specified)",Intermediate,No -Orthopaedics,RECONSTRUCTION OF MEDIAL COLLATERAL LIGAMENT OF KNEE JOINT,Repair of knee ligaments (open or arthroscopic),Major,No -Orthopaedics,RECONSTRUCTION OF MEDIAL PATELLOFEMORAL LIGAMENT,Repair of knee ligaments (open or arthroscopic),Major,No -Head and Neck,RECONSTRUCTION OF MOUTH USING PECTORALIS MAJOR MYOCUTANEOUS FLAP,Microvascular free tissue transfer (as sole procedure including closure of secondary defect),Complex,Yes -ENT,RECONSTRUCTION OF NOSE WITH BONE GRAFT AND SKIN FLAP,Septorhinoplasty including graft/implant following trauma or excision of tumour (including attention to turbinates),Major,No -Paediatric ENT,RECONSTRUCTION OF OSSICULAR CHAIN,Ossiculoplasty,Xmajor,No -ENT,RECONSTRUCTION OF OSSICULAR CHAIN,Ossiculoplasty,Xmajor,No -Urology,RECONSTRUCTION OF PENIS,Reconstruction of penis,Major,No -Urology,RECONSTRUCTION OF PENIS WITH DISTANT FLAP,Reconstruction of penis,Major,No -Urology,RECONSTRUCTION OF PENIS WITH GRAFT,Reconstruction of penis,Major,No -Urology,RECONSTRUCTION OF PENIS WITH MICROVASCULAR TRANSFERRED FLAP,Reconstruction of penis,Major,No -Urology,RECONSTRUCTION OF PENIS WITH SKIN GRAFT,Reconstruction of penis,Major,No -,RECONSTRUCTION OF PHARYNX WITH DISTANT PEDICLE FLAP,Repair of pharynx,Major,Yes -Orthopaedics,RECONSTRUCTION OF POSTERIOR CRUCIATE LIGAMENT OF KNEE JOINT,Posterior cruciate ligament reconstruction including arthroscopic,Xmajor,No -ENT,RECONSTRUCTION OF POSTERIOR MEATAL WALL OF EXTERNAL AUDITORY CANAL,Reconstruction of external ear for anotia/microtia using cartilage,Complex,No -Orthopaedics,RECONSTRUCTION OF POSTEROLATERAL CORNER OF KNEE,Reconstruction of posterior lateral corner of knee,Major,No -,RECONSTRUCTION OF SCROTUM WITH SKIN GRAFT,Reconstruction of penis,Major,No -Orthopaedics,RECONSTRUCTION OF TENDON SHEATH,"Secondary repair of tendon (including graft, transfer and/or prosthesis) (not otherwise specified)",Major,No -Urology,RECONSTRUCTION OF URETHRA,"Complex Urethroplasty, Eg Revision Surgery of the Anterior Urethra, Segment, Posterior Urethra, +/- Grafting (Including Cystoscopy)",Major,No -Gynaecology,RECONSTRUCTION OF URETHRA,"Complex Urethroplasty, Eg Revision Surgery of the Anterior Urethra, Segment, Posterior Urethra, +/- Grafting (Including Cystoscopy)",Major,No -Urology,RECONSTRUCTION OF URETHRA WITH BUCCAL MUCOSA GRAFT,"Complex Urethroplasty, Eg Revision Surgery of the Anterior Urethra, Segment, Posterior Urethra, +/- Grafting (Including Cystoscopy)",Major,No -Gynaecology,RECONSTRUCTION OF VAGINA WITH FLAP,Reconstruction of vagina,Xmajor,No -Gynaecology,RECONSTRUCTION OF VAGINA WITH URETHRAL DISSECTION,Reconstruction of vagina,Xmajor,No -Head and Neck,RECONSTRUCTION WITH LOCAL FLAP,Local flap ? less than 9cm2,Major,Yes -Urology,RECONSTRUCTION WITH SKIN GRAFT,Excision of pilonidal sinus and suture/skin graft,Intermediate,No -Colorectal Surgery,RECTOSIGMOIDECTOMY AND RECTOPEXY,Laparoscopic rectopexy without mesh,Major,No -Urology,RECTUS FASCIAL SLING,Revision combined abdominal and vaginal operations to support outlet of female bladder (including sling procedures and cystoscopy),Xmajor,No -Urology,REDO VESICOURETHRAL ANASTOMOSIS,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -Urology,REDO VESICOURETHRAL ANASTOMOSIS ABDOMINO USING PERINEAL APPROACH,Repair of bladder (including cystoscopy),Major,No -Urology,REDUCE SCROTAL ELEPHANTIASIS,Correction of hydrocele(s) – unilateral,Intermediate,No -Breast Surgery,REDUCTION MAMMOPLASTY,Reduction mammoplasty - unilateral,Major,No -Bariatrics,REFASHIONING OF JEJUNOSTOMY,Revision of gastro–jejunostomy,Xmajor,No -Urology,REFASHIONING URINARY STOMA,Laparoscopic colostomy and stoma formation (including revision),Major,No -Gynaecology,REGIONAL EXCISION OF GROIN LYMPH NODES,Block dissection of pelvic lymph nodes (as sole procedure),Major,No -Urology,REIMPLANTATION,-,Unknown,No -Urology,REIMPLANTATION OF LEFT URETER,Excision of ureterocele (with or without ureteric reimplantation) - unilateral,Major,No -Urology,REIMPLANTATION OF RIGHT URETER,Excision of ureterocele (with or without ureteric reimplantation) - unilateral,Major,No -Urology,REIMPLANTATION OF URETER,Excision of ureterocele (with or without ureteric reimplantation) - unilateral,Major,No -Orthopaedics,RELEASE OF CONTRACTURE OF FINGERS,Dupuytren’s fasciectomy multiple digits with proximal interphalangeal joints,Major,No -Orthopaedics,RELEASE OF CONTRACTURE OF SHOULDER JOINT,Open arthrolysis of shoulder contracture +/- manipulation/injection,Major,No -Orthopaedics,RELEASE OF ENTRAPMENT OF PERIPHERAL NERVE,Release of entrapment of peripheral nerve,Intermediate,No -Orthopaedics,RELEASE OF TENDON,"Tenolysis, of flexor tendon (not otherwise specified)",Major,No -,RELEASE OF TRIGGER FINGER,Release of constriction of sheath of tendon (eg trigger finger),Intermediate,No -Orthopaedics,RELOCATION AND DEROTATION OSTEOTOMY,Partial excision of bone (including exostoses),Intermediate,No -Urology,REMOVAL OF ARTIFICIAL URINARY SPHINCTER FROM AROUND MALE BLADDER NECK OR URETHRA,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -,REMOVAL OF ARTIFICIAL URINARY SPHINCTER FROM AROUND MALE BLADDER NECK OR URETHRA,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -Orthopaedics,REMOVAL OF BONE SCREW DEVICE FROM FEMUR,"Removal of internal fixation from bone/joint, excluding K-wires",Intermediate,No -Breast Surgery,REMOVAL OF BREAST IMPLANT,Removal And Reinsertion Of Existing Prosthesis Into The Breast (Including Capsulectomy) - Bilateral,Major,No -Urology,REMOVAL OF CALCULUS FROM URINARY BLADDER BY INCISION,Open removal of calculus from bladder (including cystoscopy),Intermediate,No -Paediatric Urology,REMOVAL OF CALCULUS FROM URINARY BLADDER BY INCISION,Open removal of calculus from bladder (including cystoscopy),Intermediate,No -Urology,REMOVAL OF CALCULUS OF RENAL PELVIS THROUGH PERCUTANEOUS NEPHROSTOMY,Percutaneous nephrolithotomy (including cystoscopy and retrograde catheterisation),Complex,No -Uro-Gynaecology,REMOVAL OF CALCULUS OF RENAL PELVIS THROUGH PERCUTANEOUS NEPHROSTOMY,Percutaneous nephrolithotomy (including cystoscopy and retrograde catheterisation),Complex,No -Urology,REMOVAL OF CALCULUS OF URINARY BLADDER BY SUPRAPUBIC APPROACH,Open removal of calculus from bladder (including cystoscopy),Intermediate,No -Paediatric Urology,REMOVAL OF CALCULUS OF URINARY BLADDER BY SUPRAPUBIC APPROACH,Open removal of calculus from bladder (including cystoscopy),Intermediate,No -Thoracic Surgery,REMOVAL OF CHEST DRAIN,Introduction of substance into pleural cavity with chest drain,Minor,No -ENT,REMOVAL OF COCHLEAR IMPLANT,Insertion of cochlear implant - unilateral,Complex,No -Orthopaedics,REMOVAL OF COMPLETE EXTERNAL FIXATOR,Removal of fixator/frame/pins/wires and change of plaster,Intermediate,No -General Surgery,REMOVAL OF ELECTRONIC STIMULATOR OF PERIPHERAL NERVE,Implantation of neurostimulator into peripheral nerve,Major,No -Head and Neck,REMOVAL OF FIXATION OF MANDIBLE,Extra-oral fixation of mandible,Intermediate,No -General Surgery,REMOVAL OF FOREIGN BODY,Removal of foreign body in deeper tissue,Intermediate,No -ENT,REMOVAL OF FOREIGN BODY,Removal of foreign body from cavity of nose,Minor,No -Urology,REMOVAL OF FOREIGN BODY FROM BLADDER,Endoscopic removal of foreign body from bladder (including cystoscopy),Intermediate,No -Gynaecology,REMOVAL OF FOREIGN BODY FROM RECTOUTERINE POUCH,Removal of foreign body in deeper tissue,Intermediate,No -Gynaecology,REMOVAL OF FOREIGN BODY FROM URETHRA WITH INCISION,Removal of foreign body from urethra,Minor,No -Urology,REMOVAL OF FOREIGN BODY FROM URETHRA WITH INCISION,Removal of foreign body from urethra,Minor,No -,REMOVAL OF FOREIGN BODY FROM VAGINA,Examination of vagina under anaesthetic as sole procedure,Minor,No -Gynaecology,REMOVAL OF FOREIGN BODY FROM VAGINA BY INCISION,Examination of vagina under anaesthetic as sole procedure,Minor,No -Urology,REMOVAL OF FOREIGN BODY OF PENIS BY INCISION,Repair of injury to penis,Intermediate,No -Oral Surgery,"REMOVAL OF IMPACTED TOOTH, COMPLETELY BONY",Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Urology,REMOVAL OF IMPLANT,Insertion of Prostatic Urethral Lift Implants (Including Cystoscopy),Intermediate,No -Orthopaedics,REMOVAL OF IMPLANT,"Removal of internal fixation from bone/joint, excluding K-wires",Intermediate,No -,REMOVAL OF IMPLANT,-,Major,No -Orthopaedics,REMOVAL OF IMPLANT FROM FEMUR,"Removal of internal fixation from bone/joint, excluding K-wires",Intermediate,No -Orthopaedics,REMOVAL OF IMPLANTED SUBSTANCE FROM BONE,Partial excision of bone (including exostoses),Intermediate,No -Thoracic Surgery,REMOVAL OF INDWELLING PLEURAL CATHETER,Insertion of tube drain into pleural cavity,Minor,No -Urology,REMOVAL OF INFLATABLE PENILE PROSTHESIS,Reconstruction of penis,Major,No -,REMOVAL OF INFLATABLE PENILE PROSTHESIS,Reconstruction of penis,Major,No -Urology,"REMOVAL OF INFLATABLE PENILE PROSTHESIS, WITH PUMP, RESERVOIR AND CYLINDERS",Reconstruction of penis,Major,No -Maxillo-Facial Surgery,REMOVAL OF INTERNAL FIXATION DEVICE,Removal of internal fixation and/or inter-maxillary fixation from jaw,Minor,No -Orthopaedics,REMOVAL OF INTERNAL FIXATION DEVICE FROM PELVIS,"Removal of internal fixation from bone/joint, excluding K-wires",Intermediate,No -Thoracic Surgery,"REMOVAL OF INTERNAL FIXATION DEVICE OF THORAX, RIBS OR STERNUM",Removal of pectus bar (including bilateral),Intermediate,Yes -Urology,REMOVAL OF INTERNAL PENILE PROSTHESIS,Reconstruction of penis,Major,No -Orthopaedics,REMOVAL OF METALWORK FROM BONE,"Removal of internal fixation from bone/joint, excluding K-wires",Intermediate,No -ENT,REMOVAL OF NASAL PACK,Nasal septum cauterisation (and bilateral),Minor,No -Urology,REMOVAL OF NEPHROSTOMY TUBE,Percutaneous insertion of nephrostomy tube,Intermediate,No -,REMOVAL OF NEPHROSTOMY TUBE,Percutaneous insertion of nephrostomy tube,Intermediate,No -Thoracic Surgery,REMOVAL OF ORTHOPAEDIC WIRE FROM STERNUM,-,Intermediate,No -Thoracic Surgery,REMOVAL OF ORTHOPAEDIC WIRES,-,Intermediate,No -Orthopaedics,REMOVAL OF PLATE FROM BONE,"Removal of internal fixation from bone/joint, excluding K-wires",Intermediate,No -Thoracic Surgery,REMOVAL OF PROSTHESIS FROM CHEST WALL,Excision of chest wall tumour - without chest wall reconstruction,Xmajor,Yes -General Surgery,REMOVAL OF PROSTHETIC MATERIAL FROM PREVIOUS REPAIR OF INCISIONAL HERNIA,Repair of recurrent incisional hernia requiring removal of previously inserted mesh,Major,No -Urology,"REMOVAL OF SACRAL NERVE SACRAL NERVE NEUROMODULATION, FIRST STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Gynaecology,"REMOVAL OF SACRAL NERVE SACRAL NERVE NEUROMODULATION, FIRST STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Urology,"REMOVAL OF SACRAL NERVE SACRAL NERVE NEUROMODULATION, SECOND STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -,"REMOVAL OF SACRAL NERVE SACRAL NERVE NEUROMODULATION, SECOND STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Orthopaedics,REMOVAL OF SCREWS FROM BONE,"Removal of internal fixation from bone/joint, excluding K-wires",Intermediate,No -Urology,REMOVAL OF SKIN FLAP,Primary excision of malignant lesion - trunk and limbs,Intermediate,No -Gynaecology,REMOVAL OF SPINAL ELECTRONIC STIMULATOR WITH SYNCHRONOUS REPLACEMENT,Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Urology,REMOVAL OF STENT,Ureteroscopic extraction of calculus of ureter (including cystoscopy and insertion/removal of stent),Intermediate,No -Thoracic Surgery,REMOVAL OF STERNAL FIXATION BAR,Removal of pectus bar (including bilateral),Intermediate,Yes -General Surgery,REMOVAL OF THYROID ADENOMA,Partial thyroidectomy (not elsewhere classified),Major,No -Urology,REMOVAL OF TRANSOBTURATOR TAPE,Insertion of suburethral tape sling (e.g. TOT or TVT) +/- administration of local anaesthetic by operating surgeon (including cystoscopy),Major,No -Gynaecology,REMOVAL OF VAGINAL MESH,"Total removal of vaginal mesh/tape with reconstruction of vagina and/or uretha, including cysoscopy and/or proctoscopy [fees on application]",Complex,No -Urology,REMOVAL OF VAGINAL MESH,"Total removal of vaginal mesh/tape with reconstruction of vagina and/or uretha, including cysoscopy and/or proctoscopy [fees on application]",Complex,No -Urology,RENDEZVOUS BYPASS OF URETERIC OCCLUSION AND INSERTION OF URETERIC STENT,Endoscopic removal and insertion of prosthesis into ureter (including cystoscopy),Major,No -Urology,RENDEZVOUS PROCEDURE ON URETER,Therapeutic ureterorenoscopy (+/- cystoscopy and insertion/removal of stent),Minor,No -Paediatric Urology,RENDEZVOUS PROCEDURE ON URETER,Therapeutic ureterorenoscopy (+/- cystoscopy and insertion/removal of stent),Minor,No -Urology,RENEWAL OF ARTIFICIAL URINARY SPHINCTER AROUND MALE BLADDER NECK OR URETHRA,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -Colorectal Surgery,REPAIR OF ABDOMINAL WALL,Large muscle flap (9cm2 or more) including skin graft and closure of secondary defect,Xmajor,No -Vascular Surgery,REPAIR OF ANEURYSM BY ENDOVASCULAR COIL EMBOLISATION,Embolisation of aneurysm,Complex,No -General Surgery,REPAIR OF ANORECTAL FISTULA,Laying open of high anal fistula (fistulotomy) (including sigmoidoscopy),Major,No -Orthopaedics,REPAIR OF ANTERIOR CRUCIATE LIGAMENT OF KNEE JOINT,Allograft anterior cruciate ligament reconstruction,Xmajor,No -Urology,REPAIR OF BLADDER,Repair of bladder (including cystoscopy),Major,No -Urology,REPAIR OF BURIED PENIS,Repair of injury to penis,Intermediate,No -,REPAIR OF BURIED PENIS,Repair of injury to penis,Intermediate,No -Thoracic Surgery,REPAIR OF CHEST WALL HERNIATION OF LUNG,Excision of chest wall tumour - with chest wall reconstruction,Xmajor,Yes -Urology,REPAIR OF CYSTOCELE,Vaginal operations to support outlet of female bladder (including cystoscopy),Major,No -Head and Neck,REPAIR OF DEFECT OF PALATE WITH TONGUE FLAP,Tongue flap - first stage and second stage,Major,Yes -Head and Neck,REPAIR OF DENTAL IMPLANT,Replantation of natural tooth/teeth following trauma,Intermediate,No -Head and Neck,REPAIR OF DENTURE OR OBTURATOR,-,Unknown,No -,REPAIR OF DIAPHRAGMATIC HERNIA,Transabdominal repair of diaphragmatic hernia (excluding hiatus hernia),Complex,No -General Surgery,REPAIR OF DIASTASIS RECTI,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Orthopaedics,REPAIR OF ELBOW,Open arthrolysis of elbow,Major,No -Colorectal Surgery,REPAIR OF EPIGASTRIC HERNIA,Repair of epigastric hernia,Intermediate,No -General Surgery,REPAIR OF EPIGASTRIC HERNIA,Repair of epigastric hernia,Intermediate,No -Urology,REPAIR OF FISTULA OF BLADDER,Repair of vesicocolic fistula,Xmajor,No -Urology,REPAIR OF FISTULA OF SCROTUM,Repair of cutaneous vesical fistula,Intermediate,No -Urology,REPAIR OF FRACTURE OF PENIS,Repair of injury to penis,Intermediate,No -Orthopaedics,REPAIR OF HALLUX VALGUS,Osteotomy/ies (eg Scarf and Akin) for Hallux Valgus correction with or without internal fixation and soft tissue correction,Major,No -,REPAIR OF HIP,Repair of hip labral tear,Major,No -Urology,REPAIR OF HYDROCELE,Correction of hydrocele(s) – unilateral,Intermediate,No -Colorectal Surgery,REPAIR OF ILEOSTOMY,Revision of ileostomy - local,Major,No -General Surgery,REPAIR OF INCISIONAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -Colorectal Surgery,REPAIR OF INCISIONAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -Bariatrics,REPAIR OF INCISIONAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -Urology,REPAIR OF INCISIONAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -Colorectal Surgery,REPAIR OF INCISIONAL HERNIA USING ANTERIOR SHEATH OVERLAP,Open repair of incisional hernia not requiring mesh,Intermediate,No -Bariatrics,REPAIR OF INGUINAL HERNIA,Primary repair of inguinal hernia,Intermediate,No -Colorectal Surgery,REPAIR OF INGUINAL HERNIA,Primary repair of inguinal hernia,Intermediate,No -General Surgery,REPAIR OF LEFT INGUINAL HERNIA,Primary repair of inguinal hernia,Intermediate,No -Colorectal Surgery,REPAIR OF LEFT INGUINAL HERNIA,Primary repair of inguinal hernia,Intermediate,No -Colorectal Surgery,REPAIR OF LEFT INGUINAL HERNIA USING SURGICAL MESH,Primary repair of inguinal hernia,Intermediate,No -General Surgery,REPAIR OF LEFT INGUINAL HERNIA USING SURGICAL MESH,Primary repair of inguinal hernia,Intermediate,No -Urology,REPAIR OF LIGAMENT,Reconstruction of one or two ligaments not elsewhere specified,Major,No -Urology,REPAIR OF MALE URETHROCUTANEOUS FISTULA,Closure of fistula of urethra (including cystoscopy),Intermediate,No -Orthopaedics,REPAIR OF MEDIAL COLLATERAL LIGAMENT OF KNEE JOINT,Repair of knee ligaments (open or arthroscopic),Major,No -Orthopaedics,REPAIR OF MEDIAL LIGAMENT OF TALOCRURAL JOINT,Complex procedure to mid foot or hind foot without autogenous bone graft (osteotomy/fusion +/? tendon transfers),Xmajor,No -Orthopaedics,REPAIR OF MULTIPLE TEARS OF ROTATOR CUFF OF SHOULDER,Arthroscopic rotator cuff repair greater than 2cm,Xmajor,No -Orthopaedics,REPAIR OF MUSCLE BY DIRECT SUTURE,Major release of muscle for pain or contracture (eg Quadriceps) (involving large joint),Intermediate,No -Orthopaedics,REPAIR OF MUSCLE BY GRAFT OR IMPLANT OF TENDON,"Secondary repair of tendon (including graft, transfer and/or prosthesis) (not otherwise specified)",Major,No -ENT,REPAIR OF NASAL SEPTAL PERFORATION,Closure of perforation of septum of nose,Intermediate,No -Orthopaedics,REPAIR OF NONUNION OF HUMERUS WITH ILIAC AUTOGRAFT,Secondary open reduction of fractured long bone and intra-medullary fixation or internal fixation for non-union/ mal-union – including intra-articular (including bone graft),Xmajor,No -Head and Neck,REPAIR OF ORBIT,Simple reconstruction of socket (not including implant or graft),Major,No -Colorectal Surgery,REPAIR OF PARASTOMAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -General Surgery,REPAIR OF PARASTOMAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -Urology,REPAIR OF PARASTOMAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -,REPAIR OF PARASTOMAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -Colorectal Surgery,REPAIR OF PARAUMBILICAL HERNIA,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -General Surgery,REPAIR OF PARAUMBILICAL HERNIA,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Colorectal Surgery,REPAIR OF PARAUMBILICAL HERNIA USING SUTURE,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Orthopaedics,REPAIR OF PATELLAR TENDON,"Secondary repair of tendon (including graft, transfer and/or prosthesis) (not otherwise specified)",Major,No -Orthopaedics,REPAIR OF PERONEAL TENDON,"Secondary repair of tendon (including graft, transfer and/or prosthesis) (not otherwise specified)",Major,No -,REPAIR OF QUADRICEPS,"Secondary repair of tendon (including graft, transfer and/or prosthesis) (not otherwise specified)",Major,No -Orthopaedics,REPAIR OF QUADRICEPS,"Secondary repair of tendon (including graft, transfer and/or prosthesis) (not otherwise specified)",Major,No -Urology,REPAIR OF RECTAL FISTULA,Repair of urethrorectal fistula,Major,No -Colorectal Surgery,REPAIR OF RECTOCELE,Fixation of rectum for prolapse,Major,No -General Surgery,REPAIR OF RECTOCELE,Fixation of rectum for prolapse,Major,No -Urology,REPAIR OF RECTOURETHRAL FISTULA,Repair of urethrorectal fistula,Major,No -Colorectal Surgery,REPAIR OF RECTOVESICAL FISTULA,Repair of faecal fistula,Intermediate,No -General Surgery,REPAIR OF RECURRENT INCISIONAL HERNIA,Repair of recurrent incisional hernia requiring mesh,Major,No -Bariatrics,REPAIR OF RECURRENT INCISIONAL HERNIA,Repair of recurrent incisional hernia requiring mesh,Major,No -Upper Gastro-intestinal Surgery,REPAIR OF RECURRENT INGUINAL HERNIA,Repair of recurrent inguinal hernia,Major,No -Colorectal Surgery,REPAIR OF RECURRENT PARAUMBILICAL HERNIA USING SUTURE,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Colorectal Surgery,REPAIR OF RECURRENT RIGHT INGUINAL HERNIA,Repair of recurrent inguinal hernia,Major,No -General Surgery,REPAIR OF RECURRENT VENTRAL HERNIA,Repair of recurrent incisional hernia not requiring mesh,Major,No -General Surgery,REPAIR OF RIGHT INDIRECT INGUINAL HERNIA,Primary repair of inguinal hernia,Intermediate,No -General Surgery,REPAIR OF RIGHT INGUINAL HERNIA,Primary repair of inguinal hernia,Intermediate,No -Colorectal Surgery,REPAIR OF RIGHT INGUINAL HERNIA,Primary repair of inguinal hernia,Intermediate,No -Bariatrics,REPAIR OF RIGHT INGUINAL HERNIA,Primary repair of inguinal hernia,Intermediate,No -Colorectal Surgery,REPAIR OF RIGHT INGUINAL HERNIA USING SURGICAL MESH,Primary repair of inguinal hernia,Intermediate,No -Orthopaedics,REPAIR OF ROTATOR CUFF BY SUTURE,Open sub acromial decompression and rotator cuff repair +/- excision of distal clavicle,Major,No -Urology,REPAIR OF RUPTURED BULBAR URETHRA,Repair of rupture of urethra (including cystoscopy),Major,No -Colorectal Surgery,REPAIR OF SPIGELIAN HERNIA,Open repair of Spigelian hernia without mesh,Intermediate,No -Thoracic Surgery,REPAIR OF STERNAL DEFECT,-,Major,Yes -Orthopaedics,REPAIR OF TENDO ACHILLES,Primary repair of Achilles tendon,Intermediate,No -,REPAIR OF TENDO ACHILLES,Primary repair of Achilles tendon,Intermediate,No -Orthopaedics,REPAIR OF TENDO ACHILLES BY TENDON TRANSFER PROCEDURE,Transfer of tendon (not otherwise specified),Intermediate,No -Orthopaedics,REPAIR OF TENDON,"Secondary repair of tendon (including graft, transfer and/or prosthesis) (not otherwise specified)",Major,No -Orthopaedics,REPAIR OF TENDON BY GRAFT OR IMPLANT OF FASCIA,"Secondary repair of tendon (including graft, transfer and/or prosthesis) (not Major otherwise specified)",Major,No -Urology,REPAIR OF TESTICULAR INJURY,Exploration of testis (including biopsy),Intermediate,No -Urology,REPAIR OF TESTIS,Fixation of testis,Intermediate,No -Colorectal Surgery,REPAIR OF UMBILICAL HERNIA,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -General Surgery,REPAIR OF UMBILICAL HERNIA,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Bariatrics,REPAIR OF UMBILICAL HERNIA,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Upper Gastro-intestinal Surgery,REPAIR OF UMBILICAL HERNIA,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Colorectal Surgery,REPAIR OF UMBILICAL HERNIA WITH PROSTHESIS,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Bariatrics,REPAIR OF UMBILICAL HERNIA WITH PROSTHESIS,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Urology,REPAIR OF URETHRAL FISTULA,Closure of fistula of urethra (including cystoscopy),Intermediate,No -Urology,REPAIR OF URETHROCUTANEOUS FISTULA,Repair of cutaneous vesical fistula,Intermediate,No -Urology,REPAIR OF URETHROPERINEAL FISTULA,Repair of cutaneous vesical fistula,Intermediate,No -Urology,REPAIR OF URETHROVAGINAL FISTULA,Repair of vesicovaginal fistula (including cystoscopy),Major,No -Urology,REPAIR OF URETHROVESICAL FISTULA,Repair of vesicocolic fistula,Major,No -Urology,REPAIR OF URETHROVESICOVAGINAL FISTULA,Repair of vesicocolic fistula,Xmajor,No -Urology,REPAIR OF VAGINAL FISTULA,Repair of vesicovaginal fistula (including cystoscopy),Major,No -Gynaecology,REPAIR OF VAGINAL WALL PROLAPSE,Anterior +/- posterior colporrhaphy (including primary repair of enterocele) (including cystoscopy),Major,No -Urology,REPAIR OF VAGINOVESICAL FISTULA,Repair of vesicovaginal fistula (including cystoscopy),Major,No -Urology,REPAIR OF VARICOCELE,Operation(s) on varicocele,Intermediate,No -Colorectal Surgery,REPAIR OF VENTRAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -General Surgery,REPAIR OF VENTRAL HERNIA,Open repair of incisional hernia not requiring mesh,Intermediate,No -Urology,REPAIR OF VESICOCOLIC FISTULA,Repair of vesicocolic fistula,Xmajor,No -Anaesthetics,REPAIR OF VESICOURETHRORECTAL FISTULA,Repair of urethrorectal fistula,Major,No -Urology,REPAIR OF VULVA,Excision of lesion of vulva,Minor,No -Gynaecology,REPAIR OF WOUND OF ABDOMINAL WALL,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Head and Neck,REPAIR ORBITAL FLOOR,Simple reconstruction of socket (not including implant or graft),Major,No -Orthopaedics,REPLACEMENT OF LEFT KNEE JOINT,"Total prosthetic replacement of knee joint, with or without cement, +/– patella",Xmajor,No -Orthopaedics,REPLACEMENT OF TOTAL KNEE JOINT,"Total prosthetic replacement of knee joint, with or without cement, +/– patella",Xmajor,No -General Surgery,REPOSITIONING OF COLOSTOMY,Laparoscopic colostomy and stoma formation (including revision),Major,No -General Surgery,RESECTION OF ILEO-COLIC ANASTOMOSIS,Open resectionof small intestine tumour,Major,No -Colorectal Surgery,RESECTION OF ILEO-COLIC ANASTOMOSIS,Open resectionof small intestine tumour,Major,No -Head and Neck,"RESECTION OF LESION OF PALATE, EXTENSIVE",Excision/destruction of lesion of palate,Major,No -Thoracic Surgery,RESECTION OF MEDIASTINAL LESION,Open resection of invasive mediastinal tumour,Complex,Yes -General Surgery,RESECTION OF RECTUM,Open excision of lesion of rectum and colon,Major,No -Thoracic Surgery,RESECTION OF RIB BY TRANSAXILLARY APPROACH,Resection of rib and open drainage of pleural cavity,Major,Yes -Head and Neck,RESECTION OF SOFT PALATE,Excision/destruction of lesion of palate,Intermediate,No -Thoracic Surgery,RESECTION OF STERNUM,-,Complex,Yes -Thoracic Surgery,RESECTION OF TRACHEA,Partial excision of trachea with reconstruction,Complex,Yes -Orthopaedics,RESURFACING ARTHROPLASTY,Excision reconstruction of large joint,Major,No -Orthopaedics,RESURFACING HEMIARTHROPLASTY OF HEAD OF HUMERUS NOT USING CEMENT,"Shoulder hemiarthroplasty, as sole procedure",Xmajor,No -Orthopaedics,RESURFACING OF THE PATELLA,Patella resurfacing (as sole procedure),Major,No -Urology,RETROPUBIC PROSTATECTOMY,"Radical prostatectomy, reconstruction of bladder neck including bilateral pelvic lymphadenectomy (including cystoscopy)",Complex,No -Gynaecology,RETROPUBIC URETHRAL SUSPENSION,Insertion of suburethral tape sling (e.g. TOT or TVT) +/- administration of local anaesthetic by operating surgeon (including cystoscopy),Major,No -Orthopaedics,REVERSE PROSTHETIC TOTAL ARTHROPLASTY OF LEFT SHOULDER,Revision total shoulder replacement,Complex,No -Orthopaedics,REVERSE PROSTHETIC TOTAL ARTHROPLASTY OF RIGHT SHOULDER,Revision total shoulder replacement,Complex,No -Thoracic Surgery,REVISION,-,Complex,Yes -Urology,REVISION,-,Unknown,No -Orthopaedics,REVISION ARTHRODESIS OF TOE JOINT,Fusion of interphalangeal joint(s) of toe (including internal fixation),Intermediate,No -Orthopaedics,REVISION ARTHROSCOPIC ALLOGRAFT LIGAMENT REPLACEMENT,Therapeutic arthroscopy operation on cavity of joint (not otherwise specified) (as sole procedure),Major,No -Orthopaedics,REVISION CEMENTED TOTAL ELBOW REPLACEMENT,Revisional prosthetic replacement of elbow,Complex,No -Orthopaedics,REVISION CEMENTED TOTAL HIP REPLACEMENT,Revision of uncemented or cemented total hip replacement without adjunctive procedures,Complex,No -,REVISION CEMENTED TOTAL HIP REPLACEMENT,Revision of uncemented or cemented total hip replacement without adjunctive procedures,Complex,No -Orthopaedics,REVISION CEMENTED TOTAL KNEE REPLACEMENT,Revision of total replacement of knee joint,Complex,No -Orthopaedics,REVISION CEMENTED TOTAL SHOULDER REPLACEMENT,Revision total shoulder replacement,Complex,No -Orthopaedics,REVISION CEMENTED UNICOMPARTMENTAL KNEE REPLACEMENT,Unicompartmental knee replacement,Xmajor,No -Orthopaedics,REVISION FIXATION OF FRACTURE USING SCREWS,Secondary open reduction of fractured long bone and intra-medullary fixation or internal fixation for non-union/ mal-union – including intra-articular (including bone graft),Xmajor,No -Orthopaedics,REVISION HYBRID TOTAL SHOULDER REPLACEMENT,Revision total shoulder replacement,Complex,No -Urology,REVISION OF APPENDICOVESICOSTOMY,Construction of ileal conduit including ureteric implantation,Xmajor,No -General Surgery,REVISION OF APPENDICOVESICOSTOMY,Construction of ileal conduit including ureteric implantation,Xmajor,No -Urology,REVISION OF ARTIFICIAL URINARY SPHINCTER AROUND MALE BLADDER NECK OR SPHINCTER,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -Breast Surgery,REVISION OF BREAST IMPLANT,Reconstruction of breast using expandable prosthesis (including delayed reconstruction),Major,No -Urology,REVISION OF CIRCUMCISION,Revision of circumcision,Intermediate,No -,REVISION OF CLOSED REDUCTION OF DISLOCATION,"Primary closed reduction of fracture or dislocation of joint, with or without fixation including cast application",Intermediate,No -General Surgery,REVISION OF COLOSTOMY,Laparoscopic colostomy and stoma formation (including revision),Major,No -Orthopaedics,REVISION OF COMPONENT OF TOTAL PROSTHETIC REPLACEMENT OF ANKLE JOINT,Revision of unicompartmental knee replacement,Complex,No -Orthopaedics,REVISION OF COMPONENT OF TOTAL PROSTHETIC REPLACEMENT OF ELBOW JOINT,Revisional prosthetic replacement of elbow,Complex,No -Orthopaedics,REVISION OF COMPONENT OF TOTAL PROSTHETIC REPLACEMENT OF SHOULDER JOINT,Revision total shoulder replacement,Complex,No -Urology,REVISION OF CONDUIT,Construction of ileal conduit including ureteric implantation,Xmajor,No -Urology,REVISION OF FIRST STAGE URETHROPLASTY,"Complex Urethroplasty, Eg Revision Surgery of the Anterior Urethra, Segment, Posterior Urethra, +/- Grafting (Including Cystoscopy)",Major,No -Head and Neck,REVISION OF FLAP OF SKIN TO HEAD OR NECK,Re-exploration of free flap,Xmajor,Yes -General Surgery,REVISION OF FUNDOPLICATION OF STOMACH,Revision of anti-reflux procedures,Complex,No -Orthopaedics,REVISION OF FUSION OF JOINT AND INTERNAL FIXATION,Excision reconstruction of large joint,Major,No -General Surgery,REVISION OF GASTRIC ANASTOMOSIS WITH JEJUNAL INTERPOSITION,Revision of gastro–jejunostomy,Xmajor,No -Bariatrics,REVISION OF GASTROJEJUNAL ANASTOMOSIS WITH RECONSTRUCTION WITH BOWEL RESECTION,Revision of gastro–jejunostomy,Xmajor,No -Bariatrics,REVISION OF GASTROJEJUNAL ANASTOMOSIS WITH RECONSTRUCTION WITH PARTIAL GASTRECTOMY,Revision of gastro–jejunostomy,Xmajor,No -Bariatrics,REVISION OF GASTROJEJUNOSTOMY,Revision of gastro–jejunostomy,Xmajor,No -Urology,REVISION OF GLANS,Revision of circumcision,Intermediate,No -Orthopaedics,REVISION OF HIP ARTHROPLASTY,Revision of uncemented or cemented total hip replacement without adjunctive procedures,Complex,No -Orthopaedics,REVISION OF HIP REPLACEMENT,Revision of uncemented or cemented total hip replacement without adjunctive procedures,Complex,No -,REVISION OF HIP REPLACEMENT,Revision of uncemented or cemented total hip replacement without adjunctive procedures,Complex,No -Orthopaedics,REVISION OF HYBRID PROSTHETIC REPLACEMENT OF HIP JOINT USING CEMENT,Revision of uncemented or cemented total hip replacement without adjunctive procedures,Complex,No -Orthopaedics,REVISION OF HYBRID TOTAL KNEE REPLACEMENT,Revision of total replacement of knee joint,Complex,No -Orthopaedics,REVISION OF HYBRID TOTAL PROSTHETIC REPLACEMENT OF HIP JOINT USING CEMENTED FEMORAL COMPONENT,Revision of uncemented or cemented total hip replacement without adjunctive procedures,Complex,No -Urology,REVISION OF HYPOSPADIAS REPAIR,Repair of epispadias,Xmajor,No -Urology,REVISION OF ILEAL CONDUIT,Construction of ileal conduit including ureteric implantation,Xmajor,No -Paediatric Urology,REVISION OF ILEAL CONDUIT,Construction of ileal conduit including ureteric implantation,Xmajor,No -Urology,REVISION OF ILEAL CONDUIT AT THE LEVEL OF SKIN,Construction of ileal conduit including ureteric implantation,Xmajor,No -General Surgery,REVISION OF ILEOSTOMY,Revision of ileostomy - local,Major,No -Gynaecology,REVISION OF ILEOSTOMY,Revision of ileostomy - local,Major,No -General Surgery,"REVISION OF ILEOSTOMY, COMPLICATED",Revision of ileostomy - laparotomy,Major,Yes -Urology,REVISION OF IMPLANT,Operation(s) on varicocele,Intermediate,No -,REVISION OF KNEE ARTHROPLASTY,Revision of total replacement of knee joint,Complex,No -Orthopaedics,REVISION OF KNEE REPLACEMENT,Revision of total replacement of knee joint,Complex,No -Orthopaedics,REVISION OF LEFT TOTAL HIP ARTHROPLASTY,Revision of uncemented or cemented total hip replacement without adjunctive procedures,Complex,No -Orthopaedics,REVISION OF LEFT TOTAL KNEE ARTHROPLASTY,Revision of total replacement of knee joint,Complex,No -Urology,REVISION OF MALE EPISPADIAS REPAIR,Repair of epispadias,Xmajor,No -ENT,REVISION OF MASTOIDECTOMY,Revision of mastoidectomy (including meatoplasty),Major,No -Paediatric ENT,REVISION OF MASTOIDECTOMY,Revision of mastoidectomy (including meatoplasty),Major,No -Orthopaedics,REVISION OF ONE COMPONENT OF TOTAL PROSTHETIC REPLACEMENT OF ELBOW JOINT USING CEMENT,Revisional prosthetic replacement of elbow,Complex,No -Orthopaedics,REVISION OF ONE COMPONENT OF TOTAL PROSTHETIC REPLACEMENT OF KNEE JOINT NOT USING CEMENT,Revision of total replacement of knee joint,Complex,No -Orthopaedics,REVISION OF ONE COMPONENT OF TOTAL PROSTHETIC REPLACEMENT OF KNEE JOINT USING CEMENT,Revision of total replacement of knee joint,Complex,No -,REVISION OF ONE COMPONENT OF TOTAL PROSTHETIC REPLACEMENT OF KNEE JOINT USING CEMENT,Revision of total replacement of knee joint,Complex,No -Orthopaedics,REVISION OF ONE COMPONENT OF TOTAL PROSTHETIC REPLACEMENT OF SHOULDER JOINT NOT USING CEMENT,Revision total shoulder replacement,Complex,No -Orthopaedics,REVISION OF ONE COMPONENT OF TOTAL PROSTHETIC REPLACEMENT OF SHOULDER JOINT USING CEMENT,Revision total shoulder replacement,Complex,No -Urology,REVISION OF PENILE PROSTHESIS,Reconstruction of penis,Major,No -,REVISION OF PENILE PROSTHESIS,Reconstruction of penis,Major,No -Urology,REVISION OF PERIPHERAL NEUROSTIMULATOR ELECTRODES,Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Gynaecology,REVISION OF PERIPHERAL NEUROSTIMULATOR ELECTRODES,Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Urology,REVISION OF PERIPHERAL NEUROSTIMULATOR RECEIVER,Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Breast Surgery,REVISION OF RECONSTRUCTED BREAST,Removal And Reinsertion Of Existing Prosthesis Into The Breast (Including Capsulectomy) - Bilateral,Major,No -General Surgery,REVISION OF RECONSTRUCTED BREAST,Removal And Reinsertion Of Existing Prosthesis Into The Breast (Including Capsulectomy) - Bilateral,Major,No -Orthopaedics,REVISION OF REPAIR OF ROTATOR CUFF,Revision of open or arthroscopic rotator cuff repair +/- decompression,Major,No -Orthopaedics,REVISION OF RESURFACING ARTHROPLASTY,Therapeutic arthroscopic operation on cavity of joint (not otherwise specified) (as sole procedure),Major,No -Orthopaedics,REVISION OF REVERSE POLARITY TOTAL PROSTHETIC REPLACEMENT OF SHOULDER JOINT,Revision total shoulder replacement,Complex,No -Orthopaedics,REVISION OF RIGHT TOTAL HIP ARTHROPLASTY,Revision of uncemented or cemented total hip replacement without adjunctive procedures,Complex,No -Orthopaedics,REVISION OF RIGHT TOTAL KNEE ARTHROPLASTY,Revision of total replacement of knee joint,Complex,No -Head and Neck,REVISION OF SCAR,Scar Revision up to 5cm - Head & Neck,Minor,No -Urology,REVISION OF SCAR,Scar revision up to 5cm - trunk & limbs,Minor,No -Thoracic Surgery,REVISION OF SCAR OF SKIN,Scar revision up to 5cm - trunk & limbs,Minor,No -Urology,REVISION OF SCAR OF SKIN,Scar revision up to 5cm - trunk & limbs,Minor,No -Orthopaedics,REVISION OF SHOULDER ARTHROPLASTY,Revision total shoulder replacement,Complex,No -ENT,REVISION OF STAPEDECTOMY,Revision stapedectomy (as sole procedure),Xmajor,No -,REVISION OF STAPEDECTOMY,Revision stapedectomy (as sole procedure),Xmajor,No -General Surgery,REVISION OF STOMA OF SMALL INTESTINE,Revision of ileostomy - local,Major,No -Orthopaedics,REVISION OF TOTAL ARTHROPLASTY OF RIGHT SHOULDER,Revision total shoulder replacement,Complex,No -Orthopaedics,REVISION OF TOTAL HIP ARTHROPLASTY,Revision of uncemented or cemented total hip replacement without adjunctive procedures,Complex,No -Orthopaedics,REVISION OF TOTAL HIP REPLACEMENT,Revision of uncemented or cemented total hip replacement without adjunctive procedures,Complex,No -Orthopaedics,"REVISION OF TOTAL KNEE ARTHROPLASTY, ALL COMPONENTS",Revision of total replacement of knee joint,Complex,No -Orthopaedics,REVISION OF TOTAL PROSTHETIC REPLACEMENT OF SHOULDER JOINT,Revision total shoulder replacement,Complex,No -ENT,REVISION OF TYMPANOPLASTY,Combined approach tympanoplasty - intact canal wall tympanoplasty,Major,No -Orthopaedics,REVISION OF UNCEMENTED TOTAL REPLACEMENT OF JOINT,-,Complex,No -Urology,REVISION OF URETHROSTOMY,"Complex Urethroplasty, Eg Revision Surgery of the Anterior Urethra, Segment, Posterior Urethra, +/- Grafting (Including Cystoscopy)",Major,No -Urology,REVISION OF URINARY CONDUIT,Construction of ileal conduit including ureteric implantation,Xmajor,No -Urology,REVISION OF UROSTOMY STOMA,Ureterostomy - formation,Major,No -ENT,REVISION RHINOPLASTY,Rhinoplasty following trauma or excision of tumour (including attention to turbinates),Major,No -ENT,REVISION SEPTORHINOPLASTY,Septorhinoplasty including graft/implant following trauma or excision of tumour (including attention to turbinates),Major,No -,REVISION UNCEMENTED TOTAL HIP REPLACEMENT,Revision of uncemented or cemented total hip replacement without adjunctive procedures,Complex,No -Orthopaedics,REVISION UNCEMENTED TOTAL HIP REPLACEMENT,Revision of uncemented or cemented total hip replacement without adjunctive procedures,Complex,No -ENT,RHINOPLASTY,Rhinoplasty following trauma or excision of tumour (including attention to turbinates),Major,No -Maxillo-Facial Surgery,RHINOPLASTY FOR CLEFT LIP NASAL DEFORMITY,Rhinoplasty following trauma or excision of tumour (including attention to turbinates),Major,No -ENT,RHINOPLASTY OF NASAL DEFORMITY,Rhinoplasty following trauma or excision of tumour (including attention to turbinates),Major,No -Maxillo-Facial Surgery,RHINOPLASTY OF NASAL DEFORMITY,Rhinoplasty following trauma or excision of tumour (including attention to turbinates),Major,No -ENT,RHINOSEPTOPLASTY,Septorhinoplasty including graft/implant following trauma or excision of tumour (including attention to turbinates),Major,No -,RHINOSEPTOPLASTY,Septorhinoplasty (including attention to turbinates),Major,No -General Surgery,RIGHT HEMICOLECTOMY AND ANASTOMOSIS OF ILEUM TO COLON,Right hemicolectomy,Xmajor,No -Colorectal Surgery,RIGHT HEMICOLECTOMY AND ANASTOMOSIS OF ILEUM TO COLON,Right hemicolectomy,Xmajor,No -General Surgery,RIGHT HEMICOLECTOMY AND END TO END ANASTOMOSIS OF ILEUM TO COLON,Right hemicolectomy,Xmajor,No -Colorectal Surgery,RIGHT HEMICOLECTOMY AND END TO END ANASTOMOSIS OF ILEUM TO COLON,Right hemicolectomy,Xmajor,No -General Surgery,RIGHT HEMICOLECTOMY AND SIDE-TO-SIDE ANASTOMOSIS OF ILEUM TO TRANSVERSE COLON,Right hemicolectomy,Xmajor,No -Urology,RIGHT RADICAL ORCHIDECTOMY,Laparoscopic orchidectomy,Intermediate,No -Gynaecology,RIGHT SALPINGO-OOPHORECTOMY,"Laparoscopic oophorectomy and salpingectomy, +/- biopsy eg. omentum, peritoneum, lymph node (as sole procedure) ? unilateral",Major,No -Urology,RIGHT TOTAL ORCHIDECTOMY,Orchidectomy and excision of spermatic cord (+/- insertion of prosthesis),Intermediate,No -Thoracic Surgery,RIGID BRONCHOSCOPY,Therapeutic bronchoscopy for removal of foreign body,Minor,No -Thoracic Surgery,RIGID BRONCHOSCOPY AND BIOPSY,Therapeutic bronchoscopy for removal of foreign body,Minor,No -Urology,RIGID CHECK CYSTOSCOPY,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -Urology,RIGID CHECK CYSTOSCOPY AND BIOPSY OF BLADDER LESION,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -,RIGID CHECK CYSTOSCOPY AND BIOPSY OF BLADDER LESION,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -Urology,RIGID CYSTOSCOPY,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -Gynaecology,RIGID CYSTOSCOPY,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -Anaesthetics,RIGID CYSTOSCOPY,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -,RIGID CYSTOSCOPY,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -Paediatric Urology,RIGID CYSTOSCOPY,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -Urology,RIGID CYSTOSCOPY AND INTRAVESICAL BOTULINUM TOXIN INJECTION INTO DETRUSOR MUSCLE,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -Paediatric Urology,RIGID CYSTOSCOPY AND INTRAVESICAL BOTULINUM TOXIN INJECTION INTO DETRUSOR MUSCLE,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -,RIGID CYSTOSCOPY AND INTRAVESICAL BOTULINUM TOXIN INJECTION INTO DETRUSOR MUSCLE,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -Gynaecology,RIGID CYSTOSCOPY AND INTRAVESICAL BOTULINUM TOXIN INJECTION INTO DETRUSOR MUSCLE,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -Urology,RIGID CYSTOSCOPY AND TRANSURETHRAL RESECTION OF BLADDER LESION,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -,RIGID CYSTOSCOPY AND TRANSURETHRAL RESECTION OF BLADDER LESION,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -Urology,RIGID DIAGNOSTIC CYSTOSCOPY,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -Gynaecology,RIGID DIAGNOSTIC CYSTOSCOPY,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -Urology,RIGID DIAGNOSTIC CYSTOSCOPY AND BIOPSY OF BLADDER LESION,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -Colorectal Surgery,RIGID SIGMOIDOSCOPY,Therapeutic sigmoidoscopy with snare loop biopsy or excision of lesion,Minor,No -Bronchoscopy/Thoracoscopy,RIGID THERAPEUTIC BRONCHOSCOPY,Therapeutic bronchoscopy for removal of foreign body,Minor,No -Urology,RIGID URETEROSCOPY,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -,RIGID URETEROSCOPY,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -Head and Neck,RIM EXCISION OF MANDIBLE,Excision of mandible,Major,No -General Surgery,RIVES PROSTHETIC ABDOMINAL WALL REPAIR,Local flap ? 9cm2 or more (excluding graft/flap to secondary defect),Major,No -Bariatrics,RIVES PROSTHETIC ABDOMINAL WALL REPAIR,Local flap ? 9cm2 or more (excluding graft/flap to secondary defect),Major,No -,ROBOT ASSISTED LAPAROSCOPIC ANTERIOR RESECTION OF RECTUM,Laparoscopic anterior resection - high (i.e. colorectal anastomosis above the peritoneal reflection),Complex,No -General Surgery,ROBOT ASSISTED LAPAROSCOPIC ANTERIOR RESECTION OF RECTUM,Laparoscopic anterior resection - high (i.e. colorectal anastomosis above the peritoneal reflection),Complex,No -Urology,ROBOT ASSISTED LAPAROSCOPIC EXCISION OF DIVERTICULUM OF URINARY BLADDER,Diverticulectomy of bladder,Major,No -General Surgery,ROBOT ASSISTED LAPAROSCOPIC FIXATION OF RECTUM,Fixation of rectum for prolapse,Major,No -Urology,ROBOT ASSISTED LAPAROSCOPIC PARTIAL NEPHRECTOMY,Robotic assisted laparoscopic partial nephrectomy,Major,No -Urology,ROBOT ASSISTED LAPAROSCOPIC PELVIC LYMPH NODE DISSECTION,"Robotic assisted laparoscopic radical prostatectomy, reconstruction of bladder neck including bilateral pelvic lymphadenectomy (including cystoscopy)",Complex,No -Urology,ROBOT ASSISTED LAPAROSCOPIC PYELOPLASTY,Robotic assisted laparoscopic pyeloplasty,Complex,No -Urology,ROBOT ASSISTED LAPAROSCOPIC RADICAL CYSTECTOMY,"Robotic assisted laparoscopic radical prostatectomy, reconstruction of bladder neck including bilateral pelvic lymphadenectomy (including cystoscopy)",Complex,No -Urology,ROBOT ASSISTED LAPAROSCOPIC RADICAL PROSTATECTOMY,"Robotic assisted laparoscopic radical prostatectomy, reconstruction of bladder neck including bilateral pelvic lymphadenectomy (including cystoscopy)",Complex,No -,ROBOT ASSISTED LAPAROSCOPIC RADICAL PROSTATECTOMY,"Robotic assisted laparoscopic radical prostatectomy, reconstruction of bladder neck including bilateral pelvic lymphadenectomy (including cystoscopy)",Complex,No -Gynaecology,ROBOT ASSISTED LAPAROSCOPIC TOTAL HYSTERECTOMY,Laparoscopic total hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Thoracic Surgery,ROBOTIC ANATOMICAL SEGMENTECTOMY OF RIGHT LOWER LOBE,VATS lobectomy,Major,Yes -Thoracic Surgery,ROBOTIC ANATOMICAL SEGMENTECTOMY OF RIGHT UPPER LOBE,VATS lobectomy,Major,Yes -Urology,ROBOTIC ASSISTED SURGERY,-,Major,No -Thoracic Surgery,ROBOTIC ASSISTED SURGERY,-,Major,Yes -Head and Neck,ROBOTIC ASSISTED SURGERY,-,Major,No -Orthopaedics,ROBOTIC ASSISTED SURGERY,-,Major,No -Thoracic Surgery,ROBOTIC BIOPSY OF LESION OF MEDIASTINUM,Diagnostic mediastinoscopy,Intermediate,Yes -Thoracic Surgery,ROBOTIC EXCISION OF THYMUS,VATS excision lesion of mediastinum including thymectomy,Xmajor,Yes -Thoracic Surgery,ROBOTIC LOBECTOMY OF LOWER LOBE OF LEFT LUNG,VATS lobectomy,Major,Yes -Thoracic Surgery,ROBOTIC LOBECTOMY OF LOWER LOBE OF RIGHT LUNG,VATS lobectomy,Major,Yes -Thoracic Surgery,ROBOTIC LOBECTOMY OF MIDDLE LOBE OF RIGHT LUNG,VATS lobectomy,Major,Yes -Thoracic Surgery,ROBOTIC LOBECTOMY OF UPPER LOBE OF LEFT LUNG,VATS lobectomy,Major,Yes -Thoracic Surgery,ROBOTIC LOBECTOMY OF UPPER LOBE OF RIGHT LUNG,VATS lobectomy,Major,Yes -Thoracic Surgery,ROBOTIC LUNG RESECTION WITH CHEST WALL EXCISION AND RECONSTRUCTION,Lung resection with resection of chest wall,Complex,Yes -Thoracic Surgery,ROBOTIC LUNG VOLUME REDUCTION SURGERY,VATS lung volume reduction - unilateral,Complex,Yes -Thoracic Surgery,ROBOTIC PLICATION OF DIAPHRAGM,Plication of paralysed diaphragm,Xmajor,Yes -Thoracic Surgery,ROBOTIC SYMPATHECTOMY,VATS sympathectomy - unilateral,Major,Yes -Thoracic Surgery,ROBOTIC WEDGE EXCISION OF LUNG,VATS wedge resection of lung,Major,Yes -Bariatrics,ROUX-EN-Y GASTROJEJUNOSTOMY,Gastro–jejunostomy,Major,No -General Surgery,ROUX-EN-Y GASTROJEJUNOSTOMY,Gastro–jejunostomy,Major,No -General Surgery,RUBBER BAND LIGATION OF HAEMORRHOID(S),Haemorrhoidectomy (including sigmoidoscopy),Intermediate,No -Gynaecology,"SACRAL NEUROMODULATION IMPLANT-IMPLANTABLE PROGRAMMABLE GENERATOR, FIRST STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Urology,"SACRAL NEUROMODULATION IMPLANT-IMPLANTABLE PROGRAMMABLE GENERATOR, FIRST STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Urology,"SACRAL NEUROMODULATION -TINED LEAD REMOVAL, FIRST STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Urology,"SACRAL NEUROMODULATION -TINED LEAD REMOVAL, SECOND STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Gynaecology,SACROCOLPOPEXY,Sacrocolpopexy (including laparoscopic) +/- ureterolysis,Major,No -Gynaecology,SACROSPINOUS CERVICOPEXY,Sacrospinous fixation,Major,No -Gynaecology,SACROSPINOUS FIXATION OF VAGINAL VAULT,Sacrospinous fixation,Major,No -Maxillo-Facial Surgery,SAGITTAL SPLIT MANDIBULAR OSTEOTOMY,Extensive segmental excision of mandible,Xmajor,No -,SALPINGECTOMY FOR TUBAL ECTOPIC PREGNANCY BY ABDOMINAL APPROACH,Removal of products of conception from fallopian tube (ectopic pregnancy) including laparoscopically,Major,No -Gynaecology,SALPINGO-OOPHORECTOMY,"Laparoscopic oophorectomy and salpingectomy, +/- biopsy eg. omentum, peritoneum, lymph node (as sole procedure) ? unilateral",Major,No -Orthopaedics,SCAPULOPEXY,Scapulo-thoracic fusion,Xmajor,No -Orthopaedics,SCARF OSTEOTOMY OF FIRST METATARSAL,Partial excision of bone (including exostoses),Intermediate,No -Orthopaedics,SCARF OSTEOTOMY OF FIRST METATARSAL WITH MEDIAL CLOSING WEDGE,Partial excision of bone (including exostoses),Intermediate,No -Urology,SCROTAL TRANSPOSITION URETHROPLASTY,"Complex Urethroplasty, Eg Revision Surgery of the Anterior Urethra, Segment, Posterior Urethra, +/- Grafting (Including Cystoscopy)",Major,No -Urology,SCROTUM AND TESTICLE OPERATION,Exploration of testis (including biopsy),Intermediate,No -Urology,SCROTUM RECONSTRUCTION,Prosthesis of testis (insertion or removal),Intermediate,No -,SCROTUM RECONSTRUCTION,Prosthesis of testis (insertion or removal),Intermediate,No -General Surgery,SECOND LOOK LAPAROTOMY,Laparotomy for postoperative haemorrhage,Major,Yes -Orthopaedics,SECONDARY REPAIR OF FLEXOR TENDON OF LOWER LIMB,"Secondary repair of tendon (including graft, transfer and/or prosthesis) (not otherwise specified)",Major,No -Orthopaedics,SECONDARY REPAIR OF RUPTURED ACHILLES TENDON WITH GRAFT,"Secondary repair of tendon (including graft, transfer and/or prosthesis) (not otherwise specified)",Major,No -Gynaecology,SECONDARY SUTURING OF WOUND OF ABDOMEN,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Urology,SECONDARY URETHRECTOMY,Urethrectomy,Major,No -Thoracic Surgery,SEGMENTAL LOBECTOMY,Pulmonary lobectomy including segmental resection,Complex,Yes -Oral Surgery,SEGMENTAL OSTEOTOMY OF MANDIBLE,Excision of mandible,Major,No -Urology,SELECTIVE DENERVATION OF PERIPHERAL NERVE,"Radiofrequency (including pulsed denervation), cryoprobe or phenol for permanent lesion of named peripheral nerve +/- image guidance",Intermediate,No -Head and Neck,SELECTIVE NECK DISSECTION OF CERVICAL LYMPH NODES,Radical dissection of cervical lymph nodes,Complex,Yes -Urology,SEMINAL VESICLE REPAIR,Operation(s) on seminal vesicle,Major,No -Urology,SEMINAL VESICULECTOMY,Operation(s) on seminal vesicle,Major,No -Head and Neck,SENTINEL LYMPH NODE BIOPSY,Sentinel lymph node biopsy for melanoma,Intermediate,No -Urology,SENTINEL LYMPH NODE BIOPSY,Sentinel lymph node biopsy for melanoma,Intermediate,No -Gynaecology,SENTINEL LYMPH NODE BIOPSY,Sentinel lymph node biopsy for melanoma,Intermediate,No -ENT,SEPTORHINOPLASTY USING GRAFT,Septorhinoplasty including graft/implant following trauma or excision of tumour (including attention to turbinates),Major,No -,SEPTORHINOPLASTY USING GRAFT,Septorhinoplasty including graft/implant following trauma or excision of tumour (including attention to turbinates),Major,No -Orthopaedics,SHORTENING OF ACHILLES TENDON,"Secondary repair of tendon (including graft, transfer and/or prosthesis) (not otherwise specified)",Major,No -Head and Neck,SIALENDOSCOPIC REMOVAL OF CALCULUS FROM PAROTID GLAND USING GRASPING FORCEPS,Manipulative removal of calculus from parotid duct,Intermediate,No -Head and Neck,SIALENDOSCOPIC REMOVAL OF CALCULUS FROM SUBMANDIBULAR GLAND USING WIRE BASKET,Manipulative removal of calculus from parotid duct,Intermediate,No -Head and Neck,SIALENDOSCOPICALLY ASSISTED EXTRA-ORAL REMOVAL OF STONE FROM PAROTID DUCT,Manipulative removal of calculus from parotid duct,Intermediate,No -Head and Neck,SIALENDOSCOPICALLY ASSISTED INTRA-ORAL REMOVAL OF STONE FROM SUBMANDIBULAR DUCT,Manipulative removal of calculus from parotid duct,Intermediate,No -Colorectal Surgery,SIGMOID COLECTOMY,Excision of sigmoid colon,Xmajor,No -Gynaecology Oncology,SIGMOIDOSCOPY,"Diagnostic flexible sigmoidoscopy, including forceps biopsy and proctoscopy",Minor,No -Colorectal Surgery,SIGMOIDOSCOPY,"Diagnostic flexible sigmoidoscopy, including forceps biopsy and proctoscopy",Minor,No -Breast Surgery,SIMPLE MASTECTOMY,Simple mastectomy (including axillary node biopsy) ? unilateral,Major,No -Breast Surgery,SIMPLE MASTECTOMY OF LEFT BREAST,Simple mastectomy (including axillary node biopsy) ? unilateral,Major,No -Urology,SIMPLE ORCHIECTOMY WITH PLACEMENT OF TESTICULAR PROSTHESIS BY SCROTAL APPROACH,Prosthesis of testis (insertion or removal),Intermediate,No -General Surgery,SINGLE ANASTOMOSIS DUODENO-ILEAL BYPASS WITH SLEEVE GASTRECTOMY,Laparoscopic biliary gastric bypass,Complex,No -Bariatrics,SINGLE ANASTOMOSIS DUODENO-ILEAL BYPASS WITH SLEEVE GASTRECTOMY,Laparoscopic biliary gastric bypass,Complex,No -Head and Neck,SISTRUNK OPERATION FOR THYROGLOSSAL CYST,Excision of thyroglossal cyst/tract,Intermediate,No -General Surgery,SISTRUNK OPERATION FOR THYROGLOSSAL CYST,Excision of thyroglossal cyst/tract,Intermediate,No -Head and Neck,SKIN GRAFT TO LIP AND MOUTH,"Full thickness graft, head, neck, hands and genitalia ? up to 9cm2 in area",Major,No -Urology,SKIN GRAFTING,"Full thickness graft, trunk and limbs – each additional 25cm2 in area",Minor,No -Head and Neck,SKIN OF HEAD DESTRUCTIVE PROCEDURE,"Excision of lesion of skin or subcutaneous tissue - up to three, Head & Neck (excluding lipoma)",Minor,No -Breast Surgery,SKIN SPARING MASTECTOMY,Skin/Nipple sparing mastectomy (including axillary node biopsy),Major,No -Gynaecology,SKINNING VULVECTOMY,Simple vulvectomy,Major,No -ENT,SLEEP NASENDOSCOPY,Diagnostic endoscopy of sinus and bilateral (as sole procedure),Minor,No -,SLEEP NASENDOSCOPY,Diagnostic endoscopy of sinus and bilateral (as sole procedure),Minor,No -General Surgery,SLEEVE RESECTION OF STOMACH,Partial gastrectomy,Xmajor,Yes -Bariatrics,SLEEVE RESECTION OF STOMACH,Partial gastrectomy,Xmajor,Yes -Gastroenterology,SLEEVE RESECTION OF STOMACH,Partial gastrectomy,Xmajor,Yes -General Surgery,SMALL INTESTINAL STRICTUREPLASTY,Dilatation of stricture under imaging control,Intermediate,No -General Surgery,SMALL INTESTINE EXCISION,Open resectionof small intestine tumour,Major,No -Colorectal Surgery,SMALL INTESTINE EXCISION,Open resectionof small intestine tumour,Major,No -General Surgery,SOAVE ENDORECTAL PULL-THROUGH OPERATION FOR HIRSCHSPRUNG'S DISEASE,"Abdominal operation for Hirschprung's disease (eg Duhamel, Söave and Surcuson operations)",Complex,No -Colorectal Surgery,SOAVE ENDORECTAL PULL-THROUGH OPERATION FOR HIRSCHSPRUNG'S DISEASE,"Abdominal operation for Hirschprung's disease (eg Duhamel, Söave and Surcuson operations)",Complex,No -Orthopaedics,SOFT TISSUE RELEASE OF METATARSOPHALANGEAL JOINT OF HALLUX,"Metatarsal osteotomy (e.g. scarf) for Hallux valgus, +/- internal fixation and soft tissue correction",Major,No -ENT,SPHENOID SINUSOTOMY,"Image guided endoscopic frontal, sphenoid and/or ethmoid sinus surgery (FESS) and bilateral",Major,No -Colorectal Surgery,SPLENECTOMY,Open splenectomy,Major,No -Urology,SPLIT THICKNESS SKIN GRAFT,Excision of pilonidal sinus and suture/skin graft,Intermediate,No -Orthopaedics,STABILISATION OF JOINT BY REPAIR OF CAPSULE,Therapeutic arthroscopy operation on cavity of joint (not otherwise specified) (as sole procedure),Major,No -,STAGING LAPAROSCOPY,Diagnostic laparoscopy (including any biopsy),Intermediate,No -Upper Gastro-intestinal Surgery,STAGING LAPAROSCOPY,Diagnostic laparoscopy (including any biopsy),Intermediate,No -General Surgery,STAGING LAPAROSCOPY,Diagnostic laparoscopy (including any biopsy),Intermediate,No -Gynaecology,STAGING LAPAROSCOPY,Diagnostic laparoscopy (including any biopsy),Intermediate,No -Urology,STANDARD CIRCUMCISION,Circumcision,Intermediate,No -ENT,STAPEDECTOMY,Stapedectomy (as sole procedure),Major,No -Paediatric ENT,STAPEDECTOMY,Stapedectomy (as sole procedure),Major,No -,STAPEDECTOMY,Stapedectomy (as sole procedure),Major,No -ENT,STAPES OPERATION,Stapedectomy (as sole procedure),Major,No -,STAPES OPERATION,Stapedectomy (as sole procedure),Major,No -Thoracic Surgery,STERNOTOMY,-,Complex,Yes -General Surgery,SUBCUTANEOUS MASTECTOMY,Subcutaneous mastectomy,Major,No -General Surgery,SUBCUTANEOUS MASTECTOMY FOR GYNAECOMASTIA,Subcutaneous mastectomy,Major,No -Breast Surgery,SUBCUTANEOUS MASTECTOMY OF LEFT BREAST,Subcutaneous mastectomy,Major,No -Breast Surgery,SUBCUTANEOUS MASTECTOMY OF LEFT BREAST WITH PROSTHETIC IMPLANT,Subcutaneous mastectomy with immediate implant,Major,No -Breast Surgery,SUBCUTANEOUS MASTECTOMY OF RIGHT BREAST,Subcutaneous mastectomy,Major,No -Breast Surgery,SUBCUTANEOUS MASTECTOMY OF RIGHT BREAST WITH PROSTHETIC IMPLANT,Mastectomy and immediate reconstruction of breast using fixed prosthesis - unilateral,Xmajor,No -Urology,SUBFASCIAL VENOUS LIGATION,Haemorrhoidal artery ligation operation (including image-guided) +/- recto anal prolapse repair,Minor,No -Head and Neck,SUBMUCOUS RESECTION OF NASAL SEPTUM,Submucous resection of nasal septum,Intermediate,No -Head and Neck,SUBMUCOUS RESECTION OF NASAL TURBINATE,"Reduction turbinates of nose (laser, diathermy, out fracture etc)",Minor,No -Orthopaedics,SUBTALAR ARTHRODESIS,Isolated sub talar fusion or mid foot fusion without autogenous graft (adult),Major,No -Gynaecology,SUBTOTAL ABDOMINAL HYSTERECTOMY,Subtotal abdominal hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Gynaecology,SUBTOTAL ABDOMINAL HYSTERECTOMY AND BILATERAL SALPINGO-OOPHORECTOMY,Subtotal abdominal hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Gynaecology,SUBTOTAL ABDOMINAL HYSTERECTOMY AND RIGHT SALPINGO-OOPHORECTOMY,Subtotal abdominal hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -General Surgery,SUBTOTAL COLECTOMY,Excision of left hemicolon,Xmajor,No -Colorectal Surgery,SUBTOTAL COLECTOMY,Excision of left hemicolon,Xmajor,No -Colorectal Surgery,SUBTOTAL COLECTOMY WITH ILEORECTAL ANASTOMOSIS,Total excision of colon and ileorectal anastomosis,Complex,No -General Surgery,SUBTOTAL COLECTOMY WITH ILEORECTAL ANASTOMOSIS,Total excision of colon and ileorectal anastomosis,Complex,No -Upper Gastro-intestinal Surgery,SUBTOTAL GASTRECTOMY,Partial gastrectomy,Xmajor,Yes -General Surgery,SUBTOTAL GASTRECTOMY,Partial gastrectomy,Xmajor,Yes -Head and Neck,SUBTOTAL GLOSSECTOMY,Partial glossectomy for malignancy,Major,No -Gynaecology,SUBTOTAL HYSTERECTOMY AFTER CAESAREAN DELIVERY,Caesarean hysterectomy,Xmajor,No -Head and Neck,SUCTION ASSISTED LIPECTOMY OF TRUNK,"Fat transfer, including extraction and volume adjustment, of scar defect following trauma (excluding breast)",Intermediate,No -Head and Neck,SUPERFICIAL PAROTIDECTOMY,Partial excision of parotid gland and preservation of facial nerve,Xmajor,No -ENT,SUPERFICIAL PAROTIDECTOMY,Partial excision of parotid gland and preservation of facial nerve,Xmajor,No -Orthopaedics,SUPRACONDYLAR OSTEOTOMY OF HUMERUS,"Osteotomy of long bone, with/without fixation, including graft",Major,No -Urology,SUPRAPUBIC ASPIRATION OF BLADDER,Cystostomy and insertion of suprapubic tube into bladder (including cystoscopy),Intermediate,No -Paediatric Urology,SUPRAPUBIC CYSTOSTOMY,Cystostomy and insertion of suprapubic tube into bladder (including cystoscopy),Intermediate,No -Urology,SURGICAL BIOPSY OF GLANS PENIS,Biopsy of lesion of penis,Minor,No -Head and Neck,SURGICAL BIOPSY OF NOSE,Biopsy of of septum of nose,Minor,No -Paediatric Urology,SURGICAL CLOSURE OF BLADDER NECK,Retropubic suspension of neck of bladder (including colposuspension)(including cystoscopy),Major,No -Colorectal Surgery,SURGICAL CLOSURE OF STOMA,Closure of colostomy,Major,No -Orthopaedics,SURGICAL DEBRIDEMENT OF WOUND,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Colorectal Surgery,SURGICAL DEBRIDEMENT OF WOUND,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Head and Neck,SURGICAL DEBRIDEMENT OF WOUND,Debridement and primary suture of wound with involvement of deeper tissue - Head and Neck,Intermediate,No -Maxillo-Facial Surgery,SURGICAL EXTRACTION,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Oral Surgery,SURGICAL EXTRACTION,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Head and Neck,SURGICAL FRACTURE OF NASAL TURBINATES,"Reduction turbinates of nose (trim, radical excision)",Intermediate,No -ENT,SURGICAL FRACTURE OF NASAL TURBINATES,"Reduction turbinates of nose (trim, radical excision)",Intermediate,No -Orthopaedics,SURGICAL MANIPULATION OF ARTHROPLASTY,Examination/ manipulation of joint under general anaesthetic +/- injection +/- arthrogram (as sole procedure),Minor,No -ENT,SURGICAL PROCEDURE ON MIDDLE AND INNER EAR,Middle ear tumour excision,Major,No -Urology,SURGICAL REMOVAL OF FOREIGN BODY,Endoscopic removal of foreign body from bladder (including cystoscopy),Intermediate,No -Oral Surgery,SURGICAL REMOVAL OF IMPACTED THIRD MOLAR TOOTH,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Maxillo-Facial Surgery,SURGICAL REMOVAL OF IMPACTED THIRD MOLAR TOOTH,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -ENT,SURGICAL REPAIR AND REVISION OF POUCH,Open operation(s) on pharyngeal pouch,Major,No -Gynaecology,SUSPENSION OF UTERUS USING MESH,Laparoscopic hysteropexy (including sacrohysteropexy) using mesh +/- ureterolysis,Major,No -Orthopaedics,"SUTURE OF HAMSTRING MUSCLE RUPTURE, PRIMARY","Secondary repair of tendon (including graft, transfer and/or prosthesis) (not otherwise specified)",Major,No -Orthopaedics,SUTURE OF LIGAMENT OF ANKLE,Prosthetic open repair of ligament,Major,No -Thoracic Surgery,SYMPATHECTOMY,VATS sympathectomy - unilateral,Major,Yes -Orthopaedics,SYNDACTYLISATION OF LESSER TOES,Fusion of interphalangeal joint(s) of toe (including internal fixation),Intermediate,No -Orthopaedics,SYNOVECTOMY OF KNEE,Total synovectomy of large joint,Major,No -Thoracic Surgery,TALC PLEURODESIS,Thoracoscopy and drainage and chemical pleurodesis,Intermediate,Yes -Head and Neck,TEMPORARY TRACHEOSTOMY,Tracheostomy,Intermediate,Yes -Orthopaedics,TENDON REPAIR BY DISTAL INSERTION,Transfer of tendon (not otherwise specified),Intermediate,No -Orthopaedics,TENOTOMY,Lengthening of tendon(s) or open tenotomy,Intermediate,No -Urology,TERMINALISING RECONSTRUCTION OF URETHRA USING GRAFT OTHER THAN SKIN,"Complex Urethroplasty, Eg Revision Surgery of the Anterior Urethra, Segment, Posterior Urethra, +/- Grafting (Including Cystoscopy)",Major,No -,TESTICULAR SPERM EXTRACTION,-,Minor,No -Urology,TESTICULAR SPERM EXTRACTION,-,Minor,No -Gynaecology,TESTICULAR SPERM EXTRACTION,-,Minor,No -Urology,TESTIS EXCISION,Laparoscopic orchidectomy,Intermediate,No -Urology,TESTIS RECONSTRUCTION,Prosthesis of testis (insertion or removal),Intermediate,No -Orthopaedics,THERAPEUTIC ARTHROSCOPIC OPERATIONS ON CAVITY OF KNEE JOINT,"Arthroscopy of knee (including examination under anaesthetic, washout and biopsy) (as sole procedure)",Intermediate,No -Orthopaedics,THERAPEUTIC ARTHROSCOPY,Therapeutic arthroscopy operation on cavity of joint (not otherwise specified) (as sole procedure),Major,No -,THORACENTESIS,Drainage of pleural cavity,Minor,No -Thoracic Surgery,THORACOTOMY,Thoracotomy and lung biopsy as sole procedure,Intermediate,Yes -General Surgery,THYROID ISTHMECTOMY,Isthmectomy of thyroid gland,Major,No -Head and Neck,THYROID ISTHMECTOMY,Isthmectomy of thyroid gland,Major,No -Head and Neck,THYROIDECTOMY,Total thyroidectomy including block dissection of lymph nodes,Major,No -General Surgery,THYROIDECTOMY,Total thyroidectomy including block dissection of lymph nodes,Major,No -Thoracic Surgery,THYROIDECTOMY,Total thyroidectomy including block dissection of lymph nodes,Major,Yes -Orthopaedics,TIBIAL TUBERCLE DISTALISATION,Tibial osteotomy,Major,No -Head and Neck,TONGUE DESTRUCTIVE PROCEDURE,Excision/destruction of lesion of tongue,Intermediate,No -Head and Neck,TONGUE RECONSTRUCTION,Tongue flap - first stage and second stage,Major,Yes -ENT,TONSILLECTOMY,"Tonsillectomy - adult, age 13 + (and bilateral)",Intermediate,No -Head and Neck,TONSILLECTOMY,"Tonsillectomy - adult, age 13 + (and bilateral)",Intermediate,No -Paediatric ENT,TONSILLECTOMY,"Tonsillectomy - adult, age 13 + (and bilateral)",Intermediate,No -,TONSILLECTOMY,"Tonsillectomy - adult, age 13 + (and bilateral)",Intermediate,No -ENT,TONSILLECTOMY AND ADENOIDECTOMY,Adenotonsillectomy (and bilateral),Intermediate,No -Oral Surgery,TOOTH EXTRACTION,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Maxillo-Facial Surgery,TOOTH EXTRACTION,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Oral Surgery,"TOOTH EXTRACTION, MULTIPLE",Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Maxillo-Facial Surgery,"TOOTH EXTRACTION, MULTIPLE",Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Gynaecology,TOTAL ABDOMINAL HYSTERECTOMY,Total abdominal hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Gynaecology Oncology,TOTAL ABDOMINAL HYSTERECTOMY,Total abdominal hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Gynaecology,TOTAL ABDOMINAL HYSTERECTOMY WITH BILATERAL SALPINGECTOMY,Total abdominal hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Gynaecology,TOTAL ABDOMINAL HYSTERECTOMY WITH BILATERAL SALPINGO-OOPHORECTOMY,Total abdominal hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -,TOTAL ABDOMINAL HYSTERECTOMY WITH BILATERAL SALPINGO-OOPHORECTOMY,Total abdominal hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Gynaecology Oncology,TOTAL ABDOMINAL HYSTERECTOMY WITH BILATERAL SALPINGO-OOPHORECTOMY,Total abdominal hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Urology,TOTAL CYSTECTOMY AND URETHRECTOMY,Open total cystectomy (with construction of intestinal conduit or bladder),Complex,No -Orthopaedics,TOTAL ELBOW REPLACEMENT,Total prosthetic replacement of elbow,Xmajor,No -Head and Neck,TOTAL EXCISION OF RIGHT SUBMANDIBULAR GLAND,Excision of submandibular gland,Intermediate,No -Upper Gastro-intestinal Surgery,TOTAL GASTRECTOMY,Total gastrectomy and excision of surrounding tissue,Complex,Yes -General Surgery,TOTAL GASTRECTOMY,Total gastrectomy and excision of surrounding tissue,Complex,Yes -Upper Gastro-intestinal Surgery,TOTAL GASTRECTOMY AND ANASTOMOSIS OF OESOPHAGUS TO TRANSPOSED JEJUNUM,Total gastrectomy and excision of surrounding tissue,Complex,Yes -General Surgery,TOTAL GASTRECTOMY WITH EXTENDED LYMPHADENECTOMY,Total gastrectomy and excision of surrounding tissue,Complex,Yes -Upper Gastro-intestinal Surgery,TOTAL GASTRECTOMY WITH EXTENDED LYMPHADENECTOMY,Total gastrectomy and excision of surrounding tissue,Complex,Yes -Orthopaedics,TOTAL HIP RESURFACING ARTHROPLASTY,Hip resurfacing arthroplasty,Xmajor,No -Gynaecology,TOTAL HYSTERECTOMY WITH REMOVAL OF BOTH TUBES AND OVARIES,Total abdominal hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Orthopaedics,TOTAL KNEE REPLACEMENT,"Total prosthetic replacement of knee joint, with or without cement, +/– patella",Xmajor,No -,TOTAL KNEE REPLACEMENT,"Total prosthetic replacement of knee joint, with or without cement, +/– patella",Xmajor,No -Head and Neck,TOTAL LARYNGECTOMY,Total laryngectomy,Complex,Yes -Head and Neck,TOTAL LARYNGECTOMY WITH RADICAL NECK DISSECTION,Total laryngectomy,Complex,Yes -Thoracic Surgery,TOTAL LOBECTOMY OF LUNG,Pulmonary lobectomy including segmental resection,Complex,Yes -Head and Neck,TOTAL MANDIBULECTOMY WITH RECONSTRUCTION,Extensive excision of mandible with disarticulation,Xmajor,No -Gynaecology,TOTAL OMENTECTOMY,Wedge excision or removal of omentum (as sole procedure),Major,No -Head and Neck,TOTAL PAROTIDECTOMY,Total excision of parotid gland and preservation of facial nerve,Xmajor,No -Paediatric ENT,TOTAL PETROSECTOMY,Total petrosectomy (for tumour),Complex,No -ENT,TOTAL PETROSECTOMY,Total petrosectomy (for tumour),Complex,No -Head and Neck,TOTAL PHARYNGOLARYNGECTOMY,Total laryngectomy,Complex,Yes -General Surgery,TOTAL PROCTECTOMY,Proctectomy,Major,No -Colorectal Surgery,TOTAL PROCTECTOMY,Proctectomy,Major,No -Urology,TOTAL PROCTECTOMY,Proctectomy,Major,No -Orthopaedics,TOTAL PROSTHETIC REPLACEMENT OF HIP JOINT NOT USING CEMENT,Primary total hip replacement with or without cement,Xmajor,No -Orthopaedics,TOTAL PROSTHETIC REPLACEMENT OF HIP JOINT USING CEMENT,Primary total hip replacement with or without cement,Xmajor,No -Orthopaedics,TOTAL PROSTHETIC REPLACEMENT OF KNEE JOINT USING CEMENT,"Total prosthetic replacement of knee joint, with or without cement, +/– patella",Xmajor,No -,TOTAL PROSTHETIC REPLACEMENT OF KNEE JOINT USING CEMENT,"Total prosthetic replacement of knee joint, with or without cement, +/– patella",Xmajor,No -Urology,TOTAL REMOVAL OF TRANSOBTURATOR TAPE,Insertion of suburethral tape sling (e.g. TOT or TVT) +/- administration of local anaesthetic by operating surgeon (including cystoscopy),Major,No -Orthopaedics,TOTAL REPLACEMENT OF HIP,Primary total hip replacement with or without cement,Xmajor,No -,TOTAL REPLACEMENT OF HIP,Primary total hip replacement with or without cement,Xmajor,No -Orthopaedics,TOTAL REPLACEMENT OF LEFT KNEE JOINT,"Total prosthetic replacement of knee joint, with or without cement, +/– patella",Xmajor,No -Orthopaedics,TOTAL REPLACEMENT OF RIGHT HIP JOINT,"Total hip replacement, with or without cement, after excision arthroplasty or arthrodesis, including conversion of hemiarthroplasty or revision of other previous hip surgery which involved internal fixation",Xmajor,No -Orthopaedics,TOTAL REPLACEMENT OF RIGHT KNEE JOINT,"Total prosthetic replacement of knee joint, with or without cement, +/– patella",Xmajor,No -ENT,TOTAL RHINECTOMY,Total excision of nose,Major,No -,TOTAL RHINECTOMY,Total excision of nose,Major,No -Orthopaedics,TOTAL SHOULDER REPLACEMENT,Primary total shoulder replacement,Xmajor,No -Thoracic Surgery,TOTAL STERNOTOMY,-,Complex,Yes -General Surgery,TOTAL SUBSTERNAL THYROIDECTOMY,Total thyroidectomy including block dissection of lymph nodes,Major,No -Thoracic Surgery,TOTAL THYMECTOMY,Thymectomy for myasthenia gravis/thymoma,Major,Yes -General Surgery,TOTAL THYROIDECTOMY,Total thyroidectomy/near total thyroidectomy,Major,No -Head and Neck,TOTAL THYROIDECTOMY,Total thyroidectomy/near total thyroidectomy,Major,No -,TOTAL THYROIDECTOMY,Total thyroidectomy/near total thyroidectomy,Major,Yes -General Surgery,TOTAL THYROIDECTOMY WITH CERVICAL LYMPH NODE DISSECTION,Total thyroidectomy including block dissection of lymph nodes,Major,No -Head and Neck,TOTAL THYROIDECTOMY WITH CERVICAL LYMPH NODE DISSECTION,Total thyroidectomy including block dissection of lymph nodes,Major,Yes -Urology,TOTAL URETHRECTOMY,Urethrectomy,Major,No -Head and Neck,TRACHEO-ESOPHAGEAL PUNCTURE AND INSERTION OF PROSTHESIS,Insertion of voice prosthesis (TOF),Major,No -Urology,TRANS URETHRAL RESECTION OF BLADDER TUMOUR,Endoscopic resection of lesion of bladder (including cystoscopy),Major,No -Colorectal Surgery,TRANSANAL HAEMORRHOIDAL DEARTERIALISATION,Circular stapling haemorrhoidectomy,Intermediate,No -Gynaecology,TRANSCERVICAL RESECTION OF LEIOMYOMA,Hysteroscopy with resection of fibroids (excluding morcellation) +/- insertion on Mirena coil,Major,No -,TRANSCERVICAL RESECTION OF LEIOMYOMA,Hysteroscopy with resection of fibroids (excluding morcellation) +/- insertion on Mirena coil,Major,No -Orthopaedics,TRANSFER OF LATISSIMUS DORSI,"Secondary repair of tendon (including graft, transfer and/or prosthesis) (not otherwise specified)",Major,No -Orthopaedics,TRANSFER OF PATELLAR TENDON,Transfer of tendon (not otherwise specified),Intermediate,No -Orthopaedics,TRANSFER OF TENDON,Transfer of tendon (not otherwise specified),Intermediate,No -Orthopaedics,TRANSFER OF TENDON OF FOOT AND/OR ANKLE,Transfer of tendon (not otherwise specified),Intermediate,No -Orthopaedics,TRANSFER OF TIBIALIS POSTERIOR TENDON,Transfer of tendon (not otherwise specified),Intermediate,No -Head and Neck,TRANSLUMINAL LASER RESECTION OF RIGHT VENTRICULAR MUSCLE,-,Unknown,No -Urology,TRANSPERINEAL NEEDLE BIOPSY OF PROSTATE,Transperineal template-guided biopsies of the prostate under image guidance,Intermediate,No -,TRANSPERINEAL NEEDLE BIOPSY OF PROSTATE,Transperineal template-guided biopsies of the prostate under image guidance,Intermediate,No -General Surgery,TRANSPLANTATION OF PARATHYROID,Partial thyroidectomy (not elsewhere classified),Major,No -ENT,TRANSPLANTATION OF TEMPORALIS MUSCLE,Free functioning muscle transfer (as sole procedure) including closure of secondary defect,Complex,No -Orthopaedics,TRANSPLANTATION OF TISSUE OF LOWER LIMB,"Split autograft of skin, trunk and limbs – up to 25cm2 in area",Intermediate,No -Orthopaedics,TRANSPOSITION OF LIGAMENT FOR STABILISATION OF JOINT,Transfer of tendon (not otherwise specified),Intermediate,No -Gynaecology,TRANSPOSITION OF OVARY,"Laparoscopic oophorectomy and salpingectomy, +/- biopsy eg. omentum, peritoneum, lymph node (as sole procedure) ? unilateral",Major,No -Urology,TRANSRECTAL HIGH INTENSITY FOCUSED ULTRASOUND ABLATION OF PROSTATE,Endoscopic resection of prostate (TUR) (including cystoscopy),Major,No -,TRANSRECTAL HIGH INTENSITY FOCUSED ULTRASOUND ABLATION OF PROSTATE,Endoscopic resection of prostate (TUR) (including cystoscopy),Major,No -Urology,TRANSURETEROURETEROSTOMY,Ureterostomy - formation,Major,No -Urology,TRANSURETHRAL BIOPSY OF BLADDER,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -Urology,TRANSURETHRAL BLADDER EXCISION,Endoscopic transection of bladder (including cystoscopy),Major,No -Urology,TRANSURETHRAL CYSTOSCOPY,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -Urology,TRANSURETHRAL INCISION OF BLADDER NECK,Resection of bladder neck (including cystoscopy),Intermediate,No -Urology,TRANSURETHRAL INCISION OF MALE BLADDER NECK,Resection of bladder neck (including cystoscopy),Intermediate,No -Urology,TRANSURETHRAL PROSTATECTOMY,Endoscopic resection of prostate (TUR) (including cystoscopy),Major,No -Urology,TRANSURETHRAL RESECTION - BLADDER POLYPECTOMY,Endoscopic resection of lesion of bladder (including cystoscopy),Major,No -Urology,TRANSURETHRAL RESECTION OF BLADDER NEOPLASM,Endoscopic resection of lesion of bladder (including cystoscopy),Major,No -,TRANSURETHRAL RESECTION OF BLADDER NEOPLASM,Endoscopic resection of lesion of bladder (including cystoscopy),Major,No -Urology,TRANSURETHRAL RESECTION OF BLADDER PAPILLOMA,Endoscopic resection of lesion of bladder (including cystoscopy),Major,No -Urology,TRANSURETHRAL RESECTION OF MALE BLADDER NECK,Resection of bladder neck (including cystoscopy),Intermediate,No -Urology,"TRANSURETHRAL RESECTION OF PROSTATE, FIRST STAGE OF TWO STAGES",Endoscopic resection of prostate (TUR) (including cystoscopy),Major,No -Urology,TRANSURETHRAL TRANSECTION OF THE BLADDER,Endoscopic transection of bladder (including cystoscopy),Major,No -Urology,TRANSVAGINAL BLADDER NECK CLOSURE,Resection of bladder neck (including cystoscopy),Intermediate,No -Gynaecology,TRANSVERSE INCISION,-,Unknown,No -Orthopaedics,TRIMMING OF MEDIAL EPICONDYLE,Surgical release of humeral epicondylitis (lateral or medial) (eg “Tennis Elbow”),Intermediate,No -Orthopaedics,TRIPLE ARTHRODESIS OF HINDFOOT,Triple fusion of joints of hindfoot without autogenous graft,Major,No -Orthopaedics,TROCHLEOPLASTY,"Open surgical stabilisation of patella, including soft tissue/tendon transfer or release, +/- application of cast (adult)",Xmajor,No -,TYMPANIC MEMBRANE OPERATION,Myringotomy and insertion of tube through tympanic membrane (and bilateral),Intermediate,No -ENT,TYMPANOMASTOIDECTOMY,Modified radical mastoidectomy (including meatoplasty),Xmajor,No -Paediatric ENT,TYMPANOMASTOIDECTOMY,Modified radical mastoidectomy (including meatoplasty),Xmajor,No -ENT,TYMPANOPLASTY USING BIOLOGICAL GRAFT,Combined approach tympanoplasty - intact canal wall tympanoplasty,Major,No -ENT,TYMPANOPLASTY WITH MASTOIDECTOMY,Combined approach tympanoplasty - intact canal wall tympanoplasty,Major,No -Paediatric ENT,"TYMPANOPLASTY WITH MASTOIDOTOMY, WITH OSSICULAR CHAIN RECONSTRUCTION",Modified radical mastoidectomy (including meatoplasty),Xmajor,No -ENT,"TYMPANOPLASTY, TYPE I WITH GRAFT",Combined approach tympanoplasty - intact canal wall tympanoplasty,Major,No -Paediatric ENT,"TYMPANOPLASTY, TYPE I WITH GRAFT",Combined approach tympanoplasty - intact canal wall tympanoplasty,Major,No -,"TYMPANOPLASTY, TYPE I WITH GRAFT",Combined approach tympanoplasty - intact canal wall tympanoplasty,Major,No -ENT,TYMPANOTOMY,Diagnostic tympanotomy (as sole procedure),Major,No -ENT,TYMPANOTOMY USING PERMEATAL APPROACH,Diagnostic tympanotomy (as sole procedure),Major,No -ENT,TYPE 2 TYMPANOPLASTY,Combined approach tympanoplasty - intact canal wall tympanoplasty,Major,No -Vascular Surgery,ULTRASONOGRAPHY GUIDED PERCUTANEOUS RADIOFREQUENCY ABLATION OF LONG SAPHENOUS VEIN,Radiofrequency ablation of more than one venous trunk +/- phlebectomies - unilateral,Intermediate,No -Urology,ULTRASOUND ABLATION OF PROSTATE,Transperinal MRI - US Fusion Targeted Prostate Biopsy,Intermediate,No -,ULTRASOUND OF PLEURAL CAVITY,-,Minor,No -General Surgery,UMBILICAL HERNIORRHAPHY USING SURGICAL SUTURES,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Colorectal Surgery,UMBILICAL HERNIORRHAPHY USING SURGICAL SUTURES,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Orthopaedics,UNCEMENTED UNICOMPARTMENTAL KNEE REPLACEMENT,Unicompartmental knee replacement,Xmajor,No -Orthopaedics,UNICOMPARTMENTAL INTERPOSITION ARTHROPLASTY OF KNEE WITH CUSTOM-MADE IMPLANT,Unicompartmental knee replacement,Xmajor,No -Thoracic Surgery,UNIPORTAL VATS - VIDEO ASSISTED THORACOSCOPIC SURGERY,VATS lung biopsy,Intermediate,Yes -,URETER RECONSTRUCTION,Unilateral replantation of ureter into bladder (including cystoscopy),Major,No -Paediatric Urology,URETER RECONSTRUCTION,Unilateral replantation of ureter into bladder (including cystoscopy),Major,No -Urology,URETERIC REIMPLANTATION,Bilateral replantation of ureter into bladder,Xmajor,No -Urology,URETERIC REIMPLANTATION AFTER URINARY DIVERSION,Unilateral replantation of ureter into bladder (including cystoscopy),Major,No -Urology,URETERIC REIMPLANTATION WITH BOARI FLAP,Bilateral replantation of ureter into bladder,Xmajor,No -Paediatric Urology,URETERIC REIMPLANTATION WITH BOARI FLAP,Bilateral replantation of ureter into bladder,Xmajor,No -Urology,URETERIC REIMPLANTATION WITH PSOAS HITCH,Bilateral replantation of ureter into bladder,Xmajor,No -Urology,URETERO-URETEROSTOMY OF RIGHT URETER,Unilateral replantation of ureter into bladder (including cystoscopy),Major,No -Urology,URETEROILEOSTOMY,Construction of ileal conduit including ureteric implantation,Xmajor,No -Urology,URETERORENOSCOPY,Diagnostic endoscopic examination of kidney (including biopsy),Major,No -Urology,URETEROSCOPIC DILATION OF STRICTURE OF URETER USING BALLOON CATHETER,Therapeutic ureterorenoscopy (+/- cystoscopy and insertion/removal of stent),Minor,No -Urology,URETEROSCOPIC FRAGMENTATION OF URETERIC CALCULUS,Endoscopic extraction of calculus of bladder (including cystoscopy),Intermediate,No -Urology,URETEROSCOPIC INSERTION OF URETERIC STENT,Therapeutic ureterorenoscopy (+/- cystoscopy and insertion/removal of stent),Minor,No -Urology,URETEROSCOPIC LASER FRAGMENTATION OF URETERIC CALCULUS,Holmium Laser Lithotripsy for calculi of ureter (including cystoscopy and insertion/removal of stent),Major,No -Urology,URETEROSCOPIC OPERATION FOR URETERIC CALCULUS,Ureteroscopic extraction of calculus of ureter (including cystoscopy and insertion/removal of stent),Intermediate,No -Urology,URETEROSCOPIC REMOVAL OF URETERIC CALCULUS,Endoscopic extraction of calculus of bladder (including cystoscopy),Intermediate,No -Urology,URETEROSCOPIC REMOVAL OF URETERIC STENT,Therapeutic ureterorenoscopy (+/- cystoscopy and insertion/removal of stent),Minor,No -Urology,URETEROSCOPIC REPLACEMENT OF URETERIC STENT,Endoscopic removal and insertion of prosthesis into ureter (including cystoscopy),Major,No -Urology,URETEROSCOPY,Endoscopic examination of ureter (+/- cystoscopy and insertion/removal of stent),Intermediate,No -Uro-Gynaecology,URETEROSCOPY,Endoscopic examination of ureter (+/- cystoscopy and insertion/removal of stent),Intermediate,No -,URETEROSCOPY,Endoscopic examination of ureter (+/- cystoscopy and insertion/removal of stent),Intermediate,No -Urology,URETEROSCOPY WITH BIOPSY,Endoscopic examination of ureter (+/- cystoscopy and insertion/removal of stent),Intermediate,No -Urology,URETHRA EXCISION,Excision of urethral caruncle,Minor,No -Urology,URETHRAL DILATATION - FEMALE,Dilatation of urethra (including cystoscopy),Minor,No -Urology,URETHRAL DIVERTICULECTOMY,"Simple urethroplasty, eg primary repair, segment, anterior urethra (including cystoscopy)",Major,No -Urology,URETHRAL FISTULA EXCISION,Closure of fistula of urethra (including cystoscopy),Intermediate,No -Urology,URETHROPLASTY FOR STRICTURE,"Simple urethroplasty, eg primary repair, segment, anterior urethra (including cystoscopy)",Major,No -Urology,"URETHROPLASTY, FIRST STAGE","Simple urethroplasty, eg primary repair, segment, anterior urethra (including cystoscopy)",Major,No -Urology,"URETHROPLASTY, REPAIR OF MEMBRANOUS URETHRA, SECOND STAGE","Complex Urethroplasty, Eg Revision Surgery of the Anterior Urethra, Segment, Posterior Urethra, +/- Grafting (Including Cystoscopy)",Major,No -Urology,URETHROSCOPIC EXCISION OF LESION OF URETHRA,Excision of urethral caruncle,Minor,No -Urology,URETHROSTOMY,Urethral sphincterotomy (including cystoscopy),Intermediate,No -Urology,URINARY BLADDER RECONSTRUCTION,Enterocystoplasty (including cystoscopy),Complex,No -Urology,URINARY CYSTOTOMY WITH EXTRACTION AND FRAGMENTATION OF URETERAL CALCULUS,Endoscopic extraction of calculus of bladder (including cystoscopy),Intermediate,No -Urology,URINARY INCONTINENCE/SLING OPERATION,Combined abdominal and vaginal operations to support outlet of female bladder (including sling procedures) (including cystoscopy),Major,No -Urology,URORECTAL FISTULA REPAIR,Repair of urethrorectal fistula,Major,No -Urology,URORECTAL FISTULA REPAIR USING PERINEAL APPROACH WITH GRACILIS MUSCLE FLAP,Repair of urethrorectal fistula,Major,No -Urology,URORECTAL FISTULA REPAIR USING PERINEAL APPROACH WITH LEVATOR MUSCLE INTERPOSITION,Repair of urethrorectal fistula,Major,No -Urology,UROSYMPHYSEAL FISTULA DEBRIDEMENT,Repair of urethrorectal fistula,Major,No -Urology,UROSYMPHYSEAL FISTULA DEBRIDEMENT WITH RESECTION OF PUBIC SYMPHYSIS,Repair of vesicocolic fistula,Xmajor,No -,US GUIDED BIOPSY OF NECK,Shave biopsy of lesion of skin,Minor,No -Gynaecology,UTERINE MYOMECTOMY,Myomectomy (including laparoscopically) +/- ureterolysis,Major,No -,UTERINE MYOMECTOMY,Myomectomy (including laparoscopically) +/- ureterolysis,Major,No -Gynaecology,UTEROPEXY,Laparoscopic hysteropexy (including sacrohysteropexy) using mesh +/- ureterolysis,Major,No -ENT,UVULOPALATOPHARYNGOPLASTY,Removal of excess mucosa from mouth,Intermediate,No -,VACUUM ASSISTED SKIN CLOSURE,-,Minor,No -Thoracic Surgery,VACUUM ASSISTED SKIN CLOSURE,-,Minor,No -Gynaecology,VAGINAL HYSTERECTOMY,Vaginal hysterectomy with laparoscopic assistance +/- ureterolysis,Major,No -Gynaecology,VAGINAL HYSTERECTOMY WITH CONSERVATION OF OVARIES,Vaginal hysterectomy with laparoscopic assistance +/- ureterolysis,Major,No -Gynaecology,VAGINAL MYOMECTOMY,Myomectomy (including laparoscopically) +/- ureterolysis,Major,No -Urology,VAGINAL OPERATIONS TO SUPPORT OUTLET OF FEMALE BLADDER,Combined abdominal and vaginal operations to support outlet of female bladder (including sling procedures) (including cystoscopy),Major,No -Gynaecology Oncology,VAGINAL POLYP EXCISION,Excision of lesion of vagina (e.g. warts and cysts),Intermediate,No -Gynaecology,VAGINECTOMY,Reconstruction of vagina,Xmajor,No -Gynaecology,VAGINOPLASTY,Reconstruction of vagina,Xmajor,No -Urology,VAGINOPLASTY,Reconstruction of vagina,Xmajor,No -Gynaecology,VAGINOPLASTY WITH MOULD,Reconstruction of vagina,Xmajor,No -Urology,VAGINOPLASTY WITH MOULD AND SKIN GRAFT,Reconstruction of vagina,Xmajor,No -Gynaecology,VAGINOPLASTY WITH ROTATIONAL SKIN FLAPS,Reconstruction of vagina,Xmajor,No -Paediatric Urology,VAGINOPLASTY WITH ROTATIONAL SKIN FLAPS,Reconstruction of vagina,Xmajor,No -Urology,VAGINOPLASTY WITH ROTATIONAL SKIN FLAPS,Reconstruction of vagina,Xmajor,No -Gynaecology,VAGINOSCOPY,Examination of vagina under anaesthetic as sole procedure,Minor,No -Vascular Surgery,VARICOSE VEIN OPERATION,Local excision (multiple phlebectomy) of varicose vein(s) of leg - unilateral,Intermediate,No -Urology,VARICOSE VEIN OPERATION,Local excision (multiple phlebectomy) of varicose vein(s) of leg - unilateral,Intermediate,No -Urology,VASECTOMY,-,Intermediate,No -Urology,VASOVASORRHAPHY,Excision of epididymal cyst,Intermediate,No -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)- BIOPSY OF LESION OF MEDIASTINUM,VATS lung biopsy,Intermediate,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-ANATOMICAL SEGMENTECTOMY OF LEFT LOWER LOBE,VATS lobectomy,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-ANATOMICAL SEGMENTECTOMY OF LEFT UPPER LOBE,VATS lobectomy,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-ANATOMICAL SEGMENTECTOMY OF LUNG,VATS lobectomy,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-ANATOMICAL SEGMENTECTOMY OF RIGHT LOWER LOBE,VATS lobectomy,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-ANATOMICAL SEGMENTECTOMY OF RIGHT MIDDLE LOBE,VATS lobectomy,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-ANATOMICAL SEGMENTECTOMY OF RIGHT UPPER LOBE,VATS lobectomy,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-BIOPSY OF CHEST WALL,VATS lung biopsy,Intermediate,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-BIOPSY OF MEDIASTINAL LYMPH NODE,VATS lung biopsy,Intermediate,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-BIOPSY OF PERICARDIUM,VATS excision lesion of mediastinum including thymectomy,Xmajor,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-BIOPSY OF PLEURA,VATS lung biopsy,Intermediate,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-CHEMICAL PLEURODESIS,VATS pleurodesis/pleurectomy,Major,Yes -,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-CHEMICAL PLEURODESIS,VATS pleurodesis/pleurectomy,Major,No -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-COMPLETION LOBECTOMY,VATS lobectomy,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-DEBRIDEMENT AND WASHOUT OF PLEURAL CAVITY,VATS debridement of empyema,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-DEBRIDEMENT AND WASHOUT OF PLEURAL CAVITY AND DECORTICATION,VATS debridement of empyema,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-DRAINAGE OF LUNG ABSCESS,VATS debridement of empyema,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-DRAINAGE OF PLEURAL CAVITY,Drainage of pleural cavity,Minor,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-EXCISION OF BULLA OF LUNG,VATS bullectomy - unilateral,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-EXCISION OF LESION OF DIAPHRAGM,Transthoracic repair of diaphragmatic hernia (acquired),Xmajor,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-EXCISION OF THYMUS,VATS excision lesion of mediastinum including thymectomy,Xmajor,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-LOBECTOMY OF LOWER BILOBECTOMY OF RIGHT LUNG,VATS lobectomy,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-LOBECTOMY OF LOWER LOBE OF LEFT LUNG,VATS lobectomy,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-LOBECTOMY OF LOWER LOBE OF RIGHT LUNG,VATS lobectomy,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-LOBECTOMY OF LUNG,VATS lobectomy,Major,Yes -,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-LOBECTOMY OF MIDDLE LOBE OF RIGHT LUNG,VATS lobectomy,Major,No -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-LOBECTOMY OF MIDDLE LOBE OF RIGHT LUNG,VATS lobectomy,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-LOBECTOMY OF UPPER LOBE OF LEFT LUNG,VATS lobectomy,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-LOBECTOMY OF UPPER LOBE OF RIGHT LUNG,VATS lobectomy,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-LUNG RESECTION WITH CHEST WALL EXCISION,Excision of chest wall tumour - without chest wall reconstruction,Xmajor,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-LUNG VOLUME REDUCTION SURGERY,VATS lung volume reduction - unilateral,Complex,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-PLEURAL BIOPSY AND CHEMICAL PLEURODESIS AND INDWELLING PLEURAL CATHETER (IPC) INSERTION,VATS pleurodesis/pleurectomy,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-SYMPATHECTOMY,VATS sympathectomy - unilateral,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-TALC PLEURODESIS,VATS pleurodesis/pleurectomy,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-WEDGE BIOPSY OF LUNG,VATS lung biopsy,Intermediate,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-WEDGE EXCISION OF LUNG,VATS wedge resection of lung,Major,Yes -,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-WEDGE EXCISION OF LUNG,VATS wedge resection of lung,Major,No -Thoracic Surgery,VIDEO ASSISTED THORASCOPIC SURGERY AND CHEMICAL PLEURODESIS,VATS pleurodesis/pleurectomy,Major,Yes -Gynaecology,VULVECTOMY,Simple vulvectomy,Major,No -Gynaecology Oncology,VULVECTOMY,Simple vulvectomy,Major,No -Gynaecology,VULVECTOMY AND BLOCK DISSECTION OF INGUINAL LYMPH NODES,Radical vulvectomy (including block dissection of inguinal gland),Complex,No -Thoracic Surgery,WEDGE BIOPSY OF LUNG,Thoracotomy and lung biopsy as sole procedure,Intermediate,Yes -Breast Surgery,WEDGE EXCISION OF BREAST,Wide local excision of breast +/- local mobilisation of glandular breast tissue to fill surgical cavity,Intermediate,No -Thoracic Surgery,WEDGE EXCISION OF LUNG,Pulmonary lobectomy including segmental resection,Complex,Yes -Orthopaedics,WEDGE OSTEOTOMY OF TIBIA,Tibial osteotomy,Major,No -Maxillo-Facial Surgery,WEDGE RESECTION OF LIP,Excision of lesion of lip,Intermediate,No -Head and Neck,WEDGE RESECTION OF SKIN,Primary excision of malignant lesion - head and neck,Intermediate,No -ENT,WEDGE RESECTION OF TONGUE,Partial glossectomy for malignancy,Major,No -Maxillo-Facial Surgery,WEDGE RESECTION OF TONGUE,Partial glossectomy for malignancy,Major,No -Head and Neck,WIDE EXCISION OF MUSCLE TISSUE,Removal of benign lesion in muscle or deeper tissue (excluding lipoma),Intermediate,No -Gynaecology,WIDE EXCISION OF MUSCLE TISSUE,Removal of benign lesion in muscle or deeper tissue (excluding lipoma),Intermediate,No -,WIDE EXCISION OF MUSCLE TISSUE,Removal of benign lesion in muscle or deeper tissue (excluding lipoma),Intermediate,No -Breast Surgery,WIDE LOCAL EXCISION OF BREAST LESION,Wide local excision of breast +/- local mobilisation of glandular breast tissue to fill surgical cavity,Intermediate,No -Gynaecology,WIDE LOCAL EXCISION OF VULVA,Simple vulvectomy,Major,No -,WIDE LOCAL EXCISION OF VULVA,Simple vulvectomy,Major,No -Breast Surgery,WIRE GUIDED WIDE LOCAL EXCISION OF BREAST LUMP UNDER RADIOLOGICAL CONTROL,Wide local excision of breast +/- local mobilisation of glandular breast tissue to fill surgical cavity,Intermediate,No -Thoracic Surgery,XIPHOIDECTOMY,-,Intermediate,No -Urology,Z-PLASTY OF SKIN,Scar revision up to 5cm - trunk & limbs,Minor,No -Paediatric ENT,TYMPANOPLASTY USING BIOLOGICAL GRAFT,Combined approach tympanoplasty - intact canal wall tympanoplasty,Major,No -,REMOVAL OF CALCULUS OF RENAL PELVIS THROUGH PERCUTANEOUS NEPHROSTOMY,Percutaneous nephrolithotomy (including cystoscopy and retrograde catheterisation),Complex,No -,REMOVAL OF STENT,-,Unknown,No -ENT,RECONSTRUCTION OF NOSE WITH SKIN GRAFT,Septorhinoplasty including graft/implant following trauma or excision of tumour (including attention to turbinates),Major,No -Orthopaedics,ARTHRODESIS OF JOINT OF WRIST REGION,Partial fusion of wrist,Intermediate,No -,REPAIR OF PATELLAR TENDON,Repair of patellar/quadricep tendon,Major,No -,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-BIOPSY OF PLEURA,VATS lung biopsy,Intermediate,No -ENT,SPLANCHNICOTOMY,Excision of lesion of major nerve,Intermediate,No -Vascular Surgery,EMERGENCY REPLACEMENT OF ANEURYSMAL POPLITEAL ARTERY,Reconstruction/bypass for popliteal aneurysm,Complex,No -ENT,FIBREOPTIC OESOPHAGOSCOPY AND BIOPSY,"Diagnostic eosophago-gastro-duodenoscopy (OGD) includes forceps biopsy, biopsy urease test and dye spray",Minor,No -,PRIMARY OPEN REDUCTION OF FRACTURE OF NECK OF FEMUR AND OPEN FIXATION USING CHARNLEY COMPRESSION SCREW,Primary reduction of fracture of neck of femur and internal fixation,Xmajor,No -,REMOVAL OF CHEST DRAIN,Insertion of tube drain into pleural cavity,Minor,No -,DRAINAGE OF PELVIC COLLECTION,Drainage of abscess of appendix or drainage of intra-abdominal abscess,Major,No -,NAVIGATIONAL BRONCHOSCOPIC INTRA-PULMONARY LESION BIOPSY,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Bariatrics,LAPAROSCOPY,Diagnostic laparoscopy (including any biopsy),Intermediate,No -,EXTERNAL FIXATION OF BONE,Closed reduction of fracture of long bone with external fixation (excluding fixation by cast or percutaneous K-wires),Major,No -General Surgery,REPAIR OF LEFT INDIRECT INGUINAL HERNIA,Primary repair of inguinal hernia,Intermediate,No -Orthopaedics,UNCEMENTED TOTAL REPLACEMENT OF JOINT,Primary total hip replacement with or without cement,Xmajor,No -,ANASTOMOSIS OF INTESTINE,Open resectionof small intestine tumour,Major,No -Orthopaedics,OPEN REDUCTION OF FRACTURE,Primary open reduction of long bone with fixation,Major,No -General Surgery,FEEDING ENTEROSTOMY OF JEJUNUM,Open formation of jejunostomy,Major,No -Thoracic Surgery,INCISION OF CHEST WALL,Thoracotomy and lung biopsy as sole procedure,Intermediate,No -Head and Neck,BILATERAL DISSECTION TONSILLECTOMY,"Tonsillectomy - adult, age 13 + (and bilateral)",Intermediate,No -Head and Neck,SKIN GRAFT TO EXTREMITY,"Full thickness graft, trunk and limbs – up to 9cm2 in area",Intermediate,No -,OPEN EXCISION OF LESION OF LUNG,Open excision of lesion of lung,Complex,No -Head and Neck,RESECTION OF TRACHEAL STENOSIS,Partial excision of trachea with reconstruction,Complex,Yes -Orthopaedics,CORE DECOMPRESSION OF HEAD OF FEMUR,Core decompression of hip,Major,No -,COMPLETION GASTRECTOMY,Total gastrectomy and excision of surrounding tissue,Complex,Yes -,OPEN REDUCTION OF FRACTURE OF ZYGOMA OR ZYGOMATIC ARCH,Open reduction of fracture of zygomatic complex of bones,Major,No -Head and Neck,TOTAL RHINECTOMY,Total excision of nose,Major,No -General Surgery,IVOR LEWIS SUBTOTAL OESOPHAGECTOMY,Oesophagectomy/oesophagogastrectomy with anastomosis in chest,Complex,Yes -General Surgery,SURGICAL CLOSURE OF STOMA,Closure of colostomy,Major,No -Head and Neck,SKIN GRAFT CUTTING/PREPARATION,"Split autograft of skin, trunk and limbs – up to 25cm2 in area",Intermediate,No -Head and Neck,DILATION OF TRACHEOSTOMY,Tracheostomy,Intermediate,Yes -Maxillo-Facial Surgery,EXCISION OF LIPOMA,"Excision of lesion of skin or subcutaneous tissue - up to three, Head & Neck (excluding lipoma)",Minor,No -Gynaecology,RESECTION OF POLYP,"Hysteroscopy (including biopsy, dilatation, curettage and resection of polyp(s) +/- Mirena coil insertion)",Intermediate,No -,OPEN REDUCTION OF FRACTURE OF TARSAL BONE WITH INTERNAL FIXATION,Primary open reduction of small bone with fixation including intra-articular,Intermediate,No -Head and Neck,DILATION OF LARYNX,Tracheoplasty,Major,Yes -,INTRAMEDULLARY NAILING OF TIBIA,Locked intramedullary nailing of fractured long bone,Xmajor,No -Upper Gastro-intestinal Surgery,LAPAROSCOPY,Diagnostic laparoscopy (including any biopsy),Intermediate,No -,GASTROPEXY,Gastropexy for reflux,Major,No -Maxillo-Facial Surgery,EXCISION OF LESION OF BUCCAL MUCOSA,Excision/destruction of lesion of mouth,Minor,No -,LAPAROSCOPY OF FALLOPIAN TUBE,"Laparoscopy and therapeutic procedures (including laser, diathermy and destruction e.g. endometriosis, adhesiolysis, tubal and ovarian surgery, +/-ureterolysis)",Major,No -Head and Neck,IRRIGATION OF MAXILLARY ANTRUM,Excision/destruction of lesion of mouth,Minor,No -Orthopaedics,EXCISION OF PRESSURE ULCER,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -,EXTERNAL EAR ENDOSCOPY,Removal of foreign body from external auditory canal (and bilateral),Minor,No -Head and Neck,RESECTION OF TRACHEA,Partial excision of trachea with reconstruction,Complex,Yes -,PARTIAL HIP REPLACEMENT BY PROSTHESIS,Prosthetic replacement of head of femur,Major,No -ENT,BIOPSY OF LESION OF NASAL SINUS,"Diagnostic nasolaryngopharyngoscopy +/- biopsy, +/- cautery as sole procedure",Minor,No -,DECORTICATION,Decortication of pleura of lung,Complex,Yes -Gynaecology,ENDOSCOPIC MYOMECTOMY,Hysteroscopy with resection of fibroids (excluding morcellation) +/- insertion on Mirena coil,Major,No -,BILATERAL ANTRAL WASHOUT,Antral puncture and wash-out (and bilateral),Minor,No -Upper Gastro-intestinal Surgery,PARTIAL OESOPHAGECTOMY AND ANASTOMOSIS OF OESOPHAGUS TO TRANSPOSED JEJUNUM,Oesophagectomy/oesophagogastrectomy with anastomosis in chest,Complex,Yes -Vascular Surgery,NESBIT'S OPERATION ON PENIS,Operation for Peyronie's disease (eg Nesbitt's),Intermediate,No -,OESOPHAGOSCOPY FOR REMOVAL OF FOREIGN BODY,"Rigid oesophagoscopy including any biopsy, laser or diathermy destruction of lesions",Intermediate,No -Thoracic Surgery,EXCISION OF MEDIASTINAL CYST,Open excision of mediastinal tumour including congenital cysts/posterior chest wall lesions,Xmajor,Yes -General Surgery,BIOPSY OF ABDOMINAL LYMPH NODE,"Excision biopsy of lymph node for diagnosis (cervical, inguinal, axillary)",Intermediate,No -Urology,APPENDICOVESICOSTOMY,Construction of ileal conduit including ureteric implantation,Xmajor,No -,ROTATION FLAP GRAFT OF SKIN,Local flap ? less than 9cm2,Major,No -Urology,FLUOROSCOPY GUIDED BILATERAL NEPHROSTOMY,Percutaneous insertion of nephrostomy tube,Intermediate,No -,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-DEBRIDEMENT AND WASHOUT OF PLEURAL CAVITY,VATS debridement of empyema,Major,No -Head and Neck,RADIAL FOREARM FREE FLAP,Distant flap ? delay/division/inset,Major,No -,ULTRASOUND GUIDED BIOPSY,Ultrasound guided biopsy(ies),Intermediate,No -,VIDEO ASSISTED THORACOSCOPIC EXCISION OF OESOPHAGUS,Oesophagectomy/oesophagogastrectomy with anastomosis in chest,Complex,Yes -Bariatrics,OESOPHAGOJEJUNOSTOMY BY ABDOMINAL APPROACH,Total gastrectomy and excision of surrounding tissue,Complex,Yes -Head and Neck,"TRACHEOSTOMY, EMERGENCY PROCEDURE BY TRANSTRACHEAL APPROACH",Tracheostomy,Intermediate,Yes -,LOBECTOMY,Pulmonary lobectomy including segmental resection,Complex,Yes -Head and Neck,EXTERIORISATION OF TRACHEA,Tracheostomy,Intermediate,Yes -Urology,MANUAL DILATATION OF STOMA,-,Minor,No -Urology,DRAINAGE OF ANTERIOR ABDOMINAL WALL,Drainage of lesion of skin (including abscess),Minor,No -,OPEN REDUCTION OF TRIMALLEOLAR FRACTURE OF ANKLE WITH INTERNAL FIXATION,"Primary open reduction of intra-articular fracture of long bone with internal fixation, eg proximal humerus or proximal tibia (with or without arthroscopic assistance) ",Major,No -Head and Neck,BIOPSY OF HYPOPHARYNX,Panendoscopy +/- incisional biopsy,Intermediate,No -,INCISION AND PACKING OF WOUND,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -,DENTAL SURGICAL PROCEDURE,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Thoracic Surgery,SURGICAL DEBRIDEMENT OF WOUND,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Orthopaedics,FUSION OF JOINT WITH EXTRA-ARTICULAR BONE GRAFT,Primary arthrodesis of joint with or without graft and with or without internal fixation – shoulder,Major,No -,LAPAROSCOPIC REPAIR OF HIATUS HERNIA,Transabdominal repair of hiatus hernia,Major,No -,MANIPULATION OF PROSTHETIC JOINT,-,Intermediate,No -,PLEURAL BIOPSY AND CHEMICAL PLEURODESIS AND INDWELLING PLEURAL CATHETER (IPC) INSERTION,VATS pleurodesis/pleurectomy,Major,Yes -Vascular Surgery,CAROTID ENDARTERECTOMY,Carotid endarterectomy,Complex,Yes -Orthopaedics,LENGTHENING OF ACHILLES TENDON,Lengthening of tendon(s) or open tenotomy,Intermediate,No -,EXPLORATORY INCISION,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -,REVISION OF LEFT TOTAL HIP ARTHROPLASTY,Revision of uncemented or cemented total hip replacement without adjunctive procedures,Complex,No -,FIXATION OF FRACTURE USING CANNULATED SCREWS,Primary open reduction of long bone with fixation,Major,No -Orthopaedics,ARTHROSCOPIC DEBRIDEMENT OF ANKLE JOINT,"Multiple arthroscopic operations on ankle (including soft tissue, bony and/or joint surface procedures with ligament reconstruction).",Major,No -,SUBTOTAL GASTRECTOMY,Partial gastrectomy,Xmajor,Yes -Head and Neck,EXCISION OF LEFT HALF OF TONGUE,Partial glossectomy for malignancy,Major,Yes -Vascular Surgery,ANGIOPLASTY OF SUBCLAVIAN ARTERY,"Angioplasty of other arteries (e.g. sub-clavian, tibial, femoro-popliteal) including peripheral angiogram +/- insertion of stent",Major,No -Head and Neck,CHEEK OPERATION,"Excision of lesion of skin or subcutaneous tissue - up to three, Head & Neck (excluding lipoma)",Minor,No -,CLOSED REDUCTION OF INTRACAPSULAR FRACTURE OF NECK OF FEMUR AND INTERNAL FIXATION USING A DYNAMIC HIP SCREW,Primary reduction of fracture of neck of femur and internal fixation,Xmajor,No -Head and Neck,RADICAL EXCISION WITH EN BLOC RESECTION OF REGIONAL ORGANS AND TISSUES,Total pharyngectomy,Complex,Yes -Head and Neck,"FUNCTIONAL ENDOSCOPIC SINUS SURGERY, TOTAL","Image guided endoscopic frontal, sphenoid and/or ethmoid sinus surgery (FESS) and bilateral",Major,No -Urology,EXCISION OF LESION OF MALE PERINEUM,Drainage through perineal region (including ischiorectal abscess) (including sigmoidoscopy),Minor,No -Head and Neck,RECONSTRUCTION OF EXTERNAL EAR WITH POSTAURICULAR SKIN FLAP,Reconstruction of external ear for anotia/microtia using cartilage,Complex,No -Thoracic Surgery,BRONCHOSCOPY WITH CELL WASHING,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -,EXCISION OF LESION OF LUNG,Open excision of lesion of lung,Complex,Yes -Urology,WIDE LOCAL EXCISION OF VULVA,Simple vulvectomy,Major,No -,ENDOSCOPIC DESTRUCTION OF LESION OF PROSTATE,Endoscopic resection of prostate (TUR) (including cystoscopy),Major,No -,DECORTICATION OF LUNG,Decortication of pleura of lung,Complex,Yes -,FLEXIBLE BRONCHOSCOPIC CRYOEXTRACTION OF TUMOUR IN THE LOWER RESPIRATORY TRACT,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Thoracic Surgery,ROBOTIC EXCISION OF MEDIASTINAL CYST,Open excision of mediastinal tumour including congenital cysts/posterior chest wall lesions,Xmajor,Yes -Orthopaedics,OPEN REDUCTION OF FRACTURE OF PELVIC BONE WITH INTERNAL FIXATION,Open reduction/internal fixation of posterior rim of acetabulum,Complex,No -Gynaecology,OPEN DEBULKING OF PELVIC LYMPH NODES,Block dissection of pelvic lymph nodes (as sole procedure),Major,No -,REDO VESICOURETHRAL ANASTOMOSIS,Therapeutic endoscopic operations on outlet of female bladder (including cystoscopy),Intermediate,No -Gynaecology,RADICAL EXCISION WITH LYMPH NODE DISSECTION,Total exenteration of pelvis,Complex,Yes -Colorectal Surgery,REPAIR OF RECTAL PROLAPSE,Fixation of rectum for prolapse,Major,No -Gynaecology,REPAIR OF VAGINOVESICAL FISTULA,Repair of vesicovaginal fistula (including cystoscopy),Major,No -,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-PLEURAL BIOPSY AND CHEMICAL PLEURODESIS AND INDWELLING PLEURAL CATHETER (IPC) INSERTION,VATS pleurodesis/pleurectomy,Major,Yes -Thoracic Surgery,VIDEO ASSISTED THORACOTOMY,Exploratory thoracotomy,Major,Yes -Thoracic Surgery,TRANSCERVICAL THYMECTOMY,Thymectomy for myasthenia gravis/thymoma,Major,Yes -,"TRACHEOSTOMY, EMERGENCY PROCEDURE BY CRICOTHYROID MEMBRANE APPROACH",Tracheostomy,Intermediate,Yes -Gynaecology,MARSUPIALISATION OF LESION OF VAGINA,Excision of lesion of vagina (e.g. warts and cysts),Intermediate,No -General Surgery,DISTAL SUBTOTAL GASTRECTOMY,Partial gastrectomy,Xmajor,Yes -,OPEN REDUCTION OF FRACTURE OF MANDIBLE WITH INTERNAL FIXATION,Open reduction and fixation of fractured jaw,Intermediate,No -,MODIFIED RADICAL NECK DISSECTION,Radical dissection of cervical lymph nodes,Complex,Yes -,FRONTAL SINUSOTOMY,Trephining of frontal sinus and bilateral,Minor,No -,LAPAROSCOPIC BYPASS OF STOMACH,Laparoscopic biliary gastric bypass,Complex,No -,LAPAROSCOPIC PANPROCTOCOLECTOMY,Panproctocolectomy and ileostomy,Complex,No -Head and Neck,TOTAL EXCISION OF LEFT PAROTID GLAND,Excision of parotid gland (other than F4410/F4430),Major,No -Urology,BILATERAL ORCHIDECTOMY,Bilateral excision of testes,Major,No -,OPEN REDUCTION WITH INTERNAL FIXATION OF TRIMALLEOLAR FRACTURE OF ANKLE AND FIXATION OF POSTERIOR LIP OF TIBIA,"Primary open reduction of intra-articular fracture of long bone with internal fixation, eg proximal humerus or proximal tibia (with or without arthroscopic assistance) ",Major,No -,INCISION AND DRAINAGE OF PILONIDAL ABSCESS,Excision of pilonidal sinus and suture/skin graft,Intermediate,No -Upper Gastro-intestinal Surgery,OESOPHAGOGASTRECTOMY,Oesophagectomy/oesophagogastrectomy with anastomosis in chest,Complex,Yes -,CREATION OF JEJUNOSTOMY,Open formation of jejunostomy,Major,No -Orthopaedics,REMOVAL OF INTERNAL FIXATION DEVICE FROM CLAVICLE,"Removal of internal fixation from bone/joint, excluding K-wires",Intermediate,No -Head and Neck,"TRACHEOSTOMY, EMERGENCY PROCEDURE BY CRICOTHYROID MEMBRANE APPROACH",Tracheostomy,Intermediate,Yes -Head and Neck,BIOPSY OF HEAD,Shave biopsy of lesion of skin,Minor,No -Gynaecology,LAPAROSCOPIC BIOPSY OF LESION OF OMENTUM,Diagnostic laparoscopy (including any biopsy),Intermediate,No -,INCISION AND DRAINAGE OF ABSCESS OF BACK,Drainage of lesion of skin (including abscess),Minor,No -Head and Neck,EXCISION OF EXOSTOSIS OF FACIAL BONE,Partial excision of bone (including exostoses),Intermediate,No -,PRIMARY CEMENTED TOTAL HIP REPLACEMENT,Primary total hip replacement with or without cement,Xmajor,No -Gynaecology,MINI-LAPAROTOMY,Laparotomy for postoperative haemorrhage,Major,No -Head and Neck,MICROVASCULAR FREE TISSUE TRANSFER OF FLAP OF MUSCLE,Free functioning muscle transfer (as sole procedure) including closure of secondary defect,Complex,Yes -,BRONCHOSCOPIC PLACEMENT OF AIRWAY STENT,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -,OPEN RIGHT HEMICOLECTOMY,Right hemicolectomy,Xmajor,No -Urology,REMOVAL OF INFERIOR VENA CAVAL FILTER,Insertion/removal of vena cava filter,Intermediate,No -Urology,DIAGNOSTIC LAPAROSCOPY,Diagnostic laparoscopy (including any biopsy),Intermediate,No -,SURGICAL REDUCTION OF TORSION OF TESTIS,Orchidopexy,Intermediate,No -,DILATION OF TRACHEOSTOMY,Tracheostomy,Intermediate,Yes -,"TRACHEOSTOMY, EMERGENCY PROCEDURE BY TRANSTRACHEAL APPROACH",Tracheostomy,Intermediate,Yes -Gynaecology,REMOVAL OF OVARIAN CYST,Ovarian cystectomy +/- omental biopsy (as sole procedure and including bilateral),Major,No -Breast Surgery,INCISION AND DRAINAGE OF BREAST ABSCESS,Drainage of breast abscess including haematoma and seroma,Minor,No -,DISTAL SHUNT FOR PRIAPISM,Repair of injury to penis,Intermediate,No -Urology,INCISION AND DRAINAGE OF ABSCESS,Drainage of lesion of skin (including abscess),Minor,No -General Surgery,WEDGE RESECTION OF STOMACH,Partial gastrectomy,Xmajor,No -Paediatric Surgery,ASPIRATION OF BONE MARROW FROM DONOR FOR TRANSPLANT,-,Minor,No -ENT,EXENTERATION OF ORBIT,Exenteration of orbit,Major,No -,MEDICATION ADMINISTRATION INTRATHECAL,Intrathecal chemotherapy,Minor,No -Upper Gastro-intestinal Surgery,OESOPHAGOGASTRODUODENOSCOPY,Therapeutic oesophago-gastro-duodenoscopy (OGD) with insertion of prosthesis,Intermediate,No -,EMERGENCY TRACHEOSTOMY,Tracheostomy,Intermediate,Yes -Head and Neck,MYOCUTANEOUS FLAP OF HEAD AND NECK,Free functioning muscle transfer (as sole procedure) including closure of secondary defect,Complex,Yes -Upper Gastro-intestinal Surgery,SPLENECTOMY,Open splenectomy,Major,No -Thoracic Surgery,DEBRIDEMENT OF WOUND OF SKIN,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Gynaecology,LAPAROTOMY AND DIVISION OF PERITONEAL ADHESIONS,Freeing of adhesions of peritoneum,Major,No -General Surgery,RETROPERITONEAL TISSUE OPERATIONS,Laparoscopic retroperitoneal lymph node dissection,Major,No -,REMOVAL OF METALWORK FROM BONE,"Removal of internal fixation from bone/joint, excluding K-wires",Intermediate,No -,SUBTOTAL GLOSSECTOMY,Partial glossectomy for malignancy,Major,Yes -Head and Neck,NECK EXCISION,Radical dissection of cervical lymph nodes,Complex,Yes -ENT,RESECTION OF POLYP,"FESS Uncinectomy, ethmoidectomy, antrostomy or antral puncture inc polypectomy and attention to turbinates etc",Major, -Urology,HYPOSPADIAS REPAIR -2ND STAGE OF 2 STAGES,Repair of penile/perineal hypospadias,Major,No -Head and Neck,REPAIR OF ANTERIOR PALATAL FISTULA WITH BUCCAL FLAP,Graft of skin or mucosa to mouth,Intermediate,No -,ANGIOPLASTY OF COMMON ILIAC ARTERY,"Angioplasty of other arteries (e.g. sub-clavian, tibial, femoro-popliteal) including peripheral angiogram +/- insertion of stent",Major,No -,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-DRAINAGE OF PLEURAL CAVITY,Drainage of pleural cavity,Minor,No -,SKIN GRAFTING,"Split autograft of skin, trunk and limbs – up to 25cm2 in area",Intermediate,No -,SURGICAL TREATMENT OF MISCARRIAGE OF ANY TRIMESTER,Hysteroscopic Removal Of Retained Products Of Conception,Major,No -Paediatric ENT,TYMPANOPLASTY WITH MASTOIDECTOMY,Radical mastoidectomy (including meatoplasty),Major,No -,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-DEBRIDEMENT AND WASHOUT OF PLEURAL CAVITY AND DECORTICATION,Decortication of pleura of lung,Complex,No -Orthopaedics,HEMIARTHROPLASTY OF LEFT SHOULDER,"Shoulder hemiarthroplasty, as sole procedure",Xmajor,No -,ANTERIOR TRACHEOSTOMY,Tracheostomy,Intermediate,Yes -,OPEN REDUCTION OF FRACTURE OF TIBIA AND FIBULA WITH INTERNAL FIXATION,Primary open reduction of long bone with fixation,Major,No -Colorectal Surgery,OPEN LOW ANTERIOR RESECTION OF RECTUM,Anterior resection - low (ie colorectal anastomosis at or below the peritoneal reflection,Complex,No -,UNIPORTAL VATS - VIDEO ASSISTED THORACOSCOPIC SURGERY,VATS lung biopsy,Intermediate,Yes -,EXPLANTATION OF ARTIFICIAL URINARY SPHINCTER,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -Gynaecology,EXAMINATION UNDER ANAESTHESIA,Examination of vagina under anaesthetic as sole procedure,Minor,No -Breast Surgery,LUMPECTOMY OF BREAST,Excision of breast lump/fibroadenoma,Intermediate,No -,THYROIDECTOMY,Total thyroidectomy including block dissection of lymph nodes,Major,Yes -,INCISION AND EXPLORATION OF SKIN,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Thoracic Surgery,ROBOTIC ANATOMICAL SEGMENTECTOMY OF LEFT UPPER LOBE,VATS lobectomy,Major,Yes -,TIBIAL PLATEAU LEVELING OPERATION,Tibial osteotomy,Major,No -Head and Neck,LOCAL FLAP OF SKIN TO NECK,Local flap ? less than 9cm2,Major,No -,INCISION AND DRAINAGE OF NECK,Debridement and primary suture of wound with involvement of deeper tissue - Head and Neck,Intermediate,No -,PRIMARY OPEN REDUCTION OF FRACTURE OF ELBOW AND FIXATION WITH HOOK FIXATION PLATE,"Primary open reduction of intra-articular fracture of long bone with internal fixation, eg proximal humerus or proximal tibia (with or without arthroscopic assistance) ",Major,No -Head and Neck,CRANIOFACIAL RESECTION OF NASAL CAVITY,Total excision of nose,Major,No -,MASTECTOMY OF RIGHT BREAST,Simple mastectomy (including axillary node biopsy) ? unilateral,Major,No -Head and Neck,SEGMENTAL OSTEOTOMY OF ANTERIOR MANDIBLE,Excision of mandible,Major,No -,REPAIR OF FRACTURE OF PENIS,Repair of injury to penis,Intermediate,No -,EXCISION OF CYST OF OVARY,Ovarian cystectomy +/- omental biopsy (as sole procedure and including bilateral),Major,No -,BIOPSY OF CERVICAL LYMPH NODE,Biopsy/sampling of cervical lymph nodes,Minor,No -Head and Neck,HAIR BEARING GRAFT OF SKIN TO SCALP,"Full thickness graft, head, neck, hands and genitalia ? up to 9cm2 in area",Major,No -Orthopaedics,CLOSURE OF SKIN WOUND,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -,OPEN REDUCTION OF FRACTURE OF PROXIMAL TIBIA WITH INTERNAL FIXATION,Primary open reduction of long bone with fixation,Major,No -,INCISION AND DRAINAGE OF SOFT TISSUE,Drainage of lesion of skin (including abscess),Minor,No -Urology,REVISION OF URINARY DIVERSION,Construction of ileal conduit including ureteric implantation,Xmajor,No -Gynaecology,DEBRIDEMENT OF SOFT TISSUE,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Gynaecology,EXCISION OF LESION OF INGUINAL REGION,Simple excision of inguinal hernial sac (herniotomy) - unilateral,Intermediate,No -Thoracic Surgery,CHEST WALL EXCISION,Excision of chest wall tumour - without chest wall reconstruction,Xmajor,Yes -Bariatrics,REPAIR OF DIAPHRAGMATIC HERNIA,Transthoracic repair of diaphragmatic hernia (acquired),Xmajor,No -Gynaecology,COLOSTOMY,Open formation of colostomy,Major,No -Thoracic Surgery,TOTAL PNEUMONECTOMY,Pneumonectomy,Complex,Yes -,SCROTUM EXCISION,Excision of lesion of testis,Intermediate,No -,EPIDURAL LUMBAR INJECTION OF BLOOD PATCH,Epidural blood patch,Minor,No -Thoracic Surgery,PARTIAL EXCISION OF RIB,Excision of chest wall tumour - without chest wall reconstruction,Xmajor,Yes -,TRANSURETHRAL PROSTATECTOMY,Endoscopic resection of prostate (TUR) (including cystoscopy),Major,No -Head and Neck,"FULL THICKNESS EXCISION OF LIP, RECONSTRUCTION WITH LOCAL FLAP",Excision of lesion of lip,Intermediate,No -Vascular Surgery,BIOPSY OF TEMPORAL ARTERY,Biopsy of artery (including temporal) (as sole procedure),Minor,No -Urology,WIDE EXCISION OF SKIN LESION,Primary excision of malignant lesion - trunk and limbs,Intermediate,No -,DIAGNOSTIC FIBREOPTIC ENDOSCOPIC EXAMINATION OF UPPER GASTROINTESTINAL TRACT,"Diagnostic eosophago-gastro-duodenoscopy (OGD) includes forceps biopsy, biopsy urease test and dye spray",Minor,No -Colorectal Surgery,OPEN HIGH ANTERIOR RESECTION OF RECTUM,Anterior resection - high (i.e. colorectal anastomosis above the peritoneal reflection),Complex,No -,DISTANT FASCIAL MICROVASCULAR FREE FLAP,Microvascular free tissue transfer (as sole procedure including closure of secondary defect),Complex,No -Head and Neck,MEDIAL MAXILLECTOMY,Hemi-maxillectomy for malignancy,Xmajor,Yes -Gynaecology,PELVIC LYMPHADENECTOMY,Block dissection of inguinal lymph nodes,Major,No -Thoracic Surgery,BRONCHIAL SLEEVE RESECTION WITH PULMONARY RESECTION,Pneumonectomy,Complex,Yes -,FLEXIBLE DIAGNOSTIC BRONCHOSCOPY AND EXAMINATION AND BIOPSY OF LOWER RESPIRATORY TRACT,Diagnostic bronchoscopy +/- biopsy,Minor,No -,DIAGNOSTIC CYSTOSCOPY,Diagnostic endoscopic examination of bladder (flexible cystoscopy) including any biopsy,Minor,No -,FLUOROSCOPY GUIDED BILATERAL NEPHROSTOMY,Percutaneous nephrostomy,Intermediate,No -,LASER MICROLARYNGOSCOPY,Laser surgery to vocal cord (including microlaryngoscopy),Intermediate,No -Head and Neck,REVISION,-,Complex,Yes -,RENDEZVOUS PROCEDURE ON URETER,Endoscopic removal and insertion of prosthesis into ureter (including cystoscopy),Major,No -,ROBOT ASSISTED LAPAROSCOPIC RADICAL CYSTECTOMY,Open total cystectomy (with construction of intestinal conduit or bladder),Complex,No -,MICROLARYNGOSCOPIC VOCAL CORD POLYPECTOMY,"Microlaryngoscopy/laryngoscopy +/- biopsy, excision of lesion, polyp or cyst",Intermediate,No -Urology,ANTERIOR COLPORRHAPHY,Anterior +/- posterior colporrhaphy and amputation of cervix uteri (including primary repair of enterocele),Major,No -,"REMOVAL OF SACRAL NERVE SACRAL NERVE NEUROMODULATION, FIRST STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -,SUBTOTAL COLECTOMY,Extended excision of right hemicolon,Xmajor,No -,CREATION OF DEFUNCTIONING COLOSTOMY,Open formation of colostomy,Major, -,INTRAMEDULLARY NAILING OF FEMUR,Locked intramedullary nailing of fractured long bone,Xmajor,No -,INTERNAL FIXATION USING KIRSCHNER WIRE,"Closed reduction of fracture of long bone, including cast or percutaneous K-wires",Intermediate,No -General Surgery,CLOSURE OF JEJUNOSTOMY,Gastrostomy,Major, -Orthopaedics,ARTHROSCOPIC SYNOVIAL BIOPSY OF KNEE JOINT,"Arthroscopy of knee (including examination under anaesthetic, washout and biopsy) (as sole procedure)",Intermediate,No -,ABDOMINAL HYSTERECTOMY,Total abdominal hysterectomy (+/- oophorectomy) +/- ureterolysis,Major, -,INCISION AND EXPLORATION OF SUBCUTANEOUS TISSUE,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate, -,TRANS URETHRAL RESECTION OF BLADDER TUMOUR,Endoscopic resection of lesion of bladder (including cystoscopy),Major, -,"LOCAL ROTATION FLAP, MYOCUTANEOUS",Local flap ? less than 9cm2,Major,No -Colorectal Surgery,EXCISION OF REDUNDANT MUCOSA FROM ILEOSTOMY,Revision of ileostomy - local,Major,No -Colorectal Surgery,DESTRUCTION OF LESION OF ILEOSTOMY,Revision of ileostomy - local,Major,No -Head and Neck,FREEING OF ADHESION OF TONGUE WITH Z-PLASTY,Freeing of adhesions of tongue,Minor,No -,COLOSTOMY,Open formation of colostomy,Major,No -,ASPIRATION CURETTAGE OF UTERUS FOR TERMINATION OF PREGNANCY,Hysteroscopic Removal Of Retained Products Of Conception,Major,No -Orthopaedics,EXCISION ARTHROPLASTY OF THE HIP,Hip resurfacing arthroplasty,Xmajor,No -Maxillo-Facial Surgery,REVISION SEPTORHINOPLASTY,Septorhinoplasty including graft/implant following trauma or excision of tumour (including attention to turbinates),Major,No -Head and Neck,GRAFTING OF FAT,"Fat transfer, including extraction and volume adjustment, of scar defect following trauma (excluding breast)",Intermediate,No -Urology,"SACRAL NEUROMODULATION -TINED LEAD REMOVAL, FIRST STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -Urology,RENEWAL OF ARTIFICIAL BLADDER NECK SPHINCTER IN FEMALE,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -Colorectal Surgery,CLOSURE OF BOWEL FISTULA,Occlusion of fistula under imaging control,Major,No -Bronchoscopy/Thoracoscopy,ENDOSCOPIC LASER DESTRUCTION OF LESION BELOW TRACHEA USING RIGID BRONCHOSCOPE,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Orthopaedics,ARTHROSCOPIC PRIMARY REDUCTION AND FIXATION OF FRACTURE OF NECK OF FEMUR USING DYNAMIC HIP SCREW,Primary reduction of fracture of neck of femur and internal fixation,Xmajor,No -,INSERTION OF IMPLANTABLE INTRATHECAL ACCESS SYSTEM,Implantation/removal of intrathecal drug delivery system,Major,No -ENT,DRAINAGE OF FRONTAL SINUS,Antral puncture and wash-out (and bilateral),Minor,No -Urology,REMOVAL OF ARTIFICIAL BLADDER SPHINCTER,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -,GYNAECOLOGICAL ENDOSCOPIC EXAMINATION,"Hysteroscopy (including biopsy, dilatation, curettage and resection of polyp(s) +/- Mirena coil insertion)",Intermediate,No -Orthopaedics,OPEN REDUCTION OF FRACTURE OF METACARPAL BONE WITH INTERNAL FIXATION,Primary open reduction of small bone with fixation including intra-articular,Intermediate,No -,BRONCHOSCOPY WITH REMOVAL OF FOREIGN BODY,Therapeutic bronchoscopy for removal of foreign body,Minor,No -,INTERNAL FIXATION OF BONE OF RADIUS,Primary open reduction of long bone with fixation,Major,No -Head and Neck,DISTANT MYOCUTANEOUS FLAP,Free functioning muscle transfer (as sole procedure) including closure of secondary defect,Complex,Yes -,EXCISIONAL DEBRIDEMENT OF WOUND FOR INFECTION,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate, -General Surgery,REVISION GASTRECTOMY,Total gastrectomy and excision of surrounding tissue,Complex,Yes -ENT,ENDOLYMPHATIC SAC OPERATION WITH SHUNT,Operation(s) on endolymphatic sac,Major,No -Gynaecology,EXCISION OF LESION OF ANTERIOR ABDOMINAL WALL AND INSERT OF PROSTHETIC MATERIAL INTO ANTERIOR ABDOMINAL WALL,Open repair of incisional hernia requiring mesh,Intermediate,No -General Surgery,REPLACEMENT OF NEURAL PACEMAKER FROM PERIPHERAL NERVE,Implantation of neurostimulator to peripheral nerve,Major,No -Urology,"SACRAL NEUROMODULATION -TINED LEAD REMOVAL, SECOND STAGE",Sacral nerve stimulation for faecal/urinary incontinence or constipation,Major,No -,INCISION AND DRAINAGE OF LOWER EXTREMITY,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Urology,ONE STAGE LEFT ORCHIDOPEXY,Orchidopexy,Intermediate,No -Oral Surgery,SURGICAL REMOVAL OF IMPACTED TOOTH,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -General Surgery,SIGMOID COLECTOMY,Excision of sigmoid colon,Xmajor,No -,TRANSVERSE COLECTOMY WITH STOMA,Excision of transverse colon,Xmajor,No -General Surgery,PANPROCTOCOLECTOMY,Panproctocolectomy and ileostomy,Complex,No -,REVISION OF INTERNAL FIXATION OF FEMUR,"Open reduction, internal fixation and revision of femoral component for peri-prosthetic fracture",Complex,No -ENT,REVISION PINNAPLASTY,Pinnaplasty (including bilateral) (child 14 and below only),Intermediate,No -Thoracic Surgery,BILOBECTOMY OF LUNG,Pulmonary lobectomy including segmental resection,Complex,Yes -Head and Neck,EXCISION OF THYROGLOSSAL FISTULA,Excision of thyroglossal cyst/tract,Intermediate,No -ENT,"LARYNGOSCOPY, PHARYNGOSCOPY AND OESOPHAGOSCOPY",Panendoscopy +/- incisional biopsy,Intermediate,No -ENT,"LABYRINTHECTOMY, OSSEOUS",Middle ear tumour excision,Major,No -Breast Surgery,BIOPSY OF BREAST,Excision biopsy of breast lesion after localisation,Intermediate,No -Orthopaedics,OPEN REDUCTION WITH INTERNAL FIXATION OF TRIMALLEOLAR FRACTURE OF ANKLE AND FIXATION OF POSTERIOR LIP OF TIBIA,"Primary open reduction of intra-articular fracture of long bone with internal fixation, eg proximal humerus or proximal tibia (with or without arthroscopic assistance) ",Major,No -,SECOND LOOK LAPAROTOMY,Laparotomy for postoperative haemorrhage,Major,Yes -Orthopaedics,REVISION OF INTERNAL FIXATION OF ULNA,Primary open reduction of long bone with fixation,Major,No -Head and Neck,NECK RECONSTRUCTION,-,Complex,Yes -Head and Neck,EXCISION OF MULTIPLE SKIN LESIONS,"Excision of lesion of skin or subcutaneous tissue - four or more, Head & Neck (excluding lipoma)",Intermediate,No -General Surgery,INCISION AND DRAINAGE OF PILONIDAL ABSCESS,Excision of pilonidal sinus and suture/skin graft,Intermediate,No -Urology,REPAIR OF RECTOVAGINAL FISTULA,Repair of rectovaginal fistula,Xmajor,No -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-PERICARDIAL-PLEURAL WINDOW,Diagnostic mediastinoscopy,Intermediate,No -Oral Surgery,SURGICAL REMOVAL OF ERUPTED TOOTH REQUIRING ELEVATION OF MUCOPERIOSTEAL FLAP AND REMOVAL OF BONE AND/OR SECTION OF TOOTH,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Orthopaedics,WATSON-JONES OPERATION FOR RECONSTRUCTION OF LATERAL LIGAMENTS OF ANKLE,Reconstruction of lateral collateral ligament complex,Major,No -General Surgery,PRIMARY REPAIR OF PARAUMBILICAL HERNIA USING SUTURE,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Orthopaedics,GRAFTING OF BONE OF HUMERUS,Excision of benign tumour of bone with bone grafting,Xmajor,No -,NEPHROSTOGRAM,Percutaneous nephrostomy,Intermediate,No -,PERCUTANEOUS INSERTION OF NEPHROSTOMY TUBE,Percutaneous insertion of nephrostomy tube,Intermediate,No -,RIGID DIAGNOSTIC CYSTOSCOPY,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -ENT,ADENOID EXCISION,Adenoidectomy,Minor,No -Urology,BULBAR URETHROPLASTY WITH BUCCAL MUCOSAL GRAFT VENTRAL PATCH AUGMENTATION,"Complex Urethroplasty, Eg Revision Surgery of the Anterior Urethra, Segment, Posterior Urethra, +/- Grafting (Including Cystoscopy)",Major,No -Maxillo-Facial Surgery,DIVISION OF MAXILLA,Excision of lesion of jaw,Intermediate,No -Head and Neck,EXTENDED RADICAL NECK DISSECTION OF CERVICAL LYMPH NODES,Radical dissection of cervical lymph nodes,Complex,Yes -Orthopaedics,PRIMARY OPEN REDUCTION OF FRACTURE OF NECK OF FEMUR AND OPEN FIXATION USING DYNAMIC HIP SCREW,Primary reduction of fracture of neck of femur and internal fixation,Xmajor,No -Orthopaedics,FIXATION OF FRACTURE,Primary open reduction of long bone with fixation,Major,No -Urology,DRAINAGE OF PELVIC COLLECTION,Drainage of abscess of appendix or drainage of intra-abdominal abscess,Major,No -Colorectal Surgery,ANASTOMOSIS OF ILEUM TO CAECUM,Laparoscopically assisted resection of small intestine,Major,No -General Surgery,MASTECTOMY FOR GYNAECOMASTIA,Simple mastectomy (including axillary node biopsy) ? unilateral,Major,No -,NEPHROSTOMY,Percutaneous nephrostomy,Intermediate,No -Colorectal Surgery,REPAIR OF PROLAPSE OF ILEOSTOMY,Revision of ileostomy - local,Major,No -ENT,DIAGNOSTIC MICROLARYNGOSCOPY AND BIOPSY,"Microlaryngoscopy/laryngoscopy +/- biopsy, excision of lesion, polyp or cyst",Intermediate,No -Head and Neck,LIPOSUCTION OF SUBCUTANEOUS TISSUE OF HEAD OR NECK,"Fat transfer, including extraction and volume adjustment, of scar defect following trauma (excluding breast)",Intermediate,No -Gastroenterology,REPAIR OF PARASTOMAL HERNIA,Laparoscopic repair of parastomal hernia requiring mesh,Intermediate,No -Vascular Surgery,ANGIOPLASTY OF INFERIOR VENA CAVA,Plication of vena cava,Xmajor,No -Paediatric Urology,STANDARD CIRCUMCISION,Circumcision,Intermediate,No -,"HARTMANN OPERATION, RECTAL RESECTION",Hartmann's procedure,Xmajor,No -Urology,URETERIC REIMPLANTATION WITH SMALL BOWEL INTERPOSITION,Construction of ileal conduit including ureteric implantation,Xmajor,No -General Surgery,"VON KRASKE OPERATION, PROCTECTOMY",Proctectomy,Major,No -,PROSTHETIC ARTHROPLASTY OF LEFT HIP,"Total hip replacement, with or without cement, after excision arthroplasty or arthrodesis, including conversion of hemiarthroplasty or revision of other previous hip surgery which involved internal fixation",Xmajor,No -,EXCISION OF ILEOANAL POUCH,Ileoanal anastomosis and creation of pouch,Complex,No -,"ARTHROPLASTY OF KNEE, FEMORAL CONDYLES WITH DEBRIDEMENT AND PARTIAL SYNOVECTOMY","Multiple arthroscopic operation on knee (including meniscectomy, chondroplasty, drilling or microfracture)",Major,No -Vascular Surgery,ENDOVENOUS LASER ABLATION OF VARICOSE VEIN,Radiofrequency ablation of more than one venous trunk +/- phlebectomies - unilateral,Intermediate,No -Oral Surgery,SURGICAL EXPOSURE OF IMPACTED OR UNERUPTED TOOTH FOR ORTHODONTIC REASON,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -,INTERCOSTAL NERVE BLOCK,Paravertebral block up to two levels (under X-ray control),Minor,No -Paediatric Urology,AUGMENTATION CYSTOPLASTY,Enterocystoplasty (including cystoscopy),Complex,No -Thoracic Surgery,VIDEO ASSISTED THORACOSCOPY,Diagnostic thoracoscopy (+/- biopsy),Minor,No -,CLOSURE OF TRACHEOSTOMY,Tracheostomy,Intermediate,Yes -Anaesthetics,LUMBAR PUNCTURE,Lumbar puncture (including spinal manometry),Minor,No -Colorectal Surgery,CONSTRUCTION OF STOMA,Open formation of colostomy,Major,No -Orthopaedics,REALIGNMENT OF BONE,Primary open reduction of long bone with fixation,Major,No -Neurosurgery,PARTIAL MAXILLECTOMY,Partial maxillectomy for malignancy,Xmajor,No -Head and Neck,TRIGONECTOMY,Partial cystectomy (including cystoscopy),Major,No -Urology,DRESSING AND FIXATION PROCEDURE,-,Unknown,No -Urology,TOTAL NEPHRECTOMY,Nephrectomy and excision of perirenal tissue,Xmajor,No -Thoracic Surgery,MAINTENANCE OF INDWELLING PLEURAL CATHETER,Insertion of indwelling pleural catheter,Intermediate,No -Head and Neck,HARVEST OF SHEET OF FASCIA FROM FASCIA LATA,Transfer of tendon (not otherwise specified),Intermediate,No -Head and Neck,REMOVAL OF IMPLANT,"Removal of internal fixation from bone/joint, excluding K-wires",Intermediate,No -Orthopaedics,SHOULDER RECONSTRUCTION,Primary total shoulder replacement,Xmajor, -Head and Neck,EXCISION OF SCAR,Scar Revision up to 5cm - Head & Neck,Minor,No -Gynaecology,ELECTROEJACULATION PROCEDURE,-,Minor,No -,COMPLETION LOBECTOMY,Pulmonary lobectomy including segmental resection,Complex,Yes -Orthopaedics,REPAIR OF RECURRENT DISLOCATION OF PATELLA,"Open surgical stabilisation of patella, including soft tissue/tendon transfer or release, +/- application of cast (adult)",Xmajor, -,CLOSURE OF PERFORATED SMALL INTESTINE,Laparoscopically assisted resection of small intestine,Major,No -Gynaecology,"URETHROPLASTY, FIRST STAGE","Simple urethroplasty, eg primary repair, segment, anterior urethra (including cystoscopy)",Major,No -,ROBOT ASSISTED LAPAROSCOPIC TOTAL HYSTERECTOMY,Laparoscopic total hysterectomy (+/- oophorectomy) +/- ureterolysis,Major,No -Urology,PFR - PELVIC FLOOR REPAIR,Anterior +/- posterior colporrhaphy (including primary repair of enterocele) (including cystoscopy),Major,No -Head and Neck,RECONSTRUCTION WITH FREE FLAP,Free composite (ie including bone) vascularised grafts,Complex,Yes -Urology,OPEN EXCISION OF URETHRAL LESION,Excision of urethral caruncle,Minor,No -,OPEN REDUCTION OF CLOSED SHOULDER DISLOCATION,Primary open reduction of dislocation of large joint,Intermediate,No -,MALE ARTIFICIAL URINARY SPHINCTER PROCEDURE,Implantation of artificial urinary sphincter at bladder neck and/or removal (including cystoscopy),Major,No -,REVISION OF ILEAL CONDUIT,Construction of ileal conduit including ureteric implantation,Xmajor,No -,INCISION AND DRAINAGE OF BRANCHIAL ABSCESS,Drainage of lesion of skin (including abscess),Minor, -ENT,CRICOPHARYNGEAL MYOTOMY,Insertion of tracheal/bronchial metallic stent,Major,No -Maxillo-Facial Surgery,SURGICAL REMOVAL OF IMPACTED PERMANENT CANINE TOOTH,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Breast Surgery,DRESSING AND FIXATION PROCEDURE,-,Unknown,No -,CYSTOSCOPIC URETERIC STENT PROCEDURE,Endoscopic examination of ureter (+/- cystoscopy and insertion/removal of stent),Intermediate,No -,FEEDING ENTEROSTOMY OF JEJUNUM,Open formation of jejunostomy,Major,No -Bronchoscopy/Thoracoscopy,FLEXIBLE DIAGNOSTIC BRONCHOSCOPY AND EXAMINATION AND BIOPSY OF LOWER RESPIRATORY TRACT,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Upper Gastro-intestinal Surgery,DEBRIDEMENT OF WOUND OF SKIN,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate, -,EXCISION OF LARGE INTESTINE FOR INTERPOSITION,Excision of lesion of colon (transabdominal),Major,No -,INTRATHORACIC OESOPHAGEAL ANASTOMOSIS WITH INTERPOSITION OF COLON,Total oesophagectomy and interposition of intestine,Complex,Yes -Breast Surgery,RECONSTRUCTION OF LEFT BREAST,Reconstruction of breast using fixed prosthesis (including delayed reconstruction),Major,No -General Surgery,GASTROSTOMY,Gastrostomy,Major,No -Maxillo-Facial Surgery,SURGICAL REMOVAL OF IMPACTED TOOTH,Surgical removal of impacted/buried tooth/teeth,Intermediate,No -Urology,DIAGNOSTIC URETHROSCOPY AND BIOPSY,Endoscopic Examination of Bladder (Rigid Cystoscopy) Including any Biopsy,Minor,No -Thoracic Surgery,INCISION AND EXPLORATION OF SKIN,Debridement and primary suture of wound with involvement of deeper tissue - Trunk and Limbs,Intermediate,No -Upper Gastro-intestinal Surgery,EXPLORATORY LAPAROTOMY WITH BIOPSY,Laparotomy for postoperative haemorrhage,Major,Yes -Gynaecology,LOOP COLOSTOMY,Open formation of colostomy,Major,No -,LAPAROSCOPIC SALPINGECTOMY,Salpingectomy (including bilateral) (as sole procedure),Major,No -Thoracic Surgery,BILOBECTOMY RIGHT LUNG,Pulmonary lobectomy including segmental resection,Complex,Yes -Orthopaedics,OPEN REDUCTION AND INTERNAL FIXATION OF NON-UNION FRACTURE OF SCAPHOID WITH LOCAL BONE GRAFT,Open reduction and internal fixation of cancellous bone graft scaphoid non-union,Major,No -,EXCISIONAL BIOPSY OF LYMPH NODE,Sentinel node biopsy (except where otherwise listed),Intermediate,No -,CLOSED REDUCTION OF FRACTURE OF RIGHT FEMUR AND INTERNAL FIXATION USING DYNAMIC HIP SCREW PLATE,Primary reduction of fracture of neck of femur and internal fixation,Xmajor,No -,FLEXIBLE DIAGNOSTIC VIDEO BRONCHOSCOPY,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -Bronchoscopy/Thoracoscopy,BRONCHOSCOPIC INSERTION OF ENDBRONCHIAL VALVES FOR PERSISTENT AIR LEAKS,"Therapeutic bronchoscopy (including laser, cryotherapy, lavage, snare, dilatation of stricture, insertion of stent)",Minor,No -,SURGICAL BIOPSY OF GLANS PENIS,Excision of lesion of penis,Intermediate,No -,"REVISION OF TOTAL KNEE ARTHROPLASTY, ALL COMPONENTS",Revision of total replacement of knee joint,Complex, -General Surgery,LOW ANTERIOR RESECTION OF RECTUM WITH COLOSTOMY,Anterior resection - low (ie colorectal anastomosis at or below the peritoneal reflection,Complex,No -Colorectal Surgery,COLOSTOMY,Open formation of colostomy,Major,No -Urology,TRANSURETHRAL BLADDER NECK EXCISION,Resection of bladder neck (including cystoscopy),Intermediate,No -Orthopaedics,ARTHROSCOPIC SYNOVECTOMY KNEE JOINT,Therapeutic arthroscopy operation on cavity of joint (not otherwise specified) (as sole procedure),Major, -Colorectal Surgery,CONSTRUCTION OF TRANSVERSE LOOP COLOSTOMY,Open formation of colostomy,Major,No -,"DELORME OPERATION, PROCTOPEXY",Fixation of rectum for prolapse,Major,No -,REVISION OF HIP ARTHROPLASTY,Revision of uncemented or cemented total hip replacement without adjunctive procedures,Complex, -,COMPLETION PNEUMONECTOMY,Pneumonectomy,Complex,Yes -,LAPAROSCOPY WITH LYSIS OF ADHESIONS,Freeing of adhesions of peritoneum,Major,No -,VIDEO ASSISTED THORACOSCOPIC SURGERY (VATS)-TALC PLEURODESIS,VATS pleurodesis/pleurectomy,Major,Yes -Colorectal Surgery,OPEN REPAIR OF INGUINAL HERNIA USING SYNTHETIC MESH,Primary repair of inguinal hernia,Intermediate,No -,MANUAL REMOVAL OF FOREIGN BODY FROM RECTUM,-,Minor,No -Bariatrics,REVISION OF JEJUNOILEAL BYPASS,Revision of gastro–jejunostomy,Xmajor,No -,INCISION AND DEEP EXPLORATION OF BREAST,Drainage of breast abscess including haematoma and seroma,Minor,No -,PRIMARY CLOSED REDUCTION OF TRAUMATIC DISLOCATION OF JOINT,"Primary closed reduction of fracture or dislocation of joint, with or without fixation including cast application",Intermediate,No -Orthopaedics,EXCISION OF LESION OF KNEE JOINT,Therapeutic arthroscopy operation on cavity of joint (not otherwise specified) (as sole procedure),Major, -,URETEROSCOPY WITH BIOPSY,Diagnostic ureterorenoscopy (+/- cystoscopy),Minor,No -Colorectal Surgery,LAPAROSCOPIC BILATERAL REPAIR OF INDIRECT INGUINAL HERNIA,Primary repair of inguinal hernia ? bilateral,Major,No -Colorectal Surgery,EXCISION OF MALIGNANT TUMOUR OF RECTUM BY TRANSANAL APPROACH,Transanal resection of rectal cancer,Major,No -,MASTOIDOTOMY,Simple mastoidectomy,Major,No -Colorectal Surgery,OPEN REPAIR OF UMBILICAL HERNIA USING SYNTHETIC MESH,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Head and Neck,LARYNGOSCOPIC VOCAL CORD POLYPECTOMY,"Microlaryngoscopy/laryngoscopy +/- biopsy, excision of lesion, polyp or cyst",Intermediate,No -Orthopaedics,EXCISION OF BONE,Excision of ectopic bone,Minor,No -Head and Neck,SEGMENTAL OSTEOTOMY OF MANDIBLE,Excision of mandible,Major,No -Orthopaedics,TIBIOTALOCALCANEAL ARTHRODESIS,Complex procedure to mid foot or hind foot without autogenous bone graft (osteotomy/fusion +/? tendon transfers),Xmajor, -,PRIMARY REPAIR OF UMBILICAL HERNIA,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Urology,REPAIR OF PENIS,Repair of injury to penis,Intermediate,No -,BILATERAL MODIFIED RADICAL NECK DISSECTION,Radical dissection of cervical lymph nodes,Complex,Yes -Gynaecology,PERINEUM EXCISION,Drainage through perineal region (including ischiorectal abscess) (including sigmoidoscopy),Minor,No -Head and Neck,CRICOPHARYNGEAL MYOTOMY,Dilatation of tracheal stricture including insertion of stent,Intermediate,No -Orthopaedics,DECOMPRESSION OF MEDIAN NERVE,Release of entrapment of peripheral nerve,Intermediate,No -Upper Gastro-intestinal Surgery,REPAIR OF PARAUMBILICAL HERNIA,Repair of umbilical/paraumbilical hernia (irrespective of age),Intermediate,No -Maxillo-Facial Surgery,CORRECTION OF COMPLEX CRANIOFACIAL DEFORMITY,-,Complex,Yes -Urology,LAPAROSCOPY WITH LYSIS OF ADHESIONS,Freeing of adhesions of peritoneum,Major,No diff --git a/api/src/api/electives/wrangle.py b/api/src/api/electives/wrangle.py deleted file mode 100644 index 79ba859b..00000000 --- a/api/src/api/electives/wrangle.py +++ /dev/null @@ -1,136 +0,0 @@ -import numpy as np -import pandas as pd -from pydantic import BaseModel - -import pickle -from pathlib import Path - -# from imblearn.pipeline import Pipeline -# from sklearn.model_selection import RandomizedSearchCV, StratifiedKFold -# from sklearn.linear_model import BayesianRidge -# from sklearn.ensemble import RandomForestClassifier -# from category_encoders import TargetEncoder -from api.convert import to_data_frame - -from models.electives import ( - PreassessSummaryData, - ClarityPostopDestination, - SurgData, - PreassessData, - LabData, - EchoWithAbnormalData, - ObsData, - AxaCodes, - MedicalHx, -) -from api.electives.hypo_help import ( - merge_surg_preassess, - wrangle_labs, - j_wrangle_obs, - wrangle_echo, - fill_na, - wrangle_pas, -) - - -def prepare_draft( - electives: list[type[BaseModel]], - preassess: list[type[BaseModel]], - labs: list[type[BaseModel]], - echo: list[type[BaseModel]], - obs: list[type[BaseModel]], - axa: list[type[BaseModel]], - pod: list[type[BaseModel]], - pa_summary: list[type[BaseModel]], - medical_hx: list[type[BaseModel]], - to_predict: bool = False, -) -> pd.DataFrame: - """ - Prepares the dataframe for the dashboard by merging data from different - sources. It loads tables for - surgical cases ('electives') - pre-assessment - labs - echos - obs - the final preassessment summary - post-operative destination (from clarity) - the list of axa codes and protocolised admissions - it merges these tables and cleans them - then calculates some additional features - - If to_predict is set to True, it also loads a - pre-trained random forest model to predict ICU admission. - """ - - electives_df = to_data_frame(electives, SurgData) - preassess_df = to_data_frame(preassess, PreassessData) - pa_summary_df = to_data_frame(pa_summary, PreassessSummaryData) - labs_df = to_data_frame(labs, LabData) - echo_df = to_data_frame(echo, EchoWithAbnormalData) - obs_df = to_data_frame(obs, ObsData) - axa_codes = to_data_frame(axa, AxaCodes) - pod_df = to_data_frame(pod, ClarityPostopDestination) - hx_df = to_data_frame(medical_hx, MedicalHx) - # print(hx_df) - - # axa_codes = camel_to_snake( - # pd.read_csv( - # "axa_codes.csv", - # encoding="cp1252", - # usecols=["SurgicalService", "Name", "axa_severity", "protocolised_adm"], - # ) - # ) - - # print(axa_codes.columns) - - df = ( - merge_surg_preassess(surg_data=electives_df, preassess_data=preassess_df) - .merge(pod_df, left_on="surgical_case_epic_id", right_on="or_case_id") - .merge(wrangle_labs(labs_df), how="left", on="patient_durable_key") - .merge(wrangle_echo(echo_df), how="left", on="patient_durable_key") - .merge( - j_wrangle_obs(obs_df), - how="left", - on=["surgical_case_key", "planned_operation_start_instant"], - ) - .sort_values("surgery_date", ascending=True) - .drop_duplicates(subset="patient_durable_key", keep="first") - .sort_index() - # .pipe(fill_na) - .merge( - axa_codes[["surgical_service", "name", "axa_severity", "protocolised_adm"]], - on=["surgical_service", "name"], - how="left", - ) - .merge(wrangle_pas(pa_summary_df), how="left", on="patient_durable_key") - .merge( - hx_df.groupby("patient_durable_key").agg({"display_string": ". ".join}), - # .rename({"display_string": "hx_string"}), - how="left", - on="patient_durable_key", - ) - ) - - # print(df.columns) - # create pacu label - df["pacu"] = np.where( - df["booked_destination"].astype(str).str.contains("PACU") - | df["pacdest"].astype(str).str.contains("PACU") - | df["pod_orc"].astype(str).str.contains("PACU"), - True, - False, - ) - - if to_predict: - deployed = pickle.load( - open((Path(__file__).parent / "deploy/RFR_jan1601.sav"), "rb") - ) - model = deployed.best_estimator_ - cols = model[1].feature_names_in_ - df_to_predict = fill_na(df) - preds = model.predict_proba(df_to_predict[cols])[:, 1] - df["icu_prob"] = preds - else: - df["icu_prob"] = 0 - return df diff --git a/api/src/api/main.py b/api/src/api/main.py index 5cb3c110..0380daf4 100755 --- a/api/src/api/main.py +++ b/api/src/api/main.py @@ -15,8 +15,6 @@ from api.consults.router import router as consults_router from api.demo.router import mock_router as mock_demo_router from api.demo.router import router as demo_router -from api.electives.router import mock_router as mock_electives_router -from api.electives.router import router as electives_router from api.hospital.router import mock_router as mock_hospital_router from api.hospital.router import router as hospital_router from api.logger import logger @@ -47,9 +45,6 @@ app.include_router(sitrep_router) mock_router.include_router(mock_sitrep_router) -app.include_router(electives_router) -mock_router.include_router(mock_electives_router) - app.include_router(beds_router) mock_router.include_router(mock_beds_router) diff --git a/api/src/api/tests/test_electives.py b/api/src/api/tests/test_electives.py deleted file mode 100644 index ee6b803e..00000000 --- a/api/src/api/tests/test_electives.py +++ /dev/null @@ -1,62 +0,0 @@ -# type: ignore -from api.main import app -from fastapi.testclient import TestClient - -from models.electives import ( - SurgData, - PreassessData, - MergedData, - LabData, - EchoWithAbnormalData, - ObsData, -) - -client = TestClient(app) - - -def test_get_mock_preassess() -> None: - response = client.get("/mock/electives/preassessment/") - assert response.status_code == 200 - - rows = [PreassessData.parse_obj(row) for row in response.json()] - assert len(rows) > 0 - - -def test_get_mock_cases() -> None: - response = client.get("/mock/electives/case_booking/") - assert response.status_code == 200 - - rows = [SurgData.parse_obj(row) for row in response.json()] - assert len(rows) > 0 - - -def test_get_mock_labs() -> None: - response = client.get("/mock/electives/labs/") - assert response.status_code == 200 - - elective_rows = [LabData.parse_obj(row) for row in response.json()] - assert len(elective_rows) > 0 - - -def test_get_mock_electives() -> None: - response = client.get("/mock/electives/") - assert response.status_code == 200 - - elective_rows = [MergedData.parse_obj(row) for row in response.json()] - assert len(elective_rows) > 0 - - -def test_mock_echo() -> None: - response = client.get("/mock/electives/echo/") - assert response.status_code == 200 - - rows = [EchoWithAbnormalData.parse_obj(row) for row in response.json()] - assert len(rows) > 0 - - -def test_mock_obs() -> None: - response = client.get("/mock/electives/obs/") - assert response.status_code == 200 - - rows = [ObsData.parse_obj(row) for row in response.json()] - assert len(rows) > 0 From e2ccaf6bdfd773429289aa52194fcb1fa148aaec Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Fri, 26 Jan 2024 12:05:54 +0000 Subject: [PATCH 17/27] Fix ping/slow endpoint --- api/src/api/main.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api/src/api/main.py b/api/src/api/main.py index 0380daf4..e993bcb6 100755 --- a/api/src/api/main.py +++ b/api/src/api/main.py @@ -65,7 +65,8 @@ def ping() -> dict[str, str]: def pong_slow() -> dict[str, str]: notnow = arrow.utcnow().format("YYYY-MM-DD HH:mm:ss.SSS") time.sleep(5) - return notnow + now = arrow.utcnow().format("YYYY-MM-DD HH:mm:ss.SSS") + return {"request_time": notnow, "response_time": now} @app.get("/ping/fast") From cec9d0b1d5eca07bac40703210adf1037533d805 Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Fri, 26 Jan 2024 12:17:21 +0000 Subject: [PATCH 18/27] Remove consults --- api/src/api/consults/__init__.py | 12 - api/src/api/consults/live.sql | 91 ----- api/src/api/consults/mock.h5 | Bin 1112920 -> 0 bytes api/src/api/consults/mock.sql | 7 - api/src/api/consults/readme.md | 16 - api/src/api/consults/router.py | 25 -- api/src/api/consults/synth_test_data.ipynb | 374 --------------------- api/src/api/main.py | 3 - models/src/models/consults.py | 18 - 9 files changed, 546 deletions(-) delete mode 100644 api/src/api/consults/__init__.py delete mode 100755 api/src/api/consults/live.sql delete mode 100644 api/src/api/consults/mock.h5 delete mode 100644 api/src/api/consults/mock.sql delete mode 100644 api/src/api/consults/readme.md delete mode 100644 api/src/api/consults/router.py delete mode 100644 api/src/api/consults/synth_test_data.ipynb delete mode 100644 models/src/models/consults.py diff --git a/api/src/api/consults/__init__.py b/api/src/api/consults/__init__.py deleted file mode 100644 index 52a6259e..00000000 --- a/api/src/api/consults/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -# src/api/consults/__init__.py -""" -EMAP consults wrapped with patient demographics -The developer should specify the data models here -and follow the **same** naming convention such that -the module.classname can be reliably used for access -""" - -from pathlib import Path - -QUERY_LIVE_PATH = Path(__file__).resolve().parent / "live.sql" -QUERY_MOCK_PATH = Path(__file__).resolve().parent / "mock.sql" diff --git a/api/src/api/consults/live.sql b/api/src/api/consults/live.sql deleted file mode 100755 index abc1688f..00000000 --- a/api/src/api/consults/live.sql +++ /dev/null @@ -1,91 +0,0 @@ --- src/api/consults/live.sql -WITH -consults AS ( --- get all details on consultation requests --- regardless of where the patient is now -SELECT - - cd.firstname -,cd.lastname -,cd.date_of_birth -,mrn.mrn -,mrn.nhs_number - -,cr.consultation_request_id -,cr.valid_from -,cr.cancelled -,cr.closed_due_to_discharge -,cr.comments -,cr.scheduled_datetime -,cr.status_change_datetime -,cr.hospital_visit_id -,ct.code -,ct.name -,loc.admission_datetime -,loc.discharge_datetime -,loc.location_string -,loc.name AS dept_name - -FROM star.consultation_request cr -LEFT JOIN star.consultation_type ct ON cr.consultation_type_id = ct.consultation_type_id - -INNER JOIN ( - SELECT - * - FROM - star.location_visit lv - LEFT JOIN star.location lo ON lv.location_id = lo.location_id - LEFT JOIN star.department de ON lo.department_id = de.department_id --- WHERE lv.admission_datetime >= NOW() - INTERVAL '24 HOURS' - WHERE lv.discharge_datetime IS NULL -) loc ON cr.hospital_visit_id = loc.hospital_visit_id - - -LEFT JOIN star.hospital_visit hv ON cr.hospital_visit_id = hv.hospital_visit_id -LEFT JOIN star.core_demographic cd ON hv.mrn_id = cd.mrn_id -LEFT JOIN star.mrn ON cd.mrn_id = mrn.mrn_id - -WHERE --- loc.speciality = 'Accident & Emergency' --- AND - hv.patient_class IN ('INPATIENT', 'EMERGENCY') - AND - cr.closed_due_to_discharge = false - AND - cr.cancelled = false - AND - cr.scheduled_datetime > NOW() - INTERVAL '7 DAYS' -ORDER BY -cr.consultation_request_id -), -loc_now AS ( --- now number these by descending location admit time --- so '1' represents the current location of that patient -SELECT - * -,row_number() over (partition BY consults.hospital_visit_id ORDER BY consults.admission_datetime DESC) loc_i -FROM consults -) --- now return the consult and the most recent location -SELECT --- select only those fields you wish to model and validate - loc_now.firstname -,loc_now.lastname -,loc_now.date_of_birth -,loc_now.mrn -,loc_now.nhs_number -,loc_now.valid_from ---,loc_now.cancelled ---,loc_now.closed_due_to_discharge -,loc_now.comments -,loc_now.scheduled_datetime -,loc_now.status_change_datetime -,loc_now.name -,loc_now.admission_datetime -,loc_now.discharge_datetime -,loc_now.dept_name -,loc_now.location_string -FROM loc_now -WHERE loc_i = 1 -ORDER BY loc_now.scheduled_datetime ASC - ; diff --git a/api/src/api/consults/mock.h5 b/api/src/api/consults/mock.h5 deleted file mode 100644 index c10954e9c45ae4ce346729e76aec79d6ebb16587..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1112920 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 list[Consults]: - """ - Returns Consults data class populated by query-live/mock - query preparation depends on the environment so will return - mock data in dev and live data in prod - """ - q = prepare_query("consults", "FIXME") - results = session.exec(q) # type: ignore - Record = namedtuple("Record", results.keys()) # type: ignore - records = [Record(*r) for r in results.fetchall()] # type: list[Consults] - return records diff --git a/api/src/api/consults/synth_test_data.ipynb b/api/src/api/consults/synth_test_data.ipynb deleted file mode 100644 index e083eabc..00000000 --- a/api/src/api/consults/synth_test_data.ipynb +++ /dev/null @@ -1,374 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "96687d16-17db-47f6-8cd7-41444a6d00b4", - "metadata": {}, - "source": [ - "# Prepare synthetic data \n", - "It is going to be much easier to develop if you have realistic synthetic data.\n", - "Here we take a sql query that generates a single tabular output.\n", - "We run that query against the live identifiable data once.\n", - "We then use the [Synthetic Data Vault](https://sdv.dev/SDV/index.html) to prepare a synthetic model of those data.\n", - "The code below serves as a vignette for that process but will need adjusting to match the exact contents of the original query.\n", - "\n", - "More complex examples that include multiple tables with joins and dependencies are also possible.\n", - "\n", - "This notebook should be run interactively just once" - ] - }, - { - "cell_type": "markdown", - "id": "b8eb5db6-f3cb-4640-a668-cebb21d0e7e1", - "metadata": {}, - "source": [ - "## Set-up, query and return the data as datafame\n", - "The query lives in `./src/api` where `.` represents the project root.\n", - "If you run this JupyterNotebook using the local **Makefile** and `make run` then that query will be automatically copied here.\n", - "\n", - "So first steps should be (from _this_ directory)\n", - "```sh\n", - "make build\n", - "make run\n", - "```\n", - "then navigate to http://uclvlddpragae07:8091/lab/tree/steve/work/synth_test_data.ipynb" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "515d4a8b-0480-4a42-a751-36a1b41172a9", - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "from pathlib import Path\n", - "\n", - "import pandas as pd\n", - "from sqlalchemy import create_engine" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1d9d5210-3bca-41b7-a31d-3c06df7b6f0d", - "metadata": {}, - "outputs": [], - "source": [ - "# Construct the PostgreSQL connection\n", - "uds_host = os.getenv(\"UDS_HOST\")\n", - "uds_user = os.getenv(\"UDS_USER\")\n", - "uds_passwd = os.getenv(\"UDS_PWD\")\n", - "\n", - "emapdb_engine = create_engine(\n", - " f\"postgresql://{uds_user}:{uds_passwd}@{uds_host}:5432/uds\"\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7b0478ca-b292-4320-8e28-63379df934b7", - "metadata": {}, - "outputs": [], - "source": [ - "# Read the sql file into a query 'q' and the query into a dataframe\n", - "q = Path(\"query.sql\").read_text()\n", - "df = pd.read_sql_query(q, emapdb_engine)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "57d4de46-263d-401b-a898-0432122779ec", - "metadata": {}, - "outputs": [], - "source": [ - "df.head()" - ] - }, - { - "cell_type": "markdown", - "id": "8785b6f4-b2cd-4e5c-970a-d793b3c60738", - "metadata": {}, - "source": [ - "## Generate a synthetic version of the real data\n", - "\n", - "Use the table above to generate the metadata you need for the synthetic data\n", - "\n", - "https://sdv.dev/SDV/user_guides/relational/relational_metadata.html#relational-metadata" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6992f5ac-02f6-4fa3-94fd-992c598891aa", - "metadata": {}, - "outputs": [], - "source": [ - "# Minimal imports\n", - "from sdv import SDV, Metadata" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "14f7ced8-a783-4f42-8ba8-46c546bb8dab", - "metadata": {}, - "outputs": [], - "source": [ - "# PostgreSQL returns datetimes with tz info which sdv does not seem to be able to handle\n", - "def remove_timezone(df, col_name: str) -> pd.DataFrame:\n", - " \"\"\"sdv does not like timezones\"\"\"\n", - " df[col_name] = pd.to_datetime(df[col_name], utc=True).dt.tz_localize(None)\n", - " return df" - ] - }, - { - "cell_type": "markdown", - "id": "3e9026fd-646c-48fc-bbc2-48994973e9c6", - "metadata": {}, - "source": [ - "### Prepare data and metadata" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "558eeb3f-a30f-4d81-9b7d-5f5a98e6c59c", - "metadata": {}, - "outputs": [], - "source": [ - "tz_cols = [\n", - " \"valid_from\",\n", - " \"scheduled_datetime\",\n", - " \"status_change_time\",\n", - " \"admission_time\",\n", - " \"discharge_time\",\n", - "]\n", - "for col in tz_cols:\n", - " print(col)\n", - " df = remove_timezone(df, col)" - ] - }, - { - "cell_type": "markdown", - "id": "00035b60-16dd-4f83-ab98-08b03d8cd6f0", - "metadata": {}, - "source": [ - "sdv doesn't always recognise the columns correctly. Here we specify data_of_birth explicitly as a date." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2d49e92e-5342-438c-8848-7618de120edf", - "metadata": {}, - "outputs": [], - "source": [ - "df.info()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bfdb3380-bf71-448a-ab45-a876c544ebb9", - "metadata": {}, - "outputs": [], - "source": [ - "fields = {\n", - " \"date_of_birth\": {\n", - " \"type\": \"datetime\",\n", - " \"format\": \"%Y-%m-%d\",\n", - " \"pii\": True,\n", - " # the 'pii_category' key defines the Faker function name (method)\n", - " \"pii_category\": \"date_of_birth\",\n", - " },\n", - " \"firstname\": {\"type\": \"categorical\", \"pii\": True, \"pii_category\": \"first_name\"},\n", - " \"lastname\": {\"type\": \"categorical\", \"pii\": True, \"pii_category\": \"last_name\"},\n", - " \"mrn\": {\"type\": \"categorical\", \"pii\": True, \"pii_category\": [\"random_number\", 8]},\n", - " \"nhs_number\": {\n", - " \"type\": \"categorical\",\n", - " \"pii\": True,\n", - " \"pii_category\": [\"numerify\", \"4## ### ####\"],\n", - " },\n", - "}" - ] - }, - { - "cell_type": "markdown", - "id": "356fe5bc-5cc2-4e55-9723-f4a03c96cda8", - "metadata": {}, - "source": [ - "Prepare the metadata" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "38bd8e12-8e18-4bb9-9251-26fa0a9608b9", - "metadata": {}, - "outputs": [], - "source": [ - "metadata = Metadata()\n", - "metadata.add_table(\n", - " name=\"tabpid\",\n", - " data=df,\n", - " fields_metadata=fields,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d03cdaa8-aa2b-4d13-b932-0fb4bbf438bf", - "metadata": {}, - "outputs": [], - "source": [ - "# Inspect the conversion that metadata.add_table did to the dataframe that you loaded\n", - "metadata.get_table_meta(\"tabpid\")" - ] - }, - { - "cell_type": "markdown", - "id": "6c80c8ca-5407-47e4-8b41-3f35a2ee627f", - "metadata": {}, - "source": [ - "Prepare the table(s)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "dc43f428-e404-4bc4-a160-7cf477500633", - "metadata": {}, - "outputs": [], - "source": [ - "tables = dict(tabpid=df)" - ] - }, - { - "cell_type": "markdown", - "id": "4f2d5f72-6b34-46dc-b9fe-01a4cb7f6730", - "metadata": {}, - "source": [ - "Fit the model" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "073a892b-dd55-483b-8d11-7333b5f2e9e9", - "metadata": {}, - "outputs": [], - "source": [ - "sdv = SDV()\n", - "sdv.fit(metadata, tables)" - ] - }, - { - "cell_type": "markdown", - "id": "aa4071f4-cbff-4fe1-ad29-9747d751cc1a", - "metadata": {}, - "source": [ - "Inspect the original data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1b9da339-21c9-4cad-9e89-db0fd74e100b", - "metadata": {}, - "outputs": [], - "source": [ - "df.head()" - ] - }, - { - "cell_type": "markdown", - "id": "8614d48b-a339-45d4-b072-0651270f6a02", - "metadata": {}, - "source": [ - "Inspect the synthetic data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "00b16a46-e44f-4da3-8109-7916250c4fb4", - "metadata": {}, - "outputs": [], - "source": [ - "sdv.sample_all()[\"tabpid\"].head()" - ] - }, - { - "cell_type": "markdown", - "id": "375226dd-4acc-434f-b9f4-6ac334990a04", - "metadata": {}, - "source": [ - "### Save the synthetic data\n", - "\n", - "Options\n", - "- save the model and not the synthetic data (but then you need *sdv* to run the model)\n", - "- save the data (need some care with type conversions if you use csv etc.)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7a5043a3-4cb9-4445-beb0-8fe6d3fa3360", - "metadata": {}, - "outputs": [], - "source": [ - "sdv.save(\"mock_model_consults.pkl\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c1be99b9-b79d-4a1f-b1cb-dd7b89d0e369", - "metadata": {}, - "outputs": [], - "source": [ - "sample = sdv.sample_all()\n", - "sample_df = sample[\"tabpid\"]\n", - "sample_df.to_hdf(\"mock_consults.h5\", \"data\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "802c5fa7-93ac-4a18-b7fb-b7fa10f0190b", - "metadata": {}, - "outputs": [], - "source": [ - "pd.read_hdf(\"mock_consults.h5\", \"data\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1d27c85f-d9d8-49e2-89bf-c5b2ccfcd2c5", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/api/src/api/main.py b/api/src/api/main.py index e993bcb6..1a172c55 100755 --- a/api/src/api/main.py +++ b/api/src/api/main.py @@ -12,7 +12,6 @@ from api.beds.router import router as beds_router from api.census.router import mock_router as mock_census_router from api.census.router import router as census_router -from api.consults.router import router as consults_router from api.demo.router import mock_router as mock_demo_router from api.demo.router import router as demo_router from api.hospital.router import mock_router as mock_hospital_router @@ -48,8 +47,6 @@ app.include_router(beds_router) mock_router.include_router(mock_beds_router) -app.include_router(consults_router) - app.include_router(ros_router) # Finally include the mock router. diff --git a/models/src/models/consults.py b/models/src/models/consults.py deleted file mode 100644 index f1cc36fa..00000000 --- a/models/src/models/consults.py +++ /dev/null @@ -1,18 +0,0 @@ -from datetime import date, datetime - -from pydantic import BaseModel - - -class Consults(BaseModel): - firstname: str - lastname: str - date_of_birth: date - mrn: str - # nhs_number: Optional[int] - # valid_from: datetime - scheduled_datetime: datetime - # status_change_time: datetime - # comments: Optional[str] - name: str - dept_name: str | None - location_string: str From 6826cb28199e829c8be503f44cada803ee764184 Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Fri, 26 Jan 2024 12:18:51 +0000 Subject: [PATCH 19/27] Remove ROS --- api/src/api/main.py | 3 - api/src/api/ros/__init__.py | 9 - api/src/api/ros/live.sql | 308 ------------------------------ api/src/api/ros/mock.sql | 7 - api/src/api/ros/mock.xls | Bin 37888 -> 0 bytes api/src/api/ros/mock_test_data.h5 | Bin 1065408 -> 0 bytes api/src/api/ros/router.py | 22 --- models/src/models/ros.py | 44 ----- 8 files changed, 393 deletions(-) delete mode 100644 api/src/api/ros/__init__.py delete mode 100644 api/src/api/ros/live.sql delete mode 100644 api/src/api/ros/mock.sql delete mode 100644 api/src/api/ros/mock.xls delete mode 100644 api/src/api/ros/mock_test_data.h5 delete mode 100644 api/src/api/ros/router.py delete mode 100644 models/src/models/ros.py diff --git a/api/src/api/main.py b/api/src/api/main.py index 1a172c55..a4f27ff0 100755 --- a/api/src/api/main.py +++ b/api/src/api/main.py @@ -17,7 +17,6 @@ from api.hospital.router import mock_router as mock_hospital_router from api.hospital.router import router as hospital_router from api.logger import logger -from api.ros.router import router as ros_router from api.sitrep.router import mock_router as mock_sitrep_router from api.sitrep.router import router as sitrep_router @@ -47,8 +46,6 @@ app.include_router(beds_router) mock_router.include_router(mock_beds_router) -app.include_router(ros_router) - # Finally include the mock router. app.include_router(mock_router) diff --git a/api/src/api/ros/__init__.py b/api/src/api/ros/__init__.py deleted file mode 100644 index 41ee6d18..00000000 --- a/api/src/api/ros/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -# src/api/ros/__init__.py -""" -ROS screening dashboard -""" - -from pathlib import Path - -QUERY_LIVE_PATH = Path(__file__).resolve().parent / "live.sql" -QUERY_MOCK_PATH = Path(__file__).resolve().parent / "mock.sql" diff --git a/api/src/api/ros/live.sql b/api/src/api/ros/live.sql deleted file mode 100644 index 3f06c305..00000000 --- a/api/src/api/ros/live.sql +++ /dev/null @@ -1,308 +0,0 @@ --- 2022-07-20 - --- Heavily based on the following script: --- https://github.com/HYLODE/HyUi/blob/10b0dce6b874df9f3d04079d213fab2e011d9155/src/beds/last_open_bed_admits.sql - --- Retrieves the patients on a ward along with their most recent ROS and MRSA test order info - -WITH - - - -beds AS ( - SELECT - lo.location_id - ,lo.location_string - ,lo.bed_id - ,dept.name department - ,b.hl7string - FROM star.location lo - LEFT JOIN star.department dept ON lo.department_id = dept.department_id - LEFT JOIN star.bed b ON lo.bed_id = b.bed_id - WHERE - ( - dept.name IN - -- Built from Tower Report 14 Jun 2022 - -- NAME -- n emap locations - ( --- 'UCH T01 ACUTE MEDICAL', -- 86 --- 'UCH T01 ENHANCED CARE', -- 20 - 'UCH T03 INTENSIVE CARE', -- 37 --- 'UCH T06 HEAD (T06H)', -- 27 --- 'UCH T06 CENTRAL (T06C)', -- 25 --- 'UCH T06 SOUTH PACU', -- 22 --- 'UCH T06 GYNAE (T06G)', -- 18 --- 'UCH T07 NORTH (T07N)', -- 45 --- 'UCH T07 CV SURGE', -- 37 --- 'UCH T07 SOUTH', -- 33 --- 'UCH T07 SOUTH (T07S)', -- 23 --- 'UCH T07 HDRU', -- 20 --- 'UCH T08 NORTH (T08N)', -- 28 --- 'UCH T08 SOUTH (T08S)', -- 25 --- 'UCH T08S ARCU', -- 6 --- 'UCH T09 SOUTH (T09S)', -- 34 --- 'UCH T09 NORTH (T09N)', -- 32 --- 'UCH T09 CENTRAL (T09C)', -- 25 --- 'UCH T10 SOUTH (T10S)', -- 34 --- 'UCH T10 NORTH (T10N)', -- 32 --- 'UCH T10 MED (T10M)', -- 16 --- 'UCH T11 SOUTH (T11S)', -- 27 --- 'UCH T11 NORTH (T11N)', -- 25 --- 'UCH T11 EAST (T11E)', -- 16 --- 'UCH T11 NORTH (T11NO)', -- 8 --- 'UCH T12 SOUTH (T12S)', -- 32 --- 'UCH T12 NORTH (T12N)', -- 23 --- 'UCH T13 SOUTH (T13S)', -- 31 --- 'UCH T13 NORTH ONCOLOGY', -- 26 --- 'UCH T13 NORTH (T13N)', -- 26 --- 'UCH T14 NORTH TRAUMA', -- 28 --- 'UCH T14 NORTH (T14N)', -- 28 --- 'UCH T14 SOUTH ASU', -- 22 --- 'UCH T14 SOUTH (T14S)', -- 17 --- 'UCH T15 SOUTH DECANT', -- 21 --- 'UCH T15 SOUTH (T15S)', -- 21 --- 'UCH T15 NORTH (T15N)', -- 16 --- 'UCH T15 NORTH DECANT', -- 15 --- 'UCH T16 NORTH (T16N)', -- 19 --- 'UCH T16 SOUTH (T16S)', -- 18 --- 'UCH T16 SOUTH WINTER', -- 17 --- 'GWB L01 ELECTIVE SURG', -- 37 - 'GWB L01 CRITICAL CARE', -- 12 --- 'GWB L02 NORTH (L02N)', -- 19 --- 'GWB L02 EAST (L02E)', -- 19 --- 'GWB L03 NORTH (L03N)', -- 19 --- 'GWB L03 EAST (L03E)', -- 19 --- 'GWB L04 NORTH (L04N)', -- 20 --- 'GWB L04 EAST (L04E)', -- 17 --- 'WMS W04 WARD', -- 28 --- 'WMS W03 WARD', -- 27 --- 'WMS W02 SHORT STAY', -- 20 - 'WMS W01 CRITICAL CARE' -- 11 --- --- OR lo.location_string IN --- ( --- 'T06C^T06C BY08^BY08-36' --- ) - ) - ) - -), - -open_visits AS ( - SELECT - lv.location_id - ,lv.admission_datetime - ,lv.hospital_visit_id - ,row_number() over (partition BY lv.location_id ORDER BY lv.admission_datetime DESC) admission_tail - FROM star.location_visit lv - INNER JOIN beds on lv.location_id = beds.location_id - WHERE lv.discharge_datetime IS NULL - -), - -open_visits_last AS ( - SELECT - * - FROM open_visits - WHERE admission_tail = 1 -), - -open_visits_count AS ( - SELECT - ov.location_id - ,MAX(ov.admission_tail) open_visits_n - FROM open_visits ov - GROUP BY ov.location_id -), - -closed_visits AS ( - SELECT - lv.location_id - ,lv.admission_datetime - ,lv.discharge_datetime - ,lv.hospital_visit_id - ,row_number() over (partition BY lv.location_id ORDER BY lv.discharge_datetime DESC) discharge_tail - FROM star.location_visit lv - INNER JOIN beds on lv.location_id = beds.location_id - WHERE lv.discharge_datetime IS NOT NULL - -), - -closed_visits_last AS ( - SELECT - * - FROM closed_visits - WHERE discharge_tail = 1 -), - -all_beds_annotated AS ( - SELECT - beds.department - ,beds.hl7string AS bed_name - ,live_mrn.mrn - ,cd.lastname - ,cd.firstname - ,cd.date_of_birth - ,ovl.hospital_visit_id - ,hv.encounter - ,hv.admission_datetime AS hospital_admission_datetime - ,ovl.admission_datetime AS location_admission_datetime - FROM beds - -- details of the last open visit to that bed - LEFT JOIN open_visits_last ovl ON ovl.location_id = beds.location_id - LEFT JOIN open_visits_count ovc ON ovc.location_id = beds.location_id - LEFT JOIN closed_visits_last cvl ON cvl.location_id = beds.location_id - LEFT JOIN star.hospital_visit hv ON hv.hospital_visit_id = ovl.hospital_visit_id - LEFT JOIN star.core_demographic cd ON hv.mrn_id = cd.mrn_id - -- get current hospital number - LEFT JOIN star.mrn original_mrn ON hv.mrn_id = original_mrn.mrn_id - -- get mrn to live mapping - LEFT JOIN star.mrn_to_live mtl ON hv.mrn_id = mtl.mrn_id - -- get live mrn - LEFT JOIN star.mrn live_mrn ON mtl.live_mrn_id = live_mrn.mrn_id - - -- filter out "unoccupied" beds based on closed and open visits - WHERE NOT (cvl.discharge_datetime > ovl.admission_datetime OR ovl.admission_datetime IS NULL) - -), - -lab_battery_ids AS -( - SELECT - ltd.test_lab_code, - lbe.lab_battery_id - FROM star.lab_battery_element lbe - LEFT JOIN star.lab_test_definition ltd ON lbe.lab_test_definition_id = ltd.lab_test_definition_id - WHERE ltd.test_lab_code IN ('ROS', 'MRSA', 'NCOV', 'XCOV', 'RFLU') -), - --- NCOV -> Standard PCR --- XCOV -> Rapid PCR --- RFLU -> combined flu PCR - -icu_labs AS -( - SELECT - all_beds_annotated.encounter - ,lor.lab_order_id - ,lre.abnormal_flag - ,lre.result_status - - FROM all_beds_annotated - LEFT JOIN star.lab_order lor ON all_beds_annotated.hospital_visit_id = lor.hospital_visit_id - LEFT JOIN star.lab_result lre ON lor.lab_order_id = lre.lab_order_id - - WHERE lor.lab_battery_id IN (SELECT lab_battery_id FROM lab_battery_ids) -), - -lab_result_status AS ( - SELECT - lab_order_id - ,CASE - WHEN 'A' = ANY(ARRAY_AGG(abnormal_flag)) THEN 'A' ELSE NULL - END abnormal_flag - ,CASE - WHEN 'FINAL' = ANY(ARRAY_AGG(result_status)) THEN 'FINAL' ELSE NULL - END result_status - FROM icu_labs - GROUP BY lab_order_id -), - -labs_agg AS ( - SELECT - DISTINCT lor.lab_order_id - ,all_beds_annotated.encounter - ,lrs.abnormal_flag - ,lrs.result_status - ,lor.order_datetime - ,lor.lab_battery_id - FROM all_beds_annotated - LEFT JOIN star.lab_order lor ON all_beds_annotated.hospital_visit_id = lor.hospital_visit_id - LEFT JOIN lab_result_status lrs ON lrs.lab_order_id = lor.lab_order_id - WHERE lor.lab_battery_id IN (SELECT lab_battery_id FROM lab_battery_ids) - AND lor.order_datetime IS NOT NULL -), - - -ros_mrsa_results AS ( - SELECT * - FROM - ( - SELECT - encounter - ,json_agg - ( - json_build_object - ( - 'order_datetime', labs_agg.order_datetime, - 'result_status', labs_agg.result_status, - 'abnormal_flag', labs_agg.abnormal_flag - ) - ORDER BY labs_agg.lab_order_id DESC - ) - AS ros_orders - FROM labs_agg - WHERE lab_battery_id IN (SELECT lab_battery_id FROM lab_battery_ids WHERE test_lab_code = 'ROS') - GROUP BY encounter - ORDER BY encounter - ) AS ros - FULL JOIN - ( - SELECT - encounter - ,json_agg - ( - json_build_object - ( - 'order_datetime', labs_agg.order_datetime, - 'result_status', labs_agg.result_status, - 'abnormal_flag', labs_agg.abnormal_flag - ) - ORDER BY labs_agg.lab_order_id DESC - ) - AS mrsa_orders - FROM labs_agg - WHERE lab_battery_id = (SELECT lab_battery_id FROM lab_battery_ids WHERE test_lab_code = 'MRSA') - GROUP BY encounter - ORDER BY encounter - ) AS mrsa - USING ("encounter") - FULL JOIN - ( - SELECT - encounter - ,json_agg - ( - json_build_object - ( - 'order_datetime', labs_agg.order_datetime, - 'result_status', labs_agg.result_status, - 'abnormal_flag', labs_agg.abnormal_flag - ) - ORDER BY labs_agg.lab_order_id DESC - ) - AS covid_orders - FROM labs_agg - WHERE lab_battery_id IN (SELECT lab_battery_id FROM lab_battery_ids WHERE test_lab_code IN ('NCOV', 'XCOV', 'RFLU')) - GROUP BY encounter - ORDER BY encounter - ) AS covid - USING ("encounter") -) - -SELECT - ab.department - ,ab.bed_name - ,ab.mrn - ,ab.firstname - ,ab.lastname - ,ab.encounter - ,ab.date_of_birth - ,ab.hospital_admission_datetime - ,ab.location_admission_datetime - ,r.ros_orders - ,r.mrsa_orders - ,r.covid_orders - FROM all_beds_annotated ab - LEFT JOIN ros_mrsa_results r ON ab.encounter = r.encounter - ORDER BY department, bed_name diff --git a/api/src/api/ros/mock.sql b/api/src/api/ros/mock.sql deleted file mode 100644 index 8946f40c..00000000 --- a/api/src/api/ros/mock.sql +++ /dev/null @@ -1,7 +0,0 @@ --- src/api/ros/mock.sql --- name the table after the module to avoid name collisions --- in the mock database -SELECT -* -FROM rosmock -; diff --git a/api/src/api/ros/mock.xls b/api/src/api/ros/mock.xls deleted file mode 100644 index 3ce0c1a6689e40237b844300263443a54ec25eb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37888 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 z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ ffB*pk1PBlyK!5-N0t5&UAV7cs0RjZReFFaheOs$N diff --git a/api/src/api/ros/router.py b/api/src/api/ros/router.py deleted file mode 100644 index 2b2d6612..00000000 --- a/api/src/api/ros/router.py +++ /dev/null @@ -1,22 +0,0 @@ -# type: ignore -from collections import namedtuple - -from fastapi import APIRouter, Depends -from sqlmodel import Session - -from models.ros import RosRead -from api.db import prepare_query, get_star_session - -router = APIRouter(prefix="/ros") - - -@router.get("/", response_model=list[RosRead]) -def read_ros(session: Session = Depends(get_star_session)) -> list[RosRead]: - """ - Returns Ros data - """ - q = prepare_query("ros", "FIXME") - results = session.exec(q) # type: ignore - Record = namedtuple("Record", results.keys()) # type: ignore - records = [Record(*r) for r in results.fetchall()] # type: ignore - return records diff --git a/models/src/models/ros.py b/models/src/models/ros.py deleted file mode 100644 index 401ce9f9..00000000 --- a/models/src/models/ros.py +++ /dev/null @@ -1,44 +0,0 @@ -from datetime import date, datetime -from typing import Optional - -from pydantic import BaseModel - - -# define the data model that you're expecting from your query -class RosBase(BaseModel): - department: str - bed_name: str - mrn: str - encounter: int - firstname: str - lastname: str - date_of_birth: date - hospital_admission_datetime: datetime - location_admission_datetime: datetime - # ros_orders: Optional[List[dict[str, object]]] - # mrsa_orders: Optional[List[dict[str, object]]] - # covid_orders: Optional[List[dict[str, object]]] - ros_orders: Optional[str] - mrsa_orders: Optional[str] - covid_orders: Optional[str] - - -class RosMock(RosBase): # , table=True): # type: ignore - """ - The table version of the pydantic class - Used for creating tables via SQLModel - """ - - # only set schema if in postgres - # TODO: Figure out how to fix this. - # if "postgres" in settings.STAR_URL: - # __table_args__ = {"schema": settings.DB_POSTGRES_SCHEMA} - id: Optional[int] # = Field(default=None, primary_key=True) - - -class RosRead(RosBase): - """ - Read version that includes the key column - """ - - id: Optional[int] From 9e2648e6be01e8802c3494931a11f3718afa79d2 Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Fri, 26 Jan 2024 12:34:16 +0000 Subject: [PATCH 20/27] Fix ping/fast endpoint --- api/src/api/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/api/main.py b/api/src/api/main.py index a4f27ff0..760c70a1 100755 --- a/api/src/api/main.py +++ b/api/src/api/main.py @@ -66,4 +66,4 @@ def pong_slow() -> dict[str, str]: @app.get("/ping/fast") def pong_fast() -> dict[str, str]: now = arrow.utcnow().format("YYYY-MM-DD HH:mm:ss.SSS") - return now + return {"request_time": now} From 89049d39c22f27a72adaa2e6fb8bf2b5c0cc840e Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Fri, 26 Jan 2024 12:45:31 +0000 Subject: [PATCH 21/27] Fix mock sitrep beds endpoint --- api/src/api/sitrep/router.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/api/src/api/sitrep/router.py b/api/src/api/sitrep/router.py index ec1beebf..1e5e5d03 100644 --- a/api/src/api/sitrep/router.py +++ b/api/src/api/sitrep/router.py @@ -67,10 +67,9 @@ def get_mock_beds(department: str) -> list[BedRow]: bed_physical=[{"id": 1, "value": "Option", "color": "light-blue"}], unit_order=3, closed=False, - bed="a-b", - bed_label="1bed-2label", - room="SR-room", covid=False, + bed_id="a-b", # is this bed_id or hl7_bed? + room="SR-room", ) ] From 2553a5bd60f58df3fd0accc74b2a770ae968c7b0 Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Fri, 26 Jan 2024 14:31:21 +0000 Subject: [PATCH 22/27] Remove unnecessary variables from example .env file, remove towermail from required vars --- .env.example | 3 --- api/src/api/config.py | 1 - 2 files changed, 4 deletions(-) diff --git a/.env.example b/.env.example index 28dc77e0..70129a19 100644 --- a/.env.example +++ b/.env.example @@ -26,9 +26,6 @@ API_BASEROW_USERNAME=hyui # Current hycastle and hymind on GAE08 5207/5208 respectively API_HYCASTLE_URL=http://hycastle:1234 API_HYMIND_URL=http://hymind:1234 -API_TOWERMAIL_URL=http://towermail:1234 -API_ELECTIVES_TAP_URL=http://somehost:1234 -API_EMERGENCY_TAP_URL=http://somehost:1234 # Hylode-Bot : slack API hook API_SLACK_LOG_WEBHOOK=https://hooks.slack.com/services/foo/bar/baz diff --git a/api/src/api/config.py b/api/src/api/config.py index f0ee53b4..afc88e4b 100644 --- a/api/src/api/config.py +++ b/api/src/api/config.py @@ -15,7 +15,6 @@ class Settings(BaseSettings): baserow_username: str hycastle_url: AnyHttpUrl - towermail_url: AnyHttpUrl echo_sql: bool = False From a0dc35bfbb83de29b244a77fe27884958df0c4f8 Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Fri, 26 Jan 2024 16:17:36 +0000 Subject: [PATCH 23/27] Add debugging logs --- web/src/web/pages/sitrep/callbacks/cytoscape.py | 3 +++ web/src/web/pages/sitrep/callbacks/inspector.py | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/web/src/web/pages/sitrep/callbacks/cytoscape.py b/web/src/web/pages/sitrep/callbacks/cytoscape.py index 78f3d0dd..24d533b7 100644 --- a/web/src/web/pages/sitrep/callbacks/cytoscape.py +++ b/web/src/web/pages/sitrep/callbacks/cytoscape.py @@ -80,12 +80,15 @@ def _make_elements( # noqa: C901 # TODO: fix naming (use 'encounter' in census and 'csn' in discharges) # convert csn to string since that's how encounter is stored in EMAP if discharges: + logger.info("Discharges found") discharge_lookup = {str(i.get("csn")): i for i in discharges} else: logger.warning("Discharges empty: no data available") discharge_lookup = {} if sitrep is not None: + logger.info("Sitrep data found!") + sitrep_lookup = {i.get("csn"): i for i in sitrep} else: logger.warning("Sitrep empty: no data available") diff --git a/web/src/web/pages/sitrep/callbacks/inspector.py b/web/src/web/pages/sitrep/callbacks/inspector.py index 1788848c..06a49505 100644 --- a/web/src/web/pages/sitrep/callbacks/inspector.py +++ b/web/src/web/pages/sitrep/callbacks/inspector.py @@ -12,6 +12,9 @@ from web.pages.sitrep.callbacks.utils import make_sitrep_badge from web.style import colors + +from web.logger import logger + DEBUG = True @@ -277,8 +280,11 @@ def patient_accordion_item( control, panel = None, None return dmc.AccordionControl(control), dmc.AccordionPanel(panel) + logger.info(f"Node contents: {node}") data = node.get("data", {}) + logger.info(f"Data contents: {data}") + if data.get("closed"): control = dmc.Group( [ From d458676e7e2ebfd0de202cd0ca4ab0e3c159a13f Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Fri, 26 Jan 2024 16:31:08 +0000 Subject: [PATCH 24/27] Add more debug logging --- web/src/web/pages/sitrep/callbacks/cytoscape.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/web/src/web/pages/sitrep/callbacks/cytoscape.py b/web/src/web/pages/sitrep/callbacks/cytoscape.py index 24d533b7..22197338 100644 --- a/web/src/web/pages/sitrep/callbacks/cytoscape.py +++ b/web/src/web/pages/sitrep/callbacks/cytoscape.py @@ -272,6 +272,18 @@ def _prepare_cyto_elements_ward( Use the dept_grouper == ALL_ICUs to trigger the switch to using positions for preset layout """ + logger.info("####### INSIDE _PREPARE_ELEMENTS_CYTOSCAPE_WARD ########") + logger.info(f"{elements=}") + logger.info(f"{census=}") + logger.info(f"{depts=}") + logger.info(f"{rooms=}") + logger.info(f"{beds=}") + logger.info(f"{sitrep=}") + logger.info(f"{discharges=}") + logger.info(f"{dept=}") + logger.info(f"{bed_submit_store=}") + logger.info(f"{dept_grouper=}") + if callback_context.triggered_id != ids.ACC_BED_SUBMIT_STORE: preset_map_positions = True if dept_grouper == "ALL_ICUS" else False elements = _make_elements( From bb1f1b8e868d57876f7c462d04be82caed00743b Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Fri, 26 Jan 2024 16:42:48 +0000 Subject: [PATCH 25/27] Log depts open store names --- web/src/web/pages/sitrep/callbacks/census.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/web/src/web/pages/sitrep/callbacks/census.py b/web/src/web/pages/sitrep/callbacks/census.py index 7cfb9223..c98e8dec 100644 --- a/web/src/web/pages/sitrep/callbacks/census.py +++ b/web/src/web/pages/sitrep/callbacks/census.py @@ -6,7 +6,7 @@ from models.census import CensusRow from web import SITREP_DEPT2WARD_MAPPING from web.config import get_settings -from web.logger import logger_timeit +from web.logger import logger_timeit, logger from web.pages.sitrep import CAMPUSES, ids @@ -31,6 +31,7 @@ def _store_census( Filtered list of CensusRow dictionaries """ + logger.info(f"DEPTS_OPEN_STORE_NAMES: {depts_open_names}") if dept_grouper == "ALL_ICUS": url = f"{get_settings().api_url}/census/" params = {"departments": SITREP_DEPT2WARD_MAPPING.keys()} From dc454759d66897a4fd03cf6e30b289601e890c98 Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Fri, 26 Jan 2024 17:19:56 +0000 Subject: [PATCH 26/27] Pass params to requests.get properly --- web/src/web/celery_tasks.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/src/web/celery_tasks.py b/web/src/web/celery_tasks.py index 630460d3..c710cd81 100644 --- a/web/src/web/celery_tasks.py +++ b/web/src/web/celery_tasks.py @@ -13,7 +13,7 @@ @celery_app.task def get_response( - url: str, cache_key: str, params: Optional[int] = None, expires: int = 3600 + url: str, cache_key: str, params: Optional[dict] = None, expires: int = 3600 ) -> tuple[object, int]: """ Get a response from a URL @@ -31,7 +31,7 @@ def get_response( response = requests.get(url) else: logger.info(f"Fetching {url} - params {str(params)[:16]} ...") - response = requests.get(url, params=str(params)) + response = requests.get(url, params=params) if response.status_code != 200: logger.error(f"Error fetching {url}: {response.status_code}") From 3ac3ee672adaa609e3fc3b0902f25fc595569fa2 Mon Sep 17 00:00:00 2001 From: Harry Moss Date: Fri, 26 Jan 2024 17:28:25 +0000 Subject: [PATCH 27/27] Tidying up my debug logging --- web/src/web/pages/sitrep/callbacks/census.py | 3 +-- web/src/web/pages/sitrep/callbacks/cytoscape.py | 12 ------------ web/src/web/pages/sitrep/callbacks/inspector.py | 5 ----- 3 files changed, 1 insertion(+), 19 deletions(-) diff --git a/web/src/web/pages/sitrep/callbacks/census.py b/web/src/web/pages/sitrep/callbacks/census.py index c98e8dec..7cfb9223 100644 --- a/web/src/web/pages/sitrep/callbacks/census.py +++ b/web/src/web/pages/sitrep/callbacks/census.py @@ -6,7 +6,7 @@ from models.census import CensusRow from web import SITREP_DEPT2WARD_MAPPING from web.config import get_settings -from web.logger import logger_timeit, logger +from web.logger import logger_timeit from web.pages.sitrep import CAMPUSES, ids @@ -31,7 +31,6 @@ def _store_census( Filtered list of CensusRow dictionaries """ - logger.info(f"DEPTS_OPEN_STORE_NAMES: {depts_open_names}") if dept_grouper == "ALL_ICUS": url = f"{get_settings().api_url}/census/" params = {"departments": SITREP_DEPT2WARD_MAPPING.keys()} diff --git a/web/src/web/pages/sitrep/callbacks/cytoscape.py b/web/src/web/pages/sitrep/callbacks/cytoscape.py index 22197338..24d533b7 100644 --- a/web/src/web/pages/sitrep/callbacks/cytoscape.py +++ b/web/src/web/pages/sitrep/callbacks/cytoscape.py @@ -272,18 +272,6 @@ def _prepare_cyto_elements_ward( Use the dept_grouper == ALL_ICUs to trigger the switch to using positions for preset layout """ - logger.info("####### INSIDE _PREPARE_ELEMENTS_CYTOSCAPE_WARD ########") - logger.info(f"{elements=}") - logger.info(f"{census=}") - logger.info(f"{depts=}") - logger.info(f"{rooms=}") - logger.info(f"{beds=}") - logger.info(f"{sitrep=}") - logger.info(f"{discharges=}") - logger.info(f"{dept=}") - logger.info(f"{bed_submit_store=}") - logger.info(f"{dept_grouper=}") - if callback_context.triggered_id != ids.ACC_BED_SUBMIT_STORE: preset_map_positions = True if dept_grouper == "ALL_ICUS" else False elements = _make_elements( diff --git a/web/src/web/pages/sitrep/callbacks/inspector.py b/web/src/web/pages/sitrep/callbacks/inspector.py index 06a49505..bb1b3a04 100644 --- a/web/src/web/pages/sitrep/callbacks/inspector.py +++ b/web/src/web/pages/sitrep/callbacks/inspector.py @@ -13,8 +13,6 @@ from web.style import colors -from web.logger import logger - DEBUG = True @@ -280,11 +278,8 @@ def patient_accordion_item( control, panel = None, None return dmc.AccordionControl(control), dmc.AccordionPanel(panel) - logger.info(f"Node contents: {node}") data = node.get("data", {}) - logger.info(f"Data contents: {data}") - if data.get("closed"): control = dmc.Group( [