私は現在ngx_postgresの幸せなユーザーです。しかし、私は最近、非常に奇妙なことをする必要があることに気付きました。基本的に、次の json 出力を生成する必要があります。
{
"PatientName": {
"Tag": "00100010",
"VR": "PN",
"PersonName": [
{
"SingleByte": "Wang^XiaoDong",
"Ideographic": "王^小東"
}
]
},
},
{
"PatientName": {
"Tag": "00100010",
"VR": "PN",
"PersonName": [
{
"SingleByte": "John^Doe",
}
]
},
}
DICOM 規格を少し読むだけで、キーワード、タグ、VR の対応表を簡単に作成 (簡略化) できます。
CREATE TABLE equiv (
"Keyword" varchar(64) PRIMARY KEY,
"Tag" char(8) NOT NULL,
"VR" char(2) NOT NULL,
);
さて、トリッキーな部分は、私が理解していないPatientNameのこの間接化です。私は試しました:
CREATE TABLE patientname (
"SingleByte" varchar(64) primary key,
"Ideographic" varchar(64),
);
CREATE TABLE patientlevel_impl_detail (
"PatientName" varchar(64) references patientname("SingleByte"),
"PatientID" character varying(64) NOT NULL
);
CREATE view patientlist as select
patientname."SingleByte",
patientname."Ideographic",
patientname."Phonetic",
patientlevel_impl_detail."PatientID"
FROM patientlevel_impl_detail,patientname where patientlevel_impl_detail."PatientName" = patientname."SingleByte";
ただし、いずれにせよ、TABLE および/または VIEW は常に平坦化され、代わりに次のような結果が得られます。
$ curl http://localhost:8080/patients
[
{
"Tag": "00100010",
"VR": "PN",
"SingleByte": "John^Doe",
"Ideographic": null,
},
]
したがって、PersonName をネストされた文字列 (ネストされた json ツリー) の配列にする方法がわかりません。
注: 私は 9.3 を使用していません。今のところ 9.1 を使用する必要があります。