383.Which Pharma Distributors Are High-Risk? Can SAS Detect Delays, Temperature Violations, and Fraud?

Which Pharma Distributors Are High-Risk? Can SAS Detect Delays, Temperature Violations, and Fraud?


HERE IN THIS PROJECT WE USED THESE SAS STATEMENTS —
DATA STEP | PROC SQL |  PROC PRINT | PROC SGPLOT | MACROS | PROC CORR | PROC MEANS | PROC FREQ | PROC UNIVARIATE | APPEND | PROC SORT | PROC DATASETS DELETE

Introduction:

In the pharmaceutical industry, distributing medicines safely and on time is just as important as manufacturing them. Drugs must travel through multiple distributors, regions, and storage conditions before reaching hospitals and patients. During this process, companies must track shipment delays, temperature control, and regulatory compliance to ensure that every medicine remains safe and effective.


Contents:

* Understanding Drug Distribution Channels

* Creating the Drug Shipment Dataset in SAS

* Using Date Functions (MDY, INTNX, INTCK) for Delivery Analysis

* Cleaning and Formatting Data with SAS Functions

* Distributor Utilization Classification Using Macros

* Fraud and Compliance Risk Detection

* Performance Analysis Using PROC SQL

* Statistical Analysis with PROC MEANS and PROC UNIVARIATE

* Frequency and Correlation Analysis

* Visualization Using PROC SGPLOT

* Data Reshaping with PROC TRANSPOSE and APPEND

* Final Results and Insights

* Conclusion


1. Business Context

Pharmaceutical companies distribute drugs across multiple channels:

·       Manufacturers

·       Central warehouses

·       Regional distributors

·       Hospitals

·       Pharmacies

·       Clinical trial sites

Every shipment must follow:

·       Temperature control (Cold chain, Controlled, Ambient)

·       Delivery timelines

·       Regulatory compliance

·       Batch traceability

Failures can cause:

·       Drug spoilage

·       Regulatory violations (FDA, EMA)

·       Patient safety risk

·       Financial fraud

This project simulates how pharma companies monitor:

·       Units shipped

·       Temperature violations

·       Delays

·       Distributor behavior

·       Compliance risk

using SAS analytics.


Why Drug Distribution Data Matters

In pharmaceutical operations, drug shipment data is as important as clinical trial data because:

·       Temperature failure can make drugs ineffective

·       Delays cause shortages in hospitals

·       Non-compliance can result in FDA warning letters

·       Distributors can commit billing fraud


DATA Step

Used to simulate raw supply chain feeds from distributors.

Variables:

Variable

Why

Drug_Name

Identifies medicine

Distributor

Who handled shipment

Region

Geography

Units_Shipped

Volume

Temperature_Control

Cold / Controlled / Ambient

Delay_Days

Logistics risk

Compliance_Status

Regulatory adherence

Ship_Date

Dispatch

Delivery_Date

Receipt


2. SAS Program

STEP-1: Create Raw Drug Distribution Dataset

data drug_shipments_raw;

    input Drug_Name:$12. Distributor:$12. Region $ Units_Shipped Temperature_Control:$10. 

          Delay_Days Compliance_Status $ Ship_Date :date9. Delivery_Date :date9.;

    format Ship_Date Delivery_Date date9.;

datalines;

Paracetamol MedLink North 12000 Cold 1 Yes 01JAN2025 03JAN2025

Ibuprofen HealthFlow South 8000 Ambient 5 No 05JAN2025 12JAN2025

Amoxicillin MedLink East 15000 Cold 0 Yes 07JAN2025 07JAN2025

Metformin PharmaRoute West 20000 Controlled 2 Yes 10JAN2025 13JAN2025

Aspirin HealthFlow North 9000 Ambient 8 No 15JAN2025 25JAN2025

Ciprofloxacin MedLink South 11000 Cold 1 Yes 18JAN2025 20JAN2025

Insulin PharmaRoute East 5000 Cold 10 No 20JAN2025 05FEB2025

Atorvastatin HealthFlow West 14000 Controlled 3 Yes 22JAN2025 26JAN2025

Losartan MedLink North 13000 Controlled 2 Yes 25JAN2025 28JAN2025

Azithromycin PharmaRoute South 16000 Cold 7 No 28JAN2025 10FEB2025

Omeprazole HealthFlow East 10000 Ambient 1 Yes 30JAN2025 02FEB2025

Warfarin MedLink West 7000 Controlled 6 No 02FEB2025 10FEB2025

Heparin PharmaRoute North 4000 Cold 0 Yes 05FEB2025 05FEB2025

Clopidogrel HealthFlow South 9000 Ambient 4 Yes 07FEB2025 12FEB2025

Lisinopril MedLink East 12000 Controlled 3 Yes 10FEB2025 15FEB2025

;

run;

proc print data=drug_shipments_raw;

run;

OUTPUT:

ObsDrug_NameDistributorRegionUnits_ShippedTemperature_ControlDelay_DaysCompliance_StatusShip_DateDelivery_Date
1ParacetamolMedLinkNorth12000Cold1Yes01JAN202503JAN2025
2IbuprofenHealthFlowSouth8000Ambient5No05JAN202512JAN2025
3AmoxicillinMedLinkEast15000Cold0Yes07JAN202507JAN2025
4MetforminPharmaRouteWest20000Controlled2Yes10JAN202513JAN2025
5AspirinHealthFlowNorth9000Ambient8No15JAN202525JAN2025
6CiprofloxaciMedLinkSouth11000Cold1Yes18JAN202520JAN2025
7InsulinPharmaRouteEast5000Cold10No20JAN202505FEB2025
8AtorvastatinHealthFlowWest14000Controlled3Yes22JAN202526JAN2025
9LosartanMedLinkNorth13000Controlled2Yes25JAN202528JAN2025
10AzithromycinPharmaRouteSouth16000Cold7No28JAN202510FEB2025
11OmeprazoleHealthFlowEast10000Ambient1Yes30JAN202502FEB2025
12WarfarinMedLinkWest7000Controlled6No02FEB202510FEB2025
13HeparinPharmaRouteNorth4000Cold0Yes05FEB202505FEB2025
14ClopidogrelHealthFlowSouth9000Ambient4Yes07FEB202512FEB2025
15LisinoprilMedLinkEast12000Controlled3Yes10FEB202515FEB2025

STEP-2: Add Derived Dates Using INTNX and INTCK

data drug_dates;

    set drug_shipments_raw;

    format Expected_Delivery date9.;

    Expected_Delivery = intnx('day', Ship_Date, 3);

    Actual_Days = intck('day', Ship_Date, Delivery_Date);

run;

proc print data=drug_dates;

 var Drug_Name Distributor Region Expected_Delivery Actual_Days;

run;

OUTPUT:

ObsDrug_NameDistributorRegionExpected_DeliveryActual_Days
1ParacetamolMedLinkNorth04JAN20252
2IbuprofenHealthFlowSouth08JAN20257
3AmoxicillinMedLinkEast10JAN20250
4MetforminPharmaRouteWest13JAN20253
5AspirinHealthFlowNorth18JAN202510
6CiprofloxaciMedLinkSouth21JAN20252
7InsulinPharmaRouteEast23JAN202516
8AtorvastatinHealthFlowWest25JAN20254
9LosartanMedLinkNorth28JAN20253
10AzithromycinPharmaRouteSouth31JAN202513
11OmeprazoleHealthFlowEast02FEB20253
12WarfarinMedLinkWest05FEB20258
13HeparinPharmaRouteNorth08FEB20250
14ClopidogrelHealthFlowSouth10FEB20255
15LisinoprilMedLinkEast13FEB20255

MDY, INTNX, INTCK:

These functions mimic how pharma companies calculate:

·       Expected delivery dates

·       Shipping SLA

·       Actual vs expected delays

This is critical in cold chain compliance.


STEP-3: Character & Numeric Cleaning

data drug_clean;

    set drug_dates;

    Drug_Name = propcase(strip(Drug_Name));

    Distributor = upcase(trim(Distributor));

    Region = lowcase(Region);

    Temp_Type = catx('-', Temperature_Control, Region);

    Delay_Flag = coalesce(Delay_Days,0);

    Shipment_Size = round(Units_Shipped/1000,1);

run;

proc print data=drug_clean;

 var Drug_Name Distributor Region Temperature_Control Temp_Type Delay_Flag Shipment_Size;

run;

OUTPUT:

ObsDrug_NameDistributorRegionTemperature_ControlTemp_TypeDelay_FlagShipment_Size
1ParacetamolMEDLINKnorthColdCold-north112
2IbuprofenHEALTHFLOWsouthAmbientAmbient-south58
3AmoxicillinMEDLINKeastColdCold-east015
4MetforminPHARMAROUTEwestControlledControlled-west220
5AspirinHEALTHFLOWnorthAmbientAmbient-north89
6CiprofloxaciMEDLINKsouthColdCold-south111
7InsulinPHARMAROUTEeastColdCold-east105
8AtorvastatinHEALTHFLOWwestControlledControlled-west314
9LosartanMEDLINKnorthControlledControlled-north213
10AzithromycinPHARMAROUTEsouthColdCold-south716
11OmeprazoleHEALTHFLOWeastAmbientAmbient-east110
12WarfarinMEDLINKwestControlledControlled-west67
13HeparinPHARMAROUTEnorthColdCold-north04
14ClopidogrelHEALTHFLOWsouthAmbientAmbient-south49
15LisinoprilMEDLINKeastControlledControlled-east312

Character Functions:

Used for:

·       Data standardization

·       Removing errors from distributor feeds

·       Ensuring joins and SQL grouping work correctly

Example:
propcase, upcase, strip remove inconsistent text.


STEP-4: Utilization Classification Macro

%macro utilization(input=, output=);

data &output;

    set &input;

    length Utilization $15;

    if Units_Shipped > 15000 then Utilization="High";

    else if 8000 <= Units_Shipped <= 15000 then Utilization="Medium";

    else Utilization="Low";

run;

proc print data=&output;

  var Drug_Name Distributor Region Temperature_Control Units_Shipped Utilization;

run;

%mend;


%utilization(input=drug_clean, output=drug_util);

OUTPUT:

ObsDrug_NameDistributorRegionTemperature_ControlUnits_ShippedUtilization
1ParacetamolMEDLINKnorthCold12000Medium
2IbuprofenHEALTHFLOWsouthAmbient8000Medium
3AmoxicillinMEDLINKeastCold15000Medium
4MetforminPHARMAROUTEwestControlled20000High
5AspirinHEALTHFLOWnorthAmbient9000Medium
6CiprofloxaciMEDLINKsouthCold11000Medium
7InsulinPHARMAROUTEeastCold5000Low
8AtorvastatinHEALTHFLOWwestControlled14000Medium
9LosartanMEDLINKnorthControlled13000Medium
10AzithromycinPHARMAROUTEsouthCold16000High
11OmeprazoleHEALTHFLOWeastAmbient10000Medium
12WarfarinMEDLINKwestControlled7000Low
13HeparinPHARMAROUTEnorthCold4000Low
14ClopidogrelHEALTHFLOWsouthAmbient9000Medium
15LisinoprilMEDLINKeastControlled12000Medium

Utilization Macro:

Used to classify:

·       High volume distributors

·       Medium

·       Low

This helps in contract negotiation and capacity planning.

STEP-5: Fraud Detection Macro

%macro fraud(input=, output=);

data &output;

    set &input;

    length Fraud_Risk $10;

    if Delay_Days > 7 or Compliance_Status="No" then Fraud_Risk="High";

    else if 3 <= Delay_Days <= 7 then Fraud_Risk="Medium";

    else Fraud_Risk="Low";

run;

proc print data=&output;

  var Drug_Name Distributor Region Temperature_Control Fraud_Risk Compliance_Status Delay_Days;

run;

%mend;


%fraud(input=drug_util, output=drug_fraud);

OUTPUT:

ObsDrug_NameDistributorRegionTemperature_ControlFraud_RiskCompliance_StatusDelay_Days
1ParacetamolMEDLINKnorthColdLowYes1
2IbuprofenHEALTHFLOWsouthAmbientHighNo5
3AmoxicillinMEDLINKeastColdLowYes0
4MetforminPHARMAROUTEwestControlledLowYes2
5AspirinHEALTHFLOWnorthAmbientHighNo8
6CiprofloxaciMEDLINKsouthColdLowYes1
7InsulinPHARMAROUTEeastColdHighNo10
8AtorvastatinHEALTHFLOWwestControlledMediumYes3
9LosartanMEDLINKnorthControlledLowYes2
10AzithromycinPHARMAROUTEsouthColdHighNo7
11OmeprazoleHEALTHFLOWeastAmbientLowYes1
12WarfarinMEDLINKwestControlledHighNo6
13HeparinPHARMAROUTEnorthColdLowYes0
14ClopidogrelHEALTHFLOWsouthAmbientMediumYes4
15LisinoprilMEDLINKeastControlledMediumYes3

Fraud Macro:

Rules simulate audit triggers:

·       Large delays

·       Compliance violations

These are exactly how pharma compliance teams flag suspicious shipments.

STEP-6: PROC SQL Analysis

proc sql;

    create table distributor_perf as

    select Distributor,

           count(*) as Shipments,

           sum(Units_Shipped) as Total_Units,

           mean(Delay_Days) as Avg_Delay

    from drug_fraud

    group by Distributor;

quit;

proc print data=distributor_perf;

run;

OUTPUT:

ObsDistributorShipmentsTotal_UnitsAvg_Delay
1HEALTHFLOW5500004.20000
2MEDLINK6700002.16667
3PHARMAROUTE4450004.75000

PROC SQL:

Used for KPI reporting:

·       Which distributor ships the most

·       Who has highest delays

This is the same as vendor performance dashboards.


STEP-7: PROC MEANS & UNIVARIATE

proc means data=drug_fraud mean min max;

    var Units_Shipped Delay_Days Actual_Days;

run;

OUTPUT:

The MEANS Procedure

VariableMeanMinimumMaximum
Units_Shipped
Delay_Days
Actual_Days
11000.00
3.5333333
5.4000000
4000.00
0
0
20000.00
10.0000000
16.0000000

proc univariate data=drug_fraud;

    var Delay_Days;

run;

OUTPUT:

The UNIVARIATE Procedure

Variable: Delay_Days

Moments
N15Sum Weights15
Mean3.53333333Sum Observations53
Std Deviation3.06749471Variance9.40952381
Skewness0.78509802Kurtosis-0.3195871
Uncorrected SS319Corrected SS131.733333
Coeff Variation86.8158881Std Error Mean0.79202373
Basic Statistical Measures
LocationVariability
Mean3.533333Std Deviation3.06749
Median3.000000Variance9.40952
Mode1.000000Range10.00000
  Interquartile Range5.00000
Tests for Location: Mu0=0
TestStatisticp Value
Student's tt4.461146Pr > |t|0.0005
SignM6.5Pr >= |M|0.0002
Signed RankS45.5Pr >= |S|0.0002
Quantiles (Definition 5)
LevelQuantile
100% Max10
99%10
95%10
90%8
75% Q36
50% Median3
25% Q11
10%0
5%0
1%0
0% Min0
Extreme Observations
LowestHighest
ValueObsValueObs
01352
03612
111710
1685
11107

 PROC MEANS & UNIVARIATE:

Used to:

·       Detect abnormal delays

·       Identify extreme shipments

·       Perform QC

This is used in FDA inspection readiness.

STEP-8: PROC FREQ

proc freq data=drug_fraud;

    tables Utilization*Fraud_Risk Compliance_Status;

run;

OUTPUT:

The FREQ Procedure

Frequency
Percent
Row Pct
Col Pct
Table of Utilization by Fraud_Risk
UtilizationFraud_Risk
HighLowMediumTotal
High
1
6.67
50.00
20.00
1
6.67
50.00
14.29
0
0.00
0.00
0.00
2
13.33
 
 
Low
2
13.33
66.67
40.00
1
6.67
33.33
14.29
0
0.00
0.00
0.00
3
20.00
 
 
Medium
2
13.33
20.00
40.00
5
33.33
50.00
71.43
3
20.00
30.00
100.00
10
66.67
 
 
Total
5
33.33
7
46.67
3
20.00
15
100.00
Compliance_StatusFrequencyPercentCumulative
Frequency
Cumulative
Percent
No533.33533.33
Yes1066.6715100.00

PROC FREQ:

Used to:

·       See if high utilization distributors also have high fraud

·       Monitor compliance rates

STEP-9: PROC CORR

proc corr data=drug_fraud;

    var Units_Shipped Delay_Days Actual_Days;

run;

OUTPUT:

The CORR Procedure

3 Variables:Units_Shipped Delay_Days Actual_Days
Simple Statistics
VariableNMeanStd DevSumMinimumMaximum
Units_Shipped15110004276165000400020000
Delay_Days153.533333.0674953.00000010.00000
Actual_Days155.400004.6414381.00000016.00000
Pearson Correlation Coefficients, N = 15
Prob > |r| under H0: Rho=0
 Units_ShippedDelay_DaysActual_Days
Units_Shipped
1.00000
 
-0.29405
0.2874
-0.23393
0.4014
Delay_Days
-0.29405
0.2874
1.00000
 
0.97228
<.0001
Actual_Days
-0.23393
0.4014
0.97228
<.0001
1.00000
 

PROC CORR:

Used to understand:

·       Does more volume mean more delays?

·       Is heavy shipping linked to compliance risk?

STEP-10: PROC SGPLOT

proc sgplot data=drug_fraud;

    vbar Distributor / response=Units_Shipped stat=sum;

run;

OUTPUT:

The SGPlot Procedure

PROC SGPLOT:

Visual dashboards for management.


STEP-11: TRANSPOSE

proc transpose data=drug_fraud out=drug_wide;

    by Distributor NotSorted;

    id Fraud_Risk;

    var Units_Shipped;

run;

proc print data=drug_wide;

run;

OUTPUT:

ObsDistributor_NAME_LowHighMedium
1MEDLINKUnits_Shipped12000..
2HEALTHFLOWUnits_Shipped.8000.
3MEDLINKUnits_Shipped15000..
4PHARMAROUTEUnits_Shipped20000..
5HEALTHFLOWUnits_Shipped.9000.
6MEDLINKUnits_Shipped11000..
7PHARMAROUTEUnits_Shipped.5000.
8HEALTHFLOWUnits_Shipped..14000
9MEDLINKUnits_Shipped13000..
10PHARMAROUTEUnits_Shipped.16000.
11HEALTHFLOWUnits_Shipped10000..
12MEDLINKUnits_Shipped.7000.
13PHARMAROUTEUnits_Shipped4000..
14HEALTHFLOWUnits_Shipped..9000
15MEDLINKUnits_Shipped..12000

TRANSPOSE:

Used for:

·       Reporting systems

·       Feeding BI tools


STEP-12: APPEND

data drug_fraud_new;

    set drug_fraud;

    Ship_Date = intnx('day', Ship_Date, 7);

    Delivery_Date = intnx('day', Delivery_Date, 7);

run;

proc print data=drug_fraud_new;

run;

OUTPUT:

ObsDrug_NameDistributorRegionUnits_ShippedTemperature_ControlDelay_DaysCompliance_StatusShip_DateDelivery_DateExpected_DeliveryActual_DaysTemp_TypeDelay_FlagShipment_SizeUtilizationFraud_Risk
1ParacetamolMEDLINKnorth12000Cold1Yes08JAN202510JAN202504JAN20252Cold-north112MediumLow
2IbuprofenHEALTHFLOWsouth8000Ambient5No12JAN202519JAN202508JAN20257Ambient-south58MediumHigh
3AmoxicillinMEDLINKeast15000Cold0Yes14JAN202514JAN202510JAN20250Cold-east015MediumLow
4MetforminPHARMAROUTEwest20000Controlled2Yes17JAN202520JAN202513JAN20253Controlled-west220HighLow
5AspirinHEALTHFLOWnorth9000Ambient8No22JAN202501FEB202518JAN202510Ambient-north89MediumHigh
6CiprofloxaciMEDLINKsouth11000Cold1Yes25JAN202527JAN202521JAN20252Cold-south111MediumLow
7InsulinPHARMAROUTEeast5000Cold10No27JAN202512FEB202523JAN202516Cold-east105LowHigh
8AtorvastatinHEALTHFLOWwest14000Controlled3Yes29JAN202502FEB202525JAN20254Controlled-west314MediumMedium
9LosartanMEDLINKnorth13000Controlled2Yes01FEB202504FEB202528JAN20253Controlled-north213MediumLow
10AzithromycinPHARMAROUTEsouth16000Cold7No04FEB202517FEB202531JAN202513Cold-south716HighHigh
11OmeprazoleHEALTHFLOWeast10000Ambient1Yes06FEB202509FEB202502FEB20253Ambient-east110MediumLow
12WarfarinMEDLINKwest7000Controlled6No09FEB202517FEB202505FEB20258Controlled-west67LowHigh
13HeparinPHARMAROUTEnorth4000Cold0Yes12FEB202512FEB202508FEB20250Cold-north04LowLow
14ClopidogrelHEALTHFLOWsouth9000Ambient4Yes14FEB202519FEB202510FEB20255Ambient-south49MediumMedium
15LisinoprilMEDLINKeast12000Controlled3Yes17FEB202522FEB202513FEB20255Controlled-east312MediumMedium


proc append base=drug_fraud 

            data=drug_fraud_new force;

run;

proc print data=drug_fraud;

run;

OUTPUT:

ObsDrug_NameDistributorRegionUnits_ShippedTemperature_ControlDelay_DaysCompliance_StatusShip_DateDelivery_DateExpected_DeliveryActual_DaysTemp_TypeDelay_FlagShipment_SizeUtilizationFraud_Risk
1ParacetamolMEDLINKnorth12000Cold1Yes01JAN202503JAN202504JAN20252Cold-north112MediumLow
2IbuprofenHEALTHFLOWsouth8000Ambient5No05JAN202512JAN202508JAN20257Ambient-south58MediumHigh
3AmoxicillinMEDLINKeast15000Cold0Yes07JAN202507JAN202510JAN20250Cold-east015MediumLow
4MetforminPHARMAROUTEwest20000Controlled2Yes10JAN202513JAN202513JAN20253Controlled-west220HighLow
5AspirinHEALTHFLOWnorth9000Ambient8No15JAN202525JAN202518JAN202510Ambient-north89MediumHigh
6CiprofloxaciMEDLINKsouth11000Cold1Yes18JAN202520JAN202521JAN20252Cold-south111MediumLow
7InsulinPHARMAROUTEeast5000Cold10No20JAN202505FEB202523JAN202516Cold-east105LowHigh
8AtorvastatinHEALTHFLOWwest14000Controlled3Yes22JAN202526JAN202525JAN20254Controlled-west314MediumMedium
9LosartanMEDLINKnorth13000Controlled2Yes25JAN202528JAN202528JAN20253Controlled-north213MediumLow
10AzithromycinPHARMAROUTEsouth16000Cold7No28JAN202510FEB202531JAN202513Cold-south716HighHigh
11OmeprazoleHEALTHFLOWeast10000Ambient1Yes30JAN202502FEB202502FEB20253Ambient-east110MediumLow
12WarfarinMEDLINKwest7000Controlled6No02FEB202510FEB202505FEB20258Controlled-west67LowHigh
13HeparinPHARMAROUTEnorth4000Cold0Yes05FEB202505FEB202508FEB20250Cold-north04LowLow
14ClopidogrelHEALTHFLOWsouth9000Ambient4Yes07FEB202512FEB202510FEB20255Ambient-south49MediumMedium
15LisinoprilMEDLINKeast12000Controlled3Yes10FEB202515FEB202513FEB20255Controlled-east312MediumMedium
16ParacetamolMEDLINKnorth12000Cold1Yes08JAN202510JAN202504JAN20252Cold-north112MediumLow
17IbuprofenHEALTHFLOWsouth8000Ambient5No12JAN202519JAN202508JAN20257Ambient-south58MediumHigh
18AmoxicillinMEDLINKeast15000Cold0Yes14JAN202514JAN202510JAN20250Cold-east015MediumLow
19MetforminPHARMAROUTEwest20000Controlled2Yes17JAN202520JAN202513JAN20253Controlled-west220HighLow
20AspirinHEALTHFLOWnorth9000Ambient8No22JAN202501FEB202518JAN202510Ambient-north89MediumHigh
21CiprofloxaciMEDLINKsouth11000Cold1Yes25JAN202527JAN202521JAN20252Cold-south111MediumLow
22InsulinPHARMAROUTEeast5000Cold10No27JAN202512FEB202523JAN202516Cold-east105LowHigh
23AtorvastatinHEALTHFLOWwest14000Controlled3Yes29JAN202502FEB202525JAN20254Controlled-west314MediumMedium
24LosartanMEDLINKnorth13000Controlled2Yes01FEB202504FEB202528JAN20253Controlled-north213MediumLow
25AzithromycinPHARMAROUTEsouth16000Cold7No04FEB202517FEB202531JAN202513Cold-south716HighHigh
26OmeprazoleHEALTHFLOWeast10000Ambient1Yes06FEB202509FEB202502FEB20253Ambient-east110MediumLow
27WarfarinMEDLINKwest7000Controlled6No09FEB202517FEB202505FEB20258Controlled-west67LowHigh
28HeparinPHARMAROUTEnorth4000Cold0Yes12FEB202512FEB202508FEB20250Cold-north04LowLow
29ClopidogrelHEALTHFLOWsouth9000Ambient4Yes14FEB202519FEB202510FEB20255Ambient-south49MediumMedium
30LisinoprilMEDLINKeast12000Controlled3Yes17FEB202522FEB202513FEB20255Controlled-east312MediumMedium

APPEND:

Used when new shipment batches arrive daily.


STEP-13: PROC DATASETS DELETE

proc datasets library=work nolist;

    delete drug_wide;

quit;

LOG:

NOTE: Deleting WORK.DRUG_WIDE (memtype=DATA).

PROC DATASETS DELETE:

Used for:

·       Housekeeping

·       Validation environment cleanup


Conclusion:

This Drug Distribution Channels SAS project demonstrates how pharmaceutical shipment data can be transformed into meaningful business insights using SAS. By analyzing shipment volumes, delivery delays, temperature control, and compliance status, we were able to evaluate distributor performance and identify potential risk and fraud patterns.

Using tools such as PROC SQL, PROC MEANS, PROC UNIVARIATE, PROC CORR, PROC SGPLOT, and SAS Macros, this project shows how SAS supports real-world drug supply chain monitoring, regulatory compliance, and operational decision-making. This approach is highly relevant for pharma analytics teams, clinical trial logistics, and SAS interview preparation.



INTERVIEW QUESTIONS FOR YOU

1.What is a SAS library and why is it used?

2.What are temporary and permanent SAS datasets?

3.What is a SAS informat?


About the Author:

SAS Learning Hub is a data analytics and SAS programming platform focused on clinical, financial, and real-world data analysis. The content is created by professionals with academic training in Pharmaceutics and hands-on experience in Base SAS, PROC SQL, Macros, SDTM, and ADaM, providing practical and industry-relevant SAS learning resources.


Disclaimer:

The datasets and analysis in this article are created for educational and demonstration purposes only. They do not represent Pharma data.


Our Mission:

This blog provides industry-focused SAS programming tutorials and analytics projects covering finance, healthcare, and technology.


This project is suitable for:

·  Students learning SAS

·  Data analysts building portfolios

·  Professionals preparing for SAS interviews

·  Bloggers writing about analytics and smart cities

·  EV and energy industry professionals


Follow Us On : 


 


--->Follow our blog for more SAS-based analytics projects and industry data models.

To deepen your understanding of SAS analytics, please refer to our other data science and industry-focused projects listed below:





Comments

Popular posts from this blog

412.Can We Build And Clean A University Course Analytics & Fraud Detection System In Sas Using Only Macros While Intentionally Creating And Fixing Errors?

420.Can We Detect Errors, Prevent Fraud, And Optimize Biometric Access System Security Using Advanced SAS Programming?

418.Can We Design, Debug, Detect Fraud, And Optimize A Smart Parking System Using Advanced SAS Programming Techniques?