brew setup:
Setup .zprofile
Code Block # Set PATH, MANPATH, etc., for Homebrew. eval "$(/opt/homebrew/bin/brew shellenv)" export PATH=/Users/mbodkin/.local/bin:$PATH
Install the following Packages. Note this list is attached file.
Development Font Setup:
brew tap homebrew/cask-fonts
brew install --cask font-source-code-pro
Dart Setup
brew install dart
brew install dart@2.14
brew unlink dart && brew unlink dart@2.14 && brew link dart@2.14
dart pub global activate webdev
Iterm2 Setup:
Install Iterm2 App: Download from here https://iterm2.com/
Fix LVIM backspace issue
curl -LO https://invisible-island.net/datafiles/current/terminfo.src.gz && gunzip terminfo.src.gz
see attachments.sudo /usr/bin/tic -xe tmux-256color terminfo.src
set -g default-terminal "xterm-256color"
Modify Default Font: Iterm2 → Settings → Select “Profile” Tab → Select “Default” profile name → Select “Text” tab → Select “Source Code Pro” as the “Font” three from bottom.
Zshell Setup:
Install Oh my shell (https://ohmyz.sh/ ):
sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)
My zshrc:
Set theme to gnzh:
ZSH_THEME="gnzh"
Add the following:
Code Block alias docker=podman set -o vi #THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!! export SDKMAN_DIR="$HOME/.sdkman" [[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh" export SUNWAVE_HOME=~/.config/sunwave/ export PATH="$PATH":"$HOME/.pub-cache/bin"
LunarVim Setup:
Installation:
LV_BRANCH='release-1.2/neovim-0.8' bash <(curl -s https://raw.githubusercontent.com/lunarvim/lunarvim/master/utils/installer/install.sh)
Add python module:
python3 -m pip install neovim
Sdkman Setup for managing java and maven ()
Install
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
Setup Java and mvn
sdk list java
sdk install java-8.0.352-amzn
Install the latest mvn version that supports Java 8:
sdk install maven
Git
Install Github Desktop App: https://desktop.github.com/
Configure:
Get line endding right for mac:
git config --global core.autocrlf input
Use lvim for editing comments:
git config --global core.editor lvim
Make “less” more friendly on logs and diff runs:
git config --global core.pager "less --LONG-PROMPT --tabs=3 --quit-at-eof --quit-if-one-screen --tilde --jump-target=3 --ignore-case --status-column"
My git config:
Code Block [filter "lfs"] clean = git-lfs clean -- %f smudge = git-lfs smudge -- %f process = git-lfs filter-process required = true [user] name = Michael Bodkin email = michael.bodkin@sunwavehealth.com [core] autocrlf = input editor = lvim pager = less --LONG-PROMPT --tabs=3 --quit-at-eof --quit-if-one-screen --tilde --jump-target=3 --ignore-case --status-column
Info Large File Storage (lfs filter): https://shuhrat.github.io/programming/git-lfs-tips-and-tricks.html
Intellij Setup
Plugin Setup (Intellij → Perferences → Plugins)
Add AWSTookit, Dart, Checkstyle-IDEA, and IDeaVim
Zooming in and out with scrollwheel (Preferences → Editor → General → Change font size with Command+Mouse Wheel) https://www.jetbrains.com/idea/guide/tutorials/presenting/mouse-zoom/
Podman Setup:
Install:
brew install podman
Mysql Database setup
docker volume create db_dump20220714
docker run -p 13306:3306 --platform linux/amd64 --mount type=volume,src=db_dump20220714,target=/var/lib/mysql --name mysql -e MYSQL_ROOT_PASSWORD=Welcome1 -d mysql:5.6.51 --lower_case_table_names=1
docker exec -i mysql sh -c "exec mysql -uroot -pPassword1! -e 'create database sunwave3;'"
docker exec -i mysql sh -c "exec mysql -uroot -pPassword1! sunwave3" < Dump20220714.sql
docker exec -i mysql sh -c "exec mysql -uroot -pWelcome1 sunwave3" < hack.sql
SunwaveEMR Setup:
IntelliJ
Run Config
Deployment - Note “Application Context: /SunwaveEMR"
Edit Deployment
Logs - Choose all so they show up in IntelliJ
Startup Shutdown Point to Tomcat home directory.
config.properties see attachments.
Code Block language java #SFb8TVhuMAh6tgE sw #App Info appName="Sunwave ERM" mail.support.username=daniel.fernandez@sunwavehealth.com mail.support.password=xxx api_key=1234567890 ##Stripe #days for wait before show verification form daysBeforeVerification = 2 secretStripeKey = sk_test_HzSHs8Fg7lQQtk1IOlmitd3U publishableStripeKey = pk_test_Lb8tJqBEyDJFDXhhtuZ42Pg8 authorize_net_url=https://apitest.authorize.net/xml/v1/request.api #CMS 1500 form cms1500.path = /Users/mbodkin/.config/sunwave/DATA/nosql/CMS1500-0212-MDCW.pdf #UF04 ub04.path = /Users/mbodkin/.config/sunwave/DATA/nosql/ub04_interactive.pdf useJNDI=false jdbcURL=jdbc:mysql://localhost:3306/sunwave3?user=root&password=Welcome1&zeroDateTimeBehavior=convertToNull production=false basePath=/Users/mbodkin/.config/sunwave/DATA/nosql GOOGLE_CALENDAR_API_KEY=AIzaSyBN6FQnCwXg7YYdGajycVVSOI2wVZ2Dlac GOOGLE_CALENDAR_CLIENT_ID=7726274540401-lmh7p4utod4l5k80vgv9kpejpnau4gub.apps.googleusercontent.com GOOGLE_CALENDAR_CLIENT_SECRET=UTA4hrZ_xmGkYlRTudhHcXYp GOOGLE_CALENDAR_REDIREC_URL=/SunwaveEMR/Processor/googleCalendarApi useS3=false bucketName=sunwave.s3.bucket01 intuit_oAuth2AppClientId = ABiGZkBQjZrj30Fl6oY8kQ74st4yO39r1dhJ1IBV9lwZ6mO5GE intuit_oAuth2AppClientSecret = BgGCN764FezZX8PZYcjgc9Q6yZe1TH6rB93v0crZ intuit_oAuth2AppRedirectUri = https://localhost:8443/SunwaveEMR/Processor/intuitIntegrationProcessor/?method=oauth2redirect intuit_intuitAccountingAPIHost = https://sandbox-quickbooks.api.intuit.com intuit_discoveryAPIHost = https://developer.api.intuit.com/.well-known/openid_sandbox_configuration/ GOOGLE_GMAIL_AUTH_URI=https://accounts.google.com/o/oauth2/auth GOOGLE_GMAIL_TOKEN_URI=https://oauth2.googleapis.com/token GOOGLE_GMAIL_REDIRECT_URI=https://localhost:8443/SunwaveEMR/Processor/emailGoogleOAuth2Processor/?method=oauth2redirect #GOOGLE_GMAIL_CLIENT_ID=593886932269-7hel7eg14vgbkvl0f3ac8frlgi19ae29.apps.googleusercontent.com #GOOGLE_GMAIL_SECRET=vXu6XMRG3LfQhfHGpZ9WYXvU #GOOGLE_GMAIL_CLIENT_ID=559573570591-6iakfoe9k4fclt22614hafjtebjvukc5.apps.googleusercontent.com #GOOGLE_GMAIL_SECRET=sEFdB5wid8VxuzPmaGcVYCup #sunwave data GOOGLE_GMAIL_CLIENT_ID=922325029689-6jni457s2ppjr827hhd2ilkk6l2e7fok.apps.googleusercontent.com GOOGLE_GMAIL_SECRET=HBTRTbS0MTuH1Za3mGTMhGdy MICROSOFT_OUTLOOK_CLIENT_ID=e339f42c-7fec-4a33-9754-50f8251d2e4d MICROSOFT_OUTLOOK_SECRET=9fF-2bV_eM5.meQ69QYt-82xLLz2-Wd495 MICROSOFT_OUTLOOK_REDIRECT_URI=https://localhost:8443/SunwaveEMR/Processor/emailMicrosoftOAuth2Processor/ MICROSOFT_OUTLOOK_TOKEN_URI=https://login.microsoftonline.com/common/oauth2/v2.0/token MICROSOFT_OUTLOOK_AUTH_URI=https://login.microsoftonline.com/common/oauth2/v2.0/authorize #https://login.microsoftonline.com/ #CERTIFICATION Env QUEST_ORDER_DOCUMENT_ENDPOINT=https://cert.hub.Care360.com/rest/orders/v1/document #PRODUCTION Env. #QUEST_ORDER_DOCUMENT_ENDPOINT=https://hubservices.medplus.com/rest/orders/v1/document #Quest Retrieval, CERTIFICATION Env getResults|acknowledgeResults QUEST_RETRIEVAL_RESULTS_ENDPOINT=https://cert.hub.Care360.com/rest/results/v1/retrieval #Quest Retrieval, PRODUCTION Env #QUEST_RETRIEVAL_RESULTS_ENDPOINT=https://hubservices.medplus.com/rest/results/v1/retrieval #Quest Test Code Retrieval, CERTIFICATION Env QUEST_TEST_CODE_ENDPOINT=https://cert.hub.care360.com/webdav/cdc #Quest Test Code Retrieval, PRODUCTION Env #QUEST_TEST_CODE_ENDPOINT=https://hubservices.MedPlus.com/webdav/cdc MAX_FORM_NUMBER_PER_EXPORTED_PDF=10 server_name=MyLocal medical_records_export_server=localhost:8443 #dev LABCORP_ABN_ENDPOINT=https://emrsvcs-stage.labcorpbeacon.com:7360/emr-service/services #prod #LABCORP_ABN_ENDPOINT=https://emrsvcs.labcorpbeacon.com:7360/emr-service/services LABCORP_ABN_USERNAME=emrt_sunwavehlth LABCORP_ABN_PASSWORD=k2WakJZK CONCURRENT_MANAGER_SERVER=true eprescribe_url=https://engine201.staging.drfirst.com/servlet/rcopia.servlet.EngineServlet # https://update201.staging.drfirst.com/servlet/rcopia.servlet.EngineServlet eprescribe_sso_url=https://web.staging.drfirst.com/sso/portalServices? MEDIK_ONLINE_ENDPOINT=https://medikonlinews.test.medikonline.com SYMMETRIC_ENCRYPTION_KEY=123 telehealth_url=https://localhost:8443 env_host=https://localhost:8443 server_name=uat
server.xml see attachments.
Code Block <?xml version="1.0" encoding="UTF-8" ?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!-- Note: A "Server" is not itself a "Container", so you may not define subcomponents such as "Valves" at this level. Documentation at /docs/config/server.html --> <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <!-- Security listener. Documentation at /docs/config/listeners.html <Listener className="org.apache.catalina.security.SecurityListener" /> --> <!--APR library loader. Documentation at /docs/apr.html --> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <!-- Prevent memory leaks due to use of particular java/javax APIs--> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <!-- Global JNDI resources Documentation at /docs/jndi-resources-howto.html --> <GlobalNamingResources> <!-- Editable user database that can also be used by UserDatabaseRealm to authenticate users <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> --> <Resource name="jdbc/sunwave" auth="Container" type="javax.sql.DataSource" username="root" password="Welcome1" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/sunwave3?verifyServerCertificate=false&useSSL=false&requireSSL=false&zeroDateTimeBehavior=convertToNull" defaultAutoCommit="false" maxActive="10" logAbandoned="true" maxIdle="5" validationQuery="select 1" /> <Resource name="jdbc/cm" auth="Container" type="javax.sql.DataSource" username="root" password="Welcome1" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/quartz?verifyServerCertificate=false&useSSL=false&requireSSL=false" defaultAutoCommit="false" maxActive="20" maxIdle="10" validationQuery="select 1" /> <!-- Other params maxTotal="100" maxWaitMillis="10000" maxActive="15" maxIdle="10" maxWait="5000" removeAbandoned="true" removeAbandonedTimeout="20" logAbandoned="true" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" validationQuery="select 1" minEvictableIdleTimeMillis="3600000" timeBetweenEvictionRunsMillis="1800000" numTestsPerEvictionRun="10" testWhileIdle="true" testOnBorrow="true" testOnReturn="false" --> </GlobalNamingResources> <!-- A "Service" is a collection of one or more "Connectors" that share a single "Container" Note: A "Service" is not itself a "Container", so you may not define subcomponents such as "Valves" at this level. Documentation at /docs/config/service.html --> <Service name="Catalina"> <!--The connectors can use a shared executor, you can define one or more named thread pools--> <!-- <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/> --> <!-- A "Connector" represents an endpoint by which requests are received and responses are returned. Documentation at : Java HTTP Connector: /docs/config/http.html Java AJP Connector: /docs/config/ajp.html APR (HTTP/AJP) Connector: /docs/apr.html Define a non-SSL/TLS HTTP/1.1 Connector on port 8080 --> <Connector port="8079" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <!-- <Connector SSLEnabled="true" acceptCount="800" clientAuth="false" disableUploadTimeout="true" enableLookups="false" maxThreads="300" port="8443" keystoreFile="${user.home}\.keystore" keystorePass="santiago" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" secure="true" sslProtocol="TLS" /> --> <Connector port="8443" maxThreads="150" scheme="https" secure="true" SSLEnabled="true" keystoreFile="/Users/mbodkin/.config/sunwave/keys/server.p12" keystorePass="password" keystoreType="PKCS12" clientAuth="false" keyAlias="tomcat" sslProtocol="TLS" useSendfile="false" compression="force" compressionMinSize="1024" /> <!-- <Connector protocol="org.apache.coyote.http11.Http11AprProtocol" port="8443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" SSLCertificateFile="C:/temp/openssl/server.crt" SSLCertificateKeyFile="C:/temp/openssl/server.pem" SSLVerifyClient="optional" SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"/> --> <!-- A "Connector" using the shared thread pool--> <!-- <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> --> <!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443 This connector uses the NIO implementation. The default SSLImplementation will depend on the presence of the APR/native library and the useOpenSSL attribute of the AprLifecycleListener. Either JSSE or OpenSSL style configuration may be used regardless of the SSLImplementation selected. JSSE style configuration is used below. --> <!-- <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="conf/localhost-rsa.jks" type="RSA" /> </SSLHostConfig> </Connector> --> <!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2 This connector uses the APR/native implementation which always uses OpenSSL for TLS. Either JSSE or OpenSSL style configuration may be used. OpenSSL style configuration is used below. --> <!-- <Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol" maxThreads="150" SSLEnabled="true" > <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /> <SSLHostConfig> <Certificate certificateKeyFile="conf/localhost-rsa-key.pem" certificateFile="conf/localhost-rsa-cert.pem" certificateChainFile="conf/localhost-rsa-chain.pem" type="RSA" /> </SSLHostConfig> </Connector> --> <!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <!-- An Engine represents the entry point (within Catalina) that processes every request. The Engine implementation for Tomcat stand alone analyzes the HTTP headers included with the request, and passes them on to the appropriate Host (virtual host). Documentation at /docs/config/engine.html --> <!-- You should set jvmRoute to support load-balancing via AJP ie : <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1"> --> <Engine name="Catalina" defaultHost="localhost"> <!--For clustering, please take a look at documentation at: /docs/cluster-howto.html (simple how to) /docs/config/cluster.html (reference documentation) --> <!-- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> --> <!-- Use the LockOutRealm to prevent attempts to guess user passwords via a brute-force attack --> <Realm className="org.apache.catalina.realm.DataSourceRealm" dataSourceName="jdbc/sunwave" userTable="mb2_user" userNameCol="EMAIL" userCredCol="TM_PASSWORD" userRoleTable="mb2_user_group" roleNameCol="GROUP_NAME" > <CredentialHandler className="org.apache.catalina.realm.MessageDigestCredentialHandler" algorithm="SHA-256" iterations="1" saltLength="0" /> <!-- digest -a SHA-256 -s 0 santiago encoding="ISO-8859-1" com.sunwave.emr.server.util.PasswordComparator --> </Realm> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- --> <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> </Engine> </Service> </Server>
Dart
WebContext
Aws Setup:
Config
Usage
Security Setup
gnugp
Firewall
Password Rules required for handling HIPAA info
Content Comparison
General
Content
Integrations