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
Kevin


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


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
Hardhats-members mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/hardhats-members


-------------------------------------------------------
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?id5hix
_______________________________________________
Hardhats-members mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/hardhats-members

Reply via email to