Neo4J
Neo4j is the world's leading open source Graph Database which is developed using Java technology. It is highly scalable and schema free (NoSQL).
POC for Healthcare using Neo4j
DoctorFinder!
This GraphGist helps users to find adequate drugs and specialists given their physical characteristics, location and current symptoms.
Query To Insert Node and Relationship
CREATE
(_6:DrugClass {name:"Bronchodilators"}),
(_7:DrugClass {name:"Corticosteroids"}),
(_8:DrugClass {name:"Xanthine"}),
(_9:Drug {name:"Salbutamol"}),
(_10:Drug {name:"Terbutaline"}),
(_11:Drug {name:"Bambuterol"}),
(_12:Drug {name:"Formoterol"}),
(_13:Drug {name:"Salmeterol"}),
(_14:Drug {name:"Beclometasone"}),
(_15:Drug {name:"Budesonide"}),
(_16:Drug {name:"Ciclesonide"}),
(_17:Drug {name:"Fluticasone"}),
(_18:Drug {name:"Mometasone"}),
(_19:Drug {name:"Betametasone"}),
(_20:Drug {name:"Prednisolone"}),
(_21:Drug {name:"Dilatrane"}),
(_22:Allergy {name:"Hypersensitivity to Betametasone"}),
(_23:Pathology {name:"Asthma"}),
(_24:Symptom {name:"Wheezing"}),
(_25:Symptom {name:"Chest tightness"}),
(_26:Symptom {name:"Cough"}),
(_27:Doctor {latitude:48.8573,longitude:2.35685,name:"Irving Matrix"}),
(_28:Doctor {latitude:46.83144,longitude:-71.28454,name:"Jack McKee"}),
(_29:Doctor {latitude:48.86982,longitude:2.32503,name:"Michaela Quinn"}),
(_30:DoctorSpecialization {name:"Physician"}),
(_31:DoctorSpecialization {name:"Angiologist"}),
(_6)-[:CURES {age_max:60,age_min:18,indication:"Adult asthma"}]->(_23),
(_7)-[:CURES {age_max:18,age_min:5,indication:"Child asthma"}]->(_23),
(_8)-[:CURES {age_max:60,age_min:18,indication:"Adult asthma"}]->(_23),
(_9)-[:BELONGS_TO_CLASS]->(_6),
(_10)-[:BELONGS_TO_CLASS]->(_6),
(_11)-[:BELONGS_TO_CLASS]->(_6),
(_12)-[:BELONGS_TO_CLASS]->(_6),
(_13)-[:BELONGS_TO_CLASS]->(_6),
(_14)-[:BELONGS_TO_CLASS]->(_7),
(_15)-[:BELONGS_TO_CLASS]->(_7),
(_16)-[:BELONGS_TO_CLASS]->(_7),
(_17)-[:BELONGS_TO_CLASS]->(_7),
(_18)-[:BELONGS_TO_CLASS]->(_7),
(_19)-[:BELONGS_TO_CLASS]->(_6),
(_19)-[:BELONGS_TO_CLASS]->(_7),
(_19)-[:MAY_CAUSE_ALLERGY]->(_22),
(_20)-[:BELONGS_TO_CLASS]->(_7),
(_21)-[:BELONGS_TO_CLASS]->(_8),
(_23)-[:MAY_MANIFEST_SYMPTOMS]->(_24),
(_23)-[:MAY_MANIFEST_SYMPTOMS]->(_25),
(_23)-[:MAY_MANIFEST_SYMPTOMS]->(_26),
(_27)-[:SPECIALISES_IN]->(_31),
(_28)-[:SPECIALISES_IN]->(_31),
(_29)-[:SPECIALISES_IN]->(_30),
(_30)-[:CAN_PRESCRIBE]->(_7),
(_31)-[:CAN_PRESCRIBE]->(_6)
After insert we can view all nodes and their relationship
UseCase - Search as you type
When I start typing my symptoms Then matching symptoms are returned in alphabetical order.
MATCH (s:Symptom)
WHERE toUpper(s.name)=~ toUpper('c.*')
RETURN s.name AS `Symptom`
ORDER BY s.name ASC
UseCase - Get all symptoms
To Get all the Symptoms
MATCH p=()-[r:MAY_MANIFEST_SYMPTOMS]->() RETURN p LIMIT 25
UseCase - get all physicians
Get all Physicians and their speciality
MATCH p=()-[r:SPECIALISES_IN]->() RETURN p LIMIT 25
UseCase - get all physicians filter by speciality
Get all physicians for one speciality
MATCH p=()-[r:SPECIALISES_IN]->(s:DoctorSpecialization) WHERE s.name = "Angiologist" RETURN p LIMIT 25