feat(osi): 实现老年人自理能力查询(T-303)

This commit is contained in:
ila
2026-07-13 19:53:49 +08:00
parent ab5499acd4
commit d60b979785
13 changed files with 363 additions and 21 deletions
+1 -1
View File
@@ -18,7 +18,7 @@
| JKTJLIST00002 | `/auto/jktjlist/query` | `ListHealthCheckPeople` | (查询) |
| JKTJLSJL00002 | `/auto/jktjlscx/query` | `LastHealthCheck` | (查询) |
| LNRZLPG00001 | `/lnrzlpg/create` | `CreateElderlySelfCare` | `elderly_self_care` |
| LNRZLPG00002 | `/auto/lnr/query` | `QueryElderlySelfCare` | (查询,待联调确认) |
| LNRZLPG00002 | `/auto/lnr/query` | `QueryElderlySelfCare` | (查询,代码完成,待联调确认) |
| LNRZLPG00003 | `/lnrzlpg/update` | `UpdateElderlySelfCare` | `elderly_self_care` |
| LNRZYTZ00001 | `/lnrzyygl/create` | `CreateTCMConstitution` | `tcm` |
| LNRZYTZ00003 | `/lnrzyygl/update` | `UpdateTCMConstitution` | `tcm` |
+17 -1
View File
@@ -167,6 +167,21 @@ GET /api/dictionaries/orgs
- 上游:`CXJG00002` `/auto/cxjg/query`
- 返回:`data` 为**数组**(机构主数据,含 `organizCode`、`organizName`、`organizType`、`parentId` 等)
### 10. 查询老年人生活自理能力评估
```
GET /api/elderly/self-care
```
| 参数 | 必填 | 说明 |
| --- | --- | --- |
| `idCard` | **是** | 身份证件号 |
| `phrId` | 否 | 健康档案编号(注意驼峰 `phrId`) |
| `checkId` | 否 | 第三方检查主键 |
- 上游:`LNRZLPG00002` `/auto/lnr/query`(厂家文档契约,待真实联调确认)
- 返回:`data` 为**数组**,每条含进餐/梳洗/穿衣/如厕/活动及总评的原始值、等级和评分;完整字段原样回写
---
## 调用示例
@@ -181,6 +196,7 @@ curl "http://127.0.0.1:8080/api/dictionaries/grid-addresses?parentCode=<区划
curl "http://127.0.0.1:8080/api/dictionaries/doctors?manaUnitId=<机构码>"
curl "http://127.0.0.1:8080/api/dictionaries/drugs?pageNo=1&pageSize=10&ypmc=<药品名>" # pageNo 必填
curl "http://127.0.0.1:8080/api/dictionaries/orgs?parentId=<上级机构ID>"
curl "http://127.0.0.1:8080/api/elderly/self-care?idCard=<身份证>"
```
---
@@ -188,5 +204,5 @@ curl "http://127.0.0.1:8080/api/dictionaries/orgs?parentId=<上级机构ID>"
## 尚未提供(后续)
- 写入类端点(档案/体检 create/update):`handler` 侧 `/api/health-record/save` 等待 T-204/T-206 及厂家写入授权。
- 老年人自理/体质、中医指导查询端点:待对应 OSI serviceId 联调(docs/06 B4)。
- 老年人中医体质辨识、中医指导查询端点:待对应 OSI serviceId/字段契约(docs/06 B4)。
- 鉴权、访问日志、限流:当前是本机联调工具形态,对外前必须补齐。
+6 -4
View File
@@ -6,9 +6,9 @@
## 当前快照
- 日期:2026-07-09
- 阶段:**Phase D 创建/更新代码基线完成,真实写入验收受阻;T-303 老年人生活自理能力评估查询待实现**;T-001~T-006、T-201、T-203、T-102、T-202、T-205、T-101、T-103、T-209、T-210 已验收;T-206 已完成本地契约/客户端/映射组装代码,但未执行真实 `JKDA00001` create
- 技术栈:Go 1.24 单二进制;`main.go -mode server|deliver`;配置读取使用 viper,支持环境变量覆盖;OSI 客户端已具备签名、信封、传输、基础判码、JKDA00002 Find、JKDA00005 FindRqbj(人群分类,已按实测 auto 路径校准)、JKDA00001 Create、JKDA00003 Update,以及 WGDZ/ZRYS/YPML/CXJG 四个公开查询薄封装
- 生产代码:已有 `main.go`、`config/`、`contract/envelope.go`、`contract/jkda.go`、`osi/` 薄客户端、`cache/dictionary.go`、`verify_jkda.go`、`go.mod`/`go.sum`;`mapping/dict.go`、`mapping/health_record.go`、`mapping/checkid.go` 已建立映射纯函数、码表基线、主数据反查接入点和创建请求组装;`handler/health_record.go`+`handler/public.go`+`server.go` 提供 server 模式档案查询、人群分类查询、网格地址、责任医生、药品目录、机构查询端点;`pipeline/` 等业务模块仍待后续任务建立
- 阶段:**Phase D 创建/更新代码基线完成,真实写入验收受阻;T-303 老年人生活自理能力评估查询代码完成、真实联调受阻**;T-001~T-006、T-201、T-203、T-102、T-202、T-205、T-101、T-103、T-209、T-210 已验收;T-206 已完成本地契约/客户端/映射组装代码,但未执行真实 `JKDA00001` create
- 技术栈:Go 1.24 单二进制;`main.go -mode server|deliver`;配置读取使用 viper,支持环境变量覆盖;OSI 客户端已具备签名、信封、传输、基础判码、JKDA00002 Find、JKDA00005 FindRqbj(人群分类,已按实测 auto 路径校准)、JKDA00001 Create、JKDA00003 Update、LNRZLPG00002 老年人生活自理能力查询(待真实联调),以及 WGDZ/ZRYS/YPML/CXJG 四个公开查询薄封装
- 生产代码:已有 `main.go`、`config/`、`contract/envelope.go`、`contract/jkda.go`、`contract/lnr.go`、`osi/` 薄客户端、`cache/dictionary.go`、`verify_jkda.go`、`go.mod`/`go.sum`;`mapping/dict.go`、`mapping/health_record.go`、`mapping/checkid.go` 已建立映射纯函数、码表基线、主数据反查接入点和创建请求组装;`handler/health_record.go`+`handler/elderly.go`+`handler/public.go`+`server.go` 提供 server 模式档案查询、人群分类查询、老年人自理能力查询、网格地址、责任医生、药品目录、机构查询端点;`pipeline/` 等业务模块仍待后续任务建立
- 联调现实:**JKDA00002 个人档案查询已用 Go 侧真实请求打通**,返回 `code="01" message="操作成功" data_count=1`;**公开查询 WGDZ00001/ZRYS00001/CXJG00002 已用真实档案主数据验证通过**,均返回 `code="01"` 且数组非空;药品目录 YPML00001 已完成客户端封装和单测,尚未做真实药品关键字样本验证;**JKDA00001 create 未跑真实请求**,避免在没有安全测试居民/写入授权时污染平台档案
- 测试:`go test ./...` 通过;当前测试覆盖 mode 解析、配置加载与环境变量覆盖、MD5 签名、请求头组装、JSON POST 传输、头名大小写保留、identity 响应编码声明、超时配置、SOCKS5 代理地址校验、信封结构、serviceId 路由、成功/重试判码、Client.Call 请求与响应解析、JKDA00002 查询响应契约、JKDA00001/00003 创建更新请求契约与客户端方法、JKDA00002 Find、JKDA00005 FindRqbj(personSign/idCard/phrId)、公开查询四接口、公开查询 HTTP API、字典缓存快照与持久化失败不阻断、映射码表双向查找、民族 01~56 完整性、健康档案映射必填/码表校验、主数据名称反查、创建请求组装、checkId 确定性、docx/联调风格映射样本基线、JKDA00002 验证入口
- 标准启动路径:`./init.sh` 已配置三步:依赖下载、`go test ./...`、`go run . -mode server -config config.yaml.example`
@@ -42,6 +42,7 @@
| `mapping/health_record_baseline_test.go` | 已有 | docx 风格、联调风格、脏数据映射回归样本 |
| `handler/health_record.go` | 已有 | `GET /api/health-record/find` 档案查询、`GET /api/health-record/crowd` 人群分类查询,均回写平台完整响应 |
| `handler/health_check.go` | 已有 | 体检端点 `GET /api/health-check/last`(最近一次)+ `/all`(全部体检)+ `/list`(年度名单)|
| `handler/elderly.go` | 已有 | `GET /api/elderly/self-care` 老年人生活自理能力评估查询(待真实联调) |
| `handler/public.go` | 已有 | 公开查询端点 `GET /api/dictionaries/grid-addresses`、`/doctors`、`/drugs`、`/orgs` |
| `server.go` `osi_client.go` | 已有 | server 模式起 HTTP 服务、注册路由;`buildOSIClient` 共用构造(verify 与 server 复用) |
| `pipeline/` 等 | 待建 | 后续任务 |
@@ -85,6 +86,7 @@ curl "http://127.0.0.1:8080/api/health-record/crowd?idCard=<idCard>" #
curl "http://127.0.0.1:8080/api/health-check/last?idCard=<idCard>" # 最近一次体检
curl "http://127.0.0.1:8080/api/health-check/all?idCard=<idCard>" # 某人全部体检(数组)
curl "http://127.0.0.1:8080/api/health-check/list?checkYear=2025&idCard=<idCard>" # 年度已检/未检名单
curl "http://127.0.0.1:8080/api/elderly/self-care?idCard=<idCard>" # 老年人生活自理能力评估(待真实联调)
curl "http://127.0.0.1:8080/api/dictionaries/grid-addresses?parentCode=<区划码>" # 网格地址
curl "http://127.0.0.1:8080/api/dictionaries/doctors?manaUnitId=<机构码>" # 责任医生
curl "http://127.0.0.1:8080/api/dictionaries/drugs?pageNo=1&ypmc=<药品名>" # 药品目录(pageNo 必填)
@@ -99,7 +101,7 @@ python3 scripts/query_health_record.py
> 读先行调整(2026-07-08):写入(T-206/T-204)被厂家授权锁死,先推其余业务线查询。
1. ✅ T-301/T-305 体检查询(最近一次 + 名单)、T-302 体检 HTTP 端点 —— 均已完成。
2. **T-303 老年人生活自理能力评估查询**:厂家文档已给出 `LNRZLPG00002` 与 `/auto/lnr/query`,先实现客户端、HTTP 端点与测试,再用真实请求确认契约。
2. **T-303 真实联调**:提供安全测试身份证后,确认 `LNRZLPG00002`、`/auto/lnr/query` 与响应字段;当前代码/单测已完成。
3. T-307 老年人中医体质辨识查询仍待厂家补查询文档(docs/06 B4)。
4. 并行催厂家(docs/06 ★ 优先催办):写入授权+测试档案、缺失单查/老年人体质 serviceId、checkId/完整度规则。
4. 授权到位后回到 T-206 真实 create 验收 → T-204。
+104
View File
@@ -26,6 +26,8 @@ tags:
description: 健康体检查询
- name: dictionaries
description: 公开主数据查询
- name: elderly
description: 老年人业务查询
paths:
/api/health-record/find:
get:
@@ -230,6 +232,59 @@ paths:
$ref: '#/components/responses/MethodNotAllowed'
'502':
$ref: '#/components/responses/BadGateway'
/api/elderly/self-care:
get:
tags:
- elderly
summary: 查询老年人生活自理能力评估
description: 厂家文档给出的 LNRZLPG00002 查询契约,待真实联调确认。原样返回上游 `/auto/lnr/query` 响应。
operationId: queryElderlySelfCare
parameters:
- name: idCard
in: query
required: true
description: 身份证件号。
schema:
type: string
- name: phrId
in: query
required: false
description: 健康档案编号。注意参数名为驼峰 phrId。
schema:
type: string
- name: checkId
in: query
required: false
description: 第三方检查主键。
schema:
type: string
responses:
'200':
description: 平台完整响应,成功和平台业务错误均原样透传。
content:
application/json:
schema:
$ref: '#/components/schemas/ElderlySelfCareResponse'
examples:
success:
value:
code: '01'
message: 操作成功
data:
- phrId: PHRID_PLACEHOLDER
checkId: LNR_CHECK_ID_PLACEHOLDER
jc: '1'
jcdj: '1'
jcpf: '10'
zp: '1'
zpdj: '1'
zpfs: '100'
'400':
$ref: '#/components/responses/BadRequest'
'405':
$ref: '#/components/responses/MethodNotAllowed'
'502':
$ref: '#/components/responses/BadGateway'
/api/dictionaries/grid-addresses:
get:
tags:
@@ -647,3 +702,52 @@ components:
items:
type: object
additionalProperties: true
ElderlySelfCareResponse:
allOf:
- $ref: '#/components/schemas/OSIBaseResponse'
- type: object
properties:
data:
type: array
description: 老年人生活自理能力评估记录数组。
items:
$ref: '#/components/schemas/ElderlySelfCareAssessment'
ElderlySelfCareAssessment:
type: object
description: 厂家查询文档列出的评估字段;完整原始字段由服务透传。
properties:
phrId:
type: string
checkId:
type: string
jc:
type: string
description: 进餐原始值。
jcdj:
type: string
description: 进餐等级。
jcpf:
type: string
description: 进餐评分。
sx:
type: string
description: 梳洗原始值。
cy:
type: string
description: 穿衣原始值。
rc:
type: string
description: 如厕原始值。
hd:
type: string
description: 活动原始值。
zp:
type: string
description: 总评。
zpdj:
type: string
description: 总评等级。
zpfs:
type: string
description: 总评分数。
additionalProperties: true