Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ETSLNC3

ETSLNC3.m

Go to the documentation of this file.
  1. ETSLNC3 ;O-OIFO/FM23 - LOINC APIs 4 ;01/31/2017
  1. ;;1.0;Enterprise Terminology Service;**1**;Mar 20, 2017;Build 7
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. Q
  1. ;
  1. GETREC(ETSINPT,ETSINTY,ETSSUB) ;Get LOINC Information by Code or IEN
  1. ; Input -- ETSINPT LOINC Code (with check digit) or IEN
  1. ; ETSINTY Input Type (Optional- Default "C")
  1. ; "C"=LOINC Code
  1. ; "I"=LOINC IEN
  1. ; ETSSUB (Optional) Subscript for ^TMP array storing the
  1. ; results (default = ETSREC)
  1. ; Output --
  1. ; $$GETREC - 1 (record found), 0 - no record found, -1^<error message>
  1. ;
  1. ; ^TMP(ETSSUB,$J,"RECORD", Results in the following subscripts:
  1. ; "ACTIVATION HISTORY") = Activation History Multiple (#95) [Not Returned]
  1. ; "ACTIVATION HISTORY",#,"ACTIVATION EFFECTIVE DATE") = FM Date ^ External Date (#129.103, #.01)
  1. ; "ACTIVATION HISTORY",#,"ACTIVATION STATUS") = Status ^ External Status (#129.103, #1)
  1. ; "ADJUSTMENT")=Adjustment field (#1.6)
  1. ; "CHALLENGE")=Challenge Field (#1.5)
  1. ; "CHANGE REASON")=Challenge Field (#24)
  1. ; "CHANGE TYPE")=Change Type field (#23)
  1. ; "CHECK DIGIT")=Check Digit Field (#15)
  1. ; "CLASS")=Class field(#7)
  1. ; "CLASSTYPE")=Internal^External Class Type field(#41)
  1. ; "CODE")=Code Field (#.01)_Check Digit (#15)
  1. ; "COMMENTS")= # lines in the comment multiple
  1. ; "COMMENTS",#)=Comments Multiple field (#99)
  1. ; "COMPONENT")=Component field (#1)
  1. ; "DATE LAST CHANGED")=Internal^Date Last Changed field (#22)
  1. ; "EXAMPLE UCUM UNITS")=Units field (#85)
  1. ; "EXTERNAL COPYRIGHT NOTICE")= # lines in word processing field
  1. ; "EXTERNAL COPYRIGHT NOTICE",#)= Line of data in the word processing field
  1. ; "FULLY SPECIFIED NAME")=Fully Specified Name field (#80)
  1. ; "IEN")= IEN of entry
  1. ; "LONG COMMON NAME")=Long Common Name field (#82)
  1. ; "MASTER ENTRY FOR VUID")=Master Entry for VUID (#99.98)
  1. ; "METHOD TYPE")=Method Type field (#6)
  1. ; "NON-PATIENT SPECIMEN")=Non-Patient Specimen field (#1.7)
  1. ; "PROPERTY")=Property field (#2)
  1. ; "REPEAT OBSERVATION")=Repeat Observation field (#86)
  1. ; "SCALE TYPE")=Scale Type field (#5)
  1. ; "SHORTNAME")=Short Name field (#81)
  1. ; "SNOMED CODE")=Short Name field (#33)
  1. ; "SOURCE")=Source field (#8)
  1. ; "STATUS")=Internal^External Status field (#20)
  1. ; "SYSTEM")=System field (#4)
  1. ; "TIME ASPECT")=Time Aspect field (#3)
  1. ; "TIME MODIFIER")=Time Aspect field (#3.1)
  1. ; "UNITS")=Time Aspect field (#10)
  1. ; "VA COMMON DISPLAY NAME")=VA Common Display Name field (#82)
  1. ; "VERSION NUMBER")=Version Number field (#25)
  1. ; "VUID")=VUID (#99.99)
  1. ; "VUID EFFECTIVE DATE") = VUID Effective Date Multiple (#99.991) [Not Returned]
  1. ; "VUID EFFECTIVE DATE",#,"EFFECTIVE DATE/TIME") = FM Date ^ External Date (#129.104, #.01)
  1. ; "VUID EFFECTIVE DATE",#,"STATUS") = Status ^ External Status (#129.104, #1)
  1. ;
  1. ;
  1. N ETSCIEN,ETSCODE,ETSARY,ETSLIEN,I,CT
  1. ;
  1. ;Set the default for the subscript if not sent
  1. S:$G(ETSSUB)="" ETSSUB="ETSREC"
  1. ;
  1. ;Clear previous search to prevent result contamination
  1. K ^TMP(ETSSUB,$J)
  1. ;
  1. ;Check for existence of an IEN/Code
  1. Q:$G(ETSINPT)="" "-1^Missing Code or IEN"
  1. ;
  1. ;Set Input Type to default of "C", if not defined
  1. S:$G(ETSINTY)="" ETSINTY="C"
  1. S ETSINTY=$$UP^XLFSTR(ETSINTY)
  1. I (ETSINTY'="C"),(ETSINTY'="I") Q "-1^Invalid Input Type"
  1. ;
  1. ;Check input for LOINC Code or IEN
  1. ;Assume the input type is an IEN,find the code.
  1. I ETSINTY="I" S ETSCIEN=ETSINPT,ETSCODE=$$GETCODE^ETSLNC1(ETSCIEN) I +ETSCODE=-1 Q "-1^LOINC IEN not found"
  1. ;if the input type was a code, retrieve the IEN.
  1. S:ETSINTY="C" ETSCIEN=$$CHKCODE^ETSLNC1(ETSINPT),ETSCODE=ETSINPT
  1. ;
  1. ;Exit if the IEN was either not passed in or not found.
  1. Q:+ETSCIEN=-1 ETSCIEN
  1. ;
  1. ;Set-up LOINC Record array to return
  1. ;
  1. ;Start with the code and the IEN
  1. S ^TMP(ETSSUB,$J,"RECORD","IEN")=ETSCIEN
  1. ;
  1. ;Query data
  1. D GETS^DIQ(129.1,ETSCIEN_",","**","IE","ETSARY")
  1. ;
  1. ;If results returned, store into Structure
  1. I $D(ETSARY(129.1)) D
  1. . ;retrieve fields needing external values only
  1. . S ^TMP(ETSSUB,$J,"RECORD","ADJUSTMENT")=$G(ETSARY(129.1,ETSCIEN_",",1.6,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","CHALLENGE")=$G(ETSARY(129.1,ETSCIEN_",",1.5,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","CHANGE REASON")=$G(ETSARY(129.1,ETSCIEN_",",24,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","CHANGE TYPE")=$G(ETSARY(129.1,ETSCIEN_",",23,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","CHECK DIGIT")=$G(ETSARY(129.1,ETSCIEN_",",15,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","CLASS")=$G(ETSARY(129.1,ETSCIEN_",",7,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","CODE")=$G(ETSARY(129.1,ETSCIEN_",",.01,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","COMPONENT")=$G(ETSARY(129.1,ETSCIEN_",",1,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","EXAMPLE UCUM UNITS")=$G(ETSARY(129.1,ETSCIEN_",",85,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","FULLY SPECIFIED NAME")=$G(ETSARY(129.1,ETSCIEN_",",80,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","LONG COMMON NAME")=$G(ETSARY(129.1,ETSCIEN_",",83,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","MASTER ENTRY FOR VUID")=$G(ETSARY(129.1,ETSCIEN_",",99.98,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","METHOD TYPE")=$G(ETSARY(129.1,ETSCIEN_",",6,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","NON-PATIENT SPECIMEN")=$G(ETSARY(129.1,ETSCIEN_",",1.7,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","PROPERTY")=$G(ETSARY(129.1,ETSCIEN_",",2,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","REPEAT OBSERVATION")=$G(ETSARY(129.1,ETSCIEN_",",86,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","SCALE TYPE")=$G(ETSARY(129.1,ETSCIEN_",",5,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","SHORTNAME")=$G(ETSARY(129.1,ETSCIEN_",",81,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","SNOMED CODE")=$G(ETSARY(129.1,ETSCIEN_",",33,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","SOURCE")=$G(ETSARY(129.1,ETSCIEN_",",8,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","SYSTEM")=$G(ETSARY(129.1,ETSCIEN_",",4,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","TIME ASPECT")=$G(ETSARY(129.1,ETSCIEN_",",3,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","TIME MODIFIER")=$G(ETSARY(129.1,ETSCIEN_",",3.1,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","UNITS")=$G(ETSARY(129.1,ETSCIEN_",",10,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","VA COMMON DISPLAY NAME")=$G(ETSARY(129.1,ETSCIEN_",",82,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","VERSION NUMBER")=$G(ETSARY(129.1,ETSCIEN_",",25,"E"))
  1. . S ^TMP(ETSSUB,$J,"RECORD","VUID")=$G(ETSARY(129.1,ETSCIEN_",",99.99,"E"))
  1. . ;
  1. . ;Retrieve the comments multiple, if present
  1. . S ^TMP(ETSSUB,$J,"RECORD","COMMENTS")=""
  1. . I $G(ETSARY(129.1,ETSCIEN_",",99,"I"))'="" D
  1. .. ;Add the multiple lines
  1. .. S I=0,CT=0
  1. .. F S I=$O(ETSARY(129.1,ETSCIEN_",",99,I)) Q:'I D
  1. ... S ^TMP(ETSSUB,$J,"RECORD","COMMENTS",I)=$G(ETSARY(129.1,ETSCIEN_",",99,I)),CT=CT+1
  1. .. ;Change the top node to equal the # lines in the comment
  1. .. S ^TMP(ETSSUB,$J,"RECORD","COMMENTS")=CT
  1. . ;
  1. . ;Retrieve the External Copyright Notice word processing field multiple, if present
  1. . S ^TMP(ETSSUB,$J,"RECORD","EXTERNAL COPYRIGHT NOTICE")=""
  1. . I $G(ETSARY(129.1,ETSCIEN_",",84,"I"))'="" D
  1. .. ;Add the multiple lines
  1. .. S I=0,CT=0
  1. .. F S I=$O(ETSARY(129.1,ETSCIEN_",",84,I)) Q:'I D
  1. ... S ^TMP(ETSSUB,$J,"RECORD","EXTERNAL COPYRIGHT NOTICE",I)=$G(ETSARY(129.1,ETSCIEN_",",84,I)),CT=CT+1
  1. .. ;Change the top node to equal the # lines in the comment
  1. .. S ^TMP(ETSSUB,$J,"RECORD","EXTERNAL COPYRIGHT NOTICE")=CT
  1. . ;
  1. . ;Convert Date Last Changed to FM format + External, if present
  1. . I $G(ETSARY(129.1,ETSCIEN_",",22,"I"))'="" D
  1. .. S ^TMP(ETSSUB,$J,"RECORD","DATE LAST CHANGED")=$G(ETSARY(129.1,ETSCIEN_",",22,"I"))_"^"_$G(ETSARY(129.1,ETSCIEN_",",22,"E"))
  1. . ;
  1. . ;Convert Class Type to Internal and External, if present
  1. . I $G(ETSARY(129.1,ETSCIEN_",",41,"I"))'="" D
  1. .. S ^TMP(ETSSUB,$J,"RECORD","CLASSTYPE")=$G(ETSARY(129.1,ETSCIEN_",",41,"I"))_"^"_$G(ETSARY(129.1,ETSCIEN_",",41,"E"))
  1. . ;
  1. . ;Convert Status to Internal and External, if present
  1. . I $G(ETSARY(129.1,ETSCIEN_",",20,"I"))'="" D
  1. .. S ^TMP(ETSSUB,$J,"RECORD","STATUS")=$G(ETSARY(129.1,ETSCIEN_",",20,"I"))_"^"_$G(ETSARY(129.1,ETSCIEN_",",20,"E"))
  1. . ;
  1. . ;Extract Activation dates from the multiple
  1. . S ETSLIEN=""
  1. . F S ETSLIEN=$O(ETSARY(129.103,ETSLIEN)) Q:ETSLIEN="" D
  1. .. S ^TMP(ETSSUB,$J,"RECORD","ACTIVATION HISTORY",$P(ETSLIEN,","),"ACTIVATION EFFECTIVE DATE")=$G(ETSARY(129.103,ETSLIEN,.01,"I"))_"^"_$G(ETSARY(129.103,ETSLIEN,.01,"E"))
  1. .. S ^TMP(ETSSUB,$J,"RECORD","ACTIVATION HISTORY",$P(ETSLIEN,","),"ACTIVATION STATUS")=$G(ETSARY(129.103,ETSLIEN,1,"I"))_"^"_$G(ETSARY(129.103,ETSLIEN,1,"E"))
  1. . ;
  1. . ;Extract VUID Effective dates from the multiple
  1. . S ETSLIEN=""
  1. . F S ETSLIEN=$O(ETSARY(129.104,ETSLIEN)) Q:ETSLIEN="" D
  1. .. S ^TMP(ETSSUB,$J,"RECORD","VUID EFFECTIVE DATE",$P(ETSLIEN,","),"EFFECTIVE DATE/TIME")=$G(ETSARY(129.104,ETSLIEN,.01,"I"))_"^"_$G(ETSARY(129.104,ETSLIEN,.01,"E"))
  1. .. S ^TMP(ETSSUB,$J,"RECORD","VUID EFFECTIVE DATE",$P(ETSLIEN,","),"STATUS")=$G(ETSARY(129.104,ETSLIEN,.02,"I"))_"^"_$G(ETSARY(129.104,ETSLIEN,.02,"E"))
  1. ;
  1. ;Exit - Requested entry found
  1. Q:$D(^TMP(ETSSUB,$J,"RECORD")) 1
  1. ;Exit - Requested entry not found
  1. Q 0