Menurut NHS CT Browser , yang mungkin tidak dapat diakses dari mana-mana, 93880001 memiliki tiga orang tua:
- Tumor ganas paru-paru (gangguan)
- Neoplasma ganas primer organ intratoraks (gangguan)
- Neoplasma ganas primer saluran pernapasan (gangguan)
dan 31 anak:
- Karsinoma parenkim paru (gangguan)
- Hemangioendothelioma epiteloid paru (gangguan)
- Limfoma non-Hodgkin pada paru-paru (gangguan)
- Kanker paru-paru non-sel kecil (gangguan)
- dan seterusnya...
Cara untuk menemukan tingkat hierarki yang lebih tinggi dan lebih rendah adalah dengan menggunakan relationship_f.sourceid
dan relationship_f.destinationid
. Namun, tabel mentah tidak ramah pengguna jadi saya sarankan membuat beberapa tampilan. Saya telah mengambil kode dari file Oracle .sql di ini
Repo GitHub.
Pertama, kami membuat tampilan dengan ID konsep dan nama pilihan:
create view conceptpreferredname as
SELECT distinct c.id conceptId, d.term preferredName, d.id descriptionId
FROM postgres.snomedct.concept_f c
inner JOIN postgres.snomedct.description_f d
ON c.id = d.conceptId
AND d.active = '1'
AND d.typeId = '900000000000013009'
inner JOIN postgres.snomedct.langrefset_f l
ON d.id = l.referencedComponentId
AND l.active = '1'
AND l.refSetId = '900000000000508004' -- GB English
AND l.acceptabilityId = '900000000000548007';
Kemudian kita membuat tampilan hubungan:
CREATE VIEW relationshipwithnames AS
SELECT id, effectiveTime, active,
moduleId, cpn1.preferredName moduleIdName,
sourceId, cpn2.preferredName sourceIdName,
destinationId, cpn3.preferredName destinationIdName,
relationshipGroup,
typeId, cpn4.preferredName typeIdName,
characteristicTypeId, cpn5.preferredName characteristicTypeIdName,
modifierId, cpn6.preferredName modifierIdName
from postgres.snomedct.relationship_f relationship,
conceptpreferredname cpn1,
conceptpreferredname cpn2,
conceptpreferredname cpn3,
conceptpreferredname cpn4,
conceptpreferredname cpn5,
conceptpreferredname cpn6
WHERE moduleId = cpn1.conceptId
AND sourceId = cpn2.conceptId
AND destinationId = cpn3.conceptId
AND typeId = cpn4.conceptId
AND characteristicTypeId = cpn5.conceptId
AND modifierId = cpn6.conceptId;
Jadi kueri untuk mencetak nama dan id dari tiga konsep induk adalah:
select *
from relationshipwithnames r
where r.sourceId = '93880001'
and r.active = '1'
and r.typeIdName = 'Is a';
Perhatikan bahwa ini sebenarnya mengembalikan tiga konsep tambahan, yang menurut browser SNOMED online sudah usang. Saya tidak yakin mengapa.
Untuk mencetak nama dan id konsep turunan, ganti destinationId
dengan sourceId
:
select *
from relationshipwithnames r
where r.destinationId = '93880001'
and r.active = '1'
and r.typeIdName = 'Is a';
Perhatikan bahwa ini sebenarnya mengembalikan enam belas konsep tambahan, yang menurut browser SNOMED online sudah usang. Sekali lagi, saya tidak dapat menemukan cara yang dapat diandalkan untuk mengecualikan hanya enam belas ini dari hasil.
Dari sini, pertanyaan untuk mendapatkan kakek-nenek dan cucu sangatlah mudah.