Good way to restructure a table
Methods of Linking:
1. Logically just left join doctors table and get doctor ID during patients data insert as showed below
2. Physically add foreign key constraint and during insert left join doctors table and get doctor ID during patients data insert    

 /* Supposed your OriginalTable is with following structure */

    create table #OriginalTable
    (
    ID int,
    patfname varchar(100),
    patlname varchar(100),
    pataddress1 varchar(100),
    pataddress2 varchar(100), 
    patcity varchar(40),
    patstate varchar(4),
    Patzipcode varchar(20),
    Docfname varchar(100),
    Doclname varchar(100),
    Docaddress1 varchar(100),
    Docaddress2 varchar(100), 
    Doccity varchar(40),
    Docstate varchar(4),
    Doczipcode varchar(20),
    DocNPI varchar(40)
    )

    /*Dumpy data insert*/
    insert into #OriginalTable
    select '1', 'pat1fname','pat1lname','pat1address1','pat1address2','Pat1City','p1S','pt1zip'
    ,'doc1firstname','doc1lastname','doc1address1' ,'doc1address2' ,'doc1City','d1S','dt1zip','000001'
    union all
    select '2', 'pat2fname','pat2lname','pat2address2','pat2address2','Pat2City','p2S','pt2zip'
    ,'doc2firstname','doc2lastname','doc2address1' ,'doc2address2' ,'doc2City','d2S','dt2zip','000002'
    union all
    select '3', 'pat3fname','pat3lname','pat3address3','pat3address2','Pat3City','p3S','pt3zip'
    ,'doc1firstname','doc1lastname','doc1address1' ,'doc1address2' ,'doc1City','d1S','dt1zip','000001'
    union all
    select '4', 'pat4fname','pat4lname','pat4address4','pat4address2','Pat4City','p4S','pt4zip'
    ,'doc1firstname','doc1lastname','doc1address1' ,'doc1address2' ,'doc1City','d1S','dt1zip','000001'


    /* create patients table with all required fields*/    
    create table Patients
    (
    ID int identity(1,1),
    FirstName Varchar(100),
    LastName Varchar(100),
    Adress1 Varchar(100),
    Adress2 Varchar(100),
    City Varchar(50),
    [State] Varchar(4),
    ZipCode varchar(20),
    DoctorID Int
    )    

    /* create Doctors table with all required fields*/
    create table Doctors
    (
    ID int identity(1,1),
    FirstName Varchar(100),
    LastName Varchar(100),
    Address1 Varchar(100),
    Address2 Varchar(100),
    City Varchar(50),
    [State] Varchar(4),
    ZipCode varchar(20),
    NPI varchar(40)
    ) 

    /*Remove existing data from patients and doctors table*/
    delete from Doctors
    delete from patients


    /* insert all distinct doctors data from Orginal table */
    insert into Doctors( FirstName ,LastName ,Address1 ,Address2 ,City ,[State] ,ZipCode ,NPI )
    select distinct docfname,doclname,docAddress1,docAddress2, docCity, docState, docZipcode, docNPI
    from #OriginalTable


    /* Set Identity insert On to add OLD unique ID values as they are in #OriginalTable */

    SET IDENTITY_INSERT Patients ON

    insert into  Patients( ID , FirstName ,LastName ,Adress1 ,Adress2 ,City ,[State] ,ZipCode ,DoctorID )
    select old.ID ,old.patfname ,old.patlname ,old.pataddress1 ,old.pataddress2 ,old.patcity ,old.patstate ,old.Patzipcode ,doc.ID
    from #OriginalTable old left outer join Doctors doc
    on old.Docfname=doc.FirstName
    and old.Doclname=doc.LastName
    and old.Docaddress1=doc.Address1
    and old.Docaddress2=doc.Address2
    and old.Doccity=doc.City
    and old.Docstate=doc.[State]
    and old.Doczipcode=doc.ZipCode
    and old.DocNPI=doc.NPI

    /*Set Identity insert off */
    SET IDENTITY_INSERT Patients OFF




    /* Query table to verify inserted data*/
    select * from #OriginalTable
    select * from Patients
    select * from Doctors


    DROP Table #OriginalTable