Я использую следующий файл данных, который содержит несколько записей на человека и несколько значений, которые указаны на уровне 1-5 в столбце «результат клинического события» - он выглядит примерно так:
+--------+------------------------------------------------------------------------------+
| Pat_ID | Clinical Event Result |
+--------+------------------------------------------------------------------------------+
| 1 | Triage and Initial RN Assessment [level 1], Vital signs monitoring [level 3] |
| 1 | Trauma [Level 4], Consult/s (Social work, Psych, CXhild Life [Level 4] |
| 1 | Admission or O.R. preparation [level 5], |
| 2 | Triage and Initial RN Assessment only [level 1] |
| 2 | Oral Meds [level 1] |
+--------+------------------------------------------------------------------------------+
Я ищу совет, чтобы написать код, который привел бы к выводу, показывающему только одну запись на Pat_ID
для создания отдельных столбцов всякий раз, когда level появляется в столбце Clinical Event Result
.
Например, для индивидуума с Pat_ID=1
я бы хотел, чтобы выходные данные выглядели так:
+---------+-----------+---------+---------+---------+---------+-----------+
| Pat_ID | Level 1 | Level 2 | Level 3 | Level 4 | Level 4 | Level 5 |
+---------+-----------+---------+---------+---------+---------+-----------+
| 1 | Triage... | null | Vitals | Trauma | CXLife | Admission |
+---------+-----------+---------+---------+---------+---------+-----------+
Я думаю, сначала мне нужно транспонировать данные, чтобы их было несколько clinical event result
столбцов для каждой строки пациента, а затем объединить эти столбцы в один столбец.Во-вторых, разбор каждого уровня, чтобы каждый получил свой собственный столбец.
Я использовал следующий код, но он захватывает только первое значение в столбце clinical event result
.Например, если есть два события level 4
, он захватит только первое событие и поместит его в столбец level 4
.
Обратите внимание, что, глядя на этот код и мой пример выше, я звоню Financial_Number
PAT_ID
в целях конфиденциальности пациента.
USE EMTCQIData
SELECT FCT.[Financial Number], FCT.[Clinical Event Result], FCT.Level_5, FCT.Level_4, FCT.Level_3, CPT.CPT, MAX_FCT.MAX_FCT_CHARGE
FROM CPT_MASTER as CPT
INNER JOIN
(
SELECT [Financial Number], [Clinical Event Result],
CASE
WHEN [Clinical Event Result] like '%1:1 Nursing care%' Then '1:1 Nursing Care'
WHEN [Clinical Event Result] like '%Admission or O.R. preparation%' Then 'Admission/OR Preparation'
WHEN [Clinical Event Result] like '%Airway Management (BLS/ALS interventions)%' Then 'Airway Management'
WHEN [Clinical Event Result] like '%Critical care transport preparation%' Then 'Critical care transport preparation'
WHEN [Clinical Event Result] like '%Medical/code alert%' Then 'Medical/code alert'
WHEN [Clinical Event Result] like '%O2 therapy%' Then 'O2 therapy'
WHEN [Clinical Event Result] like '%Pain management with reassessment%' Then 'Pain management with reassessment'
WHEN [Clinical Event Result] like '%Respiratory monitoring%' Then 'Respiratory monitoring'
END Level_5,
CASE
WHEN [Clinical Event Result] like '%Respiratory assessment%' Then 'Respiratory assessment'
WHEN [Clinical Event Result] like '%Patient transport X-ray/CT%' Then 'Patient transport X-ray/CT'
WHEN [Clinical Event Result] like '%Pulse oximetery%' Then 'Pulse oximetery'
WHEN [Clinical Event Result] like '%Cardiac monitoring%' Then 'Cardiac monitoring'
WHEN [Clinical Event Result] like '%Neurological monitoring%' Then 'Neurological monitoring'
WHEN [Clinical Event Result] like '%Wound Care (less than 15 min)%' Then 'Wound Care (less than 15 min)'
END Level_4,
CASE
WHEN [Clinical Event Result] like '%Blood-peripheral venous%' Then 'Blood-peripheral venous'
WHEN [Clinical Event Result] like '%Urine-catheterized%' Then 'Urine-catheterized'
WHEN [Clinical Event Result] like '%Oral hydration interventions%' Then 'Oral hydration interventions'
WHEN [Clinical Event Result] like '%Oral meds%' Then 'Oral meds'
WHEN [Clinical Event Result] like '%Medication teaching%' Then 'Medication teaching'
WHEN [Clinical Event Result] like '%Vital signs monitoring%' Then 'Vital signs monitoring'
END Level_3
FROM ED_FCT_Q1_FY19
)
as FCT ON FCT.[Financial Number]=CPT.FIN
INNER JOIN
(
SELECT [Financial Number] as Fin, MAX(Charge_Code) as MAX_FCT_CHARGE
FROM ED_FCT_Q1_FY19
GROUP BY [Financial Number]
) as MAX_FCT on CPT.Fin = MAX_FCT.Fin
WHERE (FCT.[Clinical Event Result] like '%Level%' or FCT.[Clinical Event Result] like '%level%') AND CPT.CPT LIKE '9928%'