The pMD Blog

Welcome to the
pMD Blog...

where we cover interesting and relevant news, insights, events, and more related to the health care industry and pMD. Most importantly, this blog is a fun, engaging way to learn about developments in an ever-changing field that is heavily influenced by technology.

Weekly Byte: Choosing the Right Abstraction
In the software world, when we have some complicated logic that we’ve implemented in code, we often will hide that logic under a layer of abstraction which makes the code easier to understand. For example, let’s say I have an application that does nothing but manipulate squares. If I had some code for calculating the area of a square, I might hide that behind a function called Square.getArea(). This would save the caller from having to think about what is going on “under the hood” to actually perform that calculation.

Sometimes though, new requirements arise that break the abstraction. In our example, let’s imagine I wanted to expand my application to handle circles. Now, because the formula for calculating the area of a circle is different than a square, my getArea() function would now have to take a parameter, isCircle, and then have conditional logic based on the value of that parameter. Our abstraction would be broken. In this case, the fix would be as simple as defining a more generic Shape base class. Shape would have more specific Square and Circle subclasses, both of which would implement the getArea() function in their own way.

At pMD, we’ve offered secure messaging functionality to our customers for about two years. In its earliest days, the product was envisioned as a platform where a provider utilizing pMD’s charge capture software could send an encrypted message to another charge capture user. It has evolved today to be a completely standalone, realtime, mobile secure messaging solution. This is really exciting for us as a company, but of course, this incredible growth has put strains on the original abstractions we put in place when we built the software. Specifically, our concept of what constitutes a “contact” in pMD has evolved from being a charge capture user to anyone who has a smartphone and wants to communicate securely.

Sandi Metz has an interesting blog post called “The Wrong Abstraction.” The title is a bit misleading, because what it’s really about is what to do when you realize that your current abstraction has been stretched past its breaking point. At pMD, we arrived at this realization about our secure messaging contact list recently. Our original concept of a contact was no longer capable of supporting the growing list of requirements we were asking of it. So, we decided to spend this week doing a deep refactor of our implementation.

Our goals in this refactor process were to build an abstraction that, first and foremost, is able to meet the demands we have for new features today, e.g. the ability to add anyone to your contact list. We also wanted it to be as future proof as possible, in order to be able to meet requirements that we think we’ll need to accommodate soon, e.g. the ability for doctors to securely message with their patients. It’s definitely tough to find the right balance, and to not “over engineer” our abstraction, but I think that after several days of whiteboarding and discussions, we’ve arrived at something that we’re all really happy with.

We’ll be spending the next several days implementing and testing our new design. We’re confident that we’ve chosen an abstraction the elegantly encapsulates the functionality that our growing secure messaging product asks of it. We’re excited about how far it will take us!
5G ACA Account Management accurate coding ACI adoption Advancing Care Information Advice AHCA AHRQ AI Alternative Payment Model Amazon S3 Android API Apple appointment reminders Artificial Intelligence arts Audit Award Bay Area BCRA Benefits Best Place to Work Best Practices Big Data Billing Billing & Collections Billing Service Billing Services bootcamp BPCI BPTW Bundled Payment Model Bundled Payments Business relationships Care Communities care coordination Care Navigation Care Team Career Fair CDC Charge Capture Charge Capture App Charge Capture Software Charge Capture Solution Charge Capture Statistics Charge codes Charge Lag Charge Reconciliation CHIP CIO Claims Clinical Communication clinical data Clinical Data Registry Clinically integrated network Cloud CMS cms regulations Coding Collaboration Communication Company Culture Conferences Connected Health Record contact practice Coronavirus COVID COVID-19 COVID19 Cross-functional culture custom reports Customer Interaction customer relations customer service customer success customer support Customers Cyber Security cybersecurity Developer DHHS Diagnosis codes Dialysis discharge instructions Doctor EHR elderly Electronic Charge Capture Eligibility EMR Encryption End-to-End Platform epidemic Expansion FDA FHIR Flu fundamentals gamification Gen Z GI GI Outlook Goals group messaging Health Care Health Care Technology Health Care Web Health Care. Health Care IT health data Health Information Exchange Health Record Healthcare Healthcare Data healthcare interface healthcare interface integration healthcare software HIE HIPAA HIPAA Compliance hipaa compliant communication hipaa compliant communication platform HIPAA-Compliant Hiring HL7 Holidays Home dialysis Home Health Hospital Census Hospital Communication humanity IA ICD-10 ICD-11 Immunizations Implementation Improvement Activities in-app calling inclusive software incorrect billing increase revenue injury rehabilitation innacurate coding Instant capture Integration interface interoperability iOS iOS 8 iOS7 iPad iPhone iPhone 6 IT Lead Generation length of stay LGBTQIA Long Term Care LTC Machine learning MACRA Medaxiom Medical Billers Medical Billing Medical Billing & Collections medical billing denials and solutions Medical claims Medical Coding medical coding accuracy medical coding quality Medical Errors medical practice revenue Medical Record Medical Software Medicare Mental Health Mentorship Messaging Messaging with Patients MGMA MIPS MIPS Registry mobile Mobile App Mobile Charge Capture Mobile EHR Mobile Health Mobile Messaging Mobile Payments Mobile security Mobile Software Mobile Technology Mobile telehealth Modern Healthcare Native App natural language processing Network new feature new features news NIH nlp OCM onboarding Oncology Care Model operations opioid crisis Pandemic Parenting Partnership partnerships Patient Patient access Patient Adherence Patient App Patient Care Patient Chat Patient chat routers Patient Communication patient data Patient Engagement patient experience patient experience cycle Patient Generated Health Data Patient Handoff Software Patient Information Patient Messaging patient outcomes Patient payments patient portal Patient Record Patient Safety Patient satisfaction Patient Simulators patient support Patient Visits Patient-Centric PCP Performance bonus PHI Phishing Scams Physician Physician burnout pmd pMD Pro pMD Team population health Population Health Management Post-COVID PQRS Practice Management Pregnancy Press Release Product Development Productivity products Promoting Interoperability Protected Health Information QCDR QPP Quality Data quality reporting Quality Scoring Ransomware RCM Recruiting Recruitment Reimbursement remote jobs Remote Work Reporting reports Residents Responsibility revenue cycle management ROI Rural communities Ryuk Sales Secure Communication Secure Data Secure Messaging Secure Messaging Video Secure Text Messaging Secure Video Secure Video Chat Security Audit self care seniors sexual orientation and gender identity SF Biz Times SMB SNF SNOMED-CT SOC 2 software vendor SOGI Spear Phishing Specialty Care success support TCM TDM Team Team culture Teamwork technology telehealth telehealth reporting Telemedicine telemedicine in long term care Telemedicine skilled nursing facilities Teletherapy Text Messaging texting Thanksgiving Therapeutic Drug Monitoring time-based billing training transgender Travel Upgrades UX Design VA vaccination records vaccinations Vaccine Value-based care Video Calling Video chat video communication video conferencing Virtual Care Virtual Visit voice calling voice memos WannaCry Wearable Device wearing many hats Web App wellness wfh Wireless Work From Home Work Life Balance Workflow optimization Workplace Culture