synthetichealth / synthea

Synthetic Patient Population Simulator
https://synthetichealth.github.io/synthea
Apache License 2.0
2.12k stars 639 forks source link

Creating ADT messages from Synthea csv output #535

Open josephhaney opened 5 years ago

josephhaney commented 5 years ago

Has anyone found a reliable tool to create HL7 ADT messages from the csv output files?

GinoCanessa commented 5 years ago

Hi Joseph, we've had a few teams internally investigating this for a while now and discussed it with Jason at DevDays.

Essentially, there is not enough information in the current output to create useful ADT messages because there is no Scheduling module in Synthea.

One option we are looking at is to create the module and merge it back into the main branch.

Another is to implement a 'fake' scheduling module based on the output (e.g., random amounts of time backward from encounter, randomly cancel and recreate appointments, etc.). This would read in the existing output and generate the messages from it.

In either case, we have been working to try and define what useful data looks like (e.g., which messages should we focus on creating).

Do you have specific messages or a specific use case?

josephhaney commented 5 years ago

We would most likely be interested in ADT message types of the following to start:

ADT-A01 – patient admit ADT-A02 – patient transfer ADT-A03 – patient discharge ADT-A04 – patient registration ADT-A05 – patient pre-admission ADT-A08 – patient information update ADT-A11 – cancel patient admit ADT-A12 – cancel patient transfer ADT-A13 – cancel patient discharge ADT-A31 - update person information

Thanks!

[Image result for crisp hie logo] Joe Haney Integrations Team Lead CRISP Health | 7160 Columbia Gateway Drive, Suite 100 Columbia, MD 21046 (p) 443-430-2991 (e) joseph.haney@crisphealth.orgmailto:joseph.haney@crisphealth.org http://www.crisphealth.orghttps://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.crisphealth.org%2F&data=02%7C01%7Cjmilam%40cardinalsolutions.com%7C2139c11ad9ef43f89d3208d4d47195d8%7C414efc3368fe4520802faea4401192d0%7C0%7C0%7C636367031687675548&sdata=Dh9HYtFywTzEkZv9%2BNvwG%2B8qxnWPq%2FyiUtZ3Q7TwEyY%3D&reserved=0

From: Gino Canessa notifications@github.com Sent: Thursday, June 27, 2019 12:43 PM To: synthetichealth/synthea synthea@noreply.github.com Cc: Joseph Haney Joseph.Haney@crisphealth.org; Author author@noreply.github.com Subject: Re: [synthetichealth/synthea] Creating ADT messages from Synthea csv output (#535)

Hi Joseph, we've had a few teams internally investigating this for a while now and discussed it with Jason at DevDays.

Essentially, there is not enough information in the current output to create useful ADT messages because there is no Scheduling module in Synthea.

One option we are looking at is to create the module and merge it back into the main branch.

Another is to implement a 'fake' scheduling module based on the output (e.g., random amounts of time backward from encounter, randomly cancel and recreate appointments, etc.). This would read in the existing output and generate the messages from it.

In either case, we have been working to try and define what useful data looks like (e.g., which messages should we focus on creating).

Do you have specific messages or a specific use case?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/synthetichealth/synthea/issues/535?email_source=notifications&email_token=AMO6TF3OLVWVKYCGPFYLTIDP4TUYZA5CNFSM4H35WAKKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYXWPDQ#issuecomment-506423182, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AMO6TF3FNDSEWJNUD7NT2G3P4TUYZANCNFSM4H35WAKA. WARNING: This email originated outside of CRISP. Even if this looks like a CRISP email, it is not. DO NOT CLICK links or attachments unless you are positive the content is safe. ------------ This email originates from outside your organization. Do not click on any links or open attachments unless you recognize the sender and have verified that the contained content is safe.


The contents of this e-mail and any attachments are intended solely for the use of the named addressee(s) and may contain confidential and/or privileged information. Any unauthorized use, copying, disclosure, or distribution of the contents of this e-mail is strictly prohibited. If you are not the intended recipient, please notify the sender immediately and delete this email. Thank you.

jamesagnew commented 5 years ago

FWIW this is not open source, but: I have successfully fed Synthea data into a Smile CDR FHIR repo and then used the standard HL7v2 transforms to get v2.x feeds for various data types out of it for testing.

josephhaney commented 5 years ago

Gino, We are Maryland’s designated state-wide Health Information Exchange (HIE) and will use this ADT data to test new and existing integrations via Mirth Connect interfaces. With this test data, we can segment our channel/transformation logic testing away from any production systems and use realistic but non-production data for confirmation of any new integrations or any necessary changes to existing integrations. With the expansions of national networks on the horizon, the testing data could become invaluable to meeting designated timelines, etc.

Let me know your thoughts.

[Image result for crisp hie logo] Joe Haney Integrations Team Lead CRISP Health | 7160 Columbia Gateway Drive, Suite 100 Columbia, MD 21046 (p) 443-430-2991 (e) joseph.haney@crisphealth.orgmailto:joseph.haney@crisphealth.org http://www.crisphealth.orghttps://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.crisphealth.org%2F&data=02%7C01%7Cjmilam%40cardinalsolutions.com%7C2139c11ad9ef43f89d3208d4d47195d8%7C414efc3368fe4520802faea4401192d0%7C0%7C0%7C636367031687675548&sdata=Dh9HYtFywTzEkZv9%2BNvwG%2B8qxnWPq%2FyiUtZ3Q7TwEyY%3D&reserved=0

From: Gino Canessa notifications@github.com Sent: Thursday, June 27, 2019 12:43 PM To: synthetichealth/synthea synthea@noreply.github.com Cc: Joseph Haney Joseph.Haney@crisphealth.org; Author author@noreply.github.com Subject: Re: [synthetichealth/synthea] Creating ADT messages from Synthea csv output (#535)

Hi Joseph, we've had a few teams internally investigating this for a while now and discussed it with Jason at DevDays.

Essentially, there is not enough information in the current output to create useful ADT messages because there is no Scheduling module in Synthea.

One option we are looking at is to create the module and merge it back into the main branch.

Another is to implement a 'fake' scheduling module based on the output (e.g., random amounts of time backward from encounter, randomly cancel and recreate appointments, etc.). This would read in the existing output and generate the messages from it.

In either case, we have been working to try and define what useful data looks like (e.g., which messages should we focus on creating).

Do you have specific messages or a specific use case?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/synthetichealth/synthea/issues/535?email_source=notifications&email_token=AMO6TF3OLVWVKYCGPFYLTIDP4TUYZA5CNFSM4H35WAKKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYXWPDQ#issuecomment-506423182, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AMO6TF3FNDSEWJNUD7NT2G3P4TUYZANCNFSM4H35WAKA. WARNING: This email originated outside of CRISP. Even if this looks like a CRISP email, it is not. DO NOT CLICK links or attachments unless you are positive the content is safe. ------------ This email originates from outside your organization. Do not click on any links or open attachments unless you recognize the sender and have verified that the contained content is safe.


The contents of this e-mail and any attachments are intended solely for the use of the named addressee(s) and may contain confidential and/or privileged information. Any unauthorized use, copying, disclosure, or distribution of the contents of this e-mail is strictly prohibited. If you are not the intended recipient, please notify the sender immediately and delete this email. Thank you.

GinoCanessa commented 5 years ago

Hi Joe, that sounds like a great use case and well defined message requirements. We are sorting out the best approach internally right now - I will update this thread as soon as I have more concrete info from our side.

Did you have a specific timeline you are meeting, or just a general "as soon as possible"?

DeFlanko commented 4 years ago

For what it's worth... We use an external system data in SQL (Query and SSIS Packaging) to make a final txt file in ADT^A31 for new patient creation. So maybe loading the CSV to a SQL table, do the data mapping, and writing the code for it is an option?

mayankthebest commented 4 years ago

Hi Joe, that sounds like a great use case and well defined message requirements. We are sorting out the best approach internally right now - I will update this thread as soon as I have more concrete info from our side.

Did you have a specific timeline you are meeting, or just a general "as soon as possible"?

Any update on this?

GinoCanessa commented 4 years ago

Nothing testable - have you tried Jame's process (e.g., loading data into a FHIR server and using the v2 transforms)?

mayankthebest commented 4 years ago

Using Smile CDR just for this doesn't fit our budget unfortunately.

mayankthebest commented 4 years ago

I created a tool for this purpose - https://github.com/mayankthebest/MayaMaker

jawalonoski commented 4 years ago

@mayankthebest I looked at your tool, and tried out the public instance, and it seems to work (although I don't use HL7 v2 enough to comment on the results). Cool!

hannesUlrich commented 4 years ago

hi @jawalonoski, we are currently building a HL7v2.5 exporter for synthea and I was looking into this issue and have a question: is there any way to use a module to build a in-house referral chain? If the encouter-type == inpatient then encounter has various stays within the hospital on different wards?

jawalonoski commented 4 years ago

@hannesUlrich There is no "referral" state in the module builder or engine today, there is also no concept to capture ward information. The closest thing you can do is just have a series of inpatient encounters (like the Covid19 module) with different codes (e.g. ICU) or insert a "Procedure" with a code that is a child of the SNOMED referral code (3457005) between the encounters.

hadleynet commented 4 years ago

Alternatively, you could use the Health Record Editors feature to add additional information to inpatient encounters after they end. You would have to extend the State.Encounter class to hold that extra information. The advantage of this is that it could work on encounters from any module rather than you having to edit each module separately.