카카오헬스케어
경력근거: 임상 시스템과 ERP 간 데이터 연계(진료재료 사용 → 재고 차감 → 원가/전표 반영 등) 설계 및 개발
※ 실제 산출물이 아닌 AI 예측 시안입니다.
카카오헬스케어는 혈당 관리 앱 파스타와 의료진이 환자 데이터를 보는 파스타 커넥트 Pro를 운영하고, 의료 데이터를 표준화해 병원과 연구 기관을 잇는 회사예요. 공고를 낸 AI Native EHR 개발실 CPE팀은 의료 도메인의 업무 로직과 AI 기술을 묶어 시스템 설계를 맡는 조직이에요.
공고는 이 자리가 할 일로 '진료·간호·진료지원 등 임상 시스템과 ERP 간 데이터 연계(진료재료 사용 → 재고 차감 → 원가/전표 반영 등) 설계 및 개발'을 꼽고, 자격 요건으로 '회계 전표, 결산, 감가상각 등 재무 데이터의 정합성을 다루어본 경험'을 적었어요. 진료재료 한 번의 사용은 임상 시스템, 물류, 회계에 서로 다른 시각에 따로 기록돼요. 그래서 중간 한 단계가 빠지거나 수량·금액이 달라져도 사용 기록만 봐서는 드러나지 않고, 월말에 쓴 재료는 차감과 전표가 다음 달로 넘어가 결산에 빠지기도 해요.
공고는 진료·간호·진료지원 같은 임상 시스템과 ERP 사이의 데이터 연계를 이 자리가 할 일로 꼽고, 예로 진료재료 사용에서 재고 차감, 원가·전표 반영으로 이어지는 흐름을 들어요.
공고는 병원 회계(일반회계·관리회계·예산) 업무를 분석해 전표·결산 흐름을 반영한 기능을 만드는 일을 맡겨요. 자격 요건에는 회계 전표·결산·감가상각 같은 재무 데이터의 정합성을 다뤄 본 경험을 적었어요.
자격 요건에 구매팀·재무팀·자산관리 담당자 같은 현업과 소통하며 요구사항을 분석하고 기능으로 만들어 본 경험을 적었어요. 우대사항에는 EMR/HIS 같은 임상 시스템과 ERP 사이의 인터페이스 개발 경험이 있어요.
병원 재무팀 결산 담당자가 월 결산을 앞두고 여는 관리자 페이지예요. 그달 진료과·병동에서 쓴 진료재료 사용 건마다 재고 차감과 원가 전표가 같은 품목·수량·금액·부서로 이어졌는지 알려 주고, 끊기거나 어긋난 건은 어느 단계에서 그랬는지 사용 기록·차감·전표를 나란히 보여 줘요. 받은 데이터를 담을 DB 설계와 기술·구조, 그리고 몇 시까지 들어온 차감과 전표를 그달 반영으로 볼지는 지원자가 정해요.
병원 재무팀의 결산 담당자예요. 진료재료는 임상 시스템에 사용으로 남은 뒤 물류의 재고 차감과 회계의 원가 전표로 따로 기록돼서, 그 사이 한 단계가 빠지거나 수량·금액이 달라지면 결산 직전 재고 실사에서야 드러나게 되고, 그때는 어느 사용 건에서 끊겼는지 구매팀과 함께 거슬러 찾아야 해요.
진료재료를 쓰는 부서와 원가를 잡는 부서의 코드표예요. 한 행이 부서 하나이고 dept_code 가 키예요. material_usage.dept_code 와 cost_vouchers.dept_code 가 이 표의 dept_code 를 가리키고, 두 칸은 같은 코드를 써요. 큰 데이터에는 병동·수술실·중환자실·시술실을 포함한 28개 부서가 모두 있고, 시작용에는 시작용 사용 건과 전표가 가리키는 4개 부서만 같은 값으로 담았어요.
전체 4행 가운데 앞 4행이에요.
| dept_code | dept_name |
|---|---|
| ER | 응급실 |
| CVC | 심혈관센터 |
| W71 | 71병동 |
| OPD | 외래 처치실 |
4행 전부를 JSON 파일 하나로 받을 수 있어요.
같은 형식으로 만든 28행이에요. 위 데이터가 이 안에 그대로 들어 있어요(한 줄에 한 행, gzip 압축).
미리보기와 내려받는 데이터 모두 이 형식(JSON Schema)을 따라요.
{
"type": "object",
"description": "부서 하나. 키는 dept_code.",
"additionalProperties": false,
"required": [
"dept_code",
"dept_name"
],
"properties": {
"dept_code": {
"type": "string",
"pattern": "^[A-Z0-9]{2,4}$",
"description": "부서 코드. 이 표의 키예요."
},
"dept_name": {
"type": "string",
"description": "부서 이름(예: 응급실, 71병동)."
}
}
}진료재료 품목표예요. 한 행이 품목 하나이고 item_code 가 키예요. 품목은 item_name 과 spec 두 칸으로 가르고, 이름이 같고 규격만 다른 품목(봉합사 흡수성 2-0 과 흡수성 3-0, 정맥카테터 20G 와 22G 등)이 따로 있어요. 규격이 다른데 단가가 같은 품목도 있어요. unit_cost 는 한 단위(unit)의 원가 단가로 부가세가 없는 원 단위 정수이고, 이 데이터 기간 동안 바뀌지 않았어요. 큰 데이터에는 54개 품목이 모두 있고, 시작용에는 시작용 사용 건과 차감 줄이 가리키는 23개 품목만 같은 값으로 담았어요.
전체 23행 가운데 앞 5행이에요.
| item_code | item_name | spec | unit | unit_cost |
|---|---|---|---|---|
| MS100148 | 봉합사 | 흡수성 2-0 | 개 | 6,800 |
| MS100185 | 봉합사 | 흡수성 3-0 | 개 | 6,800 |
| MS100259 | 거즈 | 10x10 4겹 | 매 | 45 |
| MS100296 | 거즈 | 10x10 8겹 | 매 | 70 |
| MS100333 | 거즈 | 7.5x7.5 8겹 | 매 | 50 |
23행 전부를 JSON 파일 하나로 받을 수 있어요.
같은 형식으로 만든 54행이에요. 위 데이터가 이 안에 그대로 들어 있어요(한 줄에 한 행, gzip 압축).
미리보기와 내려받는 데이터 모두 이 형식(JSON Schema)을 따라요.
{
"type": "object",
"description": "진료재료 품목 하나. 키는 item_code.",
"additionalProperties": false,
"required": [
"item_code",
"item_name",
"spec",
"unit",
"unit_cost"
],
"properties": {
"item_code": {
"type": "string",
"pattern": "^MS[0-9]{6}$",
"description": "품목 코드. 이 표의 키예요."
},
"item_name": {
"type": "string",
"description": "품목 이름. 같은 이름에 규격만 다른 품목이 따로 있어요."
},
"spec": {
"type": "string",
"description": "규격. item_name 과 이 칸 두 개로 품목을 갈라요."
},
"unit": {
"type": "string",
"enum": [
"개",
"매",
"포",
"세트",
"켤레",
"롤"
],
"description": "수량을 세는 단위. material_usage.qty·stock_issues.qty 가 이 단위예요."
},
"unit_cost": {
"type": "integer",
"minimum": 1,
"description": "한 단위의 원가 단가(원, 정수, 부가세 없음). 이 데이터 기간(2026년 8~10월) 동안 바뀌지 않았어요."
}
}
}임상 시스템에 남은 진료재료 사용 기록이에요. 한 행이 사용 한 건이고 usage_id 가 키예요. dept_code 는 재료를 쓴 부서로 departments.dept_code 를, item_code 는 쓴 품목으로 items.item_code 를 가리켜요. qty 는 그 품목 단위로 센 사용 수량이에요. used_at 은 임상 시스템에 사용이 기록된 시각이고, stock_issues.issued_at·cost_vouchers.posted_at 과 같은 병원 서버 시계의 한국 시간(+09:00)이에요. 이 데이터에는 2026년 11월 6일 09:00 까지 세 시스템에 남은 기록만 들어 있어요. 10월 31일 밤늦게 쓴 건처럼 차감·전표가 다음 달로 넘어가는 사용 건도 있어요. 큰 데이터는 2026년 8월 1일부터 10월 31일까지 28개 부서의 사용 17,580건이고, 시작용은 그 가운데 응급실·심혈관센터·71병동이 10월 30~31일에 쓴 33건 전부를 같은 ID·같은 값으로 잘라 낸 것이에요.
전체 33행 가운데 앞 5행이에요.
| usage_id | dept_code | item_code | qty | used_at |
|---|---|---|---|---|
| U-1030-0021 | W71 | MS100925 | 1 | 2026-10-30T05:15:04+09:00 |
| U-1030-0023 | ER | MS100333 | 2 | 2026-10-30T06:27:40+09:00 |
| U-1030-0028 | ER | MS100777 | 4 | 2026-10-30T06:43:42+09:00 |
| U-1030-0056 | W71 | MS100925 | 1 | 2026-10-30T09:55:19+09:00 |
| U-1030-0082 | CVC | MS101591 | 1 | 2026-10-30T10:56:25+09:00 |
33행 전부를 JSON 파일 하나로 받을 수 있어요.
같은 형식으로 만든 17,580행이에요. 위 데이터가 이 안에 그대로 들어 있어요(한 줄에 한 행, gzip 압축).
미리보기와 내려받는 데이터 모두 이 형식(JSON Schema)을 따라요.
{
"type": "object",
"description": "진료재료 사용 한 건. 키는 usage_id.",
"additionalProperties": false,
"required": [
"usage_id",
"dept_code",
"item_code",
"qty",
"used_at"
],
"properties": {
"usage_id": {
"type": "string",
"pattern": "^U-[0-9]{4}-[0-9]{4}$",
"description": "사용 건 번호(U-월일-그날 순번). 이 표의 키예요."
},
"dept_code": {
"type": "string",
"description": "재료를 쓴 부서. departments.dept_code 를 가리켜요."
},
"item_code": {
"type": "string",
"description": "쓴 품목. items.item_code 를 가리켜요."
},
"qty": {
"type": "integer",
"minimum": 1,
"description": "사용 수량. 단위는 items.unit 이에요."
},
"used_at": {
"type": "string",
"format": "date-time",
"description": "임상 시스템에 사용이 기록된 시각. 병원 서버 시계의 한국 시간(+09:00) ISO 8601, 초 단위."
}
}
}물류(ERP)에 남은 재고 차감 기록이에요. 한 행이 차감 한 줄이고 issue_id 가 키예요. usage_id 는 이 차감을 일으킨 사용 건으로 material_usage.usage_id 를 가리키고, item_code 는 재고에서 실제로 뺀 품목으로 items.item_code 를 가리켜요. 한 사용 건은 로트(lot_no)마다 나뉘어 여러 줄로 차감될 수 있어요. qty 는 그 줄에서 뺀 수량이고, issued_at 은 물류에서 차감을 처리한 시각(병원 서버 시계, +09:00)이에요. 차감 줄이 아예 없는 사용 건, 사용보다 적게 뺀 건, 이름은 같고 규격이 다른 품목으로 뺀 건, 로트 둘로 나눠 뺀 건, 쓴 지 며칠 뒤에야 뺀 건, 10월 31일에 쓰고 11월 1일 0시를 넘겨 뺀 건이 들어 있어요. 큰 데이터에는 17,986줄이 있고, 시작용에는 시작용 사용 건을 가리키는 34줄이 빠짐없이 같은 값으로 들어 있어요.
전체 34행 가운데 앞 5행이에요.
| issue_id | usage_id | item_code | lot_no | qty | issued_at |
|---|---|---|---|---|---|
| SI-3117636 | U-1030-0021 | MS100925 | L26055838 | 1 | 2026-10-30T05:20:38+09:00 |
| SI-3117640 | U-1030-0028 | MS100777 | L26034920 | 4 | 2026-10-30T06:49:10+09:00 |
| SI-3117673 | U-1030-0056 | MS100925 | L25122153 | 1 | 2026-10-30T10:05:47+09:00 |
| SI-3117697 | U-1030-0082 | MS101591 | L25110891 | 1 | 2026-10-30T11:06:24+09:00 |
| SI-3117710 | U-1030-0097 | MS101591 | L25109746 | 1 | 2026-10-30T11:43:12+09:00 |
34행 전부를 JSON 파일 하나로 받을 수 있어요.
같은 형식으로 만든 17,986행이에요. 위 데이터가 이 안에 그대로 들어 있어요(한 줄에 한 행, gzip 압축).
미리보기와 내려받는 데이터 모두 이 형식(JSON Schema)을 따라요.
{
"type": "object",
"description": "재고 차감 한 줄. 키는 issue_id.",
"additionalProperties": false,
"required": [
"issue_id",
"usage_id",
"item_code",
"lot_no",
"qty",
"issued_at"
],
"properties": {
"issue_id": {
"type": "string",
"pattern": "^SI-[0-9]{7}$",
"description": "차감 줄 번호. 이 표의 키예요."
},
"usage_id": {
"type": "string",
"description": "이 차감을 일으킨 사용 건. material_usage.usage_id 를 가리켜요. 한 사용 건에 여러 줄이 있을 수 있어요."
},
"item_code": {
"type": "string",
"description": "재고에서 실제로 뺀 품목. items.item_code 를 가리켜요."
},
"lot_no": {
"type": "string",
"description": "뺀 재고의 로트 번호. 한 사용 건 안에서 줄마다 달라요."
},
"qty": {
"type": "integer",
"minimum": 1,
"description": "이 줄에서 뺀 수량. 단위는 items.unit 이에요."
},
"issued_at": {
"type": "string",
"format": "date-time",
"description": "물류에서 차감을 처리한 시각. used_at 과 같은 병원 서버 시계의 한국 시간(+09:00) ISO 8601, 초 단위."
}
}
}회계(ERP)에 남은 진료재료 원가 전표예요. 한 행이 전표 한 장이고 voucher_no 가 키예요. usage_id 는 material_usage.usage_id 를 가리키고, 한 사용 건에 전표는 많아야 한 장이에요. dept_code 는 원가를 잡은 부서로 departments.dept_code 를 가리키고, amount 는 전표에 적힌 원가 금액(원, 정수, 부가세 없음)이에요. posted_at 은 회계에서 전표를 기표한 시각(병원 서버 시계, +09:00)이에요. 차감은 됐는데 전표가 없는 사용 건, 며칠 뒤에야 기표된 전표, 사용 부서와 다른 부서로 잡힌 전표, 금액이 사용 수량 × 품목 단가와 다른 전표가 들어 있어요. 큰 데이터에는 17,512장이 있고, 시작용에는 시작용 사용 건을 가리키는 31장이 빠짐없이 같은 값으로 들어 있어요.
전체 31행 가운데 앞 5행이에요.
| voucher_no | usage_id | dept_code | amount | posted_at |
|---|---|---|---|---|
| JV-8217167 | U-1030-0028 | OPD | 35,600 | 2026-10-30T07:40:56+09:00 |
| JV-8217200 | U-1030-0056 | W71 | 4,730 | 2026-10-30T10:40:32+09:00 |
| JV-8217219 | U-1030-0097 | CVC | 39,000 | 2026-10-30T11:52:03+09:00 |
| JV-8217221 | U-1030-0082 | CVC | 39,000 | 2026-10-30T11:57:38+09:00 |
| JV-8217236 | U-1030-0101 | ER | 85 | 2026-10-30T12:26:40+09:00 |
31행 전부를 JSON 파일 하나로 받을 수 있어요.
같은 형식으로 만든 17,512행이에요. 위 데이터가 이 안에 그대로 들어 있어요(한 줄에 한 행, gzip 압축).
미리보기와 내려받는 데이터 모두 이 형식(JSON Schema)을 따라요.
{
"type": "object",
"description": "진료재료 원가 전표 한 장. 키는 voucher_no.",
"additionalProperties": false,
"required": [
"voucher_no",
"usage_id",
"dept_code",
"amount",
"posted_at"
],
"properties": {
"voucher_no": {
"type": "string",
"pattern": "^JV-[0-9]{7}$",
"description": "전표 번호. 이 표의 키예요."
},
"usage_id": {
"type": "string",
"description": "이 전표가 원가를 잡은 사용 건. material_usage.usage_id 를 가리켜요. 한 사용 건에 전표는 많아야 한 장이에요."
},
"dept_code": {
"type": "string",
"description": "원가를 잡은 부서. departments.dept_code 를 가리켜요."
},
"amount": {
"type": "integer",
"minimum": 1,
"description": "전표에 적힌 원가 금액(원, 정수, 부가세 없음)."
},
"posted_at": {
"type": "string",
"format": "date-time",
"description": "회계에서 전표를 기표한 시각. used_at·issued_at 과 같은 병원 서버 시계의 한국 시간(+09:00) ISO 8601, 초 단위."
}
}
}