renalware-core 2.0.0.pre.rc9 → 2.0.0.pre.rc10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/renalware/modules/_clinics.scss +1 -1
  3. data/app/assets/stylesheets/renalware/modules/_letters.scss +7 -0
  4. data/app/assets/stylesheets/renalware/partials/_navigation.scss +1 -1
  5. data/app/controllers/renalware/api/ukrdc/patients_controller.rb +2 -1
  6. data/app/controllers/renalware/application_controller.rb +13 -0
  7. data/app/controllers/renalware/base_controller.rb +0 -2
  8. data/app/controllers/renalware/concerns/cache_busting.rb +21 -0
  9. data/app/controllers/renalware/devise/passwords_controller.rb +0 -2
  10. data/app/controllers/renalware/devise/registrations_controller.rb +0 -2
  11. data/app/controllers/renalware/devise/sessions_controller.rb +0 -2
  12. data/app/controllers/renalware/events/events_controller.rb +2 -0
  13. data/app/controllers/renalware/letters/letters_controller.rb +1 -1
  14. data/app/controllers/renalware/pd/bag_types_controller.rb +1 -1
  15. data/app/controllers/renalware/virology/dashboards_controller.rb +15 -0
  16. data/app/controllers/renalware/virology/vaccinations_controller.rb +11 -0
  17. data/app/documents/renalware/patient_document.rb +9 -0
  18. data/app/jobs/hl7_message_example.yml +12 -12
  19. data/app/models/renalware/events/event.rb +28 -3
  20. data/app/models/renalware/pathology/create_observation_requests.rb +2 -1
  21. data/app/models/renalware/pathology/observation_description.rb +2 -0
  22. data/app/models/renalware/pathology/observation_descriptions_by_code_query.rb +2 -1
  23. data/app/models/renalware/pathology/observation_requests_attributes_builder.rb +14 -1
  24. data/app/models/renalware/pd/bag_type.rb +2 -0
  25. data/app/models/renalware/pd/capd_regime.rb +5 -1
  26. data/app/models/renalware/virology.rb +13 -0
  27. data/app/models/renalware/virology/profile.rb +8 -0
  28. data/app/models/renalware/virology/vaccination.rb +24 -0
  29. data/app/policies/renalware/virology/dasboard_policy.rb +8 -0
  30. data/app/policies/renalware/virology/vaccination_policy.rb +8 -0
  31. data/app/presenters/renalware/admissions/summary_part.rb +30 -0
  32. data/app/presenters/renalware/events/summary_part.rb +31 -0
  33. data/app/presenters/renalware/letters/summary_part.rb +48 -0
  34. data/app/presenters/renalware/medications/summary_part.rb +23 -0
  35. data/app/presenters/renalware/problems/summary_part.rb +19 -0
  36. data/app/presenters/renalware/renal/clinical_summary_presenter.rb +5 -90
  37. data/app/presenters/renalware/summary_part.rb +34 -0
  38. data/app/views/renalware/admissions/_summary_part.html.slim +14 -0
  39. data/app/views/renalware/clinical/_header.html.slim +3 -3
  40. data/app/views/renalware/clinics/visits/index.html.slim +0 -1
  41. data/app/views/renalware/events/events/_event.html.slim +2 -2
  42. data/app/views/renalware/events/events/_form.html.slim +1 -2
  43. data/app/views/renalware/events/events/_summary_part.html.slim +15 -0
  44. data/app/views/renalware/events/events/new.js.erb +2 -3
  45. data/app/views/renalware/events/events/simple/_event.html.slim +1 -2
  46. data/app/views/renalware/layouts/_patient.html.slim +1 -0
  47. data/app/views/renalware/letters/_summary_part.html.slim +16 -0
  48. data/app/views/renalware/letters/letters/index.html.slim +3 -3
  49. data/app/views/renalware/mdm_patients/_table.html.slim +1 -1
  50. data/app/views/renalware/medications/_summary_part.html.slim +18 -0
  51. data/app/views/renalware/patients/clinical_summaries/show.html.slim +6 -32
  52. data/app/views/renalware/patients/patients/_form.html.slim +13 -0
  53. data/app/views/renalware/patients/patients/show.html.slim +2 -0
  54. data/app/views/renalware/patients/patients/show/_psychosocial.html.slim +15 -0
  55. data/app/views/renalware/patients/side_menu/_general.html.slim +4 -0
  56. data/app/views/renalware/problems/problems/_summary_part.html.slim +16 -0
  57. data/app/views/renalware/virology/dashboards/_actions.html.slim +10 -0
  58. data/app/views/renalware/virology/dashboards/show.html.slim +6 -0
  59. data/app/views/renalware/virology/vaccinations/_cell.html.slim +2 -0
  60. data/app/views/renalware/virology/vaccinations/_inputs.html.slim +4 -0
  61. data/app/views/renalware/virology/vaccinations/_list.html.slim +14 -0
  62. data/app/views/renalware/virology/vaccinations/_toggled_cell.html.slim +8 -0
  63. data/config/locales/en-GB.yml +1 -3
  64. data/config/locales/en.yml +0 -11
  65. data/config/locales/renalware/age.yml +0 -1
  66. data/config/locales/renalware/clinical/allergies.en.yml +0 -3
  67. data/config/locales/renalware/clinical/body_composition.yml +0 -2
  68. data/config/locales/renalware/clinical/dry_weight.en.yml +0 -2
  69. data/config/locales/renalware/clinics/visit.yml +0 -2
  70. data/config/locales/renalware/feeds/file.en.yml +0 -1
  71. data/config/locales/renalware/hd/diary_slots.en.yml +0 -1
  72. data/config/locales/renalware/hd/prescription_administration.en.yml +0 -1
  73. data/config/locales/renalware/hd/session.en.yml +0 -1
  74. data/config/locales/renalware/hospitals/unit.yml +0 -2
  75. data/config/locales/renalware/letters/contact.en.yml +0 -1
  76. data/config/locales/renalware/letters/letter.en.yml +0 -2
  77. data/config/locales/renalware/low_clearance/profile.en.yml +0 -1
  78. data/config/locales/renalware/medications/prescription.yml +0 -2
  79. data/config/locales/renalware/messaging/internal/messages.en.yml +0 -2
  80. data/config/locales/renalware/patient.yml +0 -2
  81. data/config/locales/renalware/patients/side_menu.en.yml +1 -1
  82. data/config/locales/renalware/pd/assessments.en.yml +0 -1
  83. data/config/locales/renalware/pd/bag_types.yml +0 -2
  84. data/config/locales/renalware/pd/regime.en.yml +0 -2
  85. data/config/locales/renalware/pd/training_sessions.en.yml +0 -1
  86. data/config/locales/renalware/renal/profile.en.yml +0 -1
  87. data/config/locales/renalware/renal/registry.en.yml +0 -2
  88. data/config/locales/renalware/research/study_participant.en.yml +0 -1
  89. data/config/locales/renalware/snippets/snippets.en.yml +0 -1
  90. data/config/locales/renalware/transplants/donation.yml +0 -3
  91. data/config/locales/renalware/transplants/donor_followup.yml +0 -4
  92. data/config/locales/renalware/transplants/donor_operation.yml +0 -4
  93. data/config/locales/renalware/transplants/donor_workup.yml +0 -4
  94. data/config/locales/renalware/transplants/recipient_followup.yml +0 -2
  95. data/config/locales/renalware/transplants/recipient_operation.yml +0 -4
  96. data/config/locales/renalware/transplants/recipient_workup.yml +0 -4
  97. data/config/locales/renalware/transplants/registration.yml +0 -4
  98. data/config/locales/renalware/virology/virology.en.yml +18 -0
  99. data/config/routes.rb +8 -0
  100. data/db/migrate/20180122173922_create_virology_profiles.rb +6 -0
  101. data/db/migrate/20180213171805_add_display_order_cols_to_observation_descriptions.rb +12 -0
  102. data/db/seeds/default/events/event_types.csv +1 -0
  103. data/db/seeds/default/pathology/measurement_units.csv +45 -38
  104. data/db/seeds/default/pathology/measurement_units.rb +1 -0
  105. data/lib/renalware/configuration.rb +14 -0
  106. data/lib/renalware/engine.rb +0 -4
  107. data/lib/renalware/version.rb +1 -1
  108. data/lib/sql/index_case_stmt.rb +6 -6
  109. data/spec/factories/events/events_types.rb +6 -0
  110. data/spec/factories/virology/vaccinations.rb +6 -0
  111. metadata +265 -243
  112. data/app/controllers/application_controller.rb +0 -6
  113. data/app/models/renalware/pathology/view_current_observation_results.rb.dead +0 -47
  114. data/app/presenters/renalware/pathology/current_observation_results.dead/html_table_view.rb.dead +0 -67
  115. data/app/views/renalware/layouts/application.html.slim +0 -44
  116. data/app/views/renalware/patients/clinical_summaries/_admissions.html.slim +0 -11
  117. data/app/views/renalware/patients/clinical_summaries/_events.html.slim +0 -11
  118. data/app/views/renalware/patients/clinical_summaries/_letters.html.slim +0 -12
  119. data/app/views/renalware/patients/clinical_summaries/_prescriptions.html.slim +0 -16
  120. data/app/views/renalware/patients/clinical_summaries/_problems.html.slim +0 -13
@@ -31,5 +31,3 @@ en:
31
31
  recipient: Recipient
32
32
  sent_table:
33
33
  <<: *receipts_table
34
-
35
-
@@ -16,12 +16,10 @@ en:
16
16
  renalreg_recorded_by: Renal Reg decision recorded by
17
17
  rpv_recorded_by: RPV decision recorded by
18
18
  language: Main Language
19
-
20
19
  attributes:
21
20
  renalware/patient_document/history:
22
21
  alcohol:
23
22
  smoking:
24
-
25
23
  enumerize:
26
24
  renalware/patient:
27
25
  allergy_status:
@@ -17,6 +17,7 @@ en:
17
17
  access_profiles: Access Summary (%{count})
18
18
  prescriptions: Prescriptions (%{count})
19
19
  pathology: Pathology (%{count})
20
+ virology: Virology
20
21
  problems: Problems (%{count})
21
22
  modalities: Modalities (%{count})
22
23
  esrf: ESRF/Comorbidities
@@ -34,4 +35,3 @@ en:
34
35
  heading: Transplants
35
36
  donor_summary: Donor Summary
36
37
  recipient_summary: Recipient Summary
37
-
@@ -52,7 +52,6 @@ en:
52
52
  bowel_disease: Bowel Disease?
53
53
  bowel_disease_notes: Bowel Disease Notes
54
54
  added_comments: Added Comments
55
-
56
55
  enumerize:
57
56
  renalware/pd/assessment/document:
58
57
  system_choice:
@@ -8,7 +8,6 @@ en:
8
8
  title: PD Bag Types
9
9
  edit:
10
10
  title: Edit
11
-
12
11
  enumerize:
13
12
  renalware/pd/bag_type:
14
13
  glucose_strength:
@@ -16,7 +15,6 @@ en:
16
15
  low: Low
17
16
  medium: Medium
18
17
  high: High
19
-
20
18
  activerecord:
21
19
  attributes:
22
20
  renalware/pd/bag_type:
@@ -8,7 +8,6 @@ en:
8
8
  blank: "required if you have added an 'Additional manual exchange' bag"
9
9
  last_fill_volume:
10
10
  blank: "required if you have added a 'Last fill' bag"
11
-
12
11
  attributes:
13
12
  renalware/pd/regime:
14
13
  glucose_volume_low_strength: Low strength
@@ -73,7 +72,6 @@ en:
73
72
  role: Type
74
73
  days_quantity: No. per week
75
74
  days: Days
76
-
77
75
  enumerize:
78
76
  renalware/pd/regime_bag:
79
77
  role:
@@ -27,7 +27,6 @@ en:
27
27
  training_duration: Duration (days)
28
28
  outcome: Outcome
29
29
  training_comments: Training Comments
30
-
31
30
  enumerize:
32
31
  renalware/pd/training_session/document:
33
32
  outcome:
@@ -26,7 +26,6 @@ en:
26
26
  ischaemic_neuropathic_ulcers: Ischaemic/Neuropathic ulcers
27
27
  non_coronary_intervention: Angioplasty, vascular graft, aneurysm, stent (non-coronary)
28
28
  dementia: Dementia
29
-
30
29
  simple_form:
31
30
  hints:
32
31
  renal_profile:
@@ -8,5 +8,3 @@ en:
8
8
  comorbidities_at_esrf: Comorbidities
9
9
  first_seen_on: Date first seen
10
10
  cause_of_death: Cause of death
11
-
12
-
@@ -8,4 +8,3 @@ en:
8
8
  renalware/research/study_participant:
9
9
  participant_id:
10
10
  taken: is already in this study
11
-
@@ -1,7 +1,6 @@
1
1
  en:
2
2
  snippets:
3
3
  insert: Insert snippet
4
-
5
4
  activerecord:
6
5
  attributes:
7
6
  renalware/snippets/snippet:
@@ -1,5 +1,3 @@
1
- # https://github.com/plataformatec/simple_form#i18n
2
-
3
1
  en:
4
2
  activerecord:
5
3
  attributes:
@@ -12,7 +10,6 @@ en:
12
10
  mismatch_grade: Mismatch Grade
13
11
  paired_pooled_donation: Paired Pooled Donation
14
12
  notes: Notes
15
-
16
13
  enumerize:
17
14
  renalware/transplants/donation:
18
15
  relationship_with_recipient:
@@ -1,5 +1,3 @@
1
- # https://github.com/plataformatec/simple_form#i18n
2
-
3
1
  en:
4
2
  activerecord:
5
3
  attributes:
@@ -11,5 +9,3 @@ en:
11
9
  ukt_centre_code: Followup Centre Code
12
10
  dead_on: Date of Death
13
11
  notes: Notes
14
-
15
-
@@ -1,5 +1,3 @@
1
- # https://github.com/plataformatec/simple_form#i18n
2
-
3
1
  en:
4
2
  activerecord:
5
3
  attributes:
@@ -26,7 +24,6 @@ en:
26
24
  donor_returned_to_previous_general_activity_level: Donor returned to previous levels of general activity
27
25
  nb_months_to_return_to_previous_general_activity_level: Time after donation when previous levels attained
28
26
  subsequent_operation_indicator: Requirement for re-operation
29
-
30
27
  enumerize:
31
28
  renalware/transplants/donor_operation:
32
29
  operating_surgeon:
@@ -45,7 +42,6 @@ en:
45
42
  laparoscropic_intra: Laparoscopic operation - intraperitoneal
46
43
  laparoscropic_extra: Laparoscopic operation - extraperitoneal
47
44
  other: Other (please specify)
48
-
49
45
  simple_form:
50
46
  hints:
51
47
  transplants_donor_operation:
@@ -1,5 +1,3 @@
1
- # https://github.com/plataformatec/simple_form#i18n
2
-
3
1
  en:
4
2
  activemodel:
5
3
  attributes:
@@ -56,7 +54,6 @@ en:
56
54
  oral_gtt: Oral GTT
57
55
  protein_creatinine_ratio: Protein Creatinine Ratio
58
56
  sitting_blood_pressure: Sitting Blood Pressure
59
-
60
57
  errors:
61
58
  models:
62
59
  renalware/transplants/donor_workup_document/scores:
@@ -87,7 +84,6 @@ en:
87
84
  pooled_paired: "Pooled/paired donor"
88
85
  altruistic_non_directed: "Altruistic non-directed donor"
89
86
  other_living_non_related: "Other living non-related donor - please specify"
90
-
91
87
  simple_form:
92
88
  hints:
93
89
  transplants_donor_workup:
@@ -1,5 +1,3 @@
1
- # https://github.com/plataformatec/simple_form#i18n
2
-
3
1
  en:
4
2
  activerecord:
5
3
  attributes:
@@ -1,5 +1,3 @@
1
- # https://github.com/plataformatec/simple_form#i18n
2
-
3
1
  en:
4
2
  activerecord:
5
3
  attributes:
@@ -59,7 +57,6 @@ en:
59
57
  failure_description: Failure Description
60
58
  stent_removed_on: Stent Removal Date
61
59
  transplant_failed: Transplant failed?
62
-
63
60
  enumerize:
64
61
  renalware/transplants/recipient_operation:
65
62
  operation_type:
@@ -159,7 +156,6 @@ en:
159
156
  trauma_rta_pushbike: "Trauma RTA - pushbike"
160
157
  trauma_rta_unknown: "Trauma RTA - unknown type"
161
158
  unknown: "Unknown"
162
-
163
159
  simple_form:
164
160
  hints:
165
161
  transplants_recipient_operation:
@@ -1,5 +1,3 @@
1
- # https://github.com/plataformatec/simple_form#i18n
2
-
3
1
  en:
4
2
  activemodel:
5
3
  attributes:
@@ -67,14 +65,12 @@ en:
67
65
  full: Full
68
66
  partial: Partial
69
67
  refused: Refused transplant
70
-
71
68
  simple_form:
72
69
  hints:
73
70
  transplants_recipient_workup:
74
71
  document:
75
72
  consent:
76
73
  full_name: Your name or the person who consented
77
-
78
74
  renalware:
79
75
  transplants:
80
76
  recipient_workups:
@@ -1,5 +1,3 @@
1
- # https://github.com/plataformatec/simple_form#i18n
2
-
3
1
  en:
4
2
  activerecord:
5
3
  attributes:
@@ -36,7 +34,6 @@ en:
36
34
  rejection_risk: Rejection Risk
37
35
  to_be_listed_for_other_organs: "In addition to this registration, is the patient to be listed for other organ(s)?"
38
36
  transplant_type: Transplant Type
39
-
40
37
  enumerize:
41
38
  renalware/transplants/registration_document/organs:
42
39
  transplant_type:
@@ -45,7 +42,6 @@ en:
45
42
  pancreas: Pancreas only
46
43
  kidney_liver: Kidney and liver
47
44
  liver: Liver only
48
-
49
45
  simple_form:
50
46
  hints:
51
47
  transplants_registration:
@@ -0,0 +1,18 @@
1
+ en:
2
+ renalware:
3
+ virology:
4
+ vaccinations:
5
+ list:
6
+ title: Vaccinations
7
+ add: Add
8
+ dashboards:
9
+ actions:
10
+ add_vaccination: Vaccination
11
+ enumerize:
12
+ renalware/virology/vaccination/document:
13
+ type:
14
+ hbv1: HBV Vaccination 1
15
+ hbv2: HBV Vaccination 2
16
+ hbv3: HBV Vaccination 3
17
+ hbv4: HBV Vaccination 4
18
+ hbv_booster: HBV Booster
data/config/routes.rb CHANGED
@@ -415,6 +415,14 @@ Renalware::Engine.routes.draw do
415
415
  resources :required_observations, only: :index
416
416
  end
417
417
 
418
+ namespace :virology do
419
+ resource :dashboard, only: :show, path: "/dashboard"
420
+
421
+ resources :vaccinations,
422
+ only: [:new, :create, :edit, :update],
423
+ defaults: { slug: :vaccinations }
424
+ end
425
+
418
426
  # Problems
419
427
  resources :problems, controller: "problems/problems" do
420
428
  post :sort, on: :collection
@@ -0,0 +1,6 @@
1
+ class CreateVirologyProfiles < ActiveRecord::Migration[5.1]
2
+ def change
3
+ create_table :virology_profiles do |t|
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,12 @@
1
+ class AddDisplayOrderColsToObservationDescriptions < ActiveRecord::Migration[5.1]
2
+ def change
3
+ add_column :pathology_observation_descriptions,
4
+ :display_order,
5
+ :integer,
6
+ index: :unique
7
+ add_column :pathology_observation_descriptions,
8
+ :display_order_letters,
9
+ :integer,
10
+ index: :unique
11
+ end
12
+ end
@@ -5,3 +5,4 @@
5
5
  "Plasma Exchange",,
6
6
  "PD Line Change",,"pd_line_changes"
7
7
  "Investigation","Renalware::Events::Investigation","investigations"
8
+ "Vaccination","Renalware::Virology::Vaccination","vaccinations"
@@ -1,38 +1,45 @@
1
- "name","description"
2
- "%",""
3
- "10&#8310;L","10 to the 6 Litres"
4
- "10&#8313;L","10 to the 9 Litres"
5
- "10&sup1;&sup2;L","10 to the 12 Litres"
6
- "fL",""
7
- "g/24h",""
8
- "g/dL",""
9
- "g/L",""
10
- "g/L",""
11
- "IU/L",""
12
- "mEq/24h",""
13
- "mEq/L",""
14
- "mg/24h",""
15
- "mg/d",""
16
- "mg/dL",""
17
- "million/mm&sup3;","million/cubic millimetres"
18
- "min",""
19
- "mIU/L",""
20
- "mm Hg",""
21
- "mm&sup3;","cubic millimetres"
22
- "mm/h",""
23
- "mmol/d",""
24
- "mmol/kg",""
25
- "mmol/L",""
26
- "mOsm/kg",""
27
- "mU/mL",""
28
- "ng/dL",""
29
- "ng/L",""
30
- "ng/mL",""
31
- "nmol/L",""
32
- "pg/mL",""
33
- "sec",""
34
- "U/L",""
35
- "µm3",""
36
- "μg/dL",""
37
- g/L",""
38
- "μmol/L",""
1
+ "id","name","description"
2
+ "1","%",""
3
+ "2","10&#8310;L","10 to the 6 Litres"
4
+ "3","10&#8313;L","10 to the 9 Litres"
5
+ "4","10&sup1;&sup2;L","10 to the 12 Litres"
6
+ "5","fL",""
7
+ "6","g/24h",""
8
+ "7","g/dL",""
9
+ "8","g/L",""
10
+ "9","IU/L",""
11
+ "10","mEq/24h",""
12
+ "11","mEq/L",""
13
+ "12","mg/24h",""
14
+ "13","mg/d",""
15
+ "14","mg/dL",""
16
+ "15","million/mm&sup3;","million/cubic millimetres"
17
+ "16","min",""
18
+ "17","mIU/L",""
19
+ "18","mm Hg",""
20
+ "19","mm&sup3;","cubic millimetres"
21
+ "20","mm/h",""
22
+ "21","mmol/d",""
23
+ "22","mmol/kg",""
24
+ "23","mmol/L",""
25
+ "24","mOsm/kg",""
26
+ "25","mU/mL",""
27
+ "26","ng/dL",""
28
+ "27","ng/L",""
29
+ "28","ng/mL",""
30
+ "29","nmol/L",""
31
+ "30","pg/mL",""
32
+ "31","sec",""
33
+ "32","U/L",""
34
+ "33","µm3",""
35
+ "34","μg/dL",""
36
+ "35","μg/L",""
37
+ "36","μmol/L",""
38
+ "37","mg/mmol",""
39
+ "38","mmol/mol",""
40
+ "39","pmol/L",""
41
+ "40","ratio",""
42
+ "41","ml/min",""
43
+ "42","pmol/h/mgHb",""
44
+ "43","mg/L",""
45
+ "44","μg/g",""
@@ -5,6 +5,7 @@ module Renalware
5
5
 
6
6
  CSV.foreach(file_path, headers: true) do |row|
7
7
  Pathology::MeasurementUnit.find_or_create_by!(
8
+ id: row["id"],
8
9
  name: row["name"],
9
10
  description: row["description"]
10
11
  )
@@ -48,6 +48,20 @@ module Renalware
48
48
  ENV["FALLBACK_EMAIL_ADDRESS_FOR_TEST_MESSAGES"]
49
49
  end
50
50
  config_accessor(:ukrdc_sending_facility_name) { ENV["UKRDC_SENDING_FACILITY_NAME"] }
51
+
52
+ # A host app can override this to add/remove/re-order the clinical summary display
53
+ # Note these have to be strings - they mapped to constants in ClinicalSummaryPresenter.
54
+ config_accessor(:page_layouts) {
55
+ {
56
+ clinical_summary: %w(
57
+ Renalware::Problems::SummaryPart
58
+ Renalware::Medications::SummaryPart
59
+ Renalware::Letters::SummaryPart
60
+ Renalware::Events::SummaryPart
61
+ Renalware::Admissions::SummaryPart
62
+ )
63
+ }
64
+ }
51
65
  end
52
66
 
53
67
  def self.config
@@ -65,10 +65,6 @@ module Renalware
65
65
  config.autoload_paths += Dir["#{config.root}/lib/**/"]
66
66
  config.autoload_paths += %W(#{config.root}/app/validators/concerns)
67
67
 
68
- config.to_prepare do
69
- Devise::SessionsController.layout "layouts/application"
70
- end
71
-
72
68
  config.generators do |g|
73
69
  g.test_framework :rspec
74
70
  g.fixture_replacement :factory_girl, dir: "../../spec/factories"