Reporting on OpenData
Introduction
Veeva Network now enables customers to access the OpenData master database through the SQL Query Editor. You can query, analyze, and report on data from both your Network instance and the OpenData master instance to support your business operations.
Here are five common scenarios along with sample SQL queries using this feature.
Scenario 1: Count HCPs in OpenData
Verteo Biopharma is concentrating its efforts on oncology. They would like to know the total number of HCPs specializing in Oncology in the US, as well as the number of oncology HCPs that have been covered by Verteo Pharma.
If you have a similar need:
- Modify the SQL query to suit your specific requirements and run the query.
- Save the query as a report. This way, you can access it easily and quickly from your Saved Report list whenever you need it.
Report result
Sample SQL
SELECT 'Verteo_HCPs' AS Source, COUNT (vid__v) FROM hcp WHERE specialties IN ( 'ON', '19', 'PONC', '19_2', '19_3' ) AND hcp_status__v = 'A' AND is_veeva_master__v = 'TRUE' UNION SELECT 'OpenData_HCPs' AS Source, COUNT (vid__v) FROM opendata_na.hcp WHERE specialties IN ('ON','19','PONC', '19_2', '19_3' ) AND hcp_status__v = 'A'
Scenario 2: List out the potential target HCPs that have not yet been downloaded
Continuing with the previous scenario, Verteo Biopharma would like to obtain a list of HCPs that have not existed in their Network, along with detailed information about each of them. The list needs to be able to be exported to an Excel file for further analysis.
If you have a similar need:
- Modify the SQL query to suit your specific requirements and run the query.
- Click the Download Report button to download the result into an Excel file.
Report result
Sample SQL
SELECT odhcp.vid__v, formatted_name__v, npi_num__v, hcp_type__v, odhcp.medical_degree_1__v, odhcp.specialty_1__v, odaddress.formatted_address__v, listagg ( DISTINCT fl.ancestor_name__v, '| ') AS "Health System" FROM opendata_na.hcp odhcp LEFT OUTER JOIN opendata_na.address odaddress ON odhcp.vid__v = odaddress.entity_vid__v AND odaddress.address_status__v = 'A' AND address_ordinal__v = 1 AND odaddress.record_state__v = 'VALID' LEFT OUTER JOIN opendata_na.flat_hierarchy fl ON fl.entity_vid__v = odhcp.vid__v AND hco_type__v_ancestor = '4:37' WHERE odhcp.specialties IN ( 'ON', '19', 'PONC', '19_2', '19_3' ) AND hcp_status__v = 'A' AND odhcp.vid__v NOT IN ( SELECT vid__v FROM hcp WHERE specialties IN ( 'ON', '19', 'PONC', '19_2', '19_3' ) ) GROUP BY odhcp.vid__v, odhcp.formatted_name__v, npi_num__v, hcp_type__v, odhcp.medical_degree_1__v, odhcp.specialty_1__v, odaddress.formatted_address__v ORDER BY odhcp.vid__v
Scenario 3: Find the missing parents related to the downloaded HCPs/HCOs
Verteo Biopharma would like to obtain a comprehensive hierarchy view of its target HCPs. They have discovered that some of the parent HCOs of the target HCPs have not been downloaded. Verteo Biopharma would like to receive a complete list of these missing HCOs in order to decide whether or not to download them.
If you have similar need:
- Modify the SQL query to suit your specific requirements and run the query.
- Click the Download Report button to download the result into an Excel file.
Sample SQL
SELECT hco.vid__v, hco.corporate_name__v, hco.hco_type__v, listagg (distinct fl.ancestor_name__v,'| ') as "Health Systems" FROM opendata_na.hco left join opendata_na.flat_hierarchy fl on hco.vid__v=entity_vid__v and fl.hco_type__v_ancestor ='4:37' WHERE hco.vid__v IN ( SELECT DISTINCT us_opendata_hcos.parent_hco_vid__v FROM ( SELECT parenthco.parent_hco_vid__v, parenthco.vid__v, parenthco.entity_vid__v FROM hcp INNER JOIN opendata_na.parenthco ON hcp.vid__v = parenthco.entity_vid__v INNER JOIN opendata_na.hco ON hco.vid__v = parenthco.parent_hco_vid__v WHERE parenthco.parent_hco_status__v = 'A' ) us_opendata_hcos LEFT OUTER JOIN ( SELECT hco.vid__v FROM hco WHERE hco_status__v = 'A' AND primary_country__v = 'US' AND record_owner_type__v = 'VOD' ) downloaded_us_hcos ON downloaded_us_hcos.vid__v = us_opendata_hcos.parent_hco_vid__v WHERE downloaded_us_hcos.vid__v IS NULL ) group by hco.vid__v, hco.corporate_name__v, hco.hco_type__v
Scenario 4: Join custom tables with OpenData
Verteo Biopharma has obtained a list of NPI numbers from another source. They would like to have all these HCOs/HCPs in Network. To accomplish this, it is necessary to know which of them already exist in Verteo Network, which ones are only present in OpenData and need to be downloaded, and which ones do not exist and must be created through DCRs.
If you have similar requirement:
- Use the NPI list file to create a custom table.
- Modify the SQL query to suit your specific requirements and run the query.
- Click the Download Report button to download the result into an Excel file.
Report result
Sample SQL
SELECT ct.npi, nt.vid__v, nt.Name, nt.record_type,nt.source FROM npi_list__ct ct LEFT OUTER JOIN ( SELECT vid__v,record_state__v, npi_num__v,formatted_name__v AS "Name", 'HCP' AS record_type, 'Verteo Network' AS "Source" FROM hcp WHERE npi_num__v IS NOT NULL UNION SELECT vid__v, record_state__v,npi_num__v,corporate_name__v AS "Name", 'HCO' AS record_type, 'Verteo Network' AS "Source" FROM hco WHERE npi_num__v IS NOT NULL UNION SELECT vid__v, record_state__v,npi_num__v,formatted_name__v AS "Name", 'HCP' AS record_type, 'OpenData' AS "Source" FROM opendata_na.hcp WHERE npi_num__v IS NOT NULL AND npi_num__v NOT IN ( SELECT npi_num__v FROM hcp WHERE npi_num__v IN ( SELECT npi FROM npi_list__ct ) ) UNION SELECT vid__v,record_state__v,npi_num__v,corporate_name__v AS "Name", 'HCO' AS record_type, 'OpenData' AS "Source" FROM opendata_na.hco WHERE npi_num__v IS NOT NULL AND npi_num__v NOT IN ( SELECT npi_num__v FROM hco WHERE npi_num__v IN ( SELECT npi FROM npi_list__ct ) ) ) nt ON ct.npi = nt.npi_num__v Order by source
Scenario 5: Query flattened hierarchy from OpenData
Verteo Biopharma would like to obtain a count of oncologists and hospitals in each health system and compare those numbers to the data in their own network instance.
If you have similar requirement:
- Modify the SQL query to suit your specific requirements and run the query.
- Save the query as a report. This way, you can access it easily and quickly from your Saved Report list whenever you need it.
Report result
Sample SQL
SELECT od_hospital.vid AS "Health System VID", od_hospital.Name AS "Health System Name", od_hospital.Hospitals AS "OpenData Hospitals", verteo_hospital.Hospitals AS "Verteo Hospitals", od_hcp.hcps AS "OpenData HCPs", verteo_hcp.hcps AS "Verteo HCPs" FROM ( SELECT ancestor_vid__v AS "vid",ancestor_name__v AS "Name" FROM opendata_na.flat_hierarchy WHERE hco_type__v_ancestor = '4:37' GROUP BY ancestor_vid__v, ancestor_name__v ) odfl LEFT JOIN ( SELECT ancestor_vid__v AS "vid",ancestor_name__v AS "Name", COUNT (entity_vid__v) AS "Hospitals" FROM opendata_na.flat_hierarchy WHERE hco_type__v_ancestor = '4:37' AND major_class_of_trade__v_entity = '32' GROUP BY ancestor_vid__v,ancestor_name__v ) od_hospital ON odfl.vid = od_hospital.vid LEFT JOIN ( SELECT ancestor_vid__v AS "vid", ancestor_name__v AS "Name", COUNT (entity_vid__v) AS "Hospitals" FROM flat_hierarchy WHERE hco_type__v_ancestor = '4:37' AND major_class_of_trade__v_entity = '32' GROUP BY ancestor_vid__v, ancestor_name__v ) verteo_hospital ON verteo_hospital.vid = odfl.vid LEFT JOIN ( SELECT ancestor_vid__v AS "vid", ancestor_name__v AS "Name", COUNT (fh.entity_vid__v) AS "HCPs" FROM opendata_na.flat_hierarchy fh JOIN opendata_na.hcp ON fh.entity_vid__v = hcp.vid__v WHERE fh.hco_type__v_ancestor = '4:37' AND fh.entity_type__v = 'HCP' AND hcp.specialties IN ( 'ON', '19', 'PONC', '19_2', '19_3' ) GROUP BY ancestor_vid__v,ancestor_name__v ) od_hcp ON od_hcp.vid = odfl.vid LEFT JOIN ( SELECT ancestor_vid__v AS "vid",ancestor_name__v AS "Name", COUNT (fh.entity_vid__v) AS "HCPs" FROM flat_hierarchy fh JOIN hcp ON fh.entity_vid__v = hcp.vid__v WHERE fh.hco_type__v_ancestor = '4:37' AND fh.entity_type__v = 'HCP' AND hcp.specialties IN ( 'ON', '19', 'PONC', '19_2', '19_3') GROUP BY ancestor_vid__v, ancestor_name__v ) verteo_hcp ON verteo_hcp.vid = odfl.vid WHERE verteo_hcp.hcps <> 0 OR od_hcp.hcps <> 0 OR verteo_hospital.Hospitals <> 0 OR od_hospital.Hospitals <> 0
See the following topic for more information: