Community Development Project

Several people have expressed interest in helping with the site. Looking at skill sets and past issues with open source, I decided to direct interested people towards new features that serves my primary goal: Well documented suggestions to help people deal with a variety of health issues based on the latest studies.

Most people have a different tech stack then I do. My approach is to build a series of mini-console applications that intakes and writes to files. People are welcome to port these to their prefer tech stacks, for example PHP, JAVA or GO.

The projects are located at: https://github.com/Lassesen/SupplementPrescription, please email Ken/at\lassesen.com to get an invite.

We will be looking for reviewers (no coding skills needed, just the ability to read studies) to verify the medical facts added to the database (likely early 2022)

Possible Additions

The following are possible additions

  • Medication Condition to Modifier Improves, Worsen, No Impact, percentages
  • Modifier to Lab Results: Increases, no effect, decreases, percentages
  • Lab Results to Medical Conditions. ranges, percentages
  • Bacteria to Medical Conditions. ranges, percentages

Terms:

  • Modifier (drug, supplement, herb etc):
  • Lab Results: Cytokine (i.e. Interleukins (IL-10)), IgE, IgG, IgM,
  • Medical Conditions — open ended, but ideally with ICD-10 codes
  • Bacteria identified by NCBI Number

Ontology is critical

Information from study is often complex with a vast multiplicity of ‘world perspectives’

Components

PubMed Scanner

This takes a list of key words or phrases and search https://pubmed.ncbi.nlm.nih.gov/ for summaries containing those words. New summaries (not in prior downloads) are identified and written to a datetime file (removing duplicates).

Initial version: Net Core 3.1 with self-contained distribution, https://github.com/Lassesen/SupplementPrescription/tree/main/Source/PubMedScanner/PubMedScanner

PubMed Downloader

This takes the IDs from the scanner and downloads the summaries as individual XML files (can be changed to JSON)

The files follows PubMed specifications, an example is below:

First version: Net Core 3.1 with self-contained distribution https://github.com/Lassesen/SupplementPrescription/tree/main/Source/PubMedScanner/PubMedDownloader

Text Scanner and Data Encoder

This is up to individual developers to do. There are many text analysis tools available in R, PHP, Python, Ruby etc. The video below illustrates what I created for MicrobiomePrescription

Completed: Data Storage REST API (Json)

The following API specification is the current draft. The site is http://dev.microbiomeprescription.com.

The syntax is a simple [Subject] [Verb] [Object] with the option to support i.e. [Magnesium] [Reduces] [hypertension]

  • [Subject] [Subject Adjective] [Verb] [Adverb] [Object] [Object Adjective]

Example: [Licorice] [200 mg/day] [increases] [statistically Significant] [hypertension] [pregnant] [females]

  • Compound subjects are intended to be supported with AND always assumed
  • Compound objects are not supported

Public API – no credentials needed

  • /modifiers/ – get keys: m-
  • /conditions/ – get keys: d-
  • /labs/ – get keys:l-
  • /verbs/ -get keys: v-
  • /units/ – get keys: u-
  • /adverbs/ – get keys: a-
  • /citations/ – get keys: c-

Subject and Object Adjectives are expected to be in this pattern “objectadjective”:{ “value”: 20, “units”:”mm Hg”}

Developer API – Credentials needed

Documentation on the current API and how to do rapid development is available on this page

Delete will be supported but only for items lacking any reference (i.e. foreign key)

Adding Facts

Format is intended to be simple, but requires the use of identifiers as shown below.

The following are supported (with credentials)

  • facts/get – list
  • facts/show – converts the encoding to plain English (intended for reviewers to confirm interpretation)
  • facts/put – update existing facts
  • facts/post – add new facts
  • facts/delete – remove facts, this is a soft-delete unless the original person who added it is the person doing it. The original person must confirm the delete before it becomes a hard delete.

This is encoded via the keys, as shown below.

{
   "facts":[
      {
         "fact":{
            "subject":"m-1",
            "verb":"v-4",
            "object":"c-1"
         }
      },
      {
         "fact":{
            "subject":"m-1",
            "verb":"v-9",
            "object":"l-1"
         },
         "objectadjective":{
            "value":20,
            "units":"u-20"
         }
      },
      {
         "fact":{
            "subject":"m-1",
            "subjectadjective":{
               "value":200,
               "units":"u-89"
            },
            "verb":"v-9",
            "object":"l-1",
            "objectadjective":{
               "value":20,
               "units":"u-20"
            }
         }
      }
   ]
}