7.5.0 Schema Changes

Schema changes between CareRight V7.4.2 and CareRight V7.5.0





New Tables

  • admission_category_bed_reservation_specialties
  • areas
  • bed_reservation_specialties
  • bed_reservations
  • object_equipments


New Columns

  • admission_categories.bed_allocation_assessment_name
  • admission_categories.discharge_assessment_name
  • admission_categories.intake_assessment_name
  • admission_categories.is_accommodation_required
  • bed_statuses.notes
  • bed_statuses.user_id
  • beds.current_status_id
  • beds.note
  • patients.cases_count
  • patients.clinical_notes_count
  • patients.events_count
  • patients.suggested_assessments_count
  • plan_elements.associated_assessment_name
  • plan_elements.care_plan_id
  • room_statuses.notes
  • room_statuses.user_id
  • rooms.area_id
  • rooms.current_status_id
  • rooms.note
  • suggested_assessments.completion_strategy
  • suggested_assessments.deadline_at
  • suggested_assessments.expires_at


Changed Columns

  • add_index :bed_reservations, :reserved_from
  • add_index :bed_reservations, :reserved_to
  • add_index :bed_statuses, :user_id
  • add_index :beds, :current_status_id
  • add_index :plan_elements, :care_plan_id
  • add_index :room_statuses, :user_id
  • add_index :rooms, :current_status_id
  • change_column :care_plans, :description, :text
  • change_column :care_plans, :title, :string
  • change_column :plan_elements, :description, :text
  • change_column :plan_elements, :frequency, :string
  • change_column :plan_elements, :title, :string
  • CREATE SEQUENCE guarantor_number
  • CREATE SEQUENCE line_allocation_number
  • CREATE SEQUENCE service_location_number
  • rename_column :care_plans, :end_date, :finish_at
  • rename_column :care_plans, :frequency_code, :frequency_cron
  • rename_column :care_plans, :long_description, :description
  • rename_column :care_plans, :review_frequency, :review_frequency_cron
  • rename_column :care_plans, :short_description, :title
  • rename_column :care_plans, :start_date, :start_at
  • rename_column :plan_elements, :long_description, :description
  • rename_column :plan_elements, :short_description, :title
  • rename_column :transfers, :approved, :approved_at
  • rename_column :transfers, :date, :transfer_at
  • rename_table :elements, :plan_elements
  • rename_table :plan_details, :care_plans

Deleted Tables

  • actual_conflicts
  • actual_milestones
  • classifications
  • contain_elements
  • element_associations
  • element_categories
  • element_classifications
  • element_milestones
  • element_restrictions
  • element_types
  • legacy_ip_record
  • fixed_times
  • location_time_periods
  • medicare_batch_payment_reports_old1
  • time_periods

Deleted Columns

  • contain_elements.milestone_no
  • care_plans.after_admit
  • care_plans.assessinstid
  • care_plans.class_name
  • care_plans.classification_no
  • care_plans.close_date
  • care_plans.code
  • care_plans.condition_id
  • care_plans.customised
  • care_plans.default_staff
  • care_plans.delay
  • care_plans.delay_period
  • care_plans.discipline
  • care_plans.drg_id
  • care_plans.duration_period
  • care_plans.duration_time
  • care_plans.element_id
  • care_plans.frequency_cron
  • care_plans.hide_repository
  • care_plans.icd
  • care_plans.is_disease
  • care_plans.last_update
  • care_plans.long_text
  • care_plans.milestone_id
  • care_plans.next_review
  • care_plans.oneoff_review
  • care_plans.override_reason
  • care_plans.parent_id
  • care_plans.pre_discharge_end_date
  • care_plans.pre_discharge_start_date
  • care_plans.problem_id
  • care_plans.root_item_id
  • care_plans.short_text
  • care_plans.special_time
  • care_plans.suggested_node
  • care_plans.variance
  • care_plans.variance_id
  • contain_elements.after_admit
  • contain_elements.classification_no
  • contain_elements.req_milestone
  • elements.adjust_req
  • elements.after_admit
  • elements.allow_time_adjust
  • elements.assessment_id
  • elements.break_page_after
  • elements.break_page_before
  • elements.class_name
  • elements.client_type
  • elements.codeclassverdate
  • elements.frequency_req
  • elements.instance_tag
  • elements.last_update
  • elements.link
  • elements.location
  • elements.long_text
  • elements.prev_version
  • elements.ref_type
  • elements.short_text
  • elements.special_time
  • elements.stay_period
  • elements.stay_time
  • elements.type_id
  • elements.usage
  • elements.use_after_discharge
  • elements.version
  • f_patient.PT_AC_STATUS
  • f_patient.PT_ACARE_DATE
  • f_patient.PT_ACTIV_DATE
  • f_patient.PT_ARC_DATE
  • f_patient.PT_CHANGE_DATE
  • f_patient.PT_COMP_RECORDS
  • f_patient.PT_DUE_DATE
  • f_patient.PT_EMAIL
  • f_patient.PT_FAX
  • f_patient.PT_FLAG
  • f_patient.PT_FLAG1
  • f_patient.PT_FLAG2
  • f_patient.PT_FLAG3
  • f_patient.PT_FLAG4
  • f_patient.PT_FLAG5
  • f_patient.PT_FUND_COVER
  • f_patient.PT_FUND_MEMB_DATE
  • f_patient.PT_FUND_MEMB_NO
  • f_patient.PT_FUND_NOTES
  • f_patient.PT_FUND_REF
  • f_patient.PT_GRAV_STAT
  • f_patient.PT_HARD_COPY
  • f_patient.PT_INPAT_IR_NUMB
  • f_patient.PT_INPAT_SL_REF
  • f_patient.PT_LAB_CB
  • f_patient.PT_LAB_LB
  • f_patient.PT_LAB_RB
  • f_patient.PT_LAB_RT
  • f_patient.PT_LOCK_COUNT
  • f_patient.PT_PAPER_FILE_ARCHIVE_DATE
  • f_patient.PT_PAPER_FILE_STATUS
  • f_patient.PT_PARITY
  • f_patient.PT_REF_NUMBER
  • f_patient.PT_SMS
  • f_patient.PT_SPARE1
  • f_patient.PT_SPARE2
  • f_patient.PT_SPARE3
  • f_patient.PT_SR_NOTE_NO
  • f_patient.XXPT_PICT_NO
  • plan_elements.code
  • plan_elements.end_date
  • plan_elements.start_date



CareRight 7.3.1 Changes


Receipt Numbers

We have swapped from referring to the f_counters table and the ct_rec_no field to a proper database sequence (receipt_number).

  • Removed column ct_counters.ct_rec_no
  • Create sequence receipt_numbers

This does not change the definition of affected columns that referenced this number. However it changed the behaviour. Importantly, where a transaction rolled back; previously this would discard any attempts to assign a new receipt number. 

From this release, this will continually increment the receipt numbers even if the transaction is rolled back. This may manifest as "missing" receipt numbers; but is an expected behaviour.

See also: https://learn.microsoft.com/en-us/sql/relational-databases/sequence-numbers/sequence-numbers?view=sql-server-ver16


existing_data = CounterSet.where(ct_number: 1).first
  start = 1
  start = CounterSet.next_counter_value("CT_REC_NO") if existing_data
  # historically went into:
  #   f_statement.stat_ref
  #   refunds.number
  #   receipt.number
  check = (Statement.maximum(:stat_ref) || 0) + 1
  start = check if check > start
  check = (Receipt.maximum(:number) || 0) + 1
  start = check if check > start
  check = (Refund.maximum(:number) || 0) + 1
  start = check if check > start
  case ActiveRecord::Base.connection.adapter_name.downcase
  when "sqlserver"
    execute <<~END_OF_SQL
      CREATE SEQUENCE receipt_number START WITH #{start} INCREMENT BY 1
    END_OF_SQL
  when "postgresql"
    execute <<~END_OF_SQL
      CREATE SEQUENCE receipt_number START #{start}
    END_OF_SQL
  else
    raise "Unhandled database type"
  end
  remove_column :f_counters, :ct_rec_no
end

While this change is small and should be routine, we are recommending customers have:

  • Appropriate database backups in place
  • A regression test plan to validate receipt creation post deployment functions as expected.