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.
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.
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")
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
.
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.
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")
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)
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")
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