diff --git a/server/app/reports/diseases_with_icdo.rb b/server/app/reports/diseases_with_icdo.rb new file mode 100644 index 000000000..4010110ee --- /dev/null +++ b/server/app/reports/diseases_with_icdo.rb @@ -0,0 +1,48 @@ +require 'set' + +class DiseasesWithIcdo < Report + attr_reader :qualifying_disease_ids + + def self.name + "Counts of Diseases and EIDs with and without DO and ICD-O terms" + end + + def self.description + "Generate counts of Evidence Items and Diseases that have associated DOIDs and ICD-O terms" + end + + def setup + @qualifying_disease_ids = Set.new + candidate_diseases = Disease.joins(:evidence_items) + .where.not(evidence_items: {status: 'rejected'}) + .where.not(doid: nil).distinct + + candidate_diseases.find_each do |disease| + resp = MyDiseaseInfo.new(disease).response + if resp && resp[:icdo].present? + @qualifying_disease_ids << disease.id + end + sleep 0.1 + end + + + end + + def headers + [ + "Total Diseases", + "Total Diseases Associated with a DOID and ICD-O code", + "Total Non Rejected EIDs", + "Total Non Rejected EIDs Associated with a DOID and ICD-O code.", + ] + end + + def execute + data << [ + Disease.joins(:evidence_items).where.not(evidence_items: {status: 'rejected'}).distinct.count, + qualifying_disease_ids.size, + EvidenceItem.where.not(status: 'rejected').count, + EvidenceItem.where.not(status: 'rejected').where(disease_id: qualifying_disease_ids).count, + ] + end +end diff --git a/server/app/reports/eids_with_onset_terms.rb b/server/app/reports/eids_with_onset_terms.rb new file mode 100644 index 000000000..07ea1ee33 --- /dev/null +++ b/server/app/reports/eids_with_onset_terms.rb @@ -0,0 +1,41 @@ +class EidsWithOnsetTerms < Report + attr_reader :onset_terms + + def self.name + "EIDs with Onset Terms" + end + + def self.description + "Generate a list of EIDs with any of the following onset terms: Young adult, early young adult, intermediate young adult, late young adult, childhood, juvenile, pediatric, congenital, and infantile." + end + + def setup + @onset_terms = Phenotype.where(hpo_class: [ + 'Young adult onset', + 'Intermediate young adult onset', + 'Late young adult onset', + 'Childhood onset', + 'Juvenile onset', + 'Pediatric onset', + 'Congenital onset', + 'Infantile onset' + ]) + end + + def headers + [ + "EID", + "Link", + "HPO Term", + "HPO ID" + ] + end + + def execute + onset_terms.each do |term| + term.evidence_items.each do |eid| + data << ["EID#{eid.id}", "https://civicdb.org/#{eid.link}", term.hpo_class, term.hpo_id] + end + end + end +end diff --git a/server/app/reports/reports.rb b/server/app/reports/reports.rb index 18c2fa868..889018aaa 100644 --- a/server/app/reports/reports.rb +++ b/server/app/reports/reports.rb @@ -1,5 +1,7 @@ module Reports AVAILABLE_REPORTS = [ - OrganizationContributions + OrganizationContributions, + EidsWithOnsetTerms, + DiseasesWithIcdo ] end