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

YTXCHGE.m

Go to the documentation of this file.
  1. YTXCHGE ;SLC/KCM - Instrument Specification Export ; 9/15/2015
  1. ;;5.01;MENTAL HEALTH;**121,172**;Dec 30, 1994;Build 10
  1. ;
  1. EXPORT(TEST,DEST) ; extract test entries into DEST array
  1. ; TEST -- name or IEN of mental health instrument
  1. ; DEST -- closed array reference for destination JSON
  1. ; caller must make sure DEST is empty
  1. I 'TEST S TEST=$O(^YTT(601.71,"B",TEST,0)) Q:'TEST
  1. ;
  1. N MAP,JSONERR,DISPLAY,YTXCHGDT
  1. S $E(DEST,$L(DEST))="," ; use open array ref
  1. D BLDMAP^YTXCHGM(.MAP) ; build file:field to JSON name map
  1. D LDINFO(TEST) ; load the instrument information
  1. D LDCTNT(TEST) ; load the instrument content
  1. D LDSCLS(TEST) ; load the instrument scales
  1. D LDRULE(TEST) ; load the instrument rules
  1. D LDREPT(TEST) ; load the instrument report
  1. D LDSPEC(TEST) ; load the instrument entry spec
  1. D LDDISP ; load the display formatting entries
  1. D LDVER(TEST) ; load the verify entries
  1. Q
  1. LDINFO(TEST) ; load general information for instrument
  1. ; use entry from MH TESTS AND SURVEYS file (601.71)
  1. D REC2JSON(601.71,TEST_",")
  1. N SECIEN,NUMS
  1. S SECIEN=0 F S SECIEN=$O(^YTT(601.81,"AC",TEST,SECIEN)) Q:'SECIEN D
  1. . S NUMS(1)=$G(NUMS(1))+1
  1. . D REC2JSON(601.81,SECIEN_",",.NUMS)
  1. Q
  1. LDCTNT(TEST) ; load question/choice content for instrument
  1. ; loop through "AD" xref in MH INSTRUMENT CONTENT for each question
  1. ; loop through "AC" xref in MH CHOICETYPES for each choice
  1. N SEQ,CTNT,QSTN,X0,X2,NUMS,CTYP,CIDF,CSEQ,CHID,CIEN
  1. S SEQ=0 F S SEQ=$O(^YTT(601.76,"AD",TEST,SEQ)) Q:'SEQ D
  1. . S CTNT=0 F S CTNT=$O(^YTT(601.76,"AD",TEST,SEQ,CTNT)) Q:'CTNT D
  1. . . S NUMS(1)=$G(NUMS(1))+1
  1. . . S X0=^YTT(601.76,CTNT,0),QSTN=$P(X0,U,4)
  1. . . S X2=^YTT(601.72,QSTN,2),CTYP=$P(X2,U,3)
  1. . . D REC2JSON(601.76,CTNT_",",.NUMS) ; content entry
  1. . . D REC2JSON(601.72,QSTN_",",.NUMS) ; question
  1. . . D REC2JSON(601.73,$P(X2,U,1)_",",.NUMS) ; introduction
  1. . . D REC2JSON(601.74,$P(X2,U,2)_",",.NUMS) ; response type
  1. . . Q:'CTYP
  1. . . S CIDF=$O(^YTT(601.89,"B",CTYP,0)) ; choice identifier ien
  1. . . D REC2JSON(601.89,CIDF_",",.NUMS) ; choice identifier
  1. . . S CSEQ=0 F S CSEQ=$O(^YTT(601.751,"AC",CTYP,CSEQ)) Q:'CSEQ D
  1. . . . S CHID=0 F S CHID=$O(^YTT(601.751,"AC",CTYP,CSEQ,CHID)) Q:'CHID D
  1. . . . . S CIEN=0 F S CIEN=$O(^YTT(601.751,"AC",CTYP,CSEQ,CHID,CIEN)) Q:'CIEN D
  1. . . . . . S NUMS(2)=$G(NUMS(2))+1
  1. . . . . . D REC2JSON(601.751,CIEN_",",.NUMS) ; choice type entry
  1. . . . . . D REC2JSON(601.75,CHID_",",.NUMS) ; choice entry
  1. . . K NUMS(2) ; reset for next set
  1. Q
  1. LDSCLS(TEST) ; load scale information for instrument
  1. ; loop thru "AC" xref in MH SCALEGROUPS for each group (testId,seq,groupId)
  1. ; loop thru "AC" xref in MH SCALES for each scale (groupId,seq,scaleId)
  1. ; loop thru "AC" xref in MH SCORING KEYS for each key (scaleId,keyId)
  1. N GSEQ,GID,SSEQ,SID,KID,NUMS
  1. S GSEQ=0 F S GSEQ=$O(^YTT(601.86,"AC",TEST,GSEQ)) Q:'GSEQ D
  1. . S GID=0 F S GID=$O(^YTT(601.86,"AC",TEST,GSEQ,GID)) Q:'GID D
  1. . . S NUMS(1)=$G(NUMS(1))+1
  1. . . D REC2JSON(601.86,GID_",",.NUMS)
  1. . . S SSEQ=0 F S SSEQ=$O(^YTT(601.87,"AC",GID,SSEQ)) Q:'SSEQ D
  1. . . . S SID=0 F S SID=$O(^YTT(601.87,"AC",GID,SSEQ,SID)) Q:'SID D
  1. . . . . S NUMS(2)=$G(NUMS(2))+1
  1. . . . . D REC2JSON(601.87,SID_",",.NUMS)
  1. . . . . S KID=0 F S KID=$O(^YTT(601.91,"AC",SID,KID)) Q:'KID D
  1. . . . . . S NUMS(3)=$G(NUMS(3))+1
  1. . . . . . D REC2JSON(601.91,KID_",",.NUMS)
  1. . . . . K NUMS(3)
  1. . . K NUMS(2)
  1. Q
  1. LDRULE(TEST) ; load rule information for instrument
  1. N NUMS,IEN,RIEN,SIEN
  1. S IEN=0 F S IEN=$O(^YTT(601.83,"C",TEST,IEN)) Q:'IEN D
  1. . S NUMS(1)=$G(NUMS(1))+1
  1. . D REC2JSON(601.83,IEN_",",.NUMS)
  1. . S RIEN=$P(^YTT(601.83,IEN,0),U,4)
  1. . D REC2JSON(601.82,RIEN_",",.NUMS)
  1. . S SIEN=0 F S SIEN=$O(^YTT(601.79,"AE",RIEN,SIEN)) Q:'SIEN D
  1. . . S NUMS(2)=$G(NUMS(2))+1
  1. . . D REC2JSON(601.79,SIEN_",",.NUMS)
  1. . K RNUMS
  1. Q
  1. LDREPT(TEST) ; load the report for an instrument
  1. N IEN
  1. S IEN=$O(^YTT(601.93,"C",TEST,0)) ; use first IEN if multiple for reports
  1. D REC2JSON(601.93,IEN_",")
  1. Q
  1. LDSPEC(TEST) ; load the web entry specification for an instrument
  1. N IEN
  1. S IEN=$O(^YTT(601.712,"B",TEST,0))
  1. D REC2JSON(601.712,IEN_",")
  1. Q
  1. LDDISP ; load display information from IEN's in DISPLAY
  1. ; loop thru IEN's saved in DISPLAY
  1. N IEN,NUMS
  1. S IEN=0 F S IEN=$O(DISPLAY(IEN)) Q:'IEN D
  1. . S NUMS(1)=$G(NUMS(1))+1
  1. . D REC2JSON(601.88,IEN_",",.NUMS)
  1. Q
  1. LDVER(TEST) ; load the verify values for an instrument
  1. ; expects DEST
  1. K ^TMP($J,"local")
  1. N FILE,IEN,CNT,ROOT
  1. S ROOT=$E(DEST,1,$L(DEST)-1)_")" ; use closed array
  1. D BLDTEST^YTXCHGV(TEST,$NA(^TMP($J,"local")))
  1. S FILE=0 F S FILE=$O(^TMP($J,"local",FILE)) Q:'FILE D
  1. . S IEN=0 F S IEN=$O(^TMP($J,"local",FILE,IEN)) Q:'IEN D
  1. . . S CNT=+$G(CNT)+1
  1. . . S @ROOT@("verify",CNT)=FILE_":"_IEN
  1. K ^TMP($J,"local")
  1. Q
  1. ;
  1. REC2JSON(FILE,IENS,NUMS) ; load record into JSON using MAP
  1. ; expects MAP,DEST
  1. ; FILE -- mh file number
  1. ; IENS -- IEN string (with trailing comma)
  1. ; NUMS -- array numbers for JSON array
  1. N FLDS,VALS,ERRS,FLD,SUBS,I,TARGET
  1. S FLDS=$$FILEFLDS(FILE)
  1. D GETS^DIQ(FILE,IENS,FLDS,"INZ","VALS","ERRS") ;"IN": internal vals, no nulls
  1. I $D(MAP(FILE,.001)) S VALS(FILE,IENS,.001,"I")=+IENS
  1. S FLD=0 F S FLD=$O(MAP(FILE,FLD)) Q:'FLD D
  1. . ; Q:'$D(VALS(FILE,IENS,FLD,"I"))
  1. . S SUBS=$$MKSUBS^YTXCHGU(FILE,FLD,.NUMS)
  1. . S TARGET=DEST_SUBS_")"
  1. . I '$L($G(VALS(FILE,IENS,FLD,"I"))) D Q ; empty value
  1. . . S @TARGET="null"
  1. . I $G(MAP(FILE,FLD,"type"))["t" D Q ; date/time
  1. . . S @TARGET=$$FM2ISO^YTXCHGU(VALS(FILE,IENS,FLD,"I"))
  1. . I $G(MAP(FILE,FLD,"type"))["y" D Q ; yes/no boolean
  1. . . S @TARGET=$S(VALS(FILE,IENS,FLD,"I")="Y":"true",1:"false")
  1. . I $G(MAP(FILE,FLD,"type"))["d" D Q ; refs to MH DISPLAY
  1. . . S @TARGET=VALS(FILE,IENS,FLD,"I")
  1. . . S DISPLAY(VALS(FILE,IENS,FLD,"I"))=""
  1. . I $G(MAP(FILE,FLD,"type"))["w" D Q ; word processing
  1. . . D WP2TR^YTXCHGT($NA(VALS(FILE,IENS,FLD)),TARGET)
  1. . S @TARGET=VALS(FILE,IENS,FLD,"I") ; all other fields
  1. D LOG^YTXCHGU("prog",".")
  1. Q
  1. FILEFLDS(FILE) ; return a string of fields in the file
  1. ; expects MAP
  1. N I,X
  1. S X=""
  1. S I=0 F S I=$O(MAP(FILE,I)) Q:'I I I'=".001" S X=X_I_";"
  1. Q X
  1. ;