Mimic-code: ๊ด€๋ จ ํ…Œ์ด๋ธ”์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋… ํด๋”์—์„œ .sh ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2020๋…„ 09์›” 18์ผ  ยท  13์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: MIT-LCP/mimic-code

์ „์ œ ์กฐ๊ฑด

  • [X] ๋‹ค์Œ์„ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•œ ๊ฒฝ์šฐ ์ด ์ค„์˜ ๋Œ€๊ด„ํ˜ธ ์‚ฌ์ด์— X๋ฅผ ๋„ฃ์œผ์‹ญ์‹œ์˜ค.

์„ค๋ช…

ํ›Œ๋ฅญํ•œ ํ”„๋กœ์ ํŠธ์— ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!
์ €๋Š” ์ƒˆ๋กœ์šด SQL/psql ์ดˆ๋ณด์ž์ž…๋‹ˆ๋‹ค. ์‰˜(psql)์— [postgres_make_concepts.sh]๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ–ˆ์ง€๋งŒ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€์นจ์— ๋”ฐ๋ผ ๊ฐœ๋ณ„ .sql ํŒŒ์ผ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ „์ฒด ํด๋”๊ฐ€ ๋‚ด ์ปดํ“จํ„ฐ์— ๋‹ค์šด๋กœ๋“œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ๋ชจ๋“  ๋ฌธ์ œ(๋‹ซํžŒ ๋ฌธ์ œ ํฌํ•จ)๋ฅผ ์‚ดํŽด๋ณด์•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๋กœ์ปฌ์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

[postgres_make_concepts.sh๋ฅผ ์–ด๋–ป๊ฒŒ ์ดˆ๊ธฐํ™”ํ•˜๋‚˜์š”?]

๋„์›€์ด ๋˜์…จ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ข‹์•„, Windows์—์„œ ๊ฐœ๋…์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด .bat ํŒŒ์ผ์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. WSL์ด ํ•„์š”ํ•˜์ง€๋งŒ ๊ฐœ๋…์„ ์ƒ์„ฑํ•˜๋Š” ๊ฐ€์žฅ ์†์ด ์ž์œ ๋กœ์šด ๋ฐฉ๋ฒ•์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. CCS ์ง„๋‹จ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ์— ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. README์— ํŠœํ† ๋ฆฌ์–ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค: https://github.com/MIT-LCP/mimic-code/tree/master/concepts

๊ทธ๊ฒƒ์ด ๋‹น์‹  ๋ชจ๋‘์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”!

๋ชจ๋“  13 ๋Œ“๊ธ€

์–ด๋–ค ์šด์˜ ์ฒด์ œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ํŒŒ์ผ์€ ์…ธ ์Šคํฌ๋ฆฝํŠธ์ด๋ฏ€๋กœ Mac OS X ๋˜๋Š” Linux์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. Windows๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ๋ฌด์—‡์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. SQL ํŒŒ์ผ์€ PostgreSQL ์„ค์น˜์™€ ํ•จ๊ป˜ ์ œ๊ณต๋œ psql(์…ธ) ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ BigQuery ๊ตฌ๋ฌธ์„ PostgreSQL ๊ตฌ๋ฌธ์œผ๋กœ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ ํŒŒ์ผ์— ์ •๊ทœ์‹์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ Windows์—์„œ ์ด๋ฅผ ์—๋ฎฌ๋ ˆ์ดํŠธํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ์šด์˜ ์ฒด์ œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ํŒŒ์ผ์€ ์…ธ ์Šคํฌ๋ฆฝํŠธ์ด๋ฏ€๋กœ Mac OS X ๋˜๋Š” Linux์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. Windows๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ๋ฌด์—‡์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. SQL ํŒŒ์ผ์€ PostgreSQL ์„ค์น˜์™€ ํ•จ๊ป˜ ์ œ๊ณต๋œ psql(์…ธ) ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ BigQuery ๊ตฌ๋ฌธ์„ PostgreSQL ๊ตฌ๋ฌธ์œผ๋กœ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ ํŒŒ์ผ์— ์ •๊ทœ์‹์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ Windows์—์„œ ์ด๋ฅผ ์—๋ฎฌ๋ ˆ์ดํŠธํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ •๋ง ๊ณ ๋ง™์Šต๋‹ˆ๋‹ค! ์ €๋Š” Win7์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ, PostgreSQL๋กœ ๊ฐœ๋ณ„ .sql ํŒŒ์ผ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํ…Œ์ด๋ธ”์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด cmd ๋˜๋Š” psql์—์„œ postgres_make_concepts.sh๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , sepsis-3-mimic ์ฝ”๋“œ์˜ ํŒŒ์ผ์ฒ˜๋Ÿผ make_concepts ํŒŒ์ผ์„ .sql ํ˜•์‹์œผ๋กœ ์ œ๊ณตํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
๋˜๋Š” ๋ˆ„๊ตฐ๊ฐ€ Windows์—์„œ .sh๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ตฌ๊ธ€๋งํ•˜๋Š”๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์ง€๋งŒ ์•„๋ฌด๊ฒƒ๋„ ์–ป์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ข‹์Šต๋‹ˆ๋‹ค. ์ €๋Š” Unix ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ psql ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•˜๊ธฐ ์ „์— ๋ณ€๊ฒฝํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋‹นํžˆ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. .sh ์Šคํฌ๋ฆฝํŠธ๋Š” (1) ํฌ์ŠคํŠธ๊ทธ๋ ˆ์Šค์™€ ํ˜ธํ™˜๋˜๋„๋ก ์ •๊ทœ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ SQL ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ณ , (2) ์Šคํฌ๋ฆฝํŠธ์˜ ๋‚ด์šฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ๊ณผ ๋™์ผํ•œ ์ด๋ฆ„์˜ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ณ , (3) ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์—์„œ SQL ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋ฌธํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜๋™์œผ๋กœ ์žฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ sed ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „์ฒ˜๋Ÿผ SQL ํŒŒ์ผ๋กœ ๋งŒ๋“ค ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. Windows์šฉ GNU๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Windows์— sed ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…์ŠคํŠธ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋˜ํ•œ ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ์—์„œ ์‹คํ–‰ ์–ป์„ ์ˆ˜์žˆ์„ Windows ์šฉ GNU ํ•ต์‹ฌ ์œ ํ‹ธ์„ .

๋˜๋Š” Linux์šฉ Windows ํ•˜์œ„ ์‹œ์Šคํ…œ(WSL)์—์„œ postgres๋ฅผ ์„ค์น˜ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด .sh ์Šคํฌ๋ฆฝํŠธ๊ฐ€ Linux ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์นœ์• ํ•˜๋Š” ์•Œ๋ฆฌ์Šคํ…Œ์–ด์™€ ์Šค๋งˆํŠธ๋‹ˆ์ฝ”
๋น„์Šทํ•œ ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚ฌ์Šต๋‹ˆ๋‹ค.
์ง€์นจ์„ ๋”ฐ๋ฅด๊ณ  postgres-funtions.sql์„ ์‹คํ–‰ํ–ˆ์ง€๋งŒ ์ด์ œ ๊ฐ .sql์„ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.... ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋ฅผ ์ž˜๋ชป ํ–ˆ์Šต๋‹ˆ๊นŒ? ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋ฅผ ์–ด๋–ป๊ฒŒ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”

์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ์ ˆ๋Œ€์ ์œผ๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ํ•„์š”ํ•œ postgresql์— ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SELECT REGEXP_EXTRACT('test it grabs the number 123', '[0-9]+');

123 ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. No function matches the given name and argument types. ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์™„๋ฃŒ๋˜๋ฉด ๋ชจ๋“  SQL ํŒŒ์ผ์—์„œ ๋‹ค์Œ ํ…์ŠคํŠธ ๊ต์ฒด๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. physionet-data.mimiciii_clinical.<table_name> , physionet-data.mimiciii_derived.<table_name> ๋ฐ physionet-data.mimiciii_notes.<table_name> ๋ฅผ <table_name> ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‰˜ ์Šคํฌ๋ฆฝํŠธ์˜ REGEX_SCHEMA ํ˜ธ์ถœ์— ์˜ํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
  2. DATETIME_DIFF(date1, date2, DATE_PART) ๋ฅผ DATETIME_DIFF(date1, date2, 'DATE_PART') ๋กœ ๋ฐ”๊พธ์‹ญ์‹œ์˜ค. ์ฆ‰, DATE_PART ๋Š” ์ž‘์€ ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‰˜ ์Šคํฌ๋ฆฝํŠธ์—์„œ REGEX_DATETIME_DIFF ํ˜ธ์ถœ์— ์˜ํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
  3. ํŒŒ์ผ์˜ ๋งจ ์œ„์—, ์˜ˆ๋ฅผ ๋“ค์–ด, ํŒŒ์ผ์˜ ์ด๋ฆ„์€ ๊ฒฝ์šฐ์— ์ƒ์„ฑ ํ…Œ์ด๋ธ” ๋ฌธ์„ ์ถ”๊ฐ€ echo_data.sql ์ถ”๊ฐ€, CREATE TABLE echo_data AS ํŒŒ์ผ์˜ ๋งจ ์œ„์—. ์ด๊ฒƒ์€ ์‰˜ ์Šคํฌ๋ฆฝํŠธ์˜ echo ํ˜ธ์ถœ์— ์˜ํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

์œ„์˜ ์„ธ ๋‹จ๊ณ„๋Š” ์‰˜ ์Šคํฌ๋ฆฝํŠธ(postgres_make_concepts.sh)์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ์ž‘์—…์„ ๋ณต์ œํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ž๋™ํ™”ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์œผ๋ฏ€๋กœ Windows์—์„œ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์‹œ๋„ํ•ด ๋ณด์‹ญ์‹œ์˜ค(์—ฌ๊ธฐ์— ์†”๋ฃจ์…˜์„ ๊ฒŒ์‹œํ•˜์‹ญ์‹œ์˜ค!).

image

์นœ์• ํ•˜๋Š” ์•Œ๋ฆฌ์Šคํ…Œ์–ด์™€ ์Šค๋งˆํŠธ๋‹ˆ์ฝ”
์ €๋Š” ์˜๋Œ€์ƒ์ด๊ณ  SQL/psql์— ๋Šฅ์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. make_concepts.sh๋ฅผ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ–ˆ์ง€๋งŒ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚ด ์‹œ์Šคํ…œ๋„ Windows์ž…๋‹ˆ๋‹ค.
๋‚˜๋Š” postgresql์— ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ–ˆ๊ณ  ๊ทธ๊ฒƒ๋“ค์ด ๋‚˜ํƒ€๋‚ฌ์ง€๋งŒ uesd๊ฐ€ ๋  ์ˆ˜ ์—†์—ˆ๋‹ค. (SELECT REGEXP_EXTRACT('test it grabs the number 123', '[0-9]+');) ๋‹ค์Œ์— '์ฃผ์–ด์ง„ ์ด๋ฆ„ ๋ฐ ์ธ์ˆ˜ ์œ ํ˜•๊ณผ ์ผ์น˜ํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค'๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.)
SQL์„ ๋ณต์‚ฌํ•˜์—ฌ ํ™˜๊ธฐ ๋ณด๊ธฐ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๊ณ  ํ•˜๋ฉด '์ฃผ์–ด์ง„ ์ด๋ฆ„ ๋ฐ ์ธ์ˆ˜ ์œ ํ˜•๊ณผ ์ผ์น˜ํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค'๋ผ๊ณ  ํ‘œ์‹œ๋˜์ง€๋งŒ SQL์˜ ํ•จ์ˆ˜๋ฅผ ์œ ์‚ฌํ•œ ๋‹จ์–ด๋กœ ๊ต์ฒดํ•œ ํ›„ ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋‚ด ์งˆ๋ฌธ์€ ๊ธฐ๋Šฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•?

๋‚˜๋Š” postgresql์— ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ–ˆ๊ณ  ๊ทธ๊ฒƒ๋“ค์ด ๋‚˜ํƒ€๋‚ฌ์ง€๋งŒ uesd๊ฐ€ ๋  ์ˆ˜ ์—†์—ˆ๋‹ค. (SELECT REGEXP_EXTRACT('test it grabs the number 123', '[0-9]+');) ๋‹ค์Œ์— '์ฃผ์–ด์ง„ ์ด๋ฆ„ ๋ฐ ์ธ์ˆ˜ ์œ ํ˜•๊ณผ ์ผ์น˜ํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค'๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.)
SQL์„ ๋ณต์‚ฌํ•˜์—ฌ ํ™˜๊ธฐ ๋ณด๊ธฐ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๊ณ  ํ•˜๋ฉด '์ฃผ์–ด์ง„ ์ด๋ฆ„ ๋ฐ ์ธ์ˆ˜ ์œ ํ˜•๊ณผ ์ผ์น˜ํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค'๋ผ๊ณ  ํ‘œ์‹œ๋˜์ง€๋งŒ SQL์˜ ํ•จ์ˆ˜๋ฅผ ์œ ์‚ฌํ•œ ๋‹จ์–ด๋กœ ๊ต์ฒดํ•œ ํ›„ ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋‚ด ์งˆ๋ฌธ์€ ๊ธฐ๋Šฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•?

ํ•จ์ˆ˜๋Š” ํŠน์ • ์Šคํ‚ค๋งˆ์—์„œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‚˜์—ด๋œ ์Šคํ‚ค๋งˆ์—์„œ ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋” ์ด์ƒ ๊ฒ€์ƒ‰ ๊ฒฝ๋กœ์— ์—†์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ set search_path to mimiciii,public; ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ฒ€์ƒ‰ ๊ฒฝ๋กœ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ข‹์•„, Windows์—์„œ ๊ฐœ๋…์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด .bat ํŒŒ์ผ์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. WSL์ด ํ•„์š”ํ•˜์ง€๋งŒ ๊ฐœ๋…์„ ์ƒ์„ฑํ•˜๋Š” ๊ฐ€์žฅ ์†์ด ์ž์œ ๋กœ์šด ๋ฐฉ๋ฒ•์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. CCS ์ง„๋‹จ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ์— ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. README์— ํŠœํ† ๋ฆฌ์–ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค: https://github.com/MIT-LCP/mimic-code/tree/master/concepts

๊ทธ๊ฒƒ์ด ๋‹น์‹  ๋ชจ๋‘์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”!

์ข‹์•„, Windows์—์„œ ๊ฐœ๋…์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด .bat ํŒŒ์ผ์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. WSL์ด ํ•„์š”ํ•˜์ง€๋งŒ ๊ฐœ๋…์„ ์ƒ์„ฑํ•˜๋Š” ๊ฐ€์žฅ ์†์ด ์ž์œ ๋กœ์šด ๋ฐฉ๋ฒ•์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. CCS ์ง„๋‹จ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ์— ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. README์— ํŠœํ† ๋ฆฌ์–ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค: https://github.com/MIT-LCP/mimic-code/tree/master/concepts

๊ทธ๊ฒƒ์ด ๋‹น์‹  ๋ชจ๋‘์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”!

์•ˆ๋‚ดํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ด์ œ 'set search_path to mimiciii,public'์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  ๋‹ค์Œ๊นŒ์ง€ ์ผ๋ถ€ ๋ณด๊ธฐ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

์ข‹์•„, Windows์—์„œ ๊ฐœ๋…์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด .bat ํŒŒ์ผ์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. WSL์ด ํ•„์š”ํ•˜์ง€๋งŒ ๊ฐœ๋…์„ ์ƒ์„ฑํ•˜๋Š” ๊ฐ€์žฅ ์†์ด ์ž์œ ๋กœ์šด ๋ฐฉ๋ฒ•์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. CCS ์ง„๋‹จ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ์— ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. README์— ํŠœํ† ๋ฆฌ์–ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค: https://github.com/MIT-LCP/mimic-code/tree/master/concepts

๊ทธ๊ฒƒ์ด ๋‹น์‹  ๋ชจ๋‘์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”!

์•ˆ๋‚ดํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ํ•จ์ˆ˜์˜ ๊ฒฝ๋กœ๋ฅผ ๋ณ€๊ฒฝํ•œ ๋‹ค์Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ํ›„ make_concepts.sh์˜ ์ˆœ์„œ์— ๋”ฐ๋ผ ์ˆ˜๋™์œผ๋กœ ๋ทฐ๋ฅผ ๊ตฌ์ถ•ํ–ˆ๊ณ  ๋Œ€๋ถ€๋ถ„ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์— ๋‚ด๊ฐ€ ๋งŒ๋‚œ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. 'weight_durations'๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•˜๋ฉด ์‹คํŒจํ•˜๊ณ  'unkonw์—์„œ ํ…์ŠคํŠธ๋กœ์˜ ๋ณ€ํ™˜์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค'๋ผ๊ณ  ํ‘œ์‹œ๋˜์–ด 'heightweight', 'kdigo_uo' ๋ฐ ๊ธฐํƒ€ ๋ณด๊ธฐ ์ƒ์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์ณค์Šต๋‹ˆ๋‹ค.
  2. 'ccs_dx'๋ฅผ ๋นŒ๋“œํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์‹คํŒจํ•˜๊ณ  'mimiciii.ccs_multi_dx' ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค'๋ผ๊ณ  ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ํ…Œ์ด๋ธ”์„ ๋จผ์ € ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?
    ์ด ๋‘ ๋ถ€๋ถ„์„ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋“  ๋ณด๊ธฐ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๋นŒ๋“œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  1. 'weight_durations'๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•˜๋ฉด ์‹คํŒจํ•˜๊ณ  'unkonw์—์„œ ํ…์ŠคํŠธ๋กœ์˜ ๋ณ€ํ™˜์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค'๋ผ๊ณ  ํ‘œ์‹œ๋˜์–ด 'heightweight', 'kdigo_uo' ๋ฐ ๊ธฐํƒ€ ๋ณด๊ธฐ ์ƒ์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์ณค์Šต๋‹ˆ๋‹ค.

์ด์ƒํ•˜๋„ค์š”. weight_durations ์™„๋ฒฝํ•˜๊ฒŒ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๋ฒ„์ „์˜ PostgreSQL์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

  1. 'ccs_dx'๋ฅผ ๋นŒ๋“œํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์‹คํŒจํ•˜๊ณ  'mimiciii.ccs_multi_dx' ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค'๋ผ๊ณ  ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ํ…Œ์ด๋ธ”์„ ๋จผ์ € ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์˜ˆ - ์˜ˆ์ƒํ–ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. gzip์„ ์‚ฌ์šฉํ•˜์—ฌ .gz ํŒŒ์ผ์˜ ์••์ถ•์„ ํ’€๋ ค๊ณ  ์‹œ๋„ํ•˜์ง€๋งŒ Windows์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ gzip์ด ์ œ๊ณต๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด ํ…Œ์ด๋ธ”์˜ ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์ด ํ…Œ์ด๋ธ”์„ ์ˆ˜๋™์œผ๋กœ ์••์ถ• ํ•ด์ œํ•˜๊ณ  \COPY ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ”๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด ๋‘ ๋ถ€๋ถ„์„ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋“  ๋ณด๊ธฐ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๋นŒ๋“œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์—„์ฒญ๋‚œ!

  1. 'weight_durations'๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•˜๋ฉด ์‹คํŒจํ•˜๊ณ  'unkonw์—์„œ ํ…์ŠคํŠธ๋กœ์˜ ๋ณ€ํ™˜์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค'๋ผ๊ณ  ํ‘œ์‹œ๋˜์–ด 'heightweight', 'kdigo_uo' ๋ฐ ๊ธฐํƒ€ ๋ณด๊ธฐ ์ƒ์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์ณค์Šต๋‹ˆ๋‹ค.

์ด์ƒํ•˜๋„ค์š”. weight_durations ์™„๋ฒฝํ•˜๊ฒŒ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๋ฒ„์ „์˜ PostgreSQL์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

PostgreSQL 9.6 ๋ฐ pgAdmin4๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. LINE69: 'echo' AS weight_type์„ 'echo'::text AS weight_type์œผ๋กœ ๋ณ€๊ฒฝํ•œ ํ›„ ๋ทฐ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ๋ทฐ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑํ•˜๋ ค๊ณ  ํ•˜๊ธฐ ์ „์— ์ž๋™์œผ๋กœ ๋นŒ๋“œ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— 'echo_data' ๋ทฐ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ตœ์‹  ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ์ƒˆ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์„œ๋กœ ๋‹ค๋ฅธ์ง€ ํ™•์ธํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋‚ด๊ฐ€ ๋งŒ๋“  ์ƒˆ ์ฝ”๋“œ๊ฐ€ ๋†’์ด, ์ฒด์ค‘, bsa ๋“ฑ์˜ ์—ด์— 'null'์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์ฒซ ๋ฒˆ์งธ ๊ฒƒ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

  1. 'ccs_dx'๋ฅผ ๋นŒ๋“œํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์‹คํŒจํ•˜๊ณ  'mimiciii.ccs_multi_dx' ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค'๋ผ๊ณ  ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ํ…Œ์ด๋ธ”์„ ๋จผ์ € ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์˜ˆ - ์˜ˆ์ƒํ–ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. gzip์„ ์‚ฌ์šฉํ•˜์—ฌ .gz ํŒŒ์ผ์˜ ์••์ถ•์„ ํ’€๋ ค๊ณ  ์‹œ๋„ํ•˜์ง€๋งŒ Windows์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ gzip์ด ์ œ๊ณต๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด ํ…Œ์ด๋ธ”์˜ ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์ด ํ…Œ์ด๋ธ”์„ ์ˆ˜๋™์œผ๋กœ ์••์ถ• ํ•ด์ œํ•˜๊ณ  \COPY ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ”๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ccs_multi_dx ํ…Œ์ด๋ธ”์„ ๋งŒ๋“  ๋‹ค์Œ ccs_dx ๋ทฐ๋ฅผ ์ž‘์„ฑํ–ˆ์ง€๋งŒ '์˜ค๋ฅ˜: ์˜ค๋ฅ˜: ์ž˜๋ชป๋œ ์ •๊ทœ์‹: ๊ด„ํ˜ธ()๊ฐ€ ๊ท ํ˜•์ด ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ปจํ…์ŠคํŠธ: PL/pgSQL ํ•จ์ˆ˜ regexp_contains(text, text) on line 3 of RETURN' ?

์ด ๋‘ ๋ถ€๋ถ„์„ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋“  ๋ณด๊ธฐ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๋นŒ๋“œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์—„์ฒญ๋‚œ!

์นœ์• ํ•˜๋Š” ์•Œ๋ฆฌ์Šคํ…Œ์–ด:
๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋ชจ๋ฐฉ ์ฝ”๋“œ v1.4.2์— "make-concepts.sql" ํŒŒ์ผ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์‹คํ–‰ํ–ˆ๊ณ  ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‘ "make-concepts.sh"์™€ "make-concepts.sql" ํŒŒ์ผ ์‚ฌ์ด์— ์ฐจ์ด์ ์ด ์žˆ๋‹ค๊ณ  ๋ง์”€ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ด ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ .sql ํŒŒ์ผ์„ ์ฒจ๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
make-concepts.zip
๋‚˜๋Š” SQL์— ๋Œ€ํ•œ ์™„์ „ํžˆ ์™ธ๋ถ€์ธ์ž…๋‹ˆ๋‹ค. ์ฝ”๋”ฉํ•˜๊ณ  ๊ท€์ฐฎ๊ฒŒ ํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋‘ "make-concepts.sh"์™€ "make-concepts.sql" ํŒŒ์ผ ์‚ฌ์ด์— ์ฐจ์ด์ ์ด ์žˆ๋‹ค๊ณ  ๋ง์”€ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ด ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ .sql ํŒŒ์ผ์„ ์ฒจ๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

xxx.sh ํŒŒ์ผ์€ ์œ ๋‹‰์Šค ๊ณ„์—ด ๋ฐ MacOS ์‹œ์Šคํ…œ์šฉ์ด๋ฉฐ Windows์—์„œ๋Š” ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. xxx.sql ํŒŒ์ผ์€ PostgreSQL ์Šคํฌ๋ฆฝํŠธ์ด๋ฉฐ PostgreSQL์—์„œ ์‹คํ–‰ํ•˜๋Š” ํ•œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์Šคํ…œ์€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰