1 /*  objmedli.h
2 * ===========================================================================
3 *
4 *                            PUBLIC DOMAIN NOTICE
5 *               National Center for Biotechnology Information
6 *
7 *  This software/database is a "United States Government Work" under the
8 *  terms of the United States Copyright Act.  It was written as part of
9 *  the author's official duties as a United States Government employee and
10 *  thus cannot be copyrighted.  This software/database is freely available
11 *  to the public for use. The National Library of Medicine and the U.S.
12 *  Government have not placed any restriction on its use or reproduction.
13 *
14 *  Although all reasonable efforts have been taken to ensure the accuracy
15 *  and reliability of the software and data, the NLM and the U.S.
16 *  Government do not and cannot warrant the performance or results that
17 *  may be obtained by using this software or data. The NLM and the U.S.
18 *  Government disclaim all warranties, express or implied, including
19 *  warranties of performance, merchantability or fitness for any particular
20 *  purpose.
21 *
22 *  Please cite the author in any work or product based on this material.
23 *
24 * ===========================================================================
25 *
26 * File Name:  objmedli.h
27 *
28 * Author:  James Ostell
29 *
30 * Version Creation Date: 1/1/91
31 *
32 * $Revision: 6.1 $
33 *
34 * File Description:  Object manager interface for module NCBI-Medline
35 *
36 * Modifications:
37 * --------------------------------------------------------------------------
38 * Date	   Name        Description of modification
39 * -------  ----------  -----------------------------------------------------
40 *
41 *
42 * $Log: objmedli.h,v $
43 * Revision 6.1  1997/09/03 12:55:58  ostell
44 * added support for MedlineEntry.status
45 *
46 * Revision 6.0  1997/08/25 18:50:16  madden
47 * Revision changed to 6.0
48 *
49 * Revision 4.5  1997/08/20 19:17:11  madden
50 * Version 6 of ASN.1
51 *
52 * Revision 4.4  1997/06/19 18:41:37  vakatov
53 * [WIN32,MSVC++]  Adopted for the "NCBIOBJ.LIB" DLL'ization
54 *
55 * Revision 4.3  1996/05/20 19:43:50  ostell
56 * added pub_type
57 *
58  * Revision 4.2  1996/03/29  21:09:59  ostell
59  * added support for PubMedId
60  *
61  * Revision 4.1  1995/12/22  17:16:07  grisha
62  * add function MedlineSiFree(), because new Client/Server
63  * library for MedArch server needs this function
64  *
65  * Revision 4.0  1995/07/26  13:48:06  ostell
66  * force revision to 4.0
67  *
68  * Revision 3.1  1995/05/15  21:22:00  ostell
69  * added Log line
70  *
71 *
72 *
73 * ==========================================================================
74 */
75 
76 #ifndef _NCBI_Medline_
77 #define _NCBI_Medline_
78 
79 #ifndef _ASNTOOL_
80 #include <asn.h>
81 #endif
82 #ifndef _NCBI_General_
83 #include <objgen.h>
84 #endif
85 #ifndef _NCBI_Biblio_
86 #include <objbibli.h>
87 #endif
88 
89 #undef NLM_EXTERN
90 #ifdef NLM_IMPORT
91 #define NLM_EXTERN NLM_IMPORT
92 #else
93 #define NLM_EXTERN extern
94 #endif
95 
96 #ifdef __cplusplus
97 extern "C" {
98 #endif
99 
100 /*****************************************************************************
101 *
102 *   loader
103 *
104 *****************************************************************************/
105 NLM_EXTERN Boolean LIBCALL MedlineAsnLoad PROTO((void));
106 
107 /*****************************************************************************
108 *
109 *    Medline-mesh
110 *
111 *****************************************************************************/
112 typedef struct mesh {
113     Boolean mp;                   /* main point */
114     CharPtr term;
115     ValNodePtr qual;
116     struct mesh PNTR next;
117  } MedlineMesh, PNTR MedlineMeshPtr;
118 
119 NLM_EXTERN MedlineMeshPtr LIBCALL MedlineMeshNew PROTO((void));
120 NLM_EXTERN MedlineMeshPtr LIBCALL MedlineMeshFree PROTO((MedlineMeshPtr mmp));
121 NLM_EXTERN MedlineMeshPtr LIBCALL MedlineMeshAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
122 NLM_EXTERN Boolean        LIBCALL MedlineMeshAsnWrite PROTO((MedlineMeshPtr mmp, AsnIoPtr aip, AsnTypePtr atp));
123 
124 /*****************************************************************************
125 *
126 *    Medline-rn
127 *
128 *****************************************************************************/
129 typedef struct rn {
130     Uint1 type;
131     CharPtr cit,
132             name;
133     struct rn PNTR next;
134  } MedlineRn, PNTR MedlineRnPtr;
135 
136 NLM_EXTERN MedlineRnPtr LIBCALL MedlineRnNew PROTO((void));
137 NLM_EXTERN MedlineRnPtr LIBCALL MedlineRnFree PROTO((MedlineRnPtr mrp));
138 NLM_EXTERN MedlineRnPtr LIBCALL MedlineRnAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
139 NLM_EXTERN Boolean      LIBCALL MedlineRnAsnWrite PROTO((MedlineRnPtr mrp, AsnIoPtr aip, AsnTypePtr atp));
140 
141 /*****************************************************************************
142 *
143 *    Medline-si
144 *      ValNode used for structure
145 *
146 *****************************************************************************/
147 NLM_EXTERN ValNodePtr LIBCALL MedlineSiFree PROTO((ValNodePtr msp));
148 NLM_EXTERN ValNodePtr LIBCALL MedlineSiAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
149 NLM_EXTERN Boolean    LIBCALL MedlineSiAsnWrite PROTO((ValNodePtr msp, AsnIoPtr aip, AsnTypePtr atp));
150 
151 /*****************************************************************************
152 *
153 *    DocRef
154 *
155 *****************************************************************************/
156 typedef struct df {
157     Uint1 type;
158 	Int4 uid;
159     struct df PNTR next;
160  } DocRef, PNTR DocRefPtr;
161 
162 NLM_EXTERN DocRefPtr LIBCALL DocRefNew PROTO((void));
163 NLM_EXTERN DocRefPtr LIBCALL DocRefFree PROTO((DocRefPtr drp));
164 NLM_EXTERN DocRefPtr LIBCALL DocRefAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
165 NLM_EXTERN Boolean      LIBCALL DocRefAsnWrite PROTO((DocRefPtr drp, AsnIoPtr aip, AsnTypePtr atp));
166 
167 
168 /*****************************************************************************
169 *
170 *    Medline-field
171 *
172 *****************************************************************************/
173 typedef struct mlf {
174     Uint1 type;
175     CharPtr str;
176     DocRefPtr ids;
177     struct mlf PNTR next;
178  } MedlineField, PNTR MedlineFieldPtr;
179 
180 NLM_EXTERN MedlineFieldPtr LIBCALL MedlineFieldNew PROTO((void));
181 NLM_EXTERN MedlineFieldPtr LIBCALL MedlineFieldFree PROTO((MedlineFieldPtr mfp));
182 NLM_EXTERN MedlineFieldPtr LIBCALL MedlineFieldAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
183 NLM_EXTERN Boolean      LIBCALL MedlineFieldAsnWrite PROTO((MedlineFieldPtr mfp, AsnIoPtr aip, AsnTypePtr atp));
184 
185 
186 /*****************************************************************************
187 *
188 *   Medline-entry
189 *
190 *****************************************************************************/
191 typedef struct medline {
192     Int4 uid;
193     DatePtr em;
194     CitArtPtr cit;
195     CharPtr abstract;
196     MedlineMeshPtr mesh;
197     MedlineRnPtr substance;
198     ValNodePtr xref;
199     ValNodePtr idnum;
200     ValNodePtr gene;
201 	Int4 pmid;         /* PubMedId */
202 	ValNodePtr pub_type;
203 	MedlineFieldPtr mlfield;
204     Uint1 status; /* 1=supplied by publisher, 2=premedline, 3 or 0 = medline*/
205 } MedlineEntry, PNTR MedlineEntryPtr;
206 
207 NLM_EXTERN MedlineEntryPtr LIBCALL MedlineEntryNew PROTO((void));
208 NLM_EXTERN MedlineEntryPtr LIBCALL MedlineEntryFree PROTO((MedlineEntryPtr mep));
209 NLM_EXTERN MedlineEntryPtr LIBCALL MedlineEntryAsnRead PROTO((AsnIoPtr aip, AsnTypePtr atp));
210 NLM_EXTERN Boolean         LIBCALL MedlineEntryAsnWrite PROTO((MedlineEntryPtr mep, AsnIoPtr aip, AsnTypePtr atp));
211 
212 #ifdef __cplusplus
213 }
214 #endif
215 
216 #undef NLM_EXTERN
217 #ifdef NLM_EXPORT
218 #define NLM_EXTERN NLM_EXPORT
219 #else
220 #define NLM_EXTERN
221 #endif
222 
223 #endif
224