Thomas,

Thank you for this well thought out and helpful reply.

When I create an entry in the PHARMACY ORDERABLE ITEM
file, I find that an appropriately matched entry in
the ORDERABLE ITEM file, and also some data is put
into the QUICK VIEW file.

I am guessing this must be done through a cross
reference, or perhaps a trigger of some sort(?).  But
it seems that the system would need to wait until the
user has put data in all the fields before launching a
process that creates records in other files.

Any idea how this is done?

Also, I have seen several places the nominclature of
node 1: set, node 2: kill, and node 3: do not delete. 
I am guessing that the first two are the set and kill
codes discussed below.  But what about that 3rd node?

Thanks
Kevin
--- "Holloway, Thomas (EDS)"
<[EMAIL PROTECTED]> wrote:

> 
> Kevin asked:  
> So here are my questions:
> 
> >1. Apparently there is some M code associated with
> >each cross-reference.  When is this code executed?
> 
> For every add/edit/delete of that field, FileMan
> triggers the
> appropriate Set or Kill.  Also if you re-index the
> file, the code will
> be executed.
> 
> >2. Where is this code stored?  When I look in ^DD,
> I
> >find only ^DD(50,0,"IX","ASP",50,2.1)="" and
> >^DD(50,"IX",2.1)=""
> 
> It is stored in ^DD(file,field,1,index #,n) where
> index # is a
> sequential IEN at the sub-file level.  Like this:
> ^DD(50,2.1,0) = PHARMACY ORDERABLE
> ITEM^P50.7X^PS(50.7,^2;1^I $D(X) N ND
> S ND=$G
> (^PSDRUG(DA,"ND")) I
>
+ND,+$P(ND,"^",3),+$$PSJDF^PSNAPIS(0,$P(ND,"^",3))'=$P(^PS(
> 50.7,X,0),"^",2) K X
> ^DD(50,2.1,1,0) = ^.1
> ^DD(50,2.1,1,1,0) = 50^ASP
> ^DD(50,2.1,1,1,1) = S
> ^PSDRUG("ASP",$E(X,1,30),DA)=""
> ^DD(50,2.1,1,1,2) = K ^PSDRUG("ASP",$E(X,1,30),DA)
> ^DD(50,2.1,1,1,3) = Do not delete
> ^DD(50,2.1,1,1,"%D",0) = ^^1^1^2970925^^
> ^DD(50,2.1,1,1,"%D",1,0) = Cross-reference to
> PHARMACY ORDERABLE ITEM
> file #50.7
> 
> >3. From above, it looks like there is separate
> >'setting' code and 'killing' code.  Is this true?  
> 
> Yes it's true for regular cross-references.  FileMan
> will automatically
> create the Set and Kill code in the format that you
> have already seen.
> If you create a Mumps xref or a Trigger xref, you
> will control whether
> or not there is Set or Kill 
> code and control the content.  There are some very
> creative things you
> can do with these types but a simple thing might be
> to Set an xref
> exactly as FM would do but not have any Kill code. 
> You will end up with
> an historical record that might be useful for some
> purpose.
> 
> >4. How is the cross-reference filled?  -- I think I
> >just figured out the answer on this one.  It occurs
> >when a value is put into field 2.1 in one of the
> file
> >#50 records.
> 
> Exactly.
> 
>    Other than reading the documentation, the best
> way to find out "what"
> and "where" is to create a small test file with only
> two or three
> fields.  At that size, you can see the whole ^DD
> entry and detect
> additions and changes as you try adding different
> cross-reference types
> to the file.  If you are going to be creating a new
> package and adding
> new files of your own design, you should look into
> the New Style
> cross-references and Keys.  There is a tutorial
> available in the
> Infrastructure documentation library.
> 
> Thom H.
> 
> 
> "Learn from the mistakes of others.  You can't live
> long enough to make
> them all yourself."
>  
> 
> -----Original Message-----
> From: [EMAIL PROTECTED]
>
[mailto:[EMAIL PROTECTED]
> On Behalf Of Kevin
> Toppenberg
> Sent: Monday, April 25, 2005 5:47 PM
> To: Hardhats Sourceforge
> Subject: [Hardhats-members] Fileman cross-reference
> questions
> 
> Hey all,
> 
> I've come to that time in my life where someone
> needs
> to sit me down and tell me all about.... well...
> fileman cross-references.  And I specifically want
> to
> know how to fill them with the data I want.
> 
> Let me set up my situation first.  I am trying to
> understand the linkages between files etc. that make
> up the pharmacy package.  
> 
> Currently, with Dave Whitten's help, I have one drug
> that shows up when I try to add a new drug in CPRS.
> 
> Here is an overview of the steps that go behind
> getting information about the drug to show up in
> CPRS.
> 
> 1. CPRS is given a list of available drugs.  This
> list
> is stored in File 101.44 (ORDER QUICK VIEW).  In my
> example, diltiazem is stored as an option like this:
> 44^DILTIAZEM.  This 44 is the IEN of the Rx in file
> 101.43 (ORDERABLE ITEM).
> 
> 2. During lookup, it uses record/entry# 44 from
> 101.43, and gets the ID field (field 2).  This is
> supposed to have a format like this: 'package
> code;99XXX' where XXX indicates the package table
> originating this item (i.e. RAP,LRT,etc.).  In my
> example, the code was 1.
> 
> 3. This package code is then used to access a cross
> reference in file #50 (DRUG file, ^PSDRUG).  It
> accesses it like this: $order(^PSDRUG("ASP",1,0)),
> where 1 is the package code from above.  Because I
> have only one drug installed, there is only one item
> in this cross-reference.  This is 3819.  Thus
> ^PSDRUG("ASP",1,3819)="".
> 
> 4. This "3819" from above is the IEN of the drug in
> the DRUG file.  From this entry, the available
> dosages
> etc. are available.
> 
> 5. So to make drugs available in CPRS, file #50
> (DRUG
> file) must not only have the drug defined, but there
> must also be entries entries in the "ASP" cross
> reference.
> 
> --------------
> 
> OK, that's the setting.
> Now, what I have been able to figure out
> 
> 
> 1. When I lookup information about the "ASP"
> cross-reference in VPE, I see only this info about
> the
> index:
> 
> Index    File       Fields
> *ASP     50         PHARMACY ORDERABLE ITEM (#2.1)
> 
> So I look it up in the Fileman data dictionary
> utilities and get this information:
> 
>   ASP    REGULAR
> Field:  PHARMACY ORDERABLE ITEM  (50,2.1)
> Description:  Cross-reference to PHARMACY ORDERABLE
> ITEM file #50.7.
>   1)= S ^PSDRUG("ASP",$E(X,1,30),DA)=""
>   2)= K ^PSDRUG("ASP",$E(X,1,30),DA)
>   3)= Do not delete
> 
> -------------
> 
> So here are my questions:
> 
> 1. Apparently there is some M code associated with
> each cross-reference.  When is this code executed?
> 
> 2. Where is this code stored?  When I look in ^DD, I
> find only ^DD(50,0,"IX","ASP",50,2.1)="" and
> ^DD(50,"IX",2.1)=""
> 
> 3. From above, it looks like there is separate
> 'setting' code and 'killing' code.  Is this true?  
> 
> 4. How is the cross-reference filled?  -- I think I
> just figured out the answer on this one.  It occurs
> when a value is put into field 2.1 in one of the
> file
> #50 records.
> 
> I think I have more questions, but that's enough for
> now..
> 
> Thanks
> 
=== message truncated ===


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


-------------------------------------------------------
SF.Net email is sponsored by: Tell us your software development plans!
Take this survey and enter to win a one-year sub to SourceForge.net
Plus IDC's 2005 look-ahead and a copy of this survey
Click here to start!  http://www.idcswdc.com/cgi-bin/survey?id=105hix
_______________________________________________
Hardhats-members mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/hardhats-members

Reply via email to