ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

k-skill 实战:基于 k-skill-proxy 的 NHIS 长期疗养机构与健康体检机构检索技能解析

k-skill 实战:基于 k-skill-proxy 的 NHIS 长期疗养机构与健康体检机构检索技能解析 k-skill 实战基于 k-skill-proxy 的 NHIS 长期疗养机构与健康体检机构检索技能解析【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill本篇技术指南以 k-skill 仓库中的nhis-care-checkup-search技能为对象讲解如何通过k-skill-proxy代理路由零密钥调用韩国国民健康保险公团NHIS국민건강보험공단的长期疗养机构检索服务data.go.kr15059029与体检机构查找服务data.go.kr15154419并完整覆盖输入参数别名、curl 调用流程、上游 XML 响应字段摘要、失败模式与维护者验证方法。读完本文你将掌握在 Agent 场景下将公共数据门户 OpenAPI 封装为无密钥、可缓存、可排错的代理检索能力的完整实践方案。技能定位提醒本技能是机构信息查询工具不提供医疗判断、长期疗养等级评定也不保证特定机构的适宜性或服务质量。实际使用条件与预约可用性请直接向 NHIS 或相应机构核实。核心声明原文见 instruction.md。一、技能总览它做什么nhis-care-checkup-search是 k-skill 仓库中面向韩国医疗/养老场景的查询类技能其skill.json声明了两个 profileproxy经代理调用与lookup机构查询类别为healthcare语言区域ko-KR阶段v1详见 skill.json。该技能通过k-skill-proxy代理两条上游数据源上游服务data.go.kr 服务编号代理路由返回内容长期疗养机构检索服务장기요양기관 검색15059029GET /v1/nhis/long-term-care机构名、地址、电话、给付/服务种类等公开字段体检机构查找服务검진기관 찾기15154419GET /v1/nhis/checkup/{list,by-region,by-checkup-type,holiday}机构名、地址、电话、体检类型、运营日等公开字段代理路由在 packages/k-skill-proxy/README.md 中有明确登记并统一使用DATA_GO_KR_API_KEY环境变量作为上游认证凭据。何时使用When to use以下典型用户请求适合启用本技能서울 강남 장기요양기관 찾아줘帮我找首尔江南的长期疗养机构요양원 후보와 주소/전화번호 확인해줘确认疗养院候选及其地址/电话서울 강남 건강검진기관 찾아줘帮我找首尔江南的体检机构주말 검진 가능한 검진기관 찾아줘帮我找周末可体检的机构何时不使用When not to use医疗判断、长期疗养等级评定、特定机构推荐担保预约、申请、敏感医疗信息查询的自动化。二、前置条件与凭据要求前置条件Prerequisites可用的互联网连接可访问 hosted 或 self-hostk-skill-proxy的/v1/nhis/long-term-care与/v1/nhis/checkup/*路由。凭据要求Credential requirements用户侧无必填密钥——这是本技能的核心设计调用方不需要持有任何 API key密钥只存在于代理服务器端。环境变量用途说明KSKILL_PROXY_BASE_URL代理基地址仅在 self-host 或使用独立代理时设置留空时默认使用 hostedhttps://k-skill-proxy.nomadamas.orgDATA_GO_KR_API_KEY公共数据门户 OpenAPI 认证键只放在代理运营服务器环境且需在公共数据门户공공데이터포털为所需服务完成활용신청利用申请审批密钥签发与申请入口原文档链接信息长期疗养机构检索服务data.go.kr 服务15059029体检机构查找服务data.go.kr 服务15154419公共数据门户使用指南data.go.kr 的 공공데이터포털 이용 가이드代理 README 对这一点有更严格的补充说明DATA_GO_KR_API_KEY被nhis/*等大量路由共享包括household-waste、parking-lots、building-register/title、real-estate、nts-business、mfds-*、lh-notice、kr-whois/*等每个服务都需要在公共数据门户单独提交활용신청并获批准同一把密钥必须分别在15059029与15154419页面完成激活后对应路由才能成功。未激活状态下上游会返回 HTTP 401/403 或 data.go.kr 认证错误 XML代理会将其转换为统一的上游错误响应。三、输入参数详解Inputs原文档对两条路由的参数做了明确的别名映射设计代理源码 nhis-care.js 中的normalizeNhisLongTermCareQuery/normalizeNhisCheckupQuery函数正是这套别名机制的落地实现。长期疗养机构路由GET /v1/nhis/long-term-care参数别名均可使用含义约束qquery、name、adminNm机构名搜索词可选但四个条件至少给一个sidosiDoCd市/道代码纯数字sigungusiGunGuCd市/郡/区代码纯数字service_kindserviceKind给付/服务种类代码纯数字pagepageNo页码默认 1范围 1~1000limitnumOfRows每页条数默认 10最大 100体检机构路由GET /v1/nhis/checkup/{operation}路由 operation 共四种list、by-region、by-checkup-type、holiday。它们在源码中与上游操作名的映射关系为见 nhis-care.js路由 operation上游操作名upstreamOperation典型用途listgetHmcList常规机构列表by-regiongetRegnHmcList按区域检索by-checkup-typegetHchkTypesHmcList按体检类型检索holidaygetHolidaysHmcList查询运营日/假日可用信息参数与别名参数别名均可使用含义约束qquery、name、hmcNm体检机构名搜索词可选四个条件至少给一个sidosiDoCd市/道代码纯数字sigungusiGunGuCd市/郡/区代码纯数字hchk_typecheckup_type、hchkTypeCd体检类型代码纯数字pagepageNo页码默认 1范围 1~1000limitnumOfRows每页条数默认 10最大 100源码细节pageNo上限为 1000、numOfRows上限为 100这是由parseBoundedPositiveInteger的max参数决定的nhis-care.js与文档中limit 默认 10、最大 100的说明完全一致。四、调用工作流Workflow第 1 步决定调用面Decide the surface检索长期疗养机构→ 使用/v1/nhis/long-term-care检索体检机构→ 按目的在/v1/nhis/checkup/list、/v1/nhis/checkup/by-region、/v1/nhis/checkup/by-checkup-type、/v1/nhis/checkup/holiday中择一。第 2 步经代理查询长期疗养机构BASE${KSKILL_PROXY_BASE_URL:-https://k-skill-proxy.nomadamas.org} curl -fsS --get $BASE/v1/nhis/long-term-care \ --data-urlencode q강남 \ --data-urlencode sido11 \ --data-urlencode limit10命令说明--get配合--data-urlencode将查询参数以 URL 编码形式附加到 GET 请求sido11为首尔特别市代码韩国行政代码示例limit10控制每页条数。第 3 步经代理查询体检机构BASE${KSKILL_PROXY_BASE_URL:-https://k-skill-proxy.nomadamas.org} curl -fsS --get $BASE/v1/nhis/checkup/by-region \ --data-urlencode q검진 \ --data-urlencode sido11 \ --data-urlencode limit10这里选用by-region操作按区域首尔检索名含검진的体检机构。第 4 步汇总上游字段Summarize source fields从响应 XML 的item字段中只摘要上游公开提供的条目例如机构名长期疗养为adminNm体检为hmcNm地址电话号码给付种类长期疗养场景体检类型、运营日体检场景。当用户需要实际使用、入住或预约体检时应明确引导其直接联系 NHIS 或相应机构进行确认。五、源码级实现原理代理如何工作5.1 上游端点与操作映射nhis-care.js 定义了上游真实端点长期疗养https://apis.data.go.kr/B550928/searchLtcInsttService02/getBillGreentInsttSearchList02体检https://apis.data.go.kr/B550928/HmcSearchService并追加操作名如getRegnHmcList也就是说代理把对外友好的 REST 风格路由如/v1/nhis/checkup/by-region翻译为公共数据门户内部的 SOAP 式操作名屏蔽了上游 API 的别扭结构。5.2 参数归一化Normalization两个normalize*Query函数承担三件事别名折叠把q/query/name/adminNm折叠为单一adminNm把sido/siDoCd折叠为siDoCd以此类推统一上游字段名类型与范围校验pageNo/numOfRows必须是正整数且落在规定区间siDoCd/siGunGuCd/serviceKind/hchkTypeCd必须是纯数字否则抛出错误必填校验当搜索词、市道代码、市郡区代码、服务/体检类型四个条件一个都没给时抛出Provide adminNm, siDoCd, siGunGuCd, or serviceKind.体检侧对应 hmcNm/hchkTypeCd 变体路由层捕获后返回400 bad_request。5.3 代理转发与认证注入proxyNhisLongTermCareRequest 与proxyNhisCheckupRequest的执行逻辑若代理服务器未配置DATA_GO_KR_API_KEY直接返回503 upstream_not_configuredJSON 错误体构造上游 URL 时把serviceKey注入查询串并附带pageNo、numOfRows及非空的可选参数使用AbortSignal.timeout(20000)设置 20 秒超时通过isUpstreamAuthStatusHTTP 401/403与isDataGoKrGatewayError识别OpenAPI_ServiceResponse、SERVICE KEY IS NOT REGISTERED等网关错误特征检测认证被拒统一转换为502 upstream_forbidden其余情况下原样透传上游 HTTP 状态码、content-type与 XML 正文。5.4 路由注册与缓存在 server.js 中注册了两条路由app.get(/v1/nhis/long-term-care, ...)与app.get(/v1/nhis/checkup/:operation, ...)两条路由共享config.molitApiKey即环境变量DATA_GO_KR_API_KEY的归一化结果见 server.js使用makeCacheKey({ route: nhis-long-term-care, ...normalized })/makeCacheKey({ route: nhis-checkup, ...normalized })生成缓存键命中缓存时直接回放已缓存的statusCode、content-type与body并仅在 2xx 时才写入缓存TTL 由config.cacheTtlMs控制失败时返回{ error, message }JSON 结构400 bad_request由归一化异常触发。/health接口中的nhisCareConfigured、nhisCheckupConfigured标志即反映DATA_GO_KR_API_KEY是否配置见 server.js可用于运维探活。5.5 测试验证代理测试 server.test.js 对上述行为做了完整覆盖可作为行为契约参考归一化测试NHIS checkup normalizer ...验证别名折叠q/검진→hmcNm、sido→siDoCd、upstreamOperation映射holiday→getHolidaysHmcList等、以及非法输入未知 operation、缺参、非数字sido、非数字hchk_type的抛错成功注入与缓存测试NHIS checkup route injects serviceKey and caches XML success/NHIS long-term care ...断言上游 URL 包含serviceKeydata-go-key、hmcNm/adminNm、siDoCd、siGunGuCd、numOfRows且第二次相同请求命中缓存calls.length 1缺失密钥测试未配置密钥时返回503与upstream_not_configured认证拒绝测试上游返回SERVICE KEY IS NOT REGISTEREDXML 或 HTTP 401 时代理返回502与upstream_forbidden。六、失败模式与排错Failure modes原文档给出的失败模式及其处理建议错误含义处理400 bad_request搜索词/区域/服务种类一个都没给或代码/页码值错误补齐至少一个查询条件检查代码与分页参数格式503 upstream_not_configured代理服务器没有DATA_GO_KR_API_KEY在代理环境配置密钥并重启502 upstream_forbiddendata.go.kr 网关拒绝了该密钥确认密钥有效且对应服务申请已批准空结果无匹配机构放宽地区代码或机构名写法后重搜仅特定服务失败同密钥不同服务状态不同data.go.kr 各服务单独审批分别检查15059029、15154419的 활용신청 状态结合源码可以进一步解释503与502都由 nhis-care.js 在转发阶段判定生成400由归一化异常在 server.js 的 catch 分支生成三条路径的错误信息均以 JSON 结构返回便于 Agent 直接解析并转述给用户。七、完成标准Done when一次合格的调用应满足长期疗养机构查询已通过k-skill-proxy路由完成且未向用户索要 API key体检机构查询已通过k-skill-proxy路由完成且未向用户索要 API key结果中同时写明机构名、位置、联系方式、来源服务与查询条件便于追溯与复现。八、维护者验证Maintainer review notes无需密钥即可完成的验证手段# 1. 校验全部技能的结构与元数据 ./scripts/validate-skills.sh # 2. 运行代理服务端测试套件 node --test packages/k-skill-proxy/test/server.test.js # 3. 无密钥冒烟未配置密钥时应返回 503 curl -i --get $KSKILL_PROXY_BASE_URL/v1/nhis/long-term-care \ --data-urlencode q강남 # 4. 无密钥冒烟体检路由 curl -i --get $KSKILL_PROXY_BASE_URL/v1/nhis/checkup/by-region \ --data-urlencode q검진 \ --data-urlencode sido11curl -i用于观察完整响应头与状态码密钥未设置时上述请求应看到503 upstream_not_configured。Live smoke真实数据冒烟则需在 hosted/self-host 代理上配置DATA_GO_KR_API_KEY且15059029或15154419的 활용신청 获得批准后执行。九、安全注意事项Safety notes本技能为只读查询技能不执行任何写入类操作不进行医疗判断、长期疗养等级评定不自动化预约/申请流程认证密钥只在代理服务器端处理不得存入仓库、GitHub Actions 或公开文档与本仓库 security-and-secrets.md 的密钥治理原则一致。十、相关资源索引技能完整指令nhis-care-checkup-search/instruction.md技能元数据profiles/类别/阶段nhis-care-checkup-search/skill.jsonCLI 分发入口npx -y nomadamas/k-skill0 instruct nhis-care-checkup-searchnhis-care-checkup-search/SKILL.md代理上游实现归一化/转发/错误映射packages/k-skill-proxy/src/nhis-care.js路由注册与缓存packages/k-skill-proxy/src/server.js行为契约测试packages/k-skill-proxy/test/server.test.js路由与密钥说明packages/k-skill-proxy/README.md【免费下载链接】k-skill한국인을 위한 스킬 모음집 - 에이전트를 한국인으로项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表