• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

bestanden samenvoegen

Status
Niet open voor verdere reacties.
bij het runnen van die macro krijg ik een error:

object variable or with block variable not set
 
Verwijder de regel 'Option Explicit'
En de voorwaarde is natuurlijk dat er alleen maar patiëntnummers bij labuitlsagen staan van patiënten die ook op de erste sheet als nummer voorkomen.

Code:
Sub tst()
  on error resume next
  sq = Sheets("Sheet2").[A1].CurrentRegion.Columns(1).Resize(, 3)
  For j = 2 To UBound(sq)
    With Sheets("Sheet1").Columns(30).Find(sq(j, 1))
      if err.number=0 then 
      If sq(j, 3) >= .Offset(, 6) And sq(j, 3) <= .Offset(, 7) Then sheets("Sheet1").cells(j,columns.count).end(xltoLeft).offset(,1).Resize(, 15) = Sheets("Sheet2").Cells(j, 1).Resize(, 15).Value
      end if
      err.clear
    End With
  Next
End Sub
 
Laatst bewerkt:
is het mogelijk dat niet alle lab uitslagen gebruikt hoeven te worden, oftewel dat hij de patiënten die hij niet vindt negeert?

dit omdat in de lijst met lab uitslagen ook gegevens kunnen zitten die niet te linken zijn, omdat mensen een verkeerd labformulier hebben gebruikt en zo de labuitslagen op conto van de spoedeisendehulp zijn gezet zonder dat de patient op de spoedeisende hulp is geweest. hierdoor kunnen er met het genereren van de labgegevens patienten tussen zitten die nooit op de spoedeisende hulp geweest zijn en dus ook niet gekoppeld kunnen worden.
 
ok hij loopt niet meer vast op de error, alleen het klopt nog niet helemaal, mss is het mogelijk dat je hem zelf even een keer runt in het voorbeeld bestand van eerder, dan zie je wat er gebeurd want ik snap nu niet wat hij nu doet.

volgens mij omdat je 1 parameter hebt die in sheet 1 en sheet 2 de regel bepaalt pakt hij hem niet goed, als je begrijpt wat ik bedoel. beetje jammer dat mijn visual basics kennis ongeveer zo groot is dat ik net het grote idee achter de macro kan zien maar niet hoe die het precies doet.
 
Laatst bewerkt:
Zoek de verschillen:
Code:
Sub tst()
  On Error Resume Next
  sq = Sheets("Sheet2").[A1].CurrentRegion.Columns(1).Resize(, 3)
  For j = 2 To UBound(sq)
    With Sheets("Sheet1").Columns(30).Find(sq(j, 1))
      c5 = .Offset
      If Err.Number = 0 Then
          If sq(j, 3) >= .Offset(, 6) And sq(j, 3) <= .Offset(, 7) Then Sheets("Sheet1").Cells(.Row, Columns.Count).End(xlToLeft).Offset(, 1).Resize(, 15) = Sheets("Sheet2").Cells(j, 1).Resize(, 15).Value
      End If
      Err.Clear
    End With
  Next
End Sub
 
bedankt, hij koppelt goed op patientennummer maar de datumcontrole klopt niet helemaal.
blad 2 regel 21 zou gekoppelt moeten worden aan blad 1 regel 19 omdat daar de patient weer terug komt en nieuw lab krijgt. alleen worden de gegevens van die labaanvraag nu bij blad 1 regel 1 gezet. dat is de 1e keer dat die patient op de spoedeisende hulp komt. is heir nog een oplossing voor te vinden?
 
Dat lijkt me een leuke hersenkraker voor je in het weekend.
Het komt natuurlijk terug op de eerdere opmerkingen van popipipo; je hebt eigenlijk nog niet bepaald wat je basiseenheid is. Nu blijkt dat een patiënt met opnametijd te zijn.
Een patiënt kan bllijkbaar vaker dan 1 keer op een dag ingeschreven worden. De combinatie patiëntnummer/opnametijdstip vormen samen de unieke identifikatie. Als het goed is, zou dan ieder lab van diezelfde unieke identifikatie gebruik moeten maken. Een goede organisatie voorkomt veel programmeerwerk.
 
helaas valt er aan de data weinig te organiseren. er zijn 2 programma's die totaal verschillende dingen registreren en er is geen een koppeling ertussen. toch zijn voor mijn onderzoek de verhouding tussen de gegevens van belang.

ik hoop dat het lukt. deze macro is al een heel eind in de goede richting.
 
je hebt helemaal gelijk dat patientnummer samen met opname tijd een unieke identificatie geven van de patient. hetzelfde geld voor de combinatie patientnummer en afname tijd van het lab. alleen zal ik die 2 nooit met elkaar overeen kunnen laten komen.
hetzelfde geld voor de labdatabase nummer en het nummer van de SEH systemen. dit omdat dit autonummer functies zijn van 2 verschillende systemen die onafhankelijk van elkaar nummeren.
daarom moet er toch echt gewerkt worden met de vergelijking zoals ik eerder heb gepost. ik heb al gekeken of een identificatienummer gegenereerd met een (deel van de) datum en patientnummer een goed corresponderende idendificator geeft, maar deze loopt spaak rond de overgang naar de nieuwe dag. een patient die om 5 voor 12 aankomt en om 5 over 12 lab krijgt valt daar weer buiten. ik kan geen andere identificatoren vinden dan:
overeenkomend patientennummer en labafnametijdstip binnen aankomsttijd en vertrektijd SEH.
 
De code om die vergelijking uit te voeren heb je al (zie mijn code-suggestie); het enige wat je hoeft te doen is die uit te breiden.
 
Misschien gooi ik nu de knuppel in het hoenderhok.

Wordt het niet eens tijd dat de SEH zelf de aanvraag plaatst, deze wordt dan doorgestuurd naar het lab systeem
Dus:SEH plaatst de aanvraag, etiketten met naam en buis code komen ter plekke uit een printer; SEH prikt dan de patient.

Zo heb je voor elke aanvraag zowel patnr als datum en tijd gelijk staan in beide systemen.
Met zo'n decentrale aanvraag werken wij al meer dan 20 jaar

Oke, ik begrijp ook wel dat je daar nu niets aan hebt maar als je de vergelijking blijft willen maken is het misschien een idee voor later.

Een tweede mogelijkheid

De tijd van raporteren van lab uitslagen ligt altijd tussen de tijd van opname en ontslag van de SEH
Dus tijd lab uitslag > tijd opname SEH en < tijd ontslag SEH
 
popipipo, je hebt gelijk met je 2e opmerking, daarom wil ik ook met die gegevens de data aan elkaar knopen maar de huidige macro pakt het nog net niet goed gaat als een patient later die dag of maand nog een keer naar de SEH komt koppelt hij niet goed.

@ je eerste opmerking: de mogelijkheid bestaat hier ook dat de SEH net als de bloedafname dat zou gaan doen. alleen zullen daarmee de afnametijdstippen niet in het registratiesysteem komen. omdat deze systemen niet gekoppeld zijn. we hebben nu een systeem dat wel gekoppeld is sinds 1 november alleen moet ik juist mijn analyses uitvoeren uit het oude systeem...

ik denk dat de macro zo aangepast moet worden dat als hij een labuitslag heeft die niet matched met het eeste patientnummer waarmee hij is gekoppeld hij op zoek gaat naar de volgende patientnummer in de database en daar gaat vergelijken.

nu heb ik niet genoeg verstand van visual basics om dat zelf op te lossen. mocht iemand dat toe kunnen voegen heel graag. anders moet ik als nog 250 labuitslagen van patienten die meer dan 1 keer op de SEH komen met de hand gaan opzoeken.
 
Laatst bewerkt:
Je kunt je ook in VBA gaan verdiepen. Heb je later altijd plezier van.
 
heb je helemaal gelijk in, ik ga er ook zelf naar kijken maar moet ondertussen ook een hoop andere programma's onder de knie krijgen zoals SPSS waar ik nu mee bezig ben. VBA staat wel op mijn verlanglijstje though
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan