GraphGists

阿斯图里亚斯中央医院的药品和药物分类


介绍

该数据库模拟了 HUCA(阿斯图里亚斯中央医院)新的药物分配计算机系统。主要功能是查找哪些药品可供处方,以及哪些药品对医院来说最便宜。


模型

该模型是基于药物对受影响的解剖功能区域的分类,这些区域包含在 ATC 中。

  • 每个区域都有多种作用机制。

    • 不同的功能区域都有一个关联的代码。

  • 对于每种特定机制,我们得到不同类型的活性成分。

Esquema Principal
图 1. 主要模式
  • 一种活性成分有多种剂型和药物(药品)

  • 对于每种剂型(剂型)都有不同的药品

    • 每种剂型都包含一个代码、名称和价格。

Secundary graphic
图 2. 次要模式

设置

// Create ATC - Anatomic-Therapeutic-Quimic national classifier
CREATE (atc:NationalClassifier {name:'ATC', description:'Spanish classifier for Anatomic-Therapeutic-Quimic medicines'})

// Create Anatomic-Functional Areas
CREATE
	(a:AnatomicFunctionalArea {code:'A', name:'Digestive system and metabolism'}),
	(b:AnatomicFunctionalArea {code:'B', name:'Blood and blood-forming organs'}),
	(c:AnatomicFunctionalArea {code:'C', name:'Cardiovascular system'})

// Create their relationships with the ATC national classifier
CREATE
	(atc)-[:HAS_ANATOMIC_FUNCTIONAL_AREA]->(a),
	(atc)-[:HAS_ANATOMIC_FUNCTIONAL_AREA]->(b),
	(atc)-[:HAS_ANATOMIC_FUNCTIONAL_AREA]->(c)

// Create mechanism of action for each anatomic-functional area and their relationships
// AFA - A
CREATE
(a02ba:MechanismOfAction {code:'A02BA', name:'Anti ulcer:H2 receptor antagonists'}),
	(a)-[:MECHANISM_OF_ACTION]->(a02ba)

// AFA - B
CREATE
	(b01ab:MechanismOfAction {code:'B01AB', name:'Antithrombotic:Heparin and derivatives'}),
	(b)-[:MECHANISM_OF_ACTION]->(b01ab)

// AFA - C
CREATE
	(c01bd:MechanismOfAction {code:'C01BD', name:'Antiarrhythmics. Class III'}),
	(c)-[:MECHANISM_OF_ACTION]->(c01bd)

// 	Create active ingredients and their relationships
// A02BA active ingredients
CREATE
// Famotidine
	(famo:ActiveIngredient {name:'Famotidine'}),
	(a02ba)-[:HAS_ACTIVE_INGREDIENT]->(famo),
// Ranitidine
	(rani:ActiveIngredient {name:'Ranitidine'}),
	(a02ba)-[:HAS_ACTIVE_INGREDIENT]->(rani)

// B01AB active ingredients
CREATE
// Bemiparina
	(bemi:ActiveIngredient {name:'Bemiparina'}),
	(b01ab)-[:HAS_ACTIVE_INGREDIENT]->(bemi),
// Dalteparin
	(dalte:ActiveIngredient {name:'Dalteparin'}),
	(b01ab)-[:HAS_ACTIVE_INGREDIENT]->(dalte)

// C01BD active ingredients
CREATE
// Amiodarone
	(amio:ActiveIngredient {name:'Amiodarone'}),
	(c01bd)-[:HAS_ACTIVE_INGREDIENT]->(amio),
// Dronedarone
	(drone:ActiveIngredient {name:'Dronedarone'}),
	(c01bd)-[:HAS_ACTIVE_INGREDIENT]->(drone)

// Create differents posologies for the active ingredients
// Famotidine posologies
CREATE
	(famo10mg:Posology {code:'A01486', name:'Famotidine 10 mg'}),
	(famo)-[:HAS_POSOLOGY]->(famo10mg),
	(famo20mg:Posology {code:'A01488', name:'Famotidine 20 mg'}),
	(famo)-[:HAS_POSOLOGY]->(famo20mg)

// Ranitidine posologies
CREATE
	(rani150mg:Posology {code:'A03462', name:'Ranitidine 150 mg tablets'}),
	(rani)-[:HAS_POSOLOGY]->(rani150mg),
	(rani300mg:Posology {code:'A03464', name:'Ranitidine 300 mg tablets'}),
	(rani)-[:HAS_POSOLOGY]->(rani300mg)

// Bemiparina posologies
CREATE
	(bemi3500:Posology {code:'A00336', name:'Bemiparina 3500 UI injectable SC'}),
	(bemi)-[:HAS_POSOLOGY]->(bemi3500),
	(bemi5000:Posology {code:'A00337', name:'Bemiparina 5000 UI injectable SC'}),
	(bemi)-[:HAS_POSOLOGY]->(bemi5000)

// Dalterparin posologies
CREATE
	(dalte2500:Posology {code:'A00938', name:'Dalterparin 2500 UI injectable SC'}),
	(dalte)-[:HAS_POSOLOGY]->(dalte2500),
	(dalte5000:Posology {code:'A00939', name:'Dalterparin 5000 UI injectable SC'}),
	(dalte)-[:HAS_POSOLOGY]->(dalte5000)

// Amiodarone posologies
CREATE
	(amio150mg:Posology {code:'A00164', name:'Amiodarone 150 mg injectable IV'}),
	(amio)-[:HAS_POSOLOGY]->(amio150mg),
	(amio200mg:Posology {code:'A00165', name:'Amiodarone 200 mg tablets'}),
	(amio)-[:HAS_POSOLOGY]->(amio200mg)

// Dronedarone posologies
CREATE
	(drone400mg:Posology {code:'A01201', name:'Dronedarone 400 mg tablets'}),
	(drone)-[:HAS_POSOLOGY]->(drone400mg)

// Create differents pharmaceutical specialities and their relationships
// Famotidine 10 mg
CREATE
	(pepcid:PharmaceuticalSpeciality {name:'Pepcid 12 tablets', code:'6601426', price:'3'}),
	(eviantrina:PharmaceuticalSpeciality {name:'Eviantrina 12 tablets', code:'8182374', price:'2'}),
	(gastenin:PharmaceuticalSpeciality {name:'Gastenin 14 tablets', code:'7068877', price:'4'}),
	(famogenom:PharmaceuticalSpeciality {name:'Famogenom 14 tablets', code:'7419839', price:'4'}),

	(famo10mg)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(pepcid),
	(famo10mg)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(eviantrina),
	(famo10mg)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(gastenin),
	(famo10mg)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(famogenom)

// Famotidine 20 mg
CREATE
	(bexal:PharmaceuticalSpeciality {name:'Bexal 20 tablets', code:'7881254', price:'5'}),
	(ranbaxy:PharmaceuticalSpeciality {name:'Ranbaxy EFG 20 tablets', code:'8266449', price:'5'}),
	(esteve:PharmaceuticalSpeciality {name:'Esteve 28 tablets', code:'8675159', price:'6'}),
	(geminis:PharmaceuticalSpeciality {name:'Geminis 28 tablets', code:'7419839', price:'5'}),

	(famo20mg)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(bexal),
	(famo20mg)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(ranbaxy),
	(famo20mg)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(esteve),
	(famo20mg)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(geminis)

// Ranitidine 150 mg tablets
CREATE
	(zantac:PharmaceuticalSpeciality {name:'Zantac 28 tablets', code:'6540206', price:'5'}),
	(ranidin:PharmaceuticalSpeciality {name:'Ranidin 28 tablets', code:'6549131', price:'6'}),

	(rani150mg)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(zantac),
	(rani150mg)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(ranidin)

// Ranitidine 300 mg tablets
CREATE
	(terposen:PharmaceuticalSpeciality {name:'Terposen 28 tablets', code:'6541869', price:'4'}),
	(ranix:PharmaceuticalSpeciality {name:'Ranix 28 tablets', code:'6548301', price:'8'}),

	(rani300mg)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(terposen),
	(rani300mg)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(ranix)

// Bemiparina 3500 UI
CREATE
	(hibor3500:PharmaceuticalSpeciality {name:'Hibor 3500 UI 30 syringes precharged 0.2 ml', code:'6632086', price:'160'}),
	(afatinal3500:PharmaceuticalSpeciality {name:'Afatinal 3500 UI 30 syringes precharged 0.2 ml', code:'6584446', price:'170'}),

	(bemi3500)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(hibor3500),
	(bemi3500)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(afatinal3500)

// Bemiparina 5000 UI
CREATE
	(hibor5000:PharmaceuticalSpeciality {name:'Hibor 5000 UI 30 syringes precharged 0.2 ml', code:'7779872', price:'180'}),
	(afatinal5000:PharmaceuticalSpeciality {name:'Afatinal 5000 UI 30 syringes precharged 0.2 ml', code:'6584477', price:'190'}),

	(bemi5000)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(hibor5000),
	(bemi5000)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(afatinal5000)

// Dalteparin 2500 UI
CREATE
	(fragmin2500:PharmaceuticalSpeciality {name:'Fragmin 2500 UI 100 syringes precharged 0.2 ml', code:'6402191', price:'650'}),
	(boxol2500:PharmaceuticalSpeciality {name:'Boxol 2500 UI 100 syringes 0.2 ml', code:'6393024', price:'610'}),

	(dalte2500)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(fragmin2500),
	(dalte2500)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(boxol2500)

// Dalteparin 5000 UI
CREATE
	(fragmin5000:PharmaceuticalSpeciality {name:'Fragmin 5000 UI 100 syringes precharged 0.2 ml', code:'6402276', price:'695'}),
	(boxol5000:PharmaceuticalSpeciality {name:'Boxol 5000 UI 100 syringes 0.2 ml', code:'6393109', price:'605'}),

	(dalte5000)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(fragmin5000),
	(dalte5000)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(boxol5000)

// Amiodarone 150 mg tablets
CREATE
	(trangorex:PharmaceuticalSpeciality {name:'Trangorex 30 tablets', code:'6711569', price:'5'}),
	(amiodarone:PharmaceuticalSpeciality {name:'Amiodarone 30 tablets', code:'A001655', price:'4'}),

	(amio150mg)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(trangorex),
	(amio150mg)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(amiodarone)

// Dronedarone 400 mg tablets
CREATE
	(multaq:PharmaceuticalSpeciality {name:'Multaq 60 tablets', code:'6643433', price:'105'}),
	(dronedarone:PharmaceuticalSpeciality {name:'Dronedarone 60 tablets', code:'360600', price:'100'}),

	(drone400mg)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(multaq),
	(drone400mg)-[:HAS_PHARMACEUTICAL_SPECIALITY]->(dronedarone)

用例

该系统有许多用例,例如

  • 查找所有不同的解剖功能区域

  • 作用机制“抗血栓形成”的活性成分是什么?

  • 查找每种活性成分的所有剂型

  • 剂型“法莫替丁 10 毫克”的药品是什么?

或者更复杂的用例,例如

  • 每种作用机制的最便宜的药品是什么?

  • 查找作用机制为“抗溃疡”的所有药品,但排除活性成分为“法莫替丁”的药品


查找所有不同的解剖功能区域

MATCH (n:AnatomicFunctionalArea)
RETURN n.name AS `Name`, n.code AS `Code`

作用机制“抗血栓形成”的活性成分是什么?

MATCH (n:MechanismOfAction)-->(i:ActiveIngredient)
WHERE n.name='Antithrombotic:Heparin and derivatives'
RETURN i.name AS `Name`

查找每种活性成分的所有剂型

MATCH (n:ActiveIngredient)-->(i:Posology)
RETURN n.name AS `Active Ingredient`, collect(i.name) AS `Posology`
ORDER BY n.name ASC

剂型“法莫替丁 10 毫克”的药品是什么?

MATCH (n:Posology)-->(i:PharmaceuticalSpeciality)
WHERE n.name='Famotidine 10 mg'
RETURN i.name AS `Name`, i.price AS `Price`, i.code AS `Code`

每种作用机制的最便宜的药品是什么?

医院希望找出要购买哪些药品才能省钱。

MATCH (n:MechanismOfAction)-[*]->(i:PharmaceuticalSpeciality)
WITH n, min(i.price) AS Price
MATCH (n)-[*]->(i:PharmaceuticalSpeciality)
WHERE i.price = Price
RETURN n.name AS `Mechanism of action`, i.name AS `Medicine`, Price
ORDER BY n.name ASC

查找作用机制为“抗溃疡”的所有药品,但排除活性成分为“法莫替丁”的药品

此查询在需要为对活性成分过敏的人使用药品时很有用。

MATCH (n:MechanismOfAction)-->(a:ActiveIngredient)-[*]->(i:PharmaceuticalSpeciality)
WHERE a.name <> 'Famotidine'
AND n.name = 'Anti ulcer:H2 receptor antagonists'
RETURN i.name AS `Medicine`, i.price AS Price
ORDER BY Price ASC

联系方式

作者 Twitter

Alberto Roque Carrizo Fernández

@Roqueeeeee

Luis Martínez Menéndez

@luigi9215