DoctorFinder, Neo4J POC

DoctorFinder, Neo4J POC

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

1 (1).png

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

2.png

UseCase - Get all symptoms

To Get all the Symptoms

MATCH p=()-[r:MAY_MANIFEST_SYMPTOMS]->() RETURN p LIMIT 25

3.png

UseCase - get all physicians

Get all Physicians and their speciality

MATCH p=()-[r:SPECIALISES_IN]->() RETURN p LIMIT 25

4.png

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

5.png