Documentation
¶
Overview ¶
Package config provides functionality for the configuration of Simulated Hospital, especially around loading such configuration from files.
Index ¶
- func LoadNotesConfig(ctx context.Context, directory string) (map[string][]ClinicalNote, error)
- type AbnormalFlags
- type Address
- type ClinicalNote
- type CodeMapping
- type Data
- type DataAllergy
- type DataFiles
- type DocumentStatus
- type FHIRMapping
- type FirstNamesByCensus
- type Gender
- type HL7Allergy
- type HL7Config
- type HL7Diagnosis
- type HL7Document
- type HL7Procedure
- type Header
- type HeaderForType
- type MappableWeightedValue
- type Mapping
- type Names
- type OrderControl
- type OrderStatus
- type PatientAccountStatus
- type PatientClass
- type PatientClassAndType
- type PatientName
- type PrimaryFacility
- type RecordWithFreq
- type ResultStatus
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func LoadNotesConfig ¶
LoadNotesConfig loads all the files in the sample notes directory. Each sample note in the directory have to be named in the <filename>.<extension> format. We rely on this formatting to extract the ContentType of the document. Files not named in the right format will be skipped.
Types ¶
type AbnormalFlags ¶
type AbnormalFlags struct {
AboveHighNormal string `yaml:"above_high_normal"`
BelowLowNormal string `yaml:"below_low_normal"`
}
AbnormalFlags are the abnormal flag values to set in the OBX.8 Abnormal Flags field. Values: http://hl7-definition.caristix.com:9010/HL7%20v2.2/table/Default.aspx?version=HL7+v2.2&table=0078
type Address ¶
type Address struct {
// Cities contains a list of cities for address.
Cities []string
// Streets contains a list of street suffixes for addresses.
Streets []string
// Postalcodes contains a list of postal codes for addresses.
// If this is not specified, postal codes will be generated based on the country.
Postalcodes []string
// Country is the Country to set in the XAD.6 Country field.
Country string
// Types contains a list of types of addresses to be set in the
// XAD.7 Address Type field.
Types []string
}
Address contains data for generating the address.
type ClinicalNote ¶
ClinicalNote represents a document that contains a clinical note.
type CodeMapping ¶
type CodeMapping struct {
FHIR FHIRMapping
}
CodeMapping contains mappings from FHIR to those defined in the HL7 configuration.
type Data ¶
type Data struct {
Allergy DataAllergy
PatientName PatientName
Address Address
Nouns []string
Surnames []string
FirstNames *FirstNamesByCensus
Diagnoses []MappableWeightedValue
Procedures []MappableWeightedValue
Allergies []MappableWeightedValue
Ethnicities []sample.WeightedValue
PatientClass []sample.WeightedValue
// NotesConfig maps file extensions with available list of sample notes.
NotesConfig map[string][]ClinicalNote
ClinicalNoteTypes []string
}
Data contains data for generating HL7 messages.
type DataAllergy ¶
type DataAllergy struct {
// Reactions contains the possible types of allergy reactions to be set in
// the AL1.5.AllergyReaction field.
Reactions []string
// Percentage is a percentage of people with allergies, from 0 to 100.
Percentage int
// MaximumAllergies is the maximum number of allergies generated per person.
MaximumAllergies int `yaml:"maximum_allergies"`
}
DataAllergy contains data for generating allergies.
type DataFiles ¶
type DataFiles struct {
DataConfig string
Nouns string
Surnames string
Girls string
Boys string
Procedures string
Diagnoses string
Allergies string
Ethnicities string
PatientClass string
SampleNotesDir string
ClinicalNoteTypes string
}
DataFiles are the files to load data configuration from. All fields are required.
type DocumentStatus ¶
type DocumentStatus struct {
// Authenticated means that the document is authenticated.
Authenticated string `yaml:"authenticated"`
}
DocumentStatus is set in the OBR.25 Result Status field for a Clinical Note.
type FHIRMapping ¶
type FHIRMapping struct {
CodingSystems map[string]string `yaml:"coding_systems"`
// AllergySeverities contains the mapping from FHIR allergy severities to those defined in the HL7 configuration.
// Reference: https://www.hl7.org/fhir/valueset-reaction-event-severity.html
AllergySeverities map[string][]string `yaml:"allergy_severities"`
// AllergyTypes contains the mapping from FHIR allergy categories to those defined in the HL7 configuration.
// Reference: https://www.hl7.org/fhir/valueset-allergy-intolerance-category.html
AllergyTypes map[string][]string `yaml:"allergy_types"`
}
FHIRMapping contains the mappings from FHIR value sets to those defined in the HL7 configuration.
type FirstNamesByCensus ¶
FirstNamesByCensus represents Girls and Boys name grouped by their popularity by year.
type Gender ¶
Gender are the values to set in the PID.8 Sex field. Values: http://hl7-definition.caristix.com:9010/HL7%20v2.3.1/segment/PID?version=HL7%20v2.3.1&table=0001
type HL7Allergy ¶
type HL7Allergy struct {
// Types is a list of the possible types of allergy types to be set in the AL1.2.AllergyTypes field.
Types []string
// Severities is a list of the possible types of allergy severities to be set in the AL1.4.AllergySeverity field.
Severities []string
// CodingSystem is the allergy coding system to be set in the CE.3.NameOfCodingSystem field in the
// AL1.3.AllergyCode/Mnemonic/Description.
CodingSystem string `yaml:"coding_system"`
}
HL7Allergy contains the configuration for AL1 segment (allergies).
type HL7Config ¶
type HL7Config struct {
Allergy HL7Allergy
Diagnosis HL7Diagnosis
Document HL7Document
Procedure HL7Procedure
OrderControl OrderControl `yaml:"order_control"`
ResultStatus ResultStatus `yaml:"result_status"`
DocumentStatus DocumentStatus `yaml:"document_status"`
OrderStatus OrderStatus `yaml:"order_status"`
PatientClass PatientClass `yaml:"patient_class"`
PatientAccountStatus PatientAccountStatus `yaml:"patient_account_status"`
Gender Gender
AbnormalFlags AbnormalFlags `yaml:"abnormal_flags"`
// PrimaryFacility is the patient's primary facility.
// If none of the PrimaryFacility fields are set, we want the entire PD1.3 Patient Primary Facility field to be
// empty in the resulting HL7 message instead of a having field with separators but empty values.
// Making PrimaryFacility a pointer is an easy way to detect when all fields are unset.
PrimaryFacility *PrimaryFacility `yaml:"primary_facility"`
// HospitalService is the default value to be set in the PV1.10-Hospital Service field.
// This is overridden per pathway by the pathway's Consultant.
HospitalService string `yaml:"hospital_service"`
// CodingSystem is the default coding system of Order Profiles and their Test Types.
// It is used to construct the Coded Element.
CodingSystem string `yaml:"coding_system"`
Mapping CodeMapping
}
HL7Config is the configuration for HL7 messages where the values are important for HL7 compliance or specific uses of the HL7 standard.
type HL7Diagnosis ¶
type HL7Diagnosis struct {
// Types is a list of the possible types of diagnosis to be set in the DG1.6.DiagnosisTypes field.
Types []string
// CodingSystem is the diagnosis coding system to be set in the CE.3.NameOfCodingSystem field in the
// DG1.3.Diagnosis Code - DG1.
CodingSystem string `yaml:"coding_system"`
}
HL7Diagnosis is the configuration for DG1 segment (diagnosis).
type HL7Document ¶
type HL7Document struct {
// Types is the document types to be set in the TXA.2.DocumentType field.
Types []string
}
HL7Document contains configuration for a TXA segment (document).
type HL7Procedure ¶
type HL7Procedure struct {
// Types is the possible types of procedure to be set in the PR1.6.ProcedureTypes field.
Types []string
// CodingSystem is the procedure coding system to be set in the CE.3.NameOfCodingSystem field in the
// PR1.3.Procedure Code.
CodingSystem string `yaml:"coding_system"`
}
HL7Procedure is the configuration for PR1 segment (procedure).
type Header ¶
type Header struct {
// Default is the default configuration for all messages.
// Required.
Default HeaderForType `yaml:"default"`
// ORU is the configuration for ORU messages.
// Optional. If not present, ORU messages will use the Default.
ORU *HeaderForType
}
Header contains the configuration of the Message Header (MSH segment).
type HeaderForType ¶
type HeaderForType struct {
// SendingApplication is the value to set in MSH-3 Sending Application.
SendingApplication string `yaml:"sending_application"`
// SendingFacility is the value to set in MSH-4 Sending Facility.
SendingFacility string `yaml:"sending_facility"`
// ReceivingApplication is the value to set in MSH-5 Receiving Application.
ReceivingApplication string `yaml:"receiving_application"`
// ReceivingFacility is the value to set in MSH-6 Receiving Facility.
ReceivingFacility string `yaml:"receiving_facility"`
}
HeaderForType contains the fields in the Message Header (MSH segment). All fields must be present.
type MappableWeightedValue ¶
type MappableWeightedValue struct {
WeightedVal sample.WeightedValue
Mapping Mapping
}
MappableWeightedValue is used where a mapping needs to be kept alongside the WeightedValue when loading data.
type Names ¶
type Names struct {
// ByYear contains a list of names that were popular at the time period
// up to a given year. Eg. if the map contains the following data:
// 1904: [Mary], 1914: [Dory], 1924: [Florence]
// it means, that:
// - Mary was the most popular name in the time period up to 1904, and since
// there is no more historical data, it would be also used as the most
// popular name for the whole time period preceding 1904,
// - Dory was the most popular name in the time period between 1905 - 1914,
// - Florence was the most popular name in the time period between 1915 - 1924
// and since there is no newer data, it would be also used as the most
// popular name for all the years succeeding 1924.
// Note that the time periods don't have to be equal in length.
ByYear map[int][]string
// All contains the list of all unique names present in ByYear map,
// regardless of the time period when they were popular.
All []string
// MinYear is the minimum year present in the ByYear map.
MinYear int
// MaxYear is the maximum year present in the ByYear map.
MaxYear int
}
Names contains the division of names per year, and a list of all names.
type OrderControl ¶
type OrderControl struct {
// New represents a New Order.
New string
// OK means that the Order/service is accepted & OK.
OK string
// WithObservations is the order control value for a status of "Observations/Performed Service to follow" (the results
// have arrived).
WithObservations string `yaml:"with_observations"`
}
OrderControl contains the values for the ORC.1 Order Control field. Values: http://hl7-definition.caristix.com:9010/HL7%20v2.3.1/Default.aspx?version=HL7+v2.3.1&table=0119
type OrderStatus ¶
type OrderStatus struct {
// Completed means that the order is completed.
Completed string
// InProcess means that the status is in process, unspecified.
InProcess string `yaml:"in_process"`
}
OrderStatus for the ORC.5 Order Status field. Values: http://hl7-definition.caristix.com:9010/HL7%20v2.3.1/Default.aspx?version=HL7%20v2.5.1&table=0038
type PatientAccountStatus ¶
type PatientAccountStatus struct {
// Arrived means that the patient has been admitted.
Arrived string
// Cancelled means that the admission has been cancelled, e.g. the visit or a pending admission
// has been cancelled.
Cancelled string
// Finished means that the patient encounter has finished and the patient is no longer admitted.
Finished string
// Planned means that the patient is going to be admitted, but it not admitted yet.
Planned string
}
PatientAccountStatus are the patient account status values to set in the PV1.41.AccountStatus field.
type PatientClass ¶
type PatientClass struct {
// Outpatient is the default patient class for newly created patients and outpatients.
Outpatient string
// Inpatient is the patient class for inpatients (set after an ADT^A01 Admission message).
Inpatient string
}
PatientClass are the patient class values to set in the PV1.2.PatientClass field. Values: http://hl7-definition.caristix.com:9010/Default.aspx?version=HL7%20v2.5.1&table=0004
type PatientClassAndType ¶
PatientClassAndType represents a class and type pair.
type PatientName ¶
type PatientName struct {
// Degrees contains the list of degrees for patient names.
Degrees []string
// DegreePercentage is a percentage of people with degrees, from 0 to 100.
DegreePercentage int `yaml:"degree_percentage"`
// Suffixes contains a list of suffixes for patient names.
Suffixes []string
// SuffixPercentage is a percentage of people with suffixes, from 0 to 100.
SuffixPercentage int `yaml:"suffix_percentage"`
// FemalePrefixes contains a list of female name prefixes.
FemalePrefixes []string `yaml:"female_prefixes"`
// MalePrefixes contains a list of male name prefixes.
MalePrefixes []string `yaml:"male_prefixes"`
// MiddlenamePercentage is a percentage of people with middlenames,
// from 0 to 100.
MiddlenamePercentage int `yaml:"middlename_percentage"`
}
PatientName contains data for generating patient name.
type PrimaryFacility ¶
type PrimaryFacility struct {
// OrganizationName is the XON.1 (Organization name).
OrganizationName string `yaml:"organization_name"`
// IDNumber is the XON.3 (ID Number).
// The ID is of type string in the HL7 XON data type:
// http://hl7-definition.caristix.com:9010/HL7%20v2.3.1/segment/PD1?version=HL7%20v2.3.1&dataType=XON.
// We use a string because it allows for more generic values.
IDNumber string `yaml:"id_number"`
}
PrimaryFacility is the Primary Facility to set in the PD1.3 Patient Primary Facility field. Type XON. http://hl7-definition.caristix.com:9010/HL7%20v2.3.1/segment/PD1
type RecordWithFreq ¶
RecordWithFreq stores a record as a list of strings (e.g. from CSV) and its associated frequency value.
type ResultStatus ¶
type ResultStatus struct {
// Final means that the results are stored and verified. Can only be changed with a corrected result.
Final string
// Corrected means that the record coming over is a correction and thus replaces a final result.
Corrected string
}
ResultStatus for the OBR.25 Result Status field. Values: http://hl7-definition.caristix.com:9010/HL7%20v2.3.1/Default.aspx?version=HL7%20v2.5.1&table=0123