Difference between revisions of "Patent Expiration Rules"

From edegan.com
Jump to navigation Jump to search
Line 174: Line 174:
 
  );
 
  );
 
   
 
   
  \COPY Maintfeeevents FROM 'MaintFeeEvents_20160613.txt' WITH DELIMITER AS E' ' HEADER NULL AS '' CSV;
+
  <nowiki>\COPY Maintfeeevents FROM 'MaintFeeEvents_20160613.txt' WITH DELIMITER AS E'\t' HEADER NULL AS '' CSV;</nowiki>
 
   
 
   
 
  --Now import table of fee codes (and the duration of the extensions) from (Z:\LBO\Clean)
 
  --Now import table of fee codes (and the duration of the extensions) from (Z:\LBO\Clean)
Line 203: Line 203:
 
  2b) Might not have expiration event at conclusion of 20 years (after all three extensions expire)
 
  2b) Might not have expiration event at conclusion of 20 years (after all three extensions expire)
 
  */
 
  */
 
  
 
== Updating the Patent Term Calculcations ==
 
== Updating the Patent Term Calculcations ==

Revision as of 15:03, 27 April 2017

Based on the fees paid, we can determine the validity of a patent. Each fee is coded and the DaysIncrement variable indicates how many more days a patent is valid for after that fee is paid. The DaysDuration is how many total days the patent has been valid for since it's grant date. DaysDuration is the key variable, for each fee paid, we add DaysIncrement to DaysDuration. The DaysDuration past the grant date is the validity of the patent.

NOTE: This version does not distinguish when to count from filedate or grant date - it only uses grantdate. Prior to XXX (TO BE FILLED IN BY AVESH), patents had statutory terms of 18 yrs from grant. Subsequent to XXX patents have 20 years from application.

ALSO- keep in mind this is in *allpatentsprocessed* DB, not in the *patent* database.

Located in

Z:\LBO\Clean\patentExpirationRules.txt
FeeCode Description DaysIncrement DaysDuration
EXP. Patent Expired for Failure to Pay Maintenance Fees. 0 0
EXPX Patent Reinstated After Maintenance Fee Payment Confirmed. 0 0
M1551 Payment of Maintenance Fee, 4th Year, Large Entity. 1460 2920
M1552 Payment of Maintenance Fee, 8th Year, Large Entity. 1460 4380
M1553 Payment of Maintenance Fee, 12th Year, Large Entity. 2920 7300
M1559 Payment of Maintenance Fee under 1.28(c). 0 0
M170 Payment of Maintenance Fee, 4th Year, PL 96-517. 1460 2920
M171 Payment of Maintenance Fee, 8th Year, PL 96-517. 1460 4380
M172 Payment of Maintenance Fee, 12th Year, PL 96-517. 2920 7300
M173 Payment of Maintenance Fee, 4th Year, PL 97-247. 1460 2920
M174 Payment of Maintenance Fee, 8th Year, PL 97-247. 1460 4380
M175 Payment of Maintenance Fee, 12th Year, PL 97-247 2920 7300
M183 Payment of Maintenance Fee, 4th Year, Large Entity. 1460 2920
M184 Payment of Maintenance Fee, 8th Year, Large Entity. 1460 4380
M185 Payment of Maintenance Fee, 12th Year, Large Entity. 2920 7300
M2551 Payment of Maintenance Fee, 4th Yr, Small Entity. 1460 2920
M2552 Payment of Maintenance Fee, 8th Yr, Small Entity. 1460 4380
M2553 Payment of Maintenance Fee, 12th Yr, Small Entity. 2920 7300
M273 Payment of Maintenance Fee, 4th Yr, Small Entity, PL 97-247. 1460 2920
M274 Payment of Maintenance Fee, 8th Yr, Small Entity, PL 97-247. 1460 4380
M275 Payment of Maintenance Fee,12th Yr, Small Entity, PL 97-247. 2920 7300
M283 Payment of Maintenance Fee, 4th Yr, Small Entity. 1460 2920
M284 Payment of Maintenance Fee, 8th Yr, Small Entity. 1460 4380
M285 Payment of Maintenance Fee, 12th Yr, Small Entity. 2920 7300
M3551 Payment of Maintenance Fee, 4th Year, Micro Entity. 1460 2920
M3552 Payment of Maintenance Fee, 8th Year, Micro Entity. 1460 4380
M3553 Payment of Maintenance Fee, 12th Year, Micro Entity. 2920 7300

Building Start and End Table

Created PatentExpirationRules table using the data shown in the table above. Maintfeeevents is a table with all of the USPTO data on fees paid. The earliest grantdate in this dataset is 1981-09-01 and the latest is 2016-06-28. The earliest feedate is 1980-12-19 and the latest feedate is 5000-01-1 (NO THIS IS NOT A TYPO- someone please fix why we have fees being paid in the year 5000). The second latest feedate is 2016-06-13.

SQL steps are located at

E:\McNair\Projects\LBO\Clean\Building the Patent Start End Table.sql
/*
These are instructions for building the patentstartend table, which identifies for each patent (number) the dates at which it is granted and at which it expired.
It uses a database of all maintenance fee events and a list of the types of maintenance fee events and their effect the length of patent life 
*/

--First, we need to import the table of Maintenance fee events (from copy in Z:\LBO\Clean, originally from Z:\USPTO_Consolidated\Maint_Fee_Events)

CREATE TABLE Maintfeeevents (
  patentNumber  VARCHAR(7) NOT NULL,
  appNumber     VARCHAR(8) NOT NULL,
  smallEntity   VARCHAR(1) NOT NULL,
  appFilingDate DATE       NOT NULL,
  grantDate     DATE       NOT NULL,
  feeDate       DATE       NOT NULL,
  feeCode       VARCHAR(5) NOT NULL
);

\COPY Maintfeeevents FROM 'MaintFeeEvents_20160613.txt' WITH DELIMITER AS E'\t' HEADER NULL AS '' CSV;

--Now import table of fee codes (and the duration of the extensions) from (Z:\LBO\Clean)
--daysDuration represents the number of days from grantdate that patent will remain active due to maintenance fee event
--I.e., 8 years for 4th year extension, 12 years for 8th year extension, 20 years for 12th year extension
--Note that we give the expiration events a value of 0 since these can occur after any such extension (or lack thereof).

CREATE TABLE PatentExpirationRules (
  feeCode       VARCHAR(5)	NOT NULL,
  description   VARCHAR(255)	NOT NULL,
  daysIncrement INTEGER		NOT NULL,
  daysDuration	INTEGER		NOT NULL
);
\COPY PatentExpirationRules FROM 'patentExpirationRules.txt' WITH DELIMITER AS E'\t' HEADER NULL AS  CSV;

--We can approximate the actual expiration date by taking the max of daysDuration and adding that number of days to the original grantdate
SELECT M.patentnumber, MAX(M.grantdate) as grantdate, MAX(GREATEST(M.grantdate + P.daysDuration, M.grantdate + 1460)) as expdate
INTO patentstartend
FROM maintfeeevents as M RIGHT JOIN patentexpirationrules as P ON M.feecode = P.feecode
GROUP BY M.patentnumber
;

/*
There is an alternative way to do this using fee expiration events; however, there are two problems:
1) The USPTO may have accidentally omitted some expiration events
2) Sometimes there are late payments; this leads to reinstatement of the patent. Should be solved by taking last expiration event, but there are potential problems:
2a) See problem 1
2b) Might not have expiration event at conclusion of 20 years (after all three extensions expire)
*/

Updating the Patent Term Calculcations