Beschrijving

Deze vignette omvat de instructies om de in het LIMS bewaarde resultaten op te halen in R. Dit werkt enkel binnen het netwerk van het INBO of indien verbonden via vpn met het netwerk.

Gegevens uit het LIMS Datawarehouse halen

Eerste gebruik

Indien het pakket nog nooit gebruikt is moet je het installeren via github met volgende code:

devtools::install_github("inbo/inbolims")

Ook als je het pakket lang niet meer gebruikt hebt kan het handig zijn deze bovenstaande code opnieuw te laten lopen zodat package updates geïnstalleerd worden.

Gewone gebruik

Iedere keer R opnieuw opgestart wordt zal je de inbolims library moeten laden

De belangrijkste functionaliteit in het script is de connectie met de databank en het ophalen van gegevens van een project. Dit doe je als volgt:

#maak connectie met databank
connection <- lims_connect()

#haal de rapportgegevens binnen uit de databank
rapport_data <- read_lims_data(connection = connection,
                               project = c("I-19W001-02"),
                               sql_template = "default")

Bovenstaande code haalt de data op voor het project I-19W001-02 (project = “I-19W001-02”) volgens de standaardtemplate (template = “default”). Als eerste variabele moet de databank connectie opgegeven worden, zodat de routine weet waar de gegevens uit gehaald moeten worden.

De beschikbare templates en geïmporteerde velden kan je terugvinden via volgende functies:

show_available_templates()
get_report_config_info(template="default")

Afgeleide routines (work in progress)

Staaloverzicht

Om een overzicht van de stalen te hebben van de ingelezen rapport_data.

staaloverzicht <- lims_report_samples(rapport_data)
head(staaloverzicht)

Op dit moment vereist bovenstaande routine nog heel wat velden, daarom dat dit enkel gegarandeerd is te werken met de default sql_template.

Kruistabel

Het formaat van rapport_data is in een lang dataformaat, waarbij ieder resultaat op een andere regel staat. Vaak is eerder gewenst de resultaten van een staal naast elkaar te zien:

kruistabel <- lims_report_xtab(rapport_data)
head(kruistabel)

Let hierbij wel op het gebruik, want informatie rond het al dan niet rond de detectielimiet te liggen verdwijnt in dit formaat.

Exporteren

Bovenstaande kruistabel kan je gemakkelijk naar een door excel leesbaar csv bestand converteren:

lims_report_export(kruistabel, path = "test_xtab.csv")
lims_report_export(rapport_data, path = "test.csv")

Geavanceerde datafuncties

Volledige query tonen

Via het argument show_query = TRUE kan je de volledige query zien waarmee de data bevraagd is. Deze query kan je dan gebruiken als basis om je data volledig gecustomiseerd binnen te halen.

connection <- lims_connect()
rapport_data <- read_lims_data(connection = connection,
                               project = c("I-19W001-02"),
                               sql_template = "default",
                               show_query = TRUE)
                               

Dit is bijvoorbeeld de query die erachter zit op 23 november 2023.

select  ContractID = c.[Contract],
Klant = r.[Customer],
Project = r.[Project],
VerantwoordelijkLabo = p.[ResponsibleLab],
LimsStaalNummer = s.[LIMSSampleNumber],
ExternSampleID = s.[FieldSampleID],
LaboCode = s.[LabSampleID],
OrigineelStaal = s.[LIMSOriginalSampleNumber],
SampleProduct = s.[Product],
ProductGrade = s.[MatrixDetail],
SamplingPoint = s.[SamplingPoint],
Matrix = s.[Matrix],
Monsternamedatum = s.[FieldSamplingDate],
Monsternemer = s.[FieldObserver],
Toestand = s.[SampleCondition],
VoorbehandelingExtern = s.[SamplePreparation],
Opmerking = s.[FieldSampleRemark],
LimsAnalyseNaam = r.[LimsAnalysisName],
LimsAnalyseVersie = a.[AnalysisVersion],
SapCode = a.[SAPcode],
AnalyseNaam = a.[AnalysisLabName],
Component = r.[Component],
Gerapporteerd = r.[IsReportable],
TestReplicaat = r.[TestReplicateCount],
ResultaatReplicaat = r.[ResultReplicate],
ResultaatInstrument = r.[Instrument],
Batch = r.[Batch],
ResultaatType = r.[ResultType],
Eenheid = u.[Unit],
WaardeRuw = r.[Result],
WaardeGeformatteerd = r.[ResultFormatted],
WaardeNumeriek = r.[ResultNumeric],
WaardeNumeriekGeformatteerd = r.[ResultFormattedNumeric],
BenedenLOQ = r.[isBelowLOQ],
VisueleMatrix = s.[VisualMatrix],
Plaat = s.[samplePlate],
PlaatPositie = s.[SamplePlatePosition],
ArchiefStaal = s.[IsArchiveSample],
Xcoord = s.[SampleLambertX],
Ycoord = s.[SampleLambertY],
Diepte = s.[SampleDepth],
Toponiem = s.[SampleToponym],
StaalStatus = s.[SampleStatus],
ResultaatStatus = r.[ResultStatus],
BatchInstrument = b.[BatchInstrument] from  dimSample s 
left join factResult r on r.SampleKey = s.SampleKey 
inner join dimProject p on r.ProjectKey = p.ProjectKey 
inner join dimContract c on r.ContractKey = c.ContractKey 
inner join dimAnalysis a on r.AnalysisKey = a.AnalysisKey 
left join dimUnit u on r.UnitKey = u.UnitKey 
left join dimBatch b on r.BatchKey = b.BatchKey where  r.Project in ('I-19W001-02') AND 
s.SampleStatus = 'A' AND 
r.ResultStatus= 'A' AND 
p.ProjectStatus = 'V' AND 
r.IsReportable=1

Deze query kan je dan gebruiken om een klassieke databankbevraging te doen als volgt:

rapport_data <- dbGetQuery(connection, querynaam)

Standaard templates

Er worden ook enkele templates voorzien om te selecteren welke velden je wil ophalen in de data, dan zullen enkel deze velden, alsook enkele verplichte velden opgehaald worden.

rapport_data <- read_lims_data(connection = connection,
                               project = c("I-19W001-02"),
                               sql_template = "minimal")

Basisstatistieken

Je kan heel rudimentair een overzicht en overzichtsplot opvragen van de data. Indien je geen plot wenst kan je plot = NULL zetten

statistieken <- lims_result_statistics(rapport_data, plot = "boxplot")
statistieken