SlideShare a Scribd company logo
1 of 87
Download to read offline
Untangling Healthcare
with Spark and Dataflow
Ryan Brush
@ryanbrush
Actual depiction of healthcare data
One out of six dollars
Three Acts
(Mostly)
Act I
Making sense of the pieces
answer = askQuestion (allHealthData)
8000 CPT Codes
72,000 ICD-10 Codes
63,000 SNOMED disease codes
Incomplete, conflicting data sets No common person identifier
Standard data models and codes interpreted inconsistently
Different meanings in different contexts
How do we make sense of this?
55 Million Patients 3 petabytes of data
Claims
Medical
Records
Pharma
Operational
Link Records
Semantic
Integration
User-entered
annotations
Condition
Registries
Quality
Measures
Analytics
Rules
Link Records
Claims
Medical
Records
Pharma
Operational
Semantic
Integration
User-entered
annotations
Condition
Registries
Quality
Measures
Analytics
Rules
Medical
Records
Document
Sections
Notes
Addenda
Order
. . .
Normalize
Structure
Clean Data
Link Records
Claims
Medical
Records
Pharma
Operational
Semantic
Integration
User-entered
annotations
Condition
Registries
Quality
Measures
Analytics
Rules
answer = askQuestion (allHealthData)
linkedData = link(clean (pharma),
clean (claims),
clean (records))
normalized = normalize(linkedData)
answer = askQuestion (normalized)
Rein in variance
http://fortune.com/2014/07/24/can-big-data-cure-cancer/
Rein in variance
oral vs. axillary temperature
Join all the things!


JavaRDD<ExternalRecord> externalRecords = ...





JavaRDD<ExternalRecord> externalRecords = ...



JavaPairRDD<ExternalRecord,
ExternalRecord> cartesian =
externalRecords.cartesian(externalRecords);





JavaRDD<Similarity> matches = cartesian.map(t -> {




})


return Similarity.newBuilder()

.setLeftRecordId(left.getExternalId())

.setRightRecordId(right.getExternalId())

.setScore(score)

.build();

ExternalRecord left = t._1();

ExternalRecord right = t._2();



double score = recordSimilarity(left, right);



.filter(s -> s.getScore() > THRESHOLD);
Person 1 Person 2 Person 3
Person 1 1 0.98 0.12
Person 2 1 0.55
Person 3 1
Reassembly Humpty Dumpty in Code


JavaPairRDD<String,String> idToLink = . . .
JavaPairRDD<String,ExternalRecord> idToRecord = . . .






JavaPairRDD<String,String> idToLink = . . .
JavaPairRDD<String,ExternalRecord> idToRecord = . . .


JavaRDD<Person> people = idToRecord.join(idToLink)

.mapToPair(

// Tuple of universal ID and external record.

item -> new Tuple2<>(item._2._2, item._2._1))

.groupByKey()

.map(SparkExampleTest::mergeExternalRecords);



SNOMED:388431003
HCPCS:J1815
ICD10:E13.9
CPT:3046F
SNOMED:43396009, value: 9.4
SNOMED:388431003
HCPCS:J1815
InsulinMed InsulinMed
ICD10:E13.9
DiabetesCondition
Diabetic
CPT:3046F SNOMED:43396009, value: 9.4
Retaking Rules for Developers, Strange Loop 2014
29
select * from outcomes where…
30
Start with the questions you want
to ask and transform the data to fit.
But what questions are
we asking?
“The problem is we don’t
understand the problem.”
-Paul MacReady
cleanData = clean (allHealthData)
projected = projectForPurpose (cleanData)
answer = askQuestion (projected)
Sepsis
Early Lessons
Make no assumptions
about your data
Your errors are a signal
Data sources have a signature
But the latency!
And the complexity!
Act II
Putting health care together…fast


JavaPairRDD<String,String> idToLink = . . .
JavaPairRDD<String,ExternalRecord> idToRecord = . . .


JavaRDD<Person> people = idToRecord.join(idToLink)

.mapToPair(

// Tuple of UUID and external record.

item -> new Tuple2<>(item._2._2, item._2._1))

.groupByKey()

.map(SparkExampleTest::mergeExternalRecords);





JavaPairDStream<String,String> idToLink = . . .
JavaPairDStream<String,ExternalRecord> idToRecord

= . . .


idToLink.join(idToRecord);


JavaPairDStream<String,String> idToLink = . . .
JavaPairDStream<String,ExternalRecord> idToRecord

= . . .


StateSpec personAndLinkStateSpec =
StateSpec.function(new BuildPersonState());
JavaDStream<Tuple2<List<ExternalRecord>,List<String>>>
recordsWithLinks =

idToRecord.cogroup(idToLink)

.mapWithState(personAndLinkStateSpec);



// And a lot more...
Link Updates
Record Updates
Grouped Record and Link Updates
Previous
State
Person
Records
Link Updates
Record Updates
Grouped Record and Link Updates
Previous
State
Person
Records
What about deletes?
Stream processing is not
“fast” batch processing.
Little reuse beyond core functions
Different pipeline semantics
Must implement compensation logic
Batch
Processing
Stream
Processing
Reusable Code
If you're willing to restrict the flexibility
of your approach, you can almost
always do something better.
-John Carmack
public void rollingMap(EntityKey key,
Long version,
T value,
Emitter emitter);
public void rollingReduce(EntityKey key,
S state,
Emitter emitter);
emitter.emit(key,value);
emitter.tombstone(outdatedKey);
Domain-Specific API
Batch Host Streaming Host
Reusable Code
So are we done?
Limited expressiveness
Not composable
Learning curve
Artificial complexity
Act III
Reframing the problem
Batch
Processing
Stream
Processing
Reusable Code
Batch
Processing
Stream
Processing
Kappa
Architecture
It’s time for a POSIX of data processing
Make everything a stream!
(If the technology can scale to your volume
and historical data.)
(If your problem can be expressed in monoids.)
Apache Beam
(was: Google Cloud Dataflow)
Potentially a POSIX of data processing
Composable Units (PTransforms)
Unification of Batch and Stream
Spark, Flink, Google Cloud Dataflow runners
Bounded: a fixed dataset
Unbounded: continuously updating dataset
Window: time range of your data to process
Trigger: when to process a time range
10:00 11:00 12:008:00 9:00
Windows and Triggers
10:00 11:00 12:008:00 9:00
Windows and Triggers
10:00 11:00 12:008:00 9:00
Windows and Triggers
10:00 11:00 12:008:00 9:00
Windows and Triggers
8:03 8:04 8:058:01 8:02
Windows and Triggers
public class LinkRecordsTransform extends
PTransform<PCollectionTuple,PCollection<Person>> {
}
public static final TupleTag<RecordLink> LINKS =
new TupleTag<>();


public static final TupleTag<ExternalRecord> RECORDS =
new TupleTag<>();
@Override

public PCollection<Person> apply(PCollectionTuple input) {
. . .
}
PCollection<KV<String,CoGbkResult>> cogrouped = KeyedPCollectionTuple

.of(LINKS, idToLinks)

.and(RECORDS, idToRecords)









// Combines by key AND window
return uuidToRecs.apply(

Combine.<String,ExternalRecord,Person>perKey(
new PersonCombineFn()))

.setCoder(KEY_PERSON_CODER)

.apply(Values.<Person>create());
PCollection<KV<String,ExternalRecord>> uuidToRecs = cogrouped.apply(

ParDo.of(new LinkExternalRecords()))

.setCoder(KEY_REC_CODER);
apply implementation:
.apply(CoGroupByKey.create());
PCollection<Person> people = PCollectionTuple

.of(LinkRecordsTransform.LINKS, windowedLinks)

.and(LinkRecordsTransform.RECORDS, windowedRecs)

.apply(new LinkRecordsTransform());


PCollection<RecordLink> windowedLinks = . . .
PCollection<ExternalRecord> windowedRecs = . . .
PCollection<RecordLink> windowedLinks = . . .
PCollection<Person> people = PCollectionTuple

.of(LinkRecordsTransform.LINKS, windowedLinks)

.and(LinkRecordsTransform.RECORDS, windowedRecs)

.apply(new LinkRecordsTransform());


PCollection<ExternalRecord> windowsRecs = . . .
PCollection<Person> people = PCollectionTuple

.of(LinkRecordsTransform.LINKS, windowedLinks)

.and(LinkRecordsTransform.RECORDS, windowedRecs)

.apply(new LinkRecordsTransform());


PCollection<RecordLink> windowedLinks = links.apply(

Window.<RecordLink>into(
FixedWindows.of(Duration.standardMinutes(60)));

PCollection<ExternalRecord> windowsRecs = . . .
PCollection<Person> people = PCollectionTuple

.of(LinkRecordsTransform.LINKS, windowedLinks)

.and(LinkRecordsTransform.RECORDS, windowedRecs)

.apply(new LinkRecordsTransform());


PCollection<RecordLink> windowedLinks = links.apply(

Window.<RecordLink>into(
FixedWindows.of(Duration.standardMinutes(60)))

.withAllowedLateness(Duration.standardMinutes(15))

.accumulatingFiredPanes());

PCollection<ExternalRecord> windowsRecs = . . .
PCollection<Person> people = PCollectionTuple

.of(LinkRecordsTransform.LINKS, windowedLinks)

.and(LinkRecordsTransform.RECORDS, windowedRecs)

.apply(new LinkRecordsTransform());


PCollection<RecordLink> windowedLinks = links.apply(

Window.<RecordLink>into(
FixedWindows.of(Duration.standardMinutes(60)))

.withAllowedLateness(Duration.standardMinutes(15))

.accumulatingFiredPanes());
.triggering(Repeatedly.forever(
AfterProcessingTime.pastFirstElementInPane()
.plusDelayOf(Duration.standardMinutes(10)))));
PCollection<ExternalRecord> windowsRecs = . . .
PCollection<Person> people = PCollectionTuple

.of(LinkRecordsTransform.LINKS, windowedLinks)

.and(LinkRecordsTransform.RECORDS, windowedRecs)

.apply(new LinkRecordsTransform());


PCollection<RecordLink> windowedLinks = links.apply(

Window.<RecordLink>into(
SlidingWindows.of(Duration.standardMinutes(120)))

.withAllowedLateness(Duration.standardMinutes(15))

.accumulatingFiredPanes());
.triggering(Repeatedly.forever(
AfterProcessingTime.pastFirstElementInPane()
.plusDelayOf(Duration.standardMinutes(10)))));
PCollection<ExternalRecord> windowsRecs = . . .
PCollection<Person> people = PCollectionTuple

.of(LinkRecordsTransform.LINKS, windowedLinks)

.and(LinkRecordsTransform.RECORDS, windowedRecs)

.apply(new LinkRecordsTransform());


PCollection<RecordLink> windowedLinks = links.apply(

PCollection<ExternalRecord> windowsRecs = . . .
Window.<RecordLink>into(new GlobalWindows())
.triggering(Repeatedly.forever(
AfterProcessingTime.pastFirstElementInPane().

plusDelayOf(Duration.standardMinutes(5))))

.accumulatingFiredPanes());
when was that data created?
what data have I received?
when should I process that data?
how should I group data to process?
what to do with late-arriving data?
should I emit preliminary results?
how should I amend those results?
Untangling Concerns
Simple Made Easy
Rich Hickey, Strange Loop 2011
Modular
Composable
Easier to reason about
But some caveats:
Runners at varying level of maturity
Retraction not yet implemented (see BEAM-91)
APIs may change
MLLib
REPLDataframes
Spark offers a rich ecosystem
Spark SQL
Genome Analysis Toolkit
Large, complex,
processing pipelines
Exploration and
transformation of data
Two classes of problems:
Actual depiction of healthcare data
Time
Understanding
Orientation
Pattern
Discovery
Prescriptive
Frameworks
Scalable
Processing
Web Development
Time
Understanding
Orientation
Pattern
Discovery
Prescriptive
Frameworks
Scalable
Processing Web Development
Focus on the essence
rather than the accidents.
Questions?
@ryanbrush

More Related Content

Similar to Untangling Healthcare With Spark and Dataflow - PhillyETE 2016

Agile Data Science 2.0
Agile Data Science 2.0Agile Data Science 2.0
Agile Data Science 2.0Russell Jurney
 
Agile Data Science 2.0
Agile Data Science 2.0Agile Data Science 2.0
Agile Data Science 2.0Russell Jurney
 
Agile Data Science 2.0 - Big Data Science Meetup
Agile Data Science 2.0 - Big Data Science MeetupAgile Data Science 2.0 - Big Data Science Meetup
Agile Data Science 2.0 - Big Data Science MeetupRussell Jurney
 
Rescuing Data from Decaying and Moribund Clinical Information Systems
Rescuing Data from Decaying and Moribund Clinical Information SystemsRescuing Data from Decaying and Moribund Clinical Information Systems
Rescuing Data from Decaying and Moribund Clinical Information SystemsHealth Informatics New Zealand
 
Oleksandr Valetskyy - DI vs. IoC
Oleksandr Valetskyy - DI vs. IoCOleksandr Valetskyy - DI vs. IoC
Oleksandr Valetskyy - DI vs. IoCOleksandr Valetskyy
 
QUERY INVERSION TO FIND DATA PROVENANCE
QUERY INVERSION TO FIND DATA PROVENANCE QUERY INVERSION TO FIND DATA PROVENANCE
QUERY INVERSION TO FIND DATA PROVENANCE cscpconf
 
Beyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the codeBeyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the codeWim Godden
 
Agile Data Science 2.0
Agile Data Science 2.0Agile Data Science 2.0
Agile Data Science 2.0Russell Jurney
 
Open Analytics Environment
Open Analytics EnvironmentOpen Analytics Environment
Open Analytics EnvironmentIan Foster
 
Agile Data Science 2.0: Using Spark with MongoDB
Agile Data Science 2.0: Using Spark with MongoDBAgile Data Science 2.0: Using Spark with MongoDB
Agile Data Science 2.0: Using Spark with MongoDBRussell Jurney
 
ADO.NET Entity Framework by Jose A. Blakeley and Michael Pizzo
ADO.NET Entity Framework by Jose A. Blakeley and Michael PizzoADO.NET Entity Framework by Jose A. Blakeley and Michael Pizzo
ADO.NET Entity Framework by Jose A. Blakeley and Michael PizzoHasnain Iqbal
 
GDG Jakarta Meetup - Streaming Analytics With Apache Beam
GDG Jakarta Meetup - Streaming Analytics With Apache BeamGDG Jakarta Meetup - Streaming Analytics With Apache Beam
GDG Jakarta Meetup - Streaming Analytics With Apache BeamImre Nagi
 
Agile Data Science 2.0
Agile Data Science 2.0Agile Data Science 2.0
Agile Data Science 2.0Russell Jurney
 
Tools and Techniques for Understanding Threading Behavior in Android*
Tools and Techniques for Understanding Threading Behavior in Android*Tools and Techniques for Understanding Threading Behavior in Android*
Tools and Techniques for Understanding Threading Behavior in Android*Intel® Software
 
MIS5101 WK10 Outcome Measures
MIS5101 WK10 Outcome MeasuresMIS5101 WK10 Outcome Measures
MIS5101 WK10 Outcome MeasuresSteven Johnson
 
Distributed Queries in IDS: New features.
Distributed Queries in IDS: New features.Distributed Queries in IDS: New features.
Distributed Queries in IDS: New features.Keshav Murthy
 
Predictive Analytics with Airflow and PySpark
Predictive Analytics with Airflow and PySparkPredictive Analytics with Airflow and PySpark
Predictive Analytics with Airflow and PySparkRussell Jurney
 
Beyond PHP - it's not (just) about the code
Beyond PHP - it's not (just) about the codeBeyond PHP - it's not (just) about the code
Beyond PHP - it's not (just) about the codeWim Godden
 

Similar to Untangling Healthcare With Spark and Dataflow - PhillyETE 2016 (20)

Agile Data Science 2.0
Agile Data Science 2.0Agile Data Science 2.0
Agile Data Science 2.0
 
Agile Data Science 2.0
Agile Data Science 2.0Agile Data Science 2.0
Agile Data Science 2.0
 
Agile Data Science 2.0 - Big Data Science Meetup
Agile Data Science 2.0 - Big Data Science MeetupAgile Data Science 2.0 - Big Data Science Meetup
Agile Data Science 2.0 - Big Data Science Meetup
 
Agile Data Science
Agile Data ScienceAgile Data Science
Agile Data Science
 
Rescuing Data from Decaying and Moribund Clinical Information Systems
Rescuing Data from Decaying and Moribund Clinical Information SystemsRescuing Data from Decaying and Moribund Clinical Information Systems
Rescuing Data from Decaying and Moribund Clinical Information Systems
 
Oleksandr Valetskyy - DI vs. IoC
Oleksandr Valetskyy - DI vs. IoCOleksandr Valetskyy - DI vs. IoC
Oleksandr Valetskyy - DI vs. IoC
 
QUERY INVERSION TO FIND DATA PROVENANCE
QUERY INVERSION TO FIND DATA PROVENANCE QUERY INVERSION TO FIND DATA PROVENANCE
QUERY INVERSION TO FIND DATA PROVENANCE
 
Beyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the codeBeyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the code
 
Agile Data Science 2.0
Agile Data Science 2.0Agile Data Science 2.0
Agile Data Science 2.0
 
Open Analytics Environment
Open Analytics EnvironmentOpen Analytics Environment
Open Analytics Environment
 
Agile Data Science 2.0: Using Spark with MongoDB
Agile Data Science 2.0: Using Spark with MongoDBAgile Data Science 2.0: Using Spark with MongoDB
Agile Data Science 2.0: Using Spark with MongoDB
 
ADO.NET Entity Framework by Jose A. Blakeley and Michael Pizzo
ADO.NET Entity Framework by Jose A. Blakeley and Michael PizzoADO.NET Entity Framework by Jose A. Blakeley and Michael Pizzo
ADO.NET Entity Framework by Jose A. Blakeley and Michael Pizzo
 
GDG Jakarta Meetup - Streaming Analytics With Apache Beam
GDG Jakarta Meetup - Streaming Analytics With Apache BeamGDG Jakarta Meetup - Streaming Analytics With Apache Beam
GDG Jakarta Meetup - Streaming Analytics With Apache Beam
 
XML-RPC vs Psycopg2
XML-RPC vs Psycopg2XML-RPC vs Psycopg2
XML-RPC vs Psycopg2
 
Agile Data Science 2.0
Agile Data Science 2.0Agile Data Science 2.0
Agile Data Science 2.0
 
Tools and Techniques for Understanding Threading Behavior in Android*
Tools and Techniques for Understanding Threading Behavior in Android*Tools and Techniques for Understanding Threading Behavior in Android*
Tools and Techniques for Understanding Threading Behavior in Android*
 
MIS5101 WK10 Outcome Measures
MIS5101 WK10 Outcome MeasuresMIS5101 WK10 Outcome Measures
MIS5101 WK10 Outcome Measures
 
Distributed Queries in IDS: New features.
Distributed Queries in IDS: New features.Distributed Queries in IDS: New features.
Distributed Queries in IDS: New features.
 
Predictive Analytics with Airflow and PySpark
Predictive Analytics with Airflow and PySparkPredictive Analytics with Airflow and PySpark
Predictive Analytics with Airflow and PySpark
 
Beyond PHP - it's not (just) about the code
Beyond PHP - it's not (just) about the codeBeyond PHP - it's not (just) about the code
Beyond PHP - it's not (just) about the code
 

Recently uploaded

BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxnada99848
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 

Recently uploaded (20)

BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptx
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 

Untangling Healthcare With Spark and Dataflow - PhillyETE 2016