initial
This commit is contained in:
48
sql/echo_data.sql
Normal file
48
sql/echo_data.sql
Normal file
@@ -0,0 +1,48 @@
|
||||
-- THIS SCRIPT IS AUTOMATICALLY GENERATED. DO NOT EDIT IT DIRECTLY.
|
||||
DROP TABLE IF EXISTS echo_data; CREATE TABLE echo_data AS
|
||||
-- This code extracts structured data from echocardiographies
|
||||
-- You can join it to the text notes using ROW_ID
|
||||
-- Just note that ROW_ID will differ across versions of MIMIC-III.
|
||||
|
||||
select ROW_ID
|
||||
, subject_id, hadm_id
|
||||
, chartdate
|
||||
|
||||
-- charttime is always null for echoes..
|
||||
-- however, the time is available in the echo text, e.g.:
|
||||
-- , substring(ne.text, 'Date/Time: [\[\]0-9*-]+ at ([0-9:]+)') as TIMESTAMP
|
||||
-- we can therefore impute it and re-create charttime
|
||||
, PARSE_DATETIME
|
||||
(
|
||||
'%Y-%m-%d%H:%M:%S',
|
||||
FORMAT_DATE('%Y-%m-%d', chartdate)
|
||||
|| REGEXP_EXTRACT(ne.text, 'Date/Time: .+? at ([0-9]+:[0-9]{2})')
|
||||
|| ':00'
|
||||
) AS charttime
|
||||
|
||||
-- explanation of below substring:
|
||||
-- 'Indication: ' - matched verbatim
|
||||
-- (.*?) - match any character
|
||||
-- \n - the end of the line
|
||||
-- substring only returns the item in ()s
|
||||
-- note: the '?' makes it non-greedy. if you exclude it, it matches until it reaches the *last* \n
|
||||
|
||||
, REGEXP_EXTRACT(ne.text, 'Indication: (.*?)\n') as Indication
|
||||
|
||||
-- sometimes numeric values contain de-id text, e.g. [** Numeric Identifier **]
|
||||
-- this removes that text
|
||||
, cast(REGEXP_EXTRACT(ne.text, 'Height: \\x28in\\x29 ([0-9]+)') as numeric) as Height
|
||||
, cast(REGEXP_EXTRACT(ne.text, 'Weight \\x28lb\\x29: ([0-9]+)\n') as numeric) as Weight
|
||||
, cast(REGEXP_EXTRACT(ne.text, 'BSA \\x28m2\\x29: ([0-9]+) m2\n') as numeric) as BSA -- ends in 'm2'
|
||||
, REGEXP_EXTRACT(ne.text, 'BP \\x28mm Hg\\x29: (.+)\n') as BP -- Sys/Dias
|
||||
, cast(REGEXP_EXTRACT(ne.text, 'BP \\x28mm Hg\\x29: ([0-9]+)/[0-9]+?\n') as numeric) as BPSys -- first part of fraction
|
||||
, cast(REGEXP_EXTRACT(ne.text, 'BP \\x28mm Hg\\x29: [0-9]+/([0-9]+?)\n') as numeric) as BPDias -- second part of fraction
|
||||
, cast(REGEXP_EXTRACT(ne.text, 'HR \\x28bpm\\x29: ([0-9]+?)\n') as numeric) as HR
|
||||
|
||||
, REGEXP_EXTRACT(ne.text, 'Status: (.*?)\n') as Status
|
||||
, REGEXP_EXTRACT(ne.text, 'Test: (.*?)\n') as Test
|
||||
, REGEXP_EXTRACT(ne.text, 'Doppler: (.*?)\n') as Doppler
|
||||
, REGEXP_EXTRACT(ne.text, 'Contrast: (.*?)\n') as Contrast
|
||||
, REGEXP_EXTRACT(ne.text, 'Technical Quality: (.*?)\n') as TechnicalQuality
|
||||
FROM noteevents ne
|
||||
where category = 'Echo';
|
||||
Reference in New Issue
Block a user