PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

Snomed Postgres Sql Database से संबंध कैसे खोजें

एनएचएस सीटी ब्राउज़र , जो हर जगह से उपलब्ध नहीं हो सकता है, 93880001 के तीन माता-पिता हैं:

  • फेफड़े का घातक ट्यूमर (विकार)
  • इंट्राथोरेसिक अंगों (विकार) का प्राथमिक घातक नवोप्लाज्म
  • श्वसन पथ (विकार) का प्राथमिक घातक रसौली

और 31 बच्चे:

  • फेफड़े के पैरेन्काइमा (विकार) का कार्सिनोमा
  • फेफड़े के उपकला हेमांगीओएंडोथेलियोमा (विकार)
  • गैर-हॉजकिन का फेफड़े का लिंफोमा (विकार)
  • नॉन-स्मॉल सेल लंग कैंसर (विकार)
  • और इसी तरह...

पदानुक्रम के उच्च और निम्न स्तरों को खोजने का तरीका relationship_f.sourceid का उपयोग करना है और relationship_f.destinationid . हालांकि, कच्ची टेबल उपयोगकर्ता के अनुकूल नहीं हैं इसलिए मैं कुछ विचार करने का सुझाव दूंगा। मैंने Oracle .sql फाइलों से यह गिटहब रेपो।

सबसे पहले, हम अवधारणा आईडी और पसंदीदा नामों के साथ एक दृश्य बनाते हैं:

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';

फिर हम रिश्तों के बारे में एक नज़र डालते हैं:

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;

तो तीन मूल अवधारणाओं के नाम और आईडी प्रिंट करने के लिए एक प्रश्न होगा:

select *
from relationshipwithnames r
where r.sourceId = '93880001'
and r.active = '1'
and r.typeIdName = 'Is a';

ध्यान दें कि यह वास्तव में तीन अतिरिक्त अवधारणाएँ देता है, जो ऑनलाइन SNOMED ब्राउज़र को लगता है कि अप्रचलित हैं। मुझे यकीन नहीं है कि क्यों।

चाइल्ड कॉन्सेप्ट के नाम और आईडी प्रिंट करने के लिए, destinationId . को बदलें sourceId . के साथ :

select *
from relationshipwithnames r
where r.destinationId = '93880001'
and r.active = '1'
and r.typeIdName = 'Is a';

ध्यान दें कि यह वास्तव में सोलह अतिरिक्त अवधारणाएँ देता है, जो ऑनलाइन SNOMED ब्राउज़र को लगता है कि अप्रचलित हैं। फिर से, मुझे परिणामों से केवल इन सोलह को बाहर करने का कोई विश्वसनीय तरीका नहीं मिल रहा है।

यहाँ से, दादा-दादी और पोते-पोतियों को प्राप्त करने के लिए प्रश्न सरल हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. यादृच्छिक 2 शब्द स्ट्रिंग के साथ तालिका में प्रत्येक पंक्ति का नामकरण

  2. एक ही पार्टीशन पर कई विंडो फंक्शंस लागू करना

  3. डुप्लिकेट मानों की सूची संख्या

  4. कुल दौड़... एक ट्विस्ट के साथ

  5. क्रमबद्ध पथों के लाभों पर