Skip to content

병원

엔드포인트

전국 병원·의원을 하나의 id 로 다루는 통합 API 입니다.

병원 정보는 기관마다 흩어져 있습니다 — 건강보험심사평가원(HIRA) 은 병상·장비·진료과목 같은 기관 제원을, 국립중앙의료원(NMC) 은 진료시간과 응급실 운영 여부를 갖고 있는데, 두 기관은 코드 체계도 식별자도 다릅니다. 이 API 는 그 둘을 병원 단위로 매칭해 합친 것이라, 쓰는 쪽은 병원 하나를 가리키는 id 하나만 알면 됩니다.

  • 검색 조건에 넣을 코드(진료과목·종별·장비 등)는 참조 데이터 에서 받습니다.
  • 말로 물어 조건을 얻고 싶다면 AI 검색 을 쓰세요.
  • 합치기 전의 원본이 필요하면 정부데이터 원본 을 보세요. 대부분은 볼 일이 없습니다.

TIP

값이 없는(null) 필드는 응답에서 생략됩니다.

병원 검색

GET
/healthcare/hospitals

지역·종별·진료과목·병원명으로 검색한다. 응급실 운영, 달빛어린이병원 필터도 있다.

Request

🔒 Bearer 인증 필요 · 인증 방법
GET/healthcare/hospitals

Query Parameters

NameTypeRequiredConstraintsDescription
regionstringoptional시군구 코드. /address/regions 참조
categorystringoptional종별 코드. 쉼표로 여러 개(OR). /healthcare/meta/classes 참조.
tierstringoptional병원 등급. TIER1(의원급) | TIER2(병원급) | TIER3(상급종합) | NURSING | MENTAL. 쉼표로 여러 개(OR). **비워두면 NURSING·MENTAL 이 빠진다** — 장기 입원 시설이라 외래 검색에 섞이면 방해다. `tier=NURSING` 으로 지정하면 나온다. /healthcare/meta/tiers 참조.
subjectstringoptional진료과목 코드. 쉼표로 여러 개(OR). /healthcare/meta/subjects 참조. 진료 분야 그룹(치과·한방 등)은 /healthcare/meta/subject-groups 에서 받아 **코드로 펼쳐서** 넘긴다. 이 API 는 그룹을 모른다.
specialiststringoptional전문의 있는 과목 코드. 쉼표로 여러 개(OR). subject 와 같은 진료과목 코드지만 **그 과목 전문의를 실제로 보유한** 병원만 건다(subject 는 신고만 하면 걸림). 옵션 목록은 /healthcare/meta/subjects 의 specialist=true 인 과목.
namestringoptional병원명 (부분 일치)
emergencystringoptional응급실 운영 병원만
babystringoptional달빛어린이병원만 (야간·휴일 소아진료)
assessmentstringoptional건강보험심사평가원 적정성평가 **항목 코드**(원본 asmGrd 번호). 그 항목에서 1등급(우수)인 병원. 쉼표로 여러 개(OR). 코드·분야 목록은 /healthcare/meta/assessments 참조 (예: 12=대장암, 01=급성기뇌졸중, 20=신생아중환자실). **병원급 이상만 의미가 있다** — 의원은 이 항목을 평가받지 않는다.
specialtystringoptional전문병원 지정분야 코드. 쉼표로 여러 개(OR). /healthcare/meta/specialties 참조.
specialstringoptional특수진료 코드. 쉼표로 여러 개(OR). /healthcare/meta/specials 참조.
equipmentstringoptional보유장비 코드. 쉼표로 여러 개(OR). /healthcare/meta/equipments 참조.
minLatnumberoptional지도 영역의 남서쪽 위도. **minLat·minLon·maxLat·maxLon 을 넷 다** 보내야 걸린다. 지도를 옮긴 자리에는 시군구 경계가 없어서 화면의 사각형이 그대로 조건이 된다.
minLonnumberoptional지도 영역의 남서쪽 경도
maxLatnumberoptional지도 영역의 북동쪽 위도
maxLonnumberoptional지도 영역의 북동쪽 경도
sortstringoptionalenum: default, distance · default default정렬 기준. - `default`(기본) 서울 → 경기 → 부산 → 인천 → 나머지, 같은 시도 안에서는 id 순 (병원명 키워드가 있으면 관련도가 먼저다) - `distance` 기준 좌표에서 가까운 순. **lat·lon 을 함께 보내야 한다** — 없으면 400 이다. **거리순은 스크롤 커서와 묶여 있다.** 정렬을 바꾸면 nextToken 을 버리고 처음부터 받아라.
latnumberoptional거리 계산 기준 위도. `sort=distance` 일 때만 쓴다. **1km 격자로 뭉개서 보내라.** 사람마다 좌표가 미세하게 달라 캐시가 통째로 빗나가는 걸 막는다 — 같은 동네면 같은 요청이 된다. 순위가 몇 칸 흔들리는 정도의 손해는 감수한다.
lonnumberoptional거리 계산 기준 경도. `sort=distance` 일 때만 쓴다(lat 설명 참고).
pagenumberoptionaldefault 1페이지 번호
sizenumberoptionalmin 1 · max 100 · default 20페이지 크기

Response

200

PageResponse

FieldTypeRequiredConstraintsDescription
itemsHospitalSummary[]required
pagenumberrequired현재 페이지 번호
sizenumberrequired페이지 크기
totalCountnumberrequired전체 항목 수
totalPagesnumberrequired전체 페이지 수

HospitalSummary

FieldTypeRequiredConstraintsDescription
idnumberrequired통합 병원 id
namestringrequired
categoryCodeoptional종별. 의원·종합병원·치과의원 …
codestringrequired
namestringrequired
tierCodeoptional병원 등급. TIER1(의원급) | TIER2(병원급) | TIER3(상급종합) | NURSING | MENTAL. 종별에서 유도한 값이다 — 의료법이 병상 수로 종별을 규정하므로 등급이 종별에 이미 들어 있다.
codestringrequired
namestringrequired
specialtyCodeoptional전문병원 지정분야(관절·척추·심장 …). 보건복지부 지정이라 병원당 최대 1건이다.
codestringrequired
namestringrequired
locationLocationrequired
stationstringoptional가장 가까운 지하철역. 교통정보의 첫 지하철 항목에서 가져온다. **거리 기준으로 고른 값이 아니다.** 정확한 거리·노선 정보는 상세의 transport 를 참고한다.
stationLinestringoptionalstation 이 어느 노선인가. **같은 항목(subway[0])에서 뽑으므로** 역과 어긋나지 않는다. 원문 그대로다 — "2호선" 뿐 아니라 "1,4호선", "인천지하철1호선" 처럼 오기도 한다. 노선색·표기 정규화는 화면이 한다.
addressstringoptional
postNostringoptional
regionHospitalRegionoptional
codestringrequired
namestringrequired
sidoCodeoptional시도
codestringrequired
namestringrequired
emdongstringoptional읍면동. 코드가 없어 이름 그대로다.
latnumberoptional
lonnumberoptional
telstringoptional
emergencybooleanrequired응급실 운영
babybooleanrequired달빛어린이병원 (야간·휴일 소아진료)
distancenumberoptional기준 좌표로부터의 **직선거리**(m, 반올림). 도로 거리도 소요시간도 아니다. **`sort=distance` 로 조회했을 때만 있다** — 기본 정렬에는 기준 좌표가 없어 잴 것이 없다.
{
  "items": [
    {
      "id": 0,
      "name": "string",
      "category": {
        "code": "TERTIARY",
        "name": "상급종합병원"
      },
      "tier": {
        "code": "TERTIARY",
        "name": "상급종합병원"
      },
      "specialty": {
        "code": "TERTIARY",
        "name": "상급종합병원"
      },
      "location": {
        "station": "혜화역",
        "stationLine": "2호선",
        "address": "string",
        "postNo": "string",
        "region": {
          "code": "11001",
          "name": "강남구",
          "sido": {
            "code": "TERTIARY",
            "name": "상급종합병원"
          },
          "emdong": "string"
        },
        "lat": 37.4923,
        "lon": 127.0292
      },
      "tel": "string",
      "emergency": true,
      "baby": true,
      "distance": 820
    }
  ],
  "page": 0,
  "size": 0,
  "totalCount": 0,
  "totalPages": 0
}

Playground

Server
Authorization
Variables
Key
Value

Samples

Powered by VitePress OpenAPI

병원 무한 스크롤

GET
/healthcare/hospitals/scroll

검색(GET /healthcare/hospitals)과 필터는 같고 페이징 방식만 다르다. 페이지 번호 대신 nextToken 으로 이어 받는다 — 무한 스크롤 화면용이다.

첫 호출은 nextToken 없이 필터만 보낸다. 응답의 nextToken 을 다음 호출에 그대로 실어 보내면 이어진다. nextToken 이 없으면 마지막 페이지다 — 그만 부른다.

Request

🔒 Bearer 인증 필요 · 인증 방법
GET/healthcare/hospitals/scroll

Query Parameters

NameTypeRequiredConstraintsDescription
regionstringoptional시군구 코드. /address/regions 참조
categorystringoptional종별 코드. 쉼표로 여러 개(OR). /healthcare/meta/classes 참조.
tierstringoptional병원 등급. TIER1(의원급) | TIER2(병원급) | TIER3(상급종합) | NURSING | MENTAL. 쉼표로 여러 개(OR). **비워두면 NURSING·MENTAL 이 빠진다** — 장기 입원 시설이라 외래 검색에 섞이면 방해다. `tier=NURSING` 으로 지정하면 나온다. /healthcare/meta/tiers 참조.
subjectstringoptional진료과목 코드. 쉼표로 여러 개(OR). /healthcare/meta/subjects 참조. 진료 분야 그룹(치과·한방 등)은 /healthcare/meta/subject-groups 에서 받아 **코드로 펼쳐서** 넘긴다. 이 API 는 그룹을 모른다.
specialiststringoptional전문의 있는 과목 코드. 쉼표로 여러 개(OR). subject 와 같은 진료과목 코드지만 **그 과목 전문의를 실제로 보유한** 병원만 건다(subject 는 신고만 하면 걸림). 옵션 목록은 /healthcare/meta/subjects 의 specialist=true 인 과목.
namestringoptional병원명 (부분 일치)
emergencystringoptional응급실 운영 병원만
babystringoptional달빛어린이병원만 (야간·휴일 소아진료)
assessmentstringoptional건강보험심사평가원 적정성평가 **항목 코드**(원본 asmGrd 번호). 그 항목에서 1등급(우수)인 병원. 쉼표로 여러 개(OR). 코드·분야 목록은 /healthcare/meta/assessments 참조 (예: 12=대장암, 01=급성기뇌졸중, 20=신생아중환자실). **병원급 이상만 의미가 있다** — 의원은 이 항목을 평가받지 않는다.
specialtystringoptional전문병원 지정분야 코드. 쉼표로 여러 개(OR). /healthcare/meta/specialties 참조.
specialstringoptional특수진료 코드. 쉼표로 여러 개(OR). /healthcare/meta/specials 참조.
equipmentstringoptional보유장비 코드. 쉼표로 여러 개(OR). /healthcare/meta/equipments 참조.
minLatnumberoptional지도 영역의 남서쪽 위도. **minLat·minLon·maxLat·maxLon 을 넷 다** 보내야 걸린다. 지도를 옮긴 자리에는 시군구 경계가 없어서 화면의 사각형이 그대로 조건이 된다.
minLonnumberoptional지도 영역의 남서쪽 경도
maxLatnumberoptional지도 영역의 북동쪽 위도
maxLonnumberoptional지도 영역의 북동쪽 경도
sortstringoptionalenum: default, distance · default default정렬 기준. - `default`(기본) 서울 → 경기 → 부산 → 인천 → 나머지, 같은 시도 안에서는 id 순 (병원명 키워드가 있으면 관련도가 먼저다) - `distance` 기준 좌표에서 가까운 순. **lat·lon 을 함께 보내야 한다** — 없으면 400 이다. **거리순은 스크롤 커서와 묶여 있다.** 정렬을 바꾸면 nextToken 을 버리고 처음부터 받아라.
latnumberoptional거리 계산 기준 위도. `sort=distance` 일 때만 쓴다. **1km 격자로 뭉개서 보내라.** 사람마다 좌표가 미세하게 달라 캐시가 통째로 빗나가는 걸 막는다 — 같은 동네면 같은 요청이 된다. 순위가 몇 칸 흔들리는 정도의 손해는 감수한다.
lonnumberoptional거리 계산 기준 경도. `sort=distance` 일 때만 쓴다(lat 설명 참고).
nextTokenstringoptional이어받기 커서. **직전 응답의 nextToken 을 그대로** 실어 보낸다. 비우면 처음부터 조회한다. 불투명 문자열이므로 해석하지 않는다.
sizenumberoptionalmin 1 · max 100 · default 20한 번에 가져올 개수
dbstringoptional**검증용 파라미터.** 기본 조회 경로 대신 DB 로 직접 조회한다. 일반적인 사용에서는 지정하지 않는다. **nextToken 은 조회 경로마다 형식이 다르다.** 스크롤 도중 이 값을 바꾸면 커서가 맞지 않으므로, 한 스크롤 세션에서는 고정한다.

Response

200

ScrollResponse

FieldTypeRequiredConstraintsDescription
itemsHospitalSummary[]required
nextTokenstringoptional다음 스크롤 커서. 다음 호출에 그대로 실어 보내면 이 지점 다음부터 이어 준다. **없으면 다음 페이지가 없다는 뜻이다** — 스크롤을 멈춘다. 불투명 문자열이므로 해석하지 않는다.

HospitalSummary

FieldTypeRequiredConstraintsDescription
idnumberrequired통합 병원 id
namestringrequired
categoryCodeoptional종별. 의원·종합병원·치과의원 …
codestringrequired
namestringrequired
tierCodeoptional병원 등급. TIER1(의원급) | TIER2(병원급) | TIER3(상급종합) | NURSING | MENTAL. 종별에서 유도한 값이다 — 의료법이 병상 수로 종별을 규정하므로 등급이 종별에 이미 들어 있다.
codestringrequired
namestringrequired
specialtyCodeoptional전문병원 지정분야(관절·척추·심장 …). 보건복지부 지정이라 병원당 최대 1건이다.
codestringrequired
namestringrequired
locationLocationrequired
stationstringoptional가장 가까운 지하철역. 교통정보의 첫 지하철 항목에서 가져온다. **거리 기준으로 고른 값이 아니다.** 정확한 거리·노선 정보는 상세의 transport 를 참고한다.
stationLinestringoptionalstation 이 어느 노선인가. **같은 항목(subway[0])에서 뽑으므로** 역과 어긋나지 않는다. 원문 그대로다 — "2호선" 뿐 아니라 "1,4호선", "인천지하철1호선" 처럼 오기도 한다. 노선색·표기 정규화는 화면이 한다.
addressstringoptional
postNostringoptional
regionHospitalRegionoptional
codestringrequired
namestringrequired
sidoCodeoptional시도
codestringrequired
namestringrequired
emdongstringoptional읍면동. 코드가 없어 이름 그대로다.
latnumberoptional
lonnumberoptional
telstringoptional
emergencybooleanrequired응급실 운영
babybooleanrequired달빛어린이병원 (야간·휴일 소아진료)
distancenumberoptional기준 좌표로부터의 **직선거리**(m, 반올림). 도로 거리도 소요시간도 아니다. **`sort=distance` 로 조회했을 때만 있다** — 기본 정렬에는 기준 좌표가 없어 잴 것이 없다.
{
  "items": [
    {
      "id": 0,
      "name": "string",
      "category": {
        "code": "TERTIARY",
        "name": "상급종합병원"
      },
      "tier": {
        "code": "TERTIARY",
        "name": "상급종합병원"
      },
      "specialty": {
        "code": "TERTIARY",
        "name": "상급종합병원"
      },
      "location": {
        "station": "혜화역",
        "stationLine": "2호선",
        "address": "string",
        "postNo": "string",
        "region": {
          "code": "11001",
          "name": "강남구",
          "sido": {
            "code": "TERTIARY",
            "name": "상급종합병원"
          },
          "emdong": "string"
        },
        "lat": 37.4923,
        "lon": 127.0292
      },
      "tel": "string",
      "emergency": true,
      "baby": true,
      "distance": 820
    }
  ],
  "nextToken": "string"
}

Playground

Server
Authorization
Variables
Key
Value

Samples

Powered by VitePress OpenAPI

병원 상세

GET
/healthcare/hospitals/{id}

진료과목·진료시간·인력·병상·장비·역량을 함께 반환한다. 진료시간은 kind 로 갈린다 — general(일반)과 baby(달빛어린이)는 시간대가 다르다.

Request

🔒 Bearer 인증 필요 · 인증 방법
GET/healthcare/hospitals/{id}

Path Parameters

NameTypeRequiredConstraintsDescription
idnumberrequired통합 병원 id

Response

200

HospitalDetail

FieldTypeRequiredConstraintsDescription
idnumberrequired통합 병원 id
namestringrequired
categoryCodeoptional종별. 의원·종합병원·치과의원 …
tierCodeoptional병원 등급. TIER1(의원급) | TIER2(병원급) | TIER3(상급종합) | NURSING | MENTAL. 종별에서 유도한 값이다 — 의료법이 병상 수로 종별을 규정하므로 등급이 종별에 이미 들어 있다.
specialtyCodeoptional전문병원 지정분야(관절·척추·심장 …). 보건복지부 지정이라 병원당 최대 1건이다.
locationLocationrequired
telstringoptional
emergencybooleanrequired응급실 운영
babybooleanrequired달빛어린이병원 (야간·휴일 소아진료)
distancenumberoptional기준 좌표로부터의 **직선거리**(m, 반올림). 도로 거리도 소요시간도 아니다. **`sort=distance` 로 조회했을 때만 있다** — 기본 정렬에는 기준 좌표가 없어 잴 것이 없다.
corpNamestringoptional법인격 + 법인명. `name` 은 원본에서 이 표기를 뗀 값이다. 어느 재단·학원 소속인지는 대학병원 계열을 알아보는 단서라 버리지 않고 따로 준다. **법인 표기가 없으면 필드 자체가 없다**(전체의 98.8%).
legalNamestringoptional원본이 제공한 원문 이름. **`name` 과 다를 때만 온다.** 표시용이 아니라 서류·간판 표기가 필요하거나 원문과 대조할 때 쓴다.
sourcesSourcesrequired
homepagestringoptional
establishedAtstringoptional개설일자 (YYYYMMDD)
introstringoptional병원 소개·진료 안내
noticestringoptional기타 안내. **구조화된 진료시간이 못 담는 예외**가 자유 텍스트로 온다 — "접수시간: 평일 08:30~17:00", "신정·구정·추석 당일 휴진" 등.
directionsstringoptional찾아오는 길. 병원이 쓴 문장이다. transport 와 별개다
transportTransportrequired교통편. 없으면 빈 목록이 담긴 객체다
parkingParkingoptional
subjectsSubject[]required
hoursHours[]required
staffStaffoptional
bedsBedsoptional규모기관만 있다
equipmentsEquipment[]required
capabilitiesCapability[]required
assessmentAssessmentoptional심평원 병원평가. **HIRA 연동(ykiho)이 있고 평가대상인 병원만 온다** — 없으면 필드 자체가 없다.

Code

FieldTypeRequiredConstraintsDescription
codestringrequired
namestringrequired

Location

FieldTypeRequiredConstraintsDescription
stationstringoptional가장 가까운 지하철역. 교통정보의 첫 지하철 항목에서 가져온다. **거리 기준으로 고른 값이 아니다.** 정확한 거리·노선 정보는 상세의 transport 를 참고한다.
stationLinestringoptionalstation 이 어느 노선인가. **같은 항목(subway[0])에서 뽑으므로** 역과 어긋나지 않는다. 원문 그대로다 — "2호선" 뿐 아니라 "1,4호선", "인천지하철1호선" 처럼 오기도 한다. 노선색·표기 정규화는 화면이 한다.
addressstringoptional
postNostringoptional
regionHospitalRegionoptional
codestringrequired
namestringrequired
sidoCodeoptional시도
codestringrequired
namestringrequired
emdongstringoptional읍면동. 코드가 없어 이름 그대로다.
latnumberoptional
lonnumberoptional

Sources

FieldTypeRequiredConstraintsDescription
ykihostringoptionalHIRA 요양기호. 원본을 직접 확인할 때만 쓴다.
hpidstringoptionalNMC 기관ID

Transport

FieldTypeRequiredConstraintsDescription
subwayTransportRoute[]required
kindNamestringoptional교통편 원문. 화면 표기에 쓴다
linestringoptional노선. 여러 노선이 한 문자열로 오기도 한다
arrivalstringoptional하차지점
dirstringoptional이름은 방향이지만 실제로는 이용 안내가 온다
distancestringoptional거리 **또는 소요시간**. 표기가 일정하지 않아 계산에 쓰지 않는다
notestringoptional
busTransportRoute[]required시내·마을·시외/고속버스가 모두 들어온다. 구분은 kindName
kindNamestringoptional교통편 원문. 화면 표기에 쓴다
linestringoptional노선. 여러 노선이 한 문자열로 오기도 한다
arrivalstringoptional하차지점
dirstringoptional이름은 방향이지만 실제로는 이용 안내가 온다
distancestringoptional거리 **또는 소요시간**. 표기가 일정하지 않아 계산에 쓰지 않는다
notestringoptional
etcTransportRoute[]required자가용·기차·기타. 대중교통이 아닌 것도 있다
kindNamestringoptional교통편 원문. 화면 표기에 쓴다
linestringoptional노선. 여러 노선이 한 문자열로 오기도 한다
arrivalstringoptional하차지점
dirstringoptional이름은 방향이지만 실제로는 이용 안내가 온다
distancestringoptional거리 **또는 소요시간**. 표기가 일정하지 않아 계산에 쓰지 않는다
notestringoptional

Parking

FieldTypeRequiredConstraintsDescription
capacitynumberoptional주차 가능대수
paidbooleanoptional유료 여부
notestringoptional

Subject

FieldTypeRequiredConstraintsDescription
codestringrequired
namestringrequired
declaredbooleanrequired신고한 과목인가. **진료과목** 판정 기준이다.
doctorCountnumberoptional과목별 의사수. **겸직이 중복 계산되므로 합산하지 않는다** — 총원은 staff.doctorTotal 이다.
specialistCountnumberoptional과목별 전문의수. 0보다 크면 **표시과목**이다. 상세 수집이 끝난 병원만 값이 있다.

Hours

FieldTypeRequiredConstraintsDescription
kindstringrequiredgeneral(일반 진료) | baby(달빛어린이). **시간대가 다르다** — 달빛은 야간에 소아만 받는다.
daynumberrequired1~7 = 월~일, 8 = 공휴일
openstringoptional
closestringoptional
breakStartstringoptional
breakEndstringoptional

Staff

FieldTypeRequiredConstraintsDescription
doctorTotalnumberoptional총 의사수. 중복 없는 실제 인원이다.
specialistnumberoptional
residentnumberoptional
internnumberoptional
generalDoctornumberoptional
dentistnumberoptional
orientalnumberoptional
midwifenumberoptional

Beds

FieldTypeRequiredConstraintsDescription
totalnumberoptional허가 병상수
standardnumberoptional
highernumberoptional
icunumberoptional중환자실
emergencynumberoptional응급실 병상
operatingRoomnumberoptional
deliverynumberoptional
neonatalnumberoptional
isolationnumberoptional음압 격리
psyOpennumberoptional
psyClosednumberoptional

Equipment

FieldTypeRequiredConstraintsDescription
codestringrequired
namestringrequired
countnumberoptional보유 대수

Capability

FieldTypeRequiredConstraintsDescription
typestringrequiredsevere(중증처치) | specialty(전문병원) | special(특수진료)
codestringrequired
namestringoptional

Assessment

FieldTypeRequiredConstraintsDescription
groupsAssessmentGroup[]required그룹별 평가 결과. 심평원 홈페이지 노출 순서다. **항목이 하나라도 있는 그룹만 온다.**
codestringrequired
namestringrequired
itemsAssessmentItem[]required
codestringrequired심평원 평가항목 번호
namestringrequired항목명. 요청 언어(Accept-Language)로 온다. 번역이 없으면 한국어로 폴백한다. **한국어 외 언어는 표시용 번역이다** — 원본(심평원)은 한국어만 제공한다.
gradestringrequired등급. 원본 값을 그대로 전달한다. **1 이 가장 좋고 5 가 가장 나쁘다.** '등급제외' 는 평가는 했으나 등급을 매기지 않은 항목이다(평가대상이 아닌 항목은 목록에 포함되지 않는다). **천식(code='16')은 표기가 다르다** — 1등급을 '양호', 등급제외를 '0' 으로 준다. 이 값을 숫자로 파싱해 정렬하면 안 되며, 항목 간 비교에는 normalized 를 사용한다.
normalizedobjectrequired등급을 항목 간 비교 가능하게 옮긴 값. 1~5 또는 'X'(등급대상 제외). 천식의 '양호'→1, '0'→'X' 가 여기서 흡수된다.
{
  "id": 0,
  "name": "string",
  "category": {
    "code": "TERTIARY",
    "name": "상급종합병원"
  },
  "tier": {
    "code": "TERTIARY",
    "name": "상급종합병원"
  },
  "specialty": {
    "code": "TERTIARY",
    "name": "상급종합병원"
  },
  "location": {
    "station": "혜화역",
    "stationLine": "2호선",
    "address": "string",
    "postNo": "string",
    "region": {
      "code": "11001",
      "name": "강남구",
      "sido": {
        "code": "TERTIARY",
        "name": "상급종합병원"
      },
      "emdong": "string"
    },
    "lat": 37.4923,
    "lon": 127.0292
  },
  "tel": "string",
  "emergency": true,
  "baby": true,
  "distance": 820,
  "corpName": "의료법인 일맥의료재단",
  "legalName": "(의)일맥의료재단 강동더서울의원",
  "sources": {
    "ykiho": "string",
    "hpid": "string"
  },
  "homepage": "string",
  "establishedAt": "string",
  "intro": "string",
  "notice": "string",
  "directions": "string",
  "transport": {
    "subway": [
      {
        "kindName": "시내버스",
        "line": "36,39 번",
        "arrival": "기장시장or부산은행앞",
        "dir": "마을버스11번 or 택시이용",
        "distance": "5분~10분 소요",
        "note": "병원 셔틀버스 이용"
      }
    ],
    "bus": [
      {
        "kindName": "시내버스",
        "line": "36,39 번",
        "arrival": "기장시장or부산은행앞",
        "dir": "마을버스11번 or 택시이용",
        "distance": "5분~10분 소요",
        "note": "병원 셔틀버스 이용"
      }
    ],
    "etc": [
      {
        "kindName": "시내버스",
        "line": "36,39 번",
        "arrival": "기장시장or부산은행앞",
        "dir": "마을버스11번 or 택시이용",
        "distance": "5분~10분 소요",
        "note": "병원 셔틀버스 이용"
      }
    ]
  },
  "parking": {
    "capacity": 0,
    "paid": true,
    "note": "string"
  },
  "subjects": [
    {
      "code": "IM",
      "name": "내과",
      "declared": true,
      "doctorCount": 0,
      "specialistCount": 0
    }
  ],
  "hours": [
    {
      "kind": "general",
      "day": 0,
      "open": "0900",
      "close": "1800",
      "breakStart": "string",
      "breakEnd": "string"
    }
  ],
  "staff": {
    "doctorTotal": 0,
    "specialist": 0,
    "resident": 0,
    "intern": 0,
    "generalDoctor": 0,
    "dentist": 0,
    "oriental": 0,
    "midwife": 0
  },
  "beds": {
    "total": 0,
    "standard": 0,
    "higher": 0,
    "icu": 0,
    "emergency": 0,
    "operatingRoom": 0,
    "delivery": 0,
    "neonatal": 0,
    "isolation": 0,
    "psyOpen": 0,
    "psyClosed": 0
  },
  "equipments": [
    {
      "code": "CT",
      "name": "CT",
      "count": 0
    }
  ],
  "capabilities": [
    {
      "type": "severe",
      "code": "BRAIN_HEMO",
      "name": "뇌출혈수술"
    }
  ],
  "assessment": {
    "groups": [
      {
        "code": "asm01",
        "name": "급성질환",
        "items": [
          {
            "code": "01",
            "name": "급성기뇌졸중",
            "grade": "1",
            "normalized": 1
          }
        ]
      }
    ]
  }
}

Playground

Server
Authorization
Variables
Key
Value

Samples

Powered by VitePress OpenAPI

근처의 유사한 병원

GET
/healthcare/hospitals/{id}/nearby

이 병원을 대체할 만한 근처 병원을 찾는다.

단순히 가까운 순이 아니다. 진료과목이 겹치는지를 가장 크게 보고, 전문병원 지정분야·종별·응급실 운영 여부로 보정한 뒤, 거리를 가중치로 곱해 정렬한다.

겹친 과목은 matchedSubjects 로 함께 반환하므로, 결과에 포함된 근거를 화면에 표시할 수 있다.

요양병원·정신병원은 기본적으로 제외되며, 기준 병원이 그 계열이면 같은 계열에서만 찾는다.

결과가 비어도 정상이다(좌표가 없는 병원이거나 반경 안에 후보가 없다). 병원 자체가 없을 때만 404 다.

Request

🔒 Bearer 인증 필요 · 인증 방법
GET/healthcare/hospitals/{id}/nearby

Path Parameters

NameTypeRequiredConstraintsDescription
idnumberrequired기준이 될 통합 병원 id

Query Parameters

NameTypeRequiredConstraintsDescription
radiusnumberoptionalmin 500 · max 100000반경(미터). **비워 두는 것을 권장한다** — 비우면 기준 병원의 등급에 따라 서버가 정한다. 등급마다 "근처" 의 크기가 다르다. 의원급은 걸어갈 거리에 여러 곳이 있지만, 상급종합은 전국 47곳이라 좁게 잡으면 결과가 비어 버린다. ``` 의원급 1km 병원급 5km 상급종합 80km 요양병원 15km 정신병원 30km ``` 값을 주면 그 값이 우선한다. **실제 적용된 반경은 응답의 radius 로 확인한다** — 요청값과 다를 수 있다.
sizenumberoptionalmin 1 · max 20 · default 6개수. 상세 하단 섹션은 기본 5개면 충분하다. **이어받기(커서)가 없다.** "더 보기" 가 필요하면 size 를 키워 다시 불러라 — 앞 항목이 중복되지만 클라이언트가 교체하면 된다. 채점 비용은 반경이 정하지 size 가 정하지 않아서, 커서를 두어도 서버가 아끼는 게 없다.

Response

200

HospitalNearbyResponse

FieldTypeRequiredConstraintsDescription
radiusnumberrequired이 결과를 만든 반경(m). 요청에 radius 가 있었으면 그 값, 없었으면 **기준 병원 등급으로 서버가 고른 값**이다. "반경 N 안에서" 같은 표기에는 요청값이 아니라 이 값을 쓴다.
itemsHospitalNearby[]required

HospitalNearby

FieldTypeRequiredConstraintsDescription
idnumberrequired통합 병원 id
namestringrequired
categoryCodeoptional종별. 의원·종합병원·치과의원 …
codestringrequired
namestringrequired
tierCodeoptional병원 등급. TIER1(의원급) | TIER2(병원급) | TIER3(상급종합) | NURSING | MENTAL. 종별에서 유도한 값이다 — 의료법이 병상 수로 종별을 규정하므로 등급이 종별에 이미 들어 있다.
codestringrequired
namestringrequired
specialtyCodeoptional전문병원 지정분야(관절·척추·심장 …). 보건복지부 지정이라 병원당 최대 1건이다.
codestringrequired
namestringrequired
locationLocationrequired
stationstringoptional가장 가까운 지하철역. 교통정보의 첫 지하철 항목에서 가져온다. **거리 기준으로 고른 값이 아니다.** 정확한 거리·노선 정보는 상세의 transport 를 참고한다.
stationLinestringoptionalstation 이 어느 노선인가. **같은 항목(subway[0])에서 뽑으므로** 역과 어긋나지 않는다. 원문 그대로다 — "2호선" 뿐 아니라 "1,4호선", "인천지하철1호선" 처럼 오기도 한다. 노선색·표기 정규화는 화면이 한다.
addressstringoptional
postNostringoptional
regionHospitalRegionoptional
codestringrequired
namestringrequired
sidoCodeoptional시도
codestringrequired
namestringrequired
emdongstringoptional읍면동. 코드가 없어 이름 그대로다.
latnumberoptional
lonnumberoptional
telstringoptional
emergencybooleanrequired응급실 운영
babybooleanrequired달빛어린이병원 (야간·휴일 소아진료)
distancenumberoptional기준 병원으로부터의 **직선거리(m)**. 도로 거리도 소요시간도 아니다 — "420m" 처럼 대략의 가까움을 보여주는 용도다.
matchedSubjectsMatchedSubject[]required기준 병원과 겹친 진료과목. 이 병원이 결과에 포함된 근거다. **빈 배열일 수 있다** — 겹치는 과목이 없어도 반경 안이면 거리순으로 채운다.
codestringrequired
namestringrequired
specialistbooleanrequired기준 병원과 이 병원이 **둘 다** 그 과 전문의를 보유하는가. 신고만 한 과목과 전문의가 실제 있는 과목은 대체재로서 무게가 다르다. 배지를 진하게 칠하는 식으로 쓰면 되고, 무시해도 그만이다.
{
  "radius": 1000,
  "items": [
    {
      "id": 0,
      "name": "string",
      "category": {
        "code": "TERTIARY",
        "name": "상급종합병원"
      },
      "tier": {
        "code": "TERTIARY",
        "name": "상급종합병원"
      },
      "specialty": {
        "code": "TERTIARY",
        "name": "상급종합병원"
      },
      "location": {
        "station": "혜화역",
        "stationLine": "2호선",
        "address": "string",
        "postNo": "string",
        "region": {
          "code": "11001",
          "name": "강남구",
          "sido": {
            "code": "TERTIARY",
            "name": "상급종합병원"
          },
          "emdong": "string"
        },
        "lat": 37.4923,
        "lon": 127.0292
      },
      "tel": "string",
      "emergency": true,
      "baby": true,
      "distance": 420,
      "matchedSubjects": [
        {
          "code": "ORTHO",
          "name": "정형외과",
          "specialist": true
        }
      ]
    }
  ]
}

Playground

Server
Authorization
Variables
Key
Value

Samples

Powered by VitePress OpenAPI

비급여 진료비

GET
/healthcare/hospitals/{id}/hira-npay

병원이 신고한 비급여 항목별 가격. 대분류 → 표준코드로 묶어 기관 전건을 한 번에 돌려준다(페이지 없음).

빈 categories 도 정상이다. 비급여를 신고한 기관은 전체의 약 4%(3,511곳)이며, 의원급(clCd=31)은 원본에 없어 항상 비어 있다. 404 는 병원 자체가 없을 때만 반환한다.

금액은 범위다. 한 표준코드에 원본 행이 여럿일 수 있어서다(체외충격파가 단순/복잡 두 행). 단일가면 minAmount 와 maxAmount 가 같으며, 이때는 범위로 표시하지 않는다.

한 기관에 수백 행이 될 수 있어(최다 1,048행) 병원 상세와 분리된 엔드포인트다.

Request

🔒 Bearer 인증 필요 · 인증 방법
GET/healthcare/hospitals/{id}/hira-npay

Path Parameters

NameTypeRequiredConstraintsDescription
idnumberrequired통합 병원 id

Response

200

HospitalNonPayment

FieldTypeRequiredConstraintsDescription
noticeUrlstringoptional병원이 신고한 비급여 안내 URL. 원본은 행마다 같은 값을 반복하지만 여기서는 한 번만 싣는다. 없는 기관이 있고, 의원급(크롤 출처)엔 아예 없다.
sourcestringrequiredhira, web, none, requestable, unavailable이 응답의 출처, 또는 왜 비었는지. - `hira` — 공개 API(병원급 이상). 금액이 행마다 단일값이라 `price.details` 가 찬다. - `web` — 심평원 홈페이지(의원급). 원본이 범위만 줘서 **`price.details` 가 빈다**. - `none` — 조회했으나 그 기관이 신고한 항목이 없다. 다시 요청해도 결과가 같다. - `requestable` — 공개 API 에 없고 아직 조회한 적도 없다. **갱신 요청(POST .../hira-npay/request)이 가능하다.** - `unavailable` — 요청할 수 없다. 심평원 식별자(ykiho)가 없는 병원은 조회 자체가 불가능하다.
requestStatusstringoptionalpending, running, failed갱신 요청의 진행 상태. `source=requestable` 일 때만 의미가 있으며, 요청한 적이 없으면 오지 않는다. **`done` 상태는 없다** — 처리가 끝나면 결과가 `source`(web 또는 none)로 나타난다.
categoriesNonPaymentCategory[]required대분류 묶음. 원본 게시 순서를 유지한다. **빈 배열도 정상이다** — 사유는 `source` 로 확인한다.

NonPaymentCategory

FieldTypeRequiredConstraintsDescription
namestringrequired중분류명
mdivCdstringoptional중분류코드(원본 npayMdivCd). 화면이 이 코드로 표시 그룹(검사·초음파·MRI…)을 묶는다. 코드마스터에 없는 항목이면 없다.
itemsNonPaymentItem[]required
codestringrequired표준 항목코드. 기관 간 비교는 이 코드로 한다. 코드가 없는 원본 행은 `sno:12` 형태로 혼자 선다.
namestringrequired항목명. 대분류는 category 에 있으므로 뒷부분만 담는다.
priceNonPaymentPricerequired
minnumberrequired최저가(원). **단일가면 max 와 같다** — 두 값이 같으면 범위로 표시하지 않는다.
maxnumberrequired최고가(원).
detailsNonPaymentPriceDetail[]required범위를 이룬 개별 행. **한 코드에 여러 행일 수 있다** — 예: 체외충격파(SZ0840000)의 단순·복잡. **빈 배열도 정상이다.** 원본이 범위만 제공하는 출처에서는 세부 내역이 없다 — 조회 실패를 뜻하지 않으며, 이 경우 범위(min·max)만 표시한다.
namestringoptional요양기관이 자체적으로 붙인 항목명. **기관마다 표기가 달라 기관 간 비교에는 쓰지 않는다** — 비교는 code 로 한다.
amountnumberrequired그 기관이 실제로 받는 금액(원).
{
  "noticeUrl": "string",
  "source": "hira",
  "requestStatus": "pending",
  "categories": [
    {
      "name": "MRI진단료",
      "mdivCd": "1032A",
      "items": [
        {
          "code": "480510000",
          "name": "근골격계 · 고관절",
          "price": {
            "min": 450000,
            "max": 600000,
            "details": [
              {
                "name": "Hip MRI",
                "amount": 450000
              }
            ]
          }
        }
      ]
    }
  ]
}

Playground

Server
Authorization
Variables
Key
Value

Samples

Powered by VitePress OpenAPI

비급여 갱신 요청

POST
/healthcare/hospitals/{id}/hira-npay/request

이 병원의 비급여를 받아오도록 요청만 한다. 즉시 반영되지 않는다 — 큐에 등록되고 배치가 처리한다.

source=requestable 일 때만 의미가 있다. 공개 API 에 이미 있으면(hira) 요청할 이유가 없고, 받아봤는데 없으면(none) 다시 요청해도 결과가 같다.

같은 병원을 여러 번 눌러도 큐에는 한 줄이다. 처리 결과는 다음 조회의 source 로 나타난다(web|none).

Request

🔒 Bearer 인증 필요 · 인증 방법
POST/healthcare/hospitals/{id}/hira-npay/request

Path Parameters

NameTypeRequiredConstraintsDescription
idnumberrequired통합 병원 id

Response

200

NonPaymentRequestResult

FieldTypeRequiredConstraintsDescription
resultstringrequired`queued` — 요청이 등록됐다. 처리가 끝나면 다음 조회부터 `source` 가 web 또는 none 으로 바뀐다.
{
  "result": "queued"
}

Playground

Server
Authorization
Variables
Key
Value

Samples

Powered by VitePress OpenAPI