Skip to content

Commit

Permalink
Transfer comit
Browse files Browse the repository at this point in the history
  • Loading branch information
paulo committed Apr 23, 2022
1 parent 191fd19 commit 4fd0919
Show file tree
Hide file tree
Showing 28 changed files with 138 additions and 10 deletions.
Binary file not shown.
Binary file not shown.
Binary file added .gradle/6.8.3/fileChanges/last-build.bin
Binary file not shown.
Binary file added .gradle/6.8.3/fileHashes/fileHashes.bin
Binary file not shown.
Binary file added .gradle/6.8.3/fileHashes/fileHashes.lock
Binary file not shown.
Empty file added .gradle/6.8.3/gc.properties
Empty file.
Binary file modified .gradle/7.1/dependencies-accessors/dependencies-accessors.lock
Binary file not shown.
Binary file removed .gradle/7.1/executionHistory/executionHistory.bin
Binary file not shown.
Binary file removed .gradle/7.1/executionHistory/executionHistory.lock
Binary file not shown.
Binary file removed .gradle/7.1/fileHashes/fileHashes.bin
Binary file not shown.
Binary file modified .gradle/7.1/fileHashes/fileHashes.lock
Binary file not shown.
Binary file modified .gradle/buildOutputCleanup/buildOutputCleanup.lock
Binary file not shown.
4 changes: 2 additions & 2 deletions .gradle/buildOutputCleanup/cache.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
#Thu Apr 14 22:24:00 CEST 2022
gradle.version=7.1
#Sat Apr 16 22:52:48 CEST 2022
gradle.version=6.8.3
Binary file modified .gradle/buildOutputCleanup/outputFiles.bin
Binary file not shown.
Binary file modified .gradle/checksums/checksums.lock
Binary file not shown.
Binary file modified .gradle/checksums/md5-checksums.bin
Binary file not shown.
Binary file modified .gradle/checksums/sha1-checksums.bin
Binary file not shown.
Empty file.
6 changes: 5 additions & 1 deletion .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions .idea/syntheakds.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 14 additions & 6 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
plugins {
id 'groovy'
id 'java'
}
apply plugin: 'groovy'
apply plugin: 'java'

group 'org.example'
version '1.0-SNAPSHOT'
version '1.0'

sourceCompatibility = '11'
targetCompatibility = '11'

repositories {
mavenCentral()
}

dependencies {
implementation 'org.codehaus.groovy:groovy-all:3.0.5'
//implementation 'org.codehaus.groovy:groovy-all:3.0.5'
implementation "org.codehaus.groovy:groovy-all:3.0.5"
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'

Expand All @@ -20,6 +22,12 @@ dependencies {

//Synthea
implementation group: 'org.mitre.synthea', name: 'synthea', version: '3.0.0'

//Jackson
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.12.3'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.12.3'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.13.2'

}

test {
Expand Down
23 changes: 23 additions & 0 deletions build/resources/main/config/log4j2.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>

<Configuration status="info">
<Properties>
<Property name="filename">log/logging.log</Property>
</Properties>

<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%style{%d{yyyy-MM-dd HH:mm:ss.SSS}}{yellow} %highlight{[%-5level] [%t] %c{1} - %msg}{STYLE=Logback}%n"
disableAnsi="false "/>
</Console>
<File name="File" fileName="log/logging.log" append="false">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%t] %c{1} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="Console" level="info"/>
<AppenderRef ref="File" level="debug" />
</Root>
</Loggers>
</Configuration>
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
21 changes: 21 additions & 0 deletions src/main/groovy/org/example/syntheakds/Main.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,26 @@ package org.example.syntheakds

import org.apache.logging.log4j.LogManager
import org.apache.logging.log4j.Logger
import org.apache.logging.log4j.core.LoggerContext
import org.example.syntheakds.config.SyntheaKDSConfig
import org.example.syntheakds.read.DataProvider
import org.mitre.synthea.engine.Generator
import org.mitre.synthea.engine.Generator.GeneratorOptions
import org.mitre.synthea.helpers.Config

import java.nio.file.Path
import java.nio.file.Paths
import java.util.concurrent.Executors
import java.util.concurrent.ThreadPoolExecutor

class Main {

private static final Logger logger = LogManager.getLogger(Main.class)

static void main(String[] args){

configureLog4j2()

logger.info("[#]Starting application ...")

logger.info("[#]Running Synthea ...")
Expand All @@ -23,6 +30,10 @@ class Main {
generator.run()
logger.info("[#]Finished running Synthea.")

logger.info("[#]starting conversion ...")
def ioPool = Executors.newFixedThreadPool(50)
def provider = new DataProvider(SyntheaKDSConfig.patDir, 100, 10000, ioPool as ThreadPoolExecutor)

}

private static GeneratorOptions configureGeneratorOptions(){
Expand All @@ -38,4 +49,14 @@ class Main {
return options
}

/**
* Method for setting Log4j2 config file location. Should work in jar as well
*/
private static void configureLog4j2(){
def configFilePath = Paths.get('config', 'log4j2.xml').toString()
def configFileUrl = Thread.currentThread().getContextClassLoader().getResource(configFilePath)
def context = LogManager.getContext(false) as LoggerContext
context.setConfigLocation(configFileUrl.toURI())
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@ class SyntheaKDSConfig {

static int patientCount = 100
static Path tmpOutputDir = Path.of('src', 'main', 'resources', 'tmp_output')
static Path patDir = tmpOutputDir.resolve('fhir')

}
60 changes: 60 additions & 0 deletions src/main/groovy/org/example/syntheakds/read/DataProvider.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package org.example.syntheakds.read

import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.databind.ObjectMapper
import groovy.io.FileType
import org.apache.logging.log4j.LogManager
import org.apache.logging.log4j.Logger

import java.nio.file.Path
import java.util.concurrent.ArrayBlockingQueue
import java.util.concurrent.ThreadPoolExecutor

class DataProvider {

private static final Logger logger = LogManager.getLogger(DataProvider.class)

private final Path toDir
private final int patientCount
private final ObjectMapper objectMapper
private final Queue<JsonNode> readQueue
private final ThreadPoolExecutor ioPool

DataProvider(Path toDir, int patientCount, int qCapacity, ThreadPoolExecutor ioPool){
logger.debug("Initializing DataProvider instance ...")
this.toDir = toDir
this.patientCount = patientCount
this.objectMapper = new ObjectMapper()
this.readQueue = new ArrayBlockingQueue<>(qCapacity)
this.ioPool = ioPool
run()
}

private void run(){
def files = this.findFiles()
logger.debug("Reading files ...")
files.each {file ->
logger.debug("File @ ${file.getPath()}")
this.ioPool.submit({this.readQueue.add(objectMapper.readTree(file))})
logger.debug("--Submitted to I/O pool")
logger.debug("--Task count: ${this.ioPool.taskCount}")
}
}

Queue<JsonNode> getQ(){
return this.readQueue
}

private List<File> findFiles(){
logger.debug("Searching for files ...")
def files = []
this.toDir.eachFileMatch(type: FileType.FILES, nameFilter: ~/\*.json/){ file ->
logger.debug("Found file @ ${file.toString()}")
files << file.toFile()
}
return files
}



}

0 comments on commit 4fd0919

Please sign in to comment.