Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Hosted-services / Azure

Phalanx Linq - Traverse Healthcare's Business Development Labyrinth

5.00/5 (3 votes)
9 Aug 2013CPOL6 min read 18.4K  
The Intelligent Way to Develop Business in the World of Healthcare

This article is an entry in our DnB Developer Challenge. Articles in this sub-section are not required to be full articles so care should be taken when voting.


Introduction 

Information today, will be intelligence tomorrow. Using D&B data and modeling it with analytics, a whole new realm of business opportunities appear.   

Why healthcare? Because of the expansive potential to untap this market segment due to currently existing prehistoric methodologies. But, it just doesn't stop there, as Phalanx Linq can and will be executable for other industry sectors.   

Strategies for healthcare business development (using D&B data and analytics):

  • gross profit improvement
  • corporate administration reduction
  • advertising expense optimization
  • distribution improvement + other cost savings

 
Background   

 

It's all about the data, as we all know. D&B data can be modeled using proprietary analytics to develop business in an intelligent, informed, and improved manner. 

Here's a glimpse of healthcare data analytics which alongside D&B data will redo how a potential new market can be developed... 

Demographic statistics to analyze:

  • # hospital beds per-1000 people 
  • # nursing home beds per-1000 people 

Health dollars breakdown:

  • 4.0% - home health services/agencies
  • 5.5% - skilled nursing facilities 
  • 5.5% - hospital outpatient (ambulatory/primary/speciality/etc) 
  • 12.0% - other services
  • 11.5% - prescription drug plans 
  • 12.5% - physician fee schedule 
  • 22.5% - group plans
  • 27.0% - hospital inpatient (admitted/surgical/emergency/etc) 

Sources of healthcare revenue:

  • +43% ~ Medicare
  • +33% ~ managed care
  • +12% ~ commercial 
  • +9% ~ Medicaid 
  • +2% ~ self-pay

Operating costs of healthcare:

  • - 40% ~ salary
  • - 20% ~ supply 
  • - 10% ~ benefits 
  • - 10% ~ capital expenditure 
  • - 10% ~ misc. 
  • - 5% ~ utility/insurance  
  • - 5% ~ rent/maint'

Live Site  

A live version of Phalanx Linq is running on Windows Azure at phalanxlinq.cloudapp.net. Feel free to take a peek around please drop me a note if you have any feedback.  

Source Code   

You can download the open-source version of Phalanx Linq at https://github.com/osiris-x11/phalanxlinq/archive/master.zip. or feel free to browse (or fork) the project at https://github.com/osiris-x11/phalanxlinq. Refer to the INSTALL file for instructions.

Technical Overview   

Phalanx Linq primarily leverages the power of D&B Company Data for in-depth insight and analytics within the Healthcare vertical. However, it's designed to be extended with additional data sources.

API integrations:  
  • D&B Company Data provided by Microsoft Azure Data Market
  • Microsoft Bing Maps - for Geocoding: D&B provided geocoding for most of the records, however this is an example that demonstrates how additional sources can be plugged into Phalanx Linq.
  • Leaflet or Bing - for mapping 
Technologies Used: 

I've decided to use Django for the web framework for several reasons: 1) I wanted to explore a new technology and 2) I wanted to demonstrate the portability of technologies available today. In the past, using a technology like Python would almost require a Linux OS. However, these days with Microsoft's excellent support of Python on Windows and Visual Studio in particular, we as developers are free to choose the tools that work best in the environment we choose or environments our clients support. Furthermore, Windows Azure has  excellent support not just for Windows OS - there are variety Linux-based OS that are available "out-of-the-box" making it extremely easy to choose the platform that best suits your needs or wants.

Essentially, Phalanx Linq runs on D&B company data. For the purposes of this article and to best illustrate the capabilities of the data, I've decided to cache D&B data in a MongoDB database. For those who are unfamiliar with it, MongoDB is a NoSQL document database that plays very nicely with JSON data and with drivers  available for most popular languages. 

OData - Ubiquitous Data Access 

A tremendous advantage of data on the Azure Data Market is that OData is used for the interface. Being a simple, easy-to-understand, REST-based open-standard, it's almost trivial to access Azure data. It's so easy, you don't even need an OData library. Allow me to demonstrate. 

Upon signing up for access to the D&B Developer Sandbox (which is free), you'll receive an account_key which is used to access D&B data. Using nothing more than a few lines of code, I can pull in D&B FamilyHierarchy which shows the relationship of related companies. 
import requests # define our Azure account_keyaccount_key = 'enter_your_key_here' # define Azure/D&B OData endpointazure_base = 'https://api.datamarket.azure.com/DNB/DeveloperSandbox/v1/'dataset = 'FamilyHierarchy'url = azure_base + dataset # retrieve the OData response using BasicAuth with anything for# username and account_key for passwordresp = requests.get(url, auth=('', account_key)) 

When you print resp.text you'll see OData XML.

<?xml version="1.0" encoding="utf-8" standalone="yes"?><feed xml:base="https://api.datamarket.azure.com/Data.ashx/DNB/DeveloperSandbox/v1/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">  <title type="text">FamilyHierarchy</title>  <id>https://api.datamarket.azure.com/Data.ashx/DNB/DeveloperSandbox/v1/FamilyHierarchy</id>  <updated>2013-07-31T03:07:39Z</updated>  <link rel="self" title="FamilyHierarchy" href="FamilyHierarchy" />  <entry>    <id>https://api.datamarket.azure.com/Data.ashx/DNB/DeveloperSandbox/v1/FamilyHierarchy('001005032')</id>    <title type="text"></title>    <updated>2013-07-31T03:07:39Z</updated>    <author>      <name />    </author>    <link rel="edit" title="FamilyHierarchy" href="FamilyHierarchy('001005032')" />    <category term="DNB.DeveloperSandbox.FamilyHierarchy" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />    <content type="application/xml">      <m:properties>        <d:DUNSNumber>001005032</d:DUNSNumber>        <d:Company>SOLUTEK CORPORATION</d:Company>        <d:Address>94 SHIRLEY ST</d:Address>        <d:Address2 m:null="true" />        <d:City>ROXBURY</d:City>        <d:StateAbbrv>MA</d:StateAbbrv>        <d:ZipCode>021193029</d:ZipCode>...        <d:ParentOrganizationCountry m:null="true" />        <d:DomesticUltimateDUNS>001005032</d:DomesticUltimateDUNS>        <d:DomesticUltimateOrganizationName>SOLUTEK CORPORATION</d:DomesticUltimateOrganizationName>        <d:DomesticUltimateOrganizationAddress>94 SHIRLEY ST</d:DomesticUltimateOrganizationAddress>        <d:DomesticUltimateOrganizationAddress2 m:null="true" />        <d:DomesticUltimateOrganizationCity>ROXBURY</d:DomesticUltimateOrganizationCity>        <d:DomesticUltimateOrganizationStateAbbrv>MA</d:DomesticUltimateOrganizationStateAbbrv>        <d:DomesticUltimateOrganizationPostalCode>021193029</d:DomesticUltimateOrganizationPostalCode>        <d:DomesticUltimateOrganizationCountry>UNITED STATES</d:DomesticUltimateOrganizationCountry>        <d:GlobalUltimateDUNS>001005032</d:GlobalUltimateDUNS>        <d:GlobalUltimateOrganizationName>SOLUTEK CORPORATION</d:GlobalUltimateOrganizationName>        <d:GlobalUltimateOrganizationAddress>94 SHIRLEY ST</d:GlobalUltimateOrganizationAddress>        <d:GlobalUltimateOrganizationAddress2 m:null="true" />        <d:GlobalUltimateOrganizationCity>ROXBURY</d:GlobalUltimateOrganizationCity>        <d:GlobalUltimateOrganizationStateAbbrv>MA</d:GlobalUltimateOrganizationStateAbbrv>        <d:GlobalUltimateOrganizationPostalCode>021193029</d:GlobalUltimateOrganizationPostalCode>        <d:GlobalUltimateOrganizationCountry>UNITED STATES</d:GlobalUltimateOrganizationCountry>      </m:properties>    </content>  </entry>  <entry>    <id>https://api.datamarket.azure.com/Data.ashx/DNB/DeveloperSandbox/v1/FamilyHierarchy('001005383')</id>    <title type="text"></title>    <updated>2013-07-31T03:07:39Z</updated>… 
 
Now, to parse the feed into native objects, I used a simple feed parser:
def parse_feed(resp):    def xform_entry(entry):        return {prop.name : prop.text for prop in entry.find('properties').find_all()}     from bs4 import BeautifulSoup    soup = BeautifulSoup(resp.text, features='xml')     items = [xform_entry(e) for e in soup.find_all('entry')]     next_url = None    for link in soup.find_all('link'):        if link['rel']=='next':            next_url = '?' + link['href'].split('?')[1]     return { 'items' : items, 'next' : next_url }  

So when I call parse_feed(resp), a native object representation of D&B data is returned:

{'items': [{'Address': u'94 SHIRLEY ST',            'Address2': u'',            'AnnualSalesUSDollars': u'0',            'CEOName': u'MARLOWE SIGAL',            'CEOTitle': u'PRESIDENT',            'City': u'ROXBURY',            'Company': u'SOLUTEK CORPORATION',            'CompanyStartYear': u'1946',            'ControlYear': u'1946',            'Country': u'UNITED STATES',            'DUNSNumber': u'001005032',            'DoingBusinessAs1': u'',            'DoingBusinessAs2': u'',            'DoingBusinessAs3': u'',            'DoingBusinessAs4': u'',            'DoingBusinessAs5': u'',…            'ParentDUNS': u'000000000',            'ParentOrganizationAddress': u'',            'ParentOrganizationAddress2': u'',            'ParentOrganizationCity': u'',            'ParentOrganizationCountry': u'',            'ParentOrganizationName': u'',            'ParentOrganizationPostalCode': u'',            'ParentOrganizationStateAbbrv': u'',            'Phone': u'7403930535',            'SingleLocation': u'',            'StateAbbrv': u'OH',            'ZipCode': u'430503419'}], 'next': u"?$skiptoken='001315824'"} 

Less than 20 lines of code to access the full power of D&B data!

Application Walk-Thru 

Phalanx Linq is designed to allow Healthcare BizDev professionals better manage a portfolio of customers (although it could also be used to manage vendors and partners). Let's get started by visiting http://phalanxlinq.cloudapp.net/search. You will see a search page that allows searching for company names, DBAs, locations, and other keywords. Furthermore, you are able to search for key D&B indicators such as Woman, Veteran, and Minority-Owned businesses, business located in Labor Surplus Areas. This allows a Healthcare BizDev professional better target potential clients, customers, vendors, and partners.

 

 

 You'll notice indicators for companies that are in my portfolio and companies that meet various criteria defined by customizable rulesets. I can click a company to view its detailed page. 

 

The company page is rich in D&B data: It includes location, phone number, firmographics, indicators (that are active/searchable), industry codes. We are using the D&B provided geolocation to plot the location on a map. We can also send the company as a lead to a supported CRM, such as Microsoft Dynamics. 

A key capability is the ability to augment D&B data points with key industry-specific attributes which are defined as a profile. Clicking the Show Profile button expands a section that contains completely customizable attribute editor. By default values are populated using a ruleset, but the platform can also leverage additional APIs available from D&B. The user can verify or override values on a company-by-company basis, then click the Save button to add the company with attribute values to their portfolio. 

 

You'll see we've defined some Healthcare industry-specific income/expense values which is fed into the Phalanx analytics platform to give actionable insight to users. Let's take a look at the dashboard which will show an overview of our portfolio. 

 

 The dashboard contains key information on the companies that make up our portfolio as well as key analytics that visualize how an individual company (as well as the portfolio as a whole) is performing relative to our industry-defined base line. An analytics module (currently in pre-Beta phased, being developed for the commercial edition of Phalanx Linq) provides powerful visualization capabilities for additional insight into the portfolio and industry. 

 

The settings section allows the user to tailor their industry profile. For example, since we're targeting the Healthcare industry, we've chosen SIC codes that correspond to hospitals, medicine, and pharma. Since D&B provides SIC classifications on all their companies, the platform can be tailored to a different vertical by just changing a few settings. 

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)