// CLQMS Database Schema // Generated from app/Models/ directory // Database Markup Language (DBML) for dbdiagram.io and other tools // ============================================ // TABLE 1: Patient Management // ============================================ Table patient { InternalPID int [pk, increment] PatientID varchar(255) AlternatePID varchar(255) Prefix varchar(50) NameFirst varchar(255) NameMiddle varchar(255) NameMaiden varchar(255) NameLast varchar(255) Suffix varchar(50) NameAlias varchar(255) Sex varchar(10) Birthdate datetime PlaceOfBirth varchar(255) Street_1 varchar(255) Street_2 varchar(255) Street_3 varchar(255) City varchar(100) Province varchar(100) ZIP varchar(20) Country varchar(100) EmailAddress1 varchar(255) EmailAddress2 varchar(255) Phone varchar(50) MobilePhone varchar(50) AccountNumber varchar(100) Race varchar(50) MaritalStatus varchar(50) Religion varchar(50) Ethnic varchar(50) Citizenship varchar(100) DeathIndicator boolean TimeOfDeath datetime Custodian int [ref: > patient.InternalPID] LinkTo int [ref: > patient.InternalPID] CreateDate datetime [not null] DelDate datetime } Table patidt { PatIdtID int [pk, increment] InternalPID int [not null, ref: > patient.InternalPID] IdentifierType varchar(100) Identifier varchar(255) EffectiveDate datetime ExpirationDate datetime CreateDate datetime [not null] DelDate datetime } Table patcom { PatComID int [pk, increment] InternalPID int [not null, ref: > patient.InternalPID] Comment text CreateDate datetime [not null] EndDate datetime } Table patatt { PatAttID int [pk, increment] InternalPID int [not null, ref: > patient.InternalPID] UserID int Address text CreateDate datetime [not null] DelDate datetime } // ============================================ // TABLE 2: Visit Management // ============================================ Table patvisit { InternalPVID int [pk, increment] InternalPID int [not null, ref: > patient.InternalPID] EpisodeID int PVID varchar(100) CreateDate datetime [not null] EndDate datetime ArchivedDate datetime DelDate datetime } Table patvisitadt { PVADTID int [pk, increment] InternalPVID int [not null, ref: > patvisit.InternalPVID] LocationID int [ref: > location.LocationID] ADTCode varchar(50) AttDoc varchar(255) RefDoc varchar(255) AdmDoc varchar(255) CnsDoc varchar(255) CreateDate datetime [not null] EndDate datetime ArchivedDate datetime DelDate datetime } Table patdiag { InternalPVID int [pk, increment] InternalPVID int [not null, ref: > patvisit.InternalPVID] InternalPID int [not null, ref: > patient.InternalPID] DiagCode varchar(50) Diagnosis varchar(255) CreateDate datetime [not null] EndDate datetime ArchivedDate datetime DelDate datetime } // ============================================ // TABLE 3: Organization Structure // ============================================ Table account { AccountID int [pk, increment] AccountName varchar(255) Initial varchar(50) Street_1 varchar(255) Street_2 varchar(255) Street_3 varchar(255) City varchar(100) Province varchar(100) ZIP varchar(20) Country varchar(100) AreaCode varchar(20) EmailAddress1 varchar(255) EmailAddress2 varchar(255) Phone varchar(50) Fax varchar(50) Parent int [ref: > account.AccountID] CreateDate datetime [not null] EndDate datetime } Table site { SiteID int [pk, increment] AccountID int [not null, ref: > account.AccountID] Parent int [ref: > site.SiteID] SiteTypeID int SiteClassID int SiteCode varchar(50) SiteName varchar(255) ME varchar(50) CreateDate datetime [not null] EndDate datetime } Table department { DepartmentID int [pk, increment] DisciplineID int [ref: > discipline.DisciplineID] SiteID int [ref: > site.SiteID] DepartmentCode varchar(50) DepartmentName varchar(255) CreateDate datetime [not null] EndDate datetime } Table discipline { DisciplineID int [pk, increment] SiteID int [ref: > site.SiteID] Parent int [ref: > discipline.DisciplineID] DisciplineCode varchar(50) DisciplineName varchar(255) CreateDate datetime [not null] EndDate datetime } Table workstation { WorkstationID int [pk, increment] DepartmentID int [ref: > department.DepartmentID] LinkTo int [ref: > workstation.WorkstationID] EquipmentID int WorkstationCode varchar(50) WorkstationName varchar(255) Type varchar(50) Enable boolean CreateDate datetime [not null] EndDate datetime } // ============================================ // TABLE 4: Location Management // ============================================ Table location { LocationID int [pk, increment] SiteID int [not null, ref: > site.SiteID] Parent int [ref: > location.LocationID] LocCode varchar(50) LocFull varchar(255) Description text LocType varchar(50) CreateDate datetime [not null] EndDate datetime } Table locationaddress { LocationID int [pk, ref: > location.LocationID] Province int [ref: > areageo.AreaGeoID] City int [ref: > areageo.AreaGeoID] Street1 varchar(255) Street2 varchar(255) PostCode varchar(20) GeoLocationSystem varchar(50) GeoLocationData text Phone varchar(50) Email varchar(255) CreateDate datetime [not null] EndDate datetime } Table areageo { AreaGeoID int [pk, increment] Parent int [ref: > areageo.AreaGeoID] AreaCode varchar(50) Class varchar(50) AreaName varchar(255) } // ============================================ // TABLE 5: Test Management // ============================================ Table testdefsite { TestSiteID int [pk, increment] SiteID int [not null, ref: > site.SiteID] TestSiteCode varchar(50) TestSiteName varchar(255) TestType varchar(50) // TEST, PARAM, CALC, GROUP, TITLE Description text SeqScr int SeqRpt int IndentLeft int FontStyle varchar(50) VisibleScr boolean VisibleRpt boolean CountStat boolean CreateDate datetime [not null] StartDate datetime EndDate datetime } Table testdeftech { TestTechID int [pk, increment] TestSiteID int [not null, ref: > testdefsite.TestSiteID] DisciplineID int [ref: > discipline.DisciplineID] DepartmentID int [ref: > department.DepartmentID] VSet int ResultType varchar(50) // NM, TX, DT, TM, VS, HL7 RefType varchar(50) // NUM, TXT, VSET ReqQty decimal(10,4) ReqQtyUnit varchar(20) Unit1 varchar(50) Factor decimal(10,6) Unit2 varchar(50) Decimal int CollReq text Method varchar(255) ExpectedTAT int CreateDate datetime [not null] EndDate datetime } Table testdefcal { TestCalID int [pk, increment] TestSiteID int [not null, ref: > testdefsite.TestSiteID] DisciplineID int [ref: > discipline.DisciplineID] DepartmentID int [ref: > department.DepartmentID] FormulaInput varchar(500) FormulaCode text RefType varchar(50) Unit1 varchar(50) Factor decimal(10,6) Unit2 varchar(50) Decimal int Method varchar(255) CreateDate datetime [not null] EndDate datetime } Table testdefgrp { TestGrpID int [pk, increment] TestSiteID int [not null, ref: > testdefsite.TestSiteID] Member int [ref: > testdefsite.TestSiteID] CreateDate datetime [not null] EndDate datetime } Table testmap { TestMapID int [pk, increment] TestSiteID int [not null, ref: > testdefsite.TestSiteID] ConDefID int [ref: > containerdef.ConDefID] HostType varchar(50) HostID varchar(100) HostDataSource varchar(100) HostTestCode varchar(100) HostTestName varchar(255) ClientType varchar(50) ClientID varchar(100) ClientDataSource varchar(100) ClientTestCode varchar(100) ClientTestName varchar(255) CreateDate datetime [not null] EndDate datetime } // ============================================ // TABLE 6: Reference Ranges // ============================================ Table refnum { RefNumID int [pk, increment] SiteID int [not null, ref: > site.SiteID] TestSiteID int [not null, ref: > testdefsite.TestSiteID] SpcType varchar(50) Sex varchar(10) Criteria varchar(255) AgeStart int AgeEnd int NumRefType varchar(50) // NR, CR RangeType varchar(50) // LL-UL, LL, UL, ABS LowSign varchar(5) Low decimal(15,5) HighSign varchar(5) High decimal(15,5) Display varchar(50) Flag varchar(10) Interpretation text Notes text CreateDate datetime [not null] StartDate datetime EndDate datetime } Table reftxt { RefTxtID int [pk, increment] SiteID int [not null, ref: > site.SiteID] TestSiteID int [not null, ref: > testdefsite.TestSiteID] SpcType varchar(50) Sex varchar(10) Criteria varchar(255) AgeStart int AgeEnd int TxtRefType varchar(50) // TX, VS RefTxt text Flag varchar(10) Notes text CreateDate datetime [not null] StartDate datetime EndDate datetime } Table refvset { RefVSetID int [pk, increment] SiteID int [not null, ref: > site.SiteID] TestSiteID int [not null, ref: > testdefsite.TestSiteID] SpcType varchar(50) Sex varchar(10) AgeStart int AgeEnd int RefTxt varchar(255) CreateDate datetime [not null] EndDate datetime } Table refthold { RefTHoldID int [pk, increment] SiteID int [not null, ref: > site.SiteID] TestSiteID int [not null, ref: > testdefsite.TestSiteID] SpcType varchar(50) Sex varchar(10) AgeStart int AgeEnd int Threshold decimal(15,5) BelowTxt text AboveTxt text GrayzoneLow decimal(15,5) GrayzoneHigh decimal(15,5) GrayzoneTxt text CreateDate datetime [not null] EndDate datetime } // ============================================ // TABLE 7: Specimen Management // ============================================ Table specimen { InternalSID int [pk, increment] SID varchar(17) [not null, unique] SiteID int [not null, ref: > site.SiteID] OrderID varchar(13) ConDefID int [ref: > containerdef.ConDefID] Parent int [ref: > specimen.InternalSID] Qty decimal(10,4) Unit varchar(20) GenerateBy varchar(100) SchDateTime datetime CreateDate datetime [not null] EndDate datetime ArchiveDate datetime } Table specimenstatus { SpcStaID int [pk, increment] SID varchar(17) [not null, ref: > specimen.SID] OrderID varchar(13) CurrSiteID int [ref: > site.SiteID] CurrLocID int [ref: > location.LocationID] UserID int SpcAct varchar(50) ActRes varchar(50) SpcStatus varchar(50) Qty decimal(10,4) Unit varchar(20) SpcCon varchar(50) Comment text Origin varchar(100) GeoLocationSystem varchar(50) GeoLocationData text DIDType varchar(50) DID varchar(100) CreateDate datetime [not null] EndDate datetime ArchiveDate datetime } Table specimencollection { SpcColID int [pk, increment] SpcStaID int [not null, ref: > specimenstatus.SpcStaID] SpRole varchar(50) ColMethod varchar(50) BodySite varchar(50) CntSize varchar(50) FastingVolume decimal(10,4) ColStart datetime ColEnd datetime CreateDate datetime [not null] EndDate datetime ArchiveDate datetime } Table specimenprep { SpcPrpID int [pk, increment] SpcStaID int [not null, ref: > specimenstatus.SpcStaID] Description text Method varchar(255) Additive varchar(100) AddQty decimal(10,4) AddUnit varchar(20) PrepStart datetime PrepEnd datetime CreateDate datetime [not null] EndDate datetime ArchiveDate datetime } Table containerdef { ConDefID int [pk, increment] SiteID int [not null, ref: > site.SiteID] ConCode varchar(50) ConName varchar(255) ConDesc text Additive varchar(100) ConClass varchar(50) Color varchar(50) CreateDate datetime [not null] EndDate datetime } // ============================================ // TABLE 8: Order Management // ============================================ Table ordertest { InternalOID int [pk, increment] OrderID varchar(13) [not null, unique] PlacerID varchar(100) InternalPID int [not null, ref: > patient.InternalPID] SiteID int [ref: > site.SiteID] PVADTID int [ref: > patvisitadt.PVADTID] ReqApp varchar(100) Priority varchar(50) TrnDate datetime EffDate datetime CreateDate datetime [not null] EndDate datetime ArchiveDate datetime DelDate datetime } Table patres { ResultID int [pk, increment] SiteID int [ref: > site.SiteID] OrderID varchar(13) InternalSID int [ref: > specimen.InternalSID] SID varchar(17) SampleID varchar(100) TestSiteID int [ref: > testdefsite.TestSiteID] WorkstationID int [ref: > workstation.WorkstationID] EquipmentID int RefNumID int [ref: > refnum.RefNumID] RefTxtID int [ref: > reftxt.RefTxtID] TestSiteCode varchar(50) AspCnt int Result text SampleType varchar(50) ResultDateTime datetime CreateDate datetime [not null] EndDate datetime ArchiveDate datetime DelDate datetime } // ============================================ // TABLE 9: Contact Management // ============================================ Table contact { ContactID int [pk, increment] NameFirst varchar(255) NameLast varchar(255) Title varchar(100) Initial varchar(50) Birthdate datetime EmailAddress1 varchar(255) EmailAddress2 varchar(255) Phone varchar(50) MobilePhone1 varchar(50) MobilePhone2 varchar(50) Specialty varchar(100) SubSpecialty varchar(100) CreateDate datetime [not null] EndDate datetime } Table contactdetail { ContactDetID int [pk, increment] ContactID int [not null, ref: > contact.ContactID] SiteID int [ref: > site.SiteID] OccupationID int [ref: > occupation.OccupationID] ContactCode varchar(50) ContactEmail varchar(255) JobTitle varchar(100) Department varchar(100) ContactStartDate datetime ContactEndDate datetime } Table medicalspecialty { SpecialtyID int [pk, increment] Parent int [ref: > medicalspecialty.SpecialtyID] SpecialtyText varchar(255) Title varchar(100) CreateDate datetime [not null] EndDate datetime } Table occupation { OccupationID int [pk, increment] OccCode varchar(50) OccText varchar(255) Description text CreateDate datetime [not null] } // ============================================ // TABLE 10: Value Sets // ============================================ Table valuesetdef { VSetID int [pk, increment] SiteID int [not null, ref: > site.SiteID] VSName varchar(255) VSDesc text CreateDate datetime [not null] EndDate datetime } Table valueset { VID int [pk, increment] SiteID int [not null, ref: > site.SiteID] VSetID int [not null, ref: > valuesetdef.VSetID] VCategory varchar(100) VOrder int VValue varchar(255) VDesc varchar(255) CreateDate datetime [not null] EndDate datetime } // ============================================ // TABLE 11: System / Counter // ============================================ Table counter { CounterID int [pk, increment] CounterValue bigint CounterStart bigint CounterEnd bigint CounterReset varchar(50) CreateDate datetime [not null] EndDate datetime } Table edgeres { EdgeResID int [pk, increment] SiteID int [ref: > site.SiteID] InstrumentID int SampleID varchar(100) PatientID varchar(100) Payload text Status varchar(50) AutoProcess boolean ProcessedAt datetime ErrorMessage text CreateDate datetime [not null] EndDate datetime ArchiveDate datetime DelDate datetime } Table zones { id int [pk, increment] name varchar(255) code varchar(50) type varchar(50) description text status varchar(50) created_at datetime updated_at datetime }